From bd398894d26d8994e3d824483545ece3fe4ddfb4 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 28 Dec 2007 07:41:31 +0000 Subject: [PATCH 001/278] =?UTF-8?q?thumbnail=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3436 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 222e78e16..186f0386e 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -371,7 +371,6 @@ if(!$this->document_srl) return; if(!$height) $height = $width; - $thumbnail_type = ''; // 문서 모듈의 기본 설정에서 Thumbnail의 생성 방법을 구함 if(!in_array($thumbnail_type, array('crop','ratio'))) { From d37d1ba052a94355581ff2b131b1041b7d5d8cec Mon Sep 17 00:00:00 2001 From: supershop Date: Sat, 29 Dec 2007 13:16:13 +0000 Subject: [PATCH 002/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B0=80?= =?UTF-8?q?=EA=B0=80=EC=B1=84=ED=8C=85=20=EC=B6=94=EA=B0=80=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3439 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/gagachat/conf/info.xml | 30 +++++++++++++++++++++++++ widgets/gagachat/skins/default/skin.xml | 3 +++ 2 files changed, 33 insertions(+) diff --git a/widgets/gagachat/conf/info.xml b/widgets/gagachat/conf/info.xml index 5387ab876..852585b60 100644 --- a/widgets/gagachat/conf/info.xml +++ b/widgets/gagachat/conf/info.xml @@ -1,77 +1,107 @@ 가가 채팅 + Gaga Chat 디지레이브 + Digirave 실시간 채팅방을 생성합니다 + This widget created realtime chat room 채팅방 이름(필수/영문) + Title of Room (Essential/English only) text 채팅방 이름. (@, @@, @@@ 로 시작하는 채팅방은 회원 시스템과 연동 가능한 보안 채팅방) 보안 채팅방은 http://www.gagalive.kr/live/livechatxe 에서 신청하시길 바랍니다. 회원 시스템과 연동하지 않을 경우 별도의 신청 필요 없이 원하는 채팅방 이름만 입력하면 됩니다. + Title of Room. + (Chat room which title starts with @, @@, @@@ is a secure chat room that can be linked with member system) + Please apply for secure chat room at http://www.gagalive.kr/live/livechatxe. + If member system is unnecessary, you can just input the title. + 채팅방 보안 키(선택사항) + Chat Room Security Key (Optional)) text 보안 채팅방 사용시에만 필요함. 보안 채팅방을 사용하지 않을 경우에는 빈 칸으로 놔두시길 바랍니다. + Security Key is only necessary for secure chat rooms. In case of normal chat room, please leave it blank. 채팅방 관리자(선택사항) + Chat Room Adminstrator (Optional) text 보안 채팅방 사용시에만 적용됨. 강제 퇴장 기능 가능함. 아이디, 아이디2, 아이디3 처럼 채팅방 관리자들을 , 로 분리하시길 바랍니다. + Adminstrators will be applied for secure chat rooms. Banning available. Please seperate each id with comma(,) like ID1, ID2, ID3. 채팅방 형태 + Form of Chat Room select 세로형/가로형 + Vertical/Horizontal 세로형 + Vertical 2 가로형 + Horizontal 1 채팅방 높이(선택사항) + Height of Chat Room (Optional) text 채팅방 높이(기본값 450) + Height of chat room (450 as default) 글씨체(선택사항) + Font (Optional) text Font-family 예) 굴림체 + Font-family ex) Gulim 글씨 색깔(선택사항) + Font Color (Optional) text 채팅방 글씨 색깔 예) white 또는 #FFFFFF + Font color of chat room ex) white or #FFFFFF 배경 색깔(선택사항) + Background Color (Optional) text 채팅방 배경 색깔 예) black 또는 #000000 + Background color of chat room ex) black or #000000 큰 글씨체 + Large Font select 글씨체 크기 + Font size 작은 글씨체 + Small Font small 중간 글씨체 + Medium Font medium 큰 글씨체 + Large Font large diff --git a/widgets/gagachat/skins/default/skin.xml b/widgets/gagachat/skins/default/skin.xml index 2ea564dc7..2d684a2fc 100644 --- a/widgets/gagachat/skins/default/skin.xml +++ b/widgets/gagachat/skins/default/skin.xml @@ -1,9 +1,12 @@ 가가 채팅 기본 스킨 + Basic Skin of Gagachat 디지레이브 + Digirave newest_document의 기본 스킨 + Default skin of newest document From 16eb66c40df1a1fa879929205b5a91c41c1b2c9e Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 29 Dec 2007 13:16:28 +0000 Subject: [PATCH 003/278] =?UTF-8?q?getModuleList()=EC=97=90=EC=84=9C=20sch?= =?UTF-8?q?ema=20=EB=AA=A9=EB=A1=9D=EC=9D=84=20=EA=B0=80=EC=A0=B8=EC=98=AC?= =?UTF-8?q?=20=EB=95=8C=20.xml=20=ED=8C=8C=EC=9D=BC=EB=A7=8C=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3440 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/module.model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/module/module.model.php b/modules/module/module.model.php index fcca7648e..169de9274 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -569,7 +569,7 @@ $path = ModuleHandler::getModulePath($module_name); // schemas내의 테이블 생성 xml파일수를 구함 - $tmp_files = FileHandler::readDir($path."schemas"); + $tmp_files = FileHandler::readDir($path."schemas", '/(\.xml)$/'); $table_count = count($tmp_files); // 테이블이 설치되어 있는지 체크 From ad8c3becf4eb7e1bd62c02033a36ec1ecc46af7b Mon Sep 17 00:00:00 2001 From: haneul Date: Sun, 30 Dec 2007 03:45:48 +0000 Subject: [PATCH 004/278] =?UTF-8?q?http=EB=A1=9C=20=EC=8B=9C=EC=9E=91?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=A3=BC=EC=86=8C=EB=8A=94=20=EB=B0=94?= =?UTF-8?q?=EA=BE=B8=EC=A7=80=20=EC=95=8A=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3441 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 5a4abfbf2..a376961cf 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -104,7 +104,7 @@ //$buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff); // 이미지 태그 img의 src의 값이 http:// 나 / 로 시작하지 않으면 제로보드의 root경로부터 시작하도록 변경 - $buff = preg_replace_callback('!(img|input)([^>]*)src=[\'"]{1}(.*?)[\'"]{1}!is', array($this, '_compileImgPath'), $buff); + $buff = preg_replace_callback('/(img|input)([^>]*)src=[\'"]{1}(?!http)(.*?)[\'"]{1}/is', array($this, '_compileImgPath'), $buff); // 변수를 변경 $buff = preg_replace_callback('/\{[^@^ ]([^\}]+)\}/i', array($this, '_compileVarToContext'), $buff); From 95b5d574038b57f8fdc6fba7ec0d79199d4f8787 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 01:17:05 +0000 Subject: [PATCH 005/278] =?UTF-8?q?=EB=B9=84=EB=B0=80=EA=B8=80=EC=9D=98=20?= =?UTF-8?q?=EB=8C=93=EA=B8=80=20=EC=88=98=EB=A5=BC=20=ED=91=9C=EC=8B=9C?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3442 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 186f0386e..502ecdf22 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -335,7 +335,6 @@ } function getCommentCount() { - if(!$this->isGranted() && $this->isSecret()) return 0; return $this->get('comment_count'); } From 10d5997c12c4967b64a69805d5e1429c6dc83d8e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 02:46:51 +0000 Subject: [PATCH 006/278] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=20=EC=8A=A4=ED=82=A8=EC=9D=98=20=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=20=EB=8F=84=EC=9B=80=EB=A7=90=20=EB=B0=8F=20html?= =?UTF-8?q?=ED=8E=B8=EC=A7=91=EA=B8=B0=EC=9D=98=20margin/padding=20?= =?UTF-8?q?=EB=A7=9E=EC=B6=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3443 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/default/css/editor.css | 6 +++--- modules/editor/tpl/js/editor.js | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/editor/skins/default/css/editor.css b/modules/editor/skins/default/css/editor.css index 179ecf9ae..501c24a5b 100644 --- a/modules/editor/skins/default/css/editor.css +++ b/modules/editor/skins/default/css/editor.css @@ -19,10 +19,10 @@ .xeEditor .optionD { padding:.5em 0 .5em .8em; overflow:hidden; float:left; border-right:1px solid #e0e0e0;} .xeEditor .optionE { padding:4px 0 0 9px; overflow:hidden; float:left;} -.xeEditor .editorInfo { background:transparent; padding:.5em; border:1px solid #e1e1dd; color:#999999; position:relative; margin:5px 20px 0 20px;} -.xeEditor .close { cursor:pointer; position:absolute; top:3px; right:3px; _top:3px; _right:25px;} +.xeEditor .editorInfo { background:transparent; padding:.5em; border:1px solid #e1e1dd; color:#999999; position:relative; margin:5px 10px 0 10px;} +.xeEditor .close { cursor:pointer; position:absolute; top:3px; right:3px; _top:3px; _right:15px;} .xeEditor .editor_iframe_box { clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin:3px 10px 5px 10px; } -.xeEditor .editor_iframe_textarea { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:.5em; margin:0 20px 0 20px; width:100%; font-size:1em; display:none;} +.xeEditor .editor_iframe_textarea { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin:5px 10px 0 10px; width:100%; font-size:1em; display:none;} .xeEditor .textAreaDragIndicator { text-align:center; background:url(../images/lineTextAreaDrag.gif) repeat-x left center; padding:5px 0 5px 0; } .xeEditor .textAreaDragIndicatorBar { background:url(../images/buttonTextAreaDrag.gif) no-repeat center; cursor:move;height:14px;} diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js index 1bdc45875..12ff7a8f5 100755 --- a/modules/editor/tpl/js/editor.js +++ b/modules/editor/tpl/js/editor.js @@ -43,7 +43,6 @@ function editorGetContent_xe(editor_sequence) { return html; } - // 에디터 내의 선택된 부분의 NODE를 return function editorGetSelectedNode(editor_sequence) { var iframe_obj = editorGetIFrame(editor_sequence); @@ -122,7 +121,7 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height) { ''+ ''+ ''+ ''+ From 5db26266049af23a556a7b9fab38a3212cf6568f Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 02:47:41 +0000 Subject: [PATCH 007/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80/=EB=8C=93?= =?UTF-8?q?=EA=B8=80/=ED=8E=98=EC=9D=B4=EC=A7=80=EC=9D=98=20=EC=BB=A8?= =?UTF-8?q?=ED=85=90=EC=B8=A0=EC=97=90=20=EB=8C=80=ED=95=B4=20=EA=B3=B5?= =?UTF-8?q?=ED=86=B5=20css=EB=A5=BC=20=EC=A0=81=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD.=20=EA=B8=80=ED=96=89=EA=B0=84?= =?UTF-8?q?=20=EA=B0=84=EA=B2=A9/=20ol-ul-blockquote=EC=97=90=20=EB=8C=80?= =?UTF-8?q?=ED=95=B4=20margin-left=EB=A5=BC=20css=EB=A1=9C=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9/=20table=20padding/margin=EC=9D=84=20=EB=A7=9E?= =?UTF-8?q?=EC=B6=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3444 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/css/default.css | 9 ++++++++- modules/comment/comment.item.php | 7 ++----- modules/document/document.item.php | 10 +++------- modules/page/tpl/content.html | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/common/css/default.css b/common/css/default.css index 7d785c13e..f1fafea00 100644 --- a/common/css/default.css +++ b/common/css/default.css @@ -70,7 +70,6 @@ form { margin:0; padding:0; } .w300 { width:300px; } .w400 { width:400px; } - /* editor style */ a.bold { font-weight:bold; } @@ -91,6 +90,14 @@ a.bold { font-weight:bold; } .member_signature { margin-top:10px; border:1px solid #DDDDDD; padding:10px; overflow:hidden;} .member_profile_image { float:left; margin-right:10px; } +/* xe content */ +div.xe_content { line-height:140%; } +div.xe_content table { padding:1px; margin:1px; } +div.xe_content ol { margin-left:40px; } +div.xe_content ul { margin-left:40px; } +div.xe_content blockquote { margin-left:40px; } + +/* xe layer */ #waitingforserverresponse { display:inline; border:2px solid #444444; background-color:#FFFFFF; padding:15px 20px 13px 20px; font-weight:bold; color:#444444; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; } #fororiginalimageareabg { z-index:1001; background-color:#FFFFFF; width:100%; height:100%; top:0px; left:0px; position:relative; padding:20px 10px 10px 10px; border:8px solid #DDDDDD; } #fororiginalimagearea { visibility:hidden; padding:0px; margin:0px; width:100%; height:100%; top:0px; left:0px; position:absolute; z-index:1000; text-align:left; overflow:hidden; } diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 49b3da73a..824f7a928 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -159,16 +159,13 @@ $content = $this->get('content'); - // OL/LI 태그를 위한 치환 처리 - $content = preg_replace('!<(ol|ul|blockquote)>!is','<\\1 style="margin-left:40px;">',$content); - // url에 대해서 정규표현식으로 치환 $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); // 추가 정보 출력을 하지 않는 경우 if(!$add_comment_info) { $content = sprintf( - '
%s
', + '
%s
', $this->comment_srl, $this->get('member_srl'), $this->comment_srl, $this->get('member_srl'), $content, @@ -178,7 +175,7 @@ // 추가 정보 출력을 하지 않는 경우 "이 댓글을.." 메뉴 추가 } else { $content = sprintf( - '
%s
%s
', + '
%s
%s
', $this->comment_srl, $this->get('member_srl'), $this->comment_srl, $this->get('member_srl'), $content, diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 502ecdf22..5aaf31b37 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -218,17 +218,13 @@ $content = $this->get('content'); - - // OL/LI 태그를 위한 치환 처리 - $content = preg_replace('!<(ol|ul|blockquote)>!is','<\\1 style="margin-left:40px;">',$content); - // url에 대해서 정규표현식으로 치환 - $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); + $content = preg_replace('!([^>^"^\'^=]?)(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); // 추가 정보 출력을 하지 않는 경우 if(!$add_document_info) { $content = sprintf( - '
%s
', + '
%s
', $this->document_srl, $this->get('member_srl'), $this->document_srl, $this->get('member_srl'), $content, @@ -238,7 +234,7 @@ // 추가 정보를 출력시 "이 게시물을..'이라는 메뉴 추가 } else { $content = sprintf( - '
%s
%s
', + '
%s
%s
', $this->document_srl, $this->get('member_srl'), $this->document_srl, $this->get('member_srl'), $content, diff --git a/modules/page/tpl/content.html b/modules/page/tpl/content.html index 9f36e13de..81e13984f 100644 --- a/modules/page/tpl/content.html +++ b/modules/page/tpl/content.html @@ -1,4 +1,4 @@ -
{$page_content}
+
{$page_content}
From 31480479083c508122526a3a71711d1f591785be Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 02:50:44 +0000 Subject: [PATCH 008/278] =?UTF-8?q?page=20=EB=AA=A8=EB=93=88=EC=9D=98=20?= =?UTF-8?q?=EC=BB=A8=ED=85=90=EC=B8=A0=EC=97=90=20=EB=8C=80=ED=95=B4?= =?UTF-8?q?=EC=84=9C=EB=8A=94=20=EA=B3=B5=ED=86=B5=20=EC=BB=A8=ED=85=90?= =?UTF-8?q?=EC=B8=A0=20css=20=EC=A0=81=EC=9A=A9=EC=9D=84=20=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3445 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/page/page.admin.controller.php | 4 ++++ modules/page/tpl/content.html | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/page/page.admin.controller.php b/modules/page/page.admin.controller.php index 6dc24fe21..e1f03f88c 100644 --- a/modules/page/page.admin.controller.php +++ b/modules/page/page.admin.controller.php @@ -93,6 +93,10 @@ $output = $oModuleController->updateModule($module_info); if(!$output->toBool()) return $output; + // 해당 페이지에 첨부된 파일의 상태를 유효로 변경 + $oFileController = &getController('file'); + $oFileController->setFilesValid($module_info->module_srl); + // 캐시파일 재생성 $this->procPageAdminRemoveWidgetCache(); diff --git a/modules/page/tpl/content.html b/modules/page/tpl/content.html index 81e13984f..9f36e13de 100644 --- a/modules/page/tpl/content.html +++ b/modules/page/tpl/content.html @@ -1,4 +1,4 @@ -
{$page_content}
+
{$page_content}
From 335629588ff58b0d018a041b97aa312853d2af2e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 03:04:33 +0000 Subject: [PATCH 009/278] =?UTF-8?q?=EB=B3=B8=EB=AC=B8=EB=82=B4=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=EB=A7=81=ED=81=AC=20=EB=B6=80=EB=B6=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3446 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 5aaf31b37..35321fb07 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -219,7 +219,7 @@ $content = $this->get('content'); // url에 대해서 정규표현식으로 치환 - $content = preg_replace('!([^>^"^\'^=]?)(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); + $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); // 추가 정보 출력을 하지 않는 경우 if(!$add_document_info) { From 98656df959db5dace156c1be2c220e6b8067282b Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 03:56:31 +0000 Subject: [PATCH 010/278] =?UTF-8?q?wma=ED=8C=8C=EC=9D=BC=EB=8F=84=20?= =?UTF-8?q?=EC=A7=81=EC=A0=91=EB=A7=81=ED=81=AC=EA=B0=80=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=9C=20=EB=B6=80=EB=A5=98=EB=A1=9C=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3447 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/file.controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 2251ef339..cfc319502 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -339,7 +339,7 @@ } // 이미지인지 기타 파일인지 체크하여 upload path 지정 - if(eregi("\.(jpg|jpeg|gif|png|wmv|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi)$", $file_info['name'])) { + if(eregi("\.(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi)$", $file_info['name'])) { $path = sprintf("./files/attach/images/%s/%s/", $module_srl,$upload_target_srl); $filename = $path.$file_info['name']; $direct_download = 'Y'; @@ -473,7 +473,7 @@ $old_file = $file_info->uploaded_filename; // 이미지인지 기타 파일인지 체크하여 이동할 위치 정함 - if(eregi("\.(jpg|jpeg|gif|png|wmv|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi)$", $file_info->source_filename)) { + if(eregi("\.(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi)$", $file_info->source_filename)) { $path = sprintf("./files/attach/images/%s/%s/", $target_module_srl,$target_srl); $new_file = $path.$file_info->source_filename; } else { From 55c86e84a7be3dcb5307d6e0b8b2592e90cc11d1 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Dec 2007 05:47:57 +0000 Subject: [PATCH 011/278] =?UTF-8?q?TTXML=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EC=9D=B4=EC=A0=84=EC=8B=9C=EC=97=90=20TT=EC=A0=84=EC=9A=A9=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=EC=A4=91=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=B9=98=ED=99=98=EC=9D=84=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3449 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/importer/importer.admin.controller.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index f2267357f..3ef0061f9 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -968,7 +968,8 @@ $obj->module_srl = $module_srl; $obj->document_srl = getNextSequence(); $obj->title = $post->title->body; - $obj->content = str_replace('[##_ATTACH_PATH_##]/','',$post->content->body); + $obj->content = str_replace('[##_ATTACH_PATH_##]','',$post->content->body); + $obj->content = preg_replace_callback('!\[##_1C\|([^\|]*)\|([^\|]*)\|(.*?)_##\]!is', array($this, '_replaceTTImgTag'), $obj->content); $obj->password = md5($post->password->body); $obj->allow_comment = $post->acceptcomment->body==1?'Y':'N'; $obj->allow_trackback= $post->accepttrackback->body==1?'Y':'N'; @@ -1074,6 +1075,13 @@ $this->setMessage(sprintf(Context::getLang('msg_import_finished'), $success_count, $total_count)); } + /** + * @brief ttxml의 자체 img 태그를 치환 + **/ + function _replaceTTImgTag($matches) { + return sprintf("\"%s\"", $matches[1], str_replace("\"","\\\"",$matches[3])); + } + /** * @brief TTXML에 맞게 category정보 입력 **/ From d9dd7d4b8b749708dcbdb4675a8a4c7a54fd6b5f Mon Sep 17 00:00:00 2001 From: haneul Date: Tue, 1 Jan 2008 03:50:34 +0000 Subject: [PATCH 012/278] =?UTF-8?q?shtjdals=20=EB=8B=98=20=EC=A0=9C?= =?UTF-8?q?=EB=B3=B4,=20skin=20msg=20=EC=9E=98=EB=AA=BB=EB=90=9C=EA=B2=83?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3450 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/find_member_account.html | 2 +- modules/member/skins/default/leave_form.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/member/skins/default/find_member_account.html b/modules/member/skins/default/find_member_account.html index 644a7f735..0291df39f 100644 --- a/modules/member/skins/default/find_member_account.html +++ b/modules/member/skins/default/find_member_account.html @@ -8,7 +8,7 @@ - +
diff --git a/modules/member/skins/default/leave_form.html b/modules/member/skins/default/leave_form.html index 016419632..0b087e690 100644 --- a/modules/member/skins/default/leave_form.html +++ b/modules/member/skins/default/leave_form.html @@ -8,7 +8,7 @@ -
+
From 648dd54cdfb0ec67f7e166c85c97e3cc545d9595 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 2 Jan 2008 07:56:55 +0000 Subject: [PATCH 013/278] =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EC=9E=AC?= =?UTF-8?q?=EA=B3=84=EC=82=B0=20=EB=B6=80=EB=B6=84=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3453 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/point/point.admin.controller.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/point/point.admin.controller.php b/modules/point/point.admin.controller.php index fd9792e34..2202513a6 100644 --- a/modules/point/point.admin.controller.php +++ b/modules/point/point.admin.controller.php @@ -168,7 +168,7 @@ if($output->data) { foreach($output->data as $key => $val) { - if($config->module_point[$val->module_srl]->insert_document) $insert_point = $config->module_point[$val->module_srl]->insert_document; + if($config->module_point[$val->module_srl]['insert_document']) $insert_point = $config->module_point[$val->module_srl]['insert_document']; else $insert_point = $config->insert_document; if(!$val->member_srl) continue; @@ -184,7 +184,7 @@ if($output->data) { foreach($output->data as $key => $val) { - if($config->module_point[$val->module_srl]->insert_comment) $insert_point = $config->module_point[$val->module_srl]->insert_comment; + if($config->module_point[$val->module_srl]['insert_comment']) $insert_point = $config->module_point[$val->module_srl]['insert_comment']; else $insert_point = $config->insert_comment; if(!$val->member_srl) continue; @@ -200,7 +200,7 @@ if($output->data) { foreach($output->data as $key => $val) { - if($config->module_point[$val->module_srl]->upload_file) $insert_point = $config->module_point[$val->module_srl]->upload_file; + if($config->module_point[$val->module_srl]['upload_file']) $insert_point = $config->module_point[$val->module_srl]['upload_file']; else $insert_point = $config->upload_file; if(!$val->member_srl) continue; From 87fb1c316c6052484f9576a113329d278fbaae34 Mon Sep 17 00:00:00 2001 From: supershop Date: Thu, 3 Jan 2008 01:14:45 +0000 Subject: [PATCH 014/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD=20=EB=B0=8F=20=EA=B8=B0=EC=A1=B4?= =?UTF-8?q?=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3455 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/google_analytics/conf/info.xml | 4 ++-- addons/lemonpen/conf/info.xml | 7 ++++++- modules/menu/lang/en.lang.php | 24 +++++++++++------------ widgets/tab_newest_document/conf/info.xml | 4 ++-- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/addons/google_analytics/conf/info.xml b/addons/google_analytics/conf/info.xml index 3cea23912..c576c9be9 100644 --- a/addons/google_analytics/conf/info.xml +++ b/addons/google_analytics/conf/info.xml @@ -18,7 +18,7 @@ 可以添加Google Analytics代码。 - Google Analytics + This addon inserts Google Analytics code to site. Google Analytics @@ -36,7 +36,7 @@ uacct Google Analytics 코드의 _uacct 값을 입력해주세요. 请输入Google Analytics代码的_uacct值。 - Google Analytics _uacct + Please input _uacct from Google Analytics code. Google Analytics _uacct Google Analyticsコードの「_uacct」の値を入力してください。 diff --git a/addons/lemonpen/conf/info.xml b/addons/lemonpen/conf/info.xml index a344a091e..73a21fcc5 100644 --- a/addons/lemonpen/conf/info.xml +++ b/addons/lemonpen/conf/info.xml @@ -1,18 +1,23 @@ LemonPen XE 애드온 + LemonPen XE LemonPen XE アドオン zero + zero zero 활성화 하시면 레몬펜을 사이트에 달 수 있습니다. + You can insert LemonPen to the site when you enable this. 機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供) sid + sid sid - 레몬펜에에서 사이트 등록시 발급받은 sid값을 입력해주세요. + 레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요. + Please input sid that you got after registering site at LemonPen. レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) diff --git a/modules/menu/lang/en.lang.php b/modules/menu/lang/en.lang.php index 9defe0f8e..7f7329568 100644 --- a/modules/menu/lang/en.lang.php +++ b/modules/menu/lang/en.lang.php @@ -5,15 +5,15 @@ * @brief Menu module's basic language pack **/ - $lang->cmd_menu_insert = 'Create menu'; - $lang->cmd_menu_management = 'Menu management'; + $lang->cmd_menu_insert = 'Create Menu'; + $lang->cmd_menu_management = 'Menu Management'; $lang->menu = 'Menu'; $lang->menu_count = 'No. of menu'; - $lang->menu_management = 'Menu management'; + $lang->menu_management = 'Menu Management'; $lang->depth = 'Step'; $lang->parent_menu_name = 'Parent menu name'; - $lang->menu_name = 'Menu name'; + $lang->menu_name = 'Menu Name'; $lang->menu_srl = 'Menu SRL'; $lang->menu_id = 'Menu ID'; $lang->menu_url = 'Menu URL'; @@ -23,20 +23,20 @@ $lang->menu_normal_btn = 'Normal'; $lang->menu_hover_btn = 'Mouse over'; $lang->menu_active_btn = 'When selected'; - $lang->menu_group_srls = 'Accessable groups'; - $lang->layout_maker = "Layout maker"; - $lang->layout_history = "Update history "; - $lang->layout_info = "Layout info"; - $lang->layout_list = 'Layout list'; - $lang->downloaded_list = 'Downloaded list'; - $lang->limit_menu_depth = 'Display enabled'; + $lang->menu_group_srls = 'Accessable Groups'; + $lang->layout_maker = "Layout Maker"; + $lang->layout_history = "Update History "; + $lang->layout_info = "Layout Info"; + $lang->layout_list = 'Layout List'; + $lang->downloaded_list = 'Download List'; + $lang->limit_menu_depth = 'Display Eenabled'; $lang->cmd_make_child = 'Add a child menu'; $lang->cmd_move_to_installed_list = "View created lists"; $lang->cmd_enable_move_menu = "Move menu (Drag the top menu after selecting)"; $lang->cmd_search_mid = "Search mid"; - $lang->msg_cannot_delete_for_child = 'Cannot delete a menu having a child menu.'; + $lang->msg_cannot_delete_for_child = 'A menu with child menus cannot be deleted.'; $lang->about_title = 'Please input the title that is easy to verify when connecting to module.'; $lang->about_menu_management = "Menu management enables you to consist menu in the selected layout.\nYou can create menu upto setted depth and can enter information in details by clicking the menu.\nMenu will be expanded by cliking the folder image.\nIf menu is not shown normally, refresh the information by clicking the button \"Re-create cache file\".\n* Menu created over the depth limit may not be shown properly."; diff --git a/widgets/tab_newest_document/conf/info.xml b/widgets/tab_newest_document/conf/info.xml index 94057debc..f571a3331 100644 --- a/widgets/tab_newest_document/conf/info.xml +++ b/widgets/tab_newest_document/conf/info.xml @@ -3,7 +3,7 @@ 탭 형태 최근 문서 출력 选项卡主题列表 タブスタイル最新コンテンツ出力 - Display tab style newest documents + Display Tab Style Newest Articles 탭 형태 최근 문서 출력 Отображение последних статей в стиле закладок @@ -16,7 +16,7 @@ 최근 문서를 탭형태로 출력하는 위젯입니다. 选项卡样式最新主题列表控件。 最新コンテンツをタブスタイルに出力するウィジェットです。 - This widget displays newest articles like tab style. + This widget displays newest articles as tab style. 최근 문서를 탭형태로 출력하는 위젯입니다. Этот виджет отображает последние статьи в tab-стиле. From 54a7b41f9a33bb2b15bff2da82f17ff6ce7dfbdc Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 3 Jan 2008 09:34:57 +0000 Subject: [PATCH 015/278] =?UTF-8?q?ttxml=20=EC=9D=B4=EC=A0=84=EC=9D=84=20?= =?UTF-8?q?=EC=A2=80=EB=8D=94=20=EC=A0=95=EA=B5=90=ED=95=98=EA=B2=8C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3456 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../importer/importer.admin.controller.php | 186 ++++++++++-------- modules/importer/tpl/js/importer_admin.js | 34 +--- 2 files changed, 104 insertions(+), 116 deletions(-) diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 3ef0061f9..506d5495e 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -934,13 +934,16 @@ $inserted_count = 0; + ob_start(); + $this->oXmlParser = new XmlParser(); // 본문 데이터부터 처리 시작 $i=0; $started = $category_started = $post_started = false; $category_buff = ''; - while(!feof($fp)) { + $manual_break = false; + while(!$manual_break && !feof($fp)) { $str = fgets($fp, 1024); if(substr($str,0,7)=='') $str = substr($str,7); @@ -964,114 +967,127 @@ $xml_doc = $this->oXmlParser->parse($post_buff); $post = $xml_doc->post; - $obj = null; - $obj->module_srl = $module_srl; - $obj->document_srl = getNextSequence(); - $obj->title = $post->title->body; - $obj->content = str_replace('[##_ATTACH_PATH_##]','',$post->content->body); - $obj->content = preg_replace_callback('!\[##_1C\|([^\|]*)\|([^\|]*)\|(.*?)_##\]!is', array($this, '_replaceTTImgTag'), $obj->content); - $obj->password = md5($post->password->body); - $obj->allow_comment = $post->acceptcomment->body==1?'Y':'N'; - $obj->allow_trackback= $post->accepttrackback->body==1?'Y':'N'; - $obj->regdate = date("YmdHis",$post->created->body); - $obj->last_update = date("YmdHis",$post->modified->body); + if($post->visibility->body=='public') { + $obj = null; + $obj->module_srl = $module_srl; + $obj->document_srl = getNextSequence(); + $obj->title = $post->title->body; + $obj->content = str_replace('[##_ATTACH_PATH_##]/','',$post->content->body); + $obj->content = preg_replace_callback('!\[##_1C\|([^\|]*)\|([^\|]*)\|(.*?)_##\]!is', array($this, '_replaceTTImgTag'), $obj->content); + $obj->content = nl2br($obj->content); + $obj->password = md5($post->password->body); + $obj->allow_comment = $post->acceptcomment->body==1?'Y':'N'; + $obj->allow_trackback= $post->accepttrackback->body==1?'Y':'N'; + $obj->regdate = date("YmdHis",$post->created->body); + $obj->last_update = date("YmdHis",$post->modified->body); - $category = trim($post->category->body); - if($category) { - $tmp_category = explode('/',$category); - if(count($tmp_category)>1) $category = $tmp_category[1]; - $obj->category_srl = (int)$category_titles[$category]; - if(!$obj->category_srl) { - $tmp = array_values($category_titles); - $obj->category_srl = (int)$tmp[0]; - } - } - $obj->user_id = $member_info->user_id; - $obj->nick_name = $member_info->nick_name; - $obj->user_name = $member_info->user_name; - $obj->member_srl = $member_info->member_srl; - - // 댓글 - $obj->comments = $this->importTTComment($post->comment); - - // 꼬리표 - $tags = $post->tag; - if(!is_array($tags)) $tags = array($tags); - if(count($tags)) { - $tag_list = array(); - foreach($tags as $key => $val) { - $tag = trim($val->body); - if(!$tag) continue; - $tag_list[] = $tag; - } - if(count($tag_list)) $obj->tags = implode(',',$tag_list); - } - - // 엮인글 - if($post->trackback) { - $trackbacks = $post->trackback; - if(!is_array($trackbacks)) $trackbacks = array($trackbacks); - if(count($trackbacks)) { - foreach($trackbacks as $key => $val) { - $tobj = null; - $tobj->url = $val->url->body; - $tobj->title = $val->title->body; - $tobj->blog_name = $val->site->body; - $tobj->excerpt = $val->excerpt->body; - $tobj->regdate = date("YmdHis",$val->received->body); - $tobj->ipaddress = $val->ip->body; - $obj->trackbacks[] = $tobj; + $category = trim($post->category->body); + if($category) { + $tmp_category = explode('/',$category); + if(count($tmp_category)>1) $category = $tmp_category[1]; + $obj->category_srl = (int)$category_titles[$category]; + if(!$obj->category_srl) { + $tmp = array_values($category_titles); + $obj->category_srl = (int)$tmp[0]; } } + $obj->user_id = $member_info->user_id; + $obj->nick_name = $member_info->nick_name; + $obj->user_name = $member_info->user_name; + $obj->member_srl = $member_info->member_srl; + + // 댓글 + $obj->comments = $this->importTTComment($post->comment); + + // 꼬리표 + $tags = $post->tag; + if(!is_array($tags)) $tags = array($tags); + if(count($tags)) { + $tag_list = array(); + foreach($tags as $key => $val) { + $tag = trim($val->body); + if(!$tag) continue; + $tag_list[] = $tag; + } + if(count($tag_list)) $obj->tags = implode(',',$tag_list); + } + + // 엮인글 + if($post->trackback) { + $trackbacks = $post->trackback; + if(!is_array($trackbacks)) $trackbacks = array($trackbacks); + if(count($trackbacks)) { + foreach($trackbacks as $key => $val) { + $tobj = null; + $tobj->url = $val->url->body; + $tobj->title = $val->title->body; + $tobj->blog_name = $val->site->body; + $tobj->excerpt = $val->excerpt->body; + $tobj->regdate = date("YmdHis",$val->received->body); + $tobj->ipaddress = $val->ip->body; + $obj->trackbacks[] = $tobj; + } + } + } + + // 첨부파일 + $obj->attaches = $attaches; + + $total_count ++; + if($this->importDocument($obj)) $success_count ++; } - // 첨부파일 - $obj->attaches = $attaches; - - $total_count ++; - if($this->importDocument($obj)) $success_count ++; - // 새로운 게시글을 위한 처리 $post_started = false; $obj = null; $post_buff = ''; $attaches = array(); + + // 만약 글입력후 oXmlParser->parse(''.$category_buff.''); - // 객체 변환후 카테고리 입력 - $xml_doc = $this->oXmlParser->parse(''.$category_buff.''); - if($xml_doc->category) { - $this->insertTTCategory($xml_doc, 0, $module_srl, $category_titles); + if($xml_doc->category) { + $this->insertTTCategory($xml_doc, 0, $module_srl, $category_titles); - // 입력완료 후 카테고리 xml파일 재생성 - $this->oDocumentController->makeCategoryXmlFile($module_srl); - $xml_doc = null; + // 입력완료 후 카테고리 xml파일 재생성 + $this->oDocumentController->makeCategoryXmlFile($module_srl); + $xml_doc = null; + } + + $category_buff = null; } - $category_buff = null; + $post_started = true; } - $post_started = true; - } - - // 게시글 버퍼링중일때 처리 - if($post_started) { - // 첨부파일의 경우 별도로 버퍼링을 하지 않고 직접 파일에 기록해야 함 - if(substr($str,0,12)=='importTTAttaches($fp, $str); - else $post_buff .= $str; + // 게시글 버퍼링중일때 처리 + if($post_started) { + // 첨부파일의 경우 별도로 버퍼링을 하지 않고 직접 파일에 기록해야 함 + if(substr($str,0,12)=='importTTAttaches($fp, $str); + else $post_buff .= $str; + } } } - fclose($fp); + $output = ob_get_contents(); + ob_end_clean(); + $this->add('is_finished','1'); + $this->add('total_count',$total_count); + $this->add('success_count',$success_count); + $this->add('readed_line',0); $this->setMessage(sprintf(Context::getLang('msg_import_finished'), $success_count, $total_count)); } diff --git a/modules/importer/tpl/js/importer_admin.js b/modules/importer/tpl/js/importer_admin.js index 4df22c5b5..3da6d22c5 100644 --- a/modules/importer/tpl/js/importer_admin.js +++ b/modules/importer/tpl/js/importer_admin.js @@ -210,36 +210,8 @@ function completeImportTTXML(ret_obj, response_tags) { var readed_line = ret_obj['readed_line']; var is_finished = ret_obj['is_finished']; - if(is_finished == '1') { - var fo_obj = xGetElementById("fo_import"); - fo_obj.target_module.disabled = false; - fo_obj.xml_file.disabled = false; - fo_obj.total_count.value = 0; - fo_obj.success_count.value = 0; - fo_obj.readed_line.value = 0; + xGetElementById("status").style.display = 'block'; + xInnerHtml("status", ret_obj['message']); - xGetElementById("status").style.display = "none"; - xGetElementById("status_button_prev").style.display = "block"; - xGetElementById("status_button").style.display = "none"; - - - xInnerHtml("status", ret_obj['message']); - - alert(ret_obj['message']); - } else { - var fo_obj = xGetElementById("fo_import"); - fo_obj.target_module.disabled = true; - fo_obj.xml_file.disabled = true; - fo_obj.total_count.value = total_count; - fo_obj.success_count.value = success_count; - fo_obj.readed_line.value = readed_line; - - xGetElementById("status").style.display = "block"; - xGetElementById("status_button_prev").style.display = "none"; - xGetElementById("status_button").style.display = "block"; - - xInnerHtml("status", ret_obj['message']); - - doImportTTXML(fo_obj); - } + alert(ret_obj['message']); } From 2fafe9ccd5c9539486249d17b598b5f4a608c194 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 03:00:40 +0000 Subject: [PATCH 016/278] =?UTF-8?q?optimizer=EB=A1=9C=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EB=90=98=EB=8A=94=20css/js=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=97=90=20=EB=8C=80=ED=95=B4=20=EB=B8=8C=EB=9D=BC?= =?UTF-8?q?=EC=9A=B0=EC=A0=80=20=EC=BA=90=EC=8B=9C=EB=A5=BC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3457 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 53 ++++++++++++++++++--------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 5c8ffe41d..322f0badc 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -72,6 +72,9 @@ * @brief 이미 저장된 캐시 파일과의 시간등을 검사하여 새로 캐싱해야 할지를 체크 **/ function doOptimizedFile($filename, $targets, $type) { + // optimizer 변경이 된 것에 대해서 모든 제로보드XE에 적용하기 위해 변경 시점으로 캐시 유무를 재확인 + if(time() > 1199414354) return $this->makeOptimizedFile($filename, $targets, $type); + if(!file_exists($filename)) return $this->makeOptimizedFile($filename, $targets, $type); $mtime = filemtime($filename); @@ -102,7 +105,6 @@ if($type!="css" && Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5); - $content_file = eregi_replace("\.php$","",$filename); $content_filename = str_replace($this->cache_path, '', $content_file); @@ -111,28 +113,45 @@ /** * 압축을 지원하고 캐시 타임을 제대로 이용하기 위한 헤더 파일 구함 **/ - // php의 헤더파일 생성 - // gzip 압축 체크 - if($type!="css" && Context::isGzEnabled()) $gzip_header = 'header("Content-Encoding: gzip");'; - // 확장자별 content-type 체크 if($type == 'css') $content_type = 'text/css'; elseif($type == 'js') $content_type = 'text/javascript'; - $header_buff = << -EndOfBuff; - +?>'; FileHandler::writeFile($filename, $header_buff); } From 8eb6fb3d2249bb722636c5dbe36d36b61115683a Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 03:02:38 +0000 Subject: [PATCH 017/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3458 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 322f0badc..9e2761320 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -143,12 +143,12 @@ header("Last-Modified: '.substr(gmdate('r', $mtime), 0, -5).'GMT"); header("ETag: '.dechex($unique).'-'.dechex($size).'-'.dechex($mtime).'"); if(!$cached && file_exists($content_filename)) { $buff = file_get_contents($content_filename); - if($type != "css" && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")!==false && function_exists("ob_gzhandler")) { - header("Content-Encoding: gzip"); - print ob_gzhandler($buff, 5); - } else { + //if($type != "css" && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")!==false && function_exists("ob_gzhandler")) { + //header("Content-Encoding: gzip"); + //print ob_gzhandler($buff, 5); + //} else { print $buff; - } + //} } exit(); ?>'; From 1e6c6bf953b185cd791841dcce959951858de567 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 03:04:08 +0000 Subject: [PATCH 018/278] =?UTF-8?q?optimizer=20=EC=9E=98=EB=AA=BB=EB=90=9C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3459 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 9e2761320..a8cb752da 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -72,9 +72,6 @@ * @brief 이미 저장된 캐시 파일과의 시간등을 검사하여 새로 캐싱해야 할지를 체크 **/ function doOptimizedFile($filename, $targets, $type) { - // optimizer 변경이 된 것에 대해서 모든 제로보드XE에 적용하기 위해 변경 시점으로 캐시 유무를 재확인 - if(time() > 1199414354) return $this->makeOptimizedFile($filename, $targets, $type); - if(!file_exists($filename)) return $this->makeOptimizedFile($filename, $targets, $type); $mtime = filemtime($filename); From 9a948ae5e5891941fd7dfdafb1f3a141b311f6b7 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 03:05:35 +0000 Subject: [PATCH 019/278] =?UTF-8?q?optimizer=EC=9D=98=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=B4=20=EA=B8=B0=EC=A1=B4?= =?UTF-8?q?=EC=97=90=20=EC=BA=90=EC=8B=9C=EB=90=9C=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EB=93=A4=EC=9D=84=20=EB=AA=A8=EB=91=90=20=EC=9E=AC=EC=BA=90?= =?UTF-8?q?=EC=89=AC=ED=95=98=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3460 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index a8cb752da..9e9d96d46 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -74,6 +74,8 @@ function doOptimizedFile($filename, $targets, $type) { if(!file_exists($filename)) return $this->makeOptimizedFile($filename, $targets, $type); + if(filemtime($filename) < filemtime('./classes/optimizer/Optimizer.class.php')) return $this->makeOptimizedFile($filename, $targets, $type); + $mtime = filemtime($filename); foreach($targets as $file) { if($mtime < filemtime($file)) return $this->makeOptimizedFile($filename, $targets, $type); From 7354ed7e2b91d0dd587ae2774b9e272e880b18c1 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 03:14:15 +0000 Subject: [PATCH 020/278] =?UTF-8?q?optimizer=EC=9D=98=20=EC=BA=90=EC=8B=9C?= =?UTF-8?q?=20=ED=83=80=EC=9E=84=20=EC=B2=B4=ED=81=AC=EB=A5=BC=20=EC=A2=80?= =?UTF-8?q?=20=EB=8D=94=20=EC=84=B8=EB=B0=80=ED=95=98=EA=B2=8C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3461 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 9e9d96d46..a4b947323 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -101,9 +101,6 @@ $content_buff .= $str."\n"; } if($type == "css") $content_buff = '@charset "utf-8";'."\n".$content_buff; - - if($type!="css" && Context::isGzEnabled()) $content_buff = ob_gzhandler($content_buff, 5); - $content_file = eregi_replace("\.php$","",$filename); $content_filename = str_replace($this->cache_path, '', $content_file); @@ -120,6 +117,7 @@ $unique = crc32($content_filename); $size = filesize($content_file); $mtime = filemtime($content_file); + $class_mtime = filemtime("./classes/optimizer/Optimizer.class.php"); $header_buff = ''.$class_mtime.' && file_exists($content_filename)) { $buff = file_get_contents($content_filename); - //if($type != "css" && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")!==false && function_exists("ob_gzhandler")) { - //header("Content-Encoding: gzip"); - //print ob_gzhandler($buff, 5); - //} else { + if($type != "css" && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")!==false && function_exists("ob_gzhandler")) { + header("Content-Encoding: gzip"); + print ob_gzhandler($buff, 5); + } else { print $buff; - //} + } } exit(); ?>'; From f03c984862b0a5f554ea4d0e83b41e3d94bc9f92 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 03:56:08 +0000 Subject: [PATCH 021/278] =?UTF-8?q?=EC=9C=84=EC=A0=AF=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1=EC=8B=9C=20background:url(none)=20?= =?UTF-8?q?=EC=9D=B4=EB=9D=BC=EB=8A=94=20=EC=9E=98=EB=AA=BB=EB=90=9C=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=EB=A1=9C=20=EC=9D=B8=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A5=BC=20=ED=95=9C?= =?UTF-8?q?=EB=B2=88=20=EB=8D=94=20=EC=9A=94=EC=B2=AD=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3462 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index 4e576b4e9..5c9ba0207 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -50,6 +50,8 @@ // 디버그를 위한 위젯 실행 시간 저장 if(__DEBUG__==3) $start = getMicroTime(); + $args->style = preg_replace('/background\-image: url\(none\)/is','', $args->style); + // widget중 widgetContent 는 page 모듈에 종속적인 위젯으로 직접 page.admin.controller.php를 호출하여 처리를 해야 함 (차후 정리 필요) if($widget == 'widgetContent') { $style = $args->style; From 382d023b7a7d21675879d894d930f3e07c91d231 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 04:07:20 +0000 Subject: [PATCH 022/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3463 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index a4b947323..aac2479a1 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -126,7 +126,7 @@ $type = "'.$type.'"; if(isset($_SERVER["If-Modified-Since"])) { $time = strtotime(preg_replace("/;.*$/", "", $_SERVER["If-Modified-Since"])); - if($mtime == $time) { + if($mtime == $time && $time > '.$class_mtime.') { header("HTTP/1.1 304"); $cached = true; } @@ -138,7 +138,7 @@ header("Cache-Control: private, max-age=2592000"); header("Pragma: cache"); header("Last-Modified: '.substr(gmdate('r', $mtime), 0, -5).'GMT"); header("ETag: '.dechex($unique).'-'.dechex($size).'-'.dechex($mtime).'"); -if(!$cached && time()>'.$class_mtime.' && file_exists($content_filename)) { +if(!$cached && file_exists($content_filename)) { $buff = file_get_contents($content_filename); if($type != "css" && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")!==false && function_exists("ob_gzhandler")) { header("Content-Encoding: gzip"); From 8c222095d8eb32c990d94a4372d7015d8b9daf75 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 05:28:11 +0000 Subject: [PATCH 023/278] =?UTF-8?q?optimizer=EC=97=90=EC=84=9C=20gzip=20co?= =?UTF-8?q?mpress=EB=A5=BC=20=EC=A0=9C=EA=B1=B0=20(=ED=8A=B9=EC=A0=95=20?= =?UTF-8?q?=EB=B8=8C=EB=9D=BC=EC=9A=B0=EC=A0=80=EC=97=90=EC=84=9C=20js=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EB=B0=9C=EC=83=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3464 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index aac2479a1..0846cae81 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -138,15 +138,7 @@ header("Cache-Control: private, max-age=2592000"); header("Pragma: cache"); header("Last-Modified: '.substr(gmdate('r', $mtime), 0, -5).'GMT"); header("ETag: '.dechex($unique).'-'.dechex($size).'-'.dechex($mtime).'"); -if(!$cached && file_exists($content_filename)) { - $buff = file_get_contents($content_filename); - if($type != "css" && strpos($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")!==false && function_exists("ob_gzhandler")) { - header("Content-Encoding: gzip"); - print ob_gzhandler($buff, 5); - } else { - print $buff; - } -} +if(!$cached && file_exists($content_filename)) print file_get_contents($content_filename); exit(); ?>'; FileHandler::writeFile($filename, $header_buff); From 3fdfd184e398a4386ce700acfd1d86da0d573955 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 06:50:11 +0000 Subject: [PATCH 024/278] =?UTF-8?q?meta=20generator=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3465 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/tpl/common_layout.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/tpl/common_layout.html b/common/tpl/common_layout.html index e8b0015b1..332403262 100644 --- a/common/tpl/common_layout.html +++ b/common/tpl/common_layout.html @@ -2,7 +2,7 @@ - + From 2598cb96affe632cafe52c2b6621195351138368 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Jan 2008 09:16:24 +0000 Subject: [PATCH 025/278] =?UTF-8?q?=C3=AB=C2=A0=C2=88=C3=AB=C2=AA=C2=AC?= =?UTF-8?q?=C3=AD=C2=8E=C2=9C=20=C3=AC=C2=95=C2=A0=C3=AB=C2=93=C2=9C=C3=AC?= =?UTF-8?q?=C2=98=C2=A8=C3=AC=C2=97=C2=90=20=C3=AA=C2=B8=C2=80=C3=AA=C2=B3?= =?UTF-8?q?=C2=BC=20=C3=AB=C2=8C=C2=93=C3=AA=C2=B8=C2=80=C3=AC=C2=9D=C2=84?= =?UTF-8?q?=20=C3=AC=C2=96=C2=B4=C3=AB=C2=96=C2=A4=20url=C3=AC=C2=97=C2=90?= =?UTF-8?q?=C3=AC=C2=84=C2=9C=20=C3=AB=C2=B6=C2=88=C3=AB=C2=A0=C2=A4=C3=AC?= =?UTF-8?q?=C2=A7=C2=80=C3=AB=C2=8D=C2=94=C3=AB=C2=9D=C2=BC=C3=AB=C2=8F?= =?UTF-8?q?=C2=84=20=C3=AA=C2=B3=C2=A0=C3=AC=C2=A0=C2=95=20url=C3=AC=C2=9D?= =?UTF-8?q?=C2=84=20=C3=AC=C2=9D=C2=B4=C3=AC=C2=9A=C2=A9=C3=AD=C2=95=C2=98?= =?UTF-8?q?=C3=AB=C2=8F=C3=AD=C2=95=C2=A0=20=C3=AC=C2=88=C2=98=20=C3=AC?= =?UTF-8?q?=C2=9E=C2=88=C3=AB=C2=8F=C2=84=C3=AB=C2=A1=C2=9D=20=C3=AA=C2=B8?= =?UTF-8?q?=C2=B0=C3=AB=C2=8A=C2=A5=20=C3=AC=C2=B6=C2=94=C3=AA=C2=B0=C2=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3466 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/lemonpen/lemonpen.addon.php | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/addons/lemonpen/lemonpen.addon.php b/addons/lemonpen/lemonpen.addon.php index 7ae3bfefd..0b5c7239c 100644 --- a/addons/lemonpen/lemonpen.addon.php +++ b/addons/lemonpen/lemonpen.addon.php @@ -12,10 +12,26 @@ * before_display_content 에서만 요청이 됩니다. **/ - if(Context::get('module')=='admin' || $called_position != 'before_module_init') return; + if(Context::getResponseMethod()=="XMLRPC") return; - $sid = $addon_info->sid; + // 모듈의 실행 이후에 script를 추가함 + if(Context::get('module')!='admin' && $called_position == 'after_module_proc' ) { + if($this->getLayoutFile() != 'popup_layout.html') { + $sid = $addon_info->sid; + if($sid) { + Context::addHtmlFooter(sprintf('', $sid)); + $GLOBALS['__lemonpen_is_called__'] = true; + } + } + return; + } - // Context::addJsFile()을 이용하면 끝 - if($sid) Context::addHtmlFooter(sprintf('', $sid)); + // 제로보드XE의 문서와 permant link를 레몬펜의 규약에 맞춰서 출력 + if($GLOBALS['__lemonpen_is_called__'] && $called_position == 'before_display_content') { + // 글 본문을 링크 + $output = preg_replace('/
/is','
'.getUrl('','document_srl',"$1").'', $output); + + // 댓글 본문을 링크 + $output = preg_replace('/
/is','
'.getUrl('','document_srl',"$1").'', $output); + } ?> From 45a24f2dbdd32032b7f8bc25c03837c15cfa00e3 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 4 Jan 2008 14:31:30 +0000 Subject: [PATCH 026/278] =?UTF-8?q?=ED=85=9C=ED=94=8C=EB=A6=BF=EA=B5=AC?= =?UTF-8?q?=EB=AC=B8=EC=97=90=20=EA=B0=9C=ED=96=89=EC=9D=84=20=ED=8F=AC?= =?UTF-8?q?=ED=95=A8=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=20-=20JS=EC=BD=94=EB=93=9C=20=EB=93=B1?= =?UTF-8?q?=EC=9D=98=20=EC=82=BD=EC=9E=85=EC=9C=BC=EB=A1=9C=20=EC=98=A4?= =?UTF-8?q?=EC=9E=91=EB=8F=99=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3467 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index a376961cf..35b15dc63 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -107,10 +107,10 @@ $buff = preg_replace_callback('/(img|input)([^>]*)src=[\'"]{1}(?!http)(.*?)[\'"]{1}/is', array($this, '_compileImgPath'), $buff); // 변수를 변경 - $buff = preg_replace_callback('/\{[^@^ ]([^\}]+)\}/i', array($this, '_compileVarToContext'), $buff); + $buff = preg_replace_callback('/\{[^@^ ]([^\{\}\n]+)\}/i', array($this, '_compileVarToContext'), $buff); // 결과를 출력하지 않는 구문 변경 - $buff = preg_replace_callback('/\{\@([^\}]+)\}/i', array($this, '_compileVarToSilenceExecute'), $buff); + $buff = preg_replace_callback('/\{\@([^\{\}\n]+)\}/i', array($this, '_compileVarToSilenceExecute'), $buff); // 의 변경 $buff = preg_replace_callback('!<\!--@(.*?)-->!is', array($this, '_compileFuncToCode'), $buff); From 7b2b1c85a6634f83ebff580c9b56636a88edf85e Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 4 Jan 2008 17:04:57 +0000 Subject: [PATCH 027/278] =?UTF-8?q?#360=20=EC=97=AE=EC=9D=B8=EA=B8=80=20?= =?UTF-8?q?=ED=97=88=EC=9A=A9=20=EC=84=A4=EC=A0=95=20=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3468 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 35321fb07..599b8833b 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -72,13 +72,17 @@ } function allowComment() { - return $this->get('allow_comment') == 'Y' || !$this->isExists() ? true : false; + return $this->get('allow_comment') == 'Y' && $this->isExists() ? true : false; } function allowTrackback() { - return $this->get('allow_trackback') == 'Y' || !$this->isExists() ? true : false; + $module_srl = Context::get('module_srl'); + $oTrackbackModel = &getModel('trackback'); + $module_config = &$oTrackbackModel->getTrackbackModuleConfig($module_srl); + if($module_config->enable_trackback == 'Y' && $this->get('allow_trackback') == 'Y' && $this->isExists()) return true; + return false; } - + function isLocked() { return $this->get('lock_comment') == 'Y' ? true : false; } From 2b5b3c749c8871b1d8b4d5a54fc8253ff48e0e02 Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 5 Jan 2008 06:26:50 +0000 Subject: [PATCH 028/278] =?UTF-8?q?r3468=20=EC=9D=BC=EB=B6=80=20=EC=9E=84?= =?UTF-8?q?=EC=8B=9C=20=EB=A1=A4=EB=B0=B1(=EB=8C=93=EA=B8=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3469 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 599b8833b..ecb2d0286 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -72,7 +72,7 @@ } function allowComment() { - return $this->get('allow_comment') == 'Y' && $this->isExists() ? true : false; + return $this->get('allow_comment') == 'Y' || !$this->isExists() ? true : false; } function allowTrackback() { From 7c18ef7a11094d2b6afb98bb047e719fce43f080 Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 5 Jan 2008 07:00:54 +0000 Subject: [PATCH 029/278] =?UTF-8?q?r3468=20=EB=A1=A4=EB=B0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3470 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index ecb2d0286..85645d6d0 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -76,11 +76,7 @@ } function allowTrackback() { - $module_srl = Context::get('module_srl'); - $oTrackbackModel = &getModel('trackback'); - $module_config = &$oTrackbackModel->getTrackbackModuleConfig($module_srl); - if($module_config->enable_trackback == 'Y' && $this->get('allow_trackback') == 'Y' && $this->isExists()) return true; - return false; + return $this->get('allow_trackback') == 'Y' || !$this->isExists() ? true : false; } function isLocked() { From 0ea54b39ecd3a345b3da36a72a1b7b93e7efdcfa Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 01:32:12 +0000 Subject: [PATCH 030/278] =?UTF-8?q?css/js=20optimizer=EC=97=90=EC=84=9C=20?= =?UTF-8?q?HTTP=5FIF=5FMODIFIED=5FSINCE=20=EA=B0=92=EC=9D=84=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3471 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 0846cae81..3ccb33c57 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -124,8 +124,8 @@ $mtime = '.$mtime.'; $cached = false; $type = "'.$type.'"; -if(isset($_SERVER["If-Modified-Since"])) { - $time = strtotime(preg_replace("/;.*$/", "", $_SERVER["If-Modified-Since"])); +if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) { + $time = strtotime(preg_replace("/;.*$/", "", $_SERVER["HTTP_IF_MODIFIED_SINCE"])); if($mtime == $time && $time > '.$class_mtime.') { header("HTTP/1.1 304"); $cached = true; From 04f468bb12b63e769984ab8fd3a0be1a6a0c224c Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 7 Jan 2008 02:19:22 +0000 Subject: [PATCH 031/278] =?UTF-8?q?libs=20directory=20=EB=B6=84=EB=A6=AC,?= =?UTF-8?q?=20PEAR=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3472 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- libs/PEAR/HTTP/Request.php | 1461 +++++++++++++++++++++++++++ libs/PEAR/HTTP/Request/Listener.php | 106 ++ libs/PEAR/Net/Socket.php | 528 ++++++++++ libs/PEAR/Net/URL.php | 410 ++++++++ libs/PEAR/PEAR.php | 1108 ++++++++++++++++++++ 5 files changed, 3613 insertions(+) create mode 100644 libs/PEAR/HTTP/Request.php create mode 100644 libs/PEAR/HTTP/Request/Listener.php create mode 100644 libs/PEAR/Net/Socket.php create mode 100644 libs/PEAR/Net/URL.php create mode 100644 libs/PEAR/PEAR.php diff --git a/libs/PEAR/HTTP/Request.php b/libs/PEAR/HTTP/Request.php new file mode 100644 index 000000000..67062ccd6 --- /dev/null +++ b/libs/PEAR/HTTP/Request.php @@ -0,0 +1,1461 @@ + + * @author Alexey Borzov + * @copyright 2002-2007 Richard Heyes + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: Request.php,v 1.55 2007/05/18 19:20:12 avb Exp $ + * @link http://pear.php.net/package/HTTP_Request/ + */ + +/** + * PEAR and PEAR_Error classes (for error handling) + */ +require_once 'PEAR.php'; +/** + * Socket class + */ +require_once 'Net/Socket.php'; +/** + * URL handling class + */ +require_once 'Net/URL.php'; + +/**#@+ + * Constants for HTTP request methods + */ +define('HTTP_REQUEST_METHOD_GET', 'GET', true); +define('HTTP_REQUEST_METHOD_HEAD', 'HEAD', true); +define('HTTP_REQUEST_METHOD_POST', 'POST', true); +define('HTTP_REQUEST_METHOD_PUT', 'PUT', true); +define('HTTP_REQUEST_METHOD_DELETE', 'DELETE', true); +define('HTTP_REQUEST_METHOD_OPTIONS', 'OPTIONS', true); +define('HTTP_REQUEST_METHOD_TRACE', 'TRACE', true); +/**#@-*/ + +/**#@+ + * Constants for HTTP protocol versions + */ +define('HTTP_REQUEST_HTTP_VER_1_0', '1.0', true); +define('HTTP_REQUEST_HTTP_VER_1_1', '1.1', true); +/**#@-*/ + +if (extension_loaded('mbstring') && (2 & ini_get('mbstring.func_overload'))) { + /** + * Whether string functions are overloaded by their mbstring equivalents + */ + define('HTTP_REQUEST_MBSTRING', true); +} else { + /** + * @ignore + */ + define('HTTP_REQUEST_MBSTRING', false); +} + +/** + * Class for performing HTTP requests + * + * Simple example (fetches yahoo.com and displays it): + * + * $a = &new HTTP_Request('http://www.yahoo.com/'); + * $a->sendRequest(); + * echo $a->getResponseBody(); + * + * + * @category HTTP + * @package HTTP_Request + * @author Richard Heyes + * @author Alexey Borzov + * @version Release: 1.4.1 + */ +class HTTP_Request +{ + /**#@+ + * @access private + */ + /** + * Instance of Net_URL + * @var Net_URL + */ + var $_url; + + /** + * Type of request + * @var string + */ + var $_method; + + /** + * HTTP Version + * @var string + */ + var $_http; + + /** + * Request headers + * @var array + */ + var $_requestHeaders; + + /** + * Basic Auth Username + * @var string + */ + var $_user; + + /** + * Basic Auth Password + * @var string + */ + var $_pass; + + /** + * Socket object + * @var Net_Socket + */ + var $_sock; + + /** + * Proxy server + * @var string + */ + var $_proxy_host; + + /** + * Proxy port + * @var integer + */ + var $_proxy_port; + + /** + * Proxy username + * @var string + */ + var $_proxy_user; + + /** + * Proxy password + * @var string + */ + var $_proxy_pass; + + /** + * Post data + * @var array + */ + var $_postData; + + /** + * Request body + * @var string + */ + var $_body; + + /** + * A list of methods that MUST NOT have a request body, per RFC 2616 + * @var array + */ + var $_bodyDisallowed = array('TRACE'); + + /** + * Files to post + * @var array + */ + var $_postFiles = array(); + + /** + * Connection timeout. + * @var float + */ + var $_timeout; + + /** + * HTTP_Response object + * @var HTTP_Response + */ + var $_response; + + /** + * Whether to allow redirects + * @var boolean + */ + var $_allowRedirects; + + /** + * Maximum redirects allowed + * @var integer + */ + var $_maxRedirects; + + /** + * Current number of redirects + * @var integer + */ + var $_redirects; + + /** + * Whether to append brackets [] to array variables + * @var bool + */ + var $_useBrackets = true; + + /** + * Attached listeners + * @var array + */ + var $_listeners = array(); + + /** + * Whether to save response body in response object property + * @var bool + */ + var $_saveBody = true; + + /** + * Timeout for reading from socket (array(seconds, microseconds)) + * @var array + */ + var $_readTimeout = null; + + /** + * Options to pass to Net_Socket::connect. See stream_context_create + * @var array + */ + var $_socketOptions = null; + /**#@-*/ + + /** + * Constructor + * + * Sets up the object + * @param string The url to fetch/access + * @param array Associative array of parameters which can have the following keys: + *
    + *
  • method - Method to use, GET, POST etc (string)
  • + *
  • http - HTTP Version to use, 1.0 or 1.1 (string)
  • + *
  • user - Basic Auth username (string)
  • + *
  • pass - Basic Auth password (string)
  • + *
  • proxy_host - Proxy server host (string)
  • + *
  • proxy_port - Proxy server port (integer)
  • + *
  • proxy_user - Proxy auth username (string)
  • + *
  • proxy_pass - Proxy auth password (string)
  • + *
  • timeout - Connection timeout in seconds (float)
  • + *
  • allowRedirects - Whether to follow redirects or not (bool)
  • + *
  • maxRedirects - Max number of redirects to follow (integer)
  • + *
  • useBrackets - Whether to append [] to array variable names (bool)
  • + *
  • saveBody - Whether to save response body in response object property (bool)
  • + *
  • readTimeout - Timeout for reading / writing data over the socket (array (seconds, microseconds))
  • + *
  • socketOptions - Options to pass to Net_Socket object (array)
  • + *
+ * @access public + */ + function HTTP_Request($url = '', $params = array()) + { + $this->_method = HTTP_REQUEST_METHOD_GET; + $this->_http = HTTP_REQUEST_HTTP_VER_1_1; + $this->_requestHeaders = array(); + $this->_postData = array(); + $this->_body = null; + + $this->_user = null; + $this->_pass = null; + + $this->_proxy_host = null; + $this->_proxy_port = null; + $this->_proxy_user = null; + $this->_proxy_pass = null; + + $this->_allowRedirects = false; + $this->_maxRedirects = 3; + $this->_redirects = 0; + + $this->_timeout = null; + $this->_response = null; + + foreach ($params as $key => $value) { + $this->{'_' . $key} = $value; + } + + if (!empty($url)) { + $this->setURL($url); + } + + // Default useragent + $this->addHeader('User-Agent', 'PEAR HTTP_Request class ( http://pear.php.net/ )'); + + // We don't do keep-alives by default + $this->addHeader('Connection', 'close'); + + // Basic authentication + if (!empty($this->_user)) { + $this->addHeader('Authorization', 'Basic ' . base64_encode($this->_user . ':' . $this->_pass)); + } + + // Proxy authentication (see bug #5913) + if (!empty($this->_proxy_user)) { + $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($this->_proxy_user . ':' . $this->_proxy_pass)); + } + + // Use gzip encoding if possible + if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && extension_loaded('zlib')) { + $this->addHeader('Accept-Encoding', 'gzip'); + } + } + + /** + * Generates a Host header for HTTP/1.1 requests + * + * @access private + * @return string + */ + function _generateHostHeader() + { + if ($this->_url->port != 80 AND strcasecmp($this->_url->protocol, 'http') == 0) { + $host = $this->_url->host . ':' . $this->_url->port; + + } elseif ($this->_url->port != 443 AND strcasecmp($this->_url->protocol, 'https') == 0) { + $host = $this->_url->host . ':' . $this->_url->port; + + } elseif ($this->_url->port == 443 AND strcasecmp($this->_url->protocol, 'https') == 0 AND strpos($this->_url->url, ':443') !== false) { + $host = $this->_url->host . ':' . $this->_url->port; + + } else { + $host = $this->_url->host; + } + + return $host; + } + + /** + * Resets the object to its initial state (DEPRECATED). + * Takes the same parameters as the constructor. + * + * @param string $url The url to be requested + * @param array $params Associative array of parameters + * (see constructor for details) + * @access public + * @deprecated deprecated since 1.2, call the constructor if this is necessary + */ + function reset($url, $params = array()) + { + $this->HTTP_Request($url, $params); + } + + /** + * Sets the URL to be requested + * + * @param string The url to be requested + * @access public + */ + function setURL($url) + { + $this->_url = &new Net_URL($url, $this->_useBrackets); + + if (!empty($this->_url->user) || !empty($this->_url->pass)) { + $this->setBasicAuth($this->_url->user, $this->_url->pass); + } + + if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http) { + $this->addHeader('Host', $this->_generateHostHeader()); + } + + // set '/' instead of empty path rather than check later (see bug #8662) + if (empty($this->_url->path)) { + $this->_url->path = '/'; + } + } + + /** + * Returns the current request URL + * + * @return string Current request URL + * @access public + */ + function getUrl() + { + return empty($this->_url)? '': $this->_url->getUrl(); + } + + /** + * Sets a proxy to be used + * + * @param string Proxy host + * @param int Proxy port + * @param string Proxy username + * @param string Proxy password + * @access public + */ + function setProxy($host, $port = 8080, $user = null, $pass = null) + { + $this->_proxy_host = $host; + $this->_proxy_port = $port; + $this->_proxy_user = $user; + $this->_proxy_pass = $pass; + + if (!empty($user)) { + $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($user . ':' . $pass)); + } + } + + /** + * Sets basic authentication parameters + * + * @param string Username + * @param string Password + */ + function setBasicAuth($user, $pass) + { + $this->_user = $user; + $this->_pass = $pass; + + $this->addHeader('Authorization', 'Basic ' . base64_encode($user . ':' . $pass)); + } + + /** + * Sets the method to be used, GET, POST etc. + * + * @param string Method to use. Use the defined constants for this + * @access public + */ + function setMethod($method) + { + $this->_method = $method; + } + + /** + * Sets the HTTP version to use, 1.0 or 1.1 + * + * @param string Version to use. Use the defined constants for this + * @access public + */ + function setHttpVer($http) + { + $this->_http = $http; + } + + /** + * Adds a request header + * + * @param string Header name + * @param string Header value + * @access public + */ + function addHeader($name, $value) + { + $this->_requestHeaders[strtolower($name)] = $value; + } + + /** + * Removes a request header + * + * @param string Header name to remove + * @access public + */ + function removeHeader($name) + { + if (isset($this->_requestHeaders[strtolower($name)])) { + unset($this->_requestHeaders[strtolower($name)]); + } + } + + /** + * Adds a querystring parameter + * + * @param string Querystring parameter name + * @param string Querystring parameter value + * @param bool Whether the value is already urlencoded or not, default = not + * @access public + */ + function addQueryString($name, $value, $preencoded = false) + { + $this->_url->addQueryString($name, $value, $preencoded); + } + + /** + * Sets the querystring to literally what you supply + * + * @param string The querystring data. Should be of the format foo=bar&x=y etc + * @param bool Whether data is already urlencoded or not, default = already encoded + * @access public + */ + function addRawQueryString($querystring, $preencoded = true) + { + $this->_url->addRawQueryString($querystring, $preencoded); + } + + /** + * Adds postdata items + * + * @param string Post data name + * @param string Post data value + * @param bool Whether data is already urlencoded or not, default = not + * @access public + */ + function addPostData($name, $value, $preencoded = false) + { + if ($preencoded) { + $this->_postData[$name] = $value; + } else { + $this->_postData[$name] = $this->_arrayMapRecursive('urlencode', $value); + } + } + + /** + * Recursively applies the callback function to the value + * + * @param mixed Callback function + * @param mixed Value to process + * @access private + * @return mixed Processed value + */ + function _arrayMapRecursive($callback, $value) + { + if (!is_array($value)) { + return call_user_func($callback, $value); + } else { + $map = array(); + foreach ($value as $k => $v) { + $map[$k] = $this->_arrayMapRecursive($callback, $v); + } + return $map; + } + } + + /** + * Adds a file to upload + * + * This also changes content-type to 'multipart/form-data' for proper upload + * + * @access public + * @param string name of file-upload field + * @param mixed file name(s) + * @param mixed content-type(s) of file(s) being uploaded + * @return bool true on success + * @throws PEAR_Error + */ + function addFile($inputName, $fileName, $contentType = 'application/octet-stream') + { + if (!is_array($fileName) && !is_readable($fileName)) { + return PEAR::raiseError("File '{$fileName}' is not readable"); + } elseif (is_array($fileName)) { + foreach ($fileName as $name) { + if (!is_readable($name)) { + return PEAR::raiseError("File '{$name}' is not readable"); + } + } + } + $this->addHeader('Content-Type', 'multipart/form-data'); + $this->_postFiles[$inputName] = array( + 'name' => $fileName, + 'type' => $contentType + ); + return true; + } + + /** + * Adds raw postdata (DEPRECATED) + * + * @param string The data + * @param bool Whether data is preencoded or not, default = already encoded + * @access public + * @deprecated deprecated since 1.3.0, method setBody() should be used instead + */ + function addRawPostData($postdata, $preencoded = true) + { + $this->_body = $preencoded ? $postdata : urlencode($postdata); + } + + /** + * Sets the request body (for POST, PUT and similar requests) + * + * @param string Request body + * @access public + */ + function setBody($body) + { + $this->_body = $body; + } + + /** + * Clears any postdata that has been added (DEPRECATED). + * + * Useful for multiple request scenarios. + * + * @access public + * @deprecated deprecated since 1.2 + */ + function clearPostData() + { + $this->_postData = null; + } + + /** + * Appends a cookie to "Cookie:" header + * + * @param string $name cookie name + * @param string $value cookie value + * @access public + */ + function addCookie($name, $value) + { + $cookies = isset($this->_requestHeaders['cookie']) ? $this->_requestHeaders['cookie']. '; ' : ''; + $this->addHeader('Cookie', $cookies . $name . '=' . $value); + } + + /** + * Clears any cookies that have been added (DEPRECATED). + * + * Useful for multiple request scenarios + * + * @access public + * @deprecated deprecated since 1.2 + */ + function clearCookies() + { + $this->removeHeader('Cookie'); + } + + /** + * Sends the request + * + * @access public + * @param bool Whether to store response body in Response object property, + * set this to false if downloading a LARGE file and using a Listener + * @return mixed PEAR error on error, true otherwise + */ + function sendRequest($saveBody = true) + { + if (!is_a($this->_url, 'Net_URL')) { + return PEAR::raiseError('No URL given.'); + } + + $host = isset($this->_proxy_host) ? $this->_proxy_host : $this->_url->host; + $port = isset($this->_proxy_port) ? $this->_proxy_port : $this->_url->port; + + // 4.3.0 supports SSL connections using OpenSSL. The function test determines + // we running on at least 4.3.0 + if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_loaded('openssl')) { + if (isset($this->_proxy_host)) { + return PEAR::raiseError('HTTPS proxies are not supported.'); + } + $host = 'ssl://' . $host; + } + + // magic quotes may fuck up file uploads and chunked response processing + $magicQuotes = ini_get('magic_quotes_runtime'); + ini_set('magic_quotes_runtime', false); + + // RFC 2068, section 19.7.1: A client MUST NOT send the Keep-Alive + // connection token to a proxy server... + if (isset($this->_proxy_host) && !empty($this->_requestHeaders['connection']) && + 'Keep-Alive' == $this->_requestHeaders['connection']) + { + $this->removeHeader('connection'); + } + + $keepAlive = (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && empty($this->_requestHeaders['connection'])) || + (!empty($this->_requestHeaders['connection']) && 'Keep-Alive' == $this->_requestHeaders['connection']); + $sockets = &PEAR::getStaticProperty('HTTP_Request', 'sockets'); + $sockKey = $host . ':' . $port; + unset($this->_sock); + + // There is a connected socket in the "static" property? + if ($keepAlive && !empty($sockets[$sockKey]) && + !empty($sockets[$sockKey]->fp)) + { + $this->_sock =& $sockets[$sockKey]; + $err = null; + } else { + $this->_notify('connect'); + $this->_sock =& new Net_Socket(); + $err = $this->_sock->connect($host, $port, null, $this->_timeout, $this->_socketOptions); + } + PEAR::isError($err) or $err = $this->_sock->write($this->_buildRequest()); + + if (!PEAR::isError($err)) { + if (!empty($this->_readTimeout)) { + $this->_sock->setTimeout($this->_readTimeout[0], $this->_readTimeout[1]); + } + + $this->_notify('sentRequest'); + + // Read the response + $this->_response = &new HTTP_Response($this->_sock, $this->_listeners); + $err = $this->_response->process( + $this->_saveBody && $saveBody, + HTTP_REQUEST_METHOD_HEAD != $this->_method + ); + + if ($keepAlive) { + $keepAlive = (isset($this->_response->_headers['content-length']) + || (isset($this->_response->_headers['transfer-encoding']) + && strtolower($this->_response->_headers['transfer-encoding']) == 'chunked')); + if ($keepAlive) { + if (isset($this->_response->_headers['connection'])) { + $keepAlive = strtolower($this->_response->_headers['connection']) == 'keep-alive'; + } else { + $keepAlive = 'HTTP/'.HTTP_REQUEST_HTTP_VER_1_1 == $this->_response->_protocol; + } + } + } + } + + ini_set('magic_quotes_runtime', $magicQuotes); + + if (PEAR::isError($err)) { + return $err; + } + + if (!$keepAlive) { + $this->disconnect(); + // Store the connected socket in "static" property + } elseif (empty($sockets[$sockKey]) || empty($sockets[$sockKey]->fp)) { + $sockets[$sockKey] =& $this->_sock; + } + + // Check for redirection + if ( $this->_allowRedirects + AND $this->_redirects <= $this->_maxRedirects + AND $this->getResponseCode() > 300 + AND $this->getResponseCode() < 399 + AND !empty($this->_response->_headers['location'])) { + + + $redirect = $this->_response->_headers['location']; + + // Absolute URL + if (preg_match('/^https?:\/\//i', $redirect)) { + $this->_url = &new Net_URL($redirect); + $this->addHeader('Host', $this->_generateHostHeader()); + // Absolute path + } elseif ($redirect{0} == '/') { + $this->_url->path = $redirect; + + // Relative path + } elseif (substr($redirect, 0, 3) == '../' OR substr($redirect, 0, 2) == './') { + if (substr($this->_url->path, -1) == '/') { + $redirect = $this->_url->path . $redirect; + } else { + $redirect = dirname($this->_url->path) . '/' . $redirect; + } + $redirect = Net_URL::resolvePath($redirect); + $this->_url->path = $redirect; + + // Filename, no path + } else { + if (substr($this->_url->path, -1) == '/') { + $redirect = $this->_url->path . $redirect; + } else { + $redirect = dirname($this->_url->path) . '/' . $redirect; + } + $this->_url->path = $redirect; + } + + $this->_redirects++; + return $this->sendRequest($saveBody); + + // Too many redirects + } elseif ($this->_allowRedirects AND $this->_redirects > $this->_maxRedirects) { + return PEAR::raiseError('Too many redirects'); + } + + return true; + } + + /** + * Disconnect the socket, if connected. Only useful if using Keep-Alive. + * + * @access public + */ + function disconnect() + { + if (!empty($this->_sock) && !empty($this->_sock->fp)) { + $this->_notify('disconnect'); + $this->_sock->disconnect(); + } + } + + /** + * Returns the response code + * + * @access public + * @return mixed Response code, false if not set + */ + function getResponseCode() + { + return isset($this->_response->_code) ? $this->_response->_code : false; + } + + /** + * Returns either the named header or all if no name given + * + * @access public + * @param string The header name to return, do not set to get all headers + * @return mixed either the value of $headername (false if header is not present) + * or an array of all headers + */ + function getResponseHeader($headername = null) + { + if (!isset($headername)) { + return isset($this->_response->_headers)? $this->_response->_headers: array(); + } else { + $headername = strtolower($headername); + return isset($this->_response->_headers[$headername]) ? $this->_response->_headers[$headername] : false; + } + } + + /** + * Returns the body of the response + * + * @access public + * @return mixed response body, false if not set + */ + function getResponseBody() + { + return isset($this->_response->_body) ? $this->_response->_body : false; + } + + /** + * Returns cookies set in response + * + * @access public + * @return mixed array of response cookies, false if none are present + */ + function getResponseCookies() + { + return isset($this->_response->_cookies) ? $this->_response->_cookies : false; + } + + /** + * Builds the request string + * + * @access private + * @return string The request string + */ + function _buildRequest() + { + $separator = ini_get('arg_separator.output'); + ini_set('arg_separator.output', '&'); + $querystring = ($querystring = $this->_url->getQueryString()) ? '?' . $querystring : ''; + ini_set('arg_separator.output', $separator); + + $host = isset($this->_proxy_host) ? $this->_url->protocol . '://' . $this->_url->host : ''; + $port = (isset($this->_proxy_host) AND $this->_url->port != 80) ? ':' . $this->_url->port : ''; + $path = $this->_url->path . $querystring; + $url = $host . $port . $path; + + $request = $this->_method . ' ' . $url . ' HTTP/' . $this->_http . "\r\n"; + + if (in_array($this->_method, $this->_bodyDisallowed) || + (empty($this->_body) && (HTTP_REQUEST_METHOD_POST != $this->_method || + (empty($this->_postData) && empty($this->_postFiles))))) + { + $this->removeHeader('Content-Type'); + } else { + if (empty($this->_requestHeaders['content-type'])) { + // Add default content-type + $this->addHeader('Content-Type', 'application/x-www-form-urlencoded'); + } elseif ('multipart/form-data' == $this->_requestHeaders['content-type']) { + $boundary = 'HTTP_Request_' . md5(uniqid('request') . microtime()); + $this->addHeader('Content-Type', 'multipart/form-data; boundary=' . $boundary); + } + } + + // Request Headers + if (!empty($this->_requestHeaders)) { + foreach ($this->_requestHeaders as $name => $value) { + $canonicalName = implode('-', array_map('ucfirst', explode('-', $name))); + $request .= $canonicalName . ': ' . $value . "\r\n"; + } + } + + // No post data or wrong method, so simply add a final CRLF + if (in_array($this->_method, $this->_bodyDisallowed) || + (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body))) { + + $request .= "\r\n"; + + // Post data if it's an array + } elseif (HTTP_REQUEST_METHOD_POST == $this->_method && + (!empty($this->_postData) || !empty($this->_postFiles))) { + + // "normal" POST request + if (!isset($boundary)) { + $postdata = implode('&', array_map( + create_function('$a', 'return $a[0] . \'=\' . $a[1];'), + $this->_flattenArray('', $this->_postData) + )); + + // multipart request, probably with file uploads + } else { + $postdata = ''; + if (!empty($this->_postData)) { + $flatData = $this->_flattenArray('', $this->_postData); + foreach ($flatData as $item) { + $postdata .= '--' . $boundary . "\r\n"; + $postdata .= 'Content-Disposition: form-data; name="' . $item[0] . '"'; + $postdata .= "\r\n\r\n" . urldecode($item[1]) . "\r\n"; + } + } + foreach ($this->_postFiles as $name => $value) { + if (is_array($value['name'])) { + $varname = $name . ($this->_useBrackets? '[]': ''); + } else { + $varname = $name; + $value['name'] = array($value['name']); + } + foreach ($value['name'] as $key => $filename) { + $fp = fopen($filename, 'r'); + $data = fread($fp, filesize($filename)); + fclose($fp); + $basename = basename($filename); + $type = is_array($value['type'])? @$value['type'][$key]: $value['type']; + + $postdata .= '--' . $boundary . "\r\n"; + $postdata .= 'Content-Disposition: form-data; name="' . $varname . '"; filename="' . $basename . '"'; + $postdata .= "\r\nContent-Type: " . $type; + $postdata .= "\r\n\r\n" . $data . "\r\n"; + } + } + $postdata .= '--' . $boundary . "--\r\n"; + } + $request .= 'Content-Length: ' . + (HTTP_REQUEST_MBSTRING? mb_strlen($postdata, 'iso-8859-1'): strlen($postdata)) . + "\r\n\r\n"; + $request .= $postdata; + + // Explicitly set request body + } elseif (!empty($this->_body)) { + + $request .= 'Content-Length: ' . + (HTTP_REQUEST_MBSTRING? mb_strlen($this->_body, 'iso-8859-1'): strlen($this->_body)) . + "\r\n\r\n"; + $request .= $this->_body; + } + + return $request; + } + + /** + * Helper function to change the (probably multidimensional) associative array + * into the simple one. + * + * @param string name for item + * @param mixed item's values + * @return array array with the following items: array('item name', 'item value'); + * @access private + */ + function _flattenArray($name, $values) + { + if (!is_array($values)) { + return array(array($name, $values)); + } else { + $ret = array(); + foreach ($values as $k => $v) { + if (empty($name)) { + $newName = $k; + } elseif ($this->_useBrackets) { + $newName = $name . '[' . $k . ']'; + } else { + $newName = $name; + } + $ret = array_merge($ret, $this->_flattenArray($newName, $v)); + } + return $ret; + } + } + + + /** + * Adds a Listener to the list of listeners that are notified of + * the object's events + * + * Events sent by HTTP_Request object + * - 'connect': on connection to server + * - 'sentRequest': after the request was sent + * - 'disconnect': on disconnection from server + * + * Events sent by HTTP_Response object + * - 'gotHeaders': after receiving response headers (headers are passed in $data) + * - 'tick': on receiving a part of response body (the part is passed in $data) + * - 'gzTick': on receiving a gzip-encoded part of response body (ditto) + * - 'gotBody': after receiving the response body (passes the decoded body in $data if it was gzipped) + * + * @param HTTP_Request_Listener listener to attach + * @return boolean whether the listener was successfully attached + * @access public + */ + function attach(&$listener) + { + if (!is_a($listener, 'HTTP_Request_Listener')) { + return false; + } + $this->_listeners[$listener->getId()] =& $listener; + return true; + } + + + /** + * Removes a Listener from the list of listeners + * + * @param HTTP_Request_Listener listener to detach + * @return boolean whether the listener was successfully detached + * @access public + */ + function detach(&$listener) + { + if (!is_a($listener, 'HTTP_Request_Listener') || + !isset($this->_listeners[$listener->getId()])) { + return false; + } + unset($this->_listeners[$listener->getId()]); + return true; + } + + + /** + * Notifies all registered listeners of an event. + * + * @param string Event name + * @param mixed Additional data + * @access private + * @see HTTP_Request::attach() + */ + function _notify($event, $data = null) + { + foreach (array_keys($this->_listeners) as $id) { + $this->_listeners[$id]->update($this, $event, $data); + } + } +} + + +/** + * Response class to complement the Request class + * + * @category HTTP + * @package HTTP_Request + * @author Richard Heyes + * @author Alexey Borzov + * @version Release: 1.4.1 + */ +class HTTP_Response +{ + /** + * Socket object + * @var Net_Socket + */ + var $_sock; + + /** + * Protocol + * @var string + */ + var $_protocol; + + /** + * Return code + * @var string + */ + var $_code; + + /** + * Response headers + * @var array + */ + var $_headers; + + /** + * Cookies set in response + * @var array + */ + var $_cookies; + + /** + * Response body + * @var string + */ + var $_body = ''; + + /** + * Used by _readChunked(): remaining length of the current chunk + * @var string + */ + var $_chunkLength = 0; + + /** + * Attached listeners + * @var array + */ + var $_listeners = array(); + + /** + * Bytes left to read from message-body + * @var null|int + */ + var $_toRead; + + /** + * Constructor + * + * @param Net_Socket socket to read the response from + * @param array listeners attached to request + */ + function HTTP_Response(&$sock, &$listeners) + { + $this->_sock =& $sock; + $this->_listeners =& $listeners; + } + + + /** + * Processes a HTTP response + * + * This extracts response code, headers, cookies and decodes body if it + * was encoded in some way + * + * @access public + * @param bool Whether to store response body in object property, set + * this to false if downloading a LARGE file and using a Listener. + * This is assumed to be true if body is gzip-encoded. + * @param bool Whether the response can actually have a message-body. + * Will be set to false for HEAD requests. + * @throws PEAR_Error + * @return mixed true on success, PEAR_Error in case of malformed response + */ + function process($saveBody = true, $canHaveBody = true) + { + do { + $line = $this->_sock->readLine(); + if (sscanf($line, 'HTTP/%s %s', $http_version, $returncode) != 2) { + return PEAR::raiseError('Malformed response.'); + } else { + $this->_protocol = 'HTTP/' . $http_version; + $this->_code = intval($returncode); + } + while ('' !== ($header = $this->_sock->readLine())) { + $this->_processHeader($header); + } + } while (100 == $this->_code); + + $this->_notify('gotHeaders', $this->_headers); + + // RFC 2616, section 4.4: + // 1. Any response message which "MUST NOT" include a message-body ... + // is always terminated by the first empty line after the header fields + // 3. ... If a message is received with both a + // Transfer-Encoding header field and a Content-Length header field, + // the latter MUST be ignored. + $canHaveBody = $canHaveBody && $this->_code >= 200 && + $this->_code != 204 && $this->_code != 304; + + // If response body is present, read it and decode + $chunked = isset($this->_headers['transfer-encoding']) && ('chunked' == $this->_headers['transfer-encoding']); + $gzipped = isset($this->_headers['content-encoding']) && ('gzip' == $this->_headers['content-encoding']); + $hasBody = false; + if ($canHaveBody && ($chunked || !isset($this->_headers['content-length']) || + 0 != $this->_headers['content-length'])) + { + if ($chunked || !isset($this->_headers['content-length'])) { + $this->_toRead = null; + } else { + $this->_toRead = $this->_headers['content-length']; + } + while (!$this->_sock->eof() && (is_null($this->_toRead) || 0 < $this->_toRead)) { + if ($chunked) { + $data = $this->_readChunked(); + } elseif (is_null($this->_toRead)) { + $data = $this->_sock->read(4096); + } else { + $data = $this->_sock->read(min(4096, $this->_toRead)); + $this->_toRead -= HTTP_REQUEST_MBSTRING? mb_strlen($data, 'iso-8859-1'): strlen($data); + } + if ('' == $data) { + break; + } else { + $hasBody = true; + if ($saveBody || $gzipped) { + $this->_body .= $data; + } + $this->_notify($gzipped? 'gzTick': 'tick', $data); + } + } + } + + if ($hasBody) { + // Uncompress the body if needed + if ($gzipped) { + $body = $this->_decodeGzip($this->_body); + if (PEAR::isError($body)) { + return $body; + } + $this->_body = $body; + $this->_notify('gotBody', $this->_body); + } else { + $this->_notify('gotBody'); + } + } + return true; + } + + + /** + * Processes the response header + * + * @access private + * @param string HTTP header + */ + function _processHeader($header) + { + if (false === strpos($header, ':')) { + return; + } + list($headername, $headervalue) = explode(':', $header, 2); + $headername = strtolower($headername); + $headervalue = ltrim($headervalue); + + if ('set-cookie' != $headername) { + if (isset($this->_headers[$headername])) { + $this->_headers[$headername] .= ',' . $headervalue; + } else { + $this->_headers[$headername] = $headervalue; + } + } else { + $this->_parseCookie($headervalue); + } + } + + + /** + * Parse a Set-Cookie header to fill $_cookies array + * + * @access private + * @param string value of Set-Cookie header + */ + function _parseCookie($headervalue) + { + $cookie = array( + 'expires' => null, + 'domain' => null, + 'path' => null, + 'secure' => false + ); + + // Only a name=value pair + if (!strpos($headervalue, ';')) { + $pos = strpos($headervalue, '='); + $cookie['name'] = trim(substr($headervalue, 0, $pos)); + $cookie['value'] = trim(substr($headervalue, $pos + 1)); + + // Some optional parameters are supplied + } else { + $elements = explode(';', $headervalue); + $pos = strpos($elements[0], '='); + $cookie['name'] = trim(substr($elements[0], 0, $pos)); + $cookie['value'] = trim(substr($elements[0], $pos + 1)); + + for ($i = 1; $i < count($elements); $i++) { + if (false === strpos($elements[$i], '=')) { + $elName = trim($elements[$i]); + $elValue = null; + } else { + list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i])); + } + $elName = strtolower($elName); + if ('secure' == $elName) { + $cookie['secure'] = true; + } elseif ('expires' == $elName) { + $cookie['expires'] = str_replace('"', '', $elValue); + } elseif ('path' == $elName || 'domain' == $elName) { + $cookie[$elName] = urldecode($elValue); + } else { + $cookie[$elName] = $elValue; + } + } + } + $this->_cookies[] = $cookie; + } + + + /** + * Read a part of response body encoded with chunked Transfer-Encoding + * + * @access private + * @return string + */ + function _readChunked() + { + // at start of the next chunk? + if (0 == $this->_chunkLength) { + $line = $this->_sock->readLine(); + if (preg_match('/^([0-9a-f]+)/i', $line, $matches)) { + $this->_chunkLength = hexdec($matches[1]); + // Chunk with zero length indicates the end + if (0 == $this->_chunkLength) { + $this->_sock->readLine(); // make this an eof() + return ''; + } + } else { + return ''; + } + } + $data = $this->_sock->read($this->_chunkLength); + $this->_chunkLength -= HTTP_REQUEST_MBSTRING? mb_strlen($data, 'iso-8859-1'): strlen($data); + if (0 == $this->_chunkLength) { + $this->_sock->readLine(); // Trailing CRLF + } + return $data; + } + + + /** + * Notifies all registered listeners of an event. + * + * @param string Event name + * @param mixed Additional data + * @access private + * @see HTTP_Request::_notify() + */ + function _notify($event, $data = null) + { + foreach (array_keys($this->_listeners) as $id) { + $this->_listeners[$id]->update($this, $event, $data); + } + } + + + /** + * Decodes the message-body encoded by gzip + * + * The real decoding work is done by gzinflate() built-in function, this + * method only parses the header and checks data for compliance with + * RFC 1952 + * + * @access private + * @param string gzip-encoded data + * @return string decoded data + */ + function _decodeGzip($data) + { + if (HTTP_REQUEST_MBSTRING) { + $oldEncoding = mb_internal_encoding(); + mb_internal_encoding('iso-8859-1'); + } + $length = strlen($data); + // If it doesn't look like gzip-encoded data, don't bother + if (18 > $length || strcmp(substr($data, 0, 2), "\x1f\x8b")) { + return $data; + } + $method = ord(substr($data, 2, 1)); + if (8 != $method) { + return PEAR::raiseError('_decodeGzip(): unknown compression method'); + } + $flags = ord(substr($data, 3, 1)); + if ($flags & 224) { + return PEAR::raiseError('_decodeGzip(): reserved bits are set'); + } + + // header is 10 bytes minimum. may be longer, though. + $headerLength = 10; + // extra fields, need to skip 'em + if ($flags & 4) { + if ($length - $headerLength - 2 < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $extraLength = unpack('v', substr($data, 10, 2)); + if ($length - $headerLength - 2 - $extraLength[1] < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $headerLength += $extraLength[1] + 2; + } + // file name, need to skip that + if ($flags & 8) { + if ($length - $headerLength - 1 < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $filenameLength = strpos(substr($data, $headerLength), chr(0)); + if (false === $filenameLength || $length - $headerLength - $filenameLength - 1 < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $headerLength += $filenameLength + 1; + } + // comment, need to skip that also + if ($flags & 16) { + if ($length - $headerLength - 1 < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $commentLength = strpos(substr($data, $headerLength), chr(0)); + if (false === $commentLength || $length - $headerLength - $commentLength - 1 < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $headerLength += $commentLength + 1; + } + // have a CRC for header. let's check + if ($flags & 1) { + if ($length - $headerLength - 2 < 8) { + return PEAR::raiseError('_decodeGzip(): data too short'); + } + $crcReal = 0xffff & crc32(substr($data, 0, $headerLength)); + $crcStored = unpack('v', substr($data, $headerLength, 2)); + if ($crcReal != $crcStored[1]) { + return PEAR::raiseError('_decodeGzip(): header CRC check failed'); + } + $headerLength += 2; + } + // unpacked data CRC and size at the end of encoded data + $tmp = unpack('V2', substr($data, -8)); + $dataCrc = $tmp[1]; + $dataSize = $tmp[2]; + + // finally, call the gzinflate() function + $unpacked = @gzinflate(substr($data, $headerLength, -8), $dataSize); + if (false === $unpacked) { + return PEAR::raiseError('_decodeGzip(): gzinflate() call failed'); + } elseif ($dataSize != strlen($unpacked)) { + return PEAR::raiseError('_decodeGzip(): data size check failed'); + } elseif ((0xffffffff & $dataCrc) != (0xffffffff & crc32($unpacked))) { + return PEAR::raiseError('_decodeGzip(): data CRC check failed'); + } + if (HTTP_REQUEST_MBSTRING) { + mb_internal_encoding($oldEncoding); + } + return $unpacked; + } +} // End class HTTP_Response +?> diff --git a/libs/PEAR/HTTP/Request/Listener.php b/libs/PEAR/HTTP/Request/Listener.php new file mode 100644 index 000000000..f0408b004 --- /dev/null +++ b/libs/PEAR/HTTP/Request/Listener.php @@ -0,0 +1,106 @@ + + * @copyright 2002-2007 Richard Heyes + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: Listener.php,v 1.3 2007/05/18 10:33:31 avb Exp $ + * @link http://pear.php.net/package/HTTP_Request/ + */ + +/** + * Listener for HTTP_Request and HTTP_Response objects + * + * This class implements the Observer part of a Subject-Observer + * design pattern. + * + * @category HTTP + * @package HTTP_Request + * @author Alexey Borzov + * @version Release: 1.4.1 + */ +class HTTP_Request_Listener +{ + /** + * A listener's identifier + * @var string + */ + var $_id; + + /** + * Constructor, sets the object's identifier + * + * @access public + */ + function HTTP_Request_Listener() + { + $this->_id = md5(uniqid('http_request_', 1)); + } + + + /** + * Returns the listener's identifier + * + * @access public + * @return string + */ + function getId() + { + return $this->_id; + } + + + /** + * This method is called when Listener is notified of an event + * + * @access public + * @param object an object the listener is attached to + * @param string Event name + * @param mixed Additional data + * @abstract + */ + function update(&$subject, $event, $data = null) + { + echo "Notified of event: '$event'\n"; + if (null !== $data) { + echo "Additional data: "; + var_dump($data); + } + } +} +?> diff --git a/libs/PEAR/Net/Socket.php b/libs/PEAR/Net/Socket.php new file mode 100644 index 000000000..7c4ff1d4e --- /dev/null +++ b/libs/PEAR/Net/Socket.php @@ -0,0 +1,528 @@ + | +// | Chuck Hagenbuch | +// +----------------------------------------------------------------------+ +// +// $Id: Socket.php,v 1.24 2005/02/03 20:40:16 chagenbu Exp $ + +require_once 'PEAR.php'; + +define('NET_SOCKET_READ', 1); +define('NET_SOCKET_WRITE', 2); +define('NET_SOCKET_ERROR', 3); + +/** + * Generalized Socket class. + * + * @version 1.1 + * @author Stig Bakken + * @author Chuck Hagenbuch + */ +class Net_Socket extends PEAR { + + /** + * Socket file pointer. + * @var resource $fp + */ + var $fp = null; + + /** + * Whether the socket is blocking. Defaults to true. + * @var boolean $blocking + */ + var $blocking = true; + + /** + * Whether the socket is persistent. Defaults to false. + * @var boolean $persistent + */ + var $persistent = false; + + /** + * The IP address to connect to. + * @var string $addr + */ + var $addr = ''; + + /** + * The port number to connect to. + * @var integer $port + */ + var $port = 0; + + /** + * Number of seconds to wait on socket connections before assuming + * there's no more data. Defaults to no timeout. + * @var integer $timeout + */ + var $timeout = false; + + /** + * Number of bytes to read at a time in readLine() and + * readAll(). Defaults to 2048. + * @var integer $lineLength + */ + var $lineLength = 2048; + + /** + * Connect to the specified port. If called when the socket is + * already connected, it disconnects and connects again. + * + * @param string $addr IP address or host name. + * @param integer $port TCP port number. + * @param boolean $persistent (optional) Whether the connection is + * persistent (kept open between requests + * by the web server). + * @param integer $timeout (optional) How long to wait for data. + * @param array $options See options for stream_context_create. + * + * @access public + * + * @return boolean | PEAR_Error True on success or a PEAR_Error on failure. + */ + function connect($addr, $port = 0, $persistent = null, $timeout = null, $options = null) + { + if (is_resource($this->fp)) { + @fclose($this->fp); + $this->fp = null; + } + + if (!$addr) { + return $this->raiseError('$addr cannot be empty'); + } elseif (strspn($addr, '.0123456789') == strlen($addr) || + strstr($addr, '/') !== false) { + $this->addr = $addr; + } else { + $this->addr = @gethostbyname($addr); + } + + $this->port = $port % 65536; + + if ($persistent !== null) { + $this->persistent = $persistent; + } + + if ($timeout !== null) { + $this->timeout = $timeout; + } + + $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; + $errno = 0; + $errstr = ''; + if ($options && function_exists('stream_context_create')) { + if ($this->timeout) { + $timeout = $this->timeout; + } else { + $timeout = 0; + } + $context = stream_context_create($options); + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context); + } else { + if ($this->timeout) { + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); + } else { + $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); + } + } + + if (!$fp) { + return $this->raiseError($errstr, $errno); + } + + $this->fp = $fp; + + return $this->setBlocking($this->blocking); + } + + /** + * Disconnects from the peer, closes the socket. + * + * @access public + * @return mixed true on success or an error object otherwise + */ + function disconnect() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + @fclose($this->fp); + $this->fp = null; + return true; + } + + /** + * Find out if the socket is in blocking mode. + * + * @access public + * @return boolean The current blocking mode. + */ + function isBlocking() + { + return $this->blocking; + } + + /** + * Sets whether the socket connection should be blocking or + * not. A read call to a non-blocking socket will return immediately + * if there is no data available, whereas it will block until there + * is data for blocking sockets. + * + * @param boolean $mode True for blocking sockets, false for nonblocking. + * @access public + * @return mixed true on success or an error object otherwise + */ + function setBlocking($mode) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $this->blocking = $mode; + socket_set_blocking($this->fp, $this->blocking); + return true; + } + + /** + * Sets the timeout value on socket descriptor, + * expressed in the sum of seconds and microseconds + * + * @param integer $seconds Seconds. + * @param integer $microseconds Microseconds. + * @access public + * @return mixed true on success or an error object otherwise + */ + function setTimeout($seconds, $microseconds) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return socket_set_timeout($this->fp, $seconds, $microseconds); + } + + /** + * Returns information about an existing socket resource. + * Currently returns four entries in the result array: + * + *

+ * timed_out (bool) - The socket timed out waiting for data
+ * blocked (bool) - The socket was blocked
+ * eof (bool) - Indicates EOF event
+ * unread_bytes (int) - Number of bytes left in the socket buffer
+ *

+ * + * @access public + * @return mixed Array containing information about existing socket resource or an error object otherwise + */ + function getStatus() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return socket_get_status($this->fp); + } + + /** + * Get a specified line of data + * + * @access public + * @return $size bytes of data from the socket, or a PEAR_Error if + * not connected. + */ + function gets($size) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return @fgets($this->fp, $size); + } + + /** + * Read a specified amount of data. This is guaranteed to return, + * and has the added benefit of getting everything in one fread() + * chunk; if you know the size of the data you're getting + * beforehand, this is definitely the way to go. + * + * @param integer $size The number of bytes to read from the socket. + * @access public + * @return $size bytes of data from the socket, or a PEAR_Error if + * not connected. + */ + function read($size) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return @fread($this->fp, $size); + } + + /** + * Write a specified amount of data. + * + * @param string $data Data to write. + * @param integer $blocksize Amount of data to write at once. + * NULL means all at once. + * + * @access public + * @return mixed true on success or an error object otherwise + */ + function write($data, $blocksize = null) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + if (is_null($blocksize) && !OS_WINDOWS) { + return fwrite($this->fp, $data); + } else { + if (is_null($blocksize)) { + $blocksize = 1024; + } + + $pos = 0; + $size = strlen($data); + while ($pos < $size) { + $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); + if ($written === false) { + return false; + } + $pos += $written; + } + + return $pos; + } + } + + /** + * Write a line of data to the socket, followed by a trailing "\r\n". + * + * @access public + * @return mixed fputs result, or an error + */ + function writeLine($data) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return fwrite($this->fp, $data . "\r\n"); + } + + /** + * Tests for end-of-file on a socket descriptor. + * + * @access public + * @return bool + */ + function eof() + { + return (is_resource($this->fp) && feof($this->fp)); + } + + /** + * Reads a byte of data + * + * @access public + * @return 1 byte of data from the socket, or a PEAR_Error if + * not connected. + */ + function readByte() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + return ord(@fread($this->fp, 1)); + } + + /** + * Reads a word of data + * + * @access public + * @return 1 word of data from the socket, or a PEAR_Error if + * not connected. + */ + function readWord() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $buf = @fread($this->fp, 2); + return (ord($buf[0]) + (ord($buf[1]) << 8)); + } + + /** + * Reads an int of data + * + * @access public + * @return integer 1 int of data from the socket, or a PEAR_Error if + * not connected. + */ + function readInt() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $buf = @fread($this->fp, 4); + return (ord($buf[0]) + (ord($buf[1]) << 8) + + (ord($buf[2]) << 16) + (ord($buf[3]) << 24)); + } + + /** + * Reads a zero-terminated string of data + * + * @access public + * @return string, or a PEAR_Error if + * not connected. + */ + function readString() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $string = ''; + while (($char = @fread($this->fp, 1)) != "\x00") { + $string .= $char; + } + return $string; + } + + /** + * Reads an IP Address and returns it in a dot formated string + * + * @access public + * @return Dot formated string, or a PEAR_Error if + * not connected. + */ + function readIPAddress() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $buf = @fread($this->fp, 4); + return sprintf("%s.%s.%s.%s", ord($buf[0]), ord($buf[1]), + ord($buf[2]), ord($buf[3])); + } + + /** + * Read until either the end of the socket or a newline, whichever + * comes first. Strips the trailing newline from the returned data. + * + * @access public + * @return All available data up to a newline, without that + * newline, or until the end of the socket, or a PEAR_Error if + * not connected. + */ + function readLine() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $line = ''; + $timeout = time() + $this->timeout; + while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { + $line .= @fgets($this->fp, $this->lineLength); + if (substr($line, -1) == "\n") { + return rtrim($line, "\r\n"); + } + } + return $line; + } + + /** + * Read until the socket closes, or until there is no more data in + * the inner PHP buffer. If the inner buffer is empty, in blocking + * mode we wait for at least 1 byte of data. Therefore, in + * blocking mode, if there is no data at all to be read, this + * function will never exit (unless the socket is closed on the + * remote end). + * + * @access public + * + * @return string All data until the socket closes, or a PEAR_Error if + * not connected. + */ + function readAll() + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $data = ''; + while (!feof($this->fp)) { + $data .= @fread($this->fp, $this->lineLength); + } + return $data; + } + + /** + * Runs the equivalent of the select() system call on the socket + * with a timeout specified by tv_sec and tv_usec. + * + * @param integer $state Which of read/write/error to check for. + * @param integer $tv_sec Number of seconds for timeout. + * @param integer $tv_usec Number of microseconds for timeout. + * + * @access public + * @return False if select fails, integer describing which of read/write/error + * are ready, or PEAR_Error if not connected. + */ + function select($state, $tv_sec, $tv_usec = 0) + { + if (!is_resource($this->fp)) { + return $this->raiseError('not connected'); + } + + $read = null; + $write = null; + $except = null; + if ($state & NET_SOCKET_READ) { + $read[] = $this->fp; + } + if ($state & NET_SOCKET_WRITE) { + $write[] = $this->fp; + } + if ($state & NET_SOCKET_ERROR) { + $except[] = $this->fp; + } + if (false === ($sr = stream_select($read, $write, $except, $tv_sec, $tv_usec))) { + return false; + } + + $result = 0; + if (count($read)) { + $result |= NET_SOCKET_READ; + } + if (count($write)) { + $result |= NET_SOCKET_WRITE; + } + if (count($except)) { + $result |= NET_SOCKET_ERROR; + } + return $result; + } + +} diff --git a/libs/PEAR/Net/URL.php b/libs/PEAR/Net/URL.php new file mode 100644 index 000000000..da48c746b --- /dev/null +++ b/libs/PEAR/Net/URL.php @@ -0,0 +1,410 @@ + | +// +-----------------------------------------------------------------------+ +// +// $Id: URL.php,v 1.36 2004/06/19 18:58:50 richard Exp $ +// +// Net_URL Class + +class Net_URL +{ + /** + * Full url + * @var string + */ + var $url; + + /** + * Protocol + * @var string + */ + var $protocol; + + /** + * Username + * @var string + */ + var $username; + + /** + * Password + * @var string + */ + var $password; + + /** + * Host + * @var string + */ + var $host; + + /** + * Port + * @var integer + */ + var $port; + + /** + * Path + * @var string + */ + var $path; + + /** + * Query string + * @var array + */ + var $querystring; + + /** + * Anchor + * @var string + */ + var $anchor; + + /** + * Whether to use [] + * @var bool + */ + var $useBrackets; + + /** + * PHP4 Constructor + * + * @see __construct() + */ + function Net_URL($url = null, $useBrackets = true) + { + $this->__construct($url, $useBrackets); + } + + /** + * PHP5 Constructor + * + * Parses the given url and stores the various parts + * Defaults are used in certain cases + * + * @param string $url Optional URL + * @param bool $useBrackets Whether to use square brackets when + * multiple querystrings with the same name + * exist + */ + function __construct($url = null, $useBrackets = true) + { + $HTTP_SERVER_VARS = !empty($_SERVER) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + + $this->useBrackets = $useBrackets; + $this->url = $url; + $this->user = ''; + $this->pass = ''; + $this->host = ''; + $this->port = 80; + $this->path = ''; + $this->querystring = array(); + $this->anchor = ''; + + // Only use defaults if not an absolute URL given + if (!preg_match('/^[a-z0-9]+:\/\//i', $url)) { + + $this->protocol = (@$HTTP_SERVER_VARS['HTTPS'] == 'on' ? 'https' : 'http'); + + /** + * Figure out host/port + */ + if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) AND preg_match('/^(.*)(:([0-9]+))?$/U', $HTTP_SERVER_VARS['HTTP_HOST'], $matches)) { + $host = $matches[1]; + if (!empty($matches[3])) { + $port = $matches[3]; + } else { + $port = $this->getStandardPort($this->protocol); + } + } + + $this->user = ''; + $this->pass = ''; + $this->host = !empty($host) ? $host : (isset($HTTP_SERVER_VARS['SERVER_NAME']) ? $HTTP_SERVER_VARS['SERVER_NAME'] : 'localhost'); + $this->port = !empty($port) ? $port : (isset($HTTP_SERVER_VARS['SERVER_PORT']) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $this->getStandardPort($this->protocol)); + $this->path = !empty($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : '/'; + $this->querystring = isset($HTTP_SERVER_VARS['QUERY_STRING']) ? $this->_parseRawQuerystring($HTTP_SERVER_VARS['QUERY_STRING']) : null; + $this->anchor = ''; + } + + // Parse the url and store the various parts + if (!empty($url)) { + $urlinfo = parse_url($url); + + // Default querystring + $this->querystring = array(); + + foreach ($urlinfo as $key => $value) { + switch ($key) { + case 'scheme': + $this->protocol = $value; + $this->port = $this->getStandardPort($value); + break; + + case 'user': + case 'pass': + case 'host': + case 'port': + $this->$key = $value; + break; + + case 'path': + if ($value{0} == '/') { + $this->path = $value; + } else { + $path = dirname($this->path) == DIRECTORY_SEPARATOR ? '' : dirname($this->path); + $this->path = sprintf('%s/%s', $path, $value); + } + break; + + case 'query': + $this->querystring = $this->_parseRawQueryString($value); + break; + + case 'fragment': + $this->anchor = $value; + break; + } + } + } + } + + /** + * Returns full url + * + * @return string Full url + * @access public + */ + function getURL() + { + $querystring = $this->getQueryString(); + + $this->url = $this->protocol . '://' + . $this->user . (!empty($this->pass) ? ':' : '') + . $this->pass . (!empty($this->user) ? '@' : '') + . $this->host . ($this->port == $this->getStandardPort($this->protocol) ? '' : ':' . $this->port) + . $this->path + . (!empty($querystring) ? '?' . $querystring : '') + . (!empty($this->anchor) ? '#' . $this->anchor : ''); + + return $this->url; + } + + /** + * Adds a querystring item + * + * @param string $name Name of item + * @param string $value Value of item + * @param bool $preencoded Whether value is urlencoded or not, default = not + * @access public + */ + function addQueryString($name, $value, $preencoded = false) + { + if ($preencoded) { + $this->querystring[$name] = $value; + } else { + $this->querystring[$name] = is_array($value) ? array_map('rawurlencode', $value): rawurlencode($value); + } + } + + /** + * Removes a querystring item + * + * @param string $name Name of item + * @access public + */ + function removeQueryString($name) + { + if (isset($this->querystring[$name])) { + unset($this->querystring[$name]); + } + } + + /** + * Sets the querystring to literally what you supply + * + * @param string $querystring The querystring data. Should be of the format foo=bar&x=y etc + * @access public + */ + function addRawQueryString($querystring) + { + $this->querystring = $this->_parseRawQueryString($querystring); + } + + /** + * Returns flat querystring + * + * @return string Querystring + * @access public + */ + function getQueryString() + { + if (!empty($this->querystring)) { + foreach ($this->querystring as $name => $value) { + if (is_array($value)) { + foreach ($value as $k => $v) { + $querystring[] = $this->useBrackets ? sprintf('%s[%s]=%s', $name, $k, $v) : ($name . '=' . $v); + } + } elseif (!is_null($value)) { + $querystring[] = $name . '=' . $value; + } else { + $querystring[] = $name; + } + } + $querystring = implode(ini_get('arg_separator.output'), $querystring); + } else { + $querystring = ''; + } + + return $querystring; + } + + /** + * Parses raw querystring and returns an array of it + * + * @param string $querystring The querystring to parse + * @return array An array of the querystring data + * @access private + */ + function _parseRawQuerystring($querystring) + { + $parts = preg_split('/[' . preg_quote(ini_get('arg_separator.input'), '/') . ']/', $querystring, -1, PREG_SPLIT_NO_EMPTY); + $return = array(); + + foreach ($parts as $part) { + if (strpos($part, '=') !== false) { + $value = substr($part, strpos($part, '=') + 1); + $key = substr($part, 0, strpos($part, '=')); + } else { + $value = null; + $key = $part; + } + if (substr($key, -2) == '[]') { + $key = substr($key, 0, -2); + if (@!is_array($return[$key])) { + $return[$key] = array(); + $return[$key][] = $value; + } else { + $return[$key][] = $value; + } + } elseif (!$this->useBrackets AND !empty($return[$key])) { + $return[$key] = (array)$return[$key]; + $return[$key][] = $value; + } else { + $return[$key] = $value; + } + } + + return $return; + } + + /** + * Resolves //, ../ and ./ from a path and returns + * the result. Eg: + * + * /foo/bar/../boo.php => /foo/boo.php + * /foo/bar/../../boo.php => /boo.php + * /foo/bar/.././/boo.php => /foo/boo.php + * + * This method can also be called statically. + * + * @param string $url URL path to resolve + * @return string The result + */ + function resolvePath($path) + { + $path = explode('/', str_replace('//', '/', $path)); + + for ($i=0; $i 1 OR ($i == 1 AND $path[0] != '') ) ) { + unset($path[$i]); + unset($path[$i-1]); + $path = array_values($path); + $i -= 2; + + } elseif ($path[$i] == '..' AND $i == 1 AND $path[0] == '') { + unset($path[$i]); + $path = array_values($path); + $i--; + + } else { + continue; + } + } + + return implode('/', $path); + } + + /** + * Returns the standard port number for a protocol + * + * @param string $scheme The protocol to lookup + * @return integer Port number or NULL if no scheme matches + * + * @author Philippe Jausions + */ + function getStandardPort($scheme) + { + switch (strtolower($scheme)) { + case 'http': return 80; + case 'https': return 443; + case 'ftp': return 21; + case 'imap': return 143; + case 'imaps': return 993; + case 'pop3': return 110; + case 'pop3s': return 995; + default: return null; + } + } + + /** + * Forces the URL to a particular protocol + * + * @param string $protocol Protocol to force the URL to + * @param integer $port Optional port (standard port is used by default) + */ + function setProtocol($protocol, $port = null) + { + $this->protocol = $protocol; + $this->port = is_null($port) ? $this->getStandardPort() : $port; + } + +} +?> diff --git a/libs/PEAR/PEAR.php b/libs/PEAR/PEAR.php new file mode 100644 index 000000000..d2d41b274 --- /dev/null +++ b/libs/PEAR/PEAR.php @@ -0,0 +1,1108 @@ + + * @author Stig Bakken + * @author Tomas V.V.Cox + * @author Greg Beaver + * @copyright 1997-2006 The PHP Group + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version CVS: $Id: PEAR.php,v 1.101 2006/04/25 02:41:03 cellog Exp $ + * @link http://pear.php.net/package/PEAR + * @since File available since Release 0.1 + */ + +/**#@+ + * ERROR constants + */ +define('PEAR_ERROR_RETURN', 1); +define('PEAR_ERROR_PRINT', 2); +define('PEAR_ERROR_TRIGGER', 4); +define('PEAR_ERROR_DIE', 8); +define('PEAR_ERROR_CALLBACK', 16); +/** + * WARNING: obsolete + * @deprecated + */ +define('PEAR_ERROR_EXCEPTION', 32); +/**#@-*/ +define('PEAR_ZE2', (function_exists('version_compare') && + version_compare(zend_version(), "2-dev", "ge"))); + +if (substr(PHP_OS, 0, 3) == 'WIN') { + define('OS_WINDOWS', true); + define('OS_UNIX', false); + define('PEAR_OS', 'Windows'); +} else { + define('OS_WINDOWS', false); + define('OS_UNIX', true); + define('PEAR_OS', 'Unix'); // blatant assumption +} + +// instant backwards compatibility +if (!defined('PATH_SEPARATOR')) { + if (OS_WINDOWS) { + define('PATH_SEPARATOR', ';'); + } else { + define('PATH_SEPARATOR', ':'); + } +} + +$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; +$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; +$GLOBALS['_PEAR_destructor_object_list'] = array(); +$GLOBALS['_PEAR_shutdown_funcs'] = array(); +$GLOBALS['_PEAR_error_handler_stack'] = array(); + +@ini_set('track_errors', true); + +/** + * Base class for other PEAR classes. Provides rudimentary + * emulation of destructors. + * + * If you want a destructor in your class, inherit PEAR and make a + * destructor method called _yourclassname (same name as the + * constructor, but with a "_" prefix). Also, in your constructor you + * have to call the PEAR constructor: $this->PEAR();. + * The destructor method will be called without parameters. Note that + * at in some SAPI implementations (such as Apache), any output during + * the request shutdown (in which destructors are called) seems to be + * discarded. If you need to get any debug information from your + * destructor, use error_log(), syslog() or something similar. + * + * IMPORTANT! To use the emulated destructors you need to create the + * objects by reference: $obj =& new PEAR_child; + * + * @category pear + * @package PEAR + * @author Stig Bakken + * @author Tomas V.V. Cox + * @author Greg Beaver + * @copyright 1997-2006 The PHP Group + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version Release: 1.5.0 + * @link http://pear.php.net/package/PEAR + * @see PEAR_Error + * @since Class available since PHP 4.0.2 + * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear + */ +class PEAR +{ + // {{{ properties + + /** + * Whether to enable internal debug messages. + * + * @var bool + * @access private + */ + var $_debug = false; + + /** + * Default error mode for this object. + * + * @var int + * @access private + */ + var $_default_error_mode = null; + + /** + * Default error options used for this object when error mode + * is PEAR_ERROR_TRIGGER. + * + * @var int + * @access private + */ + var $_default_error_options = null; + + /** + * Default error handler (callback) for this object, if error mode is + * PEAR_ERROR_CALLBACK. + * + * @var string + * @access private + */ + var $_default_error_handler = ''; + + /** + * Which class to use for error objects. + * + * @var string + * @access private + */ + var $_error_class = 'PEAR_Error'; + + /** + * An array of expected errors. + * + * @var array + * @access private + */ + var $_expected_errors = array(); + + // }}} + + // {{{ constructor + + /** + * Constructor. Registers this object in + * $_PEAR_destructor_object_list for destructor emulation if a + * destructor object exists. + * + * @param string $error_class (optional) which class to use for + * error objects, defaults to PEAR_Error. + * @access public + * @return void + */ + function PEAR($error_class = null) + { + $classname = strtolower(get_class($this)); + if ($this->_debug) { + print "PEAR constructor called, class=$classname\n"; + } + if ($error_class !== null) { + $this->_error_class = $error_class; + } + while ($classname && strcasecmp($classname, "pear")) { + $destructor = "_$classname"; + if (method_exists($this, $destructor)) { + global $_PEAR_destructor_object_list; + $_PEAR_destructor_object_list[] = &$this; + if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { + register_shutdown_function("_PEAR_call_destructors"); + $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; + } + break; + } else { + $classname = get_parent_class($classname); + } + } + } + + // }}} + // {{{ destructor + + /** + * Destructor (the emulated type of...). Does nothing right now, + * but is included for forward compatibility, so subclass + * destructors should always call it. + * + * See the note in the class desciption about output from + * destructors. + * + * @access public + * @return void + */ + function _PEAR() { + if ($this->_debug) { + printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); + } + } + + // }}} + // {{{ getStaticProperty() + + /** + * If you have a class that's mostly/entirely static, and you need static + * properties, you can use this method to simulate them. Eg. in your method(s) + * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); + * You MUST use a reference, or they will not persist! + * + * @access public + * @param string $class The calling classname, to prevent clashes + * @param string $var The variable to retrieve. + * @return mixed A reference to the variable. If not set it will be + * auto initialised to NULL. + */ + function &getStaticProperty($class, $var) + { + static $properties; + if (!isset($properties[$class])) { + $properties[$class] = array(); + } + if (!array_key_exists($var, $properties[$class])) { + $properties[$class][$var] = null; + } + return $properties[$class][$var]; + } + + // }}} + // {{{ registerShutdownFunc() + + /** + * Use this function to register a shutdown method for static + * classes. + * + * @access public + * @param mixed $func The function name (or array of class/method) to call + * @param mixed $args The arguments to pass to the function + * @return void + */ + function registerShutdownFunc($func, $args = array()) + { + // if we are called statically, there is a potential + // that no shutdown func is registered. Bug #6445 + if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { + register_shutdown_function("_PEAR_call_destructors"); + $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; + } + $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); + } + + // }}} + // {{{ isError() + + /** + * Tell whether a value is a PEAR error. + * + * @param mixed $data the value to test + * @param int $code if $data is an error object, return true + * only if $code is a string and + * $obj->getMessage() == $code or + * $code is an integer and $obj->getCode() == $code + * @access public + * @return bool true if parameter is an error + */ + function isError($data, $code = null) + { + if (is_a($data, 'PEAR_Error')) { + if (is_null($code)) { + return true; + } elseif (is_string($code)) { + return $data->getMessage() == $code; + } else { + return $data->getCode() == $code; + } + } + return false; + } + + // }}} + // {{{ setErrorHandling() + + /** + * Sets how errors generated by this object should be handled. + * Can be invoked both in objects and statically. If called + * statically, setErrorHandling sets the default behaviour for all + * PEAR objects. If called in an object, setErrorHandling sets + * the default behaviour for that object. + * + * @param int $mode + * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, + * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, + * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. + * + * @param mixed $options + * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one + * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). + * + * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected + * to be the callback function or method. A callback + * function is a string with the name of the function, a + * callback method is an array of two elements: the element + * at index 0 is the object, and the element at index 1 is + * the name of the method to call in the object. + * + * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is + * a printf format string used when printing the error + * message. + * + * @access public + * @return void + * @see PEAR_ERROR_RETURN + * @see PEAR_ERROR_PRINT + * @see PEAR_ERROR_TRIGGER + * @see PEAR_ERROR_DIE + * @see PEAR_ERROR_CALLBACK + * @see PEAR_ERROR_EXCEPTION + * + * @since PHP 4.0.5 + */ + + function setErrorHandling($mode = null, $options = null) + { + if (isset($this) && is_a($this, 'PEAR')) { + $setmode = &$this->_default_error_mode; + $setoptions = &$this->_default_error_options; + } else { + $setmode = &$GLOBALS['_PEAR_default_error_mode']; + $setoptions = &$GLOBALS['_PEAR_default_error_options']; + } + + switch ($mode) { + case PEAR_ERROR_EXCEPTION: + case PEAR_ERROR_RETURN: + case PEAR_ERROR_PRINT: + case PEAR_ERROR_TRIGGER: + case PEAR_ERROR_DIE: + case null: + $setmode = $mode; + $setoptions = $options; + break; + + case PEAR_ERROR_CALLBACK: + $setmode = $mode; + // class/object method callback + if (is_callable($options)) { + $setoptions = $options; + } else { + trigger_error("invalid error callback", E_USER_WARNING); + } + break; + + default: + trigger_error("invalid error mode", E_USER_WARNING); + break; + } + } + + // }}} + // {{{ expectError() + + /** + * This method is used to tell which errors you expect to get. + * Expected errors are always returned with error mode + * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, + * and this method pushes a new element onto it. The list of + * expected errors are in effect until they are popped off the + * stack with the popExpect() method. + * + * Note that this method can not be called statically + * + * @param mixed $code a single error code or an array of error codes to expect + * + * @return int the new depth of the "expected errors" stack + * @access public + */ + function expectError($code = '*') + { + if (is_array($code)) { + array_push($this->_expected_errors, $code); + } else { + array_push($this->_expected_errors, array($code)); + } + return sizeof($this->_expected_errors); + } + + // }}} + // {{{ popExpect() + + /** + * This method pops one element off the expected error codes + * stack. + * + * @return array the list of error codes that were popped + */ + function popExpect() + { + return array_pop($this->_expected_errors); + } + + // }}} + // {{{ _checkDelExpect() + + /** + * This method checks unsets an error code if available + * + * @param mixed error code + * @return bool true if the error code was unset, false otherwise + * @access private + * @since PHP 4.3.0 + */ + function _checkDelExpect($error_code) + { + $deleted = false; + + foreach ($this->_expected_errors AS $key => $error_array) { + if (in_array($error_code, $error_array)) { + unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); + $deleted = true; + } + + // clean up empty arrays + if (0 == count($this->_expected_errors[$key])) { + unset($this->_expected_errors[$key]); + } + } + return $deleted; + } + + // }}} + // {{{ delExpect() + + /** + * This method deletes all occurences of the specified element from + * the expected error codes stack. + * + * @param mixed $error_code error code that should be deleted + * @return mixed list of error codes that were deleted or error + * @access public + * @since PHP 4.3.0 + */ + function delExpect($error_code) + { + $deleted = false; + + if ((is_array($error_code) && (0 != count($error_code)))) { + // $error_code is a non-empty array here; + // we walk through it trying to unset all + // values + foreach($error_code as $key => $error) { + if ($this->_checkDelExpect($error)) { + $deleted = true; + } else { + $deleted = false; + } + } + return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME + } elseif (!empty($error_code)) { + // $error_code comes alone, trying to unset it + if ($this->_checkDelExpect($error_code)) { + return true; + } else { + return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME + } + } else { + // $error_code is empty + return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME + } + } + + // }}} + // {{{ raiseError() + + /** + * This method is a wrapper that returns an instance of the + * configured error class with this object's default error + * handling applied. If the $mode and $options parameters are not + * specified, the object's defaults are used. + * + * @param mixed $message a text error message or a PEAR error object + * + * @param int $code a numeric error code (it is up to your class + * to define these if you want to use codes) + * + * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, + * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, + * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION. + * + * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter + * specifies the PHP-internal error level (one of + * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). + * If $mode is PEAR_ERROR_CALLBACK, this + * parameter specifies the callback function or + * method. In other error modes this parameter + * is ignored. + * + * @param string $userinfo If you need to pass along for example debug + * information, this parameter is meant for that. + * + * @param string $error_class The returned error object will be + * instantiated from this class, if specified. + * + * @param bool $skipmsg If true, raiseError will only pass error codes, + * the error message parameter will be dropped. + * + * @access public + * @return object a PEAR error object + * @see PEAR::setErrorHandling + * @since PHP 4.0.5 + */ + function &raiseError($message = null, + $code = null, + $mode = null, + $options = null, + $userinfo = null, + $error_class = null, + $skipmsg = false) + { + // The error is yet a PEAR error object + if (is_object($message)) { + $code = $message->getCode(); + $userinfo = $message->getUserInfo(); + $error_class = $message->getType(); + $message->error_message_prefix = ''; + $message = $message->getMessage(); + } + + if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { + if ($exp[0] == "*" || + (is_int(reset($exp)) && in_array($code, $exp)) || + (is_string(reset($exp)) && in_array($message, $exp))) { + $mode = PEAR_ERROR_RETURN; + } + } + // No mode given, try global ones + if ($mode === null) { + // Class error handler + if (isset($this) && isset($this->_default_error_mode)) { + $mode = $this->_default_error_mode; + $options = $this->_default_error_options; + // Global error handler + } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { + $mode = $GLOBALS['_PEAR_default_error_mode']; + $options = $GLOBALS['_PEAR_default_error_options']; + } + } + + if ($error_class !== null) { + $ec = $error_class; + } elseif (isset($this) && isset($this->_error_class)) { + $ec = $this->_error_class; + } else { + $ec = 'PEAR_Error'; + } + if ($skipmsg) { + $a = &new $ec($code, $mode, $options, $userinfo); + return $a; + } else { + $a = &new $ec($message, $code, $mode, $options, $userinfo); + return $a; + } + } + + // }}} + // {{{ throwError() + + /** + * Simpler form of raiseError with fewer options. In most cases + * message, code and userinfo are enough. + * + * @param string $message + * + */ + function &throwError($message = null, + $code = null, + $userinfo = null) + { + if (isset($this) && is_a($this, 'PEAR')) { + $a = &$this->raiseError($message, $code, null, null, $userinfo); + return $a; + } else { + $a = &PEAR::raiseError($message, $code, null, null, $userinfo); + return $a; + } + } + + // }}} + function staticPushErrorHandling($mode, $options = null) + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + $def_mode = &$GLOBALS['_PEAR_default_error_mode']; + $def_options = &$GLOBALS['_PEAR_default_error_options']; + $stack[] = array($def_mode, $def_options); + switch ($mode) { + case PEAR_ERROR_EXCEPTION: + case PEAR_ERROR_RETURN: + case PEAR_ERROR_PRINT: + case PEAR_ERROR_TRIGGER: + case PEAR_ERROR_DIE: + case null: + $def_mode = $mode; + $def_options = $options; + break; + + case PEAR_ERROR_CALLBACK: + $def_mode = $mode; + // class/object method callback + if (is_callable($options)) { + $def_options = $options; + } else { + trigger_error("invalid error callback", E_USER_WARNING); + } + break; + + default: + trigger_error("invalid error mode", E_USER_WARNING); + break; + } + $stack[] = array($mode, $options); + return true; + } + + function staticPopErrorHandling() + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + $setmode = &$GLOBALS['_PEAR_default_error_mode']; + $setoptions = &$GLOBALS['_PEAR_default_error_options']; + array_pop($stack); + list($mode, $options) = $stack[sizeof($stack) - 1]; + array_pop($stack); + switch ($mode) { + case PEAR_ERROR_EXCEPTION: + case PEAR_ERROR_RETURN: + case PEAR_ERROR_PRINT: + case PEAR_ERROR_TRIGGER: + case PEAR_ERROR_DIE: + case null: + $setmode = $mode; + $setoptions = $options; + break; + + case PEAR_ERROR_CALLBACK: + $setmode = $mode; + // class/object method callback + if (is_callable($options)) { + $setoptions = $options; + } else { + trigger_error("invalid error callback", E_USER_WARNING); + } + break; + + default: + trigger_error("invalid error mode", E_USER_WARNING); + break; + } + return true; + } + + // {{{ pushErrorHandling() + + /** + * Push a new error handler on top of the error handler options stack. With this + * you can easily override the actual error handler for some code and restore + * it later with popErrorHandling. + * + * @param mixed $mode (same as setErrorHandling) + * @param mixed $options (same as setErrorHandling) + * + * @return bool Always true + * + * @see PEAR::setErrorHandling + */ + function pushErrorHandling($mode, $options = null) + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + if (isset($this) && is_a($this, 'PEAR')) { + $def_mode = &$this->_default_error_mode; + $def_options = &$this->_default_error_options; + } else { + $def_mode = &$GLOBALS['_PEAR_default_error_mode']; + $def_options = &$GLOBALS['_PEAR_default_error_options']; + } + $stack[] = array($def_mode, $def_options); + + if (isset($this) && is_a($this, 'PEAR')) { + $this->setErrorHandling($mode, $options); + } else { + PEAR::setErrorHandling($mode, $options); + } + $stack[] = array($mode, $options); + return true; + } + + // }}} + // {{{ popErrorHandling() + + /** + * Pop the last error handler used + * + * @return bool Always true + * + * @see PEAR::pushErrorHandling + */ + function popErrorHandling() + { + $stack = &$GLOBALS['_PEAR_error_handler_stack']; + array_pop($stack); + list($mode, $options) = $stack[sizeof($stack) - 1]; + array_pop($stack); + if (isset($this) && is_a($this, 'PEAR')) { + $this->setErrorHandling($mode, $options); + } else { + PEAR::setErrorHandling($mode, $options); + } + return true; + } + + // }}} + // {{{ loadExtension() + + /** + * OS independant PHP extension load. Remember to take care + * on the correct extension name for case sensitive OSes. + * + * @param string $ext The extension name + * @return bool Success or not on the dl() call + */ + function loadExtension($ext) + { + if (!extension_loaded($ext)) { + // if either returns true dl() will produce a FATAL error, stop that + if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) { + return false; + } + if (OS_WINDOWS) { + $suffix = '.dll'; + } elseif (PHP_OS == 'HP-UX') { + $suffix = '.sl'; + } elseif (PHP_OS == 'AIX') { + $suffix = '.a'; + } elseif (PHP_OS == 'OSX') { + $suffix = '.bundle'; + } else { + $suffix = '.so'; + } + return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); + } + return true; + } + + // }}} +} + +// {{{ _PEAR_call_destructors() + +function _PEAR_call_destructors() +{ + global $_PEAR_destructor_object_list; + if (is_array($_PEAR_destructor_object_list) && + sizeof($_PEAR_destructor_object_list)) + { + reset($_PEAR_destructor_object_list); + if (PEAR::getStaticProperty('PEAR', 'destructlifo')) { + $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); + } + while (list($k, $objref) = each($_PEAR_destructor_object_list)) { + $classname = get_class($objref); + while ($classname) { + $destructor = "_$classname"; + if (method_exists($objref, $destructor)) { + $objref->$destructor(); + break; + } else { + $classname = get_parent_class($classname); + } + } + } + // Empty the object list to ensure that destructors are + // not called more than once. + $_PEAR_destructor_object_list = array(); + } + + // Now call the shutdown functions + if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) { + foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { + call_user_func_array($value[0], $value[1]); + } + } +} + +// }}} +/** + * Standard PEAR error class for PHP 4 + * + * This class is supserseded by {@link PEAR_Exception} in PHP 5 + * + * @category pear + * @package PEAR + * @author Stig Bakken + * @author Tomas V.V. Cox + * @author Gregory Beaver + * @copyright 1997-2006 The PHP Group + * @license http://www.php.net/license/3_0.txt PHP License 3.0 + * @version Release: 1.5.0 + * @link http://pear.php.net/manual/en/core.pear.pear-error.php + * @see PEAR::raiseError(), PEAR::throwError() + * @since Class available since PHP 4.0.2 + */ +class PEAR_Error +{ + // {{{ properties + + var $error_message_prefix = ''; + var $mode = PEAR_ERROR_RETURN; + var $level = E_USER_NOTICE; + var $code = -1; + var $message = ''; + var $userinfo = ''; + var $backtrace = null; + + // }}} + // {{{ constructor + + /** + * PEAR_Error constructor + * + * @param string $message message + * + * @param int $code (optional) error code + * + * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN, + * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER, + * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION + * + * @param mixed $options (optional) error level, _OR_ in the case of + * PEAR_ERROR_CALLBACK, the callback function or object/method + * tuple. + * + * @param string $userinfo (optional) additional user/debug info + * + * @access public + * + */ + function PEAR_Error($message = 'unknown error', $code = null, + $mode = null, $options = null, $userinfo = null) + { + if ($mode === null) { + $mode = PEAR_ERROR_RETURN; + } + $this->message = $message; + $this->code = $code; + $this->mode = $mode; + $this->userinfo = $userinfo; + if (!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) { + $this->backtrace = debug_backtrace(); + if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) { + unset($this->backtrace[0]['object']); + } + } + if ($mode & PEAR_ERROR_CALLBACK) { + $this->level = E_USER_NOTICE; + $this->callback = $options; + } else { + if ($options === null) { + $options = E_USER_NOTICE; + } + $this->level = $options; + $this->callback = null; + } + if ($this->mode & PEAR_ERROR_PRINT) { + if (is_null($options) || is_int($options)) { + $format = "%s"; + } else { + $format = $options; + } + printf($format, $this->getMessage()); + } + if ($this->mode & PEAR_ERROR_TRIGGER) { + trigger_error($this->getMessage(), $this->level); + } + if ($this->mode & PEAR_ERROR_DIE) { + $msg = $this->getMessage(); + if (is_null($options) || is_int($options)) { + $format = "%s"; + if (substr($msg, -1) != "\n") { + $msg .= "\n"; + } + } else { + $format = $options; + } + die(sprintf($format, $msg)); + } + if ($this->mode & PEAR_ERROR_CALLBACK) { + if (is_callable($this->callback)) { + call_user_func($this->callback, $this); + } + } + if ($this->mode & PEAR_ERROR_EXCEPTION) { + trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING); + eval('$e = new Exception($this->message, $this->code);throw($e);'); + } + } + + // }}} + // {{{ getMode() + + /** + * Get the error mode from an error object. + * + * @return int error mode + * @access public + */ + function getMode() { + return $this->mode; + } + + // }}} + // {{{ getCallback() + + /** + * Get the callback function/method from an error object. + * + * @return mixed callback function or object/method array + * @access public + */ + function getCallback() { + return $this->callback; + } + + // }}} + // {{{ getMessage() + + + /** + * Get the error message from an error object. + * + * @return string full error message + * @access public + */ + function getMessage() + { + return ($this->error_message_prefix . $this->message); + } + + + // }}} + // {{{ getCode() + + /** + * Get error code from an error object + * + * @return int error code + * @access public + */ + function getCode() + { + return $this->code; + } + + // }}} + // {{{ getType() + + /** + * Get the name of this error/exception. + * + * @return string error/exception name (type) + * @access public + */ + function getType() + { + return get_class($this); + } + + // }}} + // {{{ getUserInfo() + + /** + * Get additional user-supplied information. + * + * @return string user-supplied information + * @access public + */ + function getUserInfo() + { + return $this->userinfo; + } + + // }}} + // {{{ getDebugInfo() + + /** + * Get additional debug information supplied by the application. + * + * @return string debug information + * @access public + */ + function getDebugInfo() + { + return $this->getUserInfo(); + } + + // }}} + // {{{ getBacktrace() + + /** + * Get the call backtrace from where the error was generated. + * Supported with PHP 4.3.0 or newer. + * + * @param int $frame (optional) what frame to fetch + * @return array Backtrace, or NULL if not available. + * @access public + */ + function getBacktrace($frame = null) + { + if (defined('PEAR_IGNORE_BACKTRACE')) { + return null; + } + if ($frame === null) { + return $this->backtrace; + } + return $this->backtrace[$frame]; + } + + // }}} + // {{{ addUserInfo() + + function addUserInfo($info) + { + if (empty($this->userinfo)) { + $this->userinfo = $info; + } else { + $this->userinfo .= " ** $info"; + } + } + + // }}} + // {{{ toString() + + /** + * Make a string representation of this object. + * + * @return string a string with an object summary + * @access public + */ + function toString() { + $modes = array(); + $levels = array(E_USER_NOTICE => 'notice', + E_USER_WARNING => 'warning', + E_USER_ERROR => 'error'); + if ($this->mode & PEAR_ERROR_CALLBACK) { + if (is_array($this->callback)) { + $callback = (is_object($this->callback[0]) ? + strtolower(get_class($this->callback[0])) : + $this->callback[0]) . '::' . + $this->callback[1]; + } else { + $callback = $this->callback; + } + return sprintf('[%s: message="%s" code=%d mode=callback '. + 'callback=%s prefix="%s" info="%s"]', + strtolower(get_class($this)), $this->message, $this->code, + $callback, $this->error_message_prefix, + $this->userinfo); + } + if ($this->mode & PEAR_ERROR_PRINT) { + $modes[] = 'print'; + } + if ($this->mode & PEAR_ERROR_TRIGGER) { + $modes[] = 'trigger'; + } + if ($this->mode & PEAR_ERROR_DIE) { + $modes[] = 'die'; + } + if ($this->mode & PEAR_ERROR_RETURN) { + $modes[] = 'return'; + } + return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. + 'prefix="%s" info="%s"]', + strtolower(get_class($this)), $this->message, $this->code, + implode("|", $modes), $levels[$this->level], + $this->error_message_prefix, + $this->userinfo); + } + + // }}} +} + +/* + * Local Variables: + * mode: php + * tab-width: 4 + * c-basic-offset: 4 + * End: + */ +?> From d3169308ab8d5ff4c60f348824a97ee8b8543d55 Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 7 Jan 2008 02:19:40 +0000 Subject: [PATCH 032/278] =?UTF-8?q?PEAR=20link=EB=A5=BC=20libs=20=EB=B0=91?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3473 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/springnote/lib/PEAR/HTTP/Request.php | 1461 ----------------- .../lib/PEAR/HTTP/Request/Listener.php | 106 -- modules/springnote/lib/PEAR/Net/Socket.php | 528 ------ modules/springnote/lib/PEAR/Net/URL.php | 410 ----- modules/springnote/lib/PEAR/PEAR.php | 1108 ------------- modules/springnote/springnote.model.php | 2 +- 6 files changed, 1 insertion(+), 3614 deletions(-) delete mode 100644 modules/springnote/lib/PEAR/HTTP/Request.php delete mode 100644 modules/springnote/lib/PEAR/HTTP/Request/Listener.php delete mode 100644 modules/springnote/lib/PEAR/Net/Socket.php delete mode 100644 modules/springnote/lib/PEAR/Net/URL.php delete mode 100644 modules/springnote/lib/PEAR/PEAR.php diff --git a/modules/springnote/lib/PEAR/HTTP/Request.php b/modules/springnote/lib/PEAR/HTTP/Request.php deleted file mode 100644 index 67062ccd6..000000000 --- a/modules/springnote/lib/PEAR/HTTP/Request.php +++ /dev/null @@ -1,1461 +0,0 @@ - - * @author Alexey Borzov - * @copyright 2002-2007 Richard Heyes - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Request.php,v 1.55 2007/05/18 19:20:12 avb Exp $ - * @link http://pear.php.net/package/HTTP_Request/ - */ - -/** - * PEAR and PEAR_Error classes (for error handling) - */ -require_once 'PEAR.php'; -/** - * Socket class - */ -require_once 'Net/Socket.php'; -/** - * URL handling class - */ -require_once 'Net/URL.php'; - -/**#@+ - * Constants for HTTP request methods - */ -define('HTTP_REQUEST_METHOD_GET', 'GET', true); -define('HTTP_REQUEST_METHOD_HEAD', 'HEAD', true); -define('HTTP_REQUEST_METHOD_POST', 'POST', true); -define('HTTP_REQUEST_METHOD_PUT', 'PUT', true); -define('HTTP_REQUEST_METHOD_DELETE', 'DELETE', true); -define('HTTP_REQUEST_METHOD_OPTIONS', 'OPTIONS', true); -define('HTTP_REQUEST_METHOD_TRACE', 'TRACE', true); -/**#@-*/ - -/**#@+ - * Constants for HTTP protocol versions - */ -define('HTTP_REQUEST_HTTP_VER_1_0', '1.0', true); -define('HTTP_REQUEST_HTTP_VER_1_1', '1.1', true); -/**#@-*/ - -if (extension_loaded('mbstring') && (2 & ini_get('mbstring.func_overload'))) { - /** - * Whether string functions are overloaded by their mbstring equivalents - */ - define('HTTP_REQUEST_MBSTRING', true); -} else { - /** - * @ignore - */ - define('HTTP_REQUEST_MBSTRING', false); -} - -/** - * Class for performing HTTP requests - * - * Simple example (fetches yahoo.com and displays it): - * - * $a = &new HTTP_Request('http://www.yahoo.com/'); - * $a->sendRequest(); - * echo $a->getResponseBody(); - * - * - * @category HTTP - * @package HTTP_Request - * @author Richard Heyes - * @author Alexey Borzov - * @version Release: 1.4.1 - */ -class HTTP_Request -{ - /**#@+ - * @access private - */ - /** - * Instance of Net_URL - * @var Net_URL - */ - var $_url; - - /** - * Type of request - * @var string - */ - var $_method; - - /** - * HTTP Version - * @var string - */ - var $_http; - - /** - * Request headers - * @var array - */ - var $_requestHeaders; - - /** - * Basic Auth Username - * @var string - */ - var $_user; - - /** - * Basic Auth Password - * @var string - */ - var $_pass; - - /** - * Socket object - * @var Net_Socket - */ - var $_sock; - - /** - * Proxy server - * @var string - */ - var $_proxy_host; - - /** - * Proxy port - * @var integer - */ - var $_proxy_port; - - /** - * Proxy username - * @var string - */ - var $_proxy_user; - - /** - * Proxy password - * @var string - */ - var $_proxy_pass; - - /** - * Post data - * @var array - */ - var $_postData; - - /** - * Request body - * @var string - */ - var $_body; - - /** - * A list of methods that MUST NOT have a request body, per RFC 2616 - * @var array - */ - var $_bodyDisallowed = array('TRACE'); - - /** - * Files to post - * @var array - */ - var $_postFiles = array(); - - /** - * Connection timeout. - * @var float - */ - var $_timeout; - - /** - * HTTP_Response object - * @var HTTP_Response - */ - var $_response; - - /** - * Whether to allow redirects - * @var boolean - */ - var $_allowRedirects; - - /** - * Maximum redirects allowed - * @var integer - */ - var $_maxRedirects; - - /** - * Current number of redirects - * @var integer - */ - var $_redirects; - - /** - * Whether to append brackets [] to array variables - * @var bool - */ - var $_useBrackets = true; - - /** - * Attached listeners - * @var array - */ - var $_listeners = array(); - - /** - * Whether to save response body in response object property - * @var bool - */ - var $_saveBody = true; - - /** - * Timeout for reading from socket (array(seconds, microseconds)) - * @var array - */ - var $_readTimeout = null; - - /** - * Options to pass to Net_Socket::connect. See stream_context_create - * @var array - */ - var $_socketOptions = null; - /**#@-*/ - - /** - * Constructor - * - * Sets up the object - * @param string The url to fetch/access - * @param array Associative array of parameters which can have the following keys: - *
    - *
  • method - Method to use, GET, POST etc (string)
  • - *
  • http - HTTP Version to use, 1.0 or 1.1 (string)
  • - *
  • user - Basic Auth username (string)
  • - *
  • pass - Basic Auth password (string)
  • - *
  • proxy_host - Proxy server host (string)
  • - *
  • proxy_port - Proxy server port (integer)
  • - *
  • proxy_user - Proxy auth username (string)
  • - *
  • proxy_pass - Proxy auth password (string)
  • - *
  • timeout - Connection timeout in seconds (float)
  • - *
  • allowRedirects - Whether to follow redirects or not (bool)
  • - *
  • maxRedirects - Max number of redirects to follow (integer)
  • - *
  • useBrackets - Whether to append [] to array variable names (bool)
  • - *
  • saveBody - Whether to save response body in response object property (bool)
  • - *
  • readTimeout - Timeout for reading / writing data over the socket (array (seconds, microseconds))
  • - *
  • socketOptions - Options to pass to Net_Socket object (array)
  • - *
- * @access public - */ - function HTTP_Request($url = '', $params = array()) - { - $this->_method = HTTP_REQUEST_METHOD_GET; - $this->_http = HTTP_REQUEST_HTTP_VER_1_1; - $this->_requestHeaders = array(); - $this->_postData = array(); - $this->_body = null; - - $this->_user = null; - $this->_pass = null; - - $this->_proxy_host = null; - $this->_proxy_port = null; - $this->_proxy_user = null; - $this->_proxy_pass = null; - - $this->_allowRedirects = false; - $this->_maxRedirects = 3; - $this->_redirects = 0; - - $this->_timeout = null; - $this->_response = null; - - foreach ($params as $key => $value) { - $this->{'_' . $key} = $value; - } - - if (!empty($url)) { - $this->setURL($url); - } - - // Default useragent - $this->addHeader('User-Agent', 'PEAR HTTP_Request class ( http://pear.php.net/ )'); - - // We don't do keep-alives by default - $this->addHeader('Connection', 'close'); - - // Basic authentication - if (!empty($this->_user)) { - $this->addHeader('Authorization', 'Basic ' . base64_encode($this->_user . ':' . $this->_pass)); - } - - // Proxy authentication (see bug #5913) - if (!empty($this->_proxy_user)) { - $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($this->_proxy_user . ':' . $this->_proxy_pass)); - } - - // Use gzip encoding if possible - if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && extension_loaded('zlib')) { - $this->addHeader('Accept-Encoding', 'gzip'); - } - } - - /** - * Generates a Host header for HTTP/1.1 requests - * - * @access private - * @return string - */ - function _generateHostHeader() - { - if ($this->_url->port != 80 AND strcasecmp($this->_url->protocol, 'http') == 0) { - $host = $this->_url->host . ':' . $this->_url->port; - - } elseif ($this->_url->port != 443 AND strcasecmp($this->_url->protocol, 'https') == 0) { - $host = $this->_url->host . ':' . $this->_url->port; - - } elseif ($this->_url->port == 443 AND strcasecmp($this->_url->protocol, 'https') == 0 AND strpos($this->_url->url, ':443') !== false) { - $host = $this->_url->host . ':' . $this->_url->port; - - } else { - $host = $this->_url->host; - } - - return $host; - } - - /** - * Resets the object to its initial state (DEPRECATED). - * Takes the same parameters as the constructor. - * - * @param string $url The url to be requested - * @param array $params Associative array of parameters - * (see constructor for details) - * @access public - * @deprecated deprecated since 1.2, call the constructor if this is necessary - */ - function reset($url, $params = array()) - { - $this->HTTP_Request($url, $params); - } - - /** - * Sets the URL to be requested - * - * @param string The url to be requested - * @access public - */ - function setURL($url) - { - $this->_url = &new Net_URL($url, $this->_useBrackets); - - if (!empty($this->_url->user) || !empty($this->_url->pass)) { - $this->setBasicAuth($this->_url->user, $this->_url->pass); - } - - if (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http) { - $this->addHeader('Host', $this->_generateHostHeader()); - } - - // set '/' instead of empty path rather than check later (see bug #8662) - if (empty($this->_url->path)) { - $this->_url->path = '/'; - } - } - - /** - * Returns the current request URL - * - * @return string Current request URL - * @access public - */ - function getUrl() - { - return empty($this->_url)? '': $this->_url->getUrl(); - } - - /** - * Sets a proxy to be used - * - * @param string Proxy host - * @param int Proxy port - * @param string Proxy username - * @param string Proxy password - * @access public - */ - function setProxy($host, $port = 8080, $user = null, $pass = null) - { - $this->_proxy_host = $host; - $this->_proxy_port = $port; - $this->_proxy_user = $user; - $this->_proxy_pass = $pass; - - if (!empty($user)) { - $this->addHeader('Proxy-Authorization', 'Basic ' . base64_encode($user . ':' . $pass)); - } - } - - /** - * Sets basic authentication parameters - * - * @param string Username - * @param string Password - */ - function setBasicAuth($user, $pass) - { - $this->_user = $user; - $this->_pass = $pass; - - $this->addHeader('Authorization', 'Basic ' . base64_encode($user . ':' . $pass)); - } - - /** - * Sets the method to be used, GET, POST etc. - * - * @param string Method to use. Use the defined constants for this - * @access public - */ - function setMethod($method) - { - $this->_method = $method; - } - - /** - * Sets the HTTP version to use, 1.0 or 1.1 - * - * @param string Version to use. Use the defined constants for this - * @access public - */ - function setHttpVer($http) - { - $this->_http = $http; - } - - /** - * Adds a request header - * - * @param string Header name - * @param string Header value - * @access public - */ - function addHeader($name, $value) - { - $this->_requestHeaders[strtolower($name)] = $value; - } - - /** - * Removes a request header - * - * @param string Header name to remove - * @access public - */ - function removeHeader($name) - { - if (isset($this->_requestHeaders[strtolower($name)])) { - unset($this->_requestHeaders[strtolower($name)]); - } - } - - /** - * Adds a querystring parameter - * - * @param string Querystring parameter name - * @param string Querystring parameter value - * @param bool Whether the value is already urlencoded or not, default = not - * @access public - */ - function addQueryString($name, $value, $preencoded = false) - { - $this->_url->addQueryString($name, $value, $preencoded); - } - - /** - * Sets the querystring to literally what you supply - * - * @param string The querystring data. Should be of the format foo=bar&x=y etc - * @param bool Whether data is already urlencoded or not, default = already encoded - * @access public - */ - function addRawQueryString($querystring, $preencoded = true) - { - $this->_url->addRawQueryString($querystring, $preencoded); - } - - /** - * Adds postdata items - * - * @param string Post data name - * @param string Post data value - * @param bool Whether data is already urlencoded or not, default = not - * @access public - */ - function addPostData($name, $value, $preencoded = false) - { - if ($preencoded) { - $this->_postData[$name] = $value; - } else { - $this->_postData[$name] = $this->_arrayMapRecursive('urlencode', $value); - } - } - - /** - * Recursively applies the callback function to the value - * - * @param mixed Callback function - * @param mixed Value to process - * @access private - * @return mixed Processed value - */ - function _arrayMapRecursive($callback, $value) - { - if (!is_array($value)) { - return call_user_func($callback, $value); - } else { - $map = array(); - foreach ($value as $k => $v) { - $map[$k] = $this->_arrayMapRecursive($callback, $v); - } - return $map; - } - } - - /** - * Adds a file to upload - * - * This also changes content-type to 'multipart/form-data' for proper upload - * - * @access public - * @param string name of file-upload field - * @param mixed file name(s) - * @param mixed content-type(s) of file(s) being uploaded - * @return bool true on success - * @throws PEAR_Error - */ - function addFile($inputName, $fileName, $contentType = 'application/octet-stream') - { - if (!is_array($fileName) && !is_readable($fileName)) { - return PEAR::raiseError("File '{$fileName}' is not readable"); - } elseif (is_array($fileName)) { - foreach ($fileName as $name) { - if (!is_readable($name)) { - return PEAR::raiseError("File '{$name}' is not readable"); - } - } - } - $this->addHeader('Content-Type', 'multipart/form-data'); - $this->_postFiles[$inputName] = array( - 'name' => $fileName, - 'type' => $contentType - ); - return true; - } - - /** - * Adds raw postdata (DEPRECATED) - * - * @param string The data - * @param bool Whether data is preencoded or not, default = already encoded - * @access public - * @deprecated deprecated since 1.3.0, method setBody() should be used instead - */ - function addRawPostData($postdata, $preencoded = true) - { - $this->_body = $preencoded ? $postdata : urlencode($postdata); - } - - /** - * Sets the request body (for POST, PUT and similar requests) - * - * @param string Request body - * @access public - */ - function setBody($body) - { - $this->_body = $body; - } - - /** - * Clears any postdata that has been added (DEPRECATED). - * - * Useful for multiple request scenarios. - * - * @access public - * @deprecated deprecated since 1.2 - */ - function clearPostData() - { - $this->_postData = null; - } - - /** - * Appends a cookie to "Cookie:" header - * - * @param string $name cookie name - * @param string $value cookie value - * @access public - */ - function addCookie($name, $value) - { - $cookies = isset($this->_requestHeaders['cookie']) ? $this->_requestHeaders['cookie']. '; ' : ''; - $this->addHeader('Cookie', $cookies . $name . '=' . $value); - } - - /** - * Clears any cookies that have been added (DEPRECATED). - * - * Useful for multiple request scenarios - * - * @access public - * @deprecated deprecated since 1.2 - */ - function clearCookies() - { - $this->removeHeader('Cookie'); - } - - /** - * Sends the request - * - * @access public - * @param bool Whether to store response body in Response object property, - * set this to false if downloading a LARGE file and using a Listener - * @return mixed PEAR error on error, true otherwise - */ - function sendRequest($saveBody = true) - { - if (!is_a($this->_url, 'Net_URL')) { - return PEAR::raiseError('No URL given.'); - } - - $host = isset($this->_proxy_host) ? $this->_proxy_host : $this->_url->host; - $port = isset($this->_proxy_port) ? $this->_proxy_port : $this->_url->port; - - // 4.3.0 supports SSL connections using OpenSSL. The function test determines - // we running on at least 4.3.0 - if (strcasecmp($this->_url->protocol, 'https') == 0 AND function_exists('file_get_contents') AND extension_loaded('openssl')) { - if (isset($this->_proxy_host)) { - return PEAR::raiseError('HTTPS proxies are not supported.'); - } - $host = 'ssl://' . $host; - } - - // magic quotes may fuck up file uploads and chunked response processing - $magicQuotes = ini_get('magic_quotes_runtime'); - ini_set('magic_quotes_runtime', false); - - // RFC 2068, section 19.7.1: A client MUST NOT send the Keep-Alive - // connection token to a proxy server... - if (isset($this->_proxy_host) && !empty($this->_requestHeaders['connection']) && - 'Keep-Alive' == $this->_requestHeaders['connection']) - { - $this->removeHeader('connection'); - } - - $keepAlive = (HTTP_REQUEST_HTTP_VER_1_1 == $this->_http && empty($this->_requestHeaders['connection'])) || - (!empty($this->_requestHeaders['connection']) && 'Keep-Alive' == $this->_requestHeaders['connection']); - $sockets = &PEAR::getStaticProperty('HTTP_Request', 'sockets'); - $sockKey = $host . ':' . $port; - unset($this->_sock); - - // There is a connected socket in the "static" property? - if ($keepAlive && !empty($sockets[$sockKey]) && - !empty($sockets[$sockKey]->fp)) - { - $this->_sock =& $sockets[$sockKey]; - $err = null; - } else { - $this->_notify('connect'); - $this->_sock =& new Net_Socket(); - $err = $this->_sock->connect($host, $port, null, $this->_timeout, $this->_socketOptions); - } - PEAR::isError($err) or $err = $this->_sock->write($this->_buildRequest()); - - if (!PEAR::isError($err)) { - if (!empty($this->_readTimeout)) { - $this->_sock->setTimeout($this->_readTimeout[0], $this->_readTimeout[1]); - } - - $this->_notify('sentRequest'); - - // Read the response - $this->_response = &new HTTP_Response($this->_sock, $this->_listeners); - $err = $this->_response->process( - $this->_saveBody && $saveBody, - HTTP_REQUEST_METHOD_HEAD != $this->_method - ); - - if ($keepAlive) { - $keepAlive = (isset($this->_response->_headers['content-length']) - || (isset($this->_response->_headers['transfer-encoding']) - && strtolower($this->_response->_headers['transfer-encoding']) == 'chunked')); - if ($keepAlive) { - if (isset($this->_response->_headers['connection'])) { - $keepAlive = strtolower($this->_response->_headers['connection']) == 'keep-alive'; - } else { - $keepAlive = 'HTTP/'.HTTP_REQUEST_HTTP_VER_1_1 == $this->_response->_protocol; - } - } - } - } - - ini_set('magic_quotes_runtime', $magicQuotes); - - if (PEAR::isError($err)) { - return $err; - } - - if (!$keepAlive) { - $this->disconnect(); - // Store the connected socket in "static" property - } elseif (empty($sockets[$sockKey]) || empty($sockets[$sockKey]->fp)) { - $sockets[$sockKey] =& $this->_sock; - } - - // Check for redirection - if ( $this->_allowRedirects - AND $this->_redirects <= $this->_maxRedirects - AND $this->getResponseCode() > 300 - AND $this->getResponseCode() < 399 - AND !empty($this->_response->_headers['location'])) { - - - $redirect = $this->_response->_headers['location']; - - // Absolute URL - if (preg_match('/^https?:\/\//i', $redirect)) { - $this->_url = &new Net_URL($redirect); - $this->addHeader('Host', $this->_generateHostHeader()); - // Absolute path - } elseif ($redirect{0} == '/') { - $this->_url->path = $redirect; - - // Relative path - } elseif (substr($redirect, 0, 3) == '../' OR substr($redirect, 0, 2) == './') { - if (substr($this->_url->path, -1) == '/') { - $redirect = $this->_url->path . $redirect; - } else { - $redirect = dirname($this->_url->path) . '/' . $redirect; - } - $redirect = Net_URL::resolvePath($redirect); - $this->_url->path = $redirect; - - // Filename, no path - } else { - if (substr($this->_url->path, -1) == '/') { - $redirect = $this->_url->path . $redirect; - } else { - $redirect = dirname($this->_url->path) . '/' . $redirect; - } - $this->_url->path = $redirect; - } - - $this->_redirects++; - return $this->sendRequest($saveBody); - - // Too many redirects - } elseif ($this->_allowRedirects AND $this->_redirects > $this->_maxRedirects) { - return PEAR::raiseError('Too many redirects'); - } - - return true; - } - - /** - * Disconnect the socket, if connected. Only useful if using Keep-Alive. - * - * @access public - */ - function disconnect() - { - if (!empty($this->_sock) && !empty($this->_sock->fp)) { - $this->_notify('disconnect'); - $this->_sock->disconnect(); - } - } - - /** - * Returns the response code - * - * @access public - * @return mixed Response code, false if not set - */ - function getResponseCode() - { - return isset($this->_response->_code) ? $this->_response->_code : false; - } - - /** - * Returns either the named header or all if no name given - * - * @access public - * @param string The header name to return, do not set to get all headers - * @return mixed either the value of $headername (false if header is not present) - * or an array of all headers - */ - function getResponseHeader($headername = null) - { - if (!isset($headername)) { - return isset($this->_response->_headers)? $this->_response->_headers: array(); - } else { - $headername = strtolower($headername); - return isset($this->_response->_headers[$headername]) ? $this->_response->_headers[$headername] : false; - } - } - - /** - * Returns the body of the response - * - * @access public - * @return mixed response body, false if not set - */ - function getResponseBody() - { - return isset($this->_response->_body) ? $this->_response->_body : false; - } - - /** - * Returns cookies set in response - * - * @access public - * @return mixed array of response cookies, false if none are present - */ - function getResponseCookies() - { - return isset($this->_response->_cookies) ? $this->_response->_cookies : false; - } - - /** - * Builds the request string - * - * @access private - * @return string The request string - */ - function _buildRequest() - { - $separator = ini_get('arg_separator.output'); - ini_set('arg_separator.output', '&'); - $querystring = ($querystring = $this->_url->getQueryString()) ? '?' . $querystring : ''; - ini_set('arg_separator.output', $separator); - - $host = isset($this->_proxy_host) ? $this->_url->protocol . '://' . $this->_url->host : ''; - $port = (isset($this->_proxy_host) AND $this->_url->port != 80) ? ':' . $this->_url->port : ''; - $path = $this->_url->path . $querystring; - $url = $host . $port . $path; - - $request = $this->_method . ' ' . $url . ' HTTP/' . $this->_http . "\r\n"; - - if (in_array($this->_method, $this->_bodyDisallowed) || - (empty($this->_body) && (HTTP_REQUEST_METHOD_POST != $this->_method || - (empty($this->_postData) && empty($this->_postFiles))))) - { - $this->removeHeader('Content-Type'); - } else { - if (empty($this->_requestHeaders['content-type'])) { - // Add default content-type - $this->addHeader('Content-Type', 'application/x-www-form-urlencoded'); - } elseif ('multipart/form-data' == $this->_requestHeaders['content-type']) { - $boundary = 'HTTP_Request_' . md5(uniqid('request') . microtime()); - $this->addHeader('Content-Type', 'multipart/form-data; boundary=' . $boundary); - } - } - - // Request Headers - if (!empty($this->_requestHeaders)) { - foreach ($this->_requestHeaders as $name => $value) { - $canonicalName = implode('-', array_map('ucfirst', explode('-', $name))); - $request .= $canonicalName . ': ' . $value . "\r\n"; - } - } - - // No post data or wrong method, so simply add a final CRLF - if (in_array($this->_method, $this->_bodyDisallowed) || - (HTTP_REQUEST_METHOD_POST != $this->_method && empty($this->_body))) { - - $request .= "\r\n"; - - // Post data if it's an array - } elseif (HTTP_REQUEST_METHOD_POST == $this->_method && - (!empty($this->_postData) || !empty($this->_postFiles))) { - - // "normal" POST request - if (!isset($boundary)) { - $postdata = implode('&', array_map( - create_function('$a', 'return $a[0] . \'=\' . $a[1];'), - $this->_flattenArray('', $this->_postData) - )); - - // multipart request, probably with file uploads - } else { - $postdata = ''; - if (!empty($this->_postData)) { - $flatData = $this->_flattenArray('', $this->_postData); - foreach ($flatData as $item) { - $postdata .= '--' . $boundary . "\r\n"; - $postdata .= 'Content-Disposition: form-data; name="' . $item[0] . '"'; - $postdata .= "\r\n\r\n" . urldecode($item[1]) . "\r\n"; - } - } - foreach ($this->_postFiles as $name => $value) { - if (is_array($value['name'])) { - $varname = $name . ($this->_useBrackets? '[]': ''); - } else { - $varname = $name; - $value['name'] = array($value['name']); - } - foreach ($value['name'] as $key => $filename) { - $fp = fopen($filename, 'r'); - $data = fread($fp, filesize($filename)); - fclose($fp); - $basename = basename($filename); - $type = is_array($value['type'])? @$value['type'][$key]: $value['type']; - - $postdata .= '--' . $boundary . "\r\n"; - $postdata .= 'Content-Disposition: form-data; name="' . $varname . '"; filename="' . $basename . '"'; - $postdata .= "\r\nContent-Type: " . $type; - $postdata .= "\r\n\r\n" . $data . "\r\n"; - } - } - $postdata .= '--' . $boundary . "--\r\n"; - } - $request .= 'Content-Length: ' . - (HTTP_REQUEST_MBSTRING? mb_strlen($postdata, 'iso-8859-1'): strlen($postdata)) . - "\r\n\r\n"; - $request .= $postdata; - - // Explicitly set request body - } elseif (!empty($this->_body)) { - - $request .= 'Content-Length: ' . - (HTTP_REQUEST_MBSTRING? mb_strlen($this->_body, 'iso-8859-1'): strlen($this->_body)) . - "\r\n\r\n"; - $request .= $this->_body; - } - - return $request; - } - - /** - * Helper function to change the (probably multidimensional) associative array - * into the simple one. - * - * @param string name for item - * @param mixed item's values - * @return array array with the following items: array('item name', 'item value'); - * @access private - */ - function _flattenArray($name, $values) - { - if (!is_array($values)) { - return array(array($name, $values)); - } else { - $ret = array(); - foreach ($values as $k => $v) { - if (empty($name)) { - $newName = $k; - } elseif ($this->_useBrackets) { - $newName = $name . '[' . $k . ']'; - } else { - $newName = $name; - } - $ret = array_merge($ret, $this->_flattenArray($newName, $v)); - } - return $ret; - } - } - - - /** - * Adds a Listener to the list of listeners that are notified of - * the object's events - * - * Events sent by HTTP_Request object - * - 'connect': on connection to server - * - 'sentRequest': after the request was sent - * - 'disconnect': on disconnection from server - * - * Events sent by HTTP_Response object - * - 'gotHeaders': after receiving response headers (headers are passed in $data) - * - 'tick': on receiving a part of response body (the part is passed in $data) - * - 'gzTick': on receiving a gzip-encoded part of response body (ditto) - * - 'gotBody': after receiving the response body (passes the decoded body in $data if it was gzipped) - * - * @param HTTP_Request_Listener listener to attach - * @return boolean whether the listener was successfully attached - * @access public - */ - function attach(&$listener) - { - if (!is_a($listener, 'HTTP_Request_Listener')) { - return false; - } - $this->_listeners[$listener->getId()] =& $listener; - return true; - } - - - /** - * Removes a Listener from the list of listeners - * - * @param HTTP_Request_Listener listener to detach - * @return boolean whether the listener was successfully detached - * @access public - */ - function detach(&$listener) - { - if (!is_a($listener, 'HTTP_Request_Listener') || - !isset($this->_listeners[$listener->getId()])) { - return false; - } - unset($this->_listeners[$listener->getId()]); - return true; - } - - - /** - * Notifies all registered listeners of an event. - * - * @param string Event name - * @param mixed Additional data - * @access private - * @see HTTP_Request::attach() - */ - function _notify($event, $data = null) - { - foreach (array_keys($this->_listeners) as $id) { - $this->_listeners[$id]->update($this, $event, $data); - } - } -} - - -/** - * Response class to complement the Request class - * - * @category HTTP - * @package HTTP_Request - * @author Richard Heyes - * @author Alexey Borzov - * @version Release: 1.4.1 - */ -class HTTP_Response -{ - /** - * Socket object - * @var Net_Socket - */ - var $_sock; - - /** - * Protocol - * @var string - */ - var $_protocol; - - /** - * Return code - * @var string - */ - var $_code; - - /** - * Response headers - * @var array - */ - var $_headers; - - /** - * Cookies set in response - * @var array - */ - var $_cookies; - - /** - * Response body - * @var string - */ - var $_body = ''; - - /** - * Used by _readChunked(): remaining length of the current chunk - * @var string - */ - var $_chunkLength = 0; - - /** - * Attached listeners - * @var array - */ - var $_listeners = array(); - - /** - * Bytes left to read from message-body - * @var null|int - */ - var $_toRead; - - /** - * Constructor - * - * @param Net_Socket socket to read the response from - * @param array listeners attached to request - */ - function HTTP_Response(&$sock, &$listeners) - { - $this->_sock =& $sock; - $this->_listeners =& $listeners; - } - - - /** - * Processes a HTTP response - * - * This extracts response code, headers, cookies and decodes body if it - * was encoded in some way - * - * @access public - * @param bool Whether to store response body in object property, set - * this to false if downloading a LARGE file and using a Listener. - * This is assumed to be true if body is gzip-encoded. - * @param bool Whether the response can actually have a message-body. - * Will be set to false for HEAD requests. - * @throws PEAR_Error - * @return mixed true on success, PEAR_Error in case of malformed response - */ - function process($saveBody = true, $canHaveBody = true) - { - do { - $line = $this->_sock->readLine(); - if (sscanf($line, 'HTTP/%s %s', $http_version, $returncode) != 2) { - return PEAR::raiseError('Malformed response.'); - } else { - $this->_protocol = 'HTTP/' . $http_version; - $this->_code = intval($returncode); - } - while ('' !== ($header = $this->_sock->readLine())) { - $this->_processHeader($header); - } - } while (100 == $this->_code); - - $this->_notify('gotHeaders', $this->_headers); - - // RFC 2616, section 4.4: - // 1. Any response message which "MUST NOT" include a message-body ... - // is always terminated by the first empty line after the header fields - // 3. ... If a message is received with both a - // Transfer-Encoding header field and a Content-Length header field, - // the latter MUST be ignored. - $canHaveBody = $canHaveBody && $this->_code >= 200 && - $this->_code != 204 && $this->_code != 304; - - // If response body is present, read it and decode - $chunked = isset($this->_headers['transfer-encoding']) && ('chunked' == $this->_headers['transfer-encoding']); - $gzipped = isset($this->_headers['content-encoding']) && ('gzip' == $this->_headers['content-encoding']); - $hasBody = false; - if ($canHaveBody && ($chunked || !isset($this->_headers['content-length']) || - 0 != $this->_headers['content-length'])) - { - if ($chunked || !isset($this->_headers['content-length'])) { - $this->_toRead = null; - } else { - $this->_toRead = $this->_headers['content-length']; - } - while (!$this->_sock->eof() && (is_null($this->_toRead) || 0 < $this->_toRead)) { - if ($chunked) { - $data = $this->_readChunked(); - } elseif (is_null($this->_toRead)) { - $data = $this->_sock->read(4096); - } else { - $data = $this->_sock->read(min(4096, $this->_toRead)); - $this->_toRead -= HTTP_REQUEST_MBSTRING? mb_strlen($data, 'iso-8859-1'): strlen($data); - } - if ('' == $data) { - break; - } else { - $hasBody = true; - if ($saveBody || $gzipped) { - $this->_body .= $data; - } - $this->_notify($gzipped? 'gzTick': 'tick', $data); - } - } - } - - if ($hasBody) { - // Uncompress the body if needed - if ($gzipped) { - $body = $this->_decodeGzip($this->_body); - if (PEAR::isError($body)) { - return $body; - } - $this->_body = $body; - $this->_notify('gotBody', $this->_body); - } else { - $this->_notify('gotBody'); - } - } - return true; - } - - - /** - * Processes the response header - * - * @access private - * @param string HTTP header - */ - function _processHeader($header) - { - if (false === strpos($header, ':')) { - return; - } - list($headername, $headervalue) = explode(':', $header, 2); - $headername = strtolower($headername); - $headervalue = ltrim($headervalue); - - if ('set-cookie' != $headername) { - if (isset($this->_headers[$headername])) { - $this->_headers[$headername] .= ',' . $headervalue; - } else { - $this->_headers[$headername] = $headervalue; - } - } else { - $this->_parseCookie($headervalue); - } - } - - - /** - * Parse a Set-Cookie header to fill $_cookies array - * - * @access private - * @param string value of Set-Cookie header - */ - function _parseCookie($headervalue) - { - $cookie = array( - 'expires' => null, - 'domain' => null, - 'path' => null, - 'secure' => false - ); - - // Only a name=value pair - if (!strpos($headervalue, ';')) { - $pos = strpos($headervalue, '='); - $cookie['name'] = trim(substr($headervalue, 0, $pos)); - $cookie['value'] = trim(substr($headervalue, $pos + 1)); - - // Some optional parameters are supplied - } else { - $elements = explode(';', $headervalue); - $pos = strpos($elements[0], '='); - $cookie['name'] = trim(substr($elements[0], 0, $pos)); - $cookie['value'] = trim(substr($elements[0], $pos + 1)); - - for ($i = 1; $i < count($elements); $i++) { - if (false === strpos($elements[$i], '=')) { - $elName = trim($elements[$i]); - $elValue = null; - } else { - list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i])); - } - $elName = strtolower($elName); - if ('secure' == $elName) { - $cookie['secure'] = true; - } elseif ('expires' == $elName) { - $cookie['expires'] = str_replace('"', '', $elValue); - } elseif ('path' == $elName || 'domain' == $elName) { - $cookie[$elName] = urldecode($elValue); - } else { - $cookie[$elName] = $elValue; - } - } - } - $this->_cookies[] = $cookie; - } - - - /** - * Read a part of response body encoded with chunked Transfer-Encoding - * - * @access private - * @return string - */ - function _readChunked() - { - // at start of the next chunk? - if (0 == $this->_chunkLength) { - $line = $this->_sock->readLine(); - if (preg_match('/^([0-9a-f]+)/i', $line, $matches)) { - $this->_chunkLength = hexdec($matches[1]); - // Chunk with zero length indicates the end - if (0 == $this->_chunkLength) { - $this->_sock->readLine(); // make this an eof() - return ''; - } - } else { - return ''; - } - } - $data = $this->_sock->read($this->_chunkLength); - $this->_chunkLength -= HTTP_REQUEST_MBSTRING? mb_strlen($data, 'iso-8859-1'): strlen($data); - if (0 == $this->_chunkLength) { - $this->_sock->readLine(); // Trailing CRLF - } - return $data; - } - - - /** - * Notifies all registered listeners of an event. - * - * @param string Event name - * @param mixed Additional data - * @access private - * @see HTTP_Request::_notify() - */ - function _notify($event, $data = null) - { - foreach (array_keys($this->_listeners) as $id) { - $this->_listeners[$id]->update($this, $event, $data); - } - } - - - /** - * Decodes the message-body encoded by gzip - * - * The real decoding work is done by gzinflate() built-in function, this - * method only parses the header and checks data for compliance with - * RFC 1952 - * - * @access private - * @param string gzip-encoded data - * @return string decoded data - */ - function _decodeGzip($data) - { - if (HTTP_REQUEST_MBSTRING) { - $oldEncoding = mb_internal_encoding(); - mb_internal_encoding('iso-8859-1'); - } - $length = strlen($data); - // If it doesn't look like gzip-encoded data, don't bother - if (18 > $length || strcmp(substr($data, 0, 2), "\x1f\x8b")) { - return $data; - } - $method = ord(substr($data, 2, 1)); - if (8 != $method) { - return PEAR::raiseError('_decodeGzip(): unknown compression method'); - } - $flags = ord(substr($data, 3, 1)); - if ($flags & 224) { - return PEAR::raiseError('_decodeGzip(): reserved bits are set'); - } - - // header is 10 bytes minimum. may be longer, though. - $headerLength = 10; - // extra fields, need to skip 'em - if ($flags & 4) { - if ($length - $headerLength - 2 < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $extraLength = unpack('v', substr($data, 10, 2)); - if ($length - $headerLength - 2 - $extraLength[1] < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $headerLength += $extraLength[1] + 2; - } - // file name, need to skip that - if ($flags & 8) { - if ($length - $headerLength - 1 < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $filenameLength = strpos(substr($data, $headerLength), chr(0)); - if (false === $filenameLength || $length - $headerLength - $filenameLength - 1 < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $headerLength += $filenameLength + 1; - } - // comment, need to skip that also - if ($flags & 16) { - if ($length - $headerLength - 1 < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $commentLength = strpos(substr($data, $headerLength), chr(0)); - if (false === $commentLength || $length - $headerLength - $commentLength - 1 < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $headerLength += $commentLength + 1; - } - // have a CRC for header. let's check - if ($flags & 1) { - if ($length - $headerLength - 2 < 8) { - return PEAR::raiseError('_decodeGzip(): data too short'); - } - $crcReal = 0xffff & crc32(substr($data, 0, $headerLength)); - $crcStored = unpack('v', substr($data, $headerLength, 2)); - if ($crcReal != $crcStored[1]) { - return PEAR::raiseError('_decodeGzip(): header CRC check failed'); - } - $headerLength += 2; - } - // unpacked data CRC and size at the end of encoded data - $tmp = unpack('V2', substr($data, -8)); - $dataCrc = $tmp[1]; - $dataSize = $tmp[2]; - - // finally, call the gzinflate() function - $unpacked = @gzinflate(substr($data, $headerLength, -8), $dataSize); - if (false === $unpacked) { - return PEAR::raiseError('_decodeGzip(): gzinflate() call failed'); - } elseif ($dataSize != strlen($unpacked)) { - return PEAR::raiseError('_decodeGzip(): data size check failed'); - } elseif ((0xffffffff & $dataCrc) != (0xffffffff & crc32($unpacked))) { - return PEAR::raiseError('_decodeGzip(): data CRC check failed'); - } - if (HTTP_REQUEST_MBSTRING) { - mb_internal_encoding($oldEncoding); - } - return $unpacked; - } -} // End class HTTP_Response -?> diff --git a/modules/springnote/lib/PEAR/HTTP/Request/Listener.php b/modules/springnote/lib/PEAR/HTTP/Request/Listener.php deleted file mode 100644 index f0408b004..000000000 --- a/modules/springnote/lib/PEAR/HTTP/Request/Listener.php +++ /dev/null @@ -1,106 +0,0 @@ - - * @copyright 2002-2007 Richard Heyes - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: Listener.php,v 1.3 2007/05/18 10:33:31 avb Exp $ - * @link http://pear.php.net/package/HTTP_Request/ - */ - -/** - * Listener for HTTP_Request and HTTP_Response objects - * - * This class implements the Observer part of a Subject-Observer - * design pattern. - * - * @category HTTP - * @package HTTP_Request - * @author Alexey Borzov - * @version Release: 1.4.1 - */ -class HTTP_Request_Listener -{ - /** - * A listener's identifier - * @var string - */ - var $_id; - - /** - * Constructor, sets the object's identifier - * - * @access public - */ - function HTTP_Request_Listener() - { - $this->_id = md5(uniqid('http_request_', 1)); - } - - - /** - * Returns the listener's identifier - * - * @access public - * @return string - */ - function getId() - { - return $this->_id; - } - - - /** - * This method is called when Listener is notified of an event - * - * @access public - * @param object an object the listener is attached to - * @param string Event name - * @param mixed Additional data - * @abstract - */ - function update(&$subject, $event, $data = null) - { - echo "Notified of event: '$event'\n"; - if (null !== $data) { - echo "Additional data: "; - var_dump($data); - } - } -} -?> diff --git a/modules/springnote/lib/PEAR/Net/Socket.php b/modules/springnote/lib/PEAR/Net/Socket.php deleted file mode 100644 index 7c4ff1d4e..000000000 --- a/modules/springnote/lib/PEAR/Net/Socket.php +++ /dev/null @@ -1,528 +0,0 @@ - | -// | Chuck Hagenbuch | -// +----------------------------------------------------------------------+ -// -// $Id: Socket.php,v 1.24 2005/02/03 20:40:16 chagenbu Exp $ - -require_once 'PEAR.php'; - -define('NET_SOCKET_READ', 1); -define('NET_SOCKET_WRITE', 2); -define('NET_SOCKET_ERROR', 3); - -/** - * Generalized Socket class. - * - * @version 1.1 - * @author Stig Bakken - * @author Chuck Hagenbuch - */ -class Net_Socket extends PEAR { - - /** - * Socket file pointer. - * @var resource $fp - */ - var $fp = null; - - /** - * Whether the socket is blocking. Defaults to true. - * @var boolean $blocking - */ - var $blocking = true; - - /** - * Whether the socket is persistent. Defaults to false. - * @var boolean $persistent - */ - var $persistent = false; - - /** - * The IP address to connect to. - * @var string $addr - */ - var $addr = ''; - - /** - * The port number to connect to. - * @var integer $port - */ - var $port = 0; - - /** - * Number of seconds to wait on socket connections before assuming - * there's no more data. Defaults to no timeout. - * @var integer $timeout - */ - var $timeout = false; - - /** - * Number of bytes to read at a time in readLine() and - * readAll(). Defaults to 2048. - * @var integer $lineLength - */ - var $lineLength = 2048; - - /** - * Connect to the specified port. If called when the socket is - * already connected, it disconnects and connects again. - * - * @param string $addr IP address or host name. - * @param integer $port TCP port number. - * @param boolean $persistent (optional) Whether the connection is - * persistent (kept open between requests - * by the web server). - * @param integer $timeout (optional) How long to wait for data. - * @param array $options See options for stream_context_create. - * - * @access public - * - * @return boolean | PEAR_Error True on success or a PEAR_Error on failure. - */ - function connect($addr, $port = 0, $persistent = null, $timeout = null, $options = null) - { - if (is_resource($this->fp)) { - @fclose($this->fp); - $this->fp = null; - } - - if (!$addr) { - return $this->raiseError('$addr cannot be empty'); - } elseif (strspn($addr, '.0123456789') == strlen($addr) || - strstr($addr, '/') !== false) { - $this->addr = $addr; - } else { - $this->addr = @gethostbyname($addr); - } - - $this->port = $port % 65536; - - if ($persistent !== null) { - $this->persistent = $persistent; - } - - if ($timeout !== null) { - $this->timeout = $timeout; - } - - $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; - $errno = 0; - $errstr = ''; - if ($options && function_exists('stream_context_create')) { - if ($this->timeout) { - $timeout = $this->timeout; - } else { - $timeout = 0; - } - $context = stream_context_create($options); - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context); - } else { - if ($this->timeout) { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); - } else { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); - } - } - - if (!$fp) { - return $this->raiseError($errstr, $errno); - } - - $this->fp = $fp; - - return $this->setBlocking($this->blocking); - } - - /** - * Disconnects from the peer, closes the socket. - * - * @access public - * @return mixed true on success or an error object otherwise - */ - function disconnect() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - @fclose($this->fp); - $this->fp = null; - return true; - } - - /** - * Find out if the socket is in blocking mode. - * - * @access public - * @return boolean The current blocking mode. - */ - function isBlocking() - { - return $this->blocking; - } - - /** - * Sets whether the socket connection should be blocking or - * not. A read call to a non-blocking socket will return immediately - * if there is no data available, whereas it will block until there - * is data for blocking sockets. - * - * @param boolean $mode True for blocking sockets, false for nonblocking. - * @access public - * @return mixed true on success or an error object otherwise - */ - function setBlocking($mode) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $this->blocking = $mode; - socket_set_blocking($this->fp, $this->blocking); - return true; - } - - /** - * Sets the timeout value on socket descriptor, - * expressed in the sum of seconds and microseconds - * - * @param integer $seconds Seconds. - * @param integer $microseconds Microseconds. - * @access public - * @return mixed true on success or an error object otherwise - */ - function setTimeout($seconds, $microseconds) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return socket_set_timeout($this->fp, $seconds, $microseconds); - } - - /** - * Returns information about an existing socket resource. - * Currently returns four entries in the result array: - * - *

- * timed_out (bool) - The socket timed out waiting for data
- * blocked (bool) - The socket was blocked
- * eof (bool) - Indicates EOF event
- * unread_bytes (int) - Number of bytes left in the socket buffer
- *

- * - * @access public - * @return mixed Array containing information about existing socket resource or an error object otherwise - */ - function getStatus() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return socket_get_status($this->fp); - } - - /** - * Get a specified line of data - * - * @access public - * @return $size bytes of data from the socket, or a PEAR_Error if - * not connected. - */ - function gets($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return @fgets($this->fp, $size); - } - - /** - * Read a specified amount of data. This is guaranteed to return, - * and has the added benefit of getting everything in one fread() - * chunk; if you know the size of the data you're getting - * beforehand, this is definitely the way to go. - * - * @param integer $size The number of bytes to read from the socket. - * @access public - * @return $size bytes of data from the socket, or a PEAR_Error if - * not connected. - */ - function read($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return @fread($this->fp, $size); - } - - /** - * Write a specified amount of data. - * - * @param string $data Data to write. - * @param integer $blocksize Amount of data to write at once. - * NULL means all at once. - * - * @access public - * @return mixed true on success or an error object otherwise - */ - function write($data, $blocksize = null) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - if (is_null($blocksize) && !OS_WINDOWS) { - return fwrite($this->fp, $data); - } else { - if (is_null($blocksize)) { - $blocksize = 1024; - } - - $pos = 0; - $size = strlen($data); - while ($pos < $size) { - $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); - if ($written === false) { - return false; - } - $pos += $written; - } - - return $pos; - } - } - - /** - * Write a line of data to the socket, followed by a trailing "\r\n". - * - * @access public - * @return mixed fputs result, or an error - */ - function writeLine($data) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return fwrite($this->fp, $data . "\r\n"); - } - - /** - * Tests for end-of-file on a socket descriptor. - * - * @access public - * @return bool - */ - function eof() - { - return (is_resource($this->fp) && feof($this->fp)); - } - - /** - * Reads a byte of data - * - * @access public - * @return 1 byte of data from the socket, or a PEAR_Error if - * not connected. - */ - function readByte() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return ord(@fread($this->fp, 1)); - } - - /** - * Reads a word of data - * - * @access public - * @return 1 word of data from the socket, or a PEAR_Error if - * not connected. - */ - function readWord() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 2); - return (ord($buf[0]) + (ord($buf[1]) << 8)); - } - - /** - * Reads an int of data - * - * @access public - * @return integer 1 int of data from the socket, or a PEAR_Error if - * not connected. - */ - function readInt() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 4); - return (ord($buf[0]) + (ord($buf[1]) << 8) + - (ord($buf[2]) << 16) + (ord($buf[3]) << 24)); - } - - /** - * Reads a zero-terminated string of data - * - * @access public - * @return string, or a PEAR_Error if - * not connected. - */ - function readString() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $string = ''; - while (($char = @fread($this->fp, 1)) != "\x00") { - $string .= $char; - } - return $string; - } - - /** - * Reads an IP Address and returns it in a dot formated string - * - * @access public - * @return Dot formated string, or a PEAR_Error if - * not connected. - */ - function readIPAddress() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 4); - return sprintf("%s.%s.%s.%s", ord($buf[0]), ord($buf[1]), - ord($buf[2]), ord($buf[3])); - } - - /** - * Read until either the end of the socket or a newline, whichever - * comes first. Strips the trailing newline from the returned data. - * - * @access public - * @return All available data up to a newline, without that - * newline, or until the end of the socket, or a PEAR_Error if - * not connected. - */ - function readLine() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $line = ''; - $timeout = time() + $this->timeout; - while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { - $line .= @fgets($this->fp, $this->lineLength); - if (substr($line, -1) == "\n") { - return rtrim($line, "\r\n"); - } - } - return $line; - } - - /** - * Read until the socket closes, or until there is no more data in - * the inner PHP buffer. If the inner buffer is empty, in blocking - * mode we wait for at least 1 byte of data. Therefore, in - * blocking mode, if there is no data at all to be read, this - * function will never exit (unless the socket is closed on the - * remote end). - * - * @access public - * - * @return string All data until the socket closes, or a PEAR_Error if - * not connected. - */ - function readAll() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $data = ''; - while (!feof($this->fp)) { - $data .= @fread($this->fp, $this->lineLength); - } - return $data; - } - - /** - * Runs the equivalent of the select() system call on the socket - * with a timeout specified by tv_sec and tv_usec. - * - * @param integer $state Which of read/write/error to check for. - * @param integer $tv_sec Number of seconds for timeout. - * @param integer $tv_usec Number of microseconds for timeout. - * - * @access public - * @return False if select fails, integer describing which of read/write/error - * are ready, or PEAR_Error if not connected. - */ - function select($state, $tv_sec, $tv_usec = 0) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $read = null; - $write = null; - $except = null; - if ($state & NET_SOCKET_READ) { - $read[] = $this->fp; - } - if ($state & NET_SOCKET_WRITE) { - $write[] = $this->fp; - } - if ($state & NET_SOCKET_ERROR) { - $except[] = $this->fp; - } - if (false === ($sr = stream_select($read, $write, $except, $tv_sec, $tv_usec))) { - return false; - } - - $result = 0; - if (count($read)) { - $result |= NET_SOCKET_READ; - } - if (count($write)) { - $result |= NET_SOCKET_WRITE; - } - if (count($except)) { - $result |= NET_SOCKET_ERROR; - } - return $result; - } - -} diff --git a/modules/springnote/lib/PEAR/Net/URL.php b/modules/springnote/lib/PEAR/Net/URL.php deleted file mode 100644 index da48c746b..000000000 --- a/modules/springnote/lib/PEAR/Net/URL.php +++ /dev/null @@ -1,410 +0,0 @@ - | -// +-----------------------------------------------------------------------+ -// -// $Id: URL.php,v 1.36 2004/06/19 18:58:50 richard Exp $ -// -// Net_URL Class - -class Net_URL -{ - /** - * Full url - * @var string - */ - var $url; - - /** - * Protocol - * @var string - */ - var $protocol; - - /** - * Username - * @var string - */ - var $username; - - /** - * Password - * @var string - */ - var $password; - - /** - * Host - * @var string - */ - var $host; - - /** - * Port - * @var integer - */ - var $port; - - /** - * Path - * @var string - */ - var $path; - - /** - * Query string - * @var array - */ - var $querystring; - - /** - * Anchor - * @var string - */ - var $anchor; - - /** - * Whether to use [] - * @var bool - */ - var $useBrackets; - - /** - * PHP4 Constructor - * - * @see __construct() - */ - function Net_URL($url = null, $useBrackets = true) - { - $this->__construct($url, $useBrackets); - } - - /** - * PHP5 Constructor - * - * Parses the given url and stores the various parts - * Defaults are used in certain cases - * - * @param string $url Optional URL - * @param bool $useBrackets Whether to use square brackets when - * multiple querystrings with the same name - * exist - */ - function __construct($url = null, $useBrackets = true) - { - $HTTP_SERVER_VARS = !empty($_SERVER) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; - - $this->useBrackets = $useBrackets; - $this->url = $url; - $this->user = ''; - $this->pass = ''; - $this->host = ''; - $this->port = 80; - $this->path = ''; - $this->querystring = array(); - $this->anchor = ''; - - // Only use defaults if not an absolute URL given - if (!preg_match('/^[a-z0-9]+:\/\//i', $url)) { - - $this->protocol = (@$HTTP_SERVER_VARS['HTTPS'] == 'on' ? 'https' : 'http'); - - /** - * Figure out host/port - */ - if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) AND preg_match('/^(.*)(:([0-9]+))?$/U', $HTTP_SERVER_VARS['HTTP_HOST'], $matches)) { - $host = $matches[1]; - if (!empty($matches[3])) { - $port = $matches[3]; - } else { - $port = $this->getStandardPort($this->protocol); - } - } - - $this->user = ''; - $this->pass = ''; - $this->host = !empty($host) ? $host : (isset($HTTP_SERVER_VARS['SERVER_NAME']) ? $HTTP_SERVER_VARS['SERVER_NAME'] : 'localhost'); - $this->port = !empty($port) ? $port : (isset($HTTP_SERVER_VARS['SERVER_PORT']) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $this->getStandardPort($this->protocol)); - $this->path = !empty($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : '/'; - $this->querystring = isset($HTTP_SERVER_VARS['QUERY_STRING']) ? $this->_parseRawQuerystring($HTTP_SERVER_VARS['QUERY_STRING']) : null; - $this->anchor = ''; - } - - // Parse the url and store the various parts - if (!empty($url)) { - $urlinfo = parse_url($url); - - // Default querystring - $this->querystring = array(); - - foreach ($urlinfo as $key => $value) { - switch ($key) { - case 'scheme': - $this->protocol = $value; - $this->port = $this->getStandardPort($value); - break; - - case 'user': - case 'pass': - case 'host': - case 'port': - $this->$key = $value; - break; - - case 'path': - if ($value{0} == '/') { - $this->path = $value; - } else { - $path = dirname($this->path) == DIRECTORY_SEPARATOR ? '' : dirname($this->path); - $this->path = sprintf('%s/%s', $path, $value); - } - break; - - case 'query': - $this->querystring = $this->_parseRawQueryString($value); - break; - - case 'fragment': - $this->anchor = $value; - break; - } - } - } - } - - /** - * Returns full url - * - * @return string Full url - * @access public - */ - function getURL() - { - $querystring = $this->getQueryString(); - - $this->url = $this->protocol . '://' - . $this->user . (!empty($this->pass) ? ':' : '') - . $this->pass . (!empty($this->user) ? '@' : '') - . $this->host . ($this->port == $this->getStandardPort($this->protocol) ? '' : ':' . $this->port) - . $this->path - . (!empty($querystring) ? '?' . $querystring : '') - . (!empty($this->anchor) ? '#' . $this->anchor : ''); - - return $this->url; - } - - /** - * Adds a querystring item - * - * @param string $name Name of item - * @param string $value Value of item - * @param bool $preencoded Whether value is urlencoded or not, default = not - * @access public - */ - function addQueryString($name, $value, $preencoded = false) - { - if ($preencoded) { - $this->querystring[$name] = $value; - } else { - $this->querystring[$name] = is_array($value) ? array_map('rawurlencode', $value): rawurlencode($value); - } - } - - /** - * Removes a querystring item - * - * @param string $name Name of item - * @access public - */ - function removeQueryString($name) - { - if (isset($this->querystring[$name])) { - unset($this->querystring[$name]); - } - } - - /** - * Sets the querystring to literally what you supply - * - * @param string $querystring The querystring data. Should be of the format foo=bar&x=y etc - * @access public - */ - function addRawQueryString($querystring) - { - $this->querystring = $this->_parseRawQueryString($querystring); - } - - /** - * Returns flat querystring - * - * @return string Querystring - * @access public - */ - function getQueryString() - { - if (!empty($this->querystring)) { - foreach ($this->querystring as $name => $value) { - if (is_array($value)) { - foreach ($value as $k => $v) { - $querystring[] = $this->useBrackets ? sprintf('%s[%s]=%s', $name, $k, $v) : ($name . '=' . $v); - } - } elseif (!is_null($value)) { - $querystring[] = $name . '=' . $value; - } else { - $querystring[] = $name; - } - } - $querystring = implode(ini_get('arg_separator.output'), $querystring); - } else { - $querystring = ''; - } - - return $querystring; - } - - /** - * Parses raw querystring and returns an array of it - * - * @param string $querystring The querystring to parse - * @return array An array of the querystring data - * @access private - */ - function _parseRawQuerystring($querystring) - { - $parts = preg_split('/[' . preg_quote(ini_get('arg_separator.input'), '/') . ']/', $querystring, -1, PREG_SPLIT_NO_EMPTY); - $return = array(); - - foreach ($parts as $part) { - if (strpos($part, '=') !== false) { - $value = substr($part, strpos($part, '=') + 1); - $key = substr($part, 0, strpos($part, '=')); - } else { - $value = null; - $key = $part; - } - if (substr($key, -2) == '[]') { - $key = substr($key, 0, -2); - if (@!is_array($return[$key])) { - $return[$key] = array(); - $return[$key][] = $value; - } else { - $return[$key][] = $value; - } - } elseif (!$this->useBrackets AND !empty($return[$key])) { - $return[$key] = (array)$return[$key]; - $return[$key][] = $value; - } else { - $return[$key] = $value; - } - } - - return $return; - } - - /** - * Resolves //, ../ and ./ from a path and returns - * the result. Eg: - * - * /foo/bar/../boo.php => /foo/boo.php - * /foo/bar/../../boo.php => /boo.php - * /foo/bar/.././/boo.php => /foo/boo.php - * - * This method can also be called statically. - * - * @param string $url URL path to resolve - * @return string The result - */ - function resolvePath($path) - { - $path = explode('/', str_replace('//', '/', $path)); - - for ($i=0; $i 1 OR ($i == 1 AND $path[0] != '') ) ) { - unset($path[$i]); - unset($path[$i-1]); - $path = array_values($path); - $i -= 2; - - } elseif ($path[$i] == '..' AND $i == 1 AND $path[0] == '') { - unset($path[$i]); - $path = array_values($path); - $i--; - - } else { - continue; - } - } - - return implode('/', $path); - } - - /** - * Returns the standard port number for a protocol - * - * @param string $scheme The protocol to lookup - * @return integer Port number or NULL if no scheme matches - * - * @author Philippe Jausions - */ - function getStandardPort($scheme) - { - switch (strtolower($scheme)) { - case 'http': return 80; - case 'https': return 443; - case 'ftp': return 21; - case 'imap': return 143; - case 'imaps': return 993; - case 'pop3': return 110; - case 'pop3s': return 995; - default: return null; - } - } - - /** - * Forces the URL to a particular protocol - * - * @param string $protocol Protocol to force the URL to - * @param integer $port Optional port (standard port is used by default) - */ - function setProtocol($protocol, $port = null) - { - $this->protocol = $protocol; - $this->port = is_null($port) ? $this->getStandardPort() : $port; - } - -} -?> diff --git a/modules/springnote/lib/PEAR/PEAR.php b/modules/springnote/lib/PEAR/PEAR.php deleted file mode 100644 index d2d41b274..000000000 --- a/modules/springnote/lib/PEAR/PEAR.php +++ /dev/null @@ -1,1108 +0,0 @@ - - * @author Stig Bakken - * @author Tomas V.V.Cox - * @author Greg Beaver - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: PEAR.php,v 1.101 2006/04/25 02:41:03 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/**#@+ - * ERROR constants - */ -define('PEAR_ERROR_RETURN', 1); -define('PEAR_ERROR_PRINT', 2); -define('PEAR_ERROR_TRIGGER', 4); -define('PEAR_ERROR_DIE', 8); -define('PEAR_ERROR_CALLBACK', 16); -/** - * WARNING: obsolete - * @deprecated - */ -define('PEAR_ERROR_EXCEPTION', 32); -/**#@-*/ -define('PEAR_ZE2', (function_exists('version_compare') && - version_compare(zend_version(), "2-dev", "ge"))); - -if (substr(PHP_OS, 0, 3) == 'WIN') { - define('OS_WINDOWS', true); - define('OS_UNIX', false); - define('PEAR_OS', 'Windows'); -} else { - define('OS_WINDOWS', false); - define('OS_UNIX', true); - define('PEAR_OS', 'Unix'); // blatant assumption -} - -// instant backwards compatibility -if (!defined('PATH_SEPARATOR')) { - if (OS_WINDOWS) { - define('PATH_SEPARATOR', ';'); - } else { - define('PATH_SEPARATOR', ':'); - } -} - -$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; -$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; -$GLOBALS['_PEAR_destructor_object_list'] = array(); -$GLOBALS['_PEAR_shutdown_funcs'] = array(); -$GLOBALS['_PEAR_error_handler_stack'] = array(); - -@ini_set('track_errors', true); - -/** - * Base class for other PEAR classes. Provides rudimentary - * emulation of destructors. - * - * If you want a destructor in your class, inherit PEAR and make a - * destructor method called _yourclassname (same name as the - * constructor, but with a "_" prefix). Also, in your constructor you - * have to call the PEAR constructor: $this->PEAR();. - * The destructor method will be called without parameters. Note that - * at in some SAPI implementations (such as Apache), any output during - * the request shutdown (in which destructors are called) seems to be - * discarded. If you need to get any debug information from your - * destructor, use error_log(), syslog() or something similar. - * - * IMPORTANT! To use the emulated destructors you need to create the - * objects by reference: $obj =& new PEAR_child; - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Greg Beaver - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.5.0 - * @link http://pear.php.net/package/PEAR - * @see PEAR_Error - * @since Class available since PHP 4.0.2 - * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear - */ -class PEAR -{ - // {{{ properties - - /** - * Whether to enable internal debug messages. - * - * @var bool - * @access private - */ - var $_debug = false; - - /** - * Default error mode for this object. - * - * @var int - * @access private - */ - var $_default_error_mode = null; - - /** - * Default error options used for this object when error mode - * is PEAR_ERROR_TRIGGER. - * - * @var int - * @access private - */ - var $_default_error_options = null; - - /** - * Default error handler (callback) for this object, if error mode is - * PEAR_ERROR_CALLBACK. - * - * @var string - * @access private - */ - var $_default_error_handler = ''; - - /** - * Which class to use for error objects. - * - * @var string - * @access private - */ - var $_error_class = 'PEAR_Error'; - - /** - * An array of expected errors. - * - * @var array - * @access private - */ - var $_expected_errors = array(); - - // }}} - - // {{{ constructor - - /** - * Constructor. Registers this object in - * $_PEAR_destructor_object_list for destructor emulation if a - * destructor object exists. - * - * @param string $error_class (optional) which class to use for - * error objects, defaults to PEAR_Error. - * @access public - * @return void - */ - function PEAR($error_class = null) - { - $classname = strtolower(get_class($this)); - if ($this->_debug) { - print "PEAR constructor called, class=$classname\n"; - } - if ($error_class !== null) { - $this->_error_class = $error_class; - } - while ($classname && strcasecmp($classname, "pear")) { - $destructor = "_$classname"; - if (method_exists($this, $destructor)) { - global $_PEAR_destructor_object_list; - $_PEAR_destructor_object_list[] = &$this; - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - break; - } else { - $classname = get_parent_class($classname); - } - } - } - - // }}} - // {{{ destructor - - /** - * Destructor (the emulated type of...). Does nothing right now, - * but is included for forward compatibility, so subclass - * destructors should always call it. - * - * See the note in the class desciption about output from - * destructors. - * - * @access public - * @return void - */ - function _PEAR() { - if ($this->_debug) { - printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); - } - } - - // }}} - // {{{ getStaticProperty() - - /** - * If you have a class that's mostly/entirely static, and you need static - * properties, you can use this method to simulate them. Eg. in your method(s) - * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); - * You MUST use a reference, or they will not persist! - * - * @access public - * @param string $class The calling classname, to prevent clashes - * @param string $var The variable to retrieve. - * @return mixed A reference to the variable. If not set it will be - * auto initialised to NULL. - */ - function &getStaticProperty($class, $var) - { - static $properties; - if (!isset($properties[$class])) { - $properties[$class] = array(); - } - if (!array_key_exists($var, $properties[$class])) { - $properties[$class][$var] = null; - } - return $properties[$class][$var]; - } - - // }}} - // {{{ registerShutdownFunc() - - /** - * Use this function to register a shutdown method for static - * classes. - * - * @access public - * @param mixed $func The function name (or array of class/method) to call - * @param mixed $args The arguments to pass to the function - * @return void - */ - function registerShutdownFunc($func, $args = array()) - { - // if we are called statically, there is a potential - // that no shutdown func is registered. Bug #6445 - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); - } - - // }}} - // {{{ isError() - - /** - * Tell whether a value is a PEAR error. - * - * @param mixed $data the value to test - * @param int $code if $data is an error object, return true - * only if $code is a string and - * $obj->getMessage() == $code or - * $code is an integer and $obj->getCode() == $code - * @access public - * @return bool true if parameter is an error - */ - function isError($data, $code = null) - { - if (is_a($data, 'PEAR_Error')) { - if (is_null($code)) { - return true; - } elseif (is_string($code)) { - return $data->getMessage() == $code; - } else { - return $data->getCode() == $code; - } - } - return false; - } - - // }}} - // {{{ setErrorHandling() - - /** - * Sets how errors generated by this object should be handled. - * Can be invoked both in objects and statically. If called - * statically, setErrorHandling sets the default behaviour for all - * PEAR objects. If called in an object, setErrorHandling sets - * the default behaviour for that object. - * - * @param int $mode - * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. - * - * @param mixed $options - * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one - * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * - * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected - * to be the callback function or method. A callback - * function is a string with the name of the function, a - * callback method is an array of two elements: the element - * at index 0 is the object, and the element at index 1 is - * the name of the method to call in the object. - * - * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is - * a printf format string used when printing the error - * message. - * - * @access public - * @return void - * @see PEAR_ERROR_RETURN - * @see PEAR_ERROR_PRINT - * @see PEAR_ERROR_TRIGGER - * @see PEAR_ERROR_DIE - * @see PEAR_ERROR_CALLBACK - * @see PEAR_ERROR_EXCEPTION - * - * @since PHP 4.0.5 - */ - - function setErrorHandling($mode = null, $options = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $setmode = &$this->_default_error_mode; - $setoptions = &$this->_default_error_options; - } else { - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - } - - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - } - - // }}} - // {{{ expectError() - - /** - * This method is used to tell which errors you expect to get. - * Expected errors are always returned with error mode - * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, - * and this method pushes a new element onto it. The list of - * expected errors are in effect until they are popped off the - * stack with the popExpect() method. - * - * Note that this method can not be called statically - * - * @param mixed $code a single error code or an array of error codes to expect - * - * @return int the new depth of the "expected errors" stack - * @access public - */ - function expectError($code = '*') - { - if (is_array($code)) { - array_push($this->_expected_errors, $code); - } else { - array_push($this->_expected_errors, array($code)); - } - return sizeof($this->_expected_errors); - } - - // }}} - // {{{ popExpect() - - /** - * This method pops one element off the expected error codes - * stack. - * - * @return array the list of error codes that were popped - */ - function popExpect() - { - return array_pop($this->_expected_errors); - } - - // }}} - // {{{ _checkDelExpect() - - /** - * This method checks unsets an error code if available - * - * @param mixed error code - * @return bool true if the error code was unset, false otherwise - * @access private - * @since PHP 4.3.0 - */ - function _checkDelExpect($error_code) - { - $deleted = false; - - foreach ($this->_expected_errors AS $key => $error_array) { - if (in_array($error_code, $error_array)) { - unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); - $deleted = true; - } - - // clean up empty arrays - if (0 == count($this->_expected_errors[$key])) { - unset($this->_expected_errors[$key]); - } - } - return $deleted; - } - - // }}} - // {{{ delExpect() - - /** - * This method deletes all occurences of the specified element from - * the expected error codes stack. - * - * @param mixed $error_code error code that should be deleted - * @return mixed list of error codes that were deleted or error - * @access public - * @since PHP 4.3.0 - */ - function delExpect($error_code) - { - $deleted = false; - - if ((is_array($error_code) && (0 != count($error_code)))) { - // $error_code is a non-empty array here; - // we walk through it trying to unset all - // values - foreach($error_code as $key => $error) { - if ($this->_checkDelExpect($error)) { - $deleted = true; - } else { - $deleted = false; - } - } - return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } elseif (!empty($error_code)) { - // $error_code comes alone, trying to unset it - if ($this->_checkDelExpect($error_code)) { - return true; - } else { - return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } - } else { - // $error_code is empty - return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME - } - } - - // }}} - // {{{ raiseError() - - /** - * This method is a wrapper that returns an instance of the - * configured error class with this object's default error - * handling applied. If the $mode and $options parameters are not - * specified, the object's defaults are used. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION. - * - * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter - * specifies the PHP-internal error level (one of - * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * If $mode is PEAR_ERROR_CALLBACK, this - * parameter specifies the callback function or - * method. In other error modes this parameter - * is ignored. - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @param string $error_class The returned error object will be - * instantiated from this class, if specified. - * - * @param bool $skipmsg If true, raiseError will only pass error codes, - * the error message parameter will be dropped. - * - * @access public - * @return object a PEAR error object - * @see PEAR::setErrorHandling - * @since PHP 4.0.5 - */ - function &raiseError($message = null, - $code = null, - $mode = null, - $options = null, - $userinfo = null, - $error_class = null, - $skipmsg = false) - { - // The error is yet a PEAR error object - if (is_object($message)) { - $code = $message->getCode(); - $userinfo = $message->getUserInfo(); - $error_class = $message->getType(); - $message->error_message_prefix = ''; - $message = $message->getMessage(); - } - - if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { - if ($exp[0] == "*" || - (is_int(reset($exp)) && in_array($code, $exp)) || - (is_string(reset($exp)) && in_array($message, $exp))) { - $mode = PEAR_ERROR_RETURN; - } - } - // No mode given, try global ones - if ($mode === null) { - // Class error handler - if (isset($this) && isset($this->_default_error_mode)) { - $mode = $this->_default_error_mode; - $options = $this->_default_error_options; - // Global error handler - } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { - $mode = $GLOBALS['_PEAR_default_error_mode']; - $options = $GLOBALS['_PEAR_default_error_options']; - } - } - - if ($error_class !== null) { - $ec = $error_class; - } elseif (isset($this) && isset($this->_error_class)) { - $ec = $this->_error_class; - } else { - $ec = 'PEAR_Error'; - } - if ($skipmsg) { - $a = &new $ec($code, $mode, $options, $userinfo); - return $a; - } else { - $a = &new $ec($message, $code, $mode, $options, $userinfo); - return $a; - } - } - - // }}} - // {{{ throwError() - - /** - * Simpler form of raiseError with fewer options. In most cases - * message, code and userinfo are enough. - * - * @param string $message - * - */ - function &throwError($message = null, - $code = null, - $userinfo = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $a = &$this->raiseError($message, $code, null, null, $userinfo); - return $a; - } else { - $a = &PEAR::raiseError($message, $code, null, null, $userinfo); - return $a; - } - } - - // }}} - function staticPushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - $stack[] = array($def_mode, $def_options); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $def_mode = $mode; - $def_options = $options; - break; - - case PEAR_ERROR_CALLBACK: - $def_mode = $mode; - // class/object method callback - if (is_callable($options)) { - $def_options = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - $stack[] = array($mode, $options); - return true; - } - - function staticPopErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - return true; - } - - // {{{ pushErrorHandling() - - /** - * Push a new error handler on top of the error handler options stack. With this - * you can easily override the actual error handler for some code and restore - * it later with popErrorHandling. - * - * @param mixed $mode (same as setErrorHandling) - * @param mixed $options (same as setErrorHandling) - * - * @return bool Always true - * - * @see PEAR::setErrorHandling - */ - function pushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - if (isset($this) && is_a($this, 'PEAR')) { - $def_mode = &$this->_default_error_mode; - $def_options = &$this->_default_error_options; - } else { - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - } - $stack[] = array($def_mode, $def_options); - - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - $stack[] = array($mode, $options); - return true; - } - - // }}} - // {{{ popErrorHandling() - - /** - * Pop the last error handler used - * - * @return bool Always true - * - * @see PEAR::pushErrorHandling - */ - function popErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - return true; - } - - // }}} - // {{{ loadExtension() - - /** - * OS independant PHP extension load. Remember to take care - * on the correct extension name for case sensitive OSes. - * - * @param string $ext The extension name - * @return bool Success or not on the dl() call - */ - function loadExtension($ext) - { - if (!extension_loaded($ext)) { - // if either returns true dl() will produce a FATAL error, stop that - if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) { - return false; - } - if (OS_WINDOWS) { - $suffix = '.dll'; - } elseif (PHP_OS == 'HP-UX') { - $suffix = '.sl'; - } elseif (PHP_OS == 'AIX') { - $suffix = '.a'; - } elseif (PHP_OS == 'OSX') { - $suffix = '.bundle'; - } else { - $suffix = '.so'; - } - return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); - } - return true; - } - - // }}} -} - -// {{{ _PEAR_call_destructors() - -function _PEAR_call_destructors() -{ - global $_PEAR_destructor_object_list; - if (is_array($_PEAR_destructor_object_list) && - sizeof($_PEAR_destructor_object_list)) - { - reset($_PEAR_destructor_object_list); - if (PEAR::getStaticProperty('PEAR', 'destructlifo')) { - $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); - } - while (list($k, $objref) = each($_PEAR_destructor_object_list)) { - $classname = get_class($objref); - while ($classname) { - $destructor = "_$classname"; - if (method_exists($objref, $destructor)) { - $objref->$destructor(); - break; - } else { - $classname = get_parent_class($classname); - } - } - } - // Empty the object list to ensure that destructors are - // not called more than once. - $_PEAR_destructor_object_list = array(); - } - - // Now call the shutdown functions - if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) { - foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { - call_user_func_array($value[0], $value[1]); - } - } -} - -// }}} -/** - * Standard PEAR error class for PHP 4 - * - * This class is supserseded by {@link PEAR_Exception} in PHP 5 - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Gregory Beaver - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.5.0 - * @link http://pear.php.net/manual/en/core.pear.pear-error.php - * @see PEAR::raiseError(), PEAR::throwError() - * @since Class available since PHP 4.0.2 - */ -class PEAR_Error -{ - // {{{ properties - - var $error_message_prefix = ''; - var $mode = PEAR_ERROR_RETURN; - var $level = E_USER_NOTICE; - var $code = -1; - var $message = ''; - var $userinfo = ''; - var $backtrace = null; - - // }}} - // {{{ constructor - - /** - * PEAR_Error constructor - * - * @param string $message message - * - * @param int $code (optional) error code - * - * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN, - * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION - * - * @param mixed $options (optional) error level, _OR_ in the case of - * PEAR_ERROR_CALLBACK, the callback function or object/method - * tuple. - * - * @param string $userinfo (optional) additional user/debug info - * - * @access public - * - */ - function PEAR_Error($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - if ($mode === null) { - $mode = PEAR_ERROR_RETURN; - } - $this->message = $message; - $this->code = $code; - $this->mode = $mode; - $this->userinfo = $userinfo; - if (!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) { - $this->backtrace = debug_backtrace(); - if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) { - unset($this->backtrace[0]['object']); - } - } - if ($mode & PEAR_ERROR_CALLBACK) { - $this->level = E_USER_NOTICE; - $this->callback = $options; - } else { - if ($options === null) { - $options = E_USER_NOTICE; - } - $this->level = $options; - $this->callback = null; - } - if ($this->mode & PEAR_ERROR_PRINT) { - if (is_null($options) || is_int($options)) { - $format = "%s"; - } else { - $format = $options; - } - printf($format, $this->getMessage()); - } - if ($this->mode & PEAR_ERROR_TRIGGER) { - trigger_error($this->getMessage(), $this->level); - } - if ($this->mode & PEAR_ERROR_DIE) { - $msg = $this->getMessage(); - if (is_null($options) || is_int($options)) { - $format = "%s"; - if (substr($msg, -1) != "\n") { - $msg .= "\n"; - } - } else { - $format = $options; - } - die(sprintf($format, $msg)); - } - if ($this->mode & PEAR_ERROR_CALLBACK) { - if (is_callable($this->callback)) { - call_user_func($this->callback, $this); - } - } - if ($this->mode & PEAR_ERROR_EXCEPTION) { - trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING); - eval('$e = new Exception($this->message, $this->code);throw($e);'); - } - } - - // }}} - // {{{ getMode() - - /** - * Get the error mode from an error object. - * - * @return int error mode - * @access public - */ - function getMode() { - return $this->mode; - } - - // }}} - // {{{ getCallback() - - /** - * Get the callback function/method from an error object. - * - * @return mixed callback function or object/method array - * @access public - */ - function getCallback() { - return $this->callback; - } - - // }}} - // {{{ getMessage() - - - /** - * Get the error message from an error object. - * - * @return string full error message - * @access public - */ - function getMessage() - { - return ($this->error_message_prefix . $this->message); - } - - - // }}} - // {{{ getCode() - - /** - * Get error code from an error object - * - * @return int error code - * @access public - */ - function getCode() - { - return $this->code; - } - - // }}} - // {{{ getType() - - /** - * Get the name of this error/exception. - * - * @return string error/exception name (type) - * @access public - */ - function getType() - { - return get_class($this); - } - - // }}} - // {{{ getUserInfo() - - /** - * Get additional user-supplied information. - * - * @return string user-supplied information - * @access public - */ - function getUserInfo() - { - return $this->userinfo; - } - - // }}} - // {{{ getDebugInfo() - - /** - * Get additional debug information supplied by the application. - * - * @return string debug information - * @access public - */ - function getDebugInfo() - { - return $this->getUserInfo(); - } - - // }}} - // {{{ getBacktrace() - - /** - * Get the call backtrace from where the error was generated. - * Supported with PHP 4.3.0 or newer. - * - * @param int $frame (optional) what frame to fetch - * @return array Backtrace, or NULL if not available. - * @access public - */ - function getBacktrace($frame = null) - { - if (defined('PEAR_IGNORE_BACKTRACE')) { - return null; - } - if ($frame === null) { - return $this->backtrace; - } - return $this->backtrace[$frame]; - } - - // }}} - // {{{ addUserInfo() - - function addUserInfo($info) - { - if (empty($this->userinfo)) { - $this->userinfo = $info; - } else { - $this->userinfo .= " ** $info"; - } - } - - // }}} - // {{{ toString() - - /** - * Make a string representation of this object. - * - * @return string a string with an object summary - * @access public - */ - function toString() { - $modes = array(); - $levels = array(E_USER_NOTICE => 'notice', - E_USER_WARNING => 'warning', - E_USER_ERROR => 'error'); - if ($this->mode & PEAR_ERROR_CALLBACK) { - if (is_array($this->callback)) { - $callback = (is_object($this->callback[0]) ? - strtolower(get_class($this->callback[0])) : - $this->callback[0]) . '::' . - $this->callback[1]; - } else { - $callback = $this->callback; - } - return sprintf('[%s: message="%s" code=%d mode=callback '. - 'callback=%s prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - $callback, $this->error_message_prefix, - $this->userinfo); - } - if ($this->mode & PEAR_ERROR_PRINT) { - $modes[] = 'print'; - } - if ($this->mode & PEAR_ERROR_TRIGGER) { - $modes[] = 'trigger'; - } - if ($this->mode & PEAR_ERROR_DIE) { - $modes[] = 'die'; - } - if ($this->mode & PEAR_ERROR_RETURN) { - $modes[] = 'return'; - } - return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. - 'prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - implode("|", $modes), $levels[$this->level], - $this->error_message_prefix, - $this->userinfo); - } - - // }}} -} - -/* - * Local Variables: - * mode: php - * tab-width: 4 - * c-basic-offset: 4 - * End: - */ -?> diff --git a/modules/springnote/springnote.model.php b/modules/springnote/springnote.model.php index 59e1f2d9e..8f9112739 100644 --- a/modules/springnote/springnote.model.php +++ b/modules/springnote/springnote.model.php @@ -5,7 +5,7 @@ * @brief springnote모듈의 model 클래스 **/ - set_include_path("./modules/springnote/lib/PEAR"); + set_include_path("./libs/PEAR"); require_once('PEAR.php'); require_once('HTTP/Request.php'); From 1740ebb83c3387883c23a0dab3d5f4093ef855f4 Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 7 Jan 2008 02:20:28 +0000 Subject: [PATCH 033/278] =?UTF-8?q?PEAR=20link=EB=A5=BC=20libs=EB=B0=91?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3474 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/lifepod.model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lifepod/lifepod.model.php b/modules/lifepod/lifepod.model.php index 05f169192..f41eff6f4 100644 --- a/modules/lifepod/lifepod.model.php +++ b/modules/lifepod/lifepod.model.php @@ -5,7 +5,7 @@ * @brief lifepod모듈의 model 클래스 **/ - set_include_path("./modules/springnote/lib/PEAR"); + set_include_path("./libs/PEAR"); require_once('PEAR.php'); require_once('HTTP/Request.php'); require_once('./classes/xml/GeneralXmlParser.class.php'); From 566a3ff8b5c1922975052da416f18fefc77ebc9d Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 03:40:36 +0000 Subject: [PATCH 034/278] =?UTF-8?q?#16=20=EC=97=90=EB=94=94=ED=84=B0=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EC=97=90=20=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=EB=B3=84=20=EC=82=AC=EC=9A=A9=20=EA=B6=8C=ED=95=9C?= =?UTF-8?q?=EC=9D=84=20=EC=A0=81=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3475 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/editor.admin.controller.php | 3 ++ modules/editor/editor.admin.view.php | 6 +++ modules/editor/editor.model.php | 53 ++++++++++++++++++++-- modules/editor/tpl/admin_index.html | 8 +--- modules/editor/tpl/setup_component.html | 10 ++++ 5 files changed, 68 insertions(+), 12 deletions(-) diff --git a/modules/editor/editor.admin.controller.php b/modules/editor/editor.admin.controller.php index 56a23d1ff..2de466aad 100644 --- a/modules/editor/editor.admin.controller.php +++ b/modules/editor/editor.admin.controller.php @@ -85,6 +85,9 @@ unset($extra_vars->component_name); unset($extra_vars->module); unset($extra_vars->act); + unset($extra_vars->body); + + if($extra_vars->target_group) $extra_vars->target_group = explode('|@|', $extra_vars->target_group); $args->component_name = $component_name; $args->extra_vars = serialize($extra_vars); diff --git a/modules/editor/editor.admin.view.php b/modules/editor/editor.admin.view.php index 9333dc4d0..128ddfc2b 100644 --- a/modules/editor/editor.admin.view.php +++ b/modules/editor/editor.admin.view.php @@ -34,10 +34,16 @@ function dispEditorAdminSetupComponent() { $component_name = Context::get('component_name'); + // 에디터 컴포넌트의 정보를 구함 $oEditorModel = &getModel('editor'); $component = $oEditorModel->getComponent($component_name); Context::set('component', $component); + // 그룹 설정을 위한 그룹 목록을 구함 + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + Context::set('group_list', $group_list); + $this->setTemplatePath($this->module_path.'tpl'); $this->setTemplateFile('setup_component'); $this->setLayoutFile("popup_layout"); diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index e5d82e066..521c3f3c6 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -246,6 +246,15 @@ // 파일목록을 구함 $downloaded_list = FileHandler::readDir($this->module_path.'components'); + // 로그인 여부 및 소속 그룹 구함 + $is_logged = Context::get('is_logged'); + if($is_logged) { + $logged_info = Context::get('logged_info'); + if($logged_info->group_list && is_array($logged_info->group_list)) { + $group_list = array_keys($logged_info->group_list); + } else $group_list = array(); + } + // DB 목록을 loop돌면서 xml정보까지 구함 if(!is_array($db_list)) $db_list = array($db_list); foreach($db_list as $component) { @@ -259,10 +268,33 @@ $xml_info = $this->getComponentXmlInfo($component_name); $xml_info->enabled = $component->enabled; - if($component->extra_vars && $xml_info->extra_vars) { + if($component->extra_vars) { $extra_vars = unserialize($component->extra_vars); - foreach($xml_info->extra_vars as $key => $val) { - $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + + // 사용권한이 있으면 권한 체크 + if($extra_vars->target_group) { + // 사용권한이 체크되어 있는데 로그인이 되어 있지 않으면 무조건 사용 중지 + if(!$is_logged) continue; + + // 대상 그룹을 구해서 현재 로그인 사용자의 그룹과 비교 + $target_group = $extra_vars->target_group; + unset($extra_vars->target_group); + + $is_granted = false; + foreach($group_list as $group_srl) { + if(in_array($group_srl, $target_group)) { + $is_granted = true; + break; + } + } + if(!$is_granted) continue; + } + + // 에디터 컴포넌트의 설정 정보를 체크 + if($xml_info->extra_vars) { + foreach($xml_info->extra_vars as $key => $val) { + $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + } } } @@ -309,13 +341,24 @@ $xml_info = $this->getComponentXmlInfo($component_name); $xml_info->enabled = $component->enabled; + $xml_info->target_group = array(); + if($component->extra_vars) { $extra_vars = unserialize($component->extra_vars); - foreach($xml_info->extra_vars as $key => $val) { - $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + + if($extra_vars->target_group) { + $xml_info->target_group = $extra_vars->target_group; + unset($extra_vars->target_group); + } + + if($xml_info->extra_vars) { + foreach($xml_info->extra_vars as $key => $val) { + $xml_info->extra_vars->{$key}->value = $extra_vars->{$key}; + } } } + return $xml_info; } diff --git a/modules/editor/tpl/admin_index.html b/modules/editor/tpl/admin_index.html index fb39500f0..4204e4c51 100644 --- a/modules/editor/tpl/admin_index.html +++ b/modules/editor/tpl/admin_index.html @@ -75,13 +75,7 @@
- + + + + + + +
{$xml_info->version} {$xml_info->author->name} {$xml_info->author->date} - - {$lang->cmd_setup} - -   - - {$lang->cmd_setup} {$lang->cmd_enable} diff --git a/modules/editor/tpl/setup_component.html b/modules/editor/tpl/setup_component.html index 0191d5b7a..bbd8a0016 100644 --- a/modules/editor/tpl/setup_component.html +++ b/modules/editor/tpl/setup_component.html @@ -34,6 +34,16 @@
{$lang->grant} + +
target_group))-->checked="checked" id="group_{$key}">  
+ +
From 50d0073ba1eeacb03f1e72ba7021c4fe92416ea6 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 05:32:27 +0000 Subject: [PATCH 035/278] =?UTF-8?q?ccl=20=EC=97=90=EB=94=94=ED=84=B0=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3476 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../cc_license/cc_license.class.php | 100 ++++++++++++++++++ .../editor/components/cc_license/ccl_logo.gif | Bin 0 -> 1611 bytes modules/editor/components/cc_license/icon.gif | Bin 0 -> 1193 bytes modules/editor/components/cc_license/info.xml | 8 ++ .../components/cc_license/lang/ko.lang.php | 29 +++++ .../components/cc_license/tpl/popup.html | 50 +++++++++ .../editor/components/cc_license/tpl/popup.js | 68 ++++++++++++ 7 files changed, 255 insertions(+) create mode 100755 modules/editor/components/cc_license/cc_license.class.php create mode 100644 modules/editor/components/cc_license/ccl_logo.gif create mode 100644 modules/editor/components/cc_license/icon.gif create mode 100755 modules/editor/components/cc_license/info.xml create mode 100644 modules/editor/components/cc_license/lang/ko.lang.php create mode 100755 modules/editor/components/cc_license/tpl/popup.html create mode 100755 modules/editor/components/cc_license/tpl/popup.js diff --git a/modules/editor/components/cc_license/cc_license.class.php b/modules/editor/components/cc_license/cc_license.class.php new file mode 100755 index 000000000..5a4286317 --- /dev/null +++ b/modules/editor/components/cc_license/cc_license.class.php @@ -0,0 +1,100 @@ + + * @brief CCL 출력 에디터 컴포넌트 + **/ + + class cc_license extends EditorHandler { + + // editor_sequence 는 에디터에서 필수로 달고 다녀야 함 + var $editor_sequence = 0; + var $component_path = ''; + + /** + * @brief editor_sequence과 컴포넌트의 경로를 받음 + **/ + function cc_license($editor_sequence, $component_path) { + $this->editor_sequence = $editor_sequence; + $this->component_path = $component_path; + } + + /** + * @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다 + **/ + function getPopupContent() { + // 템플릿을 미리 컴파일해서 컴파일된 소스를 return + $tpl_path = $this->component_path.'tpl'; + $tpl_file = 'popup.html'; + + Context::set("tpl_path", $tpl_path); + + $oTemplate = &TemplateHandler::getInstance(); + return $oTemplate->compile($tpl_path, $tpl_file); + } + + /** + * @brief 에디터 컴포넌트가 별도의 고유 코드를 이용한다면 그 코드를 html로 변경하여 주는 method + * + * 이미지나 멀티미디어, 설문등 고유 코드가 필요한 에디터 컴포넌트는 고유코드를 내용에 추가하고 나서 + * DocumentModule::transContent() 에서 해당 컴포넌트의 transHtml() method를 호출하여 고유코드를 html로 변경 + **/ + function transHTML($xml_obj) { + // 지정된 옵션을 구함 + $ccl_title = $xml_obj->attrs->ccl_title; + $ccl_use_mark = $xml_obj->attrs->ccl_use_mark; + $ccl_allow_commercial = $xml_obj->attrs->ccl_allow_commercial; + $ccl_allow_modification = $xml_obj->attrs->ccl_allow_modification; + + // 가로/ 세로 크기를 구함 + preg_match_all('/(width|height)([^[:digit:]]+)([^;^"^\']*)/i',$xml_obj->attrs->style,$matches); + $width = trim($matches[3][0]); + if(!$width) $width = "90%"; + $height = trim($matches[3][1]); + if(!$height) $height = "50"; + + // 언어파일을 읽음 + Context::loadLang($this->component_path.'/lang'); + $default_title = Context::getLang('ccl_default_title'); + if(!$ccl_title) $ccl_title = $default_title; + + $default_message = Context::getLang('ccl_default_message'); + + $option = Context::getLang('ccl_options'); + + // 영리 이용 체크 + if($ccl_allow_commercial == 'N') $opt1 = '-nc'; + else $opt1 = ''; + + // 수정 표시 체크 + if($ccl_allow_modification == 'N') $opt2 = '-nd'; + elseif($ccl_allow_modification == 'SA') $opt2 = '-sa'; + else $opt2 = ''; + + // 버전 + $version = '/3.0'; + + // 언어에 따른 설정 + $lang_type = Context::getLangType(); + if($lang_type != 'en') $lang_file = 'deed.'.strtolower($lang_file); + + // 마크 이용시 + $ccl_image = ''; + if($ccl_use_mark == "Y") { + $ccl_image = sprintf(' + Creative Commons License
', + $opt1, $opt2, $version, $lang_file, + $opt1, $opt2, $version, $lang_file + ); + } + + // 결과물 생성 + $text = $ccl_image . sprintf($default_message, $opt1, $opt2, $opt3, $opt4, $ccl_title, $option['ccl_allow_commercial'][$ccl_allow_commercial], $option['ccl_allow_modification'][$ccl_allow_modification], $version); + + $style = sprintf('', $width); + $output = sprintf('%s
%s%s
', $style, $ccl_title, $text); + return $output; + } + } + +?> diff --git a/modules/editor/components/cc_license/ccl_logo.gif b/modules/editor/components/cc_license/ccl_logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c9f5122085afd71eb31e012aeb2876c936dc7d6 GIT binary patch literal 1611 zcmV-R2DJG{Nk%w1VORhk0Oo%Hw79d$%*MvZ#k#$@#>v9U%*n#V!NbPC$jZgJy|%o; zy2Qu9j*pJP!obDH#DIZ-ue7d1L_;VjC&0tL^z`(quc_13(z3R(u(hxI`}+a|0;Q^? zqN1X?y0|hjGUDRmTwGkWy0gvA&CJfqk&%(NytaLPeM?MBV`F2_&(DU2hTPrU@9*!j zx3L@@9LmbdxVyGfQ&YUYyU@_ky1%%2d3n^-)Tyee($dm8Iy$tpv=R~$t*x!JwzKQ& z>(|%Uv9_?SvaGYWvewwu4Gj&)$H$zUoV>iev9z$i!n?h}y#D_F{r&x}v#tF6{Qv&{ z&d|-j!M?q}ywTIp)Yj9_(ayHHwaLrKzQDb!u&Vg@_|4DE&C<-(*VL}Ct-rs&zr?KL|F^ofl$Mjn%*L0Omp?#2v9YoI`u+R){7+C$iHe9(Qc$q7 zud}tX(9+MWuB(HDgQ%>h2?_~uadB2xRsaD2|Ns90006A9tN;K1A^8LW004ggEC2ui z09XJY000O7fPZ^~go7G|g@=fUeT|Nfkdcy;l#+vEdm4XZeH{ZbSPcda4hUBTBdMuZ z2m%fU4OmhD04*4|w-CBbLA^nKz`?@9#Kp$MUUiwBo>C1CS0h_hQx;TRT~roRRa*rD zuu(J#B_ZbKEw;N&O~>x<@LqCvgB>&qVqjz=P*5rnMEdM$L?nWpDkCh2DF8+Rm=LsR zr2~RN7X)_jGHMJ4WCM^v1MnH(LZAu*7t0Ry(a>m*i!e~Qh)E+Rfr1h^bC#%85#z?6 z?>D5gCro}LQ{d?zvFhQD?7F@unl)03_2=?%87vWg{Al zp@$AFu>^u#d5l2>6anPuZ?K}maH@vq2GyttHoT$lWJ`PzM+9q_z=soTsF;KQ9pdrf zLLU)WFv0;KPtfBy^#xh5I~}q5!VDxdLc(rw#T>JxaxLMf1_u>jz|P7^aiM(|Bzm$j z72Gk$Krg&t!^S(TaAmGBYg(5R6a?hL6jMw%8z~cDF#vR|4P8tSUU;zw5nsF@0tc9Q zzyj16=Sl$|oAogU15`L5z-U;Q*1;K8SYfi*#N5yW2YA?R$I2kA_brl$1t^p%y9Wn^W$ySpJF zA z2nG=j3H<#0`}_Ow@a@LN#<;k+^78NZ_xAJi@%j1qwzjtX{QL9s^Y8EP_V)I?yu9n{ z>-P5a`1tsvqob;-s)vV%h=_>N($e_&_c}T{`uh2yp`qa5;Kanlw6wJ4<>gdVR8LP& zpr4?Be}Cxc=y-T|{{H@%nVF1?jN;VJ_sz}Br=y$G z&cNvC=P)ZGl8SWM+1KFU-?_4D*4Fp;_he*a+0@3guAtc2 z*tV*RxT}rr?d|NsC0A^8LW004ggEC2ui z02cs1000O7fPZ|0goTEOfDX z7zzr(8y47$R4oG+C0Kb0B?3GuK01FW6_R|RYJ%?2!sWOj*fb?Ac)Y9nL7k<81VDLhm{s=VDv)fsEdXY z1e{1nks^rBos$eCuy8~I0}+#CVIsvx(bP$i1RdJC_0JzYV8eT6C zp0{xS0=eS6drb*rQ=5PA?JQ2Z`+!%bGolHm#Z&+kOPlzCoPJwr=0T zjq|hN0P)}h{17(+VO_g-@#fWg^L#*bBj8c&>-R6|y1VSZ1lES6X)IWtBzXA?BE5mPuw2doY2=3w^Zd=9_S~`GOx# z;t}Vaangx{op5Hc1qUdk(E$i~;xGfBZjyikWvry&0h}cw+6M`tHIfSeZ$|2777)1R z$S`rZX<-70ZjqZa&`3i~3p}*xM*=+{%E58ofFlk$MY!6-0DRs+fpzY{BM&_RK;f!) zh;lKWKL80t&=Y$cD*&P$$mbA55>eEItHL1)LVz531kxH>aJz)09z>W@3l507gbb4Q zF@c9P+0=pvnKl-0A7`*Q6b9|)3-6sg6p@6F + + Creative Commons Licenses + + zero + CCL 라이센스를 출력합니다. + + diff --git a/modules/editor/components/cc_license/lang/ko.lang.php b/modules/editor/components/cc_license/lang/ko.lang.php new file mode 100644 index 000000000..c535a447e --- /dev/null +++ b/modules/editor/components/cc_license/lang/ko.lang.php @@ -0,0 +1,29 @@ + + * @brief 위지윅에디터(editor) 모듈 > CCL 출력 에디터 컴포넌트 + **/ + + $lang->ccl_default_title = '크리에이티브 커먼즈 코리아 저작자표시'; + $lang->ccl_default_message = '이 저작물은 %s%s%s%s에 따라 이용하실 수 있습니다'; + + $lang->ccl_title = '제목'; + $lang->ccl_use_mark = '마크 사용'; + $lang->ccl_allow_commercial = '영리목적 허용'; + $lang->ccl_allow_modification = '저작물 변경 허용'; + + $lang->ccl_allow = '허용'; + $lang->ccl_disallow = '금지'; + $lang->ccl_sa = '동일 조건 변경'; + + $lang->ccl_options = array( + 'ccl_allow_commercial' => array('Y'=>'-영리', 'N'=>'-비영리'), + 'ccl_allow_modification' => array('Y'=>'-변경금지', 'N'=>'-변경금지', 'SA'=>'-동일조건변경허락'), + ); + + $lang->about_ccl_title = '제목을 표시합니다. 비워져 있으면 기본 메세지가 출력됩니다.'; + $lang->about_ccl_use_mark = '마크의 출력 여부를 선택할 수 있습니다. (기본: 출력)'; + $lang->about_ccl_allow_commercial = '영리목적 이용을 허가 여부를 선택할 수 있습니다 (기본: 허용안함)'; + $lang->about_ccl_allow_modification = '저작물의 변경 여부를 허용할 수 있습니다. (기본: 동일 조건 변경)'; +?> diff --git a/modules/editor/components/cc_license/tpl/popup.html b/modules/editor/components/cc_license/tpl/popup.html new file mode 100755 index 000000000..40b2396ab --- /dev/null +++ b/modules/editor/components/cc_license/tpl/popup.html @@ -0,0 +1,50 @@ + + + +
+

{$component_info->title} ver. {$component_info->version}

+
+ +
+
+ + + + + + + + + + + + + + + + + + + +
{$lang->ccl_title} + +

{$lang->about_ccl_title}

+
{$lang->ccl_use_mark} + +

{$lang->about_ccl_use_mark}

+
{$lang->ccl_allow_commercial} + +

{$lang->about_ccl_allow_commercial}

+
{$lang->ccl_allow_modification} + +

{$lang->about_ccl_allow_modification}

+
+
+ + + +
diff --git a/modules/editor/components/cc_license/tpl/popup.js b/modules/editor/components/cc_license/tpl/popup.js new file mode 100755 index 000000000..7cb2cf1b2 --- /dev/null +++ b/modules/editor/components/cc_license/tpl/popup.js @@ -0,0 +1,68 @@ +/** + * popup으로 열렸을 경우 부모창의 위지윅에디터에 select된 멀티미디어 컴포넌트 코드를 체크하여 + * 있으면 가져와서 원하는 곳에 삽입 + **/ +var selected_node = null; +function getCode() { + // 부모 위지윅 에디터에서 선택된 영역이 있는지 확인 + if(typeof(opener)=='undefined') return; + + // 부모창의 선택된 객체가 img가 아니면 pass~ + var node = opener.editorPrevNode; + if(!node || node.nodeName != 'IMG') return; + + selected_node = node; + + // 이미 정의되어 있는 변수에서 데이터를 구함 + var ccl_title = node.getAttribute('ccl_title'); + var ccl_use_mark = node.getAttribute('ccl_use_mark'); + var ccl_allow_commercial = node.getAttribute('ccl_allow_commercial'); + var ccl_allow_modification = node.getAttribute('ccl_allow_modification'); + + // form문에 적용 + var fo_obj = xGetElementById('fo'); + fo_obj.ccl_title.value = ccl_title; + + if(ccl_use_mark == 'Y') fo_obj.ccl_use_mark.selectedIndex = 0; + else fo_obj.ccl_use_mark.selectedIndex = 1; + + if(ccl_allow_commercial == 'Y') fo_obj.ccl_allow_commercial.selectedIndex = 0; + else fo_obj.ccl_allow_commercial.selectedIndex = 1; + + if(ccl_allow_modification == 'Y') fo_obj.ccl_allow_modification.selectedIndex = 0; + else if(ccl_allow_modification== 'N') fo_obj.ccl_allow_modification.selectedIndex = 1; + else fo_obj.ccl_allow_modification.selectedIndex = 2; +} + +/* 추가 버튼 클릭시 부모창의 위지윅 에디터에 인용구 추가 */ +function insertCode() { + if(typeof(opener)=='undefined') return; + + var fo_obj = xGetElementById('fo'); + + var ccl_title = escape(fo_obj.ccl_title.value); + var ccl_use_mark = fo_obj.ccl_use_mark.options[fo_obj.ccl_use_mark.selectedIndex].value; + var ccl_allow_commercial = fo_obj.ccl_allow_commercial.options[fo_obj.ccl_allow_commercial.selectedIndex].value; + var ccl_allow_modification = fo_obj.ccl_allow_modification.options[fo_obj.ccl_allow_modification.selectedIndex].value; + + var content = ''; + + var style = "width:90%; margin:20px auto 20px auto; height:50px; border:1px solid #c0c0c0; background: transparent url('./modules/editor/components/cc_license/ccl_logo.gif') no-repeat center center;"; + + var text = '
ccl
'; + + if(selected_node) { + selected_node.setAttribute('ccl_title', ccl_title); + selected_node.setAttribute('ccl_use_mark', ccl_use_mark); + selected_node.setAttribute('ccl_allow_commercial', ccl_allow_commercial); + selected_node.setAttribute('ccl_allow_modification', ccl_allow_modification); + } else { + opener.editorFocus(opener.editorPrevSrl); + var iframe_obj = opener.editorGetIFrame(opener.editorPrevSrl) + opener.editorReplaceHTML(iframe_obj, text); + } + opener.editorFocus(opener.editorPrevSrl); + window.close(); +} + +xAddEventListener(window, 'load', getCode); From dbb2b15dc8aa81ff92de5d3ec5c3af7d7ef3ec86 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 06:30:12 +0000 Subject: [PATCH 036/278] =?UTF-8?q?r3467=EC=97=90=EC=84=9C=20{@=20?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94=20=EC=A4=84?= =?UTF-8?q?=EB=82=98=EB=88=94=EC=9D=84=20=ED=97=88=EC=9A=A9=ED=95=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4=20{@=20=EB=A1=9C=20=EC=8B=9C=EC=9E=91?= =?UTF-8?q?=ED=95=98=EB=8A=94=20js/=20css=EB=A5=BC=20=EC=B0=BE=EC=95=84?= =?UTF-8?q?=EB=B3=B4=EC=95=98=EB=8A=94=EB=8D=B0=20=EC=B0=BE=EC=A7=80=20?= =?UTF-8?q?=EB=AA=BB=ED=95=98=EC=98=80=EA=B3=A0=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=EC=97=90=20{@=20=EB=A5=BC=20=EC=A4=84?= =?UTF-8?q?=EB=82=98=EB=88=94=EC=9C=BC=EB=A1=9C=20=EC=A0=95=EC=9D=98?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EA=B3=B3=EC=9D=B4=20=EC=9E=88=EC=96=B4?= =?UTF-8?q?=EC=84=9C=20{@=EC=97=90=20=EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94?= =?UTF-8?q?=20rollback=ED=95=A9=EB=8B=88=EB=8B=A4.=20#357?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3477 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 35b15dc63..6807faed0 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -110,7 +110,7 @@ $buff = preg_replace_callback('/\{[^@^ ]([^\{\}\n]+)\}/i', array($this, '_compileVarToContext'), $buff); // 결과를 출력하지 않는 구문 변경 - $buff = preg_replace_callback('/\{\@([^\{\}\n]+)\}/i', array($this, '_compileVarToSilenceExecute'), $buff); + $buff = preg_replace_callback('/\{\@([^\{\}]+)\}/i', array($this, '_compileVarToSilenceExecute'), $buff); // 의 변경 $buff = preg_replace_callback('!<\!--@(.*?)-->!is', array($this, '_compileFuncToCode'), $buff); From 3fb36cfb3e8ebdc7bc3e41fe795f16354f8c7753 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 06:34:31 +0000 Subject: [PATCH 037/278] =?UTF-8?q?#147=20=EB=B8=94=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A8=EC=97=90=20=EB=A9=94=EB=89=B4=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=EC=8B=9C=20=EA=B0=81=20=EB=A9=94=EB=89=B4=EB=93=A4?= =?UTF-8?q?=EC=9D=98=20layout=EC=9D=84=20=EC=9E=90=EB=8F=99=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B8=94=EB=A1=9C=EA=B7=B8=20=EC=8A=A4=ED=82=A8?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3478 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/blog/blog.admin.controller.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/blog/blog.admin.controller.php b/modules/blog/blog.admin.controller.php index 42dfd8e67..500768320 100644 --- a/modules/blog/blog.admin.controller.php +++ b/modules/blog/blog.admin.controller.php @@ -125,6 +125,7 @@ } // 정해진 메뉴가 있으면 모듈 및 메뉴에 대한 레이아웃 연동 + /* if(count($menu_srl_list)) { // 해당 메뉴와 레이아웃 값을 매핑 $oMenuAdminController = &getAdminController('menu'); @@ -133,6 +134,7 @@ // 해당 메뉴에 속한 mid의 layout값을 모두 변경 $oModuleController->updateModuleLayout($module_srl, $menu_srl_list); } + */ } // serialize하여 저장 From 8995cae0cc723bc0ea67e8cbcbca355bce4d76e6 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 07:37:37 +0000 Subject: [PATCH 038/278] blog module make categories cache file by php git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3479 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/blog/blog.admin.controller.php | 8 +-- modules/blog/blog.class.php | 2 +- modules/blog/blog.view.php | 1 + modules/document/document.controller.php | 67 +++++++++++++++++-- modules/document/document.model.php | 14 +++- .../importer/importer.admin.controller.php | 2 +- modules/menu/menu.admin.controller.php | 1 + modules/menu/tpl/menu_item_info.html | 2 +- 8 files changed, 85 insertions(+), 12 deletions(-) diff --git a/modules/blog/blog.admin.controller.php b/modules/blog/blog.admin.controller.php index 500768320..e63cab21b 100644 --- a/modules/blog/blog.admin.controller.php +++ b/modules/blog/blog.admin.controller.php @@ -331,7 +331,7 @@ } // XML 파일을 갱신하고 위치을 넘겨 받음 - $xml_file = $oDocumentController->makeCategoryXmlFile($args->module_srl); + $xml_file = $oDocumentController->makeCategoryFile($args->module_srl); $oDB->commit(); @@ -403,7 +403,7 @@ } // XML 파일을 갱신하고 위치을 넘겨 받음 - $xml_file = $oDocumentController->makeCategoryXmlFile($args->module_srl); + $xml_file = $oDocumentController->makeCategoryFile($args->module_srl); $oDB->commit(); @@ -440,7 +440,7 @@ if(!$output->toBool()) return $output; // xml파일 재생성 - $xml_file = $oDocumentController->makeCategoryXmlFile($source_category->module_srl); + $xml_file = $oDocumentController->makeCategoryFile($source_category->module_srl); // return 변수 설정 $this->add('xml_file', $xml_file); @@ -459,7 +459,7 @@ // xml파일 재생성 $oDocumentController = &getController('document'); - $xml_file = $oDocumentController->makeCategoryXmlFile($module_srl); + $xml_file = $oDocumentController->makeCategoryFile($module_srl); // return 값 설정 $this->add('xml_file',$xml_file); diff --git a/modules/blog/blog.class.php b/modules/blog/blog.class.php index 1a5c80c7c..4af48a94d 100644 --- a/modules/blog/blog.class.php +++ b/modules/blog/blog.class.php @@ -82,7 +82,7 @@ // 블로그 모듈에서 사용되는 모든 메뉴 목록을 재 생성 foreach($list as $blog_item) { $module_srl = $blog_item->module_srl; - $oDocumentController->makeCategoryXmlFile($module_srl); + $oDocumentController->makeCategoryFile($module_srl); } } diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index 3809afc3b..948105723 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -45,6 +45,7 @@ // 카테고리 xml 파일 위치 지정 $this->module_info->category_xml_file = getUrl().$oDocumentModel->getCategoryXmlFile($this->module_info->module_srl); + $this->module_info->category_php_file = $oDocumentModel->getCategoryPhpFile($this->module_info->module_srl); // 메뉴 등록시 메뉴 정보를 구해옴 if($this->module_info->menu) { diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 007dfb120..899aadc47 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -537,7 +537,7 @@ $args->category_srl = $category_srl; $args->document_count = $document_count; $output = executeQuery('document.updateCategoryCount', $args); - if($output->toBool()) $this->makeCategoryXmlFile($module_srl); + if($output->toBool()) $this->makeCategoryFile($module_srl); return $output; } @@ -688,10 +688,10 @@ } /** - * @brief 카테고리를 xml파일로 저장 + * @brief 카테고리를 캐시 파일로 저장 **/ - function makeCategoryXmlFile($module_srl) { - // xml파일 생성시 필요한 정보가 없으면 그냥 return + function makeCategoryFile($module_srl) { + // 캐시 파일 생성시 필요한 정보가 없으면 그냥 return if(!$module_srl) return; // 모듈 정보를 가져옴 (mid를 구하기 위해) @@ -703,6 +703,7 @@ // 캐시 파일의 이름을 지정 $xml_file = sprintf("./files/cache/document_category/%s.xml.php", $module_srl); + $php_file = sprintf("./files/cache/document_category/%s.php", $module_srl); // DB에서 module_srl 에 해당하는 카테고리 목록을 listorder순으로 구해옴 $oDocumentModel = &getModel('document'); @@ -712,6 +713,7 @@ if(!$list) { $xml_buff = ""; FileHandler::writeFile($xml_file, $xml_buff); + FileHandler::writeFile($php_file, ''); return $xml_file; } @@ -739,8 +741,13 @@ // xml 캐시 파일 생성 $xml_buff = sprintf('%s', $php_script, $this->getXmlTree($tree[0], $tree)); + // php 캐시 파일 생성 + $php_output = $this->getPhpCacheCode($tree[0], $tree); + $php_buff = sprintf('list = array(%s); ?>', $php_output['category_title_str'], $php_output['buff']); + // 파일 저장 FileHandler::writeFile($xml_file, $xml_buff); + FileHandler::writeFile($php_file, $php_buff); return $xml_file; } @@ -782,5 +789,57 @@ } return $buff; } + + /** + * @brief array로 정렬된 노드들을 php code로 변경하여 return + * 메뉴에서 메뉴를 tpl에 사용시 xml데이터를 사용할 수도 있지만 별도의 javascript 사용이 필요하기에 + * php로 된 캐시파일을 만들어서 db이용없이 바로 메뉴 정보를 구할 수 있도록 한다 + * 이 캐시는 ModuleHandler::displayContent() 에서 include하여 Context::set() 한다 + **/ + function getPhpCacheCode($source_node, $tree) { + $output = array("buff"=>"", "category_srl_list"=>array()); + if(!$source_node) return $output; + + foreach($source_node as $category_srl => $node) { + // 자식 노드가 있으면 자식 노드의 데이터를 먼저 얻어옴 + if($category_srl&&$tree[$category_srl]) $child_output = $this->getPhpCacheCode($tree[$category_srl], $tree); + else $child_output = array("buff"=>"", "category_srl_list"=>array()); + + // 변수 정리 + $category_title_str = sprintf('$_category_title[%d] = "%s"; %s', $node->category_srl, $node->title, $child_output['category_title_str']); + + // 현재 노드의 url값이 공란이 아니라면 category_srl_list 배열값에 입력 + $child_output['category_srl_list'][] = $node->category_srl; + $output['category_srl_list'] = array_merge($output['category_srl_list'], $child_output['category_srl_list']); + + // node->group_srls값이 있으면 + if($node->group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$node->group_srls); + else $group_check_code = "true"; + + // 변수 정리 + $selected = '"'.implode('","',$child_output['category_srl_list']).'"'; + $child_buff = $child_output['buff']; + $expand = $node->expand; + + // 속성을 생성한다 ( category_srl_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) + $attribute = sprintf( + '"node_srl"=>"%s","category_srl"=>"%s","parent_srl"=>"%s","text"=>%s?$_category_title[%d]:"","selected"=>(in_array(Context::get("category"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s)', + $node->category_srl, + $node->category_srl, + $node->parent_srl, + $group_check_code, + $node->category_srl, + $selected, + $expand, + $child_buff + ); + + // buff 데이터를 생성한다 + $output['buff'] .= sprintf('%s=>array(%s),', $node->category_srl, $attribute); + $output['category_title_str'] .= $category_title_str; + } + return $output; + } + } ?> diff --git a/modules/document/document.model.php b/modules/document/document.model.php index ddb7a4b7c..312384950 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -461,11 +461,23 @@ $xml_file = sprintf('files/cache/document_category/%s.xml.php',$module_srl); if(!file_exists($xml_file)) { $oDocumentController = &getController('document'); - $oDocumentController->makeCategoryXmlFile($module_srl); + $oDocumentController->makeCategoryFile($module_srl); } return $xml_file; } + /** + * @brief 문서 category정보의 php 캐시 파일을 return + **/ + function getCategoryPhpFile($module_srl) { + $php_file = sprintf('files/cache/document_category/%s.php',$module_srl); + if(!file_exists($php_file)) { + $oDocumentController = &getController('document'); + $oDocumentController->makeCategoryFile($module_srl); + } + return $php_file; + } + /** * @brief 월별 글 보관현황을 가져옴 **/ diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 506d5495e..725ba5c13 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -1061,7 +1061,7 @@ $this->insertTTCategory($xml_doc, 0, $module_srl, $category_titles); // 입력완료 후 카테고리 xml파일 재생성 - $this->oDocumentController->makeCategoryXmlFile($module_srl); + $this->oDocumentController->makeCategoryFile($module_srl); $xml_doc = null; } diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 6c5440a40..f38a676ec 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -272,6 +272,7 @@ if(!$list) { $xml_buff = ""; FileHandler::writeFile($xml_file, $xml_buff); + FileHandler::writeFile($php_file, ''); return $xml_file; } diff --git a/modules/menu/tpl/menu_item_info.html b/modules/menu/tpl/menu_item_info.html index 04555040a..a1a15fd90 100644 --- a/modules/menu/tpl/menu_item_info.html +++ b/modules/menu/tpl/menu_item_info.html @@ -15,7 +15,7 @@ {@ $_row = 0;} - {$lang->menu_name} + {$lang->menu_name} {$val} {@ $_row ++ } From 6e9c022dc775646f8ae589312d0067cf68f3062a Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 07:46:03 +0000 Subject: [PATCH 039/278] =?UTF-8?q?#166=20rss=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=98=20=EB=85=B8=EC=B6=9C=20=EC=88=9C=EC=84=9C=EB=A5=BC=20?= =?UTF-8?q?=EC=B5=9C=EC=8B=A0=EC=88=9C=EC=9C=BC=EB=A1=9C=20=ED=95=98?= =?UTF-8?q?=EA=B3=A0=2015=EA=B0=9C=EB=A1=9C=20=EC=A0=9C=ED=95=9C=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3480 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/rss/rss.view.php | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/modules/rss/rss.view.php b/modules/rss/rss.view.php index 65f670bff..fca159005 100644 --- a/modules/rss/rss.view.php +++ b/modules/rss/rss.view.php @@ -25,18 +25,6 @@ **/ $mid = Context::get('mid'); ///< 대상 모듈 id, 없으면 전체로 - $page = (int)Context::get('page'); ///< 페이지, 없으면 1 - if(!$page) $page = 1; - - $list_count = (int)Context::get('list_count'); ///< 목록 갯수, 기본 10, 최고 100개 - if(!$list_count|| $list_count>100) $list_count = 10; - - $start_date = Context::get('start_date'); ///< 시작 일자, 없으면 무시 - if(strlen($start_date)!=14 || !ereg("^([0-9]){14}$", $start_date) ) unset($start_date); - - $end_date = Context::get('end_date'); ///< 종료 일자, 없으면 무시 - if(strlen($end_date)!=14 || !ereg("^([0-9]){14}$", $end_date) ) unset($end_date); - // rss module config를 가져옴 $oModuleModel = &getModel('module'); $rss_config = $oModuleModel->getModuleConfig('rss'); @@ -102,13 +90,12 @@ * 출력할 컨텐츠 추출을 위한 인자 정리 **/ $args->module_srl = $module_srl; - $args->page = $page; - $args->list_count = $list_count; - $args->page_count = 10; + $args->page = 1; + $args->list_count = 15; if($start_date) $args->start_date = $start_date; if($end_date) $args->end_date = $end_date; - $args->sort_index = 'update_order'; + $args->sort_index = 'list_order'; $args->order_type = 'asc'; // 대상 문서들을 가져옴 From 1fe9c2c88e130131865bbe75d143c44e479586af Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 08:56:39 +0000 Subject: [PATCH 040/278] =?UTF-8?q?#186=20=EA=B4=80=EB=A6=AC=EC=9E=90=20>?= =?UTF-8?q?=20=ED=9A=8C=EC=9B=90=20=EA=B4=80=EB=A6=AC=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=84=A0=ED=83=9D=EB=90=9C=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=EB=93=A4=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=9D=BC?= =?UTF-8?q?=EA=B4=84=20=EA=B7=B8=EB=A3=B9=20=EC=84=A4=EC=A0=95=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3481 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/conf/module.xml | 2 + modules/member/lang/en.lang.php | 1 + modules/member/lang/es.lang.php | 1 + modules/member/lang/jp.lang.php | 1 + modules/member/lang/ko.lang.php | 1 + modules/member/lang/ru.lang.php | 1 + modules/member/lang/zh-CN.lang.php | 1 + modules/member/member.admin.controller.php | 49 +++++++++++++++++ modules/member/member.admin.view.php | 17 ++++++ modules/member/queries/deleteMembersGroup.xml | 9 ++++ modules/member/queries/getMembers.xml | 14 +++++ .../member/tpl/filter/manage_member_group.xml | 8 +++ modules/member/tpl/js/member_admin.js | 26 +++++++++ modules/member/tpl/manage_member_group.html | 53 +++++++++++++++++++ modules/member/tpl/member_list.html | 13 +++++ 15 files changed, 197 insertions(+) create mode 100644 modules/member/queries/deleteMembersGroup.xml create mode 100644 modules/member/queries/getMembers.xml create mode 100644 modules/member/tpl/filter/manage_member_group.xml create mode 100644 modules/member/tpl/manage_member_group.html diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index 2c71982b4..8f7aeac52 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -32,6 +32,7 @@ + @@ -79,6 +80,7 @@ + diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index ce2692649..df5dac5ee 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -143,6 +143,7 @@ $lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages"; $lang->msg_disallow_message = 'Failed to send because receiver rejects message reception'; $lang->msg_insert_group_name = 'Please input name of group'; + $lang->msg_check_group = '그룹을 선택해 주세요'; $lang->msg_not_uploaded_profile_image = 'Profile image could not be registered'; $lang->msg_not_uploaded_image_name = 'Image name could not be registered'; diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index a83d5c1d1..57d30557d 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -142,6 +142,7 @@ $lang->msg_allow_message_to_friend = "Falló el envío por permitir sólo mensajes de sus amigos"; $lang->msg_disallow_message = 'Falló el envío por ser usuario rechazado para recibir mensajes'; $lang->msg_insert_group_name = 'Por favor ingresar el nombre del grupo'; + $lang->msg_check_group = '그룹을 선택해 주세요'; $lang->msg_not_uploaded_image_name = 'Imagen del nombre no puede ser registrado'; $lang->msg_not_uploaded_image_mark = 'Imagen de marca no puede ser resistrado'; diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index 6e0229f0c..c6cad0269 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -143,6 +143,7 @@ $lang->msg_allow_message_to_friend = '友達からのみメッセージを受信できるように設定したユーザであるため、送信できませんでした。'; $lang->msg_disallow_message = 'メッセージの受信を拒否している受信者であるため、送信できませんでした。'; $lang->msg_insert_group_name = 'グループ名を入力してください。'; + $lang->msg_check_group = '그룹을 선택해 주세요'; $lang->msg_not_uploaded_profile_image = 'プロフィールイメージを登録することができません。'; $lang->msg_not_uploaded_image_name = 'イメージ名を登録することができません。'; diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 02c2f895d..72b2a857e 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -144,6 +144,7 @@ $lang->msg_allow_message_to_friend = '친구에게만 쪽지 수신을 허용한 사용자라서 쪽지 발송을 하지 못했습니다'; $lang->msg_disallow_message = '쪽지 수신을 거부한 사용자라서 쪽지 발송을 하지 못했습니다'; $lang->msg_insert_group_name = '그룹명을 입력해 주세요'; + $lang->msg_check_group = '그룹을 선택해 주세요'; $lang->msg_not_uploaded_profile_image = '프로필 이미지를 등록할 수가 없습니다'; $lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수가 없습니다'; diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index fbb03e0e0..426f655cd 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -143,6 +143,7 @@ $lang->msg_allow_message_to_friend = "Отправка провалена, поскольку получатель принимает сообщения только от друзей"; $lang->msg_disallow_message = 'Отправка провалена, поскольку получатель отклоняет прием сообщений'; $lang->msg_insert_group_name = 'Пожалуйста, введите имя группы'; + $lang->msg_check_group = '그룹을 선택해 주세요'; $lang->msg_not_uploaded_image_name = 'Имя изображения не может быть зарегистрировано'; $lang->msg_not_uploaded_image_mark = 'Марка не может быть зарегистрирована'; diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index c3cbaf89a..42cee0b1d 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -142,6 +142,7 @@ $lang->msg_allow_message_to_friend = '因其为只允许接收好友短消息的用户,所以不能发送短消息。'; $lang->msg_disallow_message = '因其为拒绝接收短消息的用户,所以不能发送短消息。'; $lang->msg_insert_group_name = '请输入组名称'; + $lang->msg_check_group = '그룹을 선택해 주세요'; $lang->msg_not_uploaded_image_name = '不能登录昵称图像!'; $lang->msg_not_uploaded_image_mark = '不能登录用户图标!'; diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index 8b81c268d..bc86c66c6 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -201,6 +201,55 @@ $this->setMessage($msg_code); } + /** + * @brief 선택된 회원들의 그룹을 일괄 변경 + **/ + function procMemberAdminUpdateMembersGroup() { + $member_srl = Context::get('member_srl'); + if(!$member_srl) return new Object(-1,'msg_invalid_request'); + $member_srls = explode(',',$member_srl); + + $group_srl = Context::get('group_srl'); + $group_srls = explode('|@|', $group_srl); + if(!$group_srl) return new Object(-1,'msg_check_group'); + + $oDB = &DB::getInstance(); + $oDB->begin(); + + // 선택된 회원들의 그룹을 삭제 + $args->member_srl = $member_srl; + $output = executeQuery('member.deleteMembersGroup', $args); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + + // 선택된 그룹으로 추가 + $group_count = count($group_srls); + $member_count = count($member_srls); + for($j=0;$j<$group_count;$j++) { + $group_srl = (int)trim($group_srls[$j]); + if(!$group_srl) continue; + for($i=0;$i<$member_count;$i++) { + $member_srl = (int)trim($member_srls[$i]); + if(!$member_srl) continue; + + $args = null; + $args->member_srl = $member_srl; + $args->group_srl = $group_srl; + + $output = executeQuery('member.addMemberToGroup', $args); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + } + } + $oDB->commit(); + + $this->setMessage('success_updated'); + } + /** * @brief 금지 아이디 추가 **/ diff --git a/modules/member/member.admin.view.php b/modules/member/member.admin.view.php index f83944cb2..202f0170e 100644 --- a/modules/member/member.admin.view.php +++ b/modules/member/member.admin.view.php @@ -203,5 +203,22 @@ $this->setTemplateFile('denied_id_list'); } + /** + * @brief 회원 그룹 일괄 변경 + **/ + function dispMemberAdminManageGroup() { + // 선택된 회원 목록을 구함 + $args->member_srl = trim(Context::get('member_srls')); + $output = executeQueryArray('member.getMembers', $args); + Context::set('member_list', $output->data); + + // 회원 그룹 목록을 구함 + $oMemberModel = &getModel('member'); + Context::set('member_groups', $oMemberModel->getGroups()); + + $this->setLayoutFile('popup_layout'); + $this->setTemplateFile('manage_member_group'); + } + } ?> diff --git a/modules/member/queries/deleteMembersGroup.xml b/modules/member/queries/deleteMembersGroup.xml new file mode 100644 index 000000000..a098aada1 --- /dev/null +++ b/modules/member/queries/deleteMembersGroup.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/modules/member/queries/getMembers.xml b/modules/member/queries/getMembers.xml new file mode 100644 index 000000000..a12e84dd3 --- /dev/null +++ b/modules/member/queries/getMembers.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + diff --git a/modules/member/tpl/filter/manage_member_group.xml b/modules/member/tpl/filter/manage_member_group.xml new file mode 100644 index 000000000..8332af382 --- /dev/null +++ b/modules/member/tpl/filter/manage_member_group.xml @@ -0,0 +1,8 @@ + +
+ + + + + +
diff --git a/modules/member/tpl/js/member_admin.js b/modules/member/tpl/js/member_admin.js index b86a5c5f9..ca2824af7 100644 --- a/modules/member/tpl/js/member_admin.js +++ b/modules/member/tpl/js/member_admin.js @@ -282,3 +282,29 @@ function doDisplaySkinColorset(ret_obj) { var new_height = xHeight("member_colorset"); if(typeof(fixAdminLayoutFooter)=="function") fixAdminLayoutFooter(new_height - old_height); } + +/* 그룹 일괄 변경 */ +function doManageMemberGroup() { + var fo_obj = xGetElementById("member_fo"); + var member_srl = new Array(); + + if(typeof(fo_obj.cart.length)=='undefined') { + if(fo_obj.cart.checked) member_srl[member_srl.length] = fo_obj.cart.value; + } else { + var length = fo_obj.cart.length; + for(var i=0;i + + +
+

{$lang->cmd_member_group} ({$lang->target} : {count($member_list)})

+
+ + + + +
+
+ + + + + + + + +
+ + +
 
+ + +
+ +
+ + + + + + + + + + + + + + +
{$lang->user_id}{$lang->nick_name}{$lang->signup_date}
{$val->user_id}
{$val->nick_name}
{zdate($val->regdate, "Y-m-d H:i")}
+ + + + + diff --git a/modules/member/tpl/member_list.html b/modules/member/tpl/member_list.html index 9d0880eff..54dc44d06 100644 --- a/modules/member/tpl/member_list.html +++ b/modules/member/tpl/member_list.html @@ -3,9 +3,11 @@ +
+@@ -15,6 +17,7 @@ +@@ -24,6 +27,7 @@ +@@ -33,6 +37,7 @@ +@@ -42,6 +47,7 @@ +@@ -51,6 +57,7 @@ +@@ -61,6 +68,7 @@ + @@ -73,6 +81,7 @@ +
{$lang->no} {$lang->user_id} {$lang->user_name} {$lang->nick_name}
{$no} {htmlspecialchars($val->user_id)} {$lang->denied} @@ -89,6 +98,9 @@
+ @@ -105,6 +117,7 @@ {$lang->last_page} +
From 6a9d8c8c7c07b5d80247398823692814f6459333 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 10:00:54 +0000 Subject: [PATCH 041/278] =?UTF-8?q?#219=20=ED=9A=8C=EC=9B=90=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EA=B0=80=EC=9E=85=ED=8F=BC=EC=9D=98=20=EC=BB=AC?= =?UTF-8?q?=EB=9F=BC=EB=AA=85=20=EB=8C=80=EC=86=8C=EB=AC=B8=EC=9E=90=20?= =?UTF-8?q?=EC=83=81=EA=B4=80=EC=97=86=EC=9D=B4=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EA=B0=80=20=EC=82=AC=EC=9A=A9=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3482 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.admin.controller.php | 2 +- modules/member/member.model.php | 2 ++ modules/member/skins/default/modify_info.html | 2 +- modules/member/skins/default/signup_form.html | 10 +++++----- modules/member/tpl/insert_member.html | 16 ++++++++-------- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index bc86c66c6..004a0b78b 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -146,7 +146,7 @@ $args->member_join_form_srl = Context::get('member_join_form_srl'); $args->column_type = Context::get('column_type'); - $args->column_name = Context::get('column_name'); + $args->column_name = strtolower(Context::get('column_name')); $args->column_title = Context::get('column_title'); $args->default_value = explode('|@|', Context::get('default_value')); $args->is_active = Context::get('is_active'); diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 3a81ac1fb..c5bc26a15 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -280,6 +280,8 @@ if(!is_array($join_form_list)) $join_form_list = array($join_form_list); $join_form_count = count($join_form_list); for($i=0;$i<$join_form_count;$i++) { + $join_form_list[$i]->column_name = strtolower($join_form_list[$i]->column_name); + $member_join_form_srl = $join_form_list[$i]->member_join_form_srl; $column_type = $join_form_list[$i]->column_type; $column_name = $join_form_list[$i]->column_name; diff --git a/modules/member/skins/default/modify_info.html b/modules/member/skins/default/modify_info.html index 5799bb398..575bab754 100644 --- a/modules/member/skins/default/modify_info.html +++ b/modules/member/skins/default/modify_info.html @@ -109,7 +109,7 @@

{$lang->about_blog_url}

- {$lang->birthday} * + {$lang->birthday}
{zdate($member_info->birthday,"Y-m-d")}
diff --git a/modules/member/skins/default/signup_form.html b/modules/member/skins/default/signup_form.html index 3af629df6..18820034c 100644 --- a/modules/member/skins/default/signup_form.html +++ b/modules/member/skins/default/signup_form.html @@ -60,7 +60,7 @@

{$lang->about_blog_url}

- {$lang->birthday} * + {$lang->birthday}
 
@@ -134,21 +134,21 @@ diff --git a/modules/member/tpl/insert_member.html b/modules/member/tpl/insert_member.html index 05e0f8ba8..e0a9be0e5 100644 --- a/modules/member/tpl/insert_member.html +++ b/modules/member/tpl/insert_member.html @@ -158,15 +158,15 @@ - + - + - + @@ -199,26 +199,26 @@
- +
- +
- +
- + From f5b5a0ccb95ff7634c34187657aaa40322a30e70 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 10:01:40 +0000 Subject: [PATCH 042/278] =?UTF-8?q?#341=20=EC=A3=BC=EC=86=8C=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EA=B0=92=EC=9D=B4=20=ED=95=98=EB=82=98=EC=9D=BC?= =?UTF-8?q?=EB=95=8C=20=EC=83=9D=EA=B8=B0=EB=8A=94=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3483 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/krzip/krzip.model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/krzip/krzip.model.php b/modules/krzip/krzip.model.php index f119cbbea..50f6ff7d3 100644 --- a/modules/krzip/krzip.model.php +++ b/modules/krzip/krzip.model.php @@ -50,7 +50,7 @@ $address_list = unserialize(base64_decode($buff)); if(!$address_list) return new Object(-1, 'msg_no_result'); - $this->add('address_list', implode("\n",$address_list)); + $this->add('address_list', implode("\n",$address_list)."\n"); } } ?> From dfd7accab508c70c6f7fd2deab784085f043b480 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 10:12:20 +0000 Subject: [PATCH 043/278] =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EB=B3=B4=EA=B8=B0=EC=8B=9C=20IE=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=83=9D=EA=B8=B0=EB=8A=94=20=EB=B9=88=20cell=EC=9D=98=20?= =?UTF-8?q?=ED=85=8C=EB=91=90=EB=A6=AC=20=EC=97=86=EC=96=B4=EC=A7=80?= =?UTF-8?q?=EB=8A=94=20=ED=98=84=EC=83=81=20=EC=88=98=EC=A0=95=20=EB=B0=8F?= =?UTF-8?q?=20=EC=A0=84=ED=99=94=EB=B2=88=ED=98=B8/=EC=A3=BC=EC=86=8C=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=EC=8B=9C=20=EA=B5=AC=EB=B6=84=EC=9D=84=20?= =?UTF-8?q?=EB=AA=85=ED=99=95=ED=9E=88=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3484 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/member_info.html | 14 ++++++---- modules/member/tpl/member_info.html | 26 ++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/modules/member/skins/default/member_info.html b/modules/member/skins/default/member_info.html index 607dad13e..98bdd844c 100644 --- a/modules/member/skins/default/member_info.html +++ b/modules/member/skins/default/member_info.html @@ -80,11 +80,15 @@ {htmlspecialchars($val->column_title)} - {htmlspecialchars($val->value[0])} - {htmlspecialchars($val->value[1])} - {htmlspecialchars($val->value[2])}  - - {$val->value[0]} {htmlspecialchars($val->value[1])}  - - {htmlspecialchars(implode(",",$val->value))}  + {htmlspecialchars($val->value[0])} + - + {htmlspecialchars($val->value[1])} + - + {htmlspecialchars($val->value[2])} + + {htmlspecialchars($val->value[0])}
{htmlspecialchars($val->value[1])} + + {htmlspecialchars(implode(", ",$val->value))}  {zdate($val->value, "Y-m-d")}  diff --git a/modules/member/tpl/member_info.html b/modules/member/tpl/member_info.html index 3487d9897..429736cde 100644 --- a/modules/member/tpl/member_info.html +++ b/modules/member/tpl/member_info.html @@ -95,19 +95,19 @@ {$lang->homepage} - {htmlspecialchars($member_info->homepage)} + {htmlspecialchars($member_info->homepage)}  {$lang->blog} - {htmlspecialchars($member_info->blog)} + {htmlspecialchars($member_info->blog)}  {$lang->birthday} - {zdate($member_info->birthday,'Y-m-d')} + {zdate($member_info->birthday,'Y-m-d')}  {$lang->allow_mailing} - {$member_info->allow_mailing} + {$member_info->allow_mailing}  {$lang->allow_message} @@ -115,7 +115,7 @@ {$lang->signature} - {$member_info->signature} + {$member_info->signature}  {$lang->denied} @@ -127,6 +127,7 @@ {zdate($member_info->limit_date,"Y-m-d H:i")} +   @@ -147,23 +148,28 @@ {htmlspecialchars($val->column_title)} - {htmlspecialchars($val->value[0])} - {htmlspecialchars($val->value[1])} - {htmlspecialchars($val->value[2])} + {htmlspecialchars($val->value[0])} + - + {htmlspecialchars($val->value[1])} + - + {htmlspecialchars($val->value[2])} - {htmlspecialchars($val->value[0])} {htmlspecialchars($val->value[1])} - - {htmlspecialchars(implode(",",$val->value))} + {htmlspecialchars($val->value[0])}
{htmlspecialchars($val->value[1])} + + {htmlspecialchars(implode(", ",$val->value))} {zdate($val->value, "Y-m-d")} {nl2br(htmlspecialchars($val->value))} +   {$lang->description} - {htmlspecialchars($member_info->description)} + {htmlspecialchars($member_info->description)}  From 72b4680bd12e8d6568128053f85ec7be3f781a7e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 10:17:15 +0000 Subject: [PATCH 044/278] =?UTF-8?q?#220=20=EC=B5=9C=EA=B3=A0=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=20=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=EC=97=90=20=EC=83=81=EA=B4=80=EC=97=86=EC=9D=B4=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EA=B4=80=EB=A6=AC=EC=8B=9C=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=EA=B0=80=20=EC=97=86=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3485 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/menu/menu.admin.controller.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index f38a676ec..2b236cab5 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -301,11 +301,11 @@ } // xml 캐시 파일 생성 - $xml_buff = sprintf('%s', $php_script, $this->getXmlTree($tree[0], $tree)); + $xml_buff = sprintf('is_admin=="Y") $_is_admin = true; ?>%s', $php_script, $this->getXmlTree($tree[0], $tree)); // php 캐시 파일 생성 $php_output = $this->getPhpCacheCode($tree[0], $tree); - $php_buff = sprintf('list = array(%s); ?>', $php_output['name'], $php_output['buff']); + $php_buff = sprintf('list = array(%s); if($_SESSION["logged_info"]&&$_SESSION["logged_info"]->is_admin=="Y") $_is_admin = true; ?>', $php_output['name'], $php_output['buff']); // 파일 저장 FileHandler::writeFile($xml_file, $xml_buff); @@ -347,7 +347,7 @@ $group_srls = $node->group_srls; // node->group_srls값이 있으면 - if($group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); + if($group_srls) $group_check_code = sprintf('($_is_admin==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ', @@ -401,7 +401,7 @@ $output['url_list'] = array_merge($output['url_list'], $child_output['url_list']); // node->group_srls값이 있으면 - if($node->group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$node->group_srls); + if($node->group_srls) $group_check_code = sprintf('($_is_admin==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$node->group_srls); else $group_check_code = "true"; // 변수 정리 From 61176c653849057406b8843f8f2a60e4353ead85 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 11:46:50 +0000 Subject: [PATCH 045/278] =?UTF-8?q?#285=20=EB=AA=A8=EB=93=88=EC=9D=98=20cl?= =?UTF-8?q?ass=ED=8C=8C=EC=9D=BC=EC=97=90=20isAdmin()=20method=EB=A5=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=98=EC=97=AC=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EA=B0=9C=EB=B3=84=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B6=8C=ED=95=9C=EC=97=90=20=EB=8C=80=ED=95=B4=20?= =?UTF-8?q?=EC=B2=B4=ED=81=AC=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8A=94=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EB=AC=B8=EC=84=9C=20=EB=AA=A8=EB=93=88=EC=9D=98=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EA=B2=8C=EC=8B=9C=ED=8C=90=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=20id=EB=A1=9C=20=EB=93=B1=EB=A1=9D=EB=90=98?= =?UTF-8?q?=EC=96=B4=20=EC=9E=88=EB=8A=94=EC=A7=80=EB=A5=BC=20=ED=99=95?= =?UTF-8?q?=EC=9D=B8=ED=95=98=EC=97=AC=20=EA=B6=8C=ED=95=9C=EC=9D=84=20?= =?UTF-8?q?=EB=B6=80=EC=97=AC=ED=95=98=EB=8F=84=EB=A1=9D=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3486 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/module/ModuleHandler.class.php | 4 ++ classes/module/ModuleObject.class.php | 23 ++++++-- modules/document/document.admin.view.php | 15 ++++-- modules/document/document.class.php | 68 ++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 9 deletions(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 1660ce888..33a8076ae 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -102,6 +102,10 @@ Context::setBrowserTitle($module_info->browser_title); } + // 모듈정보에 module과 mid를 강제로 지정 + $this->module_info->module = $this->module; + $this->mid = $this->mid; + // 여기까지도 모듈 정보를 찾지 못했다면 깔끔하게 시스템 오류 표시 if(!$this->module) $this->error = 'msg_module_is_not_exists'; diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index 420542272..ababfc7c9 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -84,12 +84,25 @@ $logged_info = Context::get('logged_info'); $user_id = $logged_info->user_id; $user_group = $logged_info->group_list; + $grant->is_admin = false; - // 로그인되어 있다면 admin 체크 - if($is_logged && ($logged_info->is_admin == 'Y' || (is_array($this->module_info->admin_id)&&in_array($user_id, $this->module_info->admin_id) )) ) { - $grant->is_admin = true; - } else { - $grant->is_admin = false; + // 로그인되어 있다면 관리자 여부를 확인 + if($is_logged) { + /* 로그인 사용자에 대한 관리자 여부는 다양한 방법으로 체크가 됨 */ + // 1. 최고관리자일 경우 + if($logged_info->is_admin == 'Y') $grant->is_admin = true; + + // 2. 최고 관리자는 아니지만 모듈 object가 있고 admin_id 컬럼에 로그인 사용자의 아이디가 있을 경우 + elseif($this->module_info->admin_id) { + if(is_array($this->module_info->admin_id) && in_array($user_id, $this->module_info->admin_id)) $grant->is_admin = true; + + // 3. 1/2번이 아닐 경우 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의) + } else { + if($module_info->module) { + $oClass = &getClass($module_info->module); + if($oClass && method_exists($oClass, 'isAdmin')) $grant->is_admin = $oClass->isAdmin(); + } + } } // module.xml 에 있는 권한 정보를 정리 diff --git a/modules/document/document.admin.view.php b/modules/document/document.admin.view.php index 976fa0fca..2d7a86fd1 100644 --- a/modules/document/document.admin.view.php +++ b/modules/document/document.admin.view.php @@ -111,11 +111,18 @@ } // 모듈의 목록을 가져옴 - //$args->select_module = "'board','blog'"; - $output = executeQuery('document.getAllModules', $args); - $module_list = $output->data; + $oModuleModel = &getModel('module'); + $module_list = ($oModuleModel->getMidList()); - if($module_list && !is_array($module_list)) $module_list = array($module_list); + // 최고 관리자가 아닌 경우 자신의 관리 대상 모듈만 구해옴 + $logged_info = Context::get('logged_info'); + $user_id = $logged_info->user_id; + if($logged_info->is_admin != 'Y') { + foreach($module_list as $key => $val) { + $info = $oModuleModel->arrangeModuleInfo($val); + if(!in_array($user_id, $info->admin_id)) unset($module_list[$key]); + } + } Context::set('module_list', $module_list); // 팝업 레이아웃 선택 diff --git a/modules/document/document.class.php b/modules/document/document.class.php index bfdf55fb8..b691b8bda 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -176,5 +176,73 @@ **/ function recompileCache() { } + + /** + * @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'); + $user_id = $logged_info->user_id; + + // 모듈 요청에 사용된 변수들을 가져옴 + $args = Context::getRequestVars(); + + // act의 값에 따라서 관리 권한 체크 + switch($args->act) { + // 게시글 목록에서 글을 체크하는 경우 해당 글의 모듈 정보를 구해서 관리자 여부를 체크 + case 'procDocumentAdminAddCart' : + if(!$args->srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByDocumentSrl($args->srl); + if(!$module_info) return false; + + if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + break; + + // 체크된 게시글을 관리하는 action + case 'dispDocumentAdminManageDocument' : + // 세션 정보에 게시글이 담겨 있으면 return true 해줌 + $flag_list = $_SESSION['document_management']; + if(count($flag_list)) return true; + break; + + // 체크된 게시글을 다른 모듈로 이동 또는 복사, 삭제 할때 + case 'procDocumentAdminManageCheckedDocument' : + switch($args->type) { + // 이동과 복사의 경우에는 대상 모듈의 정보를 체크 + case 'move' : + case 'copy' : + if($args->target_module) { + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module); + if(!$module_info) return false; + + if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + } + break; + + + // 삭제일 경우는 세션에 저장된 글이 있으면 return true + case 'delete' : + $flag_list = $_SESSION['document_management']; + if(count($flag_list)) return true; + break; + } + break; + + } + return false; + } } ?> From 55258ddb54ef32657fe3e458b13584260a89972a Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 11:56:28 +0000 Subject: [PATCH 046/278] =?UTF-8?q?#288=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=EC=84=9C=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=EA=B0=80=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EC=9D=B4=EB=A6=84/=EB=A7=88=ED=81=AC/=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=82=AC=EC=A7=84=EB=93=B1=EC=9D=84=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3487 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 31 ++++++++++++------- modules/member/member.model.php | 21 ++++++++----- modules/member/skins/default/member_info.html | 6 ++++ 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 64260fc49..288e97e9d 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -898,13 +898,16 @@ $target_path = sprintf('files/member_extra_info/profile_image/%s/', getNumberingPath($member_srl)); FileHandler::makeDir($target_path); - $target_filename = sprintf('%s%d.gif', $target_path, $member_srl); - // 파일 정보 구함 list($width, $height, $type, $attrs) = @getimagesize($target_file); + if($type == 3) $ext = 'png'; + elseif($type == 2) $ext = 'jpg'; + else $ext = 'gif'; + + $target_filename = sprintf('%s%d.%s', $target_path, $member_srl, $ext); // 지정된 사이즈보다 크거나 gif가 아니면 변환 - if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, 'gif'); + if($width > $max_width || $height > $max_height || $type!=1) FileHandler::createImageFile($target_file, $target_filename, $max_width, $max_height, $ext); else @copy($target_file, $target_filename); } @@ -965,11 +968,14 @@ $member_srl = Context::get('member_srl'); if(!$member_srl) return new Object(0,'success'); - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('member'); - if($config->profile_image == 'N') return new Object(0,'success'); - $logged_info = Context::get('logged_info'); + + if($logged_info->is_admin != 'Y') { + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('member'); + if($config->profile_image == 'N') return new Object(0,'success'); + } + if($logged_info->is_admin == 'Y' || $logged_info->member_srl == $member_srl) { $oMemberModel = &getModel('member'); $profile_image = $oMemberModel->getProfileImage($member_srl); @@ -985,11 +991,14 @@ $member_srl = Context::get('member_srl'); if(!$member_srl) return new Object(0,'success'); - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('member'); - if($config->image_name == 'N') return new Object(0,'success'); - $logged_info = Context::get('logged_info'); + + if($logged_info->is_admin != 'Y') { + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('member'); + if($config->image_name == 'N') return new Object(0,'success'); + } + if($logged_info->is_admin == 'Y' || $logged_info->member_srl == $member_srl) { $oMemberModel = &getModel('member'); $image_name = $oMemberModel->getImageName($member_srl); diff --git a/modules/member/member.model.php b/modules/member/member.model.php index c5bc26a15..66f4ee6de 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -406,14 +406,19 @@ * @brief 프로필 이미지의 정보를 구함 **/ function getProfileImage($member_srl) { - $image_name_file = sprintf('files/member_extra_info/profile_image/%s%d.gif', getNumberingPath($member_srl), $member_srl); - if(!file_exists($image_name_file)) return; - list($width, $height, $type, $attrs) = getimagesize($image_name_file); - $info->width = $width; - $info->height = $height; - $info->src = Context::getRequestUri().$image_name_file; - $info->file = './'.$image_name_file; - return $info; + $exts = array('gif','jpg','png'); + for($i=0;$i<3;$i++) { + $image_name_file = sprintf('files/member_extra_info/profile_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]); + if(file_exists($image_name_file)) { + list($width, $height, $type, $attrs) = getimagesize($image_name_file); + $info->width = $width; + $info->height = $height; + $info->src = Context::getRequestUri().$image_name_file; + $info->file = './'.$image_name_file; + return $info; + } + } + return; } /** diff --git a/modules/member/skins/default/member_info.html b/modules/member/skins/default/member_info.html index 98bdd844c..d10bf90d1 100644 --- a/modules/member/skins/default/member_info.html +++ b/modules/member/skins/default/member_info.html @@ -22,6 +22,12 @@ {$lang->nick_name} {htmlspecialchars($member_info->nick_name)} + + + {$lang->profile_image} + profile_image + + {$lang->image_name} From 170191c2671df996e5e26ee4ec2399e21ec0b869 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 12:10:53 +0000 Subject: [PATCH 047/278] =?UTF-8?q?#281=20=EC=B2=A8=EB=B6=80=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=84=20=EB=93=B1=EB=A1=9D/=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=EC=8B=9C=EC=97=90=EB=8A=94=20=ED=8F=AC=EC=9D=B8=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EB=B6=80=EC=97=AC=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EA=B3=A0=20=EA=B8=80=EC=9D=B4=20=EB=93=B1=EB=A1=9D=EB=90=A0?= =?UTF-8?q?=EB=95=8C=20=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC=EC=9D=98=20?= =?UTF-8?q?=EC=88=98=20=EB=A7=8C=ED=81=BC=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=A7=80=EA=B8=89.=20=EC=9C=A0=ED=9A=A8=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=A1=9C=20=EB=90=9C=20=ED=8C=8C=EC=9D=BC=EC=9D=B4=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=EB=90=98=EA=B1=B0=EB=82=98=20=EA=B8=80=20=EC=9E=90?= =?UTF-8?q?=EC=B2=B4=EA=B0=80=20=EC=82=AD=EC=A0=9C=EB=90=A0=EB=95=8C=20?= =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EA=B0=90=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3488 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/point/point.controller.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index 2e9a44c9a..665376d2c 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -88,9 +88,14 @@ $point = $config->module_point[$module_srl]['insert_document']; if(!isset($point)) $point = $config->insert_document; + $cur_point += $point; + + // 첨부파일 등록에 대한 포인트 추가 + $point = $config->module_point[$module_srl]['upload_file']; + if(!isset($point)) $point = $config->upload_file; + if($obj->uploaded_count) $cur_point += $point * $obj->uploaded_count; // 포인트 증감 - $cur_point += $point; $this->setPoint($member_srl,$cur_point); return new Object(); @@ -118,9 +123,14 @@ $point = $config->module_point[$module_srl]['insert_document']; if(!isset($point)) $point = $config->insert_document; + $cur_point -= $point; + + // 첨부파일 삭제에 대한 포인트 추가 + $point = $config->module_point[$module_srl]['upload_file']; + if(!isset($point)) $point = $config->upload_file; + if($obj->uploaded_count) $cur_point -= $point * $obj->uploaded_count; // 포인트 증감 - $cur_point -= $point; $this->setPoint($member_srl,$cur_point); return new Object(); @@ -180,8 +190,10 @@ /** * @brief 파일 등록 trigger 추가 + * 비유효 파일의 등록에 의한 포인트 획득을 방지하고자 이 method는 일단 무효로 둠 **/ function triggerInsertFile(&$obj) { + return new Object(); $module_srl = $obj->module_srl; $member_srl = $obj->member_srl; if(!$module_srl || !$member_srl) return new Object(); @@ -206,8 +218,11 @@ /** * @brief 파일 삭제 포인트 적용 trigger + * 유효파일을 삭제할 경우에만 포인트 삭제 **/ function triggerDeleteFile(&$obj) { + if($obj->isvalid != 'Y') return Object(); + $module_srl = $obj->module_srl; $member_srl = $obj->member_srl; if(!$module_srl || !$member_srl) return new Object(); From 3f28a71e8ddac541af4c0ec2823ba80bb7bf2d74 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 12:57:19 +0000 Subject: [PATCH 048/278] =?UTF-8?q?=EC=8A=A4=ED=8C=B8=20=ED=8A=B8=EB=9E=99?= =?UTF-8?q?=EB=B0=B1=EC=9D=B4=EB=9D=BC=EA=B3=A0=20=ED=8C=90=EB=8B=A8?= =?UTF-8?q?=EB=90=A0=EB=95=8C=20=EC=98=A4=EB=A5=98=20=EB=A9=94=EC=84=B8?= =?UTF-8?q?=EC=A7=80=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=EC=9D=98=20=EC=BD=94=EB=93=9C=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(=EA=B8=B0=EB=8A=A5=EA=B3=BC=EB=8A=94=20?= =?UTF-8?q?=EC=83=81=EA=B4=80=EC=97=86=EB=8D=98=20=EC=98=A4=EB=A5=98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3489 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/spamfilter/spamfilter.model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/spamfilter/spamfilter.model.php b/modules/spamfilter/spamfilter.model.php index c1c9f7362..424e9045f 100644 --- a/modules/spamfilter/spamfilter.model.php +++ b/modules/spamfilter/spamfilter.model.php @@ -126,7 +126,7 @@ $oTrackbackModel = &getModel('trackback'); $count = $oTrackbackModel->getTrackbackCountByIPAddress($document_srl, $_SERVER['REMOTE_ADDR']); - if($count>0) return Object(-1, 'msg_alert_trackback_denied'); + if($count>0) return new Object(-1, 'msg_alert_trackback_denied'); return new Object(); } From f14af52fb3d74c9d10f0e7a0adc0ba3176b692d9 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 13:19:43 +0000 Subject: [PATCH 049/278] =?UTF-8?q?#294=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99/=EB=B3=B5=EC=82=AC=EC=8B=9C=20=EC=B2=A8?= =?UTF-8?q?=EB=B6=80=ED=8C=8C=EC=9D=BC=EA=B3=BC=20=EB=8C=93=EA=B8=80/?= =?UTF-8?q?=EC=97=AE=EC=9D=B8=EA=B8=80=EB=8F=84=20=EB=AA=A8=EB=91=90=20?= =?UTF-8?q?=EB=B3=B5=EC=82=AC=EB=90=98=EB=8F=84=EB=A1=9D=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3490 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../document/document.admin.controller.php | 104 +++++++++++++++++- .../document/queries/updateDocumentModule.xml | 1 + modules/file/file.controller.php | 1 + modules/point/point.controller.php | 2 +- 4 files changed, 101 insertions(+), 7 deletions(-) diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index 5e0a5125d..d96b8446e 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -142,13 +142,44 @@ $source_category_srl = $oDocument->get('category_srl'); - unset($document_args); - $document_args->module_srl = $module_srl; - $document_args->category_srl = $category_srl; - $document_args->document_srl = $document_srl; + unset($obj); + $obj = $oDocument->getObjectVars(); + + // 첨부파일 이동 + if($oDocument->hasUploadedFiles()) { + $oFileController = &getController('file'); + + $files = $oDocument->getUploadedFiles(); + foreach($files as $key => $val) { + $file_info = array(); + $file_info['tmp_name'] = $val->uploaded_filename; + $file_info['name'] = $val->source_filename; + $inserted_file = $oFileController->insertFile($file_info, $module_srl, $obj->document_srl, $val->download_count, true); + + // 이미지/동영상등일 경우 + if($val->direct_download == 'Y') { + $source_filename = substr($val->uploaded_filename,2); + $target_filename = substr($inserted_file->get('uploaded_filename'),2); + $obj->content = str_replace($source_filename, $target_filename, $obj->content); + + // binary 파일일 경우 + } else { + $obj->content = str_replace('file_srl='.$val->file_srl, 'file_srl='.$inserted_file->get('file_srl'), $obj->content); + $obj->content = str_replace('sid='.$val->sid, 'sid='.$inserted_file->get('sid'), $obj->content); + } + + // 기존 파일 삭제 + $oFileController->deleteFile($val->file_srl); + } + + // 등록된 모든 파일을 유효로 변경 + $oFileController->setFilesValid($obj->document_srl); + } // 게시물의 모듈 이동 - $output = executeQuery('document.updateDocumentModule', $document_args); + $obj->module_srl = $module_srl; + $obj->category_srl = $category_srl; + $output = executeQuery('document.updateDocumentModule', $obj); if(!$output->toBool()) { $oDB->rollback(); return $output; @@ -159,6 +190,7 @@ if($source_category_srl) $oDocumentController->updateCategoryCount($oDocument->get('module_srl'), $source_category_srl); if($category_srl) $oDocumentController->updateCategoryCount($module_srl, $category_srl); } + } $args->document_srls = implode(',',$document_srl_list); @@ -198,6 +230,8 @@ $oDocumentModel = &getModel('document'); $oDocumentController = &getController('document'); + $oFileModel = &getModel('file'); + $oDB = &DB::getInstance(); $oDB->begin(); @@ -223,7 +257,19 @@ $file_info['tmp_name'] = $val->uploaded_filename; $file_info['name'] = $val->source_filename; $oFileController = &getController('file'); - $oFileController->insertFile($file_info, $module_srl, $obj->document_srl, 0, true); + $inserted_file = $oFileController->insertFile($file_info, $module_srl, $obj->document_srl, 0, true); + + // 이미지/동영상등일 경우 + if($val->direct_download == 'Y') { + $source_filename = substr($val->uploaded_filename,2); + $target_filename = substr($inserted_file->get('uploaded_filename'),2); + $obj->content = str_replace($source_filename, $target_filename, $obj->content); + + // binary 파일일 경우 + } else { + $obj->content = str_replace('file_srl='.$val->file_srl, 'file_srl='.$inserted_file->get('file_srl'), $obj->content); + $obj->content = str_replace('sid='.$val->sid, 'sid='.$inserted_file->get('sid'), $obj->content); + } } } @@ -233,6 +279,52 @@ $oDB->rollback(); return $output; } + + // 댓글 이전 + if($oDocument->getCommentCount()) { + $oCommentModel = &getModel('comment'); + $comments = $oCommentModel->getCommentList($document_srl, true); + if(count($comments)) { + $oCommentController = &getController('comment'); + $success_count = 0; + $p_comment_srl = array(); + foreach($comments as $comment_obj) { + $comment_srl = getNextSequence(); + $p_comment_srl[$comment_obj->comment_srl] = $comment_srl; + + $comment_obj->module_srl = $obj->module_srl; + $comment_obj->document_srl = $obj->document_srl; + $comment_obj->comment_srl = $comment_srl; + + if($comment_obj->parent_srl) $comment_obj->parent_srl = $p_comment_srl[$comment_obj->parent_srl]; + + $output = $oCommentController->insertComment($comment_obj, true); + if($output->toBool()) $success_count ++; + } + $oDocumentController->updateCommentCount($obj->document_srl, $success_count, $comment_obj->nick_name, true); + + } + + } + + // 엮인글 이전 + if($oDocument->getTrackbackCount()) { + $oTrackbackModel = &getModel('trackback'); + $trackbacks = $oTrackbackModel->getTrackbackList($oDocument->document_srl); + if(count($trackbacks)) { + $success_count = 0; + foreach($trackbacks as $trackback_obj) { + $trackback_obj->trackback_srl = getNextSequence(); + $trackback_obj->module_srl = $obj->module_srl; + $trackback_obj->document_srl = $obj->document_srl; + $output = executeQuery('trackback.insertTrackback', $trackback_obj); + if($output->toBool()) $success_count++; + } + + // 엮인글 수 업데이트 + $oDocumentController->updateTrackbackCount($obj->document_srl, $success_count); + } + } } $oDB->commit(); diff --git a/modules/document/queries/updateDocumentModule.xml b/modules/document/queries/updateDocumentModule.xml index 8c8dafd50..f3dfa097f 100644 --- a/modules/document/queries/updateDocumentModule.xml +++ b/modules/document/queries/updateDocumentModule.xml @@ -5,6 +5,7 @@ + diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index cfc319502..f6936677f 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -386,6 +386,7 @@ $output->add('direct_download', $args->direct_download); $output->add('source_filename', $args->source_filename); $output->add('upload_target_srl', $upload_target_srl); + $output->add('uploaded_filename', $args->uploaded_filename); return $output; } diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index 665376d2c..8b1100e66 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -221,7 +221,7 @@ * 유효파일을 삭제할 경우에만 포인트 삭제 **/ function triggerDeleteFile(&$obj) { - if($obj->isvalid != 'Y') return Object(); + if($obj->isvalid != 'Y') return new Object(); $module_srl = $obj->module_srl; $member_srl = $obj->member_srl; From 823ee82b1d6a33b3cc92217379062084cfadcad0 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Jan 2008 13:54:51 +0000 Subject: [PATCH 050/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=20=ED=95=B4=EB=8B=B9=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=98=20=EC=B5=9C=EA=B3=A0=EA=B4=80=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95=EB=90=9C=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=EB=BF=90=20=EC=95=84=EB=8B=88=EB=9D=BC=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B7=B8=EB=A3=B9=EC=97=90=20=EC=86=8D=ED=95=9C=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=EB=93=A4=EB=8F=84=20=EA=B8=80=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B6=8C=ED=95=9C=EC=9D=84=20=EA=B0=80=EC=A7=80?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3491 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../document/document.admin.controller.php | 4 ++++ modules/document/document.admin.view.php | 19 ++++++++++++++++++- modules/document/document.class.php | 19 +++++++++++++++++++ modules/spamfilter/spamfilter.controller.php | 13 +++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index d96b8446e..86119db03 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -89,6 +89,10 @@ } } + // 스팸 처리가 되지 않도록 스팸필터 설정 + $oSpamController = &getController('spamfilter'); + $oSpamController->setAvoidLog(); + if($type == 'move') { if(!$module_srl) return new Object(-1, 'fail_to_move'); diff --git a/modules/document/document.admin.view.php b/modules/document/document.admin.view.php index 2d7a86fd1..94d413331 100644 --- a/modules/document/document.admin.view.php +++ b/modules/document/document.admin.view.php @@ -117,10 +117,27 @@ // 최고 관리자가 아닌 경우 자신의 관리 대상 모듈만 구해옴 $logged_info = Context::get('logged_info'); $user_id = $logged_info->user_id; + $group_list = $logged_info->group_list; + if($logged_info->is_admin != 'Y') { foreach($module_list as $key => $val) { $info = $oModuleModel->arrangeModuleInfo($val); - if(!in_array($user_id, $info->admin_id)) unset($module_list[$key]); + + // 직접 최고 관리자로 지정이 안되어 있으면 그룹을 체크 + if(!in_array($user_id, $info->admin_id)) { + + $is_granted = false; + $manager_group = $info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) { + $is_granted = true; + break; + } + } + } + if(!$is_granted) unset($module_list[$key]); + } } } Context::set('module_list', $module_list); diff --git a/modules/document/document.class.php b/modules/document/document.class.php index b691b8bda..43f308f57 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -192,6 +192,7 @@ // 사용자 아이디를 구함 $logged_info = Context::get('logged_info'); $user_id = $logged_info->user_id; + $group_list = $logged_info->group_list; // 모듈 요청에 사용된 변수들을 가져옴 $args = Context::getRequestVars(); @@ -206,7 +207,17 @@ $module_info = $oModuleModel->getModuleInfoByDocumentSrl($args->srl); if(!$module_info) return false; + // 직접 관리자로 선택하였을 경우 확인 if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + + // 관리자 그룹으로 등록되어 있을 경우 확인 + $manager_group = $module_info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) return true; + } + } + break; // 체크된 게시글을 관리하는 action @@ -229,6 +240,14 @@ if(!$module_info) return false; if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + + // 관리자 그룹으로 등록되어 있을 경우 확인 + $manager_group = $module_info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) return true; + } + } } break; diff --git a/modules/spamfilter/spamfilter.controller.php b/modules/spamfilter/spamfilter.controller.php index d463dceeb..76d681210 100644 --- a/modules/spamfilter/spamfilter.controller.php +++ b/modules/spamfilter/spamfilter.controller.php @@ -13,10 +13,19 @@ function init() { } + /** + * @brief 배치작업등을 할때 스팸필터의 사용을 중지 시킬 필요가 있을 경우 호출 + **/ + function setAvoidLog() { + $_SESSION['avoid_log'] = true; + } + /** * @brief 글 작성시 글 작성 시간 체크 및 금지 ip/단어 처리 루틴 **/ function triggerInsertDocument(&$obj) { + if($_SESSION['avoid_log']) return new Object(); + // 로그인 여부, 로그인 정보, 권한 유무 체크 $is_logged = Context::get('is_logged'); $logged_info = Context::get('logged_info'); @@ -53,6 +62,8 @@ * @brief 댓글 작성 시간 및 금지 ip/ 단어 처리 루틴 **/ function triggerInsertComment(&$obj) { + if($_SESSION['avoid_log']) return new Object(); + // 로그인 여부, 로그인 정보, 권한 유무 체크 $is_logged = Context::get('is_logged'); $logged_info = Context::get('logged_info'); @@ -89,6 +100,8 @@ * @brief 엮인글 작성시 시간 및 ip 검사 **/ function triggerInsertTrackback(&$obj) { + if($_SESSION['avoid_log']) return new Object(); + $oFilterModel = &getModel('spamfilter'); // 해당 글에 엮인글을 한번 이상 추가하였는지를 확인 From b73c48ecbcedb51f4c07b856e6d547f5346d4ac3 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 03:33:25 +0000 Subject: [PATCH 051/278] =?UTF-8?q?=EC=A0=9C=EB=A1=9C=EB=B3=B4=EB=93=9CXE?= =?UTF-8?q?=EC=9D=98=20=EA=B8=B0=EB=B3=B8=20=EC=8A=A4=ED=83=80=EC=9D=BC?= =?UTF-8?q?=EC=97=90=EC=84=9C=20body,p,div,ul,ol,li,dd,dt,span,fieldset,h1?= =?UTF-8?q?,h2,h3,h4,h5,h6=20=EC=97=90=20=EB=8C=80=ED=95=B4=EC=84=9C?= =?UTF-8?q?=EB=A7=8C=20margin,=20padding=EC=9D=84=200=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95.=20=EC=9D=B4=EB=A1=9C=20=EC=9D=B8=ED=95=B4?= =?UTF-8?q?=20=EA=B8=B0=EC=A1=B4=20=EC=8A=A4=ED=82=A8=EB=93=A4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=AC=B8=EC=A0=9C=EA=B0=80=20=EC=83=9D=EA=B8=B8=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EC=9C=BC=EB=A9=B0=20=EA=B3=84=EC=86=8D=20?= =?UTF-8?q?=EB=94=94=EB=B2=84=EA=B9=85=20=ED=95=B4=EC=95=BC=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3492 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/css/default.css | 3 +-- modules/comment/comment.model.php | 2 +- modules/editor/tpl/js/editor.js | 7 +++---- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/common/css/default.css b/common/css/default.css index f1fafea00..b221437c3 100644 --- a/common/css/default.css +++ b/common/css/default.css @@ -23,7 +23,7 @@ IE7 & IE6 & Below .nowrap { white-space:nowrap; } /* default.css - Type Selector Definition */ -* { margin:0; padding:0; } +body,p,div,ul,ol,li,dd,dt,span,fieldset,h1,h2,h3,h4,h5,h6 { margin:0; padding:0; } html { width:100%; } body { margin:0; font-size:.75em; _font-size:9pt; font-family:sans-serif;} *:first-child+html body { font-size:9pt; } @@ -92,7 +92,6 @@ a.bold { font-weight:bold; } /* xe content */ div.xe_content { line-height:140%; } -div.xe_content table { padding:1px; margin:1px; } div.xe_content ol { margin-left:40px; } div.xe_content ul { margin-left:40px; } div.xe_content blockquote { margin-left:40px; } diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index 6826ff30d..8cf2fd1d6 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -183,7 +183,7 @@ $member_srl = $source_list[$i]->member_srl; // OL/LI 태그를 위한 치환 처리 - $source_list[$i]->content = preg_replace('!<(ol|ul|blockquote)>!is','<\\1 style="margin-left:40px;">',$source_list[$i]->content); + //$source_list[$i]->content = preg_replace('!<(ol|ul|blockquote)>!is','<\\1 style="margin-left:40px;">',$source_list[$i]->content); // url에 대해서 정규표현식으로 치환 $source_list[$i]->content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$source_list[$i]->content); diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js index 12ff7a8f5..d5e86d584 100755 --- a/modules/editor/tpl/js/editor.js +++ b/modules/editor/tpl/js/editor.js @@ -118,11 +118,10 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height) { ''+ ''+ //''+ - ''+ - ''+ + //''+ + //''+ ''+ ''+ content+ From 19e8df640578b3aa9a7e61edadafd072a286b8b2 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 04:23:45 +0000 Subject: [PATCH 052/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90/=EB=B8=94?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8/=EB=B0=A9=EB=AA=85=EB=A1=9D=EB=93=B1?= =?UTF-8?q?=EC=9D=98=20=EC=B6=94=EA=B0=80=EC=84=A4=EC=A0=95/=EA=B6=8C?= =?UTF-8?q?=ED=95=9C=EC=84=A4=EC=A0=95/=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=ED=8E=B8=EC=A7=91=EB=93=B1=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=EC=A7=80=EC=A0=95=EC=9D=B4=20?= =?UTF-8?q?=EB=90=98=EA=B1=B0=EB=82=98=20=EA=B4=80=EB=A6=AC=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=EC=9C=BC=EB=A1=9C=20=EB=90=98=EB=A9=B4=20=EC=A0=95?= =?UTF-8?q?=EC=83=81=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EB=A5=BC=20=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3493 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/module/ModuleObject.class.php | 16 +++++++++--- modules/document/document.class.php | 24 ++---------------- modules/editor/editor.class.php | 34 +++++++++++++++++++++++++ modules/file/file.class.php | 34 +++++++++++++++++++++++++ modules/layout/layout.class.php | 36 +++++++++++++++++++++++++++ modules/module/module.model.php | 21 ++++++++++++++++ modules/point/point.class.php | 34 +++++++++++++++++++++++++ modules/rss/rss.class.php | 34 +++++++++++++++++++++++++ modules/trackback/trackback.class.php | 34 +++++++++++++++++++++++++ 9 files changed, 241 insertions(+), 26 deletions(-) diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index ababfc7c9..0938a0d62 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -90,15 +90,23 @@ if($is_logged) { /* 로그인 사용자에 대한 관리자 여부는 다양한 방법으로 체크가 됨 */ // 1. 최고관리자일 경우 - if($logged_info->is_admin == 'Y') $grant->is_admin = true; + if($logged_info->is_admin == 'Y') { + $grant->is_admin = true; // 2. 최고 관리자는 아니지만 모듈 object가 있고 admin_id 컬럼에 로그인 사용자의 아이디가 있을 경우 - elseif($this->module_info->admin_id) { + } elseif($this->module_info->admin_id) { if(is_array($this->module_info->admin_id) && in_array($user_id, $this->module_info->admin_id)) $grant->is_admin = true; - // 3. 1/2번이 아닐 경우 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의) + // 4. 1/2번이 아닐 경우 그룹을 체크하고 직접 모듈에 요청을 하여 체크를 함. (모듈.class.php에 정의) } else { - if($module_info->module) { + $manager_group = $this->module_info->grants['manager']; + if(count($user_group) && count($manager_group)) { + foreach($user_group as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) $grant->is_admin = true; + } + } + + if(!$grant->is_admin && $module_info->module) { $oClass = &getClass($module_info->module); if($oClass && method_exists($oClass, 'isAdmin')) $grant->is_admin = $oClass->isAdmin(); } diff --git a/modules/document/document.class.php b/modules/document/document.class.php index 43f308f57..21f600bad 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -191,8 +191,6 @@ // 사용자 아이디를 구함 $logged_info = Context::get('logged_info'); - $user_id = $logged_info->user_id; - $group_list = $logged_info->group_list; // 모듈 요청에 사용된 변수들을 가져옴 $args = Context::getRequestVars(); @@ -207,17 +205,7 @@ $module_info = $oModuleModel->getModuleInfoByDocumentSrl($args->srl); if(!$module_info) return false; - // 직접 관리자로 선택하였을 경우 확인 - if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; - - // 관리자 그룹으로 등록되어 있을 경우 확인 - $manager_group = $module_info->grants['manager']; - if(count($group_list) && count($manager_group)) { - foreach($group_list as $group_srl => $group_info) { - if(in_array($group_srl, $manager_group)) return true; - } - } - + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; break; // 체크된 게시글을 관리하는 action @@ -239,15 +227,7 @@ $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module); if(!$module_info) return false; - if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; - - // 관리자 그룹으로 등록되어 있을 경우 확인 - $manager_group = $module_info->grants['manager']; - if(count($group_list) && count($manager_group)) { - foreach($group_list as $group_srl => $group_info) { - if(in_array($group_srl, $manager_group)) return true; - } - } + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; } break; diff --git a/modules/editor/editor.class.php b/modules/editor/editor.class.php index 24dff952d..50392dd00 100644 --- a/modules/editor/editor.class.php +++ b/modules/editor/editor.class.php @@ -85,5 +85,39 @@ // 에디터 컴포넌트 캐시 파일 삭제 FileHandler::removeFilesInDir("./files/cache/editor"); } + + /** + * @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 'procEditorAdminInsertModuleConfig' : + if(!$args->target_module_srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module_srl); + if(!$module_info) return false; + + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; + break; + } + + return false; + } } ?> diff --git a/modules/file/file.class.php b/modules/file/file.class.php index e2796aa50..580046c0c 100644 --- a/modules/file/file.class.php +++ b/modules/file/file.class.php @@ -131,5 +131,39 @@ **/ function recompileCache() { } + + /** + * @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 'procFileAdminInsertModuleConfig' : + if(!$args->target_module_srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module_srl); + if(!$module_info) return false; + + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; + break; + } + + return false; + } } ?> diff --git a/modules/layout/layout.class.php b/modules/layout/layout.class.php index ea84bcf7a..b6976a719 100644 --- a/modules/layout/layout.class.php +++ b/modules/layout/layout.class.php @@ -45,5 +45,41 @@ **/ function recompileCache() { } + + /** + * @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 'dispLayoutAdminPreview' : + case 'procLayoutAdminCodeReset' : + case 'procLayoutAdminCodeUpdate' : + if(!$args->layout_srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->layout_srl); + if(!$module_info) return false; + + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; + break; + } + + return false; + } } ?> diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 169de9274..d5c99c849 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -604,5 +604,26 @@ return $list; } + /** + * @brief 특정 모듈의 정보와 회원의 정보를 받아서 관리 권한 유무를 판단 + **/ + function isModuleAdmin($module_info, $member_info) { + $user_id = $member_info->user_id; + $group_list = $member_info->group_list; + + // 직접 관리자로 선택하였을 경우 확인 + if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; + + // 관리자 그룹으로 등록되어 있을 경우 확인 + $manager_group = $module_info->grants['manager']; + if(count($group_list) && count($manager_group)) { + foreach($group_list as $group_srl => $group_info) { + if(in_array($group_srl, $manager_group)) return true; + } + } + + return false; + } + } ?> diff --git a/modules/point/point.class.php b/modules/point/point.class.php index 75c740d95..7b5a284db 100644 --- a/modules/point/point.class.php +++ b/modules/point/point.class.php @@ -165,5 +165,39 @@ $oPointAdminController->cacheActList(); } + + /** + * @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 'procPointAdminInsertPointModuleConfig' : + if(!$args->target_module_srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module_srl); + if(!$module_info) return false; + + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; + break; + } + + return false; + } } ?> diff --git a/modules/rss/rss.class.php b/modules/rss/rss.class.php index ccd888307..26a01e346 100644 --- a/modules/rss/rss.class.php +++ b/modules/rss/rss.class.php @@ -63,5 +63,39 @@ **/ function recompileCache() { } + + /** + * @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 'procRssAdminInsertModuleConfig' : + if(!$args->target_module_srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module_srl); + if(!$module_info) return false; + + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; + break; + } + + return false; + } } ?> diff --git a/modules/trackback/trackback.class.php b/modules/trackback/trackback.class.php index 0bd542c6c..a421ebb50 100644 --- a/modules/trackback/trackback.class.php +++ b/modules/trackback/trackback.class.php @@ -83,5 +83,39 @@ **/ function recompileCache() { } + + /** + * @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 'procTrackbackAdminInsertModuleConfig' : + if(!$args->target_module_srl) return false; + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->target_module_srl); + if(!$module_info) return false; + + if($oModuleModel->isModuleAdmin($module_info, $logged_info)) return true; + break; + } + + return false; + } } ?> From e29fa855a7374096a4ed12e6a1651365a5e38674 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 04:27:19 +0000 Subject: [PATCH 053/278] =?UTF-8?q?=EC=97=AC=EB=9F=AC=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EC=9D=98=20=EA=B7=B8=EB=A3=B9=20=EC=9D=BC=EA=B4=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=8B=9C=20=EC=83=9D=EA=B8=B0=EB=8A=94=20DB=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3494 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/queries/deleteMembersGroup.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/member/queries/deleteMembersGroup.xml b/modules/member/queries/deleteMembersGroup.xml index a098aada1..2b59d25a8 100644 --- a/modules/member/queries/deleteMembersGroup.xml +++ b/modules/member/queries/deleteMembersGroup.xml @@ -3,7 +3,7 @@ - - + + From c8865b164ea32c5f637529921fe0473929e9e420 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 04:42:55 +0000 Subject: [PATCH 054/278] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=EC=97=90=EC=84=9C=20=EC=9E=98=EB=AA=BB=EB=90=9C=20sty?= =?UTF-8?q?le=20=ED=83=9C=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3495 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/tpl/js/editor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js index d5e86d584..4e8d16e96 100755 --- a/modules/editor/tpl/js/editor.js +++ b/modules/editor/tpl/js/editor.js @@ -120,7 +120,7 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height) { //''+ //''+ //''+ - ''+ ''+ From e9f30dec309a70787a09facca478b8aff28242e7 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 04:45:15 +0000 Subject: [PATCH 055/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=EC=9D=98=20p=20=ED=83=9C=EA=B7=B8=EC=9D=98=20display?= =?UTF-8?q?=EC=86=8D=EC=84=B1=EC=9D=84=20inline=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3496 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/css/default.css | 1 + 1 file changed, 1 insertion(+) diff --git a/common/css/default.css b/common/css/default.css index b221437c3..f65835eb7 100644 --- a/common/css/default.css +++ b/common/css/default.css @@ -95,6 +95,7 @@ div.xe_content { line-height:140%; } div.xe_content ol { margin-left:40px; } div.xe_content ul { margin-left:40px; } div.xe_content blockquote { margin-left:40px; } +div.xe_content p { display:inline; } /* xe layer */ #waitingforserverresponse { display:inline; border:2px solid #444444; background-color:#FFFFFF; padding:15px 20px 13px 20px; font-weight:bold; color:#444444; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; } From 0997550bd1cce5c62d91b52ccf8d573d3395866c Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 04:48:43 +0000 Subject: [PATCH 056/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3497 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/css/default.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/common/css/default.css b/common/css/default.css index f65835eb7..b136a179b 100644 --- a/common/css/default.css +++ b/common/css/default.css @@ -91,11 +91,11 @@ a.bold { font-weight:bold; } .member_profile_image { float:left; margin-right:10px; } /* xe content */ -div.xe_content { line-height:140%; } -div.xe_content ol { margin-left:40px; } -div.xe_content ul { margin-left:40px; } -div.xe_content blockquote { margin-left:40px; } -div.xe_content p { display:inline; } +div.xe_content { line-height:140%; !important} +div.xe_content ol { margin-left:40px; !important} +div.xe_content ul { margin-left:40px; !important} +div.xe_content blockquote { margin-left:40px; !important} +div.xe_content p { display:inline !important; } /* xe layer */ #waitingforserverresponse { display:inline; border:2px solid #444444; background-color:#FFFFFF; padding:15px 20px 13px 20px; font-weight:bold; color:#444444; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; } From 7d99958ff407d3b25495d21e0429614954e0d26d Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 06:02:07 +0000 Subject: [PATCH 057/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3498 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/member_messages.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/skins/default/member_messages.html b/modules/member/skins/default/member_messages.html index b3576371e..98f386292 100644 --- a/modules/member/skins/default/member_messages.html +++ b/modules/member/skins/default/member_messages.html @@ -22,7 +22,7 @@ -
{$message->content}
+
{$message->content}
From 120b53b10969479ccb3efc2590704a67c51cfa35 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Jan 2008 06:15:13 +0000 Subject: [PATCH 058/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80/=EB=8C=93?= =?UTF-8?q?=EA=B8=80=EC=9D=98=20getContent()=EC=97=90=201.=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=EB=A9=94=EB=89=B4(=EC=9D=B4=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=EC=9D=84..=20=EB=93=B1),=202.=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20(zone,=20=EC=A3=BC=EC=84=9D=EA=B0=90?= =?UTF-8?q?=EC=8B=B8=EA=B8=B0)=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=98=B5?= =?UTF-8?q?=EC=85=98=EC=9D=84=20=EB=91=90=EC=96=B4=EC=84=9C=20=EC=8A=A4?= =?UTF-8?q?=ED=82=A8=20=EC=A0=9C=EC=9E=91=EC=8B=9C=20=EB=B3=B4=EB=8B=A4=20?= =?UTF-8?q?=EC=9E=90=EC=9C=A0=EC=8A=A4=EB=9F=AC=EC=9A=B4=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=98=EA=B3=A0=20=EC=9D=B4=EB=A5=BC=20?= =?UTF-8?q?=EB=B0=94=ED=83=95=EC=9C=BC=EB=A1=9C=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=EC=9D=98=20=EC=9D=B8=EC=87=84=EC=8B=9C=EC=97=90=20?= =?UTF-8?q?=EC=A0=9C=EB=AA=A9/=EA=B8=80=EC=93=B4=EC=9D=B4/=EB=82=A0?= =?UTF-8?q?=EC=9E=90/=EB=B3=B8=EB=AC=B8=EB=A7=8C=20=EB=82=98=EC=98=A4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3499 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/comment.item.php | 27 ++++++++++++--------------- modules/document/document.item.php | 27 +++++++++++++-------------- modules/document/tpl/css/document.css | 2 ++ modules/document/tpl/print_page.html | 13 ++++++++----- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 824f7a928..a4b852181 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -154,7 +154,7 @@ return htmlspecialchars($content); } - function getContent($add_comment_info = true) { + function getContent($add_popup_menu = true, $add_content_info = true) { if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret'); $content = $this->get('content'); @@ -162,25 +162,22 @@ // url에 대해서 정규표현식으로 치환 $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); - // 추가 정보 출력을 하지 않는 경우 - if(!$add_comment_info) { + // 이 댓글을... 팝업메뉴를 출력할 경우 + if($add_popup_menu) { + $content = sprintf( + '%s
%s
', + $content, + $this->comment_srl, Context::getLang('cmd_comment_do') + ); + } + + // 컨텐츠에 대한 조작이 가능한 추가 정보를 설정하였을 경우 + if($add_content_info) { $content = sprintf( '
%s
', $this->comment_srl, $this->get('member_srl'), $this->comment_srl, $this->get('member_srl'), $content, - $this->comment_srl, $this->get('member_srl'), - $this->comment_srl, $this->get('member_srl') - ); - // 추가 정보 출력을 하지 않는 경우 "이 댓글을.." 메뉴 추가 - } else { - $content = sprintf( - '
%s
%s
', - $this->comment_srl, $this->get('member_srl'), - $this->comment_srl, $this->get('member_srl'), - $content, - $this->comment_srl, Context::getLang('cmd_comment_do'), - $this->comment_srl, $this->get('member_srl'), $this->comment_srl, $this->get('member_srl') ); } diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 85645d6d0..f362fa5b2 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -209,7 +209,7 @@ return htmlspecialchars($content); } - function getContent($add_document_info = true) { + function getContent($add_popup_menu = true, $add_content_info = true) { if(!$this->document_srl) return; if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); @@ -221,8 +221,17 @@ // url에 대해서 정규표현식으로 치환 $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); - // 추가 정보 출력을 하지 않는 경우 - if(!$add_document_info) { + // 이 게시글을... 팝업메뉴를 출력할 경우 + if($add_popup_menu) { + $content = sprintf( + '%s
%s
', + $content, + $this->document_srl, Context::getLang('cmd_document_do') + ); + } + + // 컨텐츠에 대한 조작이 가능한 추가 정보를 설정하였을 경우 + if($add_content_info) { $content = sprintf( '
%s
', $this->document_srl, $this->get('member_srl'), @@ -231,18 +240,8 @@ $this->document_srl, $this->get('member_srl'), $this->document_srl, $this->get('member_srl') ); - // 추가 정보를 출력시 "이 게시물을..'이라는 메뉴 추가 - } else { - $content = sprintf( - '
%s
%s
', - $this->document_srl, $this->get('member_srl'), - $this->document_srl, $this->get('member_srl'), - $content, - $this->document_srl, Context::getLang('cmd_document_do'), - $this->document_srl, $this->get('member_srl'), - $this->document_srl, $this->get('member_srl') - ); } + return $content; } diff --git a/modules/document/tpl/css/document.css b/modules/document/tpl/css/document.css index fec819620..3397e16ee 100644 --- a/modules/document/tpl/css/document.css +++ b/modules/document/tpl/css/document.css @@ -3,3 +3,5 @@ .document_list input { float:left; margin-right:10px; } .document_list address { float:left; width:100px; margin-right:10px; overflow:hidden; white-space:nowrap;} .document_list .document_title { } + +div.printContent { padding:20px; } diff --git a/modules/document/tpl/print_page.html b/modules/document/tpl/print_page.html index 60a495e73..27b100108 100644 --- a/modules/document/tpl/print_page.html +++ b/modules/document/tpl/print_page.html @@ -1,15 +1,18 @@ -

{$oDocument->getTitleText()}

+
-
{$oDocument->get('nick_name')}
-
{$oDocument->getRegdate()}
+

{$oDocument->getTitleText()}

-
+
{$oDocument->get('nick_name')}
+
{$oDocument->getRegdate()}
-
{$oDocument->getContent(false)}
+
+
{$oDocument->getContent(false, false)}
+ +
- +
+ + + + + + +
preview
+ +
+ +
+ +
{$upload_status}
+
diff --git a/modules/module/lang/en.lang.php b/modules/module/lang/en.lang.php index 74464d48f..d947ed942 100644 --- a/modules/module/lang/en.lang.php +++ b/modules/module/lang/en.lang.php @@ -51,7 +51,8 @@ $lang->about_footer_text = 'The contents will be shown on the bottom of the module.(html tags available)'; $lang->about_skin = 'You may choose a module skin.'; $lang->about_use_category = 'If checked, category function will be enabled.'; - $lang->about_list_count = 'You can set the number of limit to show article in a page.(default is 1)'; + $lang->about_list_count = 'You can set the number of limit to show article in a page.(default is 20)'; + $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; $lang->about_page_count = 'You can set the number of page link to move pages in a bottom of page.(default is 10)'; $lang->about_admin_id = 'You can grant a manager to have all permissions to the module.\n You can enter multiple IDs using
,(comma) \n(but the module manager cannot access the site admin page.)'; $lang->about_grant = 'If you disable all permissions for a specific object, members who has not logged in would get permission.'; diff --git a/modules/module/lang/es.lang.php b/modules/module/lang/es.lang.php index 180f935f6..b64b22469 100644 --- a/modules/module/lang/es.lang.php +++ b/modules/module/lang/es.lang.php @@ -51,7 +51,8 @@ $lang->about_footer_text = 'El contenido se mostrará en la parte inferior del módulo.(tags de html permitido)'; $lang->about_skin = 'Usted puede elegir un tema del módulo.'; $lang->about_use_category = 'Si selecciona esta opción, la función de categoría sera activada.'; - $lang->about_list_count = 'Usted puede definir el número límite de los documentos a mostrar en una página.(Predefinido es 1)'; + $lang->about_list_count = 'Usted puede definir el número límite de los documentos a mostrar en una página.(Predefinido es 20)'; + $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; $lang->about_page_count = 'Usted puede definir el número de página enlazada para mover páginas en un botón de la página.(Predefinido es 10)'; $lang->about_admin_id = 'Usted puede definir el administrador de atribuciones superiores al módulo.\n Usted puede asignar múltiples IDs,
utilizando una ","(coma) \n(pero el administrador del módulo no puede acceder al sitio de la pógina del administrador.)'; $lang->about_grant = 'Si usted desea desactivar a todos los objetos teniendo atribuciones especificas, incluso el usuario no conectado pueden tener atribuciones.'; diff --git a/modules/module/lang/jp.lang.php b/modules/module/lang/jp.lang.php index cfb4dd4ab..66d218244 100644 --- a/modules/module/lang/jp.lang.php +++ b/modules/module/lang/jp.lang.php @@ -51,7 +51,8 @@ $lang->about_footer_text = 'モジュールのフッターに表示される内容です。(HTMLタグが使用できる)。'; $lang->about_skin = 'モジュールのスキンを選択することができます。'; $lang->about_use_category = 'チェックするとカテゴリ機能が使用できます。'; - $lang->about_list_count = '1ページ当たりに表示される書き込みの数が指定できます(デフォルト1個)。'; + $lang->about_list_count = '1ページ当たりに表示される書き込みの数が指定できます(デフォルト20個)。'; + $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; $lang->about_page_count = 'リストの下段に移動できるページのリンク数が指定できます(デフォルト10個)。'; $lang->about_admin_id = '該当するモジュールに対して最高権限を持つ管理者を指定することができます。「,(コンマ)」で区切って多数のIDが指定できます(管理者ページへのアクセスはできません)。'; $lang->about_grant = '特定権限の対象をすべて解除するとログインしていない会員ユーザまで権限が与えられます。'; diff --git a/modules/module/lang/ko.lang.php b/modules/module/lang/ko.lang.php index 19acacff4..aa756f705 100644 --- a/modules/module/lang/ko.lang.php +++ b/modules/module/lang/ko.lang.php @@ -51,7 +51,8 @@ $lang->about_footer_text = '모듈의 하단에 표시되는 내용입니다 (html 태그 사용 가능)'; $lang->about_skin = '모듈의 스킨을 선택하실 수 있습니다'; $lang->about_use_category = '선택하시면 분류기능을 사용할 수 있습니다'; - $lang->about_list_count = '한페이지에 표시될 글의 수를 지정하실 수 있습니다. (기본 1개)'; + $lang->about_list_count = '한페이지에 표시될 글의 수를 지정하실 수 있습니다. (기본 20개)'; + $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; $lang->about_page_count = '목록 하단 페이지 이동 하는 링크의 수를 지정하실 수 있습니다. (기본 10개)'; $lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.
,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)'; $lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다'; diff --git a/modules/module/lang/ru.lang.php b/modules/module/lang/ru.lang.php index 0d2355130..fd69ce955 100644 --- a/modules/module/lang/ru.lang.php +++ b/modules/module/lang/ru.lang.php @@ -51,7 +51,8 @@ $lang->about_footer_text = 'Это содержимое будет показано снизу модуля. (HTML разрешен)'; $lang->about_skin = 'Вы можете выбрать скин модуля.'; $lang->about_use_category = 'Если выбрано, функция категорий будет включена.'; - $lang->about_list_count = 'Вы можете установить лимит показа статей на страницу. (по умолчанию: 1)'; + $lang->about_list_count = 'Вы можете установить лимит показа статей на страницу. (по умолчанию: 20)'; + $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; $lang->about_page_count = 'Вы можете установить число страниц внизу. (по умолчанию: 10)'; $lang->about_admin_id = 'Вы можете разрешить менеджеру иметь полные права доступа к этому модулю.\nВы можете ввести несколько ID, используя
запятую \n(но менеджер модуля не имеет права доступа к странице администрирования сайта.)'; $lang->about_grant = 'Если Вы отключите все права доступа для отдельного объекта, не прошедшие процедуру входа на сайт пользователи получат доступ.'; diff --git a/modules/module/lang/zh-CN.lang.php b/modules/module/lang/zh-CN.lang.php index b2799ea41..8cd1ab751 100644 --- a/modules/module/lang/zh-CN.lang.php +++ b/modules/module/lang/zh-CN.lang.php @@ -51,7 +51,8 @@ $lang->about_footer_text = '显示在模块底部的内容。(可以使用HTML)'; $lang->about_skin = '可以选择模块皮肤。'; $lang->about_use_category = '选择此项可以使用分类功能。'; - $lang->about_list_count = '可以指定每页显示的主题数。(默认为1个)'; + $lang->about_list_count = '可以指定每页显示的主题数。(默认为20个)'; + $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; $lang->about_page_count = '可以指定显示在目录下方的页面数。 (默认为10个)'; $lang->about_admin_id = '可以对该模块指定最高管理权限。
有多名管理员时,可以用,(逗号)来分隔。 (不能访问管理页面)'; $lang->about_grant = '全部解除特定权限的对象时,没有登录的会员也将具有相关权限。'; From ea2a464abb5b34199c3222e6ec8b8cf83baea898 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 18 Jan 2008 09:51:01 +0000 Subject: [PATCH 099/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3540 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/member_extra_info.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/member_extra_info/member_extra_info.lib.php b/addons/member_extra_info/member_extra_info.lib.php index dad26825f..b8b94d820 100644 --- a/addons/member_extra_info/member_extra_info.lib.php +++ b/addons/member_extra_info/member_extra_info.lib.php @@ -28,7 +28,7 @@ // 이미지이름이나 마크가 없으면 원본 정보를 세팅 if(!$image_name_file && !$image_mark_file) return $matches[0]; - $nick_name = htmlspecialchars(strip_tags($nick_name)); + $text = $nick_name = htmlspecialchars(strip_tags($nick_name)); // 이미지 이름이 있을 경우 if($image_name_file) $text = sprintf('id: %s', $image_name_file, $nick_name, $nick_name); From cab6ea567341fa0741d71936270aad90c42c9b57 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 18 Jan 2008 09:52:44 +0000 Subject: [PATCH 100/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3541 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index e997255e7..42c9d5703 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -370,6 +370,7 @@ function getComments() { if(!$this->allowComment() || !$this->getCommentCount()) return; + if(!$this->isGranted() && $this->isSecret()) return; $oCommentModel = &getModel('comment'); $output = $oCommentModel->getCommentList($this->document_srl, $is_admin); From 37f5fad5f60ad7f240c099e8613637ed26561ac6 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 18 Jan 2008 09:53:42 +0000 Subject: [PATCH 101/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3542 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/header.html | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/board/skins/xe_board/header.html b/modules/board/skins/xe_board/header.html index 1cf63389e..81e0d99b3 100644 --- a/modules/board/skins/xe_board/header.html +++ b/modules/board/skins/xe_board/header.html @@ -114,7 +114,6 @@
  • List
  • Webzine
  • Gallery
  • -
  • Blog
  • From 42f29415d6c039e389ce9a16563b3e263f483f91 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 18 Jan 2008 09:58:12 +0000 Subject: [PATCH 102/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3543 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/header.html | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/board/skins/xe_board/header.html b/modules/board/skins/xe_board/header.html index 81e0d99b3..24058f412 100644 --- a/modules/board/skins/xe_board/header.html +++ b/modules/board/skins/xe_board/header.html @@ -36,13 +36,11 @@ - + {@ $module_info->default_style = 'gallery'} {@ $module_info->default_style = 'webzine'} - - {@ $module_info->default_style = 'blog'} {@ $module_info->default_style = 'list'} From a6a082dfceca342e5b699f78637c87f348b3bc81 Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 18 Jan 2008 10:23:49 +0000 Subject: [PATCH 103/278] =?UTF-8?q?PHP=204=EC=97=90=EC=84=9C=20=EC=8B=9C?= =?UTF-8?q?=EA=B0=84=EC=9D=B4=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20=EC=95=88=20?= =?UTF-8?q?=EB=A7=9E=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3544 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/conf/info.xml | 2 +- modules/lifepod/lifepod.view.php | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/lifepod/conf/info.xml b/modules/lifepod/conf/info.xml index 75255bf2c..7a22abf9b 100644 --- a/modules/lifepod/conf/info.xml +++ b/modules/lifepod/conf/info.xml @@ -1,5 +1,5 @@ - + 라이프팟 연동 Lifepod Lifepod連動 diff --git a/modules/lifepod/lifepod.view.php b/modules/lifepod/lifepod.view.php index b38da4b75..8c61da5da 100644 --- a/modules/lifepod/lifepod.view.php +++ b/modules/lifepod/lifepod.view.php @@ -50,29 +50,29 @@ $cDay = Context::get('day'); $calendars = array(); - - foreach($caladdresses as $key => $val) + + foreach($caladdresses as $key=>$val) { $page = $oLifepodModel->getPage($val, $cYear, $cMonth, $cDay); - foreach ($page->data as $key => $val) + for($j=0;$jdata);$j++) { - if($val->childNodes["date-start"]) + $data = &$page->data[$j]; + if($data->childNodes["date-start"]) { - $val->childNodes["date-start"]->body = $this->dateFormatChange($val->childNodes["date-start"]->body); + $data->childNodes["date-start"]->body = $this->dateFormatChange($data->childNodes["date-start"]->body); } - if($val->childNodes["date-end"]) + if($data->childNodes["date-end"]) { $plus = 0; - if($val->childNodes["type"]->body == "daylong") + if($data->childNodes["type"]->body == "daylong") $plus = -1; - $val->childNodes["date-end"]->body = $this->dateFormatChange($val->childNodes["date-end"]->body, $plus); + $data->childNodes["date-end"]->body = $this->dateFormatChange($data->childNodes["date-end"]->body, $plus); } - $val->childNodes["description"]->body = str_replace("\n", "
    ", $val->childNodes["description"]->body); + $data->childNodes["description"]->body = str_replace("\n", "
    ", $data->childNodes["description"]->body); } $calendars[] = $page; - } Context::set('calendars', $calendars); From 205324a735d5264ee0b69067c1c0a41006d0ced0 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 18 Jan 2008 12:14:12 +0000 Subject: [PATCH 104/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=EC=9D=98=20?= =?UTF-8?q?=EB=B6=84=EB=A5=98(=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC)=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EB=A5=BC=20=EB=A9=94=EB=89=B4(menu)=EC=99=80?= =?UTF-8?q?=20=EA=B0=99=EC=9D=B4=20ajax=EB=A1=9C=20=EB=B6=80=EB=AA=A8-?= =?UTF-8?q?=EC=9E=90=EC=8B=9D=20=EA=B4=80=EA=B3=84=EB=A1=9C=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=88=98=EC=A0=95.=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=EB=B3=84=20=EA=B6=8C=ED=95=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=EC=9D=84=20=ED=86=B5=ED=95=B4=20=EA=B8=80=EC=9E=91?= =?UTF-8?q?=EC=84=B1=EC=8B=9C=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20?= =?UTF-8?q?=EC=84=A0=EB=B3=84=20=EC=A0=9C=EA=B3=B5=20=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3545 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.admin.controller.php | 161 +++++++++++++----- modules/board/board.admin.model.php | 65 +++++++ modules/board/board.admin.view.php | 28 +-- modules/board/board.view.php | 59 +++++-- modules/board/conf/module.xml | 10 ++ modules/board/lang/en.lang.php | 17 ++ modules/board/lang/es.lang.php | 19 +++ modules/board/lang/jp.lang.php | 20 +++ modules/board/lang/ko.lang.php | 17 ++ modules/board/lang/ru.lang.php | 20 +++ modules/board/lang/zh-CN.lang.php | 21 +++ modules/board/skins/xe_board/css/common.css | 2 +- modules/board/skins/xe_board/tag_list.html | 2 +- modules/board/skins/xe_board/write_form.html | 2 +- modules/board/tpl/category_info.html | 48 ++++++ modules/board/tpl/category_list.html | 98 ++++------- modules/board/tpl/css/board.css | 11 ++ modules/board/tpl/filter/delete_category.xml | 11 ++ modules/board/tpl/filter/insert_category.xml | 15 +- modules/board/tpl/filter/move_category.xml | 10 ++ modules/board/tpl/header.html | 2 +- modules/board/tpl/js/board_admin.js | 156 ++++++++++++++++- modules/document/document.controller.php | 40 ++++- modules/document/document.model.php | 2 +- modules/document/queries/getChildCategory.xml | 11 ++ .../document/queries/updateCategoryOrder.xml | 12 ++ modules/menu/queries/getChildMenuCount.xml | 6 +- 27 files changed, 716 insertions(+), 149 deletions(-) create mode 100644 modules/board/board.admin.model.php create mode 100644 modules/board/tpl/category_info.html create mode 100644 modules/board/tpl/css/board.css create mode 100644 modules/board/tpl/filter/delete_category.xml create mode 100644 modules/board/tpl/filter/move_category.xml create mode 100644 modules/document/queries/getChildCategory.xml create mode 100644 modules/document/queries/updateCategoryOrder.xml diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index e4898822b..a7d92fe45 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -257,59 +257,140 @@ /** * @brief 카테고리 추가 **/ - function procBoardAdminInsertCategory() { - // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 - $module_srl = Context::get('module_srl'); - $category_title = Context::get('category_title'); + function procBoardAdminInsertCategory($args = null) { + // 입력할 변수 정리 + if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','title','expand','group_srls'); + + if($args->expand !="Y") $args->expand = "N"; + $args->group_srls = str_replace('|@|',',',$args->group_srls); + $args->parent_srl = (int)$args->parent_srl; - // module_srl이 있으면 원본을 구해온다 $oDocumentController = &getController('document'); - $args->module_srl = $module_srl; - $args->title = $category_title; - $output = $oDocumentController->insertCategory($args); - if(!$output->toBool()) return $output; + $oDocumentModel = &getModel('document'); - $this->add('page',Context::get('page')); - $this->add('module_srl',$module_srl); - $this->setMessage('success_registed'); + $oDB = &DB::getInstance(); + $oDB->begin(); + + // 이미 존재하는지를 확인 + if($args->category_srl) { + $category_info = $oDocumentModel->getCategory($args->category_srl); + if($category_info->category_srl != $args->category_srl) $args->category_srl = null; + } + + // 존재하게 되면 update를 해준다 + if($args->category_srl) { + $output = $oDocumentController->updateCategory($args); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + + // 존재하지 않으면 insert를 해준다 + } else { + $output = $oDocumentController->insertCategory($args); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + } + + // XML 파일을 갱신하고 위치을 넘겨 받음 + $xml_file = $oDocumentController->makeCategoryFile($args->module_srl); + + $oDB->commit(); + + $this->add('xml_file', $xml_file); + $this->add('module_srl', $args->module_srl); + $this->add('category_srl', $args->category_srl); + $this->add('parent_srl', $args->parent_srl); + } + + + /** + * @brief 카테고리 삭제 + **/ + function procBoardAdminDeleteCategory() { + // 변수 정리 + $args = Context::gets('module_srl','category_srl'); + + $oDB = &DB::getInstance(); + $oDB->begin(); + + $oDocumentModel = &getModel('document'); + + // 원정보를 가져옴 + $category_info = $oDocumentModel->getCategory($args->category_srl); + if($category_info->parent_srl) $parent_srl = $category_info->parent_srl; + + // 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력 + if($oDocumentModel->getCategoryChlidCount($args->category_srl)) return new Object(-1, 'msg_cannot_delete_for_child'); + + // DB에서 삭제 + $oDocumentController = &getController('document'); + $output = $oDocumentController->deleteCategory($args->category_srl); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + + // XML 파일을 갱신하고 위치을 넘겨 받음 + $xml_file = $oDocumentController->makeCategoryFile($args->module_srl); + + $oDB->commit(); + + $this->add('xml_file', $xml_file); + $this->add('category_srl', $parent_srl); + $this->setMessage('success_deleted'); } /** - * @brief 카테고리의 내용 수정 + * @brief 카테고리 이동 **/ - function procBoardAdminUpdateCategory() { - $module_srl = Context::get('module_srl'); - $category_srl = Context::get('category_srl'); - $mode = Context::get('mode'); - $title = Context::get('category_title'); + function procBoardAdminMoveCategory() { + $source_category_srl = Context::get('source_category_srl'); + $target_category_srl = Context::get('target_category_srl'); $oDocumentModel = &getModel('document'); $oDocumentController = &getController('document'); - switch($mode) { - case 'up' : - $output = $oDocumentController->moveCategoryUp($category_srl); - $msg_code = 'success_moved'; - break; - case 'down' : - $output = $oDocumentController->moveCategoryDown($category_srl); - $msg_code = 'success_moved'; - break; - case 'delete' : - $output = $oDocumentController->deleteCategory($category_srl); - $msg_code = 'success_deleted'; - break; - case 'update' : - $selected_category = $oDocumentModel->getCategory($category_srl); - $selected_category->title = $title; - $output = $oDocumentController->updateCategory($selected_category); - $msg_code = 'success_updated'; - break; - } + $target_category = $oDocumentModel->getCategory($target_category_srl); + $source_category = $oDocumentModel->getCategory($source_category_srl); + + // target_category의 list_order값을 +1해 준다 + $output = $oDocumentController->updateCategoryListOrder($target_category->module_srl, $target_category->list_order); if(!$output->toBool()) return $output; - $this->add('module_srl', $module_srl); - $this->setMessage($msg_code); + // source_category에 target_category_srl의 parent_srl, list_order 값을 입력 + $source_args->category_srl = $source_category_srl; + $source_args->parent_srl = $target_category->parent_srl; + $source_args->list_order = $target_category->list_order; + $output = $oDocumentController->updateCategory($source_args); + if(!$output->toBool()) return $output; + + // xml파일 재생성 + $xml_file = $oDocumentController->makeCategoryFile($source_category->module_srl); + + // return 변수 설정 + $this->add('xml_file', $xml_file); + $this->add('source_category_srl', $source_category_srl); + } + + /** + * @brief xml 파일을 갱신 + * 관리자페이지에서 메뉴 구성 후 간혹 xml파일이 재생성 안되는 경우가 있는데\n + * 이럴 경우 관리자의 수동 갱신 기능을 구현해줌\n + * 개발 중간의 문제인 것 같고 현재는 문제가 생기지 않으나 굳이 없앨 필요 없는 기능 + **/ + function procBoardAdminMakeXmlFile() { + // 입력값을 체크 + $module_srl = Context::get('module_srl'); + + // xml파일 재생성 + $oDocumentController = &getController('document'); + $xml_file = $oDocumentController->makeCategoryFile($module_srl); + + // return 값 설정 + $this->add('xml_file',$xml_file); } } ?> diff --git a/modules/board/board.admin.model.php b/modules/board/board.admin.model.php new file mode 100644 index 000000000..39e17ba37 --- /dev/null +++ b/modules/board/board.admin.model.php @@ -0,0 +1,65 @@ +getGroups(); + Context::set('group_list', $group_list); + + $oDocumentModel = &getModel('document'); + + // parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임 + if(!$category_srl && $parent_srl) { + // 상위 메뉴의 정보를 가져옴 + $parent_info = $oDocumentModel->getCategory($parent_srl); + + // 추가하려는 메뉴의 기본 변수 설정 + $category_info->category_srl = getNextSequence(); + $category_info->parent_srl = $parent_srl; + $category_info->parent_category_title = $parent_info->title; + + // root에 메뉴 추가하거나 기존 메뉴의 수정일 경우 + } else { + // category_srl 이 있으면 해당 메뉴의 정보를 가져온다 + if($category_srl) $category_info = $oDocumentModel->getCategory($category_srl); + + // 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌 + if(!$category_info->category_srl) { + $category_info->category_srl = getNextSequence(); + } + } + + Context::set('category_info', $category_info); + + // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($this->module_path.'tpl', 'category_info'); + + // return 할 변수 설정 + $this->add('tpl', $tpl); + } + + } +?> diff --git a/modules/board/board.admin.view.php b/modules/board/board.admin.view.php index 15d7b267f..e95d0ae1d 100644 --- a/modules/board/board.admin.view.php +++ b/modules/board/board.admin.view.php @@ -181,32 +181,18 @@ * @brief 카테고리의 정보 출력 **/ function dispBoardAdminCategoryInfo() { - // module_srl을 구함 - $module_srl = Context::get('module_srl'); + $module_srl = $this->module_info->module_srl; - // 카테고리의 목록을 구해옴 + // 카테고리 정보를 가져옴 $oDocumentModel = &getModel('document'); - $category_list = $oDocumentModel->getCategoryList($module_srl); - Context::set('category_list', $category_list); + $category_xml_file = $oDocumentModel->getCategoryXmlFile($module_srl); - // 수정하려는 카테고리가 있다면해당 카테고리의 정보를 가져옴 - $category_srl = Context::get('category_srl'); + Context::set('category_xml_file', $category_xml_file); + Context::addJsFile('./common/js/tree_menu.js'); - if($category_srl) { - - $selected_category = $oDocumentModel->getCategory($category_srl); - - if(!$selected_category) Context::set('category_srl',''); - else Context::set('selected_category',$selected_category); - - $this->setTemplateFile('category_update_form'); - - } else { - - $this->setTemplateFile('category_list'); - - } + Context::set('layout','none'); + $this->setTemplateFile('category_list'); } /** diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 0aa025682..126695007 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -13,15 +13,6 @@ * board 모듈은 일반 사용과 관리자용으로 나누어진다.\n **/ function init() { - /** - * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅 - **/ - if($this->module_info->use_category=='Y') { - $oDocumentModel = &getModel('document'); - $this->category_list = $oDocumentModel->getCategoryList($this->module_srl); - Context::set('category_list', $this->category_list); - } - /** * 스킨등에서 사용될 module_srl이나 module_info등을 context set **/ @@ -55,12 +46,19 @@ * @brief 목록 및 선택된 글 출력 **/ function dispBoardContent() { - /** * 목록보기 권한 체크 (모든 권한은 ModuleObject에서 xml 정보와 module_info의 grant 값을 비교하여 미리 설정하여 놓음) **/ if(!$this->grant->list) return $this->dispBoardMessage('msg_not_permitted'); + /** + * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅 + **/ + if($this->module_info->use_category=='Y') { + $oDocumentModel = &getModel('document'); + Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl)); + } + /** * 목록이 노출될때 같이 나오는 검색 옵션을 정리하여 스킨에서 쓸 수 있도록 context set **/ @@ -214,12 +212,47 @@ // 권한 체크 if(!$this->grant->write_document) return $this->dispBoardMessage('msg_not_permitted'); + $oDocumentModel = &getModel('document'); + + /** + * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅, 권한도 함께 체크 + **/ + if($this->module_info->use_category=='Y') { + + // 로그인한 사용자의 그룹 정보를 구함 + if(Context::get('is_logged')) { + $logged_info = Context::get('logged_info'); + $group_srls = array_keys($logged_info->group_list); + } else { + $group_srls = array(); + } + $group_srls_count = count($group_srls); + + // 카테고리 목록을 구하고 권한을 체크 + $normal_category_list = $oDocumentModel->getCategoryList($this->module_srl); + if(count($normal_category_list)) { + foreach($normal_category_list as $category_srl => $category) { + $is_granted = true; + if($category->group_srls) { + $category_group_srls = explode(',',$category->group_srls); + $is_granted = false; + for($i=0;$i<$group_srls_count;$i++) { + if(in_array($group_srls[$i],$category_group_srls)) { + $is_granted = true; + break; + } + } + + } + if($is_granted) $category_list[$category_srl] = $category; + } + } + Context::set('category_list', $category_list); + } + // GET parameter에서 document_srl을 가져옴 $document_srl = Context::get('document_srl'); - // document 모듈 객체 생성 - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); $oDocument->setDocument($document_srl); diff --git a/modules/board/conf/module.xml b/modules/board/conf/module.xml index d85fc907e..5eece49be 100644 --- a/modules/board/conf/module.xml +++ b/modules/board/conf/module.xml @@ -52,6 +52,8 @@ + + @@ -62,6 +64,9 @@ + + + @@ -85,6 +90,8 @@ + + @@ -100,5 +107,8 @@ + + +
    diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index 97907682d..e4b54dc9b 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -9,11 +9,28 @@ $lang->except_notice = "공지사항 제외"; + $lang->cmd_manage_menu = 'Menu management'; + $lang->cmd_make_child = 'Add child category'; + $lang->cmd_enable_move_category = "Change category position (Drag the top menu after selection)"; + + // Item + $lang->parent_category_title = 'Parent category'; + $lang->category_title = 'Category'; + $lang->expand = 'Expand'; + $lang->category_group_srls = 'Accessable Group'; + $lang->search_result = 'Search result'; + // words used in button $lang->cmd_board_list = 'Board list'; $lang->cmd_module_config = 'Common board setting'; $lang->cmd_view_info = 'Board info'; + // blah blah.. + $lang->about_category_title = 'Please input category name'; + $lang->about_expand = 'By selecting this option, it will be always expanded'; + $lang->about_category_group_srls = 'Only the selected group will be able to see current categories. (Manually open xml file to expose)'; + $lang->about_layout_setup = 'You can manually modify board layout code. Insert or manage the widget code anywhere you want'; + $lang->about_board_category = 'You can make board categories.
    When board category is broken, try rebuilding the cache file manually.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "This module is for creating and managing boards.\nYou may select the module name from the list after creating one to configure specifically.\nPlease be careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)"; ?> diff --git a/modules/board/lang/es.lang.php b/modules/board/lang/es.lang.php index c28807d2b..d0527ea93 100644 --- a/modules/board/lang/es.lang.php +++ b/modules/board/lang/es.lang.php @@ -8,12 +8,31 @@ $lang->board = "Tablero"; $lang->except_notice = "공지사항 제외"; + $lang->cmd_manage_menu = 'Manejo del menú'; + $lang->cmd_make_child = 'Agregar sub categoría'; + $lang->cmd_enable_move_category = "Cambiar la posición de la categoría. (arrastrar y soltar luego de haber selecionado)"; + $lang->cmd_remake_cache = 'Rehacer archivo caché'; + $lang->cmd_layout_setup = 'Configuración del diseño'; + $lang->cmd_layout_edit = 'Editar el diseño'; + + // Artículos + $lang->parent_category_title = 'Categoría Superior'; + $lang->category_title = 'Nombre de la categoría'; + $lang->expand = 'Expandir'; + $lang->category_group_srls = 'Limitar el grupo'; + $lang->search_result = 'Resultado de la búsqueda'; // Palabras utilizadas en los botones $lang->cmd_board_list = 'Lista del tableros'; $lang->cmd_module_config = 'Configuración común del Tablero'; $lang->cmd_view_info = 'Información del Tablero'; + // bla bla... + $lang->about_category_title = 'Ingresar el nombre de la categoría.'; + $lang->about_expand = 'Si seleccionas esta opción, siempre estará expandido.'; + $lang->about_category_group_srls = 'Solo se verán los grupos seleccionados en la actual categoría. (Abrir manualmente en archivo xml para la exposición)'; + $lang->about_layout_setup = 'Puede modificar manualmente el código del diseño de tableros. Insertar o modificar el código de widget.'; + $lang->about_board_category = 'Puede crear las categorias de tableros.
    Cuando no funciona la categoría de tableros, rehacer el archivo caché manualmente para solucionar.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "Este módulo es para crear y manejar los tableros.\nLuego de crear un Tablero, seleciona el nombre del módulo para la configuración más detallada.\nSea cuidadoso con el nombre del módulo, ya que ese nombre va a ser la dirección URL. (ej : http://dominio/zb/?mid=nombre del módulo)"; ?> diff --git a/modules/board/lang/jp.lang.php b/modules/board/lang/jp.lang.php index bd07a0e14..0d92df001 100644 --- a/modules/board/lang/jp.lang.php +++ b/modules/board/lang/jp.lang.php @@ -9,11 +9,31 @@ $lang->except_notice = "공지사항 제외"; + $lang->cmd_manage_menu = 'メニュー管理'; + $lang->cmd_make_child = '下位カテゴリ追加'; + $lang->cmd_enable_move_category = "カテゴリ位置変更(選択後上のメニューをドラッグして下さい)"; + $lang->cmd_remake_cache = 'キャッシュファイル再生性'; + $lang->cmd_layout_setup = 'レイアウト設定'; + $lang->cmd_layout_edit = 'レイアウト編集'; + + // 項目 + $lang->parent_category_title = '上位カテゴリ名'; + $lang->category_title = 'カテゴリ名'; + $lang->expand = '拡張表示'; + $lang->category_group_srls = 'グループ制限'; + $lang->search_result = '検索結果'; + // ボタンに使用する用語 $lang->cmd_board_list = '掲示板リスト'; $lang->cmd_module_config = '掲示板共通設定'; $lang->cmd_view_info = '掲示板情報'; + // その他 + $lang->about_category_title = 'カテゴリ名を入力して下さい。'; + $lang->about_expand = 'チェックすると常に展開された状態になります。'; + $lang->about_category_group_srls = '選択したグループのみ現在のカテゴリが見えるようになります(XMLファイルを直接閲覧すると表示されます)。'; + $lang->about_layout_setup = 'ブログのレイアウトのコードを直接修正します。ウィジェットコードを好きなところに入力、又は管理して下さい。'; + $lang->about_board_category = 'ブログのカテゴリを作成します。
    ブログのカテゴリが誤作動する場合、「キャッシュファイルの再生性」を手動で行うことで解決できます。'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "掲示板の生成、および管理する掲示板モジュールです。\n生成後、リストからモジュール名を選択すると詳細な設定ができます。\n掲示板のモジュール名はURLになりますので注意してください。 (ex : http://ドメイン/zb/?mid=モジュール名)"; ?> diff --git a/modules/board/lang/ko.lang.php b/modules/board/lang/ko.lang.php index 94e7c3d45..9a9a2929c 100644 --- a/modules/board/lang/ko.lang.php +++ b/modules/board/lang/ko.lang.php @@ -9,11 +9,28 @@ $lang->except_notice = "공지사항 제외"; + $lang->cmd_manage_menu = '메뉴관리'; + $lang->cmd_make_child = '하위 카테고리 추가'; + $lang->cmd_enable_move_category = "카테고리 위치 변경 (선택후 위 메뉴를 드래그하세요)"; + + // 항목 + $lang->parent_category_title = '상위 카테고리명'; + $lang->category_title = '분류명'; + $lang->expand = '펼침'; + $lang->category_group_srls = '그룹제한'; + $lang->search_result = '검색결과'; + // 버튼에 사용되는 언어 $lang->cmd_board_list = '게시판 목록'; $lang->cmd_module_config = '게시판 공통 설정'; $lang->cmd_view_info = '게시판 정보'; + // 주절 주절.. + $lang->about_category_title = '카테고리 이름을 입력해주세요'; + $lang->about_expand = '선택하시면 늘 펼쳐진 상태로 있게 합니다'; + $lang->about_category_group_srls = '선택하신 그룹만 현재 카테고리가 보이게 됩니다. (xml파일을 직접 열람하면 노출이 됩니다)'; + $lang->about_layout_setup = '블로그의 레이아웃 코드를 직접 수정할 수 있습니다. 위젯 코드를 원하는 곳에 삽입하시거나 관리하세요'; + $lang->about_board_category = '분류를 만드실 수 있습니다.
    분류가 오동작을 할 경우 캐시파일 재생성을 수동으로 해주시면 해결이 될 수 있습니다.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "게시판을 생성하고 관리할 수 있는 게시판 모듈입니다.\n생성하신 후 목록에서 모듈이름을 선택하시면 자세한 설정이 가능합니다.\n게시판의 모듈이름은 접속 url이 되므로 신중하게 입력해주세요. (ex : http://도메인/zb/?mid=모듈이름)"; ?> diff --git a/modules/board/lang/ru.lang.php b/modules/board/lang/ru.lang.php index 1053ca12d..33f3f3132 100644 --- a/modules/board/lang/ru.lang.php +++ b/modules/board/lang/ru.lang.php @@ -9,11 +9,31 @@ $lang->except_notice = "공지사항 제외"; + $lang->cmd_manage_menu = 'Управление меню'; + $lang->cmd_make_child = 'Добавить дочернюю категорию'; + $lang->cmd_enable_move_category = "Изменить позицию категории (Перетащите верхнее меню после выделения)"; + $lang->cmd_remake_cache = 'Перепостроить файл кеша'; + $lang->cmd_layout_setup = 'Конфигурировать лейаут'; + $lang->cmd_layout_edit = 'Редактировать лейаут'; + + // Объект + $lang->parent_category_title = 'Родительская категория'; + $lang->category_title = 'Категория'; + $lang->expand = 'Расширить'; + $lang->category_group_srls = 'Доступные группы'; + $lang->search_result = 'Результат поиска'; + // слова, использованные в кнопке $lang->cmd_board_list = 'Список форумов'; $lang->cmd_module_config = 'Общие настройки форума'; $lang->cmd_view_info = 'Информация форума'; + // blah blah.. или чушь всякая... ;) + $lang->about_category_title = 'Пожалуйста, введите название категории'; + $lang->about_expand = 'Если эта опция выбрана, расширение будут применено всегда'; + $lang->about_category_group_srls = 'Только выбранная группа будет способна видеть ткущие категории. (Вручную откройте xml файл, чтобы сделать видимыми)'; + $lang->about_layout_setup = 'Вы можете вручную изменять лейаут код блога. Вставляйте или управляйте кодом виджетов везде, где хотите'; + $lang->about_board_category = 'Вы можете сделать категории блога.
    Когда категория блога испорчена, попробуйте перепостроить файл кеша вручную.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "Этот модуль служит для создания и управления форумами.\nВы можете выбрать имя модуля из списка после создания для дополнительного конифигурирования.\nПожалуйста, будте осторожны с именем модуля форума, поскольку оно будет URL. (например : http://domain/zb/?mid=имя_модуля)"; ?> diff --git a/modules/board/lang/zh-CN.lang.php b/modules/board/lang/zh-CN.lang.php index 89acf81e9..ed0de554d 100644 --- a/modules/board/lang/zh-CN.lang.php +++ b/modules/board/lang/zh-CN.lang.php @@ -9,11 +9,32 @@ $lang->except_notice = "공지사항 제외"; + $lang->cmd_manage_menu = '菜单管理'; + $lang->cmd_make_child = '添加下级分类'; + $lang->cmd_enable_move_category = "更改分类顺序 (选择后拖动菜单)"; + $lang->cmd_remake_cache = '重新生成缓冲文件'; + $lang->cmd_layout_setup = '布局设置'; + $lang->cmd_layout_edit = '编辑布局'; + + // 项目 + $lang->parent_category_title = '上级分类名'; + $lang->category_title = '分类名'; + $lang->expand = '展开'; + $lang->category_group_srls = '用户组'; + $lang->search_result = '搜索结果'; + // 按钮语言 $lang->cmd_board_list = '版面目录'; $lang->cmd_module_config = '版面共同设置'; $lang->cmd_view_info = '版面信息'; + + // 信息、提示.. + $lang->about_category_title = '请输入分类名。'; + $lang->about_expand = '选择此项将维持展开状态。'; + $lang->about_category_group_srls = '被选的用户组才可以查看此分类。'; + $lang->about_layout_setup = '可直接编辑博客布局代码。可以把控件代码插入到您喜欢的位置。'; + $lang->about_board_category = '可以添加/删除博客分类
    博客分类有异常情况时,可以尝试重新生成缓冲文件。'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "可生成,管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。"; ?> diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 602efac9f..e08cb837e 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -91,7 +91,7 @@ Jeong, Chan Myeong 070601~070630 .boardRead .fileAttached li a { text-decoration:none; font-size:.9em; padding:0 0 2px 17px; white-space:nowrap; color:#444444; } .boardRead .fileAttached li a:visited { color:#777777;} -.boardRead .contentButton { text-align:right;margin:10px 0 5px 0; border-bottom:1px solid #DDDDDD; padding-bottom:10px;} +.boardRead .contentButton { text-align:right;margin:10px 0 5px 0; border-top:1px solid #DDDDDD; padding-top:10px;} .trackbackBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db;;margin-top:.5em; } diff --git a/modules/board/skins/xe_board/tag_list.html b/modules/board/skins/xe_board/tag_list.html index 88746e067..3f8df1795 100644 --- a/modules/board/skins/xe_board/tag_list.html +++ b/modules/board/skins/xe_board/tag_list.html @@ -33,7 +33,7 @@
    -
    + diff --git a/modules/board/skins/xe_board/write_form.html b/modules/board/skins/xe_board/write_form.html index 7781e6bb2..0170ab380 100644 --- a/modules/board/skins/xe_board/write_form.html +++ b/modules/board/skins/xe_board/write_form.html @@ -39,7 +39,7 @@ {@ $_color = array('555555','222288','226622','2266EE','8866CC','88AA66','EE2222','EE6622','EEAA22','EEEE22') }
    + + + +++ + + + + + + + + + + + + + + + + + + + + +
    {$lang->parent_category_title}{$category_info->parent_category_title}
    {$lang->category_title} + +

    {$lang->about_category_title}

    +
    {$lang->expand} + expand=="Y")-->checked="checked" class="checkbox" /> + {$lang->about_expand} +
    {$lang->category_group_srls} + +
    group_srls)&&in_array($key, $category_info->group_srls))-->checked="checked" class="checkbox" />
    + +

    {$lang->about_category_group_srls}

    +
    + + {$lang->cmd_delete} + + {$lang->cmd_close} + + + {$lang->cmd_make_child} + +
    diff --git a/modules/board/tpl/category_list.html b/modules/board/tpl/category_list.html index 4206091be..1cffd2efb 100644 --- a/modules/board/tpl/category_list.html +++ b/modules/board/tpl/category_list.html @@ -1,70 +1,46 @@ - + + + + - + - - - - - -
    +

    {$lang->board} {$lang->cmd_management}

    +
    {nl2br($lang->about_board_category)}
    - ------ - - - - - - - - - - - - - - + - - - - - - - - - - -
    {$lang->category_title}{$lang->last_update}{$lang->cmd_modify}{$lang->cmd_move}{$lang->cmd_delete}
    {$lang->msg_category_is_null}
    {htmlspecialchars($category_info->title)}{zdate($category_info->last_update,"Y-m-d H:i:s")}{$lang->cmd_modify} - {$lang->cmd_move_up} - {$lang->cmd_move_down} - {$lang->cmd_delete}
    +

    - -
    - - - + + + + + +
    - - - - - - - - - -
    {$lang->category_title} - -
    +
    +
    + + -
    +
    +
    +
    +
    + + + +
    diff --git a/modules/board/tpl/css/board.css b/modules/board/tpl/css/board.css new file mode 100644 index 000000000..613a74b4a --- /dev/null +++ b/modules/board/tpl/css/board.css @@ -0,0 +1,11 @@ +@charset "utf-8"; + +body { margin:10px; } + +.menuListZone { table-layout:fixed; } +.menuListZone td { vertical-align:top; } +.menuListZone td.category_zone { padding-right:10px; } + +#category_list { padding:.5em 0 .5em 0; margin-bottom:2em; width:250px; overflow:hidden; float:left; position:absolute; left:10px;} +#category_info { margin-left:10px; width:560px; _width:540px; float:left; position:absolute; right:10px;} +*:first-child+html #category_info { width:550px; } diff --git a/modules/board/tpl/filter/delete_category.xml b/modules/board/tpl/filter/delete_category.xml new file mode 100644 index 000000000..81863350c --- /dev/null +++ b/modules/board/tpl/filter/delete_category.xml @@ -0,0 +1,11 @@ + +
    + + + + + + + + +
    diff --git a/modules/board/tpl/filter/insert_category.xml b/modules/board/tpl/filter/insert_category.xml index 9aed519d1..1dae396c9 100644 --- a/modules/board/tpl/filter/insert_category.xml +++ b/modules/board/tpl/filter/insert_category.xml @@ -1,12 +1,23 @@
    + - + + + + + + + + + - + + +
    diff --git a/modules/board/tpl/filter/move_category.xml b/modules/board/tpl/filter/move_category.xml new file mode 100644 index 000000000..e229cc64e --- /dev/null +++ b/modules/board/tpl/filter/move_category.xml @@ -0,0 +1,10 @@ + +
    + + + + + + + + diff --git a/modules/board/tpl/header.html b/modules/board/tpl/header.html index 530ca7d9e..cb781a1d5 100644 --- a/modules/board/tpl/header.html +++ b/modules/board/tpl/header.html @@ -18,7 +18,7 @@
  • class="on">{$lang->cmd_view_info}
  • class="on">{$lang->cmd_addition_setup}
  • -
  • class="on">{$lang->cmd_manage_category}
  • +
  • class="on">{$lang->cmd_manage_category}
  • class="on">{$lang->cmd_manage_grant}
  • class="on">{$lang->cmd_manage_skin}
  • diff --git a/modules/board/tpl/js/board_admin.js b/modules/board/tpl/js/board_admin.js index 03eb161d2..5a379af6a 100644 --- a/modules/board/tpl/js/board_admin.js +++ b/modules/board/tpl/js/board_admin.js @@ -51,7 +51,9 @@ function completeUpdateCategory(ret_obj) { var page = ret_obj['page']; alert(message); - location.href = current_url.setQuery('category_srl',''); + var url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispBoardAdminCategoryInfo'); + if(page) url.setQuery('page',page); + location.href = url; } /* 권한 관련 */ @@ -115,3 +117,155 @@ function doCartSetup(act_type) { var url = current_url.setQuery('act',act_type).setQuery('module_srl','').setQuery('module_srls',module_srl.join(',')); location.href = url; } + +/** + * 카테고리 관리 + **/ + +/* 빈 카테고리 아이템 추가 */ +function doInsertCategory(parent_srl) { + if(typeof(parent_srl)=='undefined') parent_srl = 0; + var params = {node_srl:0, parent_srl:parent_srl} + doGetCategoryInfo(null, params); + deSelectNode(); +} + +/* 카테고리 클릭시 적용할 함수 */ +function doGetCategoryInfo(category_id, obj) { + // category, category_id, node_srl을 추출 + var fo_obj = xGetElementById("fo_category"); + var module_srl = fo_obj.module_srl.value; + var node_srl = 0; + var parent_srl = 0; + + if(typeof(obj)!="undefined") { + if(typeof(obj.getAttribute)!="undefined") { + node_srl = obj.getAttribute("node_srl"); + } else { + node_srl = obj.node_srl; + parent_srl = obj.parent_srl; + } + } + + var params = new Array(); + params["category_srl"] = node_srl; + params["parent_srl"] = parent_srl; + params["module_srl"] = module_srl; + + // 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다. + var response_tags = new Array('error','message','tpl'); + exec_xml('board', 'getBoardAdminCategoryTplInfo', params, completeGetCategoryTplInfo, response_tags, params); +} + +/* 서버로부터 받아온 카테고리 정보를 출력 */ +xAddEventListener(document,'mousedown',checkMousePosition); +var _xPos = 0; +var _yPos = 0; +function checkMousePosition(e) { + var evt = new xEvent(e); + _xPos = evt.pageX; + _yPos = evt.pageY; +} + +function hideCategoryInfo() { + var obj = xGetElementById('category_info'); + obj.style.display = "none"; +} + +function completeGetCategoryTplInfo(ret_obj, response_tags) { + var obj = xGetElementById('category_info'); + if(xScrollTop()>200) { + obj.style.marginTop = ( xScrollTop() - 210 )+'px'; + } else { + obj.style.marginTop = '0px'; + } + + var tpl = ret_obj['tpl']; + xInnerHtml(obj, tpl); + obj.style.display = 'block'; + + var fo_obj = xGetElementById("fo_category"); + fo_obj.category_title.focus(); +} + +/* 카테고리 아이템 입력후 */ +function completeInsertCategory(ret_obj) { + var xml_file = ret_obj['xml_file']; + var category_srl = ret_obj['category_srl']; + var module_srl = ret_obj['module_srl']; + var parent_srl = ret_obj['parent_srl']; + + if(!xml_file) return; + + loadTreeMenu(xml_file, 'category', 'zone_category', category_title, '',doGetCategoryInfo, category_srl, doMoveTree); + + if(!category_srl) { + xInnerHtml("category_info", ""); + } else { + var params = {node_srl:category_srl, parent_srl:parent_srl} + doGetCategoryInfo(null, params) + } + + if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter(); +} + + +/* 카테고리를 드래그하여 이동한 후 실행할 함수 , 이동하는 category_srl과 대상 category_srl을 받음 */ +function doMoveTree(category_id, source_category_srl, target_category_srl) { + source_category_srl = source_category_srl.replace(/menu_category_/,''); + target_category_srl = target_category_srl.replace(/menu_category_/,''); + var p_fo_obj = xGetElementById("fo_category"); + + var fo_obj = xGetElementById("fo_move_category"); + fo_obj.source_category_srl.value = source_category_srl; + fo_obj.target_category_srl.value = target_category_srl; + fo_obj.module_srl.value = p_fo_obj.module_srl.value; + + // 이동 취소를 선택하였을 경우 다시 그림;; + if(!procFilter(fo_obj, move_category)) { + var params = new Array(); + params["xml_file"] = xGetElementById('fo_category').xml_file.value; + params["source_category_srl"] = source_category_srl; + completeMoveCategory(params); + } +} + +function completeMoveCategory(ret_obj) { + var source_category_srl = ret_obj['source_category_srl']; + var xml_file = ret_obj['xml_file']; + + loadTreeMenu(xml_file, 'category', "zone_category", category_title, '', doGetCategoryInfo, source_category_srl, doMoveTree); +} + +/* 카테고리 목록 갱신 */ +function doReloadTreeCategory(module_srl) { + var params = new Array(); + params["module_srl"] = module_srl; + + // 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다. + var response_tags = new Array('error','message', 'xml_file'); + exec_xml('board', 'procBoardAdminMakeXmlFile', params, completeInsertCategory, response_tags, params); +} + +/* 카테고리 삭제 */ +function doDeleteCategory(category_srl) { + var fo_obj = xGetElementById("fo_category"); + if(!fo_obj) return; + + procFilter(fo_obj, delete_category); +} + +/* 카테고리 아이템 삭제 후 */ +function completeDeleteCategory(ret_obj) { + var module_srl = ret_obj['module_srl']; + var category_srl = ret_obj['category_srl']; + var xml_file = ret_obj['xml_file']; + alert(ret_obj['message']); + + loadTreeMenu(xml_file, 'category', 'zone_category', category_title, '', doGetCategoryInfo, category_srl, doMoveTree); + + var obj = xGetElementById('category_info'); + xInnerHtml(obj, ""); + obj.style.display = 'none'; +} + diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 83b032f7d..b0dd4ad5c 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -522,14 +522,36 @@ * @brief 카테고리 추가 **/ function insertCategory($obj) { - $obj->list_order = $obj->category_srl = getNextSequence(); + // 특정 카테고리의 하단으로 추가시 정렬순서 재정렬 + if($obj->parent_srl) { + // 부모 카테고리 구함 + $oDocumentModel = &getModel('document'); + $parent_category = $oDocumentModel->getCategory($obj->parent_srl); + $obj->list_order = $parent_category->list_order; + $this->updateCategoryListOrder($parent_category->module_srl, $parent_category->list_order+1); + if(!$obj->category_srl) $obj->category_srl = getNextSequence(); + } else { + $obj->list_order = $obj->category_srl = getNextSequence(); + } $output = executeQuery('document.insertCategory', $obj); - if($output->toBool()) $output->add('category_srl', $obj->category_srl); + if($output->toBool()) { + $output->add('category_srl', $obj->category_srl); + $this->makeCategoryFile($obj->module_srl); + } return $output; } + /** + * @brief 특정 카테고리 부터 list_count 증가 + **/ + function updateCategoryListOrder($module_srl, $list_order) { + $args->module_srl = $module_srl; + $args->list_order = $list_order; + return executeQuery('document.updateCategoryOrder', $args); + } + /** * @brief 카테고리에 문서의 숫자를 변경 **/ @@ -550,7 +572,9 @@ * @brief 카테고리의 정보를 수정 **/ function updateCategory($obj) { - return executeQuery('document.updateCategory', $obj); + $output = executeQuery('document.updateCategory', $obj); + if($output->toBool()) $this->makeCategoryFile($obj->module_srl); + return $output; } /** @@ -559,17 +583,27 @@ **/ function deleteCategory($category_srl) { $args->category_srl = $category_srl; + $oDocumentModel = &getModel('document'); + $category_info = $oDocumentModel->getCategory($category_srl); + + // 자식 카테고리가 있는지 체크하여 있으면 삭제 못한다는 에러 출력 + $output = executeQuery('document.getChildCategoryCount', $args); + if(!$output->toBool()) return $output; + if($output->data->count>0) return new Object(-1, 'msg_cannot_delete_for_child'); // 카테고리 정보를 삭제 $output = executeQuery('document.deleteCategory', $args); if(!$output->toBool()) return $output; + $this->makeCategoryFile($category_info->module_srl); + // 현 카테고리 값을 가지는 문서들의 category_srl을 0 으로 세팅 unset($args); $args->target_category_srl = 0; $args->source_category_srl = $category_srl; $output = executeQuery('document.updateDocumentCategory', $args); + return $output; } diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 1359b698c..bbc6db93a 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -387,7 +387,7 @@ if($node->group_srls) { $group_srls = explode(',',$node->group_srls); unset($node->group_srls); - $node->group_srls = explode(',',$node->group_srls); + $node->group_srls = $group_srls; } else { unset($node->group_srls); $node->group_srls = array(); diff --git a/modules/document/queries/getChildCategory.xml b/modules/document/queries/getChildCategory.xml new file mode 100644 index 000000000..d60cf92a4 --- /dev/null +++ b/modules/document/queries/getChildCategory.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/modules/document/queries/updateCategoryOrder.xml b/modules/document/queries/updateCategoryOrder.xml new file mode 100644 index 000000000..f9f05e50f --- /dev/null +++ b/modules/document/queries/updateCategoryOrder.xml @@ -0,0 +1,12 @@ + + +
    + + + + + + + + + diff --git a/modules/menu/queries/getChildMenuCount.xml b/modules/menu/queries/getChildMenuCount.xml index d60cf92a4..99c941aba 100644 --- a/modules/menu/queries/getChildMenuCount.xml +++ b/modules/menu/queries/getChildMenuCount.xml @@ -1,11 +1,11 @@ - + -
    +
    - + From aa8687b27384076d72f3b7b15ef11fadda46fad8 Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 18 Jan 2008 16:12:00 +0000 Subject: [PATCH 105/278] =?UTF-8?q?lifepod=EC=97=90=EC=84=9C=20=EC=A0=9C?= =?UTF-8?q?=EB=AA=A9=EC=9D=B4=EB=82=98=20=EC=84=A4=EB=AA=85=EC=97=90=20?= =?UTF-8?q?=EC=9E=91=EC=9D=80=20=EB=94=B0=EC=98=B4=ED=91=9C=EA=B0=80=20?= =?UTF-8?q?=EC=9E=88=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3546 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/lifepod.view.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/lifepod/lifepod.view.php b/modules/lifepod/lifepod.view.php index 8c61da5da..bd5261e23 100644 --- a/modules/lifepod/lifepod.view.php +++ b/modules/lifepod/lifepod.view.php @@ -71,6 +71,8 @@ } $data->childNodes["description"]->body = str_replace("\n", "
    ", $data->childNodes["description"]->body); + $data->childNodes["description"]->body = str_replace("'", "\'", $data->childNodes["description"]->body); + $data->childNodes["title"]->body = str_replace("'", "\'", $data->childNodes["title"]->body); } $calendars[] = $page; } From f2e41c3409797c5466d0e54187e67cc1206c0482 Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 18 Jan 2008 16:12:42 +0000 Subject: [PATCH 106/278] author homepage address git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3547 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lifepod/conf/info.xml b/modules/lifepod/conf/info.xml index 7a22abf9b..dbbc51b75 100644 --- a/modules/lifepod/conf/info.xml +++ b/modules/lifepod/conf/info.xml @@ -4,7 +4,7 @@ Lifepod Lifepod連動 Лайфпод - + haneul haneul haneul From e539a5e8a288fcbc4507feabda6dd038abfb6504 Mon Sep 17 00:00:00 2001 From: supershop Date: Mon, 21 Jan 2008 01:19:29 +0000 Subject: [PATCH 107/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3548 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index b60dc8e56..2386837f9 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -124,7 +124,7 @@ $lang->document_count = 'Total Articles'; $lang->page_count = 'Page Count'; $lang->list_count = 'List Count'; - $lang->search_list_count = '검색 목록 수'; + $lang->search_list_count = 'Search List Count'; $lang->readed_count = 'Views'; $lang->voted_count = 'Votes'; $lang->member_count = 'Member Count'; From 3a12a24a1fb2a4399be1ac6fc5fbd2cfda1d496e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 08:11:13 +0000 Subject: [PATCH 108/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=EC=9D=98=20?= =?UTF-8?q?=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=EB=A5=BC=20=EB=8B=A4?= =?UTF-8?q?=EC=A4=91=20depth=EB=A5=BC=20=EC=A7=80=EC=9B=90=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=ED=95=98=EA=B3=A0=20=EA=B2=8C=EC=8B=9C=ED=8C=90=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=97=90=EC=84=9C=20=EC=9D=B4=20=EB=8B=A4?= =?UTF-8?q?=EC=A4=91=20depth=EB=A5=BC=20=EC=A0=81=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=B3=B8=20=EC=8A=A4=ED=82=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95.=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EB=B6=84?= =?UTF-8?q?=EB=A5=98=20=EC=9C=84=EC=A0=AF=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3549 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 5 +- modules/board/board.view.php | 7 +- .../board/skins/cozy_board/style.gallery.html | 2 +- .../board/skins/cozy_board/style.list.html | 8 +- .../board/skins/cozy_board/style.webzine.html | 10 ++- .../board/skins/cozy_board/write_form.html | 4 +- modules/board/skins/xe_board/css/common.css | 12 +-- modules/board/skins/xe_board/style.forum.html | 2 +- .../board/skins/xe_board/style.gallery.html | 2 +- modules/board/skins/xe_board/style.list.html | 2 +- .../board/skins/xe_board/style.webzine.html | 2 +- .../board/skins/xe_board/view_document.html | 2 + modules/board/skins/xe_board/write_form.html | 8 +- modules/document/document.controller.php | 41 +++++++-- modules/document/document.item.php | 5 +- modules/document/document.model.php | 83 +++++++++++++++--- modules/document/tpl/js/document_admin.js | 7 ++ .../editor/skins/msword2007/css/editor.css | 24 ++--- modules/editor/skins/msword2007/editor.html | 36 ++++---- modules/editor/skins/xquared/css/default.css | 26 +++--- modules/editor/skins/xquared/editor.html | 36 ++++---- modules/module/module.model.php | 9 +- widgets/category/category.class.php | 56 ++++++++++++ widgets/category/conf/info.xml | 15 ++++ widgets/category/skins/default/category.html | 58 ++++++++++++ .../category/skins/default/css/category.css | 80 +++++++++++++++++ .../category/skins/default/images/join.gif | Bin 0 -> 69 bytes .../skins/default/images/joinbottom.gif | Bin 0 -> 66 bytes .../category/skins/default/images/line.gif | Bin 0 -> 66 bytes .../category/skins/default/images/minus.gif | Bin 0 -> 86 bytes .../skins/default/images/minusbottom.gif | Bin 0 -> 85 bytes .../category/skins/default/images/page.gif | Bin 0 -> 301 bytes .../category/skins/default/images/plus.gif | Bin 0 -> 89 bytes .../skins/default/images/plusbottom.gif | Bin 0 -> 88 bytes .../category/skins/default/images/plustop.gif | Bin 0 -> 481 bytes widgets/category/skins/default/images/top.gif | Bin 0 -> 88 bytes widgets/category/skins/default/js/category.js | 32 +++++++ widgets/category/skins/default/skin.xml | 13 +++ 38 files changed, 475 insertions(+), 112 deletions(-) create mode 100644 widgets/category/category.class.php create mode 100644 widgets/category/conf/info.xml create mode 100644 widgets/category/skins/default/category.html create mode 100644 widgets/category/skins/default/css/category.css create mode 100644 widgets/category/skins/default/images/join.gif create mode 100644 widgets/category/skins/default/images/joinbottom.gif create mode 100644 widgets/category/skins/default/images/line.gif create mode 100644 widgets/category/skins/default/images/minus.gif create mode 100644 widgets/category/skins/default/images/minusbottom.gif create mode 100644 widgets/category/skins/default/images/page.gif create mode 100644 widgets/category/skins/default/images/plus.gif create mode 100644 widgets/category/skins/default/images/plusbottom.gif create mode 100644 widgets/category/skins/default/images/plustop.gif create mode 100644 widgets/category/skins/default/images/top.gif create mode 100644 widgets/category/skins/default/js/category.js create mode 100644 widgets/category/skins/default/skin.xml diff --git a/common/js/common.js b/common/js/common.js index 9ff690d7d..8869a064f 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -168,9 +168,10 @@ function move_url(url, open_wnidow) { **/ function toggleDisplay(obj, opt) { obj = xGetElementById(obj); + if(!obj) return; if(typeof(opt)=="undefined") opt = "inline"; - if(obj.style.display == "none") obj.style.display = opt; - else obj.style.display = "none"; + if(!obj.style.display || obj.style.display == "block") obj.style.display = 'none'; + else obj.style.display = opt; } /** diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 126695007..c0ed6c016 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -236,12 +236,7 @@ if($category->group_srls) { $category_group_srls = explode(',',$category->group_srls); $is_granted = false; - for($i=0;$i<$group_srls_count;$i++) { - if(in_array($group_srls[$i],$category_group_srls)) { - $is_granted = true; - break; - } - } + if(count(array_intersect($group_srls, $category_group_srls))) $is_granted = true; } if($is_granted) $category_list[$category_srl] = $category; diff --git a/modules/board/skins/cozy_board/style.gallery.html b/modules/board/skins/cozy_board/style.gallery.html index 52c464722..2960170dd 100644 --- a/modules/board/skins/cozy_board/style.gallery.html +++ b/modules/board/skins/cozy_board/style.gallery.html @@ -11,7 +11,7 @@ diff --git a/modules/board/skins/cozy_board/style.list.html b/modules/board/skins/cozy_board/style.list.html index 14c42069b..3a7b99499 100644 --- a/modules/board/skins/cozy_board/style.list.html +++ b/modules/board/skins/cozy_board/style.list.html @@ -19,12 +19,14 @@
    - + + diff --git a/modules/board/skins/cozy_board/style.webzine.html b/modules/board/skins/cozy_board/style.webzine.html index 9e8d637ff..812931675 100644 --- a/modules/board/skins/cozy_board/style.webzine.html +++ b/modules/board/skins/cozy_board/style.webzine.html @@ -19,12 +19,14 @@ - + + diff --git a/modules/board/skins/cozy_board/write_form.html b/modules/board/skins/cozy_board/write_form.html index bd52b7986..17b06ba32 100644 --- a/modules/board/skins/cozy_board/write_form.html +++ b/modules/board/skins/cozy_board/write_form.html @@ -31,7 +31,9 @@ diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index e08cb837e..85e9546c0 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -257,20 +257,22 @@ Jeong, Chan Myeong 070601~070630 .boardWrite .userNameAndPw .emailAddress {width:80px; margin-right:10px; } .boardWrite .userNameAndPw .homePage {width:80px; margin-right:10px; } -.boardWrite .title { margin-left:10px; margin-top:5px; } +.boardWrite .title { margin-top:5px; } +.boardWrite .title .category { margin-left:10px; } +.boardWrite .title label.title { margin:0 10px 0 10px; } .boardWrite .title input.title { width:60%;} -.boardWrite dl.option { margin:3px 0 3px 10px; padding:0;} -.boardWrite dl.option dd { display:inline; margin-right:11px; } +.boardWrite dl.option { margin:10px 0 3px 10px; padding:0;} +.boardWrite dl.option dd { display:inline; margin-right:5px; } .boardWrite dl.option dd * { vertical-align:middle;} .boardWrite dl.option dd select { width:8em; font-size:.95em; } .boardWrite .editor { border-top:1px solid #e0e1db; margin-top:10px;} -.boardWrite .tag { margin-left:10px; } +.boardWrite .tag { margin-top:10px; margin-left:10px; } .boardWrite .tag .inputTypeText { width:90%; background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 5px 5px; padding-left:30px;} .boardWrite .tag .help { vertical-align:middle;} -.boardWrite .tag .info { font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;} +.boardWrite .tag .info { font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center; margin-top:5px;} .boardWrite .extraVarsList { width:100%; border-top:1px solid #e0e1db; border-bottom:none; margin:10px 0 10px 0; table-layout:fixed;} .boardWrite .extraVarsList th { font-weight:normal; color:#555555; text-align:left; padding:4px 0 4px 10px; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;} diff --git a/modules/board/skins/xe_board/style.forum.html b/modules/board/skins/xe_board/style.forum.html index 1d21b5117..36959a100 100644 --- a/modules/board/skins/xe_board/style.forum.html +++ b/modules/board/skins/xe_board/style.forum.html @@ -25,7 +25,7 @@ diff --git a/modules/board/skins/xe_board/style.gallery.html b/modules/board/skins/xe_board/style.gallery.html index 19e8b1d38..aefb14367 100644 --- a/modules/board/skins/xe_board/style.gallery.html +++ b/modules/board/skins/xe_board/style.gallery.html @@ -11,7 +11,7 @@ diff --git a/modules/board/skins/xe_board/style.list.html b/modules/board/skins/xe_board/style.list.html index 861e091cc..d6d1212db 100644 --- a/modules/board/skins/xe_board/style.list.html +++ b/modules/board/skins/xe_board/style.list.html @@ -27,7 +27,7 @@ diff --git a/modules/board/skins/xe_board/style.webzine.html b/modules/board/skins/xe_board/style.webzine.html index cb61c88b1..9d7598eef 100644 --- a/modules/board/skins/xe_board/style.webzine.html +++ b/modules/board/skins/xe_board/style.webzine.html @@ -26,7 +26,7 @@ diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 1beba1b4b..f8f08eaab 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -8,6 +8,7 @@

    {$oDocument->getTitle()}

    +
    @@ -21,6 +22,7 @@
    {$oDocument->getNickName()}
    +
    diff --git a/modules/board/skins/xe_board/write_form.html b/modules/board/skins/xe_board/write_form.html index 0170ab380..c31a46744 100644 --- a/modules/board/skins/xe_board/write_form.html +++ b/modules/board/skins/xe_board/write_form.html @@ -25,12 +25,16 @@
    - - + + +
    diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index b0dd4ad5c..ced16b193 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -730,7 +730,7 @@ **/ function makeCategoryFile($module_srl) { // 캐시 파일 생성시 필요한 정보가 없으면 그냥 return - if(!$module_srl) return; + if(!$module_srl) return false; // 모듈 정보를 가져옴 (mid를 구하기 위해) $oModuleModel = &getModel('module'); @@ -743,9 +743,22 @@ $xml_file = sprintf("./files/cache/document_category/%s.xml.php", $module_srl); $php_file = sprintf("./files/cache/document_category/%s.php", $module_srl); - // DB에서 module_srl 에 해당하는 카테고리 목록을 listorder순으로 구해옴 - $oDocumentModel = &getModel('document'); - $list = $oDocumentModel->getCategoryList($module_srl); + // 카테고리 목록을 구함 + $args->module_srl = $module_srl; + $args->sort_index = 'list_order'; + $output = executeQuery('document.getCategoryList', $args); + + $category_list = $output->data; + + if(!$category_list) return false; + if(!is_array($category_list)) $category_list = array($category_list); + + $category_count = count($category_list); + for($i=0;$i<$category_count;$i++) { + $category_srl = $category_list[$i]->category_srl; + if(!preg_match('/^[0-9,]+$/', $category_list[$i]->group_srls)) $category_list[$i]->group_srls = ''; + $list[$category_srl] = $category_list[$i]; + } // 구해온 데이터가 없다면 노드데이터가 없는 xml 파일만 생성 if(!$list) { @@ -780,7 +793,7 @@ $xml_buff = sprintf('%s', $php_script, $this->getXmlTree($tree[0], $tree)); // php 캐시 파일 생성 - $php_output = $this->getPhpCacheCode($tree[0], $tree); + $php_output = $this->getPhpCacheCode($tree[0], $tree, 0); $php_buff = sprintf('list = array(%s); ?>', $php_output['category_title_str'], $php_output['buff']); // 파일 저장 @@ -807,13 +820,18 @@ $title = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->title); $expand = $node->expand; $group_srls = $node->group_srls; + $mid = $node->mid; + $module_srl = $node->module_srl; // node->group_srls값이 있으면 if($group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( - 'node_srl="%s" text="" url="%s" expand="%s" document_count="%d" ', + 'mid="%s" module_srl="%d" node_srl="%d" category_srl = "%d" text="" url="%s" expand="%s" document_count="%d" ', + $mid, + $module_srl, + $category_srl, $category_srl, $group_check_code, $title, @@ -838,7 +856,9 @@ $output = array("buff"=>"", "category_srl_list"=>array()); if(!$source_node) return $output; + // 루프를 돌면서 1차 배열로 정리하고 include할 수 있는 php script 코드를 생성 foreach($source_node as $category_srl => $node) { + // 자식 노드가 있으면 자식 노드의 데이터를 먼저 얻어옴 if($category_srl&&$tree[$category_srl]) $child_output = $this->getPhpCacheCode($tree[$category_srl], $tree); else $child_output = array("buff"=>"", "category_srl_list"=>array()); @@ -861,15 +881,18 @@ // 속성을 생성한다 ( category_srl_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) $attribute = sprintf( - '"node_srl"=>"%s","category_srl"=>"%s","parent_srl"=>"%s","text"=>%s?$_category_title[%d]:"","selected"=>(in_array(Context::get("category"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s)', + '"mid" => "%s", "module_srl" => "%d","node_srl"=>"%s","category_srl"=>"%s","parent_srl"=>"%s","text"=>$_category_title[%d],"selected"=>(in_array(Context::get("category"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s),"document_count"=>"%d","grant"=>%s?true:false', + $node->mid, + $node->module_srl, $node->category_srl, $node->category_srl, $node->parent_srl, - $group_check_code, $node->category_srl, $selected, $expand, - $child_buff + $child_buff, + $node->document_count, + $group_check_code ); // buff 데이터를 생성한다 diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 42c9d5703..4d6649d47 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -565,8 +565,11 @@ * @brief 에디터 html을 구해서 return **/ function getEditor() { + $module_srl = $this->get('module_srl'); + if(!$module_srl) $module_srl = Context::get('module_srl'); + $oEditorModel = &getModel('editor'); - return $oEditorModel->getModuleEditor('document', $this->get('module_srl'), $this->document_srl, 'document_srl', 'content'); + return $oEditorModel->getModuleEditor('document', $module_srl, $this->document_srl, 'document_srl', 'content'); } /** diff --git a/modules/document/document.model.php b/modules/document/document.model.php index bbc6db93a..231d5ca4b 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -406,23 +406,86 @@ /** * @brief 특정 모듈의 카테고리 목록을 가져옴 + * 속도나 여러가지 상황을 고려해서 카테고리 목록은 php로 생성된 script를 include하여 사용하는 것을 원칙으로 함 **/ function getCategoryList($module_srl) { + // 한 페이지에서 여러번 호출될 경우를 대비해서 static var로 보관 (php4때문에 다른 방법으로 구현) + if(isset($this->category_list[$module_srl])) return $this->category_list[$module_srl]; + + // php 캐싱된 파일의 유무를 체크하여 처리 $args->module_srl = $module_srl; $args->sort_index = 'list_order'; $output = executeQuery('document.getCategoryList', $args); - $category_list = $output->data; + // 대상 모듈의 카테고리 파일을 불러옴 + $filename = sprintf("./files/cache/document_category/%s.php", $module_srl); - if(!$category_list) return NULL; - if(!is_array($category_list)) $category_list = array($category_list); - - $category_count = count($category_list); - for($i=0;$i<$category_count;$i++) { - $category_srl = $category_list[$i]->category_srl; - $list[$category_srl] = $category_list[$i]; + // 대상 파일이 없으면 카테고리 캐시 파일을 재생성 + if(!file_exists($filename)) { + $oDocumentController = &getController('document'); + if(!$oDocumentController->makeCategoryFile($module_srl)) return array(); } - return $list; + + @include($filename); + + // 카테고리의 정리 + $document_category = array(); + $this->_arrangeCategory($document_category, $menu->list, 0); + + return $document_category; + } + + /** + * @brief 카테고리를 1차 배열 형식으로 변경하는 내부 method + **/ + function _arrangeCategory(&$document_category, $list, $depth) { + $idx = 0; + $list_order = array(); + foreach($list as $key => $val) { + $obj = null; + $obj->mid = $val['mid']; + $obj->module_srl = $val['module_srl']; + $obj->category_srl = $val['category_srl']; + $obj->parent_srl = $val['parent_srl']; + $obj->title = $obj->text = $val['text']; + $obj->expand = $val['expand']=='Y'?true:false; + $obj->document_count = $val['document_count']; + $obj->depth = $depth; + $obj->child_count = 0; + $obj->childs = array(); + $obj->grant = $val['grant']; + + if(Context::get('mid') == $obj->mid && Context::get('category') == $obj->category_srl) $selected = true; + else $selected = false; + + $obj->selected = $selected; + + $list_order[$idx++] = $obj->category_srl; + + // 부모 카테고리가 있으면 자식노드들의 데이터를 적용 + if($obj->parent_srl) { + + $parent_srl = $obj->parent_srl; + $document_count = $obj->document_count; + $expand = $obj->expand; + if($selected) $expand = true; + + while($parent_srl) { + $document_category[$parent_srl]->document_count += $document_count; + $document_category[$parent_srl]->childs[] = $obj->category_srl; + $document_category[$parent_srl]->child_count = count($document_category[$parent_srl]->childs); + if($expand) $document_category[$parent_srl]->expand = $expand; + + $parent_srl = $document_category[$parent_srl]->parent_srl; + } + } + + $document_category[$key] = $obj; + + if(count($val['list'])) $this->_arrangeCategory($document_category, $val['list'], $depth+1); + } + $document_category[$list_order[0]]->first = true; + $document_category[$list_order[count($list_order)-1]]->last = true; } /** @@ -513,7 +576,7 @@ $output = ''; foreach($categories as $category_srl => $category) { - $output .= sprintf("%d,%s\n",$category_srl, $category->title); + $output .= sprintf("%d,%d,%s\n",$category_srl, $category->depth,$category->title); } $this->add('categories', $output); } diff --git a/modules/document/tpl/js/document_admin.js b/modules/document/tpl/js/document_admin.js index 7ceb63770..d341c26d9 100644 --- a/modules/document/tpl/js/document_admin.js +++ b/modules/document/tpl/js/document_admin.js @@ -60,12 +60,19 @@ function completeGetCategoryFromModules(ret_obj, response_tags) { var category_list = categories.split("\n"); for(var i=0;i0) opt.style.paddingLeft = (depth*15)+'px'; obj.options[obj.options.length] = opt; } } diff --git a/modules/editor/skins/msword2007/css/editor.css b/modules/editor/skins/msword2007/css/editor.css index 957307288..882edf11c 100644 --- a/modules/editor/skins/msword2007/css/editor.css +++ b/modules/editor/skins/msword2007/css/editor.css @@ -38,21 +38,21 @@ .xeEditor .editor_info .editor_option { float:left; color:#888888; } .xeEditor .editor_info .editor_autosaved_message { color:#888888; float:right; display:none;} -.xeEditor .inputTypeTextArea { background:#fbfbfb; padding:1em; width:94%;} -.xeEditor #textAreaDrag {} -.xeEditor .fileAttach { padding:0 1em .5em 1em;} -.xeEditor .fileAttach .preview { padding:5px; width:110px; height:110px; border:1px solid #e1e1dd; background:#fbfbfb; float:left; margin-right:.5em;} -.xeEditor .fileAttach .preview img { width:110px; height:110px; float:left; display:block;} -.xeEditor .fileAttach .fileListArea { float:left; width:50%; margin-right:.7em; padding-bottom:.5em; margin-bottom:1em} -.xeEditor .fileAttach .fileListArea .fileList { background:url(../images/select_dot.gif); overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:.3em; font-size:11px;} + +.xeEditor .fileAttach { border:none; table-layout:fixed; margin:10px 10px 0 10px; } + +.xeEditor .fileAttach .preview { padding:5px; border:1px solid #e1e1dd; width:100px; height:100px; margin-right:10px;} +.xeEditor .fileAttach .preview img { width:100px; height:100px; } + +.xeEditor .fileAttach .fileListArea .fileList { background:url(../images/select_dot.gif); overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} .xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} -.xeEditor .fileAttach .fileListArea span.file_attach_info { color:#3f4040; font-size:11px; text-align:left;} -.xeEditor .fileAttach .fileListArea span.file_attach_info strong { color:#ff6600; font-size:11px; font-weight:bold; } -.xeEditor .fileAttach .fileUploadControl { margin-bottom:5px; } +.xeEditor .fileAttach .fileUploadControl { float:left; } +.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;} +*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:7pt; } .xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;} .xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;} .xeEditor .fileAttach .fileUploadControl .uploaderButton img { vertical-align:middle;} -.xeEditor .fileAttach .fileUploadControl .uploaderButton .leftCap { width:2px; height:22px; background:url(../images/buttonTypeBLeft.gif) no-repeat; margin:0 .3em 0 0; position:relative; left:-1px;} -.xeEditor .fileAttach .fileUploadControl .uploaderButton .rightCap { width:2px; height:22px; background:url(../images/buttonTypeBRight.gif) no-repeat; margin:0 -1px 0 .4em;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton .leftCap { width:2px; height:21px; background:url(../images/buttonTypeBLeft.gif) no-repeat; margin:0 .3em 0 0; position:relative; left:-1px;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton .rightCap { width:2px; height:21px; background:url(../images/buttonTypeBRight.gif) no-repeat; margin:0 -1px 0 .4em;} .xeEditor .fileAttach .fileUploadControl .uploaderButton .icon { margin:0 .2em;} diff --git a/modules/editor/skins/msword2007/editor.html b/modules/editor/skins/msword2007/editor.html index e4bc2105e..233d3443c 100644 --- a/modules/editor/skins/msword2007/editor.html +++ b/modules/editor/skins/msword2007/editor.html @@ -152,22 +152,24 @@ editor_upload_init("{$editor_sequence}"); //]]> - +
      + {$lang->title} {$lang->nick_name}  + {$lang->title} {$lang->nick_name}
    + + + + + + +
    preview
    + +
    + +
    + +
    {$upload_status}
    +
    diff --git a/modules/editor/skins/xquared/css/default.css b/modules/editor/skins/xquared/css/default.css index ad38de910..ce6f21227 100644 --- a/modules/editor/skins/xquared/css/default.css +++ b/modules/editor/skins/xquared/css/default.css @@ -1,26 +1,28 @@ @charset "utf-8"; +.xeEditor { padding:0 10px 0 10px; } .xeEditor .editor_info .editor_autosaved_message { display:none; color:#888888; text-align:right; } .xeEditor .optionDE { width:100%; clear:both; overflow:hidden; background:#f8f8f8; height:29px;} -.xeEditor .optionDE .buttonGroup { white-space:nowrap; position:relative; display:block; float:left; height:21px; overflow:hidden; padding-left:2px;} +.xeEditor .optionDE .buttonGroup { white-space:nowrap; display:block; float:left; height:21px; overflow:hidden; padding-left:2px;} .xeEditor .optionDE img { float:left; display:block; margin-right:.5em; cursor:pointer;} -.xeEditor .optionD { padding:.5em 0 .5em .8em; overflow:hidden; float:left; border-right:1px solid #e0e0e0;} -.xeEditor .optionE { padding:4px 0 0 8px; overflow:hidden; border-left:1px solid #ffffff; float:left;} +.xeEditor .optionD { overflow:hidden; float:left; border-right:1px solid #e0e0e0;} +.xeEditor .optionE { overflow:hidden; border-left:1px solid #ffffff; float:left;} .xeEditor .textAreaDragIndicator { text-align:center; background:url(../images/lineTextAreaDrag.gif) repeat-x left center; padding:5px 0 5px 0; } .xeEditor .textAreaDragIndicatorBar { background:url(../images/buttonTextAreaDrag.gif) no-repeat center; cursor:move;height:14px;} -.xeEditor .fileAttach { position:relative; top:20px; padding:0 1em .5em 1em;} -.xeEditor .fileAttach .preview { padding:5px; width:110px; height:110px; border:1px solid #e1e1dd; background:#fbfbfb; float:left; margin-right:.5em;} -.xeEditor .fileAttach .preview img { width:110px; height:110px; float:left; display:block;} -.xeEditor .fileAttach .fileListArea { float:left; width:50%; margin-right:.7em; padding-bottom:.5em; margin-bottom:1em} -.xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:.3em; font-size:11px;} +.xeEditor .fileAttach { border:none; table-layout:fixed; margin-top:10px; } + +.xeEditor .fileAttach .preview { padding:5px; border:1px solid #e1e1dd; width:100px; height:100px; margin-right:10px;} +.xeEditor .fileAttach .preview img { width:100px; height:100px; } + +.xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} .xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} -.xeEditor .fileAttach .fileListArea span.file_attach_info { color:#3f4040; font-size:11px; text-align:left;} -.xeEditor .fileAttach .fileListArea span.file_attach_info strong { color:#ff6600; font-size:11px; font-weight:bold; } -.xeEditor .fileAttach .fileUploadControl { margin-bottom:5px; } +.xeEditor .fileAttach .fileUploadControl { float:left; } +.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;} +*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:7pt; } .xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;} .xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;} .xeEditor .fileAttach .fileUploadControl .uploaderButton img { vertical-align:middle;} -.xeEditor .fileAttach .fileUploadControl .uploaderButton .leftCap { width:2px; height:21px; background:url(../images/buttonTypeBLeft.gif) no-repeat; margin:0 .3em 0 0; position:relative; left:-1px;} +.xeEditor .fileAttach .fileUploadControl .uploaderButton .leftCap { width:2px; height:21px; background:url(../images/buttonTypeBLeft.gif) no-repeat; margin:0 .3em 0 0; left:-1px;} .xeEditor .fileAttach .fileUploadControl .uploaderButton .rightCap { width:2px; height:21px; background:url(../images/buttonTypeBRight.gif) no-repeat; margin:0 -1px 0 .4em;} .xeEditor .fileAttach .fileUploadControl .uploaderButton .icon { margin:0 .2em;} diff --git a/modules/editor/skins/xquared/editor.html b/modules/editor/skins/xquared/editor.html index 7629ae000..af43d14ee 100644 --- a/modules/editor/skins/xquared/editor.html +++ b/modules/editor/skins/xquared/editor.html @@ -50,7 +50,7 @@ -
    +
    @@ -69,21 +69,25 @@ //]]> - + + + + + + + +
    preview
    + +
    + +
    + +
    {$upload_status}
    +
    diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 45fde4e0a..99441e54c 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -619,19 +619,14 @@ function isModuleAdmin($module_info, $member_info) { $user_id = $member_info->user_id; $group_list = $member_info->group_list; + if(!$group_list || !is_array($group_list) || !count($group_list)) return false; // 직접 관리자로 선택하였을 경우 확인 if(is_array($module_info->admin_id) && in_array($user_id, $module_info->admin_id)) return true; // 관리자 그룹으로 등록되어 있을 경우 확인 $manager_group = $module_info->grants['manager']; - if(count($group_list) && count($manager_group)) { - foreach($group_list as $group_srl => $group_info) { - if(in_array($group_srl, $manager_group)) return true; - } - } - - return false; + return count(array_intersect(array_keys($group_list), $manager_group)); } } diff --git a/widgets/category/category.class.php b/widgets/category/category.class.php new file mode 100644 index 000000000..41790ac7e --- /dev/null +++ b/widgets/category/category.class.php @@ -0,0 +1,56 @@ +mid_list, ','); + if($pos === false) $mid = $args->mid_list; + else $mid = substr($args->mid_list, 0, $pos); + if(!$mid) return; + + // 대상 mid의 module_srl 을 구함 + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByMid($mid); + + $module_srl = $module_info->module_srl; + + // 대상 모듈의 카테고리 파일을 불러옴 + $oDocumentModel = &getModel('document'); + $category_list = $oDocumentModel->getCategoryList($module_srl); + + // 모듈의 정보를 구함 + $widget_info->module_info = $module_info; + + $widget_info->mid = $mid; + $widget_info->document_category = $document_category; + $widget_info->module_info = $module_info; + $widget_info->category_list = $category_list; + + // 전체 개수를 구함 + $total_count = $oDocumentModel->getDocumentCount($module_srl); + $widget_info->total_document_count = $total_count; + + Context::set('widget_info', $widget_info); + + // 템플릿 컴파일 + $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); + $tpl_file = 'category'; + + $oTemplate = &TemplateHandler::getInstance(); + return $oTemplate->compile($tpl_path, $tpl_file); + } + } +?> diff --git a/widgets/category/conf/info.xml b/widgets/category/conf/info.xml new file mode 100644 index 000000000..b1aa90f58 --- /dev/null +++ b/widgets/category/conf/info.xml @@ -0,0 +1,15 @@ + + + 게시글 분류 출력기 + + 제로 + 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. + + + + 대상 모듈 + mid_list + 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. + + + diff --git a/widgets/category/skins/default/category.html b/widgets/category/skins/default/category.html new file mode 100644 index 000000000..61890d0ac --- /dev/null +++ b/widgets/category/skins/default/category.html @@ -0,0 +1,58 @@ + + + +
    + +
    {$widget_info->module_info->browser_title} [{$widget_info->total_document_count}]
    + + {@ $prev_depth = 0} + {@ $prev_last = false} + {@ $prev_srl = 0} + {@ $prev_expand = false} + + + + + + {@ $class = "plusBottom" }{@ $class = "minusBottom" } + + {@ $class = "joinBottom" } + + + + {@ $class = "plus" }{@ $class = "minus" } + + {@ $class = "join" } + + + + {@ $class = "plus" }{@ $class = "minus" } + + {@ $class = "join" } + + + + + {@ $prev_depth = $val->depth } +
    style="display:none;"> + +
    + {@ $prev_depth = $val->depth } + + +
    +
    + {$val->text} + [{$val->document_count}] +
    +
    + + {@ $prev_last = $val->last} + {@ $prev_srl = $val->category_srl} + {@ $prev_expand = $val->expand} + + + +
    + + diff --git a/widgets/category/skins/default/css/category.css b/widgets/category/skins/default/css/category.css new file mode 100644 index 000000000..51f756902 --- /dev/null +++ b/widgets/category/skins/default/css/category.css @@ -0,0 +1,80 @@ +@charset "utf-8"; + +.categoryWidget .top { + background:url("../images/top.gif") no-repeat left -1px; + padding-left:14px; + height:18px; +} + +.categoryWidget a { + text-decoration:none; + color:#555555; + padding:0 2px 0 2px; +} + +.categoryWidget a:hover { + text-decoration:underline; +} + +.categoryWidget strong { + font-weight:normal; + color:#DF7901; + font-size:7pt; + font-family:tahoma; +} + +.categoryWidget .selected a { + background-color:#0A246A; + color:#FFFFFF; +} + +.categoryWidget .item { + background:url("../images/page.gif") no-repeat left 2px; + padding-left:13px; + height:18px; +} + + +.categoryWidget .child { + background:url("../images/line.gif") repeat-y left top; + padding-left:16px; +} + +.categoryWidget .childBottom { + background:none; + padding-left:16px; +} + +.categoryWidget .plus { + background:url("../images/plus.gif") no-repeat left top; + padding-left:16px; + cursor:pointer; +} + +.categoryWidget .plusBottom { + background:url("../images/plusbottom.gif") no-repeat left top; + padding-left:16px; + cursor:pointer; +} + +.categoryWidget .minus { + background:url("../images/minus.gif") no-repeat left top; + padding-left:16px; + cursor:pointer; +} + +.categoryWidget .minusBottom { + background:url("../images/minusbottom.gif") no-repeat left top; + padding-left:16px; + cursor:pointer; +} + +.categoryWidget .joinBottom { + background:url("../images/joinbottom.gif") no-repeat left top; + padding-left:16px; +} + +.categoryWidget .join{ + background:url("../images/join.gif") no-repeat left top; + padding-left:16px; +} diff --git a/widgets/category/skins/default/images/join.gif b/widgets/category/skins/default/images/join.gif new file mode 100644 index 0000000000000000000000000000000000000000..34dd47610a5d7c3580dedc342683559bf77abce2 GIT binary patch literal 69 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFv;}DH=KUEdfpt3ORshA Wx&LIzk};W<vKC_i literal 0 HcmV?d00001 diff --git a/widgets/category/skins/default/images/joinbottom.gif b/widgets/category/skins/default/images/joinbottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b81c80a9e25f6f29e2614aaa33bdf4a4d2881b GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Tx&LIzy5lkJS?4l0Mh0sDgH;v` literal 0 HcmV?d00001 diff --git a/widgets/category/skins/default/images/line.gif b/widgets/category/skins/default/images/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a259eea00c330eee85fb18aa64e2e232d5410b1 GIT binary patch literal 66 zcmZ?wbhEHb6k-r!XkcV$XlVHV|G(l-7DfgJMg|=QAOOiQFiG~vH=KUEdfpt3ORshA Txqp6J8?ND(@^elGBZD;ng_;%{ literal 0 HcmV?d00001 diff --git a/widgets/category/skins/default/images/minus.gif b/widgets/category/skins/default/images/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d212a97ae0d8f83aa39836c5a85d442f8602553 GIT binary patch literal 86 zcmZ?wbhEHb6k-r!n8?h~)YR0_(7?dJ@c;jR#h)yU3=GT+IzTQ^R)~RtNqvreafzu-gC3m_gnAtsyGG)YXIxA8@>Pl literal 0 HcmV?d00001 diff --git a/widgets/category/skins/default/images/page.gif b/widgets/category/skins/default/images/page.gif new file mode 100644 index 0000000000000000000000000000000000000000..be86220c5cf7d048e579d05071f54327994e7ecf GIT binary patch literal 301 zcmZ?wbhEHbC>m%w{Ks)diDPO`!{diymIBrrAwE(y1E#s1QdU= zfKAc?ksv=Yuz4MrT;O4os33Ep>7xdR@?6iOmjx_ZrgW<&TV!w?N) + + 분류 출력 기본 스킨 + + 제로 + 게시글 분류를 출력하는 기본 스킨입니다 + + + + 기본 컬러 + + + From 2e136382195ea4ede59f4ad9a3969361db270f0e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 08:17:23 +0000 Subject: [PATCH 109/278] =?UTF-8?q?=EB=B6=84=EB=A5=98=EA=B0=80=20=EC=97=86?= =?UTF-8?q?=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20foreach=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EA=B0=80=20=EB=82=98=EC=A7=80=20=EC=95=8A=EA=B2=8C=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3550 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.model.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 231d5ca4b..7eeac7a64 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -439,6 +439,7 @@ * @brief 카테고리를 1차 배열 형식으로 변경하는 내부 method **/ function _arrangeCategory(&$document_category, $list, $depth) { + if(!count($list)) return; $idx = 0; $list_order = array(); foreach($list as $key => $val) { From c5debc1713ede952acdd058ae4b1b51953010157 Mon Sep 17 00:00:00 2001 From: chinaskyking Date: Mon, 21 Jan 2008 08:48:40 +0000 Subject: [PATCH 110/278] =?UTF-8?q?=EA=B2=80=EC=83=89=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=88=98=20->=20=EC=A4=91=EA=B5=AD=EC=96=B4=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3551 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/zh-CN.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index 5e57af2c6..ca552b54a 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -124,7 +124,7 @@ $lang->document_count = '帖子数'; $lang->page_count = '页数'; $lang->list_count = '目录数'; - $lang->search_list_count = '검색 목록 수'; + $lang->search_list_count = '搜索目录'; $lang->readed_count = '查看'; $lang->voted_count = '推荐'; $lang->member_count = '会员数'; From a2855cd75f2e2da08c9a40e7f94fdfe833c71761 Mon Sep 17 00:00:00 2001 From: chinaskyking Date: Mon, 21 Jan 2008 08:55:37 +0000 Subject: [PATCH 111/278] =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EC=83=81=EB=8B=A8?= =?UTF-8?q?=EC=97=90=20=EB=8A=98=20=EB=82=98=ED=83=80=EB=82=98=EB=8A=94=20?= =?UTF-8?q?=EA=B3=B5=EC=A7=80=EC=82=AC=ED=95=AD=EC=9D=84=20=EC=9D=BC?= =?UTF-8?q?=EB=B0=98=20=EB=AA=A9=EB=A1=9D=EC=97=90=EC=84=9C=20=EA=B3=B5?= =?UTF-8?q?=EC=A7=80=EC=82=AC=ED=95=AD=EC=9D=84=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=ED=95=A9?= =?UTF-8?q?=EB=8B=88=EB=8B=A4=20->=20=EC=A4=91=EA=B5=AD=EC=96=B4=20?= =?UTF-8?q?=EB=B2=88=EC=97=AD..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3552 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/zh-CN.lang.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/board/lang/zh-CN.lang.php b/modules/board/lang/zh-CN.lang.php index ed0de554d..689ee0036 100644 --- a/modules/board/lang/zh-CN.lang.php +++ b/modules/board/lang/zh-CN.lang.php @@ -7,7 +7,7 @@ $lang->board = "版面"; - $lang->except_notice = "공지사항 제외"; + $lang->except_notice = "公告"; $lang->cmd_manage_menu = '菜单管理'; $lang->cmd_make_child = '添加下级分类'; @@ -35,6 +35,6 @@ $lang->about_category_group_srls = '被选的用户组才可以查看此分类。'; $lang->about_layout_setup = '可直接编辑博客布局代码。可以把控件代码插入到您喜欢的位置。'; $lang->about_board_category = '可以添加/删除博客分类
    博客分类有异常情况时,可以尝试重新生成缓冲文件。'; - $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; + $lang->about_except_notice = "设置一般目录下不显示公告。"; $lang->about_board = "可生成,管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。"; ?> From 805b50e5b5aadbf889d3e80867274204a0afa453 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 09:20:41 +0000 Subject: [PATCH 112/278] =?UTF-8?q?textarea=20=EC=97=90=EB=94=94=ED=84=B0?= =?UTF-8?q?=20=EC=8A=A4=ED=82=A8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3553 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/xml_js_filter.js | 2 +- modules/board/skins/xe_board/css/common.css | 2 -- modules/comment/comment.item.php | 4 +++- modules/editor/skins/textarea/css/editor.css | 4 ++++ modules/editor/skins/textarea/editor.html | 19 ++++++++++++++++ .../editor/skins/textarea/js/xe_interface.js | 22 +++++++++++++++++++ modules/editor/skins/textarea/skin.xml | 12 ++++++++++ 7 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 modules/editor/skins/textarea/css/editor.css create mode 100644 modules/editor/skins/textarea/editor.html create mode 100644 modules/editor/skins/textarea/js/xe_interface.js create mode 100644 modules/editor/skins/textarea/skin.xml diff --git a/common/js/xml_js_filter.js b/common/js/xml_js_filter.js index 8a7571b3a..5ef23d42f 100644 --- a/common/js/xml_js_filter.js +++ b/common/js/xml_js_filter.js @@ -305,7 +305,7 @@ function procFilter(fo_obj, filter_func) { // form문 안에 위지윅 에디터가 세팅되어 있을 경우 에디터의 값과 지정된 content field를 sync var editor_sequence = fo_obj.getAttribute('editor_sequence'); if(typeof(editor_sequence)!='undefined' && editor_sequence && typeof(editorRelKeys)!='undefined') { - editorRelKeys[editor_sequence]['content'].value = editorGetContent(editor_sequence); + editorRelKeys[editor_sequence]['content'].value = editorGetContent(editor_sequence); } filter_func(fo_obj); diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 85e9546c0..94ba9c437 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -267,8 +267,6 @@ Jeong, Chan Myeong 070601~070630 .boardWrite dl.option dd * { vertical-align:middle;} .boardWrite dl.option dd select { width:8em; font-size:.95em; } -.boardWrite .editor { border-top:1px solid #e0e1db; margin-top:10px;} - .boardWrite .tag { margin-top:10px; margin-left:10px; } .boardWrite .tag .inputTypeText { width:90%; background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 5px 5px; padding-left:30px;} .boardWrite .tag .help { vertical-align:middle;} diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 85d6a9182..4ad93b61f 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -254,8 +254,10 @@ * @brief 에디터 html을 구해서 return **/ function getEditor() { + $module_srl = $this->get('module_srl'); + if(!$module_srl) $module_srl = Context::get('module_srl'); $oEditorModel = &getModel('editor'); - return $oEditorModel->getModuleEditor('comment', $this->get('module_srl'), $this->comment_srl, 'comment_srl', 'content'); + return $oEditorModel->getModuleEditor('comment', $module_srl, $this->comment_srl, 'comment_srl', 'content'); } } diff --git a/modules/editor/skins/textarea/css/editor.css b/modules/editor/skins/textarea/css/editor.css new file mode 100644 index 000000000..e29fa20c8 --- /dev/null +++ b/modules/editor/skins/textarea/css/editor.css @@ -0,0 +1,4 @@ +@charset "utf-8"; + +.xeTextareaEditor {width:100%; } +.xeTextareaEditor textarea { display:block; margin:10px 10px 0 10px; width:90%;} diff --git a/modules/editor/skins/textarea/editor.html b/modules/editor/skins/textarea/editor.html new file mode 100644 index 000000000..ee11e631d --- /dev/null +++ b/modules/editor/skins/textarea/editor.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + +
    + +
    + + diff --git a/modules/editor/skins/textarea/js/xe_interface.js b/modules/editor/skins/textarea/js/xe_interface.js new file mode 100644 index 000000000..432212f62 --- /dev/null +++ b/modules/editor/skins/textarea/js/xe_interface.js @@ -0,0 +1,22 @@ +function editorStartTextarea(editor_sequence, content_key, primary_key) { + var obj = xGetElementById('editor_'+editor_sequence); + obj.form.setAttribute('editor_sequence', editor_sequence); + + xWidth(obj,xWidth(obj.parentNode)-20); + + editorRelKeys[editor_sequence] = new Array(); + editorRelKeys[editor_sequence]["primary"] = obj.form[primary_key]; + editorRelKeys[editor_sequence]["content"] = obj.form[content_key]; + editorRelKeys[editor_sequence]["func"] = editorGetContentTextarea; + + var content = obj.form[content_key].value; + content = content.replace(/]+)>/ig,""); + obj.value = content; +} + +function editorGetContentTextarea(editor_sequence) { + var obj = xGetElementById('editor_'+editor_sequence); + var content = obj.value.trim(); + content = content.replace(/(\r\n|\n)/g, "
    $1"); + return content; +} diff --git a/modules/editor/skins/textarea/skin.xml b/modules/editor/skins/textarea/skin.xml new file mode 100644 index 000000000..c2b0f9147 --- /dev/null +++ b/modules/editor/skins/textarea/skin.xml @@ -0,0 +1,12 @@ + + + 제로보드XE textarea 에디터 스킨 + + zero + + 위지윅에디터가 아닌 가벼운 글 편집을 원할 경우 사용되는 스킨입니다. + 에디터컴포넌트나 파일첨부등의 기능이 모두 되지 않고 단순히 글로 된 컨텐츠만 사용할 수 있습니다. + 개발 : zero (http://www.zeroboard.com) + + + From 06c4a4d05c34ca484316aba946729fff8ca65f83 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 09:27:59 +0000 Subject: [PATCH 113/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3554 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 11 +++++---- modules/board/skins/xe_board/style.blog.html | 24 +++++++++++-------- .../editor/skins/textarea/js/xe_interface.js | 2 +- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 94ba9c437..49f439582 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -36,11 +36,12 @@ Jeong, Chan Myeong 070601~070630 .secretContent .content { padding:10px 0 10px 0; background-color:#FFFFFF; display:block; } /* blog Style Notice */ -.blogNotice { background:url("../images/common/notice.gif") no-repeat -2px 3px; padding:3px 0 3px 18px; border-top:1px solid #e0e1db; } -.blogNotice .date { font-family:verdana; font-size:.9em;color:#AAAAAA; } -.blogNotice a { text-decoration:none; color:#444444; } -.blogNotice a:hover { text-decoration:underline} -.blogNotice .replyAndTrackback { color:#AAAAAA; font-size:.9em; } +.blogNotice { margin-bottom:10px; padding:5px; border:1px solid #e0e1db;} +.blogNotice .item { background:url("../images/common/notice.gif") no-repeat -2px 3px; padding:3px 0 3px 18px; } +.blogNotice .item .date { font-family:verdana; font-size:.9em;color:#AAAAAA; } +.blogNotice .item a { text-decoration:none; color:#444444; } +.blogNotice .item a:hover { text-decoration:underline} +.blogNotice .item .replyAndTrackback { color:#AAAAAA; font-size:.9em; } /* boardRead */ .viewDocument { border:1px solid #e0e1db; padding:10px; border-bottom:2px solid #AAAAAA; margin-bottom:20px; } diff --git a/modules/board/skins/xe_board/style.blog.html b/modules/board/skins/xe_board/style.blog.html index 335a6bda9..35c1d3544 100644 --- a/modules/board/skins/xe_board/style.blog.html +++ b/modules/board/skins/xe_board/style.blog.html @@ -21,20 +21,24 @@ - +
    - [{$document->getRegdate("Y-m-d")}] - {$document->getTitle()} + +
    + [{$document->getRegdate("Y-m-d")}] + {$document->getTitle()} - - {$document->getCommentCount()} - + + {$document->getCommentCount()} + - - {$document->getTrackbackCount()} - + + {$document->getTrackbackCount()} + - {$document->printExtraImages(60*60*$module_info->duration_new)} + {$document->printExtraImages(60*60*$module_info->duration_new)} +
    +
    diff --git a/modules/editor/skins/textarea/js/xe_interface.js b/modules/editor/skins/textarea/js/xe_interface.js index 432212f62..8c3b9fc21 100644 --- a/modules/editor/skins/textarea/js/xe_interface.js +++ b/modules/editor/skins/textarea/js/xe_interface.js @@ -2,7 +2,7 @@ function editorStartTextarea(editor_sequence, content_key, primary_key) { var obj = xGetElementById('editor_'+editor_sequence); obj.form.setAttribute('editor_sequence', editor_sequence); - xWidth(obj,xWidth(obj.parentNode)-20); + xWidth(obj,xWidth(obj.parentNode)-24); editorRelKeys[editor_sequence] = new Array(); editorRelKeys[editor_sequence]["primary"] = obj.form[primary_key]; From da08ff2262c1e3eb7aa14a20d22798a75cf11134 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 09:36:51 +0000 Subject: [PATCH 114/278] =?UTF-8?q?=EC=97=90=EB=94=94=ED=84=B0=20=EB=8C=93?= =?UTF-8?q?=EA=B8=80=20=EA=B8=B0=EB=B3=B8=20=EB=86=92=EC=9D=B4=EB=A5=BC=20?= =?UTF-8?q?120px=EB=A1=9C=20=EC=A1=B0=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3555 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 2 +- modules/editor/editor.model.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 49f439582..3b3777dbd 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -290,7 +290,7 @@ Jeong, Chan Myeong 070601~070630 /* 게시물의 팝업 메뉴 */ -.comment_popup_menu, .document_popup_menu { text-align:right; margin-top:3em; clear:both; display:block; background:url(../images/common/document_menu.gif) no-repeat right top; padding-right:16px; height:18px; } +.comment_popup_menu, .document_popup_menu { text-align:right; background:url(../images/common/document_menu.gif) no-repeat right top; padding-right:16px; } .comment_popup_menu span, .document_popup_menu span { cursor:pointer; display:inline; background:none; padding:0 0 0 0; margin:0 0 0 0; } /* tag list */ diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index 3b2d534de..5b9b4ab7e 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -43,7 +43,7 @@ if(!is_array($editor_config->enable_comment_component_grant)) $editor_config->enable_comment_component_grant= array(); if(!$editor_config->editor_height) $editor_config->editor_height = 500; - if(!$editor_config->comment_editor_height) $editor_config->comment_editor_height = 200; + if(!$editor_config->comment_editor_height) $editor_config->comment_editor_height = 120; if($editor_config->enable_height_resizable!='N') $editor_config->enable_height_resizable= "Y"; if($editor_config->enable_comment_height_resizable!='Y') $editor_config->enable_comment_height_resizable= "N"; if($editor_config->enable_autosave!='N') $editor_config->enable_autosave = "Y"; From bfbf140d7c0f2d35e281587bb97090b2e730cfab Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 11:44:53 +0000 Subject: [PATCH 115/278] =?UTF-8?q?1.=20layout=EC=97=90=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=EC=9D=98=20blog=EB=AA=A8=EB=93=88=EC=9D=98=20xe=5Fblo?= =?UTF-8?q?g=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=8A=A4=ED=82=A8?= =?UTF-8?q?=EC=9D=84=20=EC=A0=81=EC=9A=A9=202.=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=95=84=EC=9B=83=20=ED=8E=B8=EC=A7=91/=EC=88=98=EC=A0=95?= =?UTF-8?q?=EC=8B=9C=20=EB=AA=A8=EB=93=88=EC=9D=98=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EA=B6=8C=ED=95=9C=EC=9D=84=20=EA=B7=B8=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3556 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 2 + common/lang/es.lang.php | 2 + common/lang/fr.lang.php | 2 + common/lang/jp.lang.php | 2 + common/lang/ko.lang.php | 2 + common/lang/ru.lang.php | 2 + common/lang/zh-CN.lang.php | 2 + layouts/xe_blog/conf/info.xml | 161 ++++++++++++++++++ layouts/xe_blog/css/cyan.css | 14 ++ layouts/xe_blog/css/green.css | 14 ++ layouts/xe_blog/css/layout.css | 88 ++++++++++ layouts/xe_blog/css/purple.css | 14 ++ layouts/xe_blog/css/red.css | 14 ++ layouts/xe_blog/css/white.css | 14 ++ layouts/xe_blog/images/common/blank.gif | Bin 0 -> 43 bytes .../xe_blog/images/common/blogHeaderVr.gif | Bin 0 -> 44 bytes layouts/xe_blog/images/common/buttonHelp.gif | Bin 0 -> 101 bytes layouts/xe_blog/images/common/find_button.gif | Bin 0 -> 1187 bytes layouts/xe_blog/images/common/iconAdmin.gif | Bin 0 -> 88 bytes layouts/xe_blog/images/common/iconAllTags.gif | Bin 0 -> 220 bytes layouts/xe_blog/images/common/iconArrowD8.gif | Bin 0 -> 46 bytes layouts/xe_blog/images/common/iconRss.gif | Bin 0 -> 988 bytes layouts/xe_blog/images/common/iconSetup.gif | Bin 0 -> 155 bytes layouts/xe_blog/images/common/iconWrite.gif | Bin 0 -> 525 bytes .../images/common/line_1x10_e0e0e0.gif | Bin 0 -> 44 bytes .../xe_blog/images/common/poweredbyzbxe.png | Bin 0 -> 5080 bytes layouts/xe_blog/images/cyan/bgBoxTypeB.gif | Bin 0 -> 207 bytes .../xe_blog/images/cyan/blogHeaderLine.gif | Bin 0 -> 181 bytes layouts/xe_blog/images/cyan/blogHeaderVr.gif | Bin 0 -> 44 bytes layouts/xe_blog/images/cyan/iconMyInfo.gif | Bin 0 -> 91 bytes layouts/xe_blog/images/cyan/iconWrite.gif | Bin 0 -> 198 bytes layouts/xe_blog/images/green/bgBoxTypeB.gif | Bin 0 -> 205 bytes .../xe_blog/images/green/blogHeaderLine.gif | Bin 0 -> 181 bytes layouts/xe_blog/images/green/blogHeaderVr.gif | Bin 0 -> 44 bytes layouts/xe_blog/images/green/iconMyInfo.gif | Bin 0 -> 96 bytes layouts/xe_blog/images/green/iconWrite.gif | Bin 0 -> 199 bytes layouts/xe_blog/images/purple/bgBoxTypeB.gif | Bin 0 -> 197 bytes .../xe_blog/images/purple/blogHeaderLine.gif | Bin 0 -> 181 bytes .../xe_blog/images/purple/blogHeaderVr.gif | Bin 0 -> 44 bytes layouts/xe_blog/images/purple/iconMyInfo.gif | Bin 0 -> 125 bytes layouts/xe_blog/images/purple/iconWrite.gif | Bin 0 -> 525 bytes layouts/xe_blog/images/red/bgBoxTypeB.gif | Bin 0 -> 196 bytes layouts/xe_blog/images/red/blogHeaderLine.gif | Bin 0 -> 181 bytes layouts/xe_blog/images/red/blogHeaderVr.gif | Bin 0 -> 44 bytes layouts/xe_blog/images/red/iconMyInfo.gif | Bin 0 -> 96 bytes layouts/xe_blog/images/red/iconWrite.gif | Bin 0 -> 307 bytes layouts/xe_blog/images/white/bgBoxTypeB.gif | Bin 0 -> 200 bytes .../xe_blog/images/white/blogHeaderLine.gif | Bin 0 -> 181 bytes layouts/xe_blog/images/white/blogHeaderVr.gif | Bin 0 -> 44 bytes layouts/xe_blog/images/white/iconMyInfo.gif | Bin 0 -> 125 bytes layouts/xe_blog/images/white/iconWrite.gif | Bin 0 -> 525 bytes layouts/xe_blog/layout.html | 155 +++++++++++++++++ modules/board/skins/xe_board/css/common.css | 6 +- modules/board/skins/xe_board/header.html | 4 +- modules/board/skins/xe_board/list.html | 4 +- .../board/skins/xe_board/view_document.html | 2 + modules/layout/layout.class.php | 17 +- modules/module/module.model.php | 17 ++ modules/module/queries/getModulesByLayout.xml | 11 ++ .../category/skins/default/css/category.css | 3 +- 60 files changed, 542 insertions(+), 10 deletions(-) create mode 100644 layouts/xe_blog/conf/info.xml create mode 100644 layouts/xe_blog/css/cyan.css create mode 100644 layouts/xe_blog/css/green.css create mode 100644 layouts/xe_blog/css/layout.css create mode 100644 layouts/xe_blog/css/purple.css create mode 100644 layouts/xe_blog/css/red.css create mode 100644 layouts/xe_blog/css/white.css create mode 100644 layouts/xe_blog/images/common/blank.gif create mode 100644 layouts/xe_blog/images/common/blogHeaderVr.gif create mode 100644 layouts/xe_blog/images/common/buttonHelp.gif create mode 100644 layouts/xe_blog/images/common/find_button.gif create mode 100644 layouts/xe_blog/images/common/iconAdmin.gif create mode 100644 layouts/xe_blog/images/common/iconAllTags.gif create mode 100644 layouts/xe_blog/images/common/iconArrowD8.gif create mode 100644 layouts/xe_blog/images/common/iconRss.gif create mode 100644 layouts/xe_blog/images/common/iconSetup.gif create mode 100644 layouts/xe_blog/images/common/iconWrite.gif create mode 100644 layouts/xe_blog/images/common/line_1x10_e0e0e0.gif create mode 100644 layouts/xe_blog/images/common/poweredbyzbxe.png create mode 100644 layouts/xe_blog/images/cyan/bgBoxTypeB.gif create mode 100644 layouts/xe_blog/images/cyan/blogHeaderLine.gif create mode 100644 layouts/xe_blog/images/cyan/blogHeaderVr.gif create mode 100644 layouts/xe_blog/images/cyan/iconMyInfo.gif create mode 100644 layouts/xe_blog/images/cyan/iconWrite.gif create mode 100644 layouts/xe_blog/images/green/bgBoxTypeB.gif create mode 100644 layouts/xe_blog/images/green/blogHeaderLine.gif create mode 100644 layouts/xe_blog/images/green/blogHeaderVr.gif create mode 100644 layouts/xe_blog/images/green/iconMyInfo.gif create mode 100644 layouts/xe_blog/images/green/iconWrite.gif create mode 100644 layouts/xe_blog/images/purple/bgBoxTypeB.gif create mode 100644 layouts/xe_blog/images/purple/blogHeaderLine.gif create mode 100644 layouts/xe_blog/images/purple/blogHeaderVr.gif create mode 100644 layouts/xe_blog/images/purple/iconMyInfo.gif create mode 100644 layouts/xe_blog/images/purple/iconWrite.gif create mode 100644 layouts/xe_blog/images/red/bgBoxTypeB.gif create mode 100644 layouts/xe_blog/images/red/blogHeaderLine.gif create mode 100644 layouts/xe_blog/images/red/blogHeaderVr.gif create mode 100644 layouts/xe_blog/images/red/iconMyInfo.gif create mode 100644 layouts/xe_blog/images/red/iconWrite.gif create mode 100644 layouts/xe_blog/images/white/bgBoxTypeB.gif create mode 100644 layouts/xe_blog/images/white/blogHeaderLine.gif create mode 100644 layouts/xe_blog/images/white/blogHeaderVr.gif create mode 100644 layouts/xe_blog/images/white/iconMyInfo.gif create mode 100644 layouts/xe_blog/images/white/iconWrite.gif create mode 100644 layouts/xe_blog/layout.html create mode 100644 modules/module/queries/getModulesByLayout.xml diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 2386837f9..b1c1d18ed 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -60,6 +60,8 @@ $lang->cmd_reset = 'Reset'; $lang->cmd_remake_cache = "Re-create cache file"; $lang->cmd_publish = "Publish"; + $lang->cmd_layout_setup = 'Configure layout'; + $lang->cmd_layout_edit = 'Edit layout'; $lang->enable = 'Enable'; $lang->disable = 'Disable'; diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 9a9093e58..9c83adf8f 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -59,6 +59,8 @@ $lang->cmd_reset = 'Rehacer'; $lang->cmd_remake_cache = "캐시파일 재생성"; $lang->cmd_publish = "발행"; + $lang->cmd_layout_setup = 'Configuración del diseño'; + $lang->cmd_layout_edit = 'Editar el diseño'; $lang->enable = 'Activar'; $lang->disable = 'Desactivar'; diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index 4e2eda82c..1b7dfc8ab 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -59,6 +59,8 @@ $lang->cmd_reset = '초기화'; $lang->cmd_remake_cache = "캐시파일 재생성"; $lang->cmd_publish = "발행"; + $lang->cmd_layout_setup = '레이아웃 설정'; + $lang->cmd_layout_edit = '레이아웃 편집'; $lang->enable = 'Permettre'; $lang->disable = 'Neutraliser'; diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php index b3d3358e2..57255d687 100644 --- a/common/lang/jp.lang.php +++ b/common/lang/jp.lang.php @@ -60,6 +60,8 @@ $lang->cmd_reset = '初期化'; $lang->cmd_remake_cache = "キャッシュファイル再生成"; $lang->cmd_publish = "発行"; + $lang->cmd_layout_setup = 'レイアウト設定'; + $lang->cmd_layout_edit = 'レイアウト編集'; $lang->enable = '可能'; $lang->disable = '不可'; diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index ac0238b69..d0b6e3944 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -60,6 +60,8 @@ $lang->cmd_reset = '초기화'; $lang->cmd_remake_cache = "캐시파일 재생성"; $lang->cmd_publish = "발행"; + $lang->cmd_layout_setup = '레이아웃 설정'; + $lang->cmd_layout_edit = '레이아웃 편집'; $lang->enable = '가능'; $lang->disable = '불가능'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index eb56dd0a3..d76fc271c 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -60,6 +60,8 @@ $lang->cmd_reset = 'Сброс'; $lang->cmd_remake_cache = "Пере-создать файл кэша"; $lang->cmd_publish = "Опубликовать"; + $lang->cmd_layout_setup = 'Конфигурировать лейаут'; + $lang->cmd_layout_edit = 'Редактировать лейаут'; $lang->enable = 'Включено'; $lang->disable = 'Выключено'; diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index ca552b54a..40a7b5992 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -60,6 +60,8 @@ $lang->cmd_reset = '初始化'; $lang->cmd_remake_cache = "重新生成缓冲文件"; $lang->cmd_publish = "发表"; + $lang->cmd_layout_setup = '布局设置'; + $lang->cmd_layout_edit = '编辑布局'; $lang->enable = '可用'; $lang->disable = '禁用'; diff --git a/layouts/xe_blog/conf/info.xml b/layouts/xe_blog/conf/info.xml new file mode 100644 index 000000000..0bad5550e --- /dev/null +++ b/layouts/xe_blog/conf/info.xml @@ -0,0 +1,161 @@ + + + 제로보드XE 블로그 기본 스킨 + ZBXEブログのデフォルトスキン + Zeroboard XE博客默认皮肤 + Default Skin of Zeroboard XE blog + + zero + zero + zero + zero + + 제로보드XE 블로그 기본 스킨입니다. + 디자인 : 서기정 (http://blog.naver.com/addcozy) + HTML/CSS : 정찬명 (http://naradesign.net) + + + ゼロボードXEブログの基本スキンです。 + デザイン:ソギジョン (http://blog.naver.com/addcozy) + HTML/CSS:ジョンチャンミョン (http://naradesign.net) + + + Zeroboard XE博客默认皮肤。 + 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + This is default skin of Zeroboard XE blog. + Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + + + 컬러셋 + カラーセット + 颜色 + Colorset + Set de colores + 원하시는 컬러셋을 선택해주세요. + 希望するカラーセットを選択してください。 + 请选择颜色。 + Please select a colorset you want. + Seleccione set de colores que desea. + + 하얀색(기본) + 白色(基本) + 白色(默认) + White (default) + white + + + 청록색 + 青緑 + 青绿色 + Cyan + cyan + + + 초록색 + + 绿色 + Green + green + + + 빨간색 + + 红色 + Red + red + + + 보라색 + + 紫色 + Purple + purple + + + + 기본 모듈 + 기본 모듈 + 기본 모듈 + 기본 모듈 + 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 + 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 + 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 + 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 + + + 상단 제목 + 上段タイトル + 博客标题 + Top Title + 레이아웃의 상단에 표시할 제목을 입력하세요. + レイアウト上段に表示させるタイトルを入力してください。 + 请输入博客主标题。 + Please input title which will be displayed on top of layout. + + + 부제 + サブタイトル + 副标题 + Subtitle + 레이아웃의 상단에 큰 제목 아래 부제목을 입력하세요. + レイアウトの上段にメインタイトルの下のサブタイトルを入力してください。 + 请输入副标题。 + Please input subtitle which will be displayed under the top title. + + + 로고이미지 + ロゴイメージ + LOGO图片 + Logo Image + 레이아웃의 상단에 표시될 로고이미지를 입력하세요. + レイアウトの上段に表示されるロゴイメージを入力してください。 + 上传博客LOGO图片。 + Please input logo image which will be displayed on top of layout. + + + 프로필 이미지 + プロフィールイメージ + 博客个性图片 + Profile Image + 프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다) + プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。 + 请输入博客个性图片(推荐宽度160px)。 + Please input profile image (It is recommended to set width as 160px) + + + 배경 이미지 + 背景イメージ + 背景图片 + Background Image + 배경 이미지를 사용하시려면 등록해주세요. + 背景イメージを使う場合は、登録してください。 + 要想使用背景图片请在这里上传。 + Please input if you want to use background image. + + + 프로필 + プロフィール + 简介 + Profile + 간단한 프로필을 입력해주세요 + 簡単なプロフィールを入力してください。 + 请输入简单介绍。 + Please input your simple profile + + + + + 상단 메뉴 + 上段メニュー + 菜单 + Top Menu + 1 + + + diff --git a/layouts/xe_blog/css/cyan.css b/layouts/xe_blog/css/cyan.css new file mode 100644 index 000000000..e9e15e7cc --- /dev/null +++ b/layouts/xe_blog/css/cyan.css @@ -0,0 +1,14 @@ +@charset "utf-8"; + +.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} +#bodyWrap #header #globalNavigation li.on a { color:#2895c0;} + +#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/cyan/blogHeaderVr.gif) no-repeat right center;} +#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/cyan/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} + +/* account Navigation */ +#blogAccountNavigation li.join a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; } +#blogAccountNavigation li.myInfo a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; } + +/* widget common css */ +.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/layouts/xe_blog/css/green.css b/layouts/xe_blog/css/green.css new file mode 100644 index 000000000..301e782df --- /dev/null +++ b/layouts/xe_blog/css/green.css @@ -0,0 +1,14 @@ +@charset "utf-8"; + +.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} +#bodyWrap #header #globalNavigation li.on a { color:#38b549;} + +#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/green/blogHeaderVr.gif) no-repeat right center;} +#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/green/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} + +/* account Navigation */ +#blogAccountNavigation li.join a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; } +#blogAccountNavigation li.myInfo a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; } + +/* widget common css */ +.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/layouts/xe_blog/css/layout.css b/layouts/xe_blog/css/layout.css new file mode 100644 index 000000000..d26e86f19 --- /dev/null +++ b/layouts/xe_blog/css/layout.css @@ -0,0 +1,88 @@ +@et "utf-8"; + +/* +NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/) +Jeong, Chan Myeong 070601~070630 +*/ + +li { list-style:none; } +a { text-decoration:none; } + +/* Blog Layout - Common */ +#bodyWrap { position:relative; width:860px; margin:0 auto; background-color:#FFFFFF; padding-top:1px; top:30px;} + +/* Blog Layout - Content Body */ +#contentBody { overflow:hidden; padding-bottom:2em; _width:100%;} + +/* Blog Layout - ColumnLeft */ +#columnLeft { float:left; width:182px; margin:0px 8px 0px 0px; padding-left:10px;} + +/* Blog Layout - ColumnRight */ +#columnRight {} + +/* Blog Layout - Content */ +#content { float:left; width:650px; overflow:hidden; padding-right:10px; _width:648px; } + +#bodyWrap #accountNavigation { float:right; margin:1em 1em 0 0; padding-bottom:.5em; overflow:hidden;} +#bodyWrap #accountNavigation li a { display:block; float:left; padding:0 .75em; color:#888888; white-space:nowrap;} + +/* account Navigation */ +#blogAccountNavigation { float:right; margin:10px 10px 0 0; } +#blogAccountNavigation li { float:left; margin-left:7px; list-style:none; } +#blogAccountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;} + +#blogAccountNavigation li.admin { background:url(../images/common/iconAdmin.gif) no-repeat left 1px; padding-left:12px; } +#blogAccountNavigation li.setup { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; } +#blogAccountNavigation li.layout_setup { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 1px; padding-left:8px; } +#blogAccountNavigation li.layout_edit { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 1px; padding-left:8px; } +#blogAccountNavigation li.myinfo { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 1px; padding-left:8px; } +#blogAccountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 1px; padding-left:8px; } +#blogAccountNavigation li.write { background:url(../images/common/iconWrite.gif) no-repeat left top; padding-left:14px;} + +/* Blog header Child*/ +#bodyWrap #header h1 { position:relative; left:20px; top:30px; font-size:2em; letter-spacing:-.05em;} +#bodyWrap #header h1 a { font-family:Tahoma; color:#53554a;} +#bodyWrap #header #tagLine { position:relative; left:20px; top:30px; color:#7e7f77;} + +#bodyWrap #header #globalNavigation { line-height:11pt; font-size:9pt; float:right; overflow:hidden; margin:45px 3px 0 0; } +#bodyWrap #header #globalNavigation li { float:left; margin-left:-1px; background:url(../images/common/blogHeaderVr.gif) no-repeat left center;} +#bodyWrap #header #globalNavigation li a { display:block; float:left; padding:0 7px; font-weight:bold; color:#54564b; white-space:nowrap;} + +/* Column Left & Right Common Child */ +.boxTypeA { position:relative; border:1px solid #e0e1db; margin-bottom:.7em;} +.boxTypeB h2 { position:relative; border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; font-size:1em; color:#54564b; font-family:Tahoma;} +*:first-child+html .boxTypeB h2 { height:20px;} +.boxTypeB .toggleMask {position:absolute; top:8px; right:5px; cursor:pointer; width:13px; height:13px; overflow:hidden;} +.boxTypeB .showHide { position:relative;} +.boxTypeB .optionList { position:absolute; top:8px; right:0; overflow:hidden;} +.boxTypeB .optionList li { float:left; padding:0 .5em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center;} +.boxTypeB .optionList li a { color:#a4a4a4; font-size:.9em;} +.boxTypeB .optionList li.on a { color:#000000;} +.boxTypeB .showAll { color:#000000; font-size:.9em; white-space:nowrap; display:inline-block; position:relative; left:1.2em; padding-right:.6em; background:url(../images/common/iconArrow00.gif) no-repeat right center;} + +/* Profile */ +div#profile { padding:10px; overflow:hidden; background-color:#FFFFFF; } +div#profile img.profile { width:160px; display:block; margin-bottom:1.2em;} +div#profile dl#hello {} +div#profile dl#hello dt { color:#333333; margin-bottom:.2em;} +div#profile dl#hello dt a { color:#333333;} +div#profile dl#hello dd { color:#777777; margin-bottom:1em;} +div#profile ul#admin { overflow:hidden; height:1.2em;} + +/* Search Box */ +div#searchBox { margin-bottom:.7em; overflow:hidden; width:100%;} +div#searchBox fieldset { border:none;} +div#searchBox fieldset legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em;} +div#searchBox .imgBtn {vertical-align:middle; _position:relative; top:-4px; } +*:first-child+html div#searchBox .imgBtn { position:relative; top:-4px; } + +/* powered by zbxe */ +#poweredbyzbxe { text-align:center; margin-top:2em; } +#poweredbyzbxe img { width:138px; height:35px; border:0;} + +/* widget common css */ +.category_widget { border:1px solid #e0e1db; margin-bottom:10px; padding:15px 5px 10px 5px; overflow:hidden;} +.blog_widget_ h2 { border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; font-size:1em; color:#54564b; } +.blog_widget_ .items { padding:10px; overflow:hidden;} +.blog_widget_ .items li { font-size:.9em; display:block; color:#a4a4a4; margin-right:.1em; line-height:150%; overflow:hidden; white-space:nowrap; list-style:none; width:100%; padding:3px 0 3px 0;} +.blog_widget_ .items li a { color:#a4a4a4; margin-right:1em; } diff --git a/layouts/xe_blog/css/purple.css b/layouts/xe_blog/css/purple.css new file mode 100644 index 000000000..419f86dce --- /dev/null +++ b/layouts/xe_blog/css/purple.css @@ -0,0 +1,14 @@ +@charset "utf-8"; + +.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} +#bodyWrap #header #globalNavigation li.on a { color:#b1ae00;} + +#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/purple/blogHeaderVr.gif) no-repeat right center;} +#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/purple/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} + +/* account Navigation */ +#blogAccountNavigation li.join a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; } +#blogAccountNavigation li.myInfo a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; } + +/* widget common css */ +.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/layouts/xe_blog/css/red.css b/layouts/xe_blog/css/red.css new file mode 100644 index 000000000..712c662c6 --- /dev/null +++ b/layouts/xe_blog/css/red.css @@ -0,0 +1,14 @@ +@charset "utf-8"; + +.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} +#bodyWrap #header #globalNavigation li.on a { color:#fe3614;} + +#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/red/blogHeaderVr.gif) no-repeat right center;} +#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/red/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} + +/* account Navigation */ +#blogAccountNavigation li.join a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; } +#blogAccountNavigation li.myInfo a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; } + +/* widget common css */ +.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/layouts/xe_blog/css/white.css b/layouts/xe_blog/css/white.css new file mode 100644 index 000000000..45b34bcc9 --- /dev/null +++ b/layouts/xe_blog/css/white.css @@ -0,0 +1,14 @@ +@charset "utf-8"; + +.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} +#bodyWrap #header #globalNavigation li.on a { color:#fe3614;} + +#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/white/blogHeaderVr.gif) no-repeat right center;} +#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/white/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} + +/* account Navigation */ +#blogAccountNavigation li.join { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; } +#blogAccountNavigation li.myInfo { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; } + +/* widget common css */ +.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/layouts/xe_blog/images/common/blank.gif b/layouts/xe_blog/images/common/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/blogHeaderVr.gif b/layouts/xe_blog/images/common/blogHeaderVr.gif new file mode 100644 index 0000000000000000000000000000000000000000..9480e8106b2acbd680ad24ed3efc4028e33a22b6 GIT binary patch literal 44 tcmZ?wbhEHbWMtrCXkcJCcKiSX1B2pE79h#MpaUX6G7L=2E&Z$v)&Rfb2QB~r literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/buttonHelp.gif b/layouts/xe_blog/images/common/buttonHelp.gif new file mode 100644 index 0000000000000000000000000000000000000000..d330e801f0e71f8cbcb623ad20ddb57091d15305 GIT binary patch literal 101 zcmZ?wbhEHbeZ{n#KddYuKfoC1{hHM$->CMz`~#d5&)@XVAk^3bZ1e* t3Cn|vBJN36&A5HR^Rd9R)DyL{8m8v9tyGc@-k|C7DM6EuU6GN&8UQZyBn1Ef literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/find_button.gif b/layouts/xe_blog/images/common/find_button.gif new file mode 100644 index 0000000000000000000000000000000000000000..7520ec3f4c729d727cad6e5d63dcf17cdf439f08 GIT binary patch literal 1187 zcmd^;2~Sf80DvEejHwa@O}9*vIv(GOG1DU zV1EGE*>M~l9XOpkdwaXv+gmQz-tO*payZ80ad|wRg9FdT#+&XRvUPfuu%%*@%@mBi z=J7||Zg(fO%4{+2@9(etG2hzTb9i`&y^w(YIOS~8XI`({IHffhHEIna6mg&aN>|%# z3fpfkmuqfuF_YFApLOjv^;tfXx4!gPF`}5bKP=&JhwKaUq&jltE6$vK z#%P(APiiNmLcU-G(wn>PWmzni99nx)(bqhUws(kaHk%%`cZ~@-`OOTLOpaJ>EV&Za zsqc5PlordCpQ=*JtJNA4~ggHowLiPViD8ZE*fWaiO2QobzVaM^s7YSLtoPwLn#hH-Yr zV441k(%dc@e^~M4R&A@^WYB08R_3 z7m`hO_haJlg-fJX+^M2cH*U>9Wp)QNMK%Wqz0AEqD2iP!rGkmoih@x7BWrX4<PnZGkT4ECz?22ntLAoC^e0 z0pu6GM1=4#G0ejtWuwEP2Rbr};DV01-j`hk?&49z8f+(rcloegXr7H2^m89IpTX literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/iconAllTags.gif b/layouts/xe_blog/images/common/iconAllTags.gif new file mode 100644 index 0000000000000000000000000000000000000000..31602d819945b79e568eb15c26f8e1f3c9469a85 GIT binary patch literal 220 zcmZ?wbhEHb0y&-<5;{P^+X^OO1O`g8yPdvj}l!{5Ju zA3b{X|L3u7eHp)h|Nism&$?-)ndi5V3Az{`$tq|3CMyn_T?w-@gL~4(#8* z|34Toz<}aU7DfgJ83rAY0LV@T)<}ivsZuMarXS1X-j+M#cOIkV{q>us>N5tmAAY^@ z@(#W29BV3E7<71Aj%?hRtJjpibmEMV-s@|QChg!cST0@`bB||+^r6(gJ0kmb+^!Wl SurrBKN=ZenMOj9X!5RPr2XUkT literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/iconArrowD8.gif b/layouts/xe_blog/images/common/iconArrowD8.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe3143edc992334d34a18240b76e4d246b1767e8 GIT binary patch literal 46 ycmZ?wbhEHbWM*JxXkcWxapT7S|Nj+#vM@3*Ff!;c00Bsbfr-_HXHdp^c8s9puLCu&^r;2=ywJc@+Djh2Yf>V@eF+*DFy1g6T-EXMjc8hv(~ zHR#sT(m)isq5l-FIpE6-v-+VxfW`yp@WCB1hLf@L8urB99A{SU%SyeOF@RM|@Hh!0 zDr$|v)*|bRpfw@8cjGZ>W=4N}9AE|?^vckyKu_Pbc4t-KQKaYE! z7&(Jay{v#w>!Z+ll-5MBG7;|k?iTseN(Cm%QR0E8f#{O6VliGG!E81*W^l_B<7zz9 zQj40^`NATkrsFJEi1|j=7=qDYYSm#NAEODVbiwFVOqr=Q5ditmKPn*m?Z_d-MpS#g zy(b87g2>}Nyri{+lXa<>!%bUvjlEd1IZ+~S5FPWDz941Y&h9#y*UFP03+4_*!yiFk z!aQG~;qmy<Q-2M9)259yB(2+Lmxv^KHBPFI&v+P+y(RFm zJM*1{EzyJ8NXKOfsjnzZEzPZKO1^D6q2|QRa-DKVls4NwmzL-RO`L{1n_$*uM%EnO id{q~asusL&vpLK+oV@VOE04G2+P!R#Pub5SF@FJTrB=-V literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/iconSetup.gif b/layouts/xe_blog/images/common/iconSetup.gif new file mode 100644 index 0000000000000000000000000000000000000000..33b41da114321534bd1766c254b371ad88f5290a GIT binary patch literal 155 zcmZ?wbhEHb=;&9kUTxU0;pWYoMMXuuy}dCpG5`PnXTSy&f3h$# zFmN#FfFwa?FtB(Ccvha7^ME5{q6I@}$kf7~OX(sxiFq6w*$xZrU@4!&?8vitZeoOl oM}u>7e%Nl!;#JeUm6dq?**)DHRtVTFoY9~B@u^-?2@8WY02oR!hyVZp literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/iconWrite.gif b/layouts/xe_blog/images/common/iconWrite.gif new file mode 100644 index 0000000000000000000000000000000000000000..f18cb5e9e525a0a989280515567015fe88cff599 GIT binary patch literal 525 zcmZ?wbhEHbmPP08Uer9VvdUNvgiFq?THNKpj_jbAK=0l5T zOb_p#8ulwo`|GI%k6#~~H7znTC2NkG_Jh|a51l;!=k@hl_a1KCee`6l(eGQkzu(%m zY{Sk)Yj(V-k3Vi@uzgz3IU6 znVuS7fi_Ny{C;cC%&B3s-LP=>OMUB+|n}QUUFh)jSSWR)~K_T literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/common/line_1x10_e0e0e0.gif b/layouts/xe_blog/images/common/line_1x10_e0e0e0.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a848dd581e9ecdf86112d9e89d590c2a18c3296 GIT binary patch literal 44 tcmZ?wbhEHbWMtrCXkcJ?@ZbRh1B2pE79h#MpaUX6G7L=2E&Z$v)&R+u2Y~

    r001Kh0ssI2#P$Uh00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU_YDq*vRCwBA z{Qv(y!zdW603d*vMuT851AqX+5xw&&DGp^_N2n_#!25Z)USph+vzRIHR4L5>7L(h<| zA3P_Zlg?Vpdmlo$t_$&btCS+8?7gGxy?KA%Hz^+s#u!2*%33SpoD-d+5CS9n)>_V4 zDK*A`E1XhF&N=XCtWQFWM zjyI2*~(0!$}uZbwhy#;F|OidgS8gmDSfG4RloWgTmi_fgA)Kk7>J^+ zr2qbM-v=LL4|d>9#6+0Mcf9}Hpg@s=#2}m5yeU8E+c6WJvZT)*y4wL z0HXxb1_5$$RV2U|0vZLW)qskD84i;9Mq2a$1Q3?!0fq%IR)7Hq4_O?&7%;*3kC6dV zLIO)CCLF4O6tFeH3={kJpMi-HLP8B;fG`*s!5SDrM!};N*n$Vvf55mwj_eTv00M|{ zbWmq71AqV;9n=}r03d)yqi0Y9fB<44L(lL3znB==K=s4tkH3x|Wx0Be;l(p1CX`xX zyQ%Xg_Z&Y5IJ?v zPX-3&KY#wupT<0A%HNx}nf@~T1K0YzZGEDZFD z9$>iKzH}6xAK_(V{`{M1?zQ_3r!W5b z$NZn+ADtRJjEuK#-SYPGiHeE>_J0|{fOgg`T)fE2%BrQM1u|-N|Ni}Z_wGG-@Br8u zV4$qw1rUG|D_B7w1fsR81wr*`{X!q-eJ|U^Pw5nN3KHtLIy3g%A(8f!g6JC^VVtMV z{Bb-i5xk+-bA3LUaabztbg8*s4m3=GGBPB8K`Ow0%g29_In2nHksQdM$*k>-(*?F(hxY#FS4qt z)Qxzj>;RsIo&P`jJAEV>-`stdm{6G~u7v^%JoPs*0k(T-S8~M7Art zkJ_><(V$%A;dF|0Rst>g=33t0;`}O!OA{rgN$5UC^V2xHkjIDB{jJ&D5c5~{`xws7 zlj9Q|eF-2EqURqY6XW`&j4M|&@-l;r19dAI{(T2V2qP043%D-{&SY#H*Hl%SLNcBR zi17aS&BXAZ^&cZEGvnvQMMZEtVS$jAUj~I4fA{WPU>r=CFaf9qX#0#AGZrsi{QC84AR8DB_4V~O zHa5VJ-M)SMv}x0Tih=O~)a&5j(9zKWG#O}hS65eMW##qj*VnFH3(PA(_Y@Qq+`M^H zP*Bj?+8UTXgoTA6!&i`jE>Jr7&j^J78U8Y=ssHV6VUA2-6qg3};(^Kce|i+K8vZXW z&%AE=zp6$CRUK#u{{e;JKQU2wm;(f$#Ef|=gn>BzNMj|kfkQjxDNQ^qNFf*7yLZVyWa}jy?f7Iw~(=POSSMGPcYxagq5$U)pea^nP6kvHZ1D84(C=?M z0tJEI28KH@&C1KmLy9$E0RkE426Ds0!>3Q54h&gfxNvfE0<#)WrLwXzu)qPv0i>9^ zdi5$WMFTbV_VzAVumETvP!^~iXwIxzvw(&~M@Iv7xw*Lk*}#|p2Kv5z`+#K{Fk*n> zKr0~Qjlit)?AbG5Tmrek6a#E%0Am-(K79Bv#OjqRR|4G+%=(&|n($dGMi^iMu|Xls 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 literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/cyan/iconWrite.gif b/layouts/xe_blog/images/cyan/iconWrite.gif new file mode 100644 index 0000000000000000000000000000000000000000..9319f7e9b7ea933511eb04e807a2274c893006c7 GIT binary patch literal 198 zcmZ?wbhEHb_tBT{K4vCoy?FQW&ZB1;saa>Q-oEwl>An*e4xPS~ znUc13|B3V0?=0Q8XVJP{f8N~Lc=GbEU++GBzOZ>~#?@zUEi;-jdKUcu|DORHQ2fcl z$iN`MpaYTw*~!4_tf1BxW;yRhsO!YmWmi*U->!5DHQoJauDj8_r%ll-E2f-uVZG8j lN$BK-pFLjF_6Qy*m>VI{<>uHB$)k~RTzP_p0*4}lH2|Z7S|k7f literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/green/bgBoxTypeB.gif b/layouts/xe_blog/images/green/bgBoxTypeB.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cdca75c216ac060d60978acbbe3f5a4c20ef4f2 GIT binary patch literal 205 zcmZ?wbhEHbWMzR7fe|~)a`Q_!e*Dt=l{POGT-YYwve0lcc&(D`%U%mVB z;nlY{AAf#+{r&B;uP?s-{`U6!`{!R@e*g3H>({T}et-Y)^W)cFUw{7n`SItcH{ahr z{qp?(|Njg~K=CIFn5P3GL3T2*dOc9<3XfFM&{~`QU{{EYy-Duf@`bOR?i)KOq*<(y z=xs;|I+)@#?|e_ltrcP75pNQ9`&R62DX?%-vp$#JTXoiM$6e)#iFWgEyj5hd1^_n- Bb|(M; literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/green/blogHeaderLine.gif b/layouts/xe_blog/images/green/blogHeaderLine.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb52802d89dec88b8c1aa6f855eab61cebada092 GIT binary patch literal 181 zcmV;m080NyNk%w1VYmwe0Du4hIJHSsR!brI1ONa4001li0002E3j+WE0*r)@smtvT zqnxzb7qZ^G`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`dSFXXcMj83Z!;-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!an*e6*-`C*Q{{H@ant1>J{{R30A^8LW000I6 zEC2ui015yK0009eXj)wQWe_qPoPyXzMBYZ^RnIbzWibW8Rs<6fpoIqjr_=0B0suRj C0wpd0 literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/green/iconWrite.gif b/layouts/xe_blog/images/green/iconWrite.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c9832e361dccef742cb784d1c9f2b83a8347788 GIT binary patch literal 199 zcmZ?wbhEHb=zyAFE@blNlU%x*8{`2eakGDU5fBXIO-OpcNe*bv& zUi=lh?(zyAL5=Ewj4{~2%t#h)x-NgWUg zvXg<;X@P2&L!_97)SA_gcLnL34~W&bsC#4m^#6gD01pi@-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!an+Z^fq|1j2P6YBgMmfMz|&>oo)dGDb?zO0=zCnC&(lrduBqhO?i^P`rK4pcjqL(V O3mPP08Uer9VvdUNvgiFq?THNKpj_jbAK=0l5T zOb_p#8ulwo`|GI%k6#~~H7znTC2NkG_Jh|a51l;!=k@hl_a1KCee`6l(eGQkzu(%m zY{Sk)Yj(V-k3Vi@uzgz3IU6 znVuS7fi_Ny{C;cC%&B3s-LP=>OMUB+|n}QUUFh)jSSWR)~K_T literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/red/bgBoxTypeB.gif b/layouts/xe_blog/images/red/bgBoxTypeB.gif new file mode 100644 index 0000000000000000000000000000000000000000..01406b48a1713469a83835e9850fcfb7e96543a9 GIT binary patch literal 196 zcmZ?wbhEHbWMzX literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/red/blogHeaderLine.gif b/layouts/xe_blog/images/red/blogHeaderLine.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fc563f064552e26dd5595c3707fde2bb77bd7bf GIT binary patch literal 181 zcmV;m080NyNk%w1VYmwe0Du4h?Gsv5R!brI1ONa4001li0002E3j+WE0*r)@smtvT zqnxzb7qZ^G`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`dSFXXcMj83Z!;-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!an{{R30A^8LW000I6 zEC2ui015yK0009eXj)wQWe_qPoPyXzMBYZ^RnIbzWibW8Rs<6fpoIqjr_=0B0suRp Cd?iEx literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/red/iconWrite.gif b/layouts/xe_blog/images/red/iconWrite.gif new file mode 100644 index 0000000000000000000000000000000000000000..2caff746f2ee91d040a7dc185cc9cee70fc13646 GIT binary patch literal 307 zcmZ?wbhEHb9dF e24T5uMR8^}MiC`Zes&H?0WmHXK~_FT25SKDYi4=? literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/images/white/bgBoxTypeB.gif b/layouts/xe_blog/images/white/bgBoxTypeB.gif new file mode 100644 index 0000000000000000000000000000000000000000..09f7dd59cd21149a0a456595a07cb8fccbb288c5 GIT binary patch literal 200 zcmZ?wbhEHbWMznQ`}y<7w{Ktn{rmIz^M|irKmY#y z`|saB$BrNP`t|G2pWi=!{`mX%ufKnRD!>2w_2cW;Pyhb?{qp70@83WF|NqZ`4JiI( z0SoJZNRXWjtgZ@bU7?xt+-K?ONbh~GaM~-@*`n@kjs4&KO#v@7#8f?05_gJN%x%cH k;;@u$-Sw6*@0V5kr){YCqcL4D-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!an+Z^fq|1j2P6YBgMmfMz|&>oo)dGDb?zO0=zCnC&(lrduBqhO?i^P`rK4pcjqL(V O3mPP08Uer9VvdUNvgiFq?THNKpj_jbAK=0l5T zOb_p#8ulwo`|GI%k6#~~H7znTC2NkG_Jh|a51l;!=k@hl_a1KCee`6l(eGQkzu(%m zY{Sk)Yj(V-k3Vi@uzgz3IU6 znVuS7fi_Ny{C;cC%&B3s-LP=>OMUB+|n}QUUFh)jSSWR)~K_T literal 0 HcmV?d00001 diff --git a/layouts/xe_blog/layout.html b/layouts/xe_blog/layout.html new file mode 100644 index 000000000..ea8eaf609 --- /dev/null +++ b/layouts/xe_blog/layout.html @@ -0,0 +1,155 @@ + + + + + + {@$layout_info->colorset = "white"} + + + + + + + + + + + + + + +

    + + + + + +
    +
    + + + +
    + + my profile image + + + + +
    +
    {$layout_info->profile}
    +
    + +
    + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + powered by zeroboard XE +
    + +
    + + +
    {$content}
    + +
    + +
    diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 3b3777dbd..0d82d0ae2 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -44,7 +44,7 @@ Jeong, Chan Myeong 070601~070630 .blogNotice .item .replyAndTrackback { color:#AAAAAA; font-size:.9em; } /* boardRead */ -.viewDocument { border:1px solid #e0e1db; padding:10px; border-bottom:2px solid #AAAAAA; margin-bottom:20px; } +.viewDocument { border-bottom:2px solid #AAAAAA; margin-bottom:20px; } .boardRead { margin:0 0 10px 0; } .boardRead .titleAndUser { overflow:hidden; border-bottom:1px solid #e0e1db; } @@ -113,7 +113,7 @@ Jeong, Chan Myeong 070601~070630 .replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;} .replyBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;} -.replyBox .replyOption { float:right; white-space:nowrap; margin-left:.2em;} +.replyBox .replyOption { height:20px; float:right; white-space:nowrap; margin-left:.2em;} .replyBox .replyOption img { vertical-align:middle;} .replyBox .replyContent { clear:left; } @@ -243,7 +243,7 @@ Jeong, Chan Myeong 070601~070630 .pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { margin-bottom:2px;} /* Search Form */ -.boardSearch { margin-left:auto; margin-right:auto; clear:both; text-align:center;} +.boardSearch { margin-top:30px; margin-left:auto; margin-right:auto; clear:both; text-align:center;} .boardSearch select { height:20px; } .boardSearch input { height:18px; } diff --git a/modules/board/skins/xe_board/header.html b/modules/board/skins/xe_board/header.html index 24058f412..4d3efbfe5 100644 --- a/modules/board/skins/xe_board/header.html +++ b/modules/board/skins/xe_board/header.html @@ -49,7 +49,8 @@ {$module_info->header_text} - + +
    @@ -116,3 +117,4 @@
    + diff --git a/modules/board/skins/xe_board/list.html b/modules/board/skins/xe_board/list.html index a6c1e9e17..072f98099 100644 --- a/modules/board/skins/xe_board/list.html +++ b/modules/board/skins/xe_board/list.html @@ -31,7 +31,9 @@ {$lang->cmd_manage_document} + {$lang->cmd_list} +
    @@ -54,7 +56,7 @@ - +
    diff --git a/modules/board/skins/xe_guestbook/write_form.html b/modules/board/skins/xe_guestbook/write_form.html new file mode 100644 index 000000000..c7a66a096 --- /dev/null +++ b/modules/board/skins/xe_guestbook/write_form.html @@ -0,0 +1,102 @@ + + + +
    + + + + +
    + +
    + + + + + + + + + + + +
    + + +
    + + {@ $_color = array('555555','222288','226622','2266EE','8866CC','88AA66','EE2222','EE6622','EEAA22','EEEE22') } +
    +
    + get('title_bold')=='Y')-->checked="checked" /> + +
    +
    + isNotice())-->checked="checked" id="is_notice" /> + +
    +
    + isLocked())-->checked="checked" id="lock_comment" /> + +
    + +
    + isSecret())-->checked="checked" id="is_secret" /> + +
    +
    + allowComment())-->checked="checked" id="allow_comment" /> + +
    +
    + allowTrackback())-->checked="checked" id="allow_trackback" /> + +
    + +
    + useNotify())-->checked="checked" id="notify_message" /> + +
    + +
    + + + + + + + + + + + + + +
    {$val->name} *
    + + +
    {$oDocument->getEditor()}
    + +
    + +
    + + + + +
    + +
    + + + +
    + +
    +
    + diff --git a/modules/editor/skins/default/css/editor.css b/modules/editor/skins/default/css/editor.css index 0c6d35242..cc7f0cbe0 100644 --- a/modules/editor/skins/default/css/editor.css +++ b/modules/editor/skins/default/css/editor.css @@ -38,7 +38,7 @@ .xeEditor .fileAttach .preview { padding:5px; border:1px solid #e1e1dd; width:100px; height:100px; margin-right:10px;} .xeEditor .fileAttach .preview img { width:100px; height:100px; } -.xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} +.xeEditor .fileAttach .fileListArea .fileList { background:transparent; overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} .xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} .xeEditor .fileAttach .fileUploadControl { float:left; } .xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;} From e3dcc475d3c602dce6ef791dd55b984ea5ee8663 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 13:05:32 +0000 Subject: [PATCH 119/278] =?UTF-8?q?=EA=B8=B0=EC=A1=B4=20=EB=B8=94=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EB=AA=A8=EB=93=88=EC=97=90=EC=84=9C=20=EA=B0=95?= =?UTF-8?q?=EC=A0=9C=EB=A1=9C=20=EB=A7=8C=EB=93=A4=EB=8D=98=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=EC=9D=84=20=EC=A7=81=EC=A0=91=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3560 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/layout/tpl/index.html | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/modules/layout/tpl/index.html b/modules/layout/tpl/index.html index a09e57c39..501823e0f 100644 --- a/modules/layout/tpl/index.html +++ b/modules/layout/tpl/index.html @@ -96,13 +96,7 @@ {$lang->cmd_layout_edit} - - - {$lang->cmd_delete} - -   - - + {$lang->cmd_delete} From fcc11bb319b7755e9595e9a229bd05b091a4df37 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 13:06:21 +0000 Subject: [PATCH 120/278] =?UTF-8?q?xe=5Fblog=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=EC=9D=98=20=EC=9E=98=EB=AA=BB=EB=90=9C=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=A0=95=EB=B3=B4=20xml=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3561 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_blog/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/xe_blog/conf/info.xml b/layouts/xe_blog/conf/info.xml index 0bad5550e..0eb5f4e0e 100644 --- a/layouts/xe_blog/conf/info.xml +++ b/layouts/xe_blog/conf/info.xml @@ -1,5 +1,5 @@ - + 제로보드XE 블로그 기본 스킨 ZBXEブログのデフォルトスキン Zeroboard XE博客默认皮肤 @@ -158,4 +158,4 @@ 1 - + From 4b0b9da2687c834349148f84fa97d2c1300edfef Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 13:20:13 +0000 Subject: [PATCH 121/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3562 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 8 ++++---- modules/board/skins/xe_board/view_document.html | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 0d82d0ae2..2e22f8ec5 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -58,15 +58,15 @@ Jeong, Chan Myeong 070601~070630 .boardRead .titleAndUser .userInfo .author { color:#3074a5; } .boardRead .titleAndUser .userInfo .author a { font-size:.9em; color:#3074a5; text-decoration:none; } -.boardRead .dateAndCount { clear:both; white-space:nowrap; color:#444444; margin:10px 0 30px 1px; float:left; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; width:100%;} +.boardRead .dateAndCount { clear:both; white-space:nowrap; color:#444444; margin:5px 0 0 0; float:left; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; } .boardRead .dateAndCount .date { float:right; background:url("../images/common/calendar.gif") no-repeat left top; padding-left:18px; margin-left:10px; } .boardRead .dateAndCount .readedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/read.gif") no-repeat left top; padding-left:18px; color:#4A3FD7;} .boardRead .dateAndCount .votedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/vote.gif") no-repeat left top; padding-left:18px; color:#D76A3F;} .boardRead .dateAndCount .replyAndTrackback { float:right; } -.boardRead .dateAndCount .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none; margin-left:10px;} +.boardRead .dateAndCount .replyAndTrackback .replyCount { margin-left:10px; float:left; background:#FFFFFF url(../images/common/iconReply.gif) no-repeat left 1px; padding-left:15px; } +.boardRead .dateAndCount .replyAndTrackback .trackbackCount { margin-left:10px; float:left; background:#FFFFFF url(../images/common/iconTrackback.gif) no-repeat left 1px; padding-left:15px; } +.boardRead .dateAndCount .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none; } .boardRead .dateAndCount .replyAndTrackback a:hover { text-decoration:underline; } -.boardRead .dateAndCount .replyAndTrackback a.reply { background:#FFFFFF url(../images/common/iconReply.gif) no-repeat left top; padding-left:15px; } -.boardRead .dateAndCount .replyAndTrackback a.trackback { background:#FFFFFF url(../images/common/iconTrackback.gif) no-repeat left top; padding-left:15px; } .boardRead .dateAndCount .category { float:left; margin-right:10px; } .boardRead .dateAndCount .category a { color:#555555; text-decoration:none; background:url("../images/common/category.gif") no-repeat left -1px; padding-left:18px; font-weight:bold;} .boardRead .dateAndCount .category a:hover { text-decoration:underline; } diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 08c55a2ff..1f8271834 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -43,10 +43,10 @@ From 71a1c17502eefc4d9513e7fccad80022a5e4e251 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 13:21:14 +0000 Subject: [PATCH 122/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3563 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_guestbook/css/common.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xe_guestbook/css/common.css b/modules/board/skins/xe_guestbook/css/common.css index 7df0838be..5b9790d18 100644 --- a/modules/board/skins/xe_guestbook/css/common.css +++ b/modules/board/skins/xe_guestbook/css/common.css @@ -48,7 +48,7 @@ Jeong, Chan Myeong 070601~070630 .boardRead .contentInfo .userInfo { float:left; white-space:nowrap; } .boardRead .contentInfo .userInfo .author { color:#3074a5; } -.boardRead .contentInfo .userInfo .author a { font-size:.9em; color:#3074a5; text-decoration:none; } +.boardRead .contentInfo .userInfo .author a { color:#3074a5; text-decoration:none; } .boardRead .contentInfo { clear:both; white-space:nowrap; color:#444444; float:left; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; width:100%;} .boardRead .contentInfo .date { float:right; background:url("../images/common/calendar.gif") no-repeat left top; padding-left:18px; margin-left:10px; } From 2ae5552d1b2d33169f81e1e7e506937f8f944aaf Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 21 Jan 2008 13:41:31 +0000 Subject: [PATCH 123/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3564 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 2e22f8ec5..ba0b91bb2 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -79,7 +79,7 @@ Jeong, Chan Myeong 070601~070630 .boardRead .extraVarsList td { color:#555555; border-bottom:1px solid #e0e1db; padding:4px 0 4px 10px; } .boardRead .extraVarsList td a { color:#555555; } -.boardRead .readBody { color:#555555; } +.boardRead .readBody { color:#555555; margin-top:20px; } .boardRead .readBody .contentBody .ipaddress { text-align:right; margin-top:10px; color:#bbbbbb; font-family:tahoma;} .boardRead .tag { background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 3px 2px; padding-left:25px; margin:10px 0 0 0; } From e20983c7f378a3d92e36fbbd55be6d198c2a1b87 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Mon, 21 Jan 2008 20:15:07 +0000 Subject: [PATCH 124/278] Fixed English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3565 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/rainbow_link/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/rainbow_link/conf/info.xml b/addons/rainbow_link/conf/info.xml index b2fc0b23a..0b6a48d6d 100644 --- a/addons/rainbow_link/conf/info.xml +++ b/addons/rainbow_link/conf/info.xml @@ -1,8 +1,8 @@ - + 레인보우 링크 애드온 Rainbow 链接 - Addon for rainbow links + Rainbow Link Addon Adición Enlace Arco Iris レインボーリンクアドオン Аддон для радужных ссылок From 286a1e86098d67751da73be36ccc7b4e4b45c15a Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Mon, 21 Jan 2008 20:16:57 +0000 Subject: [PATCH 125/278] Fixed English Translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3566 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/lemonpen/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/lemonpen/conf/info.xml b/addons/lemonpen/conf/info.xml index 73a21fcc5..b5bf54ef2 100644 --- a/addons/lemonpen/conf/info.xml +++ b/addons/lemonpen/conf/info.xml @@ -1,7 +1,7 @@ LemonPen XE 애드온 - LemonPen XE + LemonPen XE Addon LemonPen XE アドオン zero @@ -17,7 +17,7 @@ sid sid 레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요. - Please input sid that you got after registering site at LemonPen. + Please input sid value that you got after registering site at LemonPen. レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) From fbe2143c277380100b6a3e14422c6ca2f67f7c32 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Mon, 21 Jan 2008 20:18:17 +0000 Subject: [PATCH 126/278] Fixed typo git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3567 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/openid_delegation_id/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/openid_delegation_id/conf/info.xml b/addons/openid_delegation_id/conf/info.xml index abe71577c..fe87190b7 100644 --- a/addons/openid_delegation_id/conf/info.xml +++ b/addons/openid_delegation_id/conf/info.xml @@ -22,7 +22,7 @@ 必须在设置中输入openid provider相关值后再使用。 - This addon enables you to use your own domian name as an OpenID. + This addon enables you to use your own domain name as an OpenID. Just be sure to set the values related with openid provider before using. From 093e581e717bd7fa747aa4a5157dccec64d63813 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Mon, 21 Jan 2008 20:20:18 +0000 Subject: [PATCH 127/278] Fixed English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3568 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/point_level_icon/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/point_level_icon/conf/info.xml b/addons/point_level_icon/conf/info.xml index 154c5493e..9ccbdb58a 100644 --- a/addons/point_level_icon/conf/info.xml +++ b/addons/point_level_icon/conf/info.xml @@ -26,7 +26,7 @@ レベルアイコンは、「モジュール>ポイントシステム」で選択できます。 - This addon displays level icon in front of user name when point system is using. + This addon displays level icon in front of user name when you are using point system. You can choose level icon on Module > Point System. From 893ea828e51b82df4842b022e5a063350c1e86c8 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Mon, 21 Jan 2008 20:23:09 +0000 Subject: [PATCH 128/278] English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3569 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 413b804eb..868004eb9 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -45,7 +45,7 @@ Among other information about users, this addon displays image name, image mark, and signature. - In case of you not use this information, this stands apart from basic information so runtime should be reduced. + In case of you not using this information, this stands apart from basic information so runtime can be reduced. To expose image name, image mark, and signature, please turn on this addon. 1. Just before displaying user information, this will figure out unique key of member from the definition of "&lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt;" and replace image name and/or image mark if they exsist. 2. Just before displaying, this is gonna locate the definition of "&lt;div class="document_{unique key of document}"&gt;...&lt;/div&gt;" and insert the signature below it. From e40d5fa92139ea983be7f7c0911d050e122c5441 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 22 Jan 2008 02:00:47 +0000 Subject: [PATCH 129/278] =?UTF-8?q?=EB=B6=84=EB=A5=98=20=EC=84=A0=ED=83=9D?= =?UTF-8?q?=EC=8B=9C=20=ED=95=98=EC=9C=84=20=EB=B6=84=EB=A5=98=EA=B9=8C?= =?UTF-8?q?=EC=A7=80=20=EB=AA=A8=EB=91=90=20=ED=8F=AC=ED=95=A8=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3570 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.model.php | 41 +++++++++++--------- modules/document/queries/getDocumentList.xml | 2 +- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 7eeac7a64..a51e9c243 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -145,6 +145,14 @@ $args->start_date = $obj->start_date?$obj->start_date:null; $args->end_date = $obj->end_date?$obj->end_date:null; + // 카테고리가 선택되어 있으면 하부 카테고리까지 모두 조건에 추가 + if($args->category_srl) { + $category_list = $this->getCategoryList($args->module_srl); + $category_info = $category_list[$args->category_srl]; + $category_info->childs[] = $args->category_srl; + $args->category_srl = implode(',',$category_info->childs); + } + // 기본으로 사용할 query id 지정 (몇가지 검색 옵션에 따라 query id가 변경됨) $query_id = 'document.getDocumentList'; @@ -410,29 +418,26 @@ **/ function getCategoryList($module_srl) { // 한 페이지에서 여러번 호출될 경우를 대비해서 static var로 보관 (php4때문에 다른 방법으로 구현) - if(isset($this->category_list[$module_srl])) return $this->category_list[$module_srl]; + if(!isset($this->category_list[$module_srl])) { - // php 캐싱된 파일의 유무를 체크하여 처리 - $args->module_srl = $module_srl; - $args->sort_index = 'list_order'; - $output = executeQuery('document.getCategoryList', $args); + // 대상 모듈의 카테고리 파일을 불러옴 + $filename = sprintf("./files/cache/document_category/%s.php", $module_srl); - // 대상 모듈의 카테고리 파일을 불러옴 - $filename = sprintf("./files/cache/document_category/%s.php", $module_srl); + // 대상 파일이 없으면 카테고리 캐시 파일을 재생성 + if(!file_exists($filename)) { + $oDocumentController = &getController('document'); + if(!$oDocumentController->makeCategoryFile($module_srl)) return array(); + } - // 대상 파일이 없으면 카테고리 캐시 파일을 재생성 - if(!file_exists($filename)) { - $oDocumentController = &getController('document'); - if(!$oDocumentController->makeCategoryFile($module_srl)) return array(); + @include($filename); + + // 카테고리의 정리 + $document_category = array(); + $this->_arrangeCategory($document_category, $menu->list, 0); + $this->category_list[$module_srl] = $document_category; } - @include($filename); - - // 카테고리의 정리 - $document_category = array(); - $this->_arrangeCategory($document_category, $menu->list, 0); - - return $document_category; + return $this->category_list[$module_srl]; } /** diff --git a/modules/document/queries/getDocumentList.xml b/modules/document/queries/getDocumentList.xml index 179afd594..a7b6eacd1 100644 --- a/modules/document/queries/getDocumentList.xml +++ b/modules/document/queries/getDocumentList.xml @@ -7,7 +7,7 @@ - + From a8fad2aefc4d8f3dcd1e97a2770e28ffdc95e3bd Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 22 Jan 2008 02:08:47 +0000 Subject: [PATCH 130/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=EC=97=90=20?= =?UTF-8?q?=EA=B8=B0=EC=A1=B4=20=EB=B8=94=EB=A1=9C=EA=B7=B8/=EB=B0=A9?= =?UTF-8?q?=EB=AA=85=EB=A1=9D=20=EB=AA=A8=EB=93=88=EC=9D=B4=20=EB=82=98?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=ED=95=98=EA=B3=A0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=99=84=EB=A3=8C=EC=8B=9C=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=ED=8C=90=20=EB=AA=A8=EB=93=88=EB=A1=9C=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3571 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.admin.controller.php | 1 + modules/board/queries/getBoardList.xml | 2 +- modules/module/queries/updateModule.xml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index a7d92fe45..b92347ea0 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -141,6 +141,7 @@ $obj = $modules[$i]; $extra_vars = unserialize($obj->extra_vars); + $obj->module = 'board'; $obj->module_category_srl = $args->module_category_srl; $obj->layout_srl = $args->layout_srl; $obj->skin = $args->skin; diff --git a/modules/board/queries/getBoardList.xml b/modules/board/queries/getBoardList.xml index efc53c312..df9a3f7d5 100644 --- a/modules/board/queries/getBoardList.xml +++ b/modules/board/queries/getBoardList.xml @@ -6,7 +6,7 @@ - + diff --git a/modules/module/queries/updateModule.xml b/modules/module/queries/updateModule.xml index 1d3d8e4dc..a9c18747b 100644 --- a/modules/module/queries/updateModule.xml +++ b/modules/module/queries/updateModule.xml @@ -4,6 +4,7 @@ + From 8df241e3340da2142fb5e7379e734348a9d5a989 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 22 Jan 2008 02:45:54 +0000 Subject: [PATCH 131/278] =?UTF-8?q?xe=5Fboard=20=C3=AC=C2=8A=C2=A4=C3=AD?= =?UTF-8?q?=C2=82=C2=A8=C3=AC=C2=97=C2=90=C3=AC=C2=84=C2=9C=20=C3=AC=C2=83?= =?UTF-8?q?=C2=81=C3=AB=C2=8B=C2=A8=C3=AC=C2=9D=C2=98=20=C3=AB=C2=A1=C2=9C?= =?UTF-8?q?=C3=AA=C2=B7=C2=B8=C3=AC=C2=9D=C2=B8=C3=AC=C2=A0=C2=95=C3=AB?= =?UTF-8?q?=C2=B3=C2=B4=C3=AC=C2=99=C2=80=20=C3=AA=C2=B2=C2=8C=C3=AC=C2=8B?= =?UTF-8?q?=C2=9C=C3=AD=C2=8C=C2=90=20=C3=AC=C2=84=C2=A4=C3=AC=C2=A0=C2=95?= =?UTF-8?q?=20=C3=AB=C2=B2=C2=84=C3=AD=C2=8A=C2=BC=C3=AC=C2=9D=C2=84=20?= =?UTF-8?q?=C3=AC=C2=8A=C2=A4=C3=AD=C2=82=C2=A8=C3=AC=C2=97=C2=90=C3=AC?= =?UTF-8?q?=C2=84=C2=9C=20=C3=AC=C2=A1=C2=B0=C3=AC=C2=A0=C2=88=C3=AD=C2=95?= =?UTF-8?q?=C2=A0=20=C3=AC=C2=88=C2=98=20=C3=AC=C2=9E=C2=88=C3=AB=C2=8F?= =?UTF-8?q?=C2=84=C3=AB=C2=A1=C2=9D=20=C3=AA=C2=B8=C2=B0=C3=AB=C2=8A=C2=A5?= =?UTF-8?q?=20=C3=AC=C2=B6=C2=94=C3=AA=C2=B0=C2=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3572 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 10 +++++----- modules/board/skins/xe_board/header.html | 14 ++++++------- modules/board/skins/xe_board/skin.xml | 20 +++++++++++++++++++ .../board/skins/xe_guestbook/css/common.css | 8 ++++---- modules/comment/comment.item.php | 2 +- modules/document/document.item.php | 2 +- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index ba0b91bb2..0b4157f3b 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -96,7 +96,7 @@ Jeong, Chan Myeong 070601~070630 .trackbackBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db;;margin-top:.5em; } -.trackbackBox .trackbackUrl { color:#1F3DAE; font-size:.9em; background:url("../images/common/iconTrackback.gif") no-repeat left top; padding-left:18px; margin:0 0 3px 10px; } +.trackbackBox .trackbackUrl { color:#1F3DAE; font-size:.9em; background:url("../images/common/iconTrackback.gif") no-repeat left top; padding-left:18px; margin:0 0 3px 10px; height:18px;} .trackbackBox .trackbackItem { background-color:#F3F3F3; padding:.6em .8em .6em .6em; line-height:1.25em; border-top:1px dotted #EEEEEE; list-style:none;} .trackbackBox p { display:inline; margin-bottom:1em;} .trackbackBox a { color:#666666; text-decoration:none;} @@ -253,10 +253,10 @@ Jeong, Chan Myeong 070601~070630 .boardWrite { border:1px solid #e0e1db; padding-bottom:10px;} .boardWrite fieldset { border:none; } .boardWrite .userNameAndPw { margin:10px 10px 0 10px; } -.boardWrite .userNameAndPw .userName {width:80px; margin-right:10px; } -.boardWrite .userNameAndPw .userPw {width:80px; margin-right:10px; } -.boardWrite .userNameAndPw .emailAddress {width:80px; margin-right:10px; } -.boardWrite .userNameAndPw .homePage {width:80px; margin-right:10px; } +.boardWrite .userNameAndPw .userName {width:60px; margin-right:10px; } +.boardWrite .userNameAndPw .userPw {width:60px; margin-right:10px; } +.boardWrite .userNameAndPw .emailAddress {width:60px; margin-right:10px; } +.boardWrite .userNameAndPw .homePage {width:60px; margin-right:10px; } .boardWrite .title { margin-top:5px; } .boardWrite .title .category { margin-left:10px; } diff --git a/modules/board/skins/xe_board/header.html b/modules/board/skins/xe_board/header.html index 4d3efbfe5..3b27a5c38 100644 --- a/modules/board/skins/xe_board/header.html +++ b/modules/board/skins/xe_board/header.html @@ -50,7 +50,6 @@ {$module_info->header_text} -
    @@ -65,10 +64,11 @@ +
    - +
    {$lang->document_count} {number_format($total_count)}
    @@ -79,23 +79,23 @@ - +
  • {$lang->cmd_setup}
  • - +
  • {$lang->cmd_management}
  • - - + +
  • {$lang->cmd_view_member_info}
  • {$lang->cmd_logout}
  • - +
  • {$lang->cmd_signup}
  • {$lang->cmd_login}
  • diff --git a/modules/board/skins/xe_board/skin.xml b/modules/board/skins/xe_board/skin.xml index 046201e84..0f15c7fbe 100644 --- a/modules/board/skins/xe_board/skin.xml +++ b/modules/board/skins/xe_board/skin.xml @@ -116,6 +116,26 @@ asc desc + + 로그인 정보 출력 + 登陆表单 + ログイン情報表示 + Display Login Info + Muestra la información de la conección + Y + N + + + + 설정 표시 + 设置表单 + ログイン設定 + Display Setup + Muestra la información de la Configuración + Y + N + + 게시판 제목 掲示板タイトル diff --git a/modules/board/skins/xe_guestbook/css/common.css b/modules/board/skins/xe_guestbook/css/common.css index 5b9790d18..75353aead 100644 --- a/modules/board/skins/xe_guestbook/css/common.css +++ b/modules/board/skins/xe_guestbook/css/common.css @@ -228,10 +228,10 @@ Jeong, Chan Myeong 070601~070630 .boardWrite { border:1px solid #e0e1db; padding-bottom:10px;} .boardWrite fieldset { border:none; } .boardWrite .userNameAndPw { margin:10px 10px 0 10px; } -.boardWrite .userNameAndPw .userName {width:80px; margin-right:10px; } -.boardWrite .userNameAndPw .userPw {width:80px; margin-right:10px; } -.boardWrite .userNameAndPw .emailAddress {width:80px; margin-right:10px; } -.boardWrite .userNameAndPw .homePage {width:80px; margin-right:10px; } +.boardWrite .userNameAndPw .userName {width:60px; margin-right:10px; } +.boardWrite .userNameAndPw .userPw {width:60px; margin-right:10px; } +.boardWrite .userNameAndPw .emailAddress {width:60px; margin-right:10px; } +.boardWrite .userNameAndPw .homePage {width:60px; margin-right:10px; } .boardWrite .title { margin-top:5px; } .boardWrite .title .category { margin-left:10px; } diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 4ad93b61f..3bd5be65f 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -165,7 +165,7 @@ // 이 댓글을... 팝업메뉴를 출력할 경우 if($add_popup_menu) { $content = sprintf( - '%s
    %s
    ', + '%s
    %s
    ', $content, $this->comment_srl, Context::getLang('cmd_comment_do') ); diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 4d6649d47..fe083c07f 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -252,7 +252,7 @@ // 이 게시글을... 팝업메뉴를 출력할 경우 if($add_popup_menu) { $content = sprintf( - '%s
    %s
    ', + '%s
    %s
    ', $content, $this->document_srl, Context::getLang('cmd_document_do') ); From 972c31153d1f9d9630280cb56e6137934b2a5220 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 22 Jan 2008 02:53:35 +0000 Subject: [PATCH 132/278] =?UTF-8?q?=EB=B8=94=EB=A1=9C=EA=B7=B8/=EB=B0=A9?= =?UTF-8?q?=EB=AA=85=EB=A1=9D=20=EB=AA=A8=EB=93=88=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3573 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/blog/blog.admin.controller.php | 468 -------------- modules/blog/blog.admin.model.php | 65 -- modules/blog/blog.admin.view.php | 227 ------- modules/blog/blog.class.php | 90 --- modules/blog/blog.controller.php | 221 ------- modules/blog/blog.model.php | 17 - modules/blog/blog.view.php | 385 ------------ modules/blog/conf/info.xml | 47 -- modules/blog/conf/module.xml | 105 ---- modules/blog/lang/en.lang.php | 33 - modules/blog/lang/es.lang.php | 33 - modules/blog/lang/jp.lang.php | 33 - modules/blog/lang/ko.lang.php | 33 - modules/blog/lang/ru.lang.php | 33 - modules/blog/lang/zh-CN.lang.php | 33 - modules/blog/queries/deleteCategories.xml | 8 - modules/blog/queries/deleteCategory.xml | 8 - modules/blog/queries/getAllBlog.xml | 14 - modules/blog/queries/getBlogCategories.xml | 14 - modules/blog/queries/getBlogList.xml | 24 - modules/blog/queries/getCategory.xml | 11 - modules/blog/queries/getCategoryInfo.xml | 11 - .../blog/queries/getChildCategoryCount.xml | 11 - modules/blog/queries/insertCategory.xml | 15 - modules/blog/queries/updateCategory.xml | 13 - modules/blog/queries/updateCategoryParent.xml | 12 - modules/blog/schemas/blog_category.xml | 10 - modules/blog/skins/xe_blog/comment.html | 88 --- modules/blog/skins/xe_blog/comment_form.html | 68 -- .../blog/skins/xe_blog/css/blog_tree_menu.css | 88 --- modules/blog/skins/xe_blog/css/common.css | 293 --------- modules/blog/skins/xe_blog/css/cyan.css | 40 -- modules/blog/skins/xe_blog/css/green.css | 41 -- modules/blog/skins/xe_blog/css/layout.css | 81 --- modules/blog/skins/xe_blog/css/purple.css | 40 -- modules/blog/skins/xe_blog/css/red.css | 40 -- modules/blog/skins/xe_blog/css/white.css | 40 -- .../skins/xe_blog/delete_comment_form.html | 24 - modules/blog/skins/xe_blog/delete_form.html | 23 - .../skins/xe_blog/delete_trackback_form.html | 25 - .../blog/skins/xe_blog/extra_var_form.html | 65 -- .../blog/skins/xe_blog/extra_var_value.html | 63 -- .../skins/xe_blog/filter/delete_comment.xml | 18 - .../skins/xe_blog/filter/delete_document.xml | 16 - .../skins/xe_blog/filter/delete_trackback.xml | 18 - .../skins/xe_blog/filter/input_password.xml | 16 - modules/blog/skins/xe_blog/filter/insert.xml | 17 - .../skins/xe_blog/filter/insert_comment.xml | 30 - modules/blog/skins/xe_blog/footer.html | 0 modules/blog/skins/xe_blog/header.html | 0 .../images/common/bgBlogEditorOption.gif | Bin 2506 -> 0 bytes .../images/common/bgEditorFileList.gif | Bin 60 -> 0 bytes .../blog/skins/xe_blog/images/common/bgH3.gif | Bin 2778 -> 0 bytes .../skins/xe_blog/images/common/blank.gif | Bin 43 -> 0 bytes .../xe_blog/images/common/blogHeaderVr.gif | Bin 44 -> 0 bytes .../xe_blog/images/common/bottomGotoFirst.gif | Bin 51 -> 0 bytes .../xe_blog/images/common/bottomGotoLast.gif | Bin 51 -> 0 bytes .../images/common/bullet_3x3_d8d8d8.gif | Bin 44 -> 0 bytes .../xe_blog/images/common/buttonAscending.gif | Bin 46 -> 0 bytes .../xe_blog/images/common/buttonClose.gif | Bin 58 -> 0 bytes .../xe_blog/images/common/buttonDeleteX.gif | Bin 61 -> 0 bytes .../images/common/buttonDescending.gif | Bin 46 -> 0 bytes .../xe_blog/images/common/buttonHelp.gif | Bin 101 -> 0 bytes .../images/common/buttonTextAreaDrag.gif | Bin 68 -> 0 bytes .../images/common/buttonToggleReply.gif | Bin 70 -> 0 bytes .../images/common/buttonTypeInput24.gif | Bin 419 -> 0 bytes .../xe_blog/images/common/document_menu.gif | Bin 216 -> 0 bytes .../xe_blog/images/common/find_button.gif | Bin 1187 -> 0 bytes .../skins/xe_blog/images/common/iconAdmin.gif | Bin 88 -> 0 bytes .../xe_blog/images/common/iconArrowD8.gif | Bin 46 -> 0 bytes .../skins/xe_blog/images/common/iconCheck.gif | Bin 321 -> 0 bytes .../xe_blog/images/common/iconFolderClose.gif | Bin 336 -> 0 bytes .../skins/xe_blog/images/common/iconH3.gif | Bin 58 -> 0 bytes .../skins/xe_blog/images/common/iconList.gif | Bin 565 -> 0 bytes .../xe_blog/images/common/iconNotice.gif | Bin 452 -> 0 bytes .../skins/xe_blog/images/common/iconReply.gif | Bin 106 -> 0 bytes .../xe_blog/images/common/iconReplyArrow.gif | Bin 54 -> 0 bytes .../skins/xe_blog/images/common/iconRss.gif | Bin 988 -> 0 bytes .../skins/xe_blog/images/common/iconSetup.gif | Bin 155 -> 0 bytes .../skins/xe_blog/images/common/iconTag.gif | Bin 205 -> 0 bytes .../xe_blog/images/common/iconTrackback.gif | Bin 101 -> 0 bytes .../skins/xe_blog/images/common/iconWrite.gif | Bin 525 -> 0 bytes .../skins/xe_blog/images/common/lineH3.gif | Bin 45 -> 0 bytes .../images/common/lineTextAreaDrag.gif | Bin 46 -> 0 bytes .../images/common/line_1x10_e0e0e0.gif | Bin 44 -> 0 bytes .../xe_blog/images/common/poweredbyzbxe.png | Bin 5080 -> 0 bytes .../xe_blog/images/common/typeGallery.gif | Bin 149 -> 0 bytes .../skins/xe_blog/images/common/typeList.gif | Bin 166 -> 0 bytes .../xe_blog/images/common/typeWebzine.gif | Bin 218 -> 0 bytes .../xe_blog/images/cyan/bgBlogListTh.gif | Bin 204 -> 0 bytes .../skins/xe_blog/images/cyan/bgBoxTypeB.gif | Bin 207 -> 0 bytes .../xe_blog/images/cyan/blogHeaderLine.gif | Bin 181 -> 0 bytes .../xe_blog/images/cyan/blogHeaderVr.gif | Bin 44 -> 0 bytes .../xe_blog/images/cyan/buttonModifyE.gif | Bin 264 -> 0 bytes .../skins/xe_blog/images/cyan/buttonReply.gif | Bin 251 -> 0 bytes .../xe_blog/images/cyan/buttonTypeInput24.gif | Bin 262 -> 0 bytes .../skins/xe_blog/images/cyan/iconArticle.gif | Bin 214 -> 0 bytes .../skins/xe_blog/images/cyan/iconFile.gif | Bin 145 -> 0 bytes .../skins/xe_blog/images/cyan/iconList.gif | Bin 210 -> 0 bytes .../skins/xe_blog/images/cyan/iconMyInfo.gif | Bin 91 -> 0 bytes .../skins/xe_blog/images/cyan/iconWrite.gif | Bin 198 -> 0 bytes .../xe_blog/images/cyan/lineBlogListTh.gif | Bin 3028 -> 0 bytes .../xe_blog/images/green/bgBlogListTh.gif | Bin 197 -> 0 bytes .../skins/xe_blog/images/green/bgBoxTypeB.gif | Bin 205 -> 0 bytes .../xe_blog/images/green/blogHeaderLine.gif | Bin 181 -> 0 bytes .../xe_blog/images/green/blogHeaderVr.gif | Bin 44 -> 0 bytes .../xe_blog/images/green/buttonModifyE.gif | Bin 264 -> 0 bytes .../xe_blog/images/green/buttonReply.gif | Bin 251 -> 0 bytes .../images/green/buttonTypeInput24.gif | Bin 262 -> 0 bytes .../xe_blog/images/green/iconArticle.gif | Bin 211 -> 0 bytes .../skins/xe_blog/images/green/iconFile.gif | Bin 146 -> 0 bytes .../skins/xe_blog/images/green/iconList.gif | Bin 565 -> 0 bytes .../skins/xe_blog/images/green/iconMyInfo.gif | Bin 96 -> 0 bytes .../skins/xe_blog/images/green/iconWrite.gif | Bin 199 -> 0 bytes .../xe_blog/images/green/lineBlogListTh.gif | Bin 2962 -> 0 bytes .../xe_blog/images/purple/bgBlogListTh.gif | Bin 197 -> 0 bytes .../xe_blog/images/purple/bgBoxTypeB.gif | Bin 197 -> 0 bytes .../xe_blog/images/purple/blogHeaderLine.gif | Bin 181 -> 0 bytes .../xe_blog/images/purple/blogHeaderVr.gif | Bin 44 -> 0 bytes .../xe_blog/images/purple/buttonModifyE.gif | Bin 264 -> 0 bytes .../xe_blog/images/purple/buttonReply.gif | Bin 400 -> 0 bytes .../images/purple/buttonTypeInput24.gif | Bin 419 -> 0 bytes .../xe_blog/images/purple/iconArticle.gif | Bin 219 -> 0 bytes .../skins/xe_blog/images/purple/iconFile.gif | Bin 146 -> 0 bytes .../skins/xe_blog/images/purple/iconList.gif | Bin 565 -> 0 bytes .../xe_blog/images/purple/iconMyInfo.gif | Bin 125 -> 0 bytes .../skins/xe_blog/images/purple/iconWrite.gif | Bin 525 -> 0 bytes .../xe_blog/images/purple/lineBlogListTh.gif | Bin 2442 -> 0 bytes .../skins/xe_blog/images/red/bgBlogListTh.gif | Bin 197 -> 0 bytes .../skins/xe_blog/images/red/bgBoxTypeB.gif | Bin 196 -> 0 bytes .../skins/xe_blog/images/red/bgBoxTypeB.gif.1 | Bin 196 -> 0 bytes .../xe_blog/images/red/blogHeaderLine.gif | Bin 181 -> 0 bytes .../skins/xe_blog/images/red/blogHeaderVr.gif | Bin 44 -> 0 bytes .../xe_blog/images/red/buttonModifyE.gif | Bin 264 -> 0 bytes .../skins/xe_blog/images/red/buttonReply.gif | Bin 249 -> 0 bytes .../xe_blog/images/red/buttonTypeInput24.gif | Bin 265 -> 0 bytes .../skins/xe_blog/images/red/iconArticle.gif | Bin 213 -> 0 bytes .../skins/xe_blog/images/red/iconFile.gif | Bin 146 -> 0 bytes .../skins/xe_blog/images/red/iconList.gif | Bin 565 -> 0 bytes .../skins/xe_blog/images/red/iconMyInfo.gif | Bin 96 -> 0 bytes .../skins/xe_blog/images/red/iconWrite.gif | Bin 307 -> 0 bytes .../xe_blog/images/red/lineBlogListTh.gif | Bin 2489 -> 0 bytes .../skins/xe_blog/images/tree_menu/folder.gif | Bin 372 -> 0 bytes .../skins/xe_blog/images/tree_menu/join.gif | Bin 70 -> 0 bytes .../xe_blog/images/tree_menu/joinbottom.gif | Bin 66 -> 0 bytes .../skins/xe_blog/images/tree_menu/line.gif | Bin 68 -> 0 bytes .../skins/xe_blog/images/tree_menu/minus.gif | Bin 90 -> 0 bytes .../xe_blog/images/tree_menu/minusbottom.gif | Bin 85 -> 0 bytes .../skins/xe_blog/images/tree_menu/page.gif | Bin 582 -> 0 bytes .../xe_blog/images/tree_menu/page_folder.gif | Bin 622 -> 0 bytes .../skins/xe_blog/images/tree_menu/plus.gif | Bin 91 -> 0 bytes .../xe_blog/images/tree_menu/plusbottom.gif | Bin 88 -> 0 bytes .../xe_blog/images/white/bgBlogListTh.gif | Bin 197 -> 0 bytes .../skins/xe_blog/images/white/bgBoxTypeB.gif | Bin 200 -> 0 bytes .../xe_blog/images/white/blogHeaderLine.gif | Bin 181 -> 0 bytes .../xe_blog/images/white/blogHeaderVr.gif | Bin 44 -> 0 bytes .../xe_blog/images/white/buttonModifyE.gif | Bin 407 -> 0 bytes .../xe_blog/images/white/buttonReply.gif | Bin 400 -> 0 bytes .../images/white/buttonTypeInput24.gif | Bin 419 -> 0 bytes .../xe_blog/images/white/iconArticle.gif | Bin 219 -> 0 bytes .../skins/xe_blog/images/white/iconFile.gif | Bin 146 -> 0 bytes .../skins/xe_blog/images/white/iconList.gif | Bin 101 -> 0 bytes .../skins/xe_blog/images/white/iconMyInfo.gif | Bin 125 -> 0 bytes .../skins/xe_blog/images/white/iconWrite.gif | Bin 525 -> 0 bytes .../xe_blog/images/white/lineBlogListTh.gif | Bin 2763 -> 0 bytes .../skins/xe_blog/input_password_form.html | 26 - modules/blog/skins/xe_blog/js/blog.js | 105 ---- .../blog/skins/xe_blog/js/blog_tree_menu.js | 277 --------- modules/blog/skins/xe_blog/layout.html | 172 ------ modules/blog/skins/xe_blog/list.html | 33 - modules/blog/skins/xe_blog/message.html | 11 - .../blog/skins/xe_blog/screenshot/cyan.gif | Bin 21501 -> 0 bytes .../blog/skins/xe_blog/screenshot/green.gif | Bin 21437 -> 0 bytes .../blog/skins/xe_blog/screenshot/purple.gif | Bin 21063 -> 0 bytes modules/blog/skins/xe_blog/screenshot/red.gif | Bin 21400 -> 0 bytes .../blog/skins/xe_blog/screenshot/white.gif | Bin 21338 -> 0 bytes modules/blog/skins/xe_blog/skin.xml | 158 ----- modules/blog/skins/xe_blog/style.list.html | 74 --- modules/blog/skins/xe_blog/trackback.html | 24 - modules/blog/skins/xe_blog/view_document.html | 190 ------ modules/blog/skins/xe_blog/write_form.html | 112 ---- modules/blog/tpl/addition_setup.html | 3 - modules/blog/tpl/blog_delete.html | 33 - modules/blog/tpl/blog_info.html | 98 --- modules/blog/tpl/blog_insert.html | 172 ------ modules/blog/tpl/category_info.html | 48 -- modules/blog/tpl/category_list.html | 46 -- modules/blog/tpl/css/blog.css | 11 - modules/blog/tpl/filter/delete_blog.xml | 10 - modules/blog/tpl/filter/delete_category.xml | 11 - modules/blog/tpl/filter/insert_blog.xml | 149 ----- modules/blog/tpl/filter/insert_category.xml | 23 - modules/blog/tpl/filter/insert_grant.xml | 11 - .../tpl/filter/manage_checked_document.xml | 7 - modules/blog/tpl/filter/move_category.xml | 10 - modules/blog/tpl/grant_list.html | 43 -- modules/blog/tpl/header.html | 44 -- modules/blog/tpl/index.html | 132 ---- modules/blog/tpl/js/blog_admin.js | 283 --------- modules/blog/tpl/js/blog_tree_menu.js | 584 ------------------ modules/blog/tpl/layout_setup.html | 12 - modules/blog/tpl/skin_info.html | 135 ---- modules/blog/tpl/top_refresh.html | 4 - modules/guestbook/conf/info.xml | 22 - modules/guestbook/conf/module.xml | 47 -- .../guestbook/guestbook.admin.controller.php | 247 -------- modules/guestbook/guestbook.admin.view.php | 189 ------ modules/guestbook/guestbook.class.php | 64 -- modules/guestbook/guestbook.controller.php | 246 -------- modules/guestbook/guestbook.view.php | 328 ---------- modules/guestbook/lang/en.lang.php | 16 - modules/guestbook/lang/es.lang.php | 16 - modules/guestbook/lang/jp.lang.php | 16 - modules/guestbook/lang/ko.lang.php | 16 - modules/guestbook/lang/ru.lang.php | 16 - modules/guestbook/lang/zh-CN.lang.php | 16 - .../guestbook/queries/getGuestbookList.xml | 24 - modules/guestbook/skins/default/comment.html | 66 -- .../guestbook/skins/default/comment_form.html | 105 ---- .../guestbook/skins/default/css/guestbook.css | 105 ---- .../skins/default/delete_comment_form.html | 25 - .../guestbook/skins/default/delete_form.html | 23 - .../skins/default/filter/delete_comment.xml | 18 - .../skins/default/filter/delete_document.xml | 16 - .../skins/default/filter/input_password.xml | 15 - .../guestbook/skins/default/filter/insert.xml | 17 - .../skins/default/filter/insert_comment.xml | 28 - modules/guestbook/skins/default/footer.html | 1 - modules/guestbook/skins/default/header.html | 58 -- .../guestbook/skins/default/images/bgH3.gif | Bin 2778 -> 0 bytes .../skins/default/images/bottomGotoFirst.gif | Bin 51 -> 0 bytes .../skins/default/images/bottomGotoLast.gif | Bin 51 -> 0 bytes .../skins/default/images/buttonDeleteX.gif | Bin 61 -> 0 bytes .../skins/default/images/buttonHelp.gif | Bin 101 -> 0 bytes .../skins/default/images/buttonModifyE.gif | Bin 407 -> 0 bytes .../skins/default/images/buttonReply.gif | Bin 400 -> 0 bytes .../skins/default/images/iconAdmin.gif | Bin 88 -> 0 bytes .../skins/default/images/iconArrowD8.gif | Bin 46 -> 0 bytes .../skins/default/images/iconRss.gif | Bin 988 -> 0 bytes .../skins/default/images/iconSetup.gif | Bin 155 -> 0 bytes .../guestbook/skins/default/images/lineH3.gif | Bin 45 -> 0 bytes .../skins/default/images/line_1x10_e0e0e0.gif | Bin 44 -> 0 bytes .../skins/default/input_password_form.html | 27 - .../guestbook/skins/default/js/guestbook.js | 67 -- modules/guestbook/skins/default/list.html | 129 ---- modules/guestbook/skins/default/message.html | 11 - modules/guestbook/skins/default/skin.xml | 39 -- .../guestbook/skins/default/write_form.html | 66 -- .../guestbook/tpl/filter/delete_guestbook.xml | 10 - modules/guestbook/tpl/filter/insert_grant.xml | 11 - .../guestbook/tpl/filter/insert_guestbook.xml | 33 - modules/guestbook/tpl/grant_list.html | 38 -- modules/guestbook/tpl/guestbook_delete.html | 35 -- modules/guestbook/tpl/guestbook_info.html | 70 --- modules/guestbook/tpl/guestbook_insert.html | 127 ---- modules/guestbook/tpl/header.html | 25 - modules/guestbook/tpl/index.html | 129 ---- modules/guestbook/tpl/js/guestbook_admin.js | 79 --- modules/guestbook/tpl/skin_info.html | 116 ---- modules/guestbook/tpl/top_refresh.html | 3 - 260 files changed, 8914 deletions(-) delete mode 100644 modules/blog/blog.admin.controller.php delete mode 100644 modules/blog/blog.admin.model.php delete mode 100644 modules/blog/blog.admin.view.php delete mode 100644 modules/blog/blog.class.php delete mode 100644 modules/blog/blog.controller.php delete mode 100644 modules/blog/blog.model.php delete mode 100644 modules/blog/blog.view.php delete mode 100644 modules/blog/conf/info.xml delete mode 100644 modules/blog/conf/module.xml delete mode 100644 modules/blog/lang/en.lang.php delete mode 100644 modules/blog/lang/es.lang.php delete mode 100644 modules/blog/lang/jp.lang.php delete mode 100644 modules/blog/lang/ko.lang.php delete mode 100644 modules/blog/lang/ru.lang.php delete mode 100644 modules/blog/lang/zh-CN.lang.php delete mode 100644 modules/blog/queries/deleteCategories.xml delete mode 100644 modules/blog/queries/deleteCategory.xml delete mode 100644 modules/blog/queries/getAllBlog.xml delete mode 100644 modules/blog/queries/getBlogCategories.xml delete mode 100644 modules/blog/queries/getBlogList.xml delete mode 100644 modules/blog/queries/getCategory.xml delete mode 100644 modules/blog/queries/getCategoryInfo.xml delete mode 100644 modules/blog/queries/getChildCategoryCount.xml delete mode 100644 modules/blog/queries/insertCategory.xml delete mode 100644 modules/blog/queries/updateCategory.xml delete mode 100644 modules/blog/queries/updateCategoryParent.xml delete mode 100644 modules/blog/schemas/blog_category.xml delete mode 100644 modules/blog/skins/xe_blog/comment.html delete mode 100644 modules/blog/skins/xe_blog/comment_form.html delete mode 100644 modules/blog/skins/xe_blog/css/blog_tree_menu.css delete mode 100644 modules/blog/skins/xe_blog/css/common.css delete mode 100644 modules/blog/skins/xe_blog/css/cyan.css delete mode 100644 modules/blog/skins/xe_blog/css/green.css delete mode 100644 modules/blog/skins/xe_blog/css/layout.css delete mode 100644 modules/blog/skins/xe_blog/css/purple.css delete mode 100644 modules/blog/skins/xe_blog/css/red.css delete mode 100644 modules/blog/skins/xe_blog/css/white.css delete mode 100644 modules/blog/skins/xe_blog/delete_comment_form.html delete mode 100644 modules/blog/skins/xe_blog/delete_form.html delete mode 100644 modules/blog/skins/xe_blog/delete_trackback_form.html delete mode 100644 modules/blog/skins/xe_blog/extra_var_form.html delete mode 100644 modules/blog/skins/xe_blog/extra_var_value.html delete mode 100644 modules/blog/skins/xe_blog/filter/delete_comment.xml delete mode 100644 modules/blog/skins/xe_blog/filter/delete_document.xml delete mode 100644 modules/blog/skins/xe_blog/filter/delete_trackback.xml delete mode 100644 modules/blog/skins/xe_blog/filter/input_password.xml delete mode 100644 modules/blog/skins/xe_blog/filter/insert.xml delete mode 100644 modules/blog/skins/xe_blog/filter/insert_comment.xml delete mode 100644 modules/blog/skins/xe_blog/footer.html delete mode 100644 modules/blog/skins/xe_blog/header.html delete mode 100644 modules/blog/skins/xe_blog/images/common/bgBlogEditorOption.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/bgEditorFileList.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/bgH3.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/blank.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/blogHeaderVr.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/bottomGotoFirst.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/bottomGotoLast.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/bullet_3x3_d8d8d8.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonAscending.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonClose.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonDeleteX.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonDescending.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonHelp.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonTextAreaDrag.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonToggleReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/buttonTypeInput24.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/document_menu.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/find_button.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconAdmin.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconArrowD8.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconCheck.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconFolderClose.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconH3.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconList.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconNotice.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconReplyArrow.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconRss.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconSetup.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconTag.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconTrackback.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/iconWrite.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/lineH3.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/lineTextAreaDrag.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/line_1x10_e0e0e0.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/poweredbyzbxe.png delete mode 100644 modules/blog/skins/xe_blog/images/common/typeGallery.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/typeList.gif delete mode 100644 modules/blog/skins/xe_blog/images/common/typeWebzine.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/bgBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/bgBoxTypeB.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/blogHeaderLine.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/blogHeaderVr.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/buttonModifyE.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/buttonReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/buttonTypeInput24.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/iconArticle.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/iconFile.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/iconList.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/iconMyInfo.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/iconWrite.gif delete mode 100644 modules/blog/skins/xe_blog/images/cyan/lineBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/bgBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/bgBoxTypeB.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/blogHeaderLine.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/blogHeaderVr.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/buttonModifyE.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/buttonReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/buttonTypeInput24.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/iconArticle.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/iconFile.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/iconList.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/iconMyInfo.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/iconWrite.gif delete mode 100644 modules/blog/skins/xe_blog/images/green/lineBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/bgBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/bgBoxTypeB.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/blogHeaderLine.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/blogHeaderVr.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/buttonModifyE.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/buttonReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/buttonTypeInput24.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/iconArticle.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/iconFile.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/iconList.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/iconMyInfo.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/iconWrite.gif delete mode 100644 modules/blog/skins/xe_blog/images/purple/lineBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/bgBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/bgBoxTypeB.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/bgBoxTypeB.gif.1 delete mode 100644 modules/blog/skins/xe_blog/images/red/blogHeaderLine.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/blogHeaderVr.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/buttonModifyE.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/buttonReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/buttonTypeInput24.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/iconArticle.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/iconFile.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/iconList.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/iconMyInfo.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/iconWrite.gif delete mode 100644 modules/blog/skins/xe_blog/images/red/lineBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/folder.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/join.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/joinbottom.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/line.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/minus.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/minusbottom.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/page.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/page_folder.gif delete mode 100755 modules/blog/skins/xe_blog/images/tree_menu/plus.gif delete mode 100644 modules/blog/skins/xe_blog/images/tree_menu/plusbottom.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/bgBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/bgBoxTypeB.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/blogHeaderLine.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/blogHeaderVr.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/buttonModifyE.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/buttonReply.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/buttonTypeInput24.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/iconArticle.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/iconFile.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/iconList.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/iconMyInfo.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/iconWrite.gif delete mode 100644 modules/blog/skins/xe_blog/images/white/lineBlogListTh.gif delete mode 100644 modules/blog/skins/xe_blog/input_password_form.html delete mode 100644 modules/blog/skins/xe_blog/js/blog.js delete mode 100644 modules/blog/skins/xe_blog/js/blog_tree_menu.js delete mode 100644 modules/blog/skins/xe_blog/layout.html delete mode 100644 modules/blog/skins/xe_blog/list.html delete mode 100644 modules/blog/skins/xe_blog/message.html delete mode 100644 modules/blog/skins/xe_blog/screenshot/cyan.gif delete mode 100644 modules/blog/skins/xe_blog/screenshot/green.gif delete mode 100644 modules/blog/skins/xe_blog/screenshot/purple.gif delete mode 100644 modules/blog/skins/xe_blog/screenshot/red.gif delete mode 100644 modules/blog/skins/xe_blog/screenshot/white.gif delete mode 100644 modules/blog/skins/xe_blog/skin.xml delete mode 100644 modules/blog/skins/xe_blog/style.list.html delete mode 100644 modules/blog/skins/xe_blog/trackback.html delete mode 100644 modules/blog/skins/xe_blog/view_document.html delete mode 100644 modules/blog/skins/xe_blog/write_form.html delete mode 100644 modules/blog/tpl/addition_setup.html delete mode 100644 modules/blog/tpl/blog_delete.html delete mode 100644 modules/blog/tpl/blog_info.html delete mode 100644 modules/blog/tpl/blog_insert.html delete mode 100644 modules/blog/tpl/category_info.html delete mode 100644 modules/blog/tpl/category_list.html delete mode 100644 modules/blog/tpl/css/blog.css delete mode 100644 modules/blog/tpl/filter/delete_blog.xml delete mode 100644 modules/blog/tpl/filter/delete_category.xml delete mode 100644 modules/blog/tpl/filter/insert_blog.xml delete mode 100644 modules/blog/tpl/filter/insert_category.xml delete mode 100644 modules/blog/tpl/filter/insert_grant.xml delete mode 100644 modules/blog/tpl/filter/manage_checked_document.xml delete mode 100644 modules/blog/tpl/filter/move_category.xml delete mode 100644 modules/blog/tpl/grant_list.html delete mode 100644 modules/blog/tpl/header.html delete mode 100644 modules/blog/tpl/index.html delete mode 100644 modules/blog/tpl/js/blog_admin.js delete mode 100644 modules/blog/tpl/js/blog_tree_menu.js delete mode 100644 modules/blog/tpl/layout_setup.html delete mode 100644 modules/blog/tpl/skin_info.html delete mode 100644 modules/blog/tpl/top_refresh.html delete mode 100644 modules/guestbook/conf/info.xml delete mode 100644 modules/guestbook/conf/module.xml delete mode 100644 modules/guestbook/guestbook.admin.controller.php delete mode 100644 modules/guestbook/guestbook.admin.view.php delete mode 100644 modules/guestbook/guestbook.class.php delete mode 100644 modules/guestbook/guestbook.controller.php delete mode 100644 modules/guestbook/guestbook.view.php delete mode 100644 modules/guestbook/lang/en.lang.php delete mode 100644 modules/guestbook/lang/es.lang.php delete mode 100644 modules/guestbook/lang/jp.lang.php delete mode 100644 modules/guestbook/lang/ko.lang.php delete mode 100644 modules/guestbook/lang/ru.lang.php delete mode 100644 modules/guestbook/lang/zh-CN.lang.php delete mode 100644 modules/guestbook/queries/getGuestbookList.xml delete mode 100644 modules/guestbook/skins/default/comment.html delete mode 100644 modules/guestbook/skins/default/comment_form.html delete mode 100644 modules/guestbook/skins/default/css/guestbook.css delete mode 100644 modules/guestbook/skins/default/delete_comment_form.html delete mode 100644 modules/guestbook/skins/default/delete_form.html delete mode 100644 modules/guestbook/skins/default/filter/delete_comment.xml delete mode 100644 modules/guestbook/skins/default/filter/delete_document.xml delete mode 100644 modules/guestbook/skins/default/filter/input_password.xml delete mode 100644 modules/guestbook/skins/default/filter/insert.xml delete mode 100644 modules/guestbook/skins/default/filter/insert_comment.xml delete mode 100644 modules/guestbook/skins/default/footer.html delete mode 100644 modules/guestbook/skins/default/header.html delete mode 100644 modules/guestbook/skins/default/images/bgH3.gif delete mode 100644 modules/guestbook/skins/default/images/bottomGotoFirst.gif delete mode 100644 modules/guestbook/skins/default/images/bottomGotoLast.gif delete mode 100644 modules/guestbook/skins/default/images/buttonDeleteX.gif delete mode 100644 modules/guestbook/skins/default/images/buttonHelp.gif delete mode 100644 modules/guestbook/skins/default/images/buttonModifyE.gif delete mode 100644 modules/guestbook/skins/default/images/buttonReply.gif delete mode 100644 modules/guestbook/skins/default/images/iconAdmin.gif delete mode 100644 modules/guestbook/skins/default/images/iconArrowD8.gif delete mode 100644 modules/guestbook/skins/default/images/iconRss.gif delete mode 100644 modules/guestbook/skins/default/images/iconSetup.gif delete mode 100644 modules/guestbook/skins/default/images/lineH3.gif delete mode 100644 modules/guestbook/skins/default/images/line_1x10_e0e0e0.gif delete mode 100644 modules/guestbook/skins/default/input_password_form.html delete mode 100644 modules/guestbook/skins/default/js/guestbook.js delete mode 100644 modules/guestbook/skins/default/list.html delete mode 100644 modules/guestbook/skins/default/message.html delete mode 100644 modules/guestbook/skins/default/skin.xml delete mode 100644 modules/guestbook/skins/default/write_form.html delete mode 100644 modules/guestbook/tpl/filter/delete_guestbook.xml delete mode 100644 modules/guestbook/tpl/filter/insert_grant.xml delete mode 100644 modules/guestbook/tpl/filter/insert_guestbook.xml delete mode 100644 modules/guestbook/tpl/grant_list.html delete mode 100644 modules/guestbook/tpl/guestbook_delete.html delete mode 100644 modules/guestbook/tpl/guestbook_info.html delete mode 100644 modules/guestbook/tpl/guestbook_insert.html delete mode 100644 modules/guestbook/tpl/header.html delete mode 100644 modules/guestbook/tpl/index.html delete mode 100644 modules/guestbook/tpl/js/guestbook_admin.js delete mode 100644 modules/guestbook/tpl/skin_info.html delete mode 100644 modules/guestbook/tpl/top_refresh.html diff --git a/modules/blog/blog.admin.controller.php b/modules/blog/blog.admin.controller.php deleted file mode 100644 index fc37b7fda..000000000 --- a/modules/blog/blog.admin.controller.php +++ /dev/null @@ -1,468 +0,0 @@ -xml_info->grant; - - if(count($grant_list)) { - foreach($grant_list as $key => $val) { - $group_srls = Context::get($key); - if($group_srls) $arr_grant[$key] = explode('|@|',$group_srls); - } - $grants = serialize($arr_grant); - } - - $oModuleController = &getController('module'); - $oModuleController->updateModuleGrant($module_srl, $grants); - - $this->add('module_srl',Context::get('module_srl')); - $this->setMessage('success_registed'); - } - - /** - * @brief 스킨 정보 업데이트 - **/ - function procBlogAdminUpdateSkinInfo() { - // module_srl에 해당하는 정보들을 가져오기 - $module_srl = Context::get('module_srl'); - - $oModuleModel = &getModel('module'); - $oModuleController = &getController('module'); - - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - $skin = $module_info->skin; - - // 스킨의 정보르 구해옴 (extra_vars를 체크하기 위해서) - $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); - - // 입력받은 변수들을 체크 (mo, act, module_srl, page등 기본적인 변수들 없앰) - $obj = Context::getRequestVars(); - unset($obj->act); - unset($obj->module_srl); - unset($obj->page); - - // 원 skin_info에서 extra_vars의 type이 image일 경우 별도 처리를 해줌 - if($skin_info->extra_vars) { - foreach($skin_info->extra_vars as $vars) { - if($vars->type!='image') continue; - - $image_obj = $obj->{$vars->name}; - - // 삭제 요청에 대한 변수를 구함 - $del_var = $obj->{"del_".$vars->name}; - unset($obj->{"del_".$vars->name}); - if($del_var == 'Y') { - @unlink($module_info->{$vars->name}); - continue; - } - - // 업로드 되지 않았다면 이전 데이터를 그대로 사용 - if(!$image_obj['tmp_name']) { - $obj->{$vars->name} = $module_info->{$vars->name}; - continue; - } - - // 정상적으로 업로드된 파일이 아니면 무시 - if(!is_uploaded_file($image_obj['tmp_name'])) { - unset($obj->{$vars->name}); - continue; - } - - // 이미지 파일이 아니어도 무시 - if(!preg_match("/\.(jpg|jpeg|gif|png)$/i", $image_obj['name'])) { - unset($obj->{$vars->name}); - continue; - } - - // 경로를 정해서 업로드 - $path = sprintf("./files/attach/images/%s/", $module_srl); - - // 디렉토리 생성 - if(!FileHandler::makeDir($path)) return false; - - $filename = $path.$image_obj['name']; - - // 파일 이동 - if(!move_uploaded_file($image_obj['tmp_name'], $filename)) { - unset($obj->{$vars->name}); - continue; - } - - // 변수를 바꿈 - unset($obj->{$vars->name}); - $obj->{$vars->name} = $filename; - } - } - - // 메뉴 관리 - $menus = get_object_vars($skin_info->menu); - if(count($menus)) { - foreach($menus as $menu_id => $val) { - $menu_srl = Context::get($menu_id); - if($menu_srl) { - $obj->menu->{$menu_id} = $menu_srl; - $obj->{$menu_id} = $menu_srl; - $menu_srl_list[] = $menu_srl; - } - } - - // 정해진 메뉴가 있으면 모듈 및 메뉴에 대한 레이아웃 연동 - /* - if(count($menu_srl_list)) { - // 해당 메뉴와 레이아웃 값을 매핑 - $oMenuAdminController = &getAdminController('menu'); - $oMenuAdminController->updateMenuLayout($module_srl, $menu_srl_list); - - // 해당 메뉴에 속한 mid의 layout값을 모두 변경 - $oModuleController->updateModuleLayout($module_srl, $menu_srl_list); - } - */ - } - - // serialize하여 저장 - $oDocumentModel = &getModel('document'); - $obj->category_xml_file = $oDocumentModel->getCategoryXmlFile($module_srl); - $obj->mid = $module_info->mid; - $skin_vars = serialize($obj); - - $oModuleController->updateModuleSkinVars($module_srl, $skin_vars); - - // 레이아웃 확장변수 수정 - $layout_args->mid = $obj->mid; - $layout_args->extra_vars = $skin_vars; - $layout_args->layout_srl = $module_srl; - $oLayoutAdminController = &getAdminController('layout'); - $output = $oLayoutAdminController->updateLayout($layout_args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - $this->setLayoutPath('./common/tpl'); - $this->setLayoutFile('default_layout.html'); - $this->setTemplatePath($this->module_path.'tpl'); - $this->setTemplateFile("top_refresh.html"); - } - - /** - * @brief 블로그 추가 - **/ - function procBlogAdminInsertBlog() { - // 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 - $args = Context::gets('module_srl','module_category_srl','blog_name','skin','browser_title','description','is_default','header_text','footer_text','admin_id'); - $args->module = 'blog'; - $args->mid = $args->blog_name; - unset($args->blog_name); - if($args->is_default!='Y') $args->is_default = 'N'; - - // 기본 값외의 것들을 정리 - $extra_var = delObjectVars(Context::getRequestVars(), $args); - unset($extra_var->act); - unset($extra_var->page); - unset($extra_var->blog_name); - - // 확장변수(20개로 제한된 고정 변수) 체크 - $user_defined_extra_vars = array(); - foreach($extra_var as $key => $val) { - if(substr($key,0,11)!='extra_vars_') continue; - preg_match('/^extra_vars_([0-9]+)_(.*)$/i', $key, $matches); - if(!$matches[1] || !$matches[2]) continue; - - $user_defined_extra_vars[$matches[1]]->{$matches[2]} = $val; - unset($extra_var->{$key}); - } - for($i=1;$i<=20;$i++) if(!$user_defined_extra_vars[$i]->name) unset($user_defined_extra_vars[$i]); - $extra_var->extra_vars = $user_defined_extra_vars; - - $oDB = &DB::getInstance(); - $oDB->begin(); - - // module_srl이 넘어오면 원 모듈이 있는지 확인 - if($args->module_srl) { - $oModuleModel = &getModel('module'); - $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl); - - // 만약 원래 모듈이 없으면 새로 입력하기 위한 처리 - if($module_info->module_srl != $args->module_srl) unset($args->module_srl); - } - - // $extra_var를 serialize - $args->extra_vars = serialize($extra_var); - - // module 모듈의 controller 객체 생성 - $oModuleController = &getController('module'); - - // is_default=='Y' 이면 - if($args->is_default=='Y') $oModuleController->clearDefaultModule(); - - // module_srl의 값에 따라 insert/update - if(!$args->module_srl) { - // 블로그 등록 - $output = $oModuleController->insertModule($args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // 글작성, 파일첨부, 댓글 파일첨부, 관리에 대한 권한 지정 - if($output->toBool()) { - $oMemberModel = &getModel('member'); - $admin_group = $oMemberModel->getAdminGroup(); - $admin_group_srl = $admin_group->group_srl; - - $module_srl = $output->get('module_srl'); - $grants = serialize(array('write_document'=>array($admin_group_srl), 'fileupload'=>array($admin_group_srl), 'comment_fileupload'=>array($admin_group_srl), 'manager'=>array($admin_group_srl))); - - $output = $oModuleController->updateModuleGrant($module_srl, $grants); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - } - - // 레이아웃 등록 - $layout_args->layout_srl = $layout_args->module_srl = $module_srl; - $layout_args->layout = 'blog'; - $layout_args->title = sprintf('%s - %s',$args->browser_title, $args->mid); - $layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin); - - $oLayoutController = &getAdminController('layout'); - $output = $oLayoutController->insertLayout($layout_args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // 기본 카테고리 등록 - $category_args->module_srl = $args->module_srl; - $category_args->category_srl = getNextSequence(); - $category_args->title = 'Story'; - $category_args->expand = 'N'; - $this->procBlogAdminInsertCategory($category_args); - - $msg_code = 'success_registed'; - } else { - // 블로그 데이터 수정 - $output = $oModuleController->updateModule($args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // 레이아웃 수정 - $layout_args->mid = $args->mid; - $layout_args->layout_srl = $layout_args->module_srl = $module_srl = $output->get('module_srl'); - $layout_args->title = $args->browser_title; - $layout_args->layout_path = sprintf('./modules/blog/skins/%s/layout.html', $args->skin); - - $oLayoutAdminController = &getAdminController('layout'); - $output = $oLayoutAdminController->updateLayout($layout_args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - $msg_code = 'success_updated'; - } - - $oDB->commit(); - - $this->add('page',Context::get('page')); - $this->add('module_srl',$output->get('module_srl')); - $this->setMessage($msg_code); - } - - /** - * @brief 카테고리 추가 - **/ - function procBlogAdminInsertCategory($args = null) { - // 입력할 변수 정리 - if(!$args) $args = Context::gets('module_srl','category_srl','parent_srl','title','expand','group_srls'); - - if($args->expand !="Y") $args->expand = "N"; - $args->group_srls = str_replace('|@|',',',$args->group_srls); - $args->parent_srl = (int)$args->parent_srl; - - $oDocumentController = &getController('document'); - $oDocumentModel = &getModel('document'); - - $oDB = &DB::getInstance(); - $oDB->begin(); - - // 이미 존재하는지를 확인 - if($args->category_srl) { - $category_info = $oDocumentModel->getCategory($args->category_srl); - if($category_info->category_srl != $args->category_srl) $args->category_srl = null; - } - - // 존재하게 되면 update를 해준다 - if($args->category_srl) { - $output = $oDocumentController->updateCategory($args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // 존재하지 않으면 insert를 해준다 - } else { - $output = $oDocumentController->insertCategory($args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - } - - // XML 파일을 갱신하고 위치을 넘겨 받음 - $xml_file = $oDocumentController->makeCategoryFile($args->module_srl); - - $oDB->commit(); - - $this->add('xml_file', $xml_file); - $this->add('module_srl', $args->module_srl); - $this->add('category_srl', $args->category_srl); - $this->add('parent_srl', $args->parent_srl); - } - - - /** - * @brief 블로그 삭제 - **/ - function procBlogAdminDeleteBlog() { - $module_srl = Context::get('module_srl'); - - $oDB = &DB::getInstance(); - $oDB->begin(); - - // 블로그 모듈 삭제 - $oModuleController = &getController('module'); - $output = $oModuleController->deleteModule($module_srl); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // 레이아웃 삭제 - $layout_args->layout_srl = $layout_args->module_srl = $module_srl; - $oLayoutAdminController = &getAdminController('layout'); - $output = $oLayoutAdminController->deleteLayout($layout_args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - $oDB->commit(); - - $this->add('module','blog'); - $this->add('page',Context::get('page')); - $this->setMessage('success_deleted'); - } - - /** - * @brief 카테고리 삭제 - **/ - function procBlogAdminDeleteCategory() { - // 변수 정리 - $args = Context::gets('module_srl','category_srl'); - - $oDB = &DB::getInstance(); - $oDB->begin(); - - $oDocumentModel = &getModel('document'); - - // 원정보를 가져옴 - $category_info = $oDocumentModel->getCategory($args->category_srl); - if($category_info->parent_srl) $parent_srl = $category_info->parent_srl; - - // 자식 노드가 있는지 체크하여 있으면 삭제 못한다는 에러 출력 - if($oDocumentModel->getCategoryChlidCount($args->category_srl)) return new Object(-1, 'msg_cannot_delete_for_child'); - - // DB에서 삭제 - $oDocumentController = &getController('document'); - $output = $oDocumentController->deleteCategory($args->category_srl); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // XML 파일을 갱신하고 위치을 넘겨 받음 - $xml_file = $oDocumentController->makeCategoryFile($args->module_srl); - - $oDB->commit(); - - $this->add('xml_file', $xml_file); - $this->add('category_srl', $parent_srl); - $this->setMessage('success_deleted'); - } - - /** - * @brief 카테고리 이동 - **/ - function procBlogAdminMoveCategory() { - $source_category_srl = Context::get('source_category_srl'); - $target_category_srl = Context::get('target_category_srl'); - - $oDocumentModel = &getModel('document'); - $oDocumentController = &getController('document'); - - $target_category = $oDocumentModel->getCategory($target_category_srl); - $source_category = $oDocumentModel->getCategory($source_category_srl); - - // source_category에 target_category_srl의 parent_srl, list_order 값을 입력 - $source_args->category_srl = $source_category_srl; - $source_args->parent_srl = $target_category->parent_srl; - $source_args->list_order = $target_category->list_order; - $output = $oDocumentController->updateCategory($source_args); - if(!$output->toBool()) return $output; - - // target_category의 list_order값을 +1해 준다 - $target_args->category_srl = $target_category_srl; - $target_args->parent_srl = $source_category->parent_srl; - $target_args->list_order = $source_category->list_order; - $output = $oDocumentController->updateCategory($target_args); - if(!$output->toBool()) return $output; - - // xml파일 재생성 - $xml_file = $oDocumentController->makeCategoryFile($source_category->module_srl); - - // return 변수 설정 - $this->add('xml_file', $xml_file); - $this->add('source_category_srl', $source_category_srl); - } - - /** - * @brief xml 파일을 갱신 - * 관리자페이지에서 메뉴 구성 후 간혹 xml파일이 재생성 안되는 경우가 있는데\n - * 이럴 경우 관리자의 수동 갱신 기능을 구현해줌\n - * 개발 중간의 문제인 것 같고 현재는 문제가 생기지 않으나 굳이 없앨 필요 없는 기능 - **/ - function procBlogAdminMakeXmlFile() { - // 입력값을 체크 - $module_srl = Context::get('module_srl'); - - // xml파일 재생성 - $oDocumentController = &getController('document'); - $xml_file = $oDocumentController->makeCategoryFile($module_srl); - - // return 값 설정 - $this->add('xml_file',$xml_file); - } - } -?> diff --git a/modules/blog/blog.admin.model.php b/modules/blog/blog.admin.model.php deleted file mode 100644 index 791a7bcb8..000000000 --- a/modules/blog/blog.admin.model.php +++ /dev/null @@ -1,65 +0,0 @@ -getGroups(); - Context::set('group_list', $group_list); - - $oDocumentModel = &getModel('document'); - - // parent_srl이 있고 category_srl 이 없으면 하부 메뉴 추가임 - if(!$category_srl && $parent_srl) { - // 상위 메뉴의 정보를 가져옴 - $parent_info = $oDocumentModel->getCategory($parent_srl); - - // 추가하려는 메뉴의 기본 변수 설정 - $category_info->category_srl = getNextSequence(); - $category_info->parent_srl = $parent_srl; - $category_info->parent_category_title = $parent_info->title; - - // root에 메뉴 추가하거나 기존 메뉴의 수정일 경우 - } else { - // category_srl 이 있으면 해당 메뉴의 정보를 가져온다 - if($category_srl) $category_info = $oDocumentModel->getCategory($category_srl); - - // 찾아진 값이 없다면 신규 메뉴 추가로 보고 category_srl값만 구해줌 - if(!$category_info->category_srl) { - $category_info->category_srl = getNextSequence(); - } - } - - Context::set('category_info', $category_info); - - // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. - $oTemplate = &TemplateHandler::getInstance(); - $tpl = $oTemplate->compile($this->module_path.'tpl', 'category_info'); - - // return 할 변수 설정 - $this->add('tpl', $tpl); - } - - } -?> diff --git a/modules/blog/blog.admin.view.php b/modules/blog/blog.admin.view.php deleted file mode 100644 index 42947375f..000000000 --- a/modules/blog/blog.admin.view.php +++ /dev/null @@ -1,227 +0,0 @@ -module_srl) { - $module_srl = $this->module_srl; - Context::set('module_srl', $module_srl); - } - - // module model 객체 생성 - $oModuleModel = &getModel('module'); - - // module_srl이 넘어오면 해당 모듈의 정보를 미리 구해 놓음 - if($module_srl) { - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - if($module_info->module_srl == $module_srl) { - $this->module_info = $module_info; - Context::set('module_info',$module_info); - } - } - - // 모듈 카테고리 목록을 구함 - $module_category = $oModuleModel->getModuleCategories(); - Context::set('module_category', $module_category); - - // 만약 블로그 서비스 페이지에서 관리자 기능 호출시 요청된 블로그의 정보와 레이아웃 가져옴 - if($this->mid) { - $oView = &getView('blog'); - $oView->setModuleInfo($this->module_info, $this->xml_info); - $oView->init(); - } - - // 템플릿 경로 지정 (blog의 경우 tpl에 관리자용 템플릿 모아놓음) - $this->setTemplatePath($this->module_path."tpl"); - } - - /** - * @brief 블로그 관리 목록 보여줌 - **/ - function dispBlogAdminContent() { - // 등록된 blog 모듈을 불러와 세팅 - $args->sort_index = "module_srl"; - $args->page = Context::get('page'); - $args->list_count = 40; - $args->page_count = 10; - $args->s_module_category_srl = Context::get('module_category_srl'); - $output = executeQuery('blog.getBlogList', $args); - - // 템플릿에 쓰기 위해서 context::set - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('blog_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - - // 템플릿 파일 지정 - $this->setTemplateFile('index'); - } - - /** - * @brief 선택된 블로그의 정보 출력 - **/ - function dispBlogAdminBlogInfo() { - - // module_srl 값이 없다면 그냥 index 페이지를 보여줌 - if(!Context::get('module_srl')) return $this->dispBlogAdminContent(); - - // 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout) - if($this->module_info->layout_srl) { - $oLayoutModel = &getModel('layout'); - $layout_info = $oLayoutModel->getLayout($this->module_info->layout_srl); - $this->module_info->layout = $layout_info->layout; - $this->module_info->layout_title = $layout_info->layout_title; - } - - // 정해진 스킨이 있으면 해당 스킨의 정보를 구함 - if($this->module_info->skin) { - $oModuleModel = &getModel('module'); - $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $this->module_info->skin); - $this->module_info->skin_title = $skin_info->title; - } - - // 템플릿 파일 지정 - $this->setTemplateFile('blog_info'); - } - - /** - * @brief 블로그 추가 폼 출력 - **/ - function dispBlogAdminInsertBlog() { - - // 스킨 목록을 구해옴 - $oModuleModel = &getModel('module'); - $skin_list = $oModuleModel->getSkins($this->module_path); - Context::set('skin_list',$skin_list); - - // 템플릿 파일 지정 - $this->setTemplateFile('blog_insert'); - } - - /** - * @brief 블로그 추가 설정 보여줌 - * 추가설정은 서비스형 모듈들에서 다른 모듈과의 연계를 위해서 설정하는 페이지임 - **/ - function dispBlogAdminBlogAdditionSetup() { - // content는 다른 모듈에서 call by reference로 받아오기에 미리 변수 선언만 해 놓음 - $content = ''; - - // 추가 설정을 위한 트리거 호출 - // 블로그 모듈이지만 차후 다른 모듈에서의 사용도 고려하여 trigger 이름을 공용으로 사용할 수 있도록 하였음 - $output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'before', $content); - $output = ModuleHandler::triggerCall('module.dispAdditionSetup', 'after', $content); - Context::set('setup_content', $content); - - // 템플릿 파일 지정 - $this->setTemplateFile('addition_setup'); - } - - /** - * @brief 블로그 삭제 화면 출력 - **/ - function dispBlogAdminDeleteBlog() { - - if(!Context::get('module_srl')) return $this->dispBlogAdminContent(); - - $module_info = Context::get('module_info'); - - $oDocumentModel = &getModel('document'); - $document_count = $oDocumentModel->getDocumentCount($module_info->module_srl); - $module_info->document_count = $document_count; - - Context::set('module_info',$module_info); - - // 템플릿 파일 지정 - $this->setTemplateFile('blog_delete'); - } - - /** - * @brief 스킨 정보 보여줌 - **/ - function dispBlogAdminSkinInfo() { - - // 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음 - $module_info = Context::get('module_info'); - $skin = $module_info->skin; - - $oModuleModel = &getModel('module'); - $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); - - // skin_info에 extra_vars 값을 지정 - if(count($skin_info->extra_vars)) { - foreach($skin_info->extra_vars as $key => $val) { - $name = $val->name; - $type = $val->type; - $value = $module_info->{$name}; - if($type=="checkbox"&&!$value) $value = array(); - $skin_info->extra_vars[$key]->value= $value; - } - } - - // skin_info에 menu값을 지정 - if(count($skin_info->menu)) { - foreach($skin_info->menu as $key => $val) { - if($module_info->{$key}) $skin_info->menu->{$key}->menu_srl = $module_info->{$key}; - } - } - - // 메뉴를 가져옴 - $oMenuAdminModel = &getAdminModel('menu'); - $menu_list = $oMenuAdminModel->getMenus(); - Context::set('menu_list', $menu_list); - - Context::set('skin_info', $skin_info); - $this->setTemplateFile('skin_info'); - } - - /** - * @brief 카테고리의 정보 출력 - **/ - function dispBlogAdminCategoryInfo() { - // module_srl을 구함 - $module_srl = $this->module_info->module_srl; - - // 카테고리 정보를 가져옴 - $oDocumentModel = &getModel('document'); - $category_xml_file = $oDocumentModel->getCategoryXmlFile($module_srl); - - Context::set('category_xml_file', $category_xml_file); - Context::addJsFile('./common/js/tree_menu.js'); - - Context::set('layout','none'); - $this->setTemplateFile('category_list'); - } - - /** - * @brief 권한 목록 출력 - **/ - function dispBlogAdminGrantInfo() { - // module_srl을 구함 - $module_srl = Context::get('module_srl'); - - // module.xml에서 권한 관련 목록을 구해옴 - $grant_list = $this->xml_info->grant; - Context::set('grant_list', $grant_list); - - // 권한 그룹의 목록을 가져온다 - $oMemberModel = &getModel('member'); - $group_list = $oMemberModel->getGroups(); - Context::set('group_list', $group_list); - - $this->setTemplateFile('grant_list'); - } - } -?> diff --git a/modules/blog/blog.class.php b/modules/blog/blog.class.php deleted file mode 100644 index 4af48a94d..000000000 --- a/modules/blog/blog.class.php +++ /dev/null @@ -1,90 +0,0 @@ -insertActionForward('blog', 'view', 'dispBlogAdminContent'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminBlogInfo'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminBlogAdditionSetup'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminInsertBlog'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminDeleteBlog'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminSkinInfo'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminCategoryInfo'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminMenuInfo'); - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminGrantInfo'); - $oModuleController->insertActionForward('blog', 'controller', 'procBlogAdminUpdateSkinInfo'); - - return new Object(); - } - - /** - * @brief 설치가 이상이 없는지 체크하는 method - **/ - function checkUpdate() { - $oModuleModel = &getModel('module'); - - /** - * 2007. 10. 17 : 게시판 모듈설정에 추가 설정 액션 설정 - **/ - if(!$oModuleModel->getActionForward('dispBlogAdminBlogAdditionSetup')) return true; - - return false; - } - - /** - * @brief 업데이트 실행 - **/ - function moduleUpdate() { - $oModuleModel = &getModel('module'); - $oModuleController = &getController('module'); - - /** - * 2007. 10. 17 : 게시판 모듈설정에 추가 설정 액션 설정 - **/ - if(!$oModuleModel->getActionForward('dispBlogAdminBlogAdditionSetup')) - $oModuleController->insertActionForward('blog', 'view', 'dispBlogAdminBlogAdditionSetup'); - - return new Object(0, 'success_updated'); - } - - /** - * @brief 캐시 파일 재생성 - **/ - function recompileCache() { - // 블로그 모듈의 캐시 파일 모두 삭제 - FileHandler::removeDir("./files/cache/blog_category"); - - $oModuleModel = &getModel('module'); - $oDocumentController = &getController('document'); - - // 블로그 모듈 목록을 모두 구함 - $args->module = 'blog'; - $output = executeQueryArray("module.getMidList", $args); - $list = $output->data; - if(!count($list)) return; - - // 블로그 모듈에서 사용되는 모든 메뉴 목록을 재 생성 - foreach($list as $blog_item) { - $module_srl = $blog_item->module_srl; - $oDocumentController->makeCategoryFile($module_srl); - } - - } - } -?> diff --git a/modules/blog/blog.controller.php b/modules/blog/blog.controller.php deleted file mode 100644 index 0002ae302..000000000 --- a/modules/blog/blog.controller.php +++ /dev/null @@ -1,221 +0,0 @@ -grant->write_document) return new Object(-1, 'msg_not_permitted'); - - // 글작성시 필요한 변수를 세팅 - $obj = Context::getRequestVars(); - $obj->module_srl = $this->module_srl; - if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N'; - - // document module의 model 객체 생성 - $oDocumentModel = &getModel('document'); - - // document module의 controller 객체 생성 - $oDocumentController = &getController('document'); - - // 이미 존재하는 글인지 체크 - $oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager); - - // 이미 존재하는 경우 수정 - if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl) { - $output = $oDocumentController->updateDocument($oDocument, $obj); - $msg_code = 'success_updated'; - - // 그렇지 않으면 신규 등록 - } else { - $output = $oDocumentController->insertDocument($obj); - $msg_code = 'success_registed'; - $obj->document_srl = $output->get('document_srl'); - } - - // 오류 발생시 멈춤 - if(!$output->toBool()) return $output; - - // 트랙백이 있으면 트랙백 발송 - $trackback_url = Context::get('trackback_url'); - $trackback_charset = Context::get('trackback_charset'); - if($trackback_url) { - $oTrackbackController = &getController('trackback'); - $oTrackbackController->sendTrackback($obj, $trackback_url, $trackback_charset); - } - - // 결과를 리턴 - $this->add('mid', Context::get('mid')); - $this->add('document_srl', $output->get('document_srl')); - - // 성공 메세지 등록 - $this->setMessage($msg_code); - } - - /** - * @brief 문서 삭제 - **/ - function procBlogDeleteDocument() { - // 문서 번호 확인 - $document_srl = Context::get('document_srl'); - - // 문서 번호가 없다면 오류 발생 - if(!$document_srl) return $this->doError('msg_invalid_document'); - - // document module model 객체 생성 - $oDocumentController = &getController('document'); - - // 삭제 시도 - $output = $oDocumentController->deleteDocument($document_srl, $this->grant->manager); - if(!$output->toBool()) return $output; - - // 성공 메세지 등록 - $this->add('mid', Context::get('mid')); - $this->add('page', $output->get('page')); - $this->setMessage('success_deleted'); - } - - /** - * @brief 코멘트 추가 - **/ - function procBlogInsertComment() { - // 권한 체크 - if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted'); - - // 댓글 입력에 필요한 데이터 추출 - $obj = Context::gets('document_srl','comment_srl','parent_srl','content','password','nick_name','nick_name','member_srl','email_address','homepage','is_secret','notify_message'); - $obj->module_srl = $this->module_srl; - - // comment 모듈의 model 객체 생성 - $oCommentModel = &getModel('comment'); - - // comment 모듈의 controller 객체 생성 - $oCommentController = &getController('comment'); - - /** - * 존재하는 댓글인지를 확인하여 존재 하지 않는 댓글이라면 신규로 등록하기 위해서 comment_srl의 sequence값을 받는다 - **/ - if(!$obj->comment_srl) { - $obj->comment_srl = getNextSequence(); - } else { - $comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager); - } - - // comment_srl이 없을 경우 신규 입력 - if($comment->comment_srl != $obj->comment_srl) { - - // parent_srl이 있으면 답변으로 - if($obj->parent_srl) { - $parent_comment = $oCommentModel->getComment($obj->parent_srl); - if(!$parent_comment->comment_srl) return new Object(-1, 'msg_invalid_request'); - - $output = $oCommentController->insertComment($obj); - - // 없으면 신규 - } else { - $output = $oCommentController->insertComment($obj); - } - - // comment_srl이 있으면 수정으로 - } else { - $obj->parent_srl = $comment->parent_srl; - $output = $oCommentController->updateComment($obj, $this->grant->manager); - $comment_srl = $obj->comment_srl; - } - - if(!$output->toBool()) return $output; - - $this->add('mid', Context::get('mid')); - $this->add('document_srl', $obj->document_srl); - $this->add('comment_srl', $obj->comment_srl); - - $this->setMessage('success_registed'); - } - - /** - * @brief 코멘트 삭제 - **/ - function procBlogDeleteComment() { - // 댓글 번호 확인 - $comment_srl = Context::get('comment_srl'); - if(!$comment_srl) return $this->doError('msg_invalid_request'); - - // comment 모듈의 controller 객체 생성 - $oCommentController = &getController('comment'); - - $output = $oCommentController->deleteComment($comment_srl, $this->grant->manager); - if(!$output->toBool()) return $output; - - $this->add('mid', Context::get('mid')); - $this->add('page', Context::get('page')); - $this->add('document_srl', $output->get('document_srl')); - $this->setMessage('success_deleted'); - } - - /** - * @brief 엮인글 삭제 - **/ - function procBlogDeleteTrackback() { - $trackback_srl = Context::get('trackback_srl'); - - // trackback module의 controller 객체 생성 - $oTrackbackController = &getController('trackback'); - $output = $oTrackbackController->deleteTrackback($trackback_srl, $this->grant->manager); - if(!$output->toBool()) return $output; - - $this->add('mid', Context::get('mid')); - $this->add('page', Context::get('page')); - $this->add('document_srl', $output->get('document_srl')); - $this->setMessage('success_deleted'); - } - - /** - * @brief 문서와 댓글의 비밀번호를 확인 - **/ - function procBlogVerificationPassword() { - // 비밀번호와 문서 번호를 받음 - $password = Context::get('password'); - $document_srl = Context::get('document_srl'); - $comment_srl = Context::get('comment_srl'); - - $oMemberModel = &getModel('member'); - - // comment_srl이 있을 경우 댓글이 대상 - if($comment_srl) { - // 문서번호에 해당하는 글이 있는지 확인 - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl); - if(!$oComment->isExists()) return new Object(-1, 'msg_invalid_request'); - - // 문서의 비밀번호와 입력한 비밀번호의 비교 - if(!$oMemberModel->isValidPassword($oComment->get('password'),$password)) return new Object(-1, 'msg_invalid_password'); - - $oComment->setGrant(); - } else { - // 문서번호에 해당하는 글이 있는지 확인 - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - if(!$oDocument->isExists()) return new Object(-1, 'msg_invalid_request'); - - // 문서의 비밀번호와 입력한 비밀번호의 비교 - if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password)) return new Object(-1, 'msg_invalid_password'); - - $oDocument->setGrant(); - } - } - - } -?> diff --git a/modules/blog/blog.model.php b/modules/blog/blog.model.php deleted file mode 100644 index 7bed8b2a9..000000000 --- a/modules/blog/blog.model.php +++ /dev/null @@ -1,17 +0,0 @@ - diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php deleted file mode 100644 index cc911e5fa..000000000 --- a/modules/blog/blog.view.php +++ /dev/null @@ -1,385 +0,0 @@ -module_srl) Context::set('module_srl',$this->module_srl); - - // 기본 모듈 정보들 설정 - $this->list_count = $this->module_info->list_count?$this->module_info->list_count:1; - $this->page_count = $this->module_info->page_count?$this->module_info->page_count:10; - - // 카테고리 목록을 가져오고 선택된 카테고리의 값을 설정 - $oDocumentModel = &getModel('document'); - $this->category_list = $oDocumentModel->getCategoryList($this->module_srl); - Context::set('category_list', $this->category_list); - - // 스킨 경로 구함 - $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); - $this->setTemplatePath($template_path); - - // 레이아웃의 정보를 속이기 위해서 layout_srl을 현 블로그의 module_srl로 입력 - $this->module_info->layout_srl = $this->module_info->module_srl; - - /** - * 블로그는 자체 레이아웃을 관리하기에 이와 관련된 세팅을 해줌 - **/ - // 레이아웃 경로와 파일 지정 (블로그는 자체 레이아웃을 가지고 있음) - $this->setLayoutPath($template_path); - $this->setLayoutFile("layout"); - - // 수정된 레이아웃 파일이 있으면 지정 - $edited_layout = sprintf('./files/cache/layout/%d.html', $this->module_info->module_srl); - if(file_exists($edited_layout)) $this->setEditedLayoutFile($edited_layout); - - // 카테고리 xml 파일 위치 지정 - $this->module_info->category_xml_file = getUrl().$oDocumentModel->getCategoryXmlFile($this->module_info->module_srl); - $this->module_info->category_php_file = $oDocumentModel->getCategoryPhpFile($this->module_info->module_srl); - - // 메뉴 등록시 메뉴 정보를 구해옴 - if($this->module_info->menu) { - foreach($this->module_info->menu as $menu_id => $menu_srl) { - $menu_php_file = sprintf("./files/cache/menu/%s.php", $menu_srl); - if(file_exists($menu_php_file)) @include($menu_php_file); - Context::set($menu_id, $menu); - } - } - - // layout_info 변수 설정 - Context::set('layout_info',$this->module_info); - - // 모듈정보 세팅 - Context::set('module_info',$this->module_info); - } - - /** - * @brief 목록 및 선택된 글 출력 - **/ - function dispBlogContent() { - // 권한 체크 - if(!$this->grant->list) return $this->dispBlogMessage('msg_not_permitted'); - - // 모듈정보를 확인하여 확장변수에서도 검색이 설정되어 있는지 확인 - for($i=1;$i<=20;$i++) { - $ex_name = $this->module_info->extra_vars[$i]->name; - $ex_search = $this->module_info->extra_vars[$i]->search; - if($ex_name && $ex_search == 'Y') { - $search_option['extra_vars'.$i] = $ex_name; - } - } - Context::set('search_option', $search_option); - - // 목록 구현에 필요한 변수들을 가져온다 - $document_srl = Context::get('document_srl'); - $page = Context::get('page'); - - // document 객체를 생성. 기본 데이터 구조의 경우 document모듈만 쓰면 만사 해결.. -_-; - $oDocumentModel = &getModel('document'); - - $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); - - // document_srl이 있다면 해당 글만 출력 - if($this->grant->list && $document_srl) { - - // 글을 구함 - $oDocument->setDocument($document_srl); - - // 찾아지지 않았다면 초기화 - if(!$oDocument->isExists()) { - unset($document_srl); - Context::set('document_srl','',true); - } else { - - // 브라우저 타이틀 설정 - Context::addBrowserTitle($oDocument->getTitleText()); - - // 댓글에디터 설정 - if($this->grant->write_comment && $oDocument->allowComment() && !$oDocument->isLocked()) $comment_editor[$oDocument->document_srl] = $this->getCommentEditor($oDocument->document_srl, 0, 100); - - // 조회수 증가 - $oDocument->updateReadedCount(); - - // 카테고리 설정 - Context::set('category', $oDocument->get('category_srl')); - - // comment editor 생성/ 세팅 - $comment_editor[$oDocument->document_srl] = $this->getCommentEditor($oDocument->document_srl, 0, 100); - Context::set('comment_editor', $comment_editor); - } - } - - Context::set('oDocument', $oDocument); - - // document_srl이 없다면 정해진데로 목록을 구함 - if(!$oDocument->isExists()) { - // 목록을 구하기 위한 옵션 - $args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl - $args->page = $page; ///< 페이지 - $args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수 - $args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수 - - // 검색 옵션 - $args->search_target = trim(Context::get('search_target')); ///< 검색대상 - $args->search_keyword = trim(Context::get('search_keyword')); ///< 검색어 - - // 키워드 검색이 아닌 검색일 경우 목록의 수를 40개로 고정 - if($args->search_target && $args->search_keyword) $args->list_count = 40; - - // 키워드 검색의 경우 제목,내용으로 검색 대상 고정 - if($args->search_keyword && !$args->search_target) $args->search_target = "title_content"; - - // 블로그 카테고리 - $args->category_srl = (int)Context::get('category'); - - $args->sort_index = 'list_order'; ///< 소팅 값 - - // 목록 구함, document->getDocumentList 에서 걍 알아서 다 해버리는 구조 - $output = $oDocumentModel->getDocumentList($args, true); - - // 템플릿에 쓰기 위해서 document_model::getDocumentList() 의 return object에 있는 값들을 세팅 - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('document_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - - // 문서 갯수만큼 comment editor 생성 - if(count($output->data)) { - foreach($output->data as $obj) { - $comment_editor[$obj->document_srl] = $this->getCommentEditor($obj->document_srl, 0, 100); - } - } - - // 에디터 세팅 - Context::set('comment_editor', $comment_editor); - - // 템플릿에서 사용할 검색옵션 세팅 - $count_search_option = count($this->search_option); - for($i=0;$i<$count_search_option;$i++) { - $search_option[$this->search_option[$i]] = Context::getLang($this->search_option[$i]); - } - Context::set('search_option', $search_option); - } - - // 블로그의 코멘트는 ajax로 호출되기에 미리 css, js파일을 import - //Context::addJsFile('./modules/editor/tpl/js/editor.js'); - //Context::addCSSFile('./modules/editor/tpl/css/editor.css'); - - $this->setTemplateFile('list'); - } - - /** - * @brief 글 작성 화면 출력 - **/ - function dispBlogWrite() { - // 권한 체크 - if(!$this->grant->write_document) return $this->dispBlogMessage('msg_not_permitted'); - - // GET parameter에서 document_srl을 가져옴 - $document_srl = Context::get('document_srl'); - - // document 모듈 객체 생성 - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl, $this->grant->manager); - - // 지정된 글이 없다면 (신규) 새로운 번호를 만든다 - if(!$oDocument->isExists()) { - $document_srl = getNextSequence(); - Context::set('document_srl',''); - } - - // 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 - if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); - - Context::set('document_srl',$document_srl); - Context::set('oDocument', $oDocument); - - // 에디터 모듈의 getEditor를 호출하여 세팅 - $oEditorModel = &getModel('editor'); - $editor = $oEditorModel->getModuleEditor('document', $this->module_srl, $document_srl, 'document_srl', 'content'); - Context::set('editor', $editor); - - $this->setTemplateFile('write_form'); - } - - /** - * @brief 문서 삭제 화면 출력 - **/ - function dispBlogDelete() { - // 권한 체크 - if(!$this->grant->write_document) return $this->dispBlogMessage('msg_not_permitted'); - - // 삭제할 문서번호를 가져온다 - $document_srl = Context::get('document_srl'); - - // 지정된 글이 있는지 확인 - if($document_srl) { - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - } - - // 삭제하려는 글이 없으면 에러 - if(!$oDocument->isExists()) return $this->dispBlogContent(); - - // 권한이 없는 경우 비밀번호 입력화면으로 - if(!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); - - Context::set('oDocument',$oDocument); - - $this->setTemplateFile('delete_form'); - } - - /** - * @brief 댓글의 답글 화면 출력 - **/ - function dispBlogReplyComment() { - // 권한 체크 - if(!$this->grant->write_comment) return $this->dispBlogMessage('msg_not_permitted'); - - // 목록 구현에 필요한 변수들을 가져온다 - $document_srl = Context::get('document_srl'); - $parent_srl = Context::get('comment_srl'); - - // 지정된 원 댓글이 없다면 오류 - if(!$parent_srl) return new Object(-1, 'msg_invalid_request'); - - // 해당 댓글를 찾아본다 - $oCommentModel = &getModel('comment'); - $oSourceComment = $oCommentModel->getComment($parent_srl, $this->grant->manager); - - // 댓글이 없다면 오류 - if(!$oSourceComment->isExists()) return $this->dispBlogMessage('msg_invalid_request'); - - // 대상 댓글을 생성 - $oComment = $oCommentModel->getComment(); - $oComment->add('parent_srl', $parent_srl); - $oComment->add('document_srl', $oSourceComment->get('document_srl')); - - // 필요한 정보들 세팅 - Context::set('oSourceComment',$oSourceComment); - Context::set('oComment',$oComment); - - // 댓글 에디터 세팅 - Context::set('editor', $this->getCommentEditor($document_srl, 0, 400)); - - $this->setTemplateFile('comment_form'); - } - - /** - * @brief 댓글 수정 폼 출력 - **/ - function dispBlogModifyComment() { - // 권한 체크 - if(!$this->grant->write_comment) return $this->dispBlogMessage('msg_not_permitted'); - - // 목록 구현에 필요한 변수들을 가져온다 - $document_srl = Context::get('document_srl'); - $comment_srl = Context::get('comment_srl'); - - // 지정된 댓글이 없다면 오류 - if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); - - // 해당 댓글를 찾아본다 - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl, $this->grant->manager); - - // 댓글이 없다면 오류 - if(!$oComment->isExists()) return $this->dispBlogMessage('msg_invalid_request'); - - // 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 - if(!$oComment->isGranted()) return $this->setTemplateFile('input_password_form'); - - // 필요한 정보들 세팅 - Context::set('oSourceComment', $oCommentModel->getComment()); - Context::set('oComment', $oComment); - - // 댓글 에디터 세팅 - Context::set('editor', $this->getCommentEditor($document_srl, $comment_srl, 400)); - - $this->setTemplateFile('comment_form'); - } - - /** - * @brief 댓글 삭제 화면 출력 - **/ - function dispBlogDeleteComment() { - // 권한 체크 - if(!$this->grant->write_comment) return $this->dispBlogMessage('msg_not_permitted'); - - // 삭제할 댓글번호를 가져온다 - $comment_srl = Context::get('comment_srl'); - - // 삭제하려는 댓글이 있는지 확인 - if($comment_srl) { - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl, $this->grant->manager); - } - - // 삭제하려는 글이 없으면 에러 - if(!$oComment->isExists()) return $this->dispBlogContent(); - - Context::set('document_srl',$comment->document_srl); - - // 권한이 없는 경우 비밀번호 입력화면으로 - if(!$oComment->isGranted()) return $this->setTemplateFile('input_password_form'); - - Context::set('oComment',$oComment); - - $this->setTemplateFile('delete_comment_form'); - } - - /** - * @brief 엮인글 삭제 화면 출력 - **/ - function dispBlogDeleteTrackback() { - // 삭제할 댓글번호를 가져온다 - $trackback_srl = Context::get('trackback_srl'); - - // 삭제하려는 댓글가 있는지 확인 - $oTrackbackModel = &getModel('trackback'); - $output = $oTrackbackModel->getTrackback($trackback_srl); - $trackback = $output->data; - - // 삭제하려는 글이 없으면 에러 - if(!$trackback) return $this->dispBlogContent(); - - Context::set('trackback',$trackback); - - $this->setTemplateFile('delete_trackback_form'); - } - - /** - * @brief 메세지 출력 - **/ - function dispBlogMessage($msg_code) { - $msg = Context::getLang($msg_code); - if(!$msg) $msg = $msg_code; - Context::set('message', $msg); - $this->setTemplateFile('message'); - } - - /** - * @brief 댓글의 editor 를 세팅 - * 댓글의 경우 수정하는 경우가 아니라면 고유값이 없음.\n - * 따라서 고유값이 없을 경우 고유값을 가져와서 지정해 주어야 함 - **/ - function getCommentEditor($editor_sequence, $comment_srl=0, $height = 100) { - Context::set('comment_srl', $comment_srl); - - $oEditorModel = &getModel('editor'); - $editor = $oEditorModel->getModuleEditor('comment', $this->module_srl, $comment_srl, 'comment_srl', 'content'); - return $editor; - } - } -?> diff --git a/modules/blog/conf/info.xml b/modules/blog/conf/info.xml deleted file mode 100644 index 96c5394f4..000000000 --- a/modules/blog/conf/info.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - 블로그 - ブログ - Blog - Blog - 博客 - Блог - - 제로 - Zero - zero - zero - zero - zero - - 블로그의 기능을 담당하는 모듈. - 게시판과 비슷하지만 보여지는 view가 다르고 블로그에 적합한 method가 추가되었음. - 레이아웃과 기본 메뉴를 직접 담당 - - - ブログの機能を担当するモジュール - 掲示板と似ているが、内容の表示が異なり、ブログに適切なメソッドが追加されている。 - レイアウトと基本メニューを直接担当します。 - - - This module contains the blog functions. - It's similar to the bbs module, but it has diffent views and more suitable methods for blog has been included. - This module manages layout and basic menu itself. - - - Este módulo contiene funciones de blog. - Esto es similar al módulo de tablero, sin embargo la vista que se muestra es diferente e incluye metodos apropiados para blog. - El diseño y el menú básico es manejado por si mismo. - - - 是负责博客功能的模块。 - 虽然类似版面,但其显示模式不同,且还添加了适合博客的method。 - 内置布局和基本的菜单。 - - - Этот модуль содержит функции блога. - Он похож на модуль BBS, но имеет другой вид и более подходящие методы для блога. - Этот модуль управляет лейвутом и базовым меню самостоятельно. - - - diff --git a/modules/blog/conf/module.xml b/modules/blog/conf/module.xml deleted file mode 100644 index cdc567870..000000000 --- a/modules/blog/conf/module.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - 목록 - 目录 - list - リスト - - - 글 작성 - 发表新主题 - write document - 書き込む - - - 댓글 작성 - 发表评论 - write comment - コメント作成 - - - 관리 - 管理 - manager - 管理 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/modules/blog/lang/en.lang.php b/modules/blog/lang/en.lang.php deleted file mode 100644 index bf04035ee..000000000 --- a/modules/blog/lang/en.lang.php +++ /dev/null @@ -1,33 +0,0 @@ -cmd_blog_list = 'Blog List'; - $lang->cmd_module_config = 'Common blog setting'; - $lang->cmd_view_info = 'Blog Info'; - $lang->cmd_manage_menu = 'Menu management'; - $lang->cmd_make_child = 'Add child category'; - $lang->cmd_enable_move_category = "Change category position (Drag the top menu after selection)"; - $lang->cmd_remake_cache = 'Rebuild cache file'; - $lang->cmd_layout_setup = 'Configure layout'; - $lang->cmd_layout_edit = 'Edit layout'; - - // Item - $lang->parent_category_title = 'Parent category'; - $lang->category_title = 'Category'; - $lang->expand = 'Expand'; - $lang->category_group_srls = 'Accessable Group'; - $lang->search_result = 'Search result'; - - // blah blah.. - $lang->about_category_title = 'Please input category name'; - $lang->about_expand = 'By selecting this option, it will be always expanded'; - $lang->about_category_group_srls = 'Only the selected group will be able to see current categories. (Manually open xml file to expose)'; - $lang->about_layout_setup = 'You can manually modify blog layout code. Insert or manage the widget code anywhere you want'; - $lang->about_blog_category = 'You can make blog categories.
    When blog category is broken, try rebuilding the cache file manually.'; - $lang->about_blog = "This is a blog module that can create and manage blog.\nAfter creating a blog, please decorate your blog by category and skin management because this blog module uses layout that is included in the blog skin.\nIf you want to connect other boards inside the blog, use the menu module to create a menu and then connect it with the skin manager"; -?> diff --git a/modules/blog/lang/es.lang.php b/modules/blog/lang/es.lang.php deleted file mode 100644 index 42efddc1e..000000000 --- a/modules/blog/lang/es.lang.php +++ /dev/null @@ -1,33 +0,0 @@ -cmd_blog_list = 'Lista de blogs'; - $lang->cmd_module_config = 'Configuración común de blog '; - $lang->cmd_view_info = 'Información de blog'; - $lang->cmd_manage_menu = 'Manejo del menú'; - $lang->cmd_make_child = 'Agregar sub categoría'; - $lang->cmd_enable_move_category = "Cambiar la posición de la categoría. (arrastrar y soltar luego de haber selecionado)"; - $lang->cmd_remake_cache = 'Rehacer archivo caché'; - $lang->cmd_layout_setup = 'Configuración del diseño'; - $lang->cmd_layout_edit = 'Editar el diseño'; - - // Artículos - $lang->parent_category_title = 'Categoría Superior'; - $lang->category_title = 'Nombre de la categoría'; - $lang->expand = 'Expandir'; - $lang->category_group_srls = 'Limitar el grupo'; - $lang->search_result = 'Resultado de la búsqueda'; - - // bla bla... - $lang->about_category_title = 'Ingresar el nombre de la categoría.'; - $lang->about_expand = 'Si seleccionas esta opción, siempre estará expandido.'; - $lang->about_category_group_srls = 'Solo se verán los grupos seleccionados en la actual categoría. (Abrir manualmente en archivo xml para la exposición)'; - $lang->about_layout_setup = 'Puede modificar manualmente el código del diseño de blog. Insertar o modificar el código de widget.'; - $lang->about_blog_category = 'Puede crear las categorias de blog.
    Cuando no funciona la categoría de blog, rehacer el archivo caché manualmente para solucionar.'; - $lang->about_blog = "Este is el módulo para crear y manejar blog.\nLuego de crear un blog, por favor decora tu blog por categoría y manejo de tema por que este módulo de blog usa el diseño que está incluido en el tema de blog.\nSi desea conectar otros tableros en su blog, usa el menú de módulo para crear un menú y luego conecta con el manejo de temas."; -?> diff --git a/modules/blog/lang/jp.lang.php b/modules/blog/lang/jp.lang.php deleted file mode 100644 index 2cb5bd03f..000000000 --- a/modules/blog/lang/jp.lang.php +++ /dev/null @@ -1,33 +0,0 @@ -cmd_blog_list = 'ブログリスト'; - $lang->cmd_module_config = 'ブログ共通設定'; - $lang->cmd_view_info = 'ブログ情報'; - $lang->cmd_manage_menu = 'メニュー管理'; - $lang->cmd_make_child = '下位カテゴリ追加'; - $lang->cmd_enable_move_category = "カテゴリ位置変更(選択後上のメニューをドラッグして下さい)"; - $lang->cmd_remake_cache = 'キャッシュファイル再生性'; - $lang->cmd_layout_setup = 'レイアウト設定'; - $lang->cmd_layout_edit = 'レイアウト編集'; - - // 項目 - $lang->parent_category_title = '上位カテゴリ名'; - $lang->category_title = 'カテゴリ名'; - $lang->expand = '拡張表示'; - $lang->category_group_srls = 'グループ制限'; - $lang->search_result = '検索結果'; - - // その他 - $lang->about_category_title = 'カテゴリ名を入力して下さい。'; - $lang->about_expand = 'チェックすると常に展開された状態になります。'; - $lang->about_category_group_srls = '選択したグループのみ現在のカテゴリが見えるようになります(XMLファイルを直接閲覧すると表示されます)。'; - $lang->about_layout_setup = 'ブログのレイアウトのコードを直接修正します。ウィジェットコードを好きなところに入力、又は管理して下さい。'; - $lang->about_blog_category = 'ブログのカテゴリを作成します。
    ブログのカテゴリが誤作動する場合、「キャッシュファイルの再生性」を手動で行うことで解決できます。'; - $lang->about_blog = "ブログの作成、および管理できるブログモジュールです。\nブログモジュールはブログスキンに含まれているレイアウトを利用するので生成後必ずカテゴリ、およびスキン管理を用いてブログを編集して下さい。\nブログ内に他の掲示板を連動させたい場合は「メニュモジュール」でメニューを作成した後、「スキン管理」で行ってください。"; -?> diff --git a/modules/blog/lang/ko.lang.php b/modules/blog/lang/ko.lang.php deleted file mode 100644 index 160caaa92..000000000 --- a/modules/blog/lang/ko.lang.php +++ /dev/null @@ -1,33 +0,0 @@ -cmd_blog_list = '블로그 목록'; - $lang->cmd_module_config = '블로그 공통 설정'; - $lang->cmd_view_info = '블로그 정보'; - $lang->cmd_manage_menu = '메뉴관리'; - $lang->cmd_make_child = '하위 카테고리 추가'; - $lang->cmd_enable_move_category = "카테고리 위치 변경 (선택후 위 메뉴를 드래그하세요)"; - $lang->cmd_remake_cache = '캐시파일 재생성'; - $lang->cmd_layout_setup = '레이아웃 설정'; - $lang->cmd_layout_edit = '레이아웃 편집'; - - // 항목 - $lang->parent_category_title = '상위 카테고리명'; - $lang->category_title = '분류명'; - $lang->expand = '펼침'; - $lang->category_group_srls = '그룹제한'; - $lang->search_result = '검색결과'; - - // 주절 주절.. - $lang->about_category_title = '카테고리 이름을 입력해주세요'; - $lang->about_expand = '선택하시면 늘 펼쳐진 상태로 있게 합니다'; - $lang->about_category_group_srls = '선택하신 그룹만 현재 카테고리가 보이게 됩니다. (xml파일을 직접 열람하면 노출이 됩니다)'; - $lang->about_layout_setup = '블로그의 레이아웃 코드를 직접 수정할 수 있습니다. 위젯 코드를 원하는 곳에 삽입하시거나 관리하세요'; - $lang->about_blog_category = '블로그 분류를 만드실 수 있습니다.
    블로그 분류가 오동작을 할 경우 캐시파일 재생성을 수동으로 해주시면 해결이 될 수 있습니다.'; - $lang->about_blog = "블로그를 만드시고 관리할 수 있는 블로그 모듈입니다.\n블로그 모듈은 블로그 스킨에 포함된 레이아웃을 이용하니 생성후 꼭 분류 및 스킨 관리를 통해서 블로그를 꾸미시기 바랍니다.\n블로그내에 다른 게시판을 연결하시고 싶을때에는 메뉴모듈로 메뉴를 만들고 나서 스킨관리에 연결해 주시면 됩니다"; -?> diff --git a/modules/blog/lang/ru.lang.php b/modules/blog/lang/ru.lang.php deleted file mode 100644 index ee7395564..000000000 --- a/modules/blog/lang/ru.lang.php +++ /dev/null @@ -1,33 +0,0 @@ - | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467; - * @brief Russian basic language pack for Zeroboard XE - **/ - - // Слова, использованные в кнопке - $lang->cmd_blog_list = 'Список блогов'; - $lang->cmd_module_config = 'Общие настройки блога'; - $lang->cmd_view_info = 'Иформация блога'; - $lang->cmd_manage_menu = 'Управление меню'; - $lang->cmd_make_child = 'Добавить дочернюю категорию'; - $lang->cmd_enable_move_category = "Изменить позицию категории (Перетащите верхнее меню после выделения)"; - $lang->cmd_remake_cache = 'Перепостроить файл кеша'; - $lang->cmd_layout_setup = 'Конфигурировать лейаут'; - $lang->cmd_layout_edit = 'Редактировать лейаут'; - - // Объект - $lang->parent_category_title = 'Родительская категория'; - $lang->category_title = 'Категория'; - $lang->expand = 'Расширить'; - $lang->category_group_srls = 'Доступные группы'; - $lang->search_result = 'Результат поиска'; - - // blah blah.. или чушь всякая... ;) - $lang->about_category_title = 'Пожалуйста, введите название категории'; - $lang->about_expand = 'Если эта опция выбрана, расширение будут применено всегда'; - $lang->about_category_group_srls = 'Только выбранная группа будет способна видеть ткущие категории. (Вручную откройте xml файл, чтобы сделать видимыми)'; - $lang->about_layout_setup = 'Вы можете вручную изменять лейаут код блога. Вставляйте или управляйте кодом виджетов везде, где хотите'; - $lang->about_blog_category = 'Вы можете сделать категории блога.
    Когда категория блога испорчена, попробуйте перепостроить файл кеша вручную.'; - $lang->about_blog = "Это модуть блогов, который может создавать и управлять блогом.\nПосле создания блога, пожалуйста, украсьте Ваш блог посредством менеджера категорий и скинов, поскольку этот модуль блогов использует лейаут включенный в скин блога.\nЕсли Вы хотите подключить другие форумы внутри блога, используйте модуль меню для создания меню и, затем, подключите его к менеджеру скинов"; -?> diff --git a/modules/blog/lang/zh-CN.lang.php b/modules/blog/lang/zh-CN.lang.php deleted file mode 100644 index 8e93a1f12..000000000 --- a/modules/blog/lang/zh-CN.lang.php +++ /dev/null @@ -1,33 +0,0 @@ -cmd_blog_list = '博客目录'; - $lang->cmd_module_config = '博客共同设定'; - $lang->cmd_view_info = '博客信息'; - $lang->cmd_manage_menu = '菜单管理'; - $lang->cmd_make_child = '添加下级分类'; - $lang->cmd_enable_move_category = "更改分类顺序 (选择后拖动菜单)"; - $lang->cmd_remake_cache = '重新生成缓冲文件'; - $lang->cmd_layout_setup = '布局设置'; - $lang->cmd_layout_edit = '编辑布局'; - - // 项目 - $lang->parent_category_title = '上级分类名'; - $lang->category_title = '分类名'; - $lang->expand = '展开'; - $lang->category_group_srls = '用户组'; - $lang->search_result = '搜索结果'; - - // 信息、提示.. - $lang->about_category_title = '请输入分类名。'; - $lang->about_expand = '选择此项将维持展开状态。'; - $lang->about_category_group_srls = '被选的用户组才可以查看此分类。'; - $lang->about_layout_setup = '可直接编辑博客布局代码。可以把控件代码插入到您喜欢的位置。'; - $lang->about_blog_category = '可以添加/删除博客分类
    博客分类有异常情况时,可以尝试重新生成缓冲文件。'; - $lang->about_blog = "可生成,管理博客的模块。\n博客模块将利用博客皮肤里包含的布局,因此生成博客后尽早布置为适。\n在博客内,想使用其他版面时,可以先在菜单模块当中生成菜单后,在博客皮肤管理中连接即可。"; -?> diff --git a/modules/blog/queries/deleteCategories.xml b/modules/blog/queries/deleteCategories.xml deleted file mode 100644 index 0b5ffd063..000000000 --- a/modules/blog/queries/deleteCategories.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/modules/blog/queries/deleteCategory.xml b/modules/blog/queries/deleteCategory.xml deleted file mode 100644 index 79b75d5c2..000000000 --- a/modules/blog/queries/deleteCategory.xml +++ /dev/null @@ -1,8 +0,0 @@ - - -
    - - - - - diff --git a/modules/blog/queries/getAllBlog.xml b/modules/blog/queries/getAllBlog.xml deleted file mode 100644 index b56e6f6b3..000000000 --- a/modules/blog/queries/getAllBlog.xml +++ /dev/null @@ -1,14 +0,0 @@ - - -
    - - - - - - - - - - - diff --git a/modules/blog/queries/getBlogCategories.xml b/modules/blog/queries/getBlogCategories.xml deleted file mode 100644 index d732b5ca9..000000000 --- a/modules/blog/queries/getBlogCategories.xml +++ /dev/null @@ -1,14 +0,0 @@ - - -
    - - - - - - - - - - - diff --git a/modules/blog/queries/getBlogList.xml b/modules/blog/queries/getBlogList.xml deleted file mode 100644 index d6dd2e60e..000000000 --- a/modules/blog/queries/getBlogList.xml +++ /dev/null @@ -1,24 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - diff --git a/modules/blog/queries/getCategory.xml b/modules/blog/queries/getCategory.xml deleted file mode 100644 index ac2827142..000000000 --- a/modules/blog/queries/getCategory.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - diff --git a/modules/blog/queries/getCategoryInfo.xml b/modules/blog/queries/getCategoryInfo.xml deleted file mode 100644 index 3ebe79059..000000000 --- a/modules/blog/queries/getCategoryInfo.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - diff --git a/modules/blog/queries/getChildCategoryCount.xml b/modules/blog/queries/getChildCategoryCount.xml deleted file mode 100644 index b82d7c15a..000000000 --- a/modules/blog/queries/getChildCategoryCount.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - - - - - - - - diff --git a/modules/blog/queries/insertCategory.xml b/modules/blog/queries/insertCategory.xml deleted file mode 100644 index 9205cdad8..000000000 --- a/modules/blog/queries/insertCategory.xml +++ /dev/null @@ -1,15 +0,0 @@ - - -
    - - - - - - - - - - - - diff --git a/modules/blog/queries/updateCategory.xml b/modules/blog/queries/updateCategory.xml deleted file mode 100644 index f8ea145f2..000000000 --- a/modules/blog/queries/updateCategory.xml +++ /dev/null @@ -1,13 +0,0 @@ - - -
    - - - - - - - - - - diff --git a/modules/blog/queries/updateCategoryParent.xml b/modules/blog/queries/updateCategoryParent.xml deleted file mode 100644 index 3c34004ad..000000000 --- a/modules/blog/queries/updateCategoryParent.xml +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - - - - - - diff --git a/modules/blog/schemas/blog_category.xml b/modules/blog/schemas/blog_category.xml deleted file mode 100644 index ca3165dc4..000000000 --- a/modules/blog/schemas/blog_category.xml +++ /dev/null @@ -1,10 +0,0 @@ -
    - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/comment.html b/modules/blog/skins/xe_blog/comment.html deleted file mode 100644 index 2f05b39ca..000000000 --- a/modules/blog/skins/xe_blog/comment.html +++ /dev/null @@ -1,88 +0,0 @@ - -
    - - {@ $_comment_list = $oDocument->getComments() } - - -
    - -
    - - - - -
    - - {$lang->cmd_delete} - {$lang->cmd_modify} - - {$lang->cmd_reply} -
    - -
    - - {$comment->getRegdate('Y.m.d')} {$comment->getRegdate('H:i:s')} - - - ({$comment->get('ipaddress')}) - -
    - -
    - - - {$comment->getNickName()} - - {$comment->getNickName()} - - -
    {$comment->getNickName()}
    - -
    - - -
    - ({$lang->voted_count}: - {$comment->get('voted_count')}) -
    - - -
    - -
    - - - {$lang->msg_is_secret} -
    - - - - -
    - -
    -
    - - {$comment->getContent(true)} - -
    - - - - - - -
    - -
    - - -
    - diff --git a/modules/blog/skins/xe_blog/comment_form.html b/modules/blog/skins/xe_blog/comment_form.html deleted file mode 100644 index 840b09f3e..000000000 --- a/modules/blog/skins/xe_blog/comment_form.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - -
    -
    -
    {$oSourceComment->getNickName()}
    -
    - {$oSourceComment->getRegdate("Y.m.d H:i")} - - ({$oSourceComment->get('ipaddress')}) - -
    -
    - -
    - {$oSourceComment->getContent(false)} -
    -
    -
    - - - - -
    - -
    fileupload)-->enctype="multipart/form-data" class="blogEditor" > -
    - - - - - - -
    - - - - - - - - - - - - - - useNotify())-->checked="checked" id="notify_message" /> - - - - isSecret())-->checked="checked" id="is_secret" /> - -
    - -
    class="borderTop">{$editor}
    - -
    - -
    - - -
    -
    -
    - - diff --git a/modules/blog/skins/xe_blog/css/blog_tree_menu.css b/modules/blog/skins/xe_blog/css/blog_tree_menu.css deleted file mode 100644 index 2bf3e4a1f..000000000 --- a/modules/blog/skins/xe_blog/css/blog_tree_menu.css +++ /dev/null @@ -1,88 +0,0 @@ - -#blog_category .title_box { position:relative; border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; } - -#blog_category .category_list { padding:.8em 0 .8em 0; } - -#blog_category .node_item a { color:#6b6b6b; } - -#blog_category .selected { font-weight:bold; cursor:default; font-size:1em; color:#54564b; } - -#blog_category .unselected { cursor:pointer; font-size:1em; color:#54564b; } - -#blog_category .document_count { - margin-left:5px; - color:#AAAAAA; - font-size:.8em; -} - -#blog_category .page { - cursor:pointer; - background:url(../images/common/iconList.gif) no-repeat left; -} - -#blog_category .folder_open { - cursor:pointer; - background:url(../images/common/iconFolderClose.gif) no-repeat left; -} - -#blog_category .folder_close { - cursor:pointer; - background:url(../images/common/iconFolderClose.gif) no-repeat left; -} - -#blog_category .item_open { - display:block; - padding-left:18px; -} - -#blog_category .item_close { - display:none; - padding-left:18px; -} - -#blog_category .line_null { - padding-left:13px; -} - -#blog_category .line_open { - display:block; - padding-left:18px; - /*background:url(../images/tree_menu/line.gif) repeat-y left;*/ -} - -#blog_category .line_close { - display:none; - padding-left:18px; - /*background:url(../images/tree_menu/line.gif) repeat-y left;*/ -} - -#blog_category .plus { - padding-left:18px; - /*background:url(../images/tree_menu/plus.gif) repeat-y left;*/ -} - -#blog_category .plus_bottom { - padding-left:18px; - /*background:url(../images/tree_menu/plusbottom.gif) no-repeat left;*/ -} - -#blog_category .minus { - padding-left:18px; - /*background:url(../images/tree_menu/minus.gif) repeat-y left;*/ -} - -#blog_category .minus_bottom { - padding-left:18px; - /*background:url(../images/tree_menu/minusbottom.gif) no-repeat left;*/ -} - -#blog_category .join { - padding-left:18px; - /*background:url(../images/tree_menu/join.gif) repeat-y left;*/ -} - -#blog_category .join_bottom { - padding-left:18px; - /*background:url(../images/tree_menu/joinbottom.gif) no-repeat left;*/ -} - diff --git a/modules/blog/skins/xe_blog/css/common.css b/modules/blog/skins/xe_blog/css/common.css deleted file mode 100644 index d1d225514..000000000 --- a/modules/blog/skins/xe_blog/css/common.css +++ /dev/null @@ -1,293 +0,0 @@ -@charset "utf-8"; - -/* -NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/) -Jeong, Chan Myeong 070601~070630 -*/ - -/** - * Header - **/ - -/* blog Title */ -.blogHeader { border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden; _width:100%;} -.blogHeader h3 { float:left; font-size:1.2em; padding:1em 2em .7em 1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;} - -/* blog Description */ -.blogDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:1em; margin-top:1em;} - -/* blog Information */ -.blogInformation { width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666;} -.articleNum { float:left; padding:0 0 0 15px; } - -/* gallery sub menu */ -.blogSubMenu { margin:0 0 .5em 0; padding:1em 0 .5em .5em; border-bottom:1px solid #e0e1db;} -.blogSubMenu a { text-decoration:none; color:#666666; vertical-align:bottom; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 5px; padding-left:10px; padding-right:10px; _padding-top:5px; position:relative; top:5px; } -.blogSubMenu img.sort { vertical-align:middle; } - -/* list */ -.blogList { width:100%; border:1px solid #e0e1db; border-top:none;} -.blogListNoTopBorder { border:none; } -.blogList th { color:#3e3f3e; font-weight:normal; border-top:1px solid #e0e1db; border-bottom:1px solid #ffffff; padding-top:5px; white-space:nowrap; height:33px; overflow:hidden;} -.blogList th.no_line { background-position:-3px bottom; } -.blogList th a { color:#3e3f3e; text-decoration:none; } -.blogList th.num { border-left:1px solid #ffffff; } -.blogList th.checkbox { text-align:center; } -.blogList th.title { text-align:center; padding-left:1em; } -.blogList th.topic { text-align:left; padding-left:1em; } -.blogList th.category { text-align:left; padding-left:1em; } -.blogList th.category select { vertical-align:middle; width:200px; height:20px;} -.blogList th.reading, th.recommend , th.date { white-space:nowrap;} -.blogList th .sort { padding:0 .2em; vertical-align:middle;} - -.blogList tr.notice { background:#f8f8f8; } -.blogList tr.notice .num { font-weight:bold;} -.blogList tr.bg1 { background:#ffffff} -.blogList tr.bg2 { background:#fbfbfb;} -.blogList td { border-top:1px solid #eff0ed; padding:.5em;} -.blogList td.num { font:.8em tahoma; color:#999999; padding:.5em 1em; text-align:center;} -.blogList td.checkbox { font:.8em tahoma; color:#999999; text-align:center;} -.blogList tr.notice td.num { padding:.5em; white-space:nowrap;} -.blogList tr.notice td.notice { font-size:.9em; color:#999999; font-weight:bold; text-align:center;} -.blogList td.thumb img { border:1px solid #E0E1DB; padding:3px; } - -.blogList td.title {padding-left:1em; } -.blogList td.title strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;} -.blogList td.title.bold { font-size:1.2em; font-weight:bold;} -.blogList td.title.bold a { position:relative; top:.3em;} -.blogList td.title * { vertical-align:middle;} -.blogList td.title, -.blogList td.title a { color:#444444; text-decoration:none;} -.blogList td.title a:visited { color:#777777;} - -.blogList td.topic { padding-left:1em; color:#888888; } -.blogList td.topic strong a { font-size:1.2em; font-weight:bold; text-decoration:none; color:#444444; } -.blogList td.topic strong a:visited { color:#777777; } -.blogList td.topic .category { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 3px; padding-left:.5em; margin-left:.5em; color:#AAAAAA; } -.blogList td.topic div.author { margin-top:.5em; color:#BBBBBB; font-size:0.8em; } -.blogList td.topic div.author strong { font-size:1.2em; font-weight:normal; color:#666666; } -.blogList td.commentCount { font:bold .8em Tahoma; color:#888888; text-align:center; } - -.blogList td.latestPost { color:#888888; } -.blogList td.latestPost div.author { margin-top:.5em; color:#BBBBBB; font-size:0.8em; } -.blogList td.latestPost div.author strong { font-size:1.2em; font-weight:normal; color:#666666; } -.blogList td.latestPost div.date { font-size:0.8em; margin-top:.5em; } -.blogList td.latestPost div.date strong { font-family:Tahoma; font-weight:normal; color:#666666; } - -.blogListNoTopBorder td { border-top:none; border-bottom:1px solid #eff0ed; padding:.5em;} - -.blogList td.webzineTitle { padding-left:1em; color:#777777;} -.blogList td.webzineTitle strong.category { font-size:1em; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat right 3px; padding-right:.5em; margin-right:.5em;} -.blogList td.webzineTitle.bold { font-size:1.2em; font-weight:bold;} -.blogList td.webzineTitle * { vertical-align:middle;} -.blogList td.webzineTitle, -.blogList td.webzineTitle a { color:#444444; text-decoration:none;} -.blogList td.webzineTitle a:visited { color:#777777;} - -.blogList td.summary { border-top:none; vertical-align:top; color:#666666; line-height:1.25em; padding-left:1em;} -.blogList td.summary a { color:#666666; text-decoration:none; line-height:inherit;} -.blogList td.summary a:visited { color:#999999;} - -.blogList td .replyAndTrackback img.trackback { margin-bottom:-.1em;} -.blogList td .replyAndTrackback strong { font:bold 1em Tahoma;} -.blogList td .replyAndTrackback { font:.8em Tahoma; } -.blogList td.author { color:#333333; font-size:.95em; padding-left:1em;} -.blogList td.author a { font-size:1em; color:#333333;} -.blogList td.reading { font:.8em Tahoma; color:#999999; text-align:center;} -.blogList td.recommend { font:bold .8em Tahoma; text-align:center;} -.blogList td.date { font:.8em Tahoma; color:#999999; text-align:center; white-space:nowrap;} -.blogList td input { _margin:-3px;} - -.buttonTypeGo { border:none; cursor:pointer; width:24px; height:20px; _position:relative; _top:3px; font:.75em Tahoma; text-align:center;} -*:first-child+html .buttonTypeGo { position:relative; top:3px; } - -.thumbnailBox { margin-top:1em; clear:both; overflow:hidden; border-bottom:1px solid #e0e1db; } -.thumbnailBox div.cell { display:block; float:left; overflow:hidden; margin-bottom:1em; margin-right:1em;} -.thumbnailBox div.cell img.thumb { padding:2px; border:1px solid #e0e1db; display:block; margin-bottom:1em; margin-left:auto;margin-right:auto;} -.thumbnailBox div.title { color:#3B96C0; margin-bottom:.2em; overflow:hidden; white-space:nowrap; text-align:center;} -.thumbnailBox div.title a { color:#3B96C0; text-decoration:none;} -.thumbnailBox div.nameAndDate { font-size:.9em; color:#999999; margin-bottom:.2em; text-align:center;} -.thumbnailBox div.nameAndDate a { color:#999999;} -.thumbnailBox div.nameAndDate .author { margin-left:auto; margin-right:right; } -.thumbnailBox div.nameAndDate .author div { display:inline; vertical-align:middle;} -.thumbnailBox div.nameAndDate .date { font:.8em Tahoma; color:#999999;} -.thumbnailBox div.readAndRecommend { font-size:.9em; color:#666666; text-align:center;} -.thumbnailBox div.readAndRecommend .num { font:.8em Tahoma;} -.thumbnailBox div.readAndRecommend .vr { color:#dddddd;} -.thumbnailBox div.readAndRecommend strong.num { font:bold .8em Tahoma; color:#ff6600;} - -/* list button */ -.leftButtonBox { float: left; margin-top:1em;} -.rightButtonBox { float: right; margin-top:1em;} - -/* pageNavigation */ -.pageNavigation { display:block; margin-top:1em; text-align:center; font:bold 11px Tahoma; margin-top:1.5em;} -.pageNavigation a { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; } -.pageNavigation .current { position:relative; margin-left:-4px; font:bold 11px Tahoma; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; text-decoration:none; line-height:1em; } -.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; } -.pageNavigation a:visited { color:#999999; } -.pageNavigation a.goToFirst, .pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;} -.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;} - -/* Search Form */ -.blogSearch { margin-left:auto; margin-right:auto; clear:both; text-align:center;} -.blogSearch select { height:20px; } -.blogSearch input { height:18px; } - -/* blogRead */ -.blogRead { padding:0; margin:0; } -.blogRead .originalContent { padding:1.5em .5em .5em .5em;} -.blogRead .readHeader { padding:0 0 .5em 0; margin-bottom:1em; overflow:hidden;} - -.blogRead .blogTitle{ clear:both; } -.blogRead .blogTitle h4 { font-size:1.4em; display:inline; } - -.blogRead .dateAndCategory { float:left; overflow:hidden; white-space:nowrap; font-size:.9em; color:#888888; padding-top:1em; padding-left:.2em; } -.blogRead .dateAndCategory a { text-decoration:underline; color:#666666; } - -.blogRead .userInfo { white-space:nowrap; float:left; color:#3074a5; padding-top:1em; padding-left:.2em; font-size:.9em; margin-left:1em; } -.blogRead .userInfo a { font-size:.9em; color:#3074a5; text-decoration:none; } -.blogRead .userInfo .ipaddress { font-size:.9em; color:#AAAAAA; } - -.blogRead .readedAndVoted { float:right; overflow:hidden; white-space:nowrap; font-size:.9em; color:#888888; padding-top:1em; padding-left:.2em; } - -.blogRead ul.uri { overflow:hidden; margin:0 0 2em .3em; } -.blogRead ul.uri li { font-size:8pt; color:#c5c7c0; } - -.blogRead .contentBody { width:100%; overflow:hidden; } -.blogRead .readBody { padding:0 .3em; color:#555555; overflow:hidden; margin-bottom:2em; clear:both; margin-top:2em;} -.blogRead .readBody p { margin:1em 0; line-height:1.5em;} -.blogRead .readBody .alignLeft { float:left; margin:0 1em 1em 0; } -.blogRead .readBody .alignRight { float:right; margin:0 0 1em 1em; } -.blogRead .readBody .valignCenter { vertical-align:middle;} -.blogRead .readBody .clearBoth { display:block; margin:0 0 1em 0;} -.blogRead .readFooter { padding:0 .3em;} -.blogRead .readFooter .tag { margin-bottom:1em;} -.blogRead .readFooter .tag h5 { display:inline; font-size:1em; margin-right:.5em;} -.blogRead .readFooter .tag ul, -.blogRead .readFooter .tag li { display:inline;} -.blogRead .readFooter .tag a { color:#444444;} -.blogRead .readFooter .tag .tagIcon { vertical-align:middle;} -.blogRead .readFooter .fileAttached { border:1px solid #eaeae7; overflow:hidden; background:#fbfbfb;} -.blogRead .readFooter .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; margin:.5em .5em 0 .5em; line-height:1.5em;} -.blogRead .readFooter .fileAttached ul { float:left; margin-top:.5em; padding-bottom:1em; } -.blogRead .readFooter .fileAttached li { display:inline; margin-right:.75em; line-height:1.5em;} -.blogRead .readFooter .fileAttached li a { text-decoration:none; font-size:.9em; padding:.1em 0 .1em 1.5em; white-space:nowrap; color:#444444; } -.blogRead .readFooter .fileAttached li a:visited { color:#777777;} -.blogRead .buttonBox { float:right; height:40px; margin-right:1em;} - -.blogRead .replyAndTrackbackBox { overflow:hidden; height:40px; float:left;} -.blogRead .replyAndTrackback li { margin-top:10px; _margin-top:8px; margin-left:1em; padding-left:1.4em; float:left; list-style:none;} -.blogRead .replyAndTrackback li.reply { background:url(../images/common/iconReply.gif) no-repeat left top;} -.blogRead .replyAndTrackback li.reply a { _position:relative; _top:-.6em;} -.blogRead .replyAndTrackback li.trackback { background:url(../images/common/iconTrackback.gif) no-repeat left top;} -.blogRead .replyAndTrackback li.trackback a { _position:relative; _top:0em;} -.blogRead .replyAndTrackback a { color:#333333; white-space:nowrap; text-decoration:none;} -.blogRead .replyAndTrackback a#toggleReply { background:url(../images/common/buttonToggleReply.gif) no-repeat right top;} -.blogRead .replyAndTrackback a#toggleTrackback { background:url(../images/common/buttonToggleReply.gif) no-repeat right -13px;} -.blogRead .replyAndTrackback .listButton { position:relative; right: 10px; top:-7px; _top:-6px; float:right;} - -/* extraVars list */ -.extraVarsList { width:100%; border:1px solid #e0e1db; clear:both; margin-bottom:1em; margin-top:1em; border-bottom:none;} -.extraVarsList tr.notice { background:#f8f8f8;} -.extraVarsList tr.notice .num { font-size:.9em; font-weight:bold;} -.extraVarsList tr.bg1 { background:#ffffff} -.extraVarsList tr.bg2 { background:#fbfbfb;} -.extraVarsList th { color:#3e3f3e; font-weight:bold; padding:.8em .5em .5em .5em; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;} -.extraVarsList td { border-bottom:1px solid #e0e1db; padding:.5em .5em .5em 1em; white-space:nowrap; overflow:hidden;} - -.trackbackBox { padding:.6em .6em; color:#666666; border-top:1px dotted #e0e1db;;margin-top:.5em;} -.trackbackBox .trackbackItem { padding:.6em .8em .6em .6em; line-height:1.25em; border-bottom:1px dotted #EEEEEE; list-style:none;} -.trackbackBox p { display:inline; margin-bottom:1em;} -.trackbackBox a { color:#666666; text-decoration:none;} -.trackbackBox div { clear:both; } -.trackbackBox address { display:block; padding:0 .3em 0 0; } -.trackbackBox address a { font-size:.9em; color:#3074a5; margin-right:.3em; float:left;} -.trackbackBox address .date { font:.8em Tahoma; color:#cccccc; float:right;} - -.replyBox { padding:.6em .6em; color:#666666; border-top:1px dotted #e0e1db; margin-top:.5em;} -.replyBox .replyItem { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; border-bottom:1px dotted #EEEEEE; list-style:none;} -.replyBox p { display:inline; margin-bottom:1em;} -.replyBox .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;} -.replyBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; } -.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;} -.replyBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;} - -.replyBox .replyOption { float:right; white-space:nowrap; margin-left:.2em;} -.replyBox .replyOption img { vertical-align:middle;} - -.replyBox .replyContent { clear:left; } -.replyBox .replyContent p { display:block; } -.replyBox .replyContent ul li { padding:0; border:none; line-height:1.25em; list-style:disc;} -.replyBox .replyContent ol li { padding:0; border:none; line-height:1.25em; list-style:decimal;} -.replyBox .reply { background-color:#FAFAFA;} -.replyBox .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;} - -.replyBox .fileAttached { _width:99%; border:1px solid #eaeae7; overflow:hidden; background:#fbfbfb; margin-top:.3em; list-style:none;} -.replyBox .fileAttached ul { float:left; padding:.3em 1em .2em 0; margin-left:.5em; _margin-left:.25em;} -.replyBox .fileAttached li a { font-size:.9em; white-space:nowrap; position:relative; color:#444444; } -.replyBox .fileAttached li a:visited { color:#777777;} - -.commentButton { margin-top:.5em; } - -/* blogEditor */ -.blogEditor { padding:.5em 0 1em 0; width:100%; overflow:hidden;} -.blogEditor.reply { padding:.5em 1em 1em 1em; width:auto; overflow:hidden;} -.blogEditor legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em;} -.blogEditor fieldset { _width:100%; border:1px solid #eaeae7; border-top:none;} -.blogEditor .userNameAndPw { position:relative; background:#fbfbfb; border-top:1px solid #eaeae7; border-bottom:1px solid #e1e1e1; padding:.5em 1em; white-space:nowrap;} -.blogEditor .userNameAndPw * { vertical-align:middle;} -.blogEditor .userNameAndPw label { margin-right:.2em; color:#666760;} -.blogEditor .userNameAndPw input { color:#aaaaaa;} -.blogEditor .userNameAndPw .userName { width:6em; margin-right:.8em;} -.blogEditor .userNameAndPw .userPw { width:5em;} -.blogEditor .userNameAndPw .emailAddress { width:6em;} -.blogEditor .userNameAndPw .homePage { width:6em;} -.blogEditor .userNameAndPw .checkSecret { position:absolute; right:2em; top:.7em;} -.blogEditor .borderTop { border-top:1px solid #eaeae7; } - -/* blogWrite */ -.blogWrite { width:100%; position:relative;} -.blogWrite .userNameAndPw { margin-bottom:-1px;} -.blogWrite .blogEditor fieldset { width:auto; position:relative;} -.blogWrite div.title { border-bottom:1px solid #eff0ed; border-top:1px solid #eff0ed; padding:.5em 0 .5em 1em; white-space:nowrap;} -.blogWrite div.title label.title { display:block; float:left; font-weight:bold; padding:.4em 0 0 1.5em; width:8em; white-space:nowrap;} -.blogWrite div.title input#title { width:60%;} -.blogWrite .option { border-bottom:1px solid #e1e1e1; padding:.5em 0 .5em 1em; overflow:hidden; _height:20px; } -.blogWrite .option dt { display:block; float:left; font-weight:bold; padding:.3em 0 0 1.5em; width:8em; white-space:nowrap;} -.blogWrite .option dd { float:left; margin-right:1em; padding-top:.2em; _padding-top:.1em;} -.blogWrite .option dd * { vertical-align:middle;} -.blogWrite .option dd select { width:7em; font-size:.95em;height:20px;} -.blogWrite .inputTypeText { background:#fbfbfb;} -.blogWrite .trackbackURI { clear:both; border-top:1px solid #eff0ed; padding:4px 0 .8em 0;} -.blogWrite .trackbackURI label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;} -.blogWrite .trackbackURI .inputTypeText { width:50%;} -.blogWrite .tag { clear:both; border-top:1px solid #eff0ed; padding:.8em 0;} -.blogWrite .tag label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;} -.blogWrite .tag .inputTypeText { width:50%;} -.blogWrite .tag .help { vertical-align:middle;} -.blogWrite .tag .info { padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;} -.blogWrite .extra_vars { clear:both; border-top:1px solid #eff0ed; padding:.8em 0;} -.blogWrite .extra_vars label { display:block; float:left; color:#333333; font-weight:bold; padding:.4em 0 0 1.5em; width:11em;} -.blogWrite .extra_vars .info { clear:both; padding:.5em 0 0 .6em; margin-left:14em; font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center;} -.blogWrite .extra_vars ul li { float:left; margin-right:1em; } - -.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; } -.smallBox.w268 { width:268px;} -.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;} -.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; } -.smallBox .complex { padding:1.5em 2em 2em 2em;} -.smallBox .inputPassword { position:relative; border:none; padding:2em 2em 1.5em 2em;} -.smallBox .inputPassword .inputTypeText { float:left; margin-right:.5em; width:8em;} -.smallBox .inputPassword legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;} - - -/* 게시물의 팝업 메뉴 */ -.comment_popup_menu, .document_popup_menu { text-align:right; margin-top:3em; clear:both; display:block; background:url(../images/common/document_menu.gif) no-repeat right top; padding-right:16px; height:18px; } -.comment_popup_menu span, .document_popup_menu span { cursor:pointer; display:inline; background:none; padding:0 0 0 0; margin:0 0 0 0; } - -/* widget common css */ -.blog_widget_ h2 { border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; font-size:1em; color:#54564b; } -.blog_widget_ .items { padding:10px; overflow:hidden;} -.blog_widget_ .items li { font-size:.9em; display:block; color:#a4a4a4; margin-right:.1em; line-height:150%; overflow:hidden; white-space:nowrap; list-style:none; width:100%; padding:3px 0 3px 0;} -.blog_widget_ .items li a { color:#a4a4a4; margin-right:1em; } diff --git a/modules/blog/skins/xe_blog/css/cyan.css b/modules/blog/skins/xe_blog/css/cyan.css deleted file mode 100644 index 93887b1e8..000000000 --- a/modules/blog/skins/xe_blog/css/cyan.css +++ /dev/null @@ -1,40 +0,0 @@ -@charset "utf-8"; - -/* blog Title */ -.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} -.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;} - -#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } -.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} -#bodyWrap #header #globalNavigation li.on a { color:#2895c0;} - -#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/cyan/blogHeaderVr.gif) no-repeat right center;} -#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/cyan/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} - -/* account Navigation */ -#blogAccountNavigation li.join a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; } -#blogAccountNavigation li.myInfo a { background:url(../images/cyan/iconMyInfo.gif) no-repeat left top; padding-left:14px; } - -/* blog Information */ -.articleNum { float:left; background:url(../images/cyan/iconArticle.gif) no-repeat left top; } -.articleNum strong { font:bold 11px Tahoma; color:#2895c0;} - -/* style.list */ -.blogList th { background:#ffffff url(../images/cyan/lineBlogListTh.gif) no-repeat left bottom; } -.blogList td.recommend { color:#2895c0; } -.blogList td .replyAndTrackback { color:#2895c0; } -.buttonTypeGo { background:url(../images/cyan/buttonTypeInput24.gif) no-repeat; } - -/* pageNavigation */ -.pageNavigation .current { color:#2895c0; border-right:1px solid #CCCCCC; } - -/* blogRead */ -blogRead .readFooter .fileAttached li a { background:url(../images/cyan/iconFile.gif) no-repeat left top;} - -/* replyAndTrackback */ -.replyAndTrackback { background:url(../images/cyan/bgBlogListTh.gif) repeat-x left 0px; } -.replyAndTrackback a strong { color:#2895c0;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/cyan/iconFile.gif) no-repeat left;} - -/* widget common css */ -.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/cyan/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/modules/blog/skins/xe_blog/css/green.css b/modules/blog/skins/xe_blog/css/green.css deleted file mode 100644 index 7b5d25aab..000000000 --- a/modules/blog/skins/xe_blog/css/green.css +++ /dev/null @@ -1,41 +0,0 @@ -@charset "utf-8"; - -/* blog Title */ -.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} -.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d0dbd1; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;} - -#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } -.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} -#bodyWrap #header #globalNavigation li.on a { color:#38b549;} - -#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/green/blogHeaderVr.gif) no-repeat right center;} -#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/green/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} - - -/* account Navigation */ -#blogAccountNavigation li.join a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; } -#blogAccountNavigation li.myInfo a { background:url(../images/green/iconMyInfo.gif) no-repeat left top; padding-left:14px; } - -/* blog Information */ -.articleNum { float:left; background:url(../images/green/iconArticle.gif) no-repeat left top; } -.articleNum strong { font:bold 11px Tahoma; color:#ff6600;} - -/* style.list */ -.blogList th { background:#ffffff url(../images/green/lineBlogListTh.gif) no-repeat left bottom; } -.blogList td.recommend { color:#38b549; } -.blogList td .replyAndTrackback { color:#38b549; } -.buttonTypeGo { background:url(../images/green/buttonTypeInput24.gif) no-repeat; } - -/* pageNavigation */ -.pageNavigation .current { color:#38b549; border-right:1px solid #CCCCCC; } - -/* blogRead */ -.blogRead .readFooter .fileAttached li a { background:url(../images/green/iconFile.gif) no-repeat left top;} - -/* replyAndTrackback */ -.replyAndTrackback { background:url(../images/green/bgBlogListTh.gif) repeat-x left 0px; } -.replyAndTrackback a strong { color:#38b549;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/green/iconFile.gif) no-repeat left;} - -/* widget common css */ -.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/green/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/modules/blog/skins/xe_blog/css/layout.css b/modules/blog/skins/xe_blog/css/layout.css deleted file mode 100644 index ba917b378..000000000 --- a/modules/blog/skins/xe_blog/css/layout.css +++ /dev/null @@ -1,81 +0,0 @@ -@et "utf-8"; - -/* -NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/) -Jeong, Chan Myeong 070601~070630 -*/ - -li { list-style:none; } -a { text-decoration:none; } - -/* Blog Layout - Common */ -#bodyWrap { position:relative; width:860px; margin:0 auto; background-color:#FFFFFF; padding-top:1px; top:30px;} - -/* Blog Layout - Content Body */ -#contentBody { overflow:hidden; padding-bottom:2em; _width:100%;} - -/* Blog Layout - ColumnLeft */ -#columnLeft { float:left; width:182px; margin:0px 8px 0px 0px; padding-left:10px;} - -/* Blog Layout - ColumnRight */ -#columnRight {} - -/* Blog Layout - Content */ -#content { float:left; width:650px; overflow:hidden; padding-right:10px; _width:648px; } - -#bodyWrap #accountNavigation { float:right; margin:1em 1em 0 0; padding-bottom:.5em; overflow:hidden;} -#bodyWrap #accountNavigation li a { display:block; float:left; padding:0 .75em; color:#888888; white-space:nowrap;} - -/* account Navigation */ -#blogAccountNavigation { float:right; margin:1em; } -#blogAccountNavigation li { float:left; margin-left:7px; list-style:none; padding-top:3px;} -#blogAccountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;} -#blogAccountNavigation li.setup a { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; } -#blogAccountNavigation li.admin a { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; } -#blogAccountNavigation li.listType { margin-left:5px; } -#blogAccountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; _padding-top:5px;} -#blogAccountNavigation li.write a { background:url(../images/common/iconWrite.gif) no-repeat left center; padding-left:14px;} -*:first-child+html #blogAccountNavigation li.loginAndLogout { padding-top:5px; } - -/* Blog header Child*/ -#bodyWrap #header h1 { font-size:2em; padding:.8em 0 .2em 30px; letter-spacing:-.05em;} -#bodyWrap #header h1 a { font-family:Tahoma; color:#53554a;} -#bodyWrap #header #tagLine { padding:0 0 0 30px; color:#7e7f77;} - -#bodyWrap #header #globalNavigation { float:right; padding:1em 1em 1em 0; overflow:hidden;} -#bodyWrap #header #globalNavigation li { float:left; margin-left:-1px; background:url(../images/common/blogHeaderVr.gif) no-repeat left center;} -#bodyWrap #header #globalNavigation li a { display:block; float:left; padding:0 .75em; font-weight:bold; font-family:Tahoma; color:#54564b; white-space:nowrap;} - -/* Column Left & Right Common Child */ -.boxTypeA { position:relative; border:1px solid #e0e1db; margin-bottom:.7em;} -.boxTypeB h2 { position:relative; border-left:1px solid #ffffff; border-right:1px solid #ffffff; padding:7px 0 0 12px; height:21px; _height:20px; font-size:1em; color:#54564b; font-family:Tahoma;} -*:first-child+html .boxTypeB h2 { height:20px;} -.boxTypeB .toggleMask {position:absolute; top:8px; right:5px; cursor:pointer; width:13px; height:13px; overflow:hidden;} -.boxTypeB .showHide { position:relative;} -.boxTypeB .optionList { position:absolute; top:8px; right:0; overflow:hidden;} -.boxTypeB .optionList li { float:left; padding:0 .5em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center;} -.boxTypeB .optionList li a { color:#a4a4a4; font-size:.9em;} -.boxTypeB .optionList li.on a { color:#000000;} -.boxTypeB .showAll { color:#000000; font-size:.9em; white-space:nowrap; display:inline-block; position:relative; left:1.2em; padding-right:.6em; background:url(../images/common/iconArrow00.gif) no-repeat right center;} - -/* Profile */ -div#profile { padding:10px; overflow:hidden; background-color:#FFFFFF; } -div#profile img.profile { width:160px; display:block; margin-bottom:1.2em;} -div#profile dl#hello {} -div#profile dl#hello dt { color:#333333; margin-bottom:.2em;} -div#profile dl#hello dt a { color:#333333;} -div#profile dl#hello dd { color:#777777; margin-bottom:1em;} -div#profile ul#admin { overflow:hidden; height:1.2em;} - -div#blog_category { background-color:#FFFFFF; } - -/* Search Box */ -div#searchBox { margin-bottom:.7em; overflow:hidden; width:100%;} -div#searchBox fieldset { border:none;} -div#searchBox fieldset legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em;} -div#searchBox .imgBtn {vertical-align:middle; _position:relative; top:-4px; } -*:first-child+html div#searchBox .imgBtn { position:relative; top:-4px; } - -/* powered by zbxe */ -#poweredbyzbxe { text-align:center; margin-top:2em; } -#poweredbyzbxe img { width:138px; height:35px; border:0;} diff --git a/modules/blog/skins/xe_blog/css/purple.css b/modules/blog/skins/xe_blog/css/purple.css deleted file mode 100644 index 34388a176..000000000 --- a/modules/blog/skins/xe_blog/css/purple.css +++ /dev/null @@ -1,40 +0,0 @@ -@charset "utf-8"; - -/* blog Title */ -.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} -.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;} - -#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } -.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} -#bodyWrap #header #globalNavigation li.on a { color:#b1ae00;} - -#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/purple/blogHeaderVr.gif) no-repeat right center;} -#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/purple/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} - -/* account Navigation */ -#blogAccountNavigation li.join a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; } -#blogAccountNavigation li.myInfo a { background:url(../images/purple/iconMyInfo.gif) no-repeat left top; padding-left:14px; } - -/* blog Information */ -.articleNum { float:left; background:url(../images/purple/iconArticle.gif) no-repeat left top; } -.articleNum strong { font:bold 11px Tahoma; color:#b1ae00;} - -/* style.list */ -.blogList th { background:#ffffff url(../images/purple/lineBlogListTh.gif) no-repeat left bottom; } -.blogList td.recommend { color:#b1ae00; } -.blogList td .replyAndTrackback { color:#b1ae00; } -.buttonTypeGo { background:url(../images/purple/buttonTypeInput24.gif) no-repeat; } - -/* pageNavigation */ -.pageNavigation .current { color:#b1ae00; border-right:1px solid #CCCCCC; } - -/* blogRead */ -.blogRead .readFooter .fileAttached li a { background:url(../images/purple/iconFile.gif) no-repeat left top;} - -/* replyAndTrackback */ -.replyAndTrackback { background:url(../images/purple/bgBlogListTh.gif) repeat-x left 0px; } -.replyAndTrackback a strong { color:#b1ae00;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/purple/iconFile.gif) no-repeat left;} - -/* widget common css */ -.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/purple/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/modules/blog/skins/xe_blog/css/red.css b/modules/blog/skins/xe_blog/css/red.css deleted file mode 100644 index 1737da23e..000000000 --- a/modules/blog/skins/xe_blog/css/red.css +++ /dev/null @@ -1,40 +0,0 @@ -@charset "utf-8"; - -/* blog Title */ -.blogHeader { position:relative; _width:100%; border-top:1px solid #d1d9db; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} -.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ed135a; background:url(../images/common/lineH3.gif) no-repeat right bottom;} - -#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } -.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} -#bodyWrap #header #globalNavigation li.on a { color:#fe3614;} - -#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/red/blogHeaderVr.gif) no-repeat right center;} -#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/red/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} - -/* account Navigation */ -#blogAccountNavigation li.join a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; } -#blogAccountNavigation li.myInfo a { background:url(../images/red/iconMyInfo.gif) no-repeat left top; padding-left:14px; } - -/* blog Information */ -.articleNum { float:left; background:url(../images/red/iconArticle.gif) no-repeat left top; } -.articleNum strong { font:bold 11px Tahoma; color:#ff6600;} - -/* style.list */ -.blogList th { background:#ffffff url(../images/red/lineBlogListTh.gif) no-repeat left bottom; } -.blogList td.recommend { color:#ff6600; } -.blogList td .replyAndTrackback { color:#ff6600; } -.buttonTypeGo { background:url(../images/red/buttonTypeInput24.gif) no-repeat; } - -/* pageNavigation */ -.pageNavigation .current { color:#ff6600; border-right:1px solid #CCCCCC; } - -/* blogRead */ -.blogRead .readFooter .fileAttached li a { background:url(../images/red/iconFile.gif) no-repeat left top;} - -/* replyAndTrackback */ -.replyAndTrackback { background:url(../images/red/bgBlogListTh.gif) repeat-x left 0px; } -.replyAndTrackback a strong { color:#ff6600;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/red/iconFile.gif) no-repeat left;} - -/* widget common css */ -.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/red/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/modules/blog/skins/xe_blog/css/white.css b/modules/blog/skins/xe_blog/css/white.css deleted file mode 100644 index f0e834389..000000000 --- a/modules/blog/skins/xe_blog/css/white.css +++ /dev/null @@ -1,40 +0,0 @@ -@charset "utf-8"; - -/* blog Title */ -.blogHeader { position:relative; _width:100%; border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden;} -.blogHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-bottom:3px solid #fe3614; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;} - -#blog_category { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } -.boxTypeB { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em;} -#bodyWrap #header #globalNavigation li.on a { color:#fe3614;} - -#bodyWrap #accountNavigation li { float:left; margin-right:-1px; background:url(../images/white/blogHeaderVr.gif) no-repeat right center;} -#bodyWrap #header { clear:both; height:9.5em; margin:10px 10px .5em 10px; border:1px solid #e0e1dc; border-bottom:none; background:#fbfbfb url(../images/white/blogHeaderLine.gif) no-repeat left bottom; overflow:hidden;} - -/* account Navigation */ -#blogAccountNavigation li.join a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; } -#blogAccountNavigation li.myInfo a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; } - -/* blog Information */ -.articleNum { float:left; background:url(../images/white/iconArticle.gif) no-repeat left top; } -.articleNum strong { font:bold 11px Tahoma; color:#ff6600;} - -/* style.list */ -.blogList th { background:#ffffff url(../images/white/lineBlogListTh.gif) no-repeat left bottom; } -.blogList td.recommend { color:#ff6600; } -.blogList td .replyAndTrackback { color:#ff6600; } -.buttonTypeGo { background:url(../images/white/buttonTypeInput24.gif) no-repeat; } - -/* pageNavigation */ -.pageNavigation .current { color:#ff6600; border-right:1px solid #CCCCCC; } - -/* blogRead */ -.blogRead .readFooter .fileAttached li a { background:url(../images/white/iconFile.gif) no-repeat left top;} - -/* replyAndTrackback */ -.replyAndTrackback { background:url(../images/white/bgBlogListTh.gif) repeat-x left 0px; } -.replyAndTrackback a strong { color:#ff6600;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/white/iconFile.gif) no-repeat left;} - -/* widget common css */ -.blog_widget_ { position:relative; border:1px solid #e0e1db; background:url(../images/white/bgBoxTypeB.gif) repeat-x left top; margin-bottom:.7em; } diff --git a/modules/blog/skins/xe_blog/delete_comment_form.html b/modules/blog/skins/xe_blog/delete_comment_form.html deleted file mode 100644 index d2d0ba4e2..000000000 --- a/modules/blog/skins/xe_blog/delete_comment_form.html +++ /dev/null @@ -1,24 +0,0 @@ - - - -
    - -
    -

    {$lang->confirm_delete}

    -
    - -
    - - - - - - - -
    -
    - - diff --git a/modules/blog/skins/xe_blog/delete_form.html b/modules/blog/skins/xe_blog/delete_form.html deleted file mode 100644 index 1ca638c93..000000000 --- a/modules/blog/skins/xe_blog/delete_form.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -
    - -
    -

    {$lang->confirm_delete}

    -
    - -
    - - - - - - -
    -
    - - diff --git a/modules/blog/skins/xe_blog/delete_trackback_form.html b/modules/blog/skins/xe_blog/delete_trackback_form.html deleted file mode 100644 index f907b6793..000000000 --- a/modules/blog/skins/xe_blog/delete_trackback_form.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -
    - -
    -

    {$lang->confirm_delete}

    -
    - -
    - - - - - - - -
    -
    - - - diff --git a/modules/blog/skins/xe_blog/extra_var_form.html b/modules/blog/skins/xe_blog/extra_var_form.html deleted file mode 100644 index 564cec9d9..000000000 --- a/modules/blog/skins/xe_blog/extra_var_form.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - {@ $val->default = explode(',',$val->default) } - - - -{@ $val->column_name = "extra_vars".$key} - - -{@ $val->value = $oDocument->getExtraValue($key)} - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
    • value)&&in_array($v, $val->value))-->checked="checked"/> {$v}
    • - -
    - - - - - - - - - -
    {zdate($val->value,"Y-m-d")}
    - {$lang->cmd_open_calendar} - - - -

    {$val->desc}

    - diff --git a/modules/blog/skins/xe_blog/extra_var_value.html b/modules/blog/skins/xe_blog/extra_var_value.html deleted file mode 100644 index fd889bab2..000000000 --- a/modules/blog/skins/xe_blog/extra_var_value.html +++ /dev/null @@ -1,63 +0,0 @@ - - - -{@ $val->column_name = "extra_vars".$key} - - -{@ $val->value = $oDocument->getExtraValue($key)} - - - - {htmlspecialchars($val->value)} - - - - - {$val->value} - -   - - - - - - {$val->value} - -   - - - - - {htmlspecialchars($val->value[0])} - - - {htmlspecialchars($val->value[1])} - - - {htmlspecialchars($val->value[2])} -   - - - - {nl2br(htmlspecialchars($val->value))} -   - - - - {@ $val->value = array($val->value) } - - {@ $_tmp_value[] = htmlspecialchars($v)} - - {implode(",",$_tmp_value)} -   - - - - {htmlspecialchars($val->value)} -   - - - - {zdate($val->value,"Y-m-d")} -   - - -  diff --git a/modules/blog/skins/xe_blog/filter/delete_comment.xml b/modules/blog/skins/xe_blog/filter/delete_comment.xml deleted file mode 100644 index 86ca3fb71..000000000 --- a/modules/blog/skins/xe_blog/filter/delete_comment.xml +++ /dev/null @@ -1,18 +0,0 @@ - -
    - - - - - - - - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/filter/delete_document.xml b/modules/blog/skins/xe_blog/filter/delete_document.xml deleted file mode 100644 index 263ca7e86..000000000 --- a/modules/blog/skins/xe_blog/filter/delete_document.xml +++ /dev/null @@ -1,16 +0,0 @@ - -
    - - - - - - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/filter/delete_trackback.xml b/modules/blog/skins/xe_blog/filter/delete_trackback.xml deleted file mode 100644 index 1d8841ba3..000000000 --- a/modules/blog/skins/xe_blog/filter/delete_trackback.xml +++ /dev/null @@ -1,18 +0,0 @@ - -
    - - - - - - - - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/filter/input_password.xml b/modules/blog/skins/xe_blog/filter/input_password.xml deleted file mode 100644 index f2d1c0c42..000000000 --- a/modules/blog/skins/xe_blog/filter/input_password.xml +++ /dev/null @@ -1,16 +0,0 @@ - -
    - - - - - - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/filter/insert.xml b/modules/blog/skins/xe_blog/filter/insert.xml deleted file mode 100644 index 254dad45d..000000000 --- a/modules/blog/skins/xe_blog/filter/insert.xml +++ /dev/null @@ -1,17 +0,0 @@ - -
    - - - - - - - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/filter/insert_comment.xml b/modules/blog/skins/xe_blog/filter/insert_comment.xml deleted file mode 100644 index 7dd555f50..000000000 --- a/modules/blog/skins/xe_blog/filter/insert_comment.xml +++ /dev/null @@ -1,30 +0,0 @@ - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/modules/blog/skins/xe_blog/footer.html b/modules/blog/skins/xe_blog/footer.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/blog/skins/xe_blog/header.html b/modules/blog/skins/xe_blog/header.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/modules/blog/skins/xe_blog/images/common/bgBlogEditorOption.gif b/modules/blog/skins/xe_blog/images/common/bgBlogEditorOption.gif deleted file mode 100644 index 559588af6ee1f78ce574ea40937167cc850200b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2506 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 XFDnrMOYYe#m#|lX3-^OTprro-dT-f8 diff --git a/modules/blog/skins/xe_blog/images/common/bgEditorFileList.gif b/modules/blog/skins/xe_blog/images/common/bgEditorFileList.gif deleted file mode 100644 index e5050341cbe466ac6e3dcc69d523ba79c3488d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60 zcmZ?wbhEHbWM$A}XkcLY{rmU-|Nj+#vM_*v4u}BBFfa+X^shYqmVa@{!du;&@9p`` K-xkZrU=09H92D{Z diff --git a/modules/blog/skins/xe_blog/images/common/bgH3.gif b/modules/blog/skins/xe_blog/images/common/bgH3.gif deleted file mode 100644 index 0d07bb456e10b535227875f571d18e92c50d4530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2778 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 F{{iBWh`Rs) diff --git a/modules/blog/skins/xe_blog/images/common/blank.gif b/modules/blog/skins/xe_blog/images/common/blank.gif deleted file mode 100644 index 35d42e808f0a8017b8d52a06be2f8fec0b466a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ diff --git a/modules/blog/skins/xe_blog/images/common/blogHeaderVr.gif b/modules/blog/skins/xe_blog/images/common/blogHeaderVr.gif deleted file mode 100644 index 9480e8106b2acbd680ad24ed3efc4028e33a22b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 tcmZ?wbhEHbWMtrCXkcJCcKiSX1B2pE79h#MpaUX6G7L=2E&Z$v)&Rfb2QB~r diff --git a/modules/blog/skins/xe_blog/images/common/bottomGotoFirst.gif b/modules/blog/skins/xe_blog/images/common/bottomGotoFirst.gif deleted file mode 100644 index e0297fecbe6666e8076cf1c4bd48571dc826c5f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmd@Ll<#=3_e}661_o;Y DN%IX& diff --git a/modules/blog/skins/xe_blog/images/common/bottomGotoLast.gif b/modules/blog/skins/xe_blog/images/common/bottomGotoLast.gif deleted file mode 100644 index 0a7141d0d51a0dcece12d04038c8f846f0ae56c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmbu$G48y@J<;=(2!k~M DKokru diff --git a/modules/blog/skins/xe_blog/images/common/bullet_3x3_d8d8d8.gif b/modules/blog/skins/xe_blog/images/common/bullet_3x3_d8d8d8.gif deleted file mode 100644 index c1f2452279d4fad7bb33b39ad34fc195580dee63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 tcmZ?wbhEHbWM*JyXkcKtapML91B2pE79h#MpaUX6G7L=2E%mGn)&Rw+2TuS1 diff --git a/modules/blog/skins/xe_blog/images/common/buttonAscending.gif b/modules/blog/skins/xe_blog/images/common/buttonAscending.gif deleted file mode 100644 index b405cc323ce8d1f8f7636797a57884a8d71eb6ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMyDxXkcXM>2Lf0|G(l-7DfgJMg|=QAOOiQFtPe1u2Lf0|G(l-7DfgJMg|=QAOOiQFtN7CigQOZSOWkJ#tDP~ diff --git a/modules/blog/skins/xe_blog/images/common/buttonHelp.gif b/modules/blog/skins/xe_blog/images/common/buttonHelp.gif deleted file mode 100644 index d330e801f0e71f8cbcb623ad20ddb57091d15305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmZ?wbhEHbeZ{n#KddYuKfoC1{hHM$->CMz`~#d5&)@XVAk^3bZ1e* t3Cn|vBJN36&A5HR^Rd9R)DyL{8m8v9tyGc@-k|C7DM6EuU6GN&8UQZyBn1Ef diff --git a/modules/blog/skins/xe_blog/images/common/buttonTextAreaDrag.gif b/modules/blog/skins/xe_blog/images/common/buttonTextAreaDrag.gif deleted file mode 100644 index 148e9ee10cfe96dd8fcdab82291e8131de0083b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmZ?wbhEHb6ky Xp5Od!Ni%W-Qj~(9Y*wAuirlZ z{Q3RU=MUe$efjk1{jXm?K7aZ6{rlHHe|~@X@b>rbpS$;NyK(dCe=uO65>Wif!pOj& z&Y%M_59B8XwgU%(Gd*;q`j-YDO~|sEAFyJflR@jc8*9R{l`MQ_Y^d;2n=K=7Ipb{J z?z?Ipho7vx{k~$)%83S<{~8*bn$$SC)fhXwx_f%mxcSu-CQq3moHyFfByXY_wT*?w(s4$ z_s^d{bLY;@&(GhpXU~BH2No?_v})C=pFe-DS+gcHGjrd*egDCL0S8e0$->CMAkLrz zk_Xwzz#95MwJ#-dZm`taH4%{oJjxtT4>c*g-BY`FT3drd3j>o~YpMW)1W)_ni_ax^ xB)Z)fPMGn}Z|W2aS54;B3~pAAJm%|$-zDYPPiqK&;q3Ka{xLbVsacW18UQE$U|s+K diff --git a/modules/blog/skins/xe_blog/images/common/find_button.gif b/modules/blog/skins/xe_blog/images/common/find_button.gif deleted file mode 100644 index 7520ec3f4c729d727cad6e5d63dcf17cdf439f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1187 zcmd^;2~Sf80DvEejHwa@O}9*vIv(GOG1DU zV1EGE*>M~l9XOpkdwaXv+gmQz-tO*payZ80ad|wRg9FdT#+&XRvUPfuu%%*@%@mBi z=J7||Zg(fO%4{+2@9(etG2hzTb9i`&y^w(YIOS~8XI`({IHffhHEIna6mg&aN>|%# z3fpfkmuqfuF_YFApLOjv^;tfXx4!gPF`}5bKP=&JhwKaUq&jltE6$vK z#%P(APiiNmLcU-G(wn>PWmzni99nx)(bqhUws(kaHk%%`cZ~@-`OOTLOpaJ>EV&Za zsqc5PlordCpQ=*JtJNA4~ggHowLiPViD8ZE*fWaiO2QobzVaM^s7YSLtoPwLn#hH-Yr zV441k(%dc@e^~M4R&A@^WYB08R_3 z7m`hO_haJlg-fJX+^M2cH*U>9Wp)QNMK%Wqz0AEqD2iP!rGkmoih@x7BWrX4<PnZGkT4ECz?22ntLAoC^e0 z0pu6GM1=4#G0ejtWuwEP2Rbr};DV01-j`hk?&49z8f+(rcloegXr7H2^m89IpTX diff --git a/modules/blog/skins/xe_blog/images/common/iconArrowD8.gif b/modules/blog/skins/xe_blog/images/common/iconArrowD8.gif deleted file mode 100644 index fe3143edc992334d34a18240b76e4d246b1767e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWM*JxXkcWxapT7S|Nj+#vM@3*Ff!;c00Bsbfr-_HXJT`|sbs z?K{_f`uz6O=Xakzefa(R=Z+og&R;y-)8EnE*ZTR(``!ti+qSKlJ8wqcgw_j}j(`60 z?$4ipfByVBe`){r9UFT3nm>Me^Xu2I-u|wSpWa@)eC+4XpMCx9y?veAwy)p1ZC!U? z^VaQaw(VHk+t>CV3>ZiRia%Kx85r~#bU^w*eqvyYJ21V#Lr1DpG9)W8a*d7b^n$0W z)I`>?yQ!q?bYoyUdU4f?U0joy7g%yKUAnHNm| diff --git a/modules/blog/skins/xe_blog/images/common/iconFolderClose.gif b/modules/blog/skins/xe_blog/images/common/iconFolderClose.gif deleted file mode 100644 index 3a780968dcb14bb4b3e77ba67aefd6ee28d28d76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmZ?wbhEHbB`*t0Nr>n!hmi$m8>cAZtGHLFBxR;kwh#i6r{HRshC&Z*K{J;7;Knf9y8 zb#topx6bt5Jkx7lz0vFno!R9&YbH89JX!qX*PV~I8a_Yn`SyP9hg&^QpFaKZW7U5! zU?3ML{$ycfV9)_VAOQJ^fi2hJT7m#aNW=*hBZsU>0eq=KMYnp^Ep|Ds9H1b+dP4*c zLq|kUXy)0p)jTVYpK@7$J+yU7Lg}mDf3@T_1+}%>+B;-4C0jfC6gAm;``Se`S^YI; h&7Q@;qNyX!E5V^4B_zzwBBr@OXYGcKYjqqMtN|c$dRzbi diff --git a/modules/blog/skins/xe_blog/images/common/iconH3.gif b/modules/blog/skins/xe_blog/images/common/iconH3.gif deleted file mode 100644 index 8ea0cec82bd3a1c190ea2e15cfb02bee0cb107ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58 zcmZ?wbhEHbWM|-JXkcXcXD0Ih|9{1wEQ|~cj0`#qKmd|qU=rkM;+TDEFJFyjSk_#V KkgWj>4AuaqBo2ZA diff --git a/modules/blog/skins/xe_blog/images/common/iconList.gif b/modules/blog/skins/xe_blog/images/common/iconList.gif deleted file mode 100644 index 2e67636f5f1e2de38349d57b6cc0102b612bd549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmbu6*-jHt0ESQ5ilOd`YgAlfUE?l@OWi=k1=qMl6uQoUk6>bAC^Hi;Du|bA!v%EO zrlp!#tt4e=;;oOM>72o6Lid?-W;rAE75pCH%m3x??CNN3>$3qHkZ2$XJRt-t$j{O& z`?Oe^Pp00dQo$i^P?CN@>8D{Bnu;ow62{mx4MOy^z(=P73^N$w85LoZn3+tZkpH7% zWhyaBbo0Z<*I6i51mm$l zGWFK~l2%YjRrO*qFUxW)9)NSw%xskBnaRkop(_ZXP}tA01E#6vbH9mc3YnNrG>o7bCFSQsnJL{gs@62@6>KomtqF7siQ4{-`AA|#i}xmh79%Vn1HX;@`BT9QNv=NOh6 z@_SgA06>GiRZaC1 zU>$khdA{M{`i&2ctk}Je-gWkjg&JAr+<~uU32TQwb|9Ws^!Ynb=~)T z4X3D0J@tF)-8bv*S}BVI+~~OAJ<#vjPc=PWyYu)J^W+%tUR&vDf3(5t zzJAzSv$NJ`zwNxZqwnB0TU+Czw7DnK1`w{|mdd BEt~)V diff --git a/modules/blog/skins/xe_blog/images/common/iconNotice.gif b/modules/blog/skins/xe_blog/images/common/iconNotice.gif deleted file mode 100644 index d32027496edbd1e36f1a66fdffc4b13920fc04eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 452 zcmZ?wbhEHblwlBJxT?bN^XHF0e|}%Ndhy!zOBXMly?o{Tk)!(#9o}=`;O@QqwjVuy z;Q5PZ=P#T-dFtrdb0?3VJbeAem4E;K?K`mZ^qJ#7etiA<_4D`dU%!6)^85GC-@kwV z`t{?>mrwux{r&Od``^ERzI^?(XYaNfH?P_|IQ$0#25JMvpDc_F3@QvdAcH}EVqkmd z5R~DeBh~LFlwz1=HUGkjVn)dxr8#TLPQNWuTHKiMM057}7h5V-Gtq}1Hnpv=OfEYZ`e)YmJ~KcPpNhfi5*)@-HO^Q7j^nXSwxtjw^YqI4yL z(u%d~m4$hgWw&kLu|r9A_qM&V%Dnu_B1ex_91~GGe&(n$KbNxDWih2Im#!eg5pFxH22Nvgqf}6<@x8QTn3H&Y>*Nz|1A%Veo*1MJOvb;>3o9 ghuftaJUs-Qx{h`$3Qb@*xN-6Eeg*qU983(>06wa}>i_@% diff --git a/modules/blog/skins/xe_blog/images/common/iconReply.gif b/modules/blog/skins/xe_blog/images/common/iconReply.gif deleted file mode 100644 index a6d4ea1121211408d08f4b3a5d63dd7b34583408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmZ?wbhEHbN%7tf3>tvlao HGFSrug{Tj~ diff --git a/modules/blog/skins/xe_blog/images/common/iconRss.gif b/modules/blog/skins/xe_blog/images/common/iconRss.gif deleted file mode 100644 index eec2d5eadd13702c64e1e53d618694f46b8761ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 988 zcmeH`?JpE?0LOpl#EHutF1a)A9OrPRyHtmg$McXEO}$C8N^K08dEU_-cjpRGw;pJe z%P?d}nvt=IVYPTsDsNKE%xbGwt@iW#HvdB}`}_f)7oY8ulBUx}UFH)$`DG)tN=1!f z)DTL|T5L>Hdp^c8s9puLCu&^r;2=ywJc@+Djh2Yf>V@eF+*DFy1g6T-EXMjc8hv(~ zHR#sT(m)isq5l-FIpE6-v-+VxfW`yp@WCB1hLf@L8urB99A{SU%SyeOF@RM|@Hh!0 zDr$|v)*|bRpfw@8cjGZ>W=4N}9AE|?^vckyKu_Pbc4t-KQKaYE! z7&(Jay{v#w>!Z+ll-5MBG7;|k?iTseN(Cm%QR0E8f#{O6VliGG!E81*W^l_B<7zz9 zQj40^`NATkrsFJEi1|j=7=qDYYSm#NAEODVbiwFVOqr=Q5ditmKPn*m?Z_d-MpS#g zy(b87g2>}Nyri{+lXa<>!%bUvjlEd1IZ+~S5FPWDz941Y&h9#y*UFP03+4_*!yiFk z!aQG~;qmy<Q-2M9)259yB(2+Lmxv^KHBPFI&v+P+y(RFm zJM*1{EzyJ8NXKOfsjnzZEzPZKO1^D6q2|QRa-DKVls4NwmzL-RO`L{1n_$*uM%EnO id{q~asusL&vpLK+oV@VOE04G2+P!R#Pub5SF@FJTrB=-V diff --git a/modules/blog/skins/xe_blog/images/common/iconSetup.gif b/modules/blog/skins/xe_blog/images/common/iconSetup.gif deleted file mode 100644 index 33b41da114321534bd1766c254b371ad88f5290a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmZ?wbhEHb=;&9kUTxU0;pWYoMMXuuy}dCpG5`PnXTSy&f3h$# zFmN#FfFwa?FtB(Ccvha7^ME5{q6I@}$kf7~OX(sxiFq6w*$xZrU@4!&?8vitZeoOl oM}u>7e%Nl!;#JeUm6dq?**)DHRtVTFoY9~B@u^-?2@8WY02oR!hyVZp diff --git a/modules/blog/skins/xe_blog/images/common/iconTag.gif b/modules/blog/skins/xe_blog/images/common/iconTag.gif deleted file mode 100644 index ecfdb55859051454691642fb4e651752bc5e701f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmV;;05bnaNk%w1VG#fd0K^^uu9kJOh-BZ>#Pj5z|NiW*f?KYSZLfh@uZ3Q)jAr@p zxUPU$u90u9lyuRxh4kmH|M|wUkZie=X|9rR!k~7xj%eDyfc5C7u9I=@+Km7F-L8{! z|NsC0`M>}F{{R30A^8LW0015UEC2ui01*HR000F_pa6``hE0rNcx=0Ia4bhHyAfTk zXB|W&wT(u%>s%Cs0wUlM5_7x*MdBz30?uc&@~|vC*r8T8*to<*UZ)&HKiM_GW=^ly HSRnvA#^+^8 diff --git a/modules/blog/skins/xe_blog/images/common/iconTrackback.gif b/modules/blog/skins/xe_blog/images/common/iconTrackback.gif deleted file mode 100644 index 1c83bcaddc58ad1998c8c736b43cf10a3a5784dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmZ?wbhEHbx$EBYXQ_&R4kRctGFSrukAx=L diff --git a/modules/blog/skins/xe_blog/images/common/iconWrite.gif b/modules/blog/skins/xe_blog/images/common/iconWrite.gif deleted file mode 100644 index f18cb5e9e525a0a989280515567015fe88cff599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmZ?wbhEHbmPP08Uer9VvdUNvgiFq?THNKpj_jbAK=0l5T zOb_p#8ulwo`|GI%k6#~~H7znTC2NkG_Jh|a51l;!=k@hl_a1KCee`6l(eGQkzu(%m zY{Sk)Yj(V-k3Vi@uzgz3IU6 znVuS7fi_Ny{C;cC%&B3s-LP=>OMUB+|n}QUUFh)jSSWR)~K_T diff --git a/modules/blog/skins/xe_blog/images/common/lineH3.gif b/modules/blog/skins/xe_blog/images/common/lineH3.gif deleted file mode 100644 index fe42fe3781237403eca94635261e9596fd922c1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45 ucmZ?wbhEHbWMmLwXkcJ?`0y?R1B2pE79h#MpaUX6G7L;CE&VfD8LR=-2na3! diff --git a/modules/blog/skins/xe_blog/images/common/lineTextAreaDrag.gif b/modules/blog/skins/xe_blog/images/common/lineTextAreaDrag.gif deleted file mode 100644 index 3df035047511b99c43c7533ec5d96d5233c069b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMN=oXkcV`|KaWb|Nj+#vM@3*Ff!;c00Bsbfr+(6aAjoxgEas*M+=w$ diff --git a/modules/blog/skins/xe_blog/images/common/line_1x10_e0e0e0.gif b/modules/blog/skins/xe_blog/images/common/line_1x10_e0e0e0.gif deleted file mode 100644 index 6a848dd581e9ecdf86112d9e89d590c2a18c3296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 tcmZ?wbhEHbWMtrCXkcJ?@ZbRh1B2pE79h#MpaUX6G7L=2E&Z$v)&R+u2Y~

    r001Kh0ssI2#P$Uh00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU_YDq*vRCwBA z{Qv(y!zdW603d*vMuT851AqX+5xw&&DGp^_N2n_#!25Z)USph+vzRIHR4L5>7L(h<| zA3P_Zlg?Vpdmlo$t_$&btCS+8?7gGxy?KA%Hz^+s#u!2*%33SpoD-d+5CS9n)>_V4 zDK*A`E1XhF&N=XCtWQFWM zjyI2*~(0!$}uZbwhy#;F|OidgS8gmDSfG4RloWgTmi_fgA)Kk7>J^+ zr2qbM-v=LL4|d>9#6+0Mcf9}Hpg@s=#2}m5yeU8E+c6WJvZT)*y4wL z0HXxb1_5$$RV2U|0vZLW)qskD84i;9Mq2a$1Q3?!0fq%IR)7Hq4_O?&7%;*3kC6dV zLIO)CCLF4O6tFeH3={kJpMi-HLP8B;fG`*s!5SDrM!};N*n$Vvf55mwj_eTv00M|{ zbWmq71AqV;9n=}r03d)yqi0Y9fB<44L(lL3znB==K=s4tkH3x|Wx0Be;l(p1CX`xX zyQ%Xg_Z&Y5IJ?v zPX-3&KY#wupT<0A%HNx}nf@~T1K0YzZGEDZFD z9$>iKzH}6xAK_(V{`{M1?zQ_3r!W5b z$NZn+ADtRJjEuK#-SYPGiHeE>_J0|{fOgg`T)fE2%BrQM1u|-N|Ni}Z_wGG-@Br8u zV4$qw1rUG|D_B7w1fsR81wr*`{X!q-eJ|U^Pw5nN3KHtLIy3g%A(8f!g6JC^VVtMV z{Bb-i5xk+-bA3LUaabztbg8*s4m3=GGBPB8K`Ow0%g29_In2nHksQdM$*k>-(*?F(hxY#FS4qt z)Qxzj>;RsIo&P`jJAEV>-`stdm{6G~u7v^%JoPs*0k(T-S8~M7Art zkJ_><(V$%A;dF|0Rst>g=33t0;`}O!OA{rgN$5UC^V2xHkjIDB{jJ&D5c5~{`xws7 zlj9Q|eF-2EqURqY6XW`&j4M|&@-l;r19dAI{(T2V2qP043%D-{&SY#H*Hl%SLNcBR zi17aS&BXAZ^&cZEGvnvQMMZEtVS$jAUj~I4fA{WPU>r=CFaf9qX#0#AGZrsi{QC84AR8DB_4V~O zHa5VJ-M)SMv}x0Tih=O~)a&5j(9zKWG#O}hS65eMW##qj*VnFH3(PA(_Y@Qq+`M^H zP*Bj?+8UTXgoTA6!&i`jE>Jr7&j^J78U8Y=ssHV6VUA2-6qg3};(^Kce|i+K8vZXW z&%AE=zp6$CRUK#u{{e;JKQU2wm;(f$#Ef|=gn>BzNMj|kfkQjxDNQ^qNFf*7yLZVyWa}jy?f7Iw~(=POSSMGPcYxagq5$U)pea^nP6kvHZ1D84(C=?M z0tJEI28KH@&C1KmLy9$E0RkE426Ds0!>3Q54h&gfxNvfE0<#)WrLwXzu)qPv0i>9^ zdi5$WMFTbV_VzAVumETvP!^~iXwIxzvw(&~M@Iv7xw*Lk*}#|p2Kv5z`+#K{Fk*n> zKr0~Qjlit)?AbG5Tmrek6a#E%0Am-(K79Bv#OjqRR|4G+%=(&|n($dGMi^iMu|Xls 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 diff --git a/modules/blog/skins/xe_blog/images/cyan/bgBlogListTh.gif b/modules/blog/skins/xe_blog/images/cyan/bgBlogListTh.gif deleted file mode 100644 index aebba7b599044aad3e438e71517418ac6fdd3dc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmZ?wbhEHbWMzR_7lz4whVaVxJoGgt!vzaDs0 diff --git a/modules/blog/skins/xe_blog/images/cyan/bgBoxTypeB.gif b/modules/blog/skins/xe_blog/images/cyan/bgBoxTypeB.gif deleted file mode 100644 index 99a8770454d1a10d58fdfd3c07027e8ba0315dbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmZ?wbhEHbWMz=ojdHLCg zFCV}C`2YVu0}LqsWC1gEKqSac238*h^)81-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!angpFe+m|MlCyfB!yw{r>mgzu&)q)z{Z=JbC#)7%<=kia%Kx85l$vbU>;=b~3QG zCYbi7WKL3YT$}Sc=!l19N$!0NF+$)!U`3qwO$MSTEeW? z22GB7o>((MW{;rfftmuYd$H@Q{+98volZ@tmA7DI5aMZW$r5U4@MB|ZYH9ZDp6JKP oS?M)p2B#nYoVoMn^ZT*#E?K&48LN|){u*sVCH0M}qKXXG01xGLi2wiq diff --git a/modules/blog/skins/xe_blog/images/cyan/buttonReply.gif b/modules/blog/skins/xe_blog/images/cyan/buttonReply.gif deleted file mode 100644 index 1baede5d01f37fef8555e21796cf5fa52cf89738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmZ?wbhEHb6k!l#I3mPw@&41VKYxDt@#E`{pYOkZ`}Fo=af{2vS$hy#j0Sr{1@gcx){%0YHAuvRQ!=}pO;q$IF5 z=e64b3Eh(1``#+%HShoP%Bnolkm~nnH&~QmCVy^4ap#IK`D<%RD_@k!-`h~0sWDwX zjoE6i%#OSL-yaCp>$6ta)b2m8&)v}2RMO1>r+*ENO-(-RZS5VMoj%;Xef<+A_^?fxI&J!N iAC}p3=FXev!?|ejlBG+XwGCDo7%6G2R~J@fum%9oAA2nT diff --git a/modules/blog/skins/xe_blog/images/cyan/iconArticle.gif b/modules/blog/skins/xe_blog/images/cyan/iconArticle.gif deleted file mode 100644 index bce58cfe86fa658e5f7e9be571c3587314860540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmV;{04e`RNk%w1VGIBb0K@8(A`{hh{e_5m8rO*` z`TP6-|Nj6000000A^8LV00000EC2ui01N;P000G3;3OI(Wu8-~uBxVGX}4`ajc^>S zI$PjFoJvL_BOoxyK``@}6*QLUVcD1wI7p0Am~e8UmMPbYO)eRVP2nqD3OE~_948c{ QU3h#(5LsOQfPf(YJ6>IHvH$=8 diff --git a/modules/blog/skins/xe_blog/images/cyan/iconFile.gif b/modules/blog/skins/xe_blog/images/cyan/iconFile.gif deleted file mode 100644 index 83ad1066556e003dc8f9c23eb85d7a26c8adda59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmZ?wbhEHb_E}*nr|s7DfgJ z4h9{NB*+W~7CV7PPi==MJcoB0Fbk$cUvGW9kT=J>qfzU8mVms=iuCs0*>igo%rqqW cTMs67ILo!VEDt>S3!XlG`X3A!hy#j0Sr{1@gcx){%0YHAu=*z`TlqQ93ld(N zvqXY_iJRvk9Ur;#F8)TXcUKi?$VqS{K2eEMNnPj2z`&u?WaQd(v*4IaH%p&lM1>-s a+oRM34GDuU$$smdRVM7IIwq+~J!gEatf;2iw` diff --git a/modules/blog/skins/xe_blog/images/cyan/iconWrite.gif b/modules/blog/skins/xe_blog/images/cyan/iconWrite.gif deleted file mode 100644 index 9319f7e9b7ea933511eb04e807a2274c893006c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZ?wbhEHb_tBT{K4vCoy?FQW&ZB1;saa>Q-oEwl>An*e4xPS~ znUc13|B3V0?=0Q8XVJP{f8N~Lc=GbEU++GBzOZ>~#?@zUEi;-jdKUcu|DORHQ2fcl z$iN`MpaYTw*~!4_tf1BxW;yRhsO!YmWmi*U->!5DHQoJauDj8_r%ll-E2f-uVZG8j lN$BK-pFLjF_6Qy*m>VI{<>uHB$)k~RTzP_p0*4}lH2|Z7S|k7f diff --git a/modules/blog/skins/xe_blog/images/cyan/lineBlogListTh.gif b/modules/blog/skins/xe_blog/images/cyan/lineBlogListTh.gif deleted file mode 100644 index b26bf737c564d913a4ecfac5c866498e7d90af3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3028 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 diff --git a/modules/blog/skins/xe_blog/images/green/bgBlogListTh.gif b/modules/blog/skins/xe_blog/images/green/bgBlogListTh.gif deleted file mode 100644 index ae25c2d8262f05114a7497476fdb61cfef87fd5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmZ?wbhEHbWMzhh&eGEPy+>d5d`Z%6zj@&`@A(}Rk}O0ddMBh@I+SCjeqlw4<5H=0 c*E`Bi=T_`(D45}(CVwuyEh;u+yEB6|01``RWB>pF diff --git a/modules/blog/skins/xe_blog/images/green/bgBoxTypeB.gif b/modules/blog/skins/xe_blog/images/green/bgBoxTypeB.gif deleted file mode 100644 index 1cdca75c216ac060d60978acbbe3f5a4c20ef4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmZ?wbhEHbWMzR7fe|~)a`Q_!e*Dt=l{POGT-YYwve0lcc&(D`%U%mVB z;nlY{AAf#+{r&B;uP?s-{`U6!`{!R@e*g3H>({T}et-Y)^W)cFUw{7n`SItcH{ahr z{qp?(|Njg~K=CIFn5P3GL3T2*dOc9<3XfFM&{~`QU{{EYy-Duf@`bOR?i)KOq*<(y z=xs;|I+)@#?|e_ltrcP75pNQ9`&R62DX?%-vp$#JTXoiM$6e)#iFWgEyj5hd1^_n- Bb|(M; diff --git a/modules/blog/skins/xe_blog/images/green/blogHeaderLine.gif b/modules/blog/skins/xe_blog/images/green/blogHeaderLine.gif deleted file mode 100644 index fb52802d89dec88b8c1aa6f855eab61cebada092..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmV;m080NyNk%w1VYmwe0Du4hIJHSsR!brI1ONa4001li0002E3j+WE0*r)@smtvT zqnxzb7qZ^G`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`dSFXXcMj83Z!;-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!anyM=U-pG{{H^q=cgZke!l;=b~3QG zCYbi7WKMeIur}v)&|wcj-`xA=jwk)!|37d%&nZ%(pS!b2(~wWIb47^I$|%)~>503S zMy)>e_OpYX2jBe;l>$2()`IutXWQ&~+0={=9Fv~Mz#zoa(wZ&Q*yzu}(cIeN)icST oi>u0e>P#+wfw}YMFAyl_Te5W7vU+7L{WaQ#O6nU`MHLyW0clisP5=M^ diff --git a/modules/blog/skins/xe_blog/images/green/buttonReply.gif b/modules/blog/skins/xe_blog/images/green/buttonReply.gif deleted file mode 100644 index e142d42638d70d4f75d7c972cbb176940713339b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmZ?wbhEHb6k!l#I3mPw-S#S@gEErhy#j0Sr{1@gcx){%0YHAuvRQ!=}pO;q$IF5 z=e64b30CLa`{e>Becu0fIL0TGDbar-C0WAJVs8KPFDGpx*7mRdb}FP|Z~yuqr*&qW z?Jrhbo2GW}J-f}v35RDk)$BX>{Pj$>#-`@dW*_d3&My8gZXdo06DLjP%VU{7W9Cdw SXD$8t+J;K%OH_pv8LR;rpm4DO diff --git a/modules/blog/skins/xe_blog/images/green/buttonTypeInput24.gif b/modules/blog/skins/xe_blog/images/green/buttonTypeInput24.gif deleted file mode 100644 index 3e01072b9af7ae94e97756a084dc029da2a9293d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmZ?wbhEHblwc5HI3mpO{>O)RKi=PXcJ;%Lk8i%e`~CON*Wcg1{r>*__m7W1KYjZ7 z`R(_2KmPpu`RCW?UtfOx`TgbB*S%ME{09RDB7ovg7DfgJVFn$LT9BO#tj!NZdQ&pz zP1NwndA)DFftPFUeG9#_{_p=gJkV3hl;}T^Qlyb+G5mzhNA9!1}KYm%F zkKXLFJ{?tO^S00I+fn1U+*tI-p1S?%YX2G+uA!iJAD{>`}!wL@L`-Xb=vgl iKHRhC%$+yShh@>?B}l@?_N8TUbJgt14_`j~`u%IisU7pS&Fxs)*0`YI z;KhSBsa88r?>unf!1BGz4_!R8?(n)5`&JZ8$^ZD}&p$k?kJP9-?6Pnmk!No_?yAM1mo zhRP8t0S%iBg;V;bqlExh{{F>o}5f{&_nCgEat( COJ&^v diff --git a/modules/blog/skins/xe_blog/images/green/iconFile.gif b/modules/blog/skins/xe_blog/images/green/iconFile.gif deleted file mode 100644 index 2040f4fcbbdf80e75235e218a111f854c28274b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmZ?wbhEHbbAC^Hi;Du|bA!v%EO zrlp!#tt4e=;;oOM>72o6Lid?-W;rAE75pCH%m3x??CNN3>$3qHkZ2$XJRt-t$j{O& z`?Oe^Pp00dQo$i^P?CN@>8D{Bnu;ow62{mx4MOy^z(=P73^N$w85LoZn3+tZkpH7% zWhyaBbo0Z<*I6i51mm$l zGWFK~l2%YjRrO*qFUxW)9)NSw%xskBnaRkop(_ZXP}tA01E#6vbH9mc3YnNrG>o7bCFSQsnJL{gs@62@6>KomtqF7siQ4{-`AA|#i}xmh79%Vn1HX;@`BT9QNv=NOh6 z@_SgA06>GiRZaC1 zU>$khdA{M{`i&2ctk}Je-gWkjg&JAr+<~uU32TQwb|9Ws^!Ynb=~)T z4X3D0J@tF)-8bv*S}BVI+~~OAJ<#vjPc=PWyYu)J^W+%tUR&vDf3(5t zzJAzSv$NJ`zwNxZqwnB0TU+Czw7DnK1`w{|mdd BEt~)V diff --git a/modules/blog/skins/xe_blog/images/green/iconMyInfo.gif b/modules/blog/skins/xe_blog/images/green/iconMyInfo.gif deleted file mode 100644 index b67f29733cb257873c09469783aff8f4fb66adfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmV-m0H6OyNk%w1VF~~W0HOu}*x}da>*e6*-`C*Q{{H@ant1>J{{R30A^8LW000I6 zEC2ui015yK0009eXj)wQWe_qPoPyXzMBYZ^RnIbzWibW8Rs<6fpoIqjr_=0B0suRj C0wpd0 diff --git a/modules/blog/skins/xe_blog/images/green/iconWrite.gif b/modules/blog/skins/xe_blog/images/green/iconWrite.gif deleted file mode 100644 index 2c9832e361dccef742cb784d1c9f2b83a8347788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 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 diff --git a/modules/blog/skins/xe_blog/images/purple/bgBoxTypeB.gif b/modules/blog/skins/xe_blog/images/purple/bgBoxTypeB.gif deleted file mode 100644 index 9e130ae44ca017925501b7fa5db1888c8a0bbea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmZ?wbhEHbWMz=zyAFE@blNlU%x*8{`2eakGDU5fBXIO-OpcNe*bv& zUi=lh?(zyAL5=Ewj4{~2%t#h)x-NgWUg zvXg<;X@P2&L!_97)SA_gcLnL34~W&bsC#4m^#6gD01pi@-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!angpFe+m|MlCyfB!yw{r>mgzu&)q)z{Z=JbC#)7%<=kia%Kx85l$vbU>;=b~3QG zCYbi7WKL3YT$}Sc=!l19N$!0NF+$)!U`3qwO$MSTEeW? z22GB7o>((MW{;rfftmuYd$H@Q{+98volZ@tmA7DI5aMZW$r5U4@MB|ZYH9ZDp6JKP oS?M)p2B#nYoVoMn^ZT*#E?K&48LN|){u*sVCH0M}qKXXG01xGLi2wiq diff --git a/modules/blog/skins/xe_blog/images/purple/buttonReply.gif b/modules/blog/skins/xe_blog/images/purple/buttonReply.gif deleted file mode 100644 index 6005348654403e890652771f60ae204eca01d6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmZ?wbhEHb6k!lzxT?hP<;$l_m(QI#bL_&!Gbc_SxqjpFfkV5Wzj(U;z|MdF{_fqk z{o3_QhmPz$bMC~k;|H%?y>R5{{__`3ef|3R+xIU&eti4;_s`Ft-+%r3@%i(I4atw6o0ZXGB7AH=zxp|`H6vT?STvF9y(H; z3lAwC$+4Qh&^b}iD`ee`95cZv8>hJ&Dtz9x$Tdz#+soE?<3p*20Y~h+a`U=+eqJR- zv8JZH=C&q9L0(0X-rl@Eg}z=zUM5B1nKScd&6%ah#G)v)WJ%ug zgCd`RqQuT!yYqG{3h*dOA3kza;i$AC51XRQx$_q;$|$mNES9`+^VTgPMGh|cfJeUa YT#9lpUcP$$Qc>yshmW5=IWkxS02i&M761SM diff --git a/modules/blog/skins/xe_blog/images/purple/buttonTypeInput24.gif b/modules/blog/skins/xe_blog/images/purple/buttonTypeInput24.gif deleted file mode 100644 index 0dcfc0e3df9a4ec01b31e4d88cb7fa54dbf2e012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmZ?wbhEHblwc5HxT?*wAuirlZ z{Q3RU=MUe$efjk1{jXm?K7aZ6{rlHHe|~@X@b>rbpS$;NyK(dCe=uO65>Wif!pOj& z&Y%M_59B8XwgU%(Gd*;q`j-YDO~|sEAFyJflR@jc8*9R{l`MQ_Y^d;2n=K=7Ipb{J z?z?Ipho7vx{k~$)%83S<{~8*bn$$SC)fhXwx_f%mxcSu-CQq3;ZP_N$xqV=1O|dhB!XBnW}6P>p-?Ong3O>JrGCTNV{&Qeh{==5fz6@S VIQV73?dtb61q%)rgoTA606QIMbg2LU diff --git a/modules/blog/skins/xe_blog/images/purple/iconFile.gif b/modules/blog/skins/xe_blog/images/purple/iconFile.gif deleted file mode 100644 index c39a49aa0041c443294864ff91d0aaddc882daf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmZ?wbhEHbbf^4kCZ|8HJd3nUp( zf#OdVMg|5h1|5(v$P5M+`+!c*)d32UM=BlJ3{#@7w k**L{C3yFSq=cEp2xmK6ufhV6_EI93uc>1jvlOTgN08rdB@Bjb+ diff --git a/modules/blog/skins/xe_blog/images/purple/iconList.gif b/modules/blog/skins/xe_blog/images/purple/iconList.gif deleted file mode 100644 index 2e67636f5f1e2de38349d57b6cc0102b612bd549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmbu6*-jHt0ESQ5ilOd`YgAlfUE?l@OWi=k1=qMl6uQoUk6>bAC^Hi;Du|bA!v%EO zrlp!#tt4e=;;oOM>72o6Lid?-W;rAE75pCH%m3x??CNN3>$3qHkZ2$XJRt-t$j{O& z`?Oe^Pp00dQo$i^P?CN@>8D{Bnu;ow62{mx4MOy^z(=P73^N$w85LoZn3+tZkpH7% zWhyaBbo0Z<*I6i51mm$l zGWFK~l2%YjRrO*qFUxW)9)NSw%xskBnaRkop(_ZXP}tA01E#6vbH9mc3YnNrG>o7bCFSQsnJL{gs@62@6>KomtqF7siQ4{-`AA|#i}xmh79%Vn1HX;@`BT9QNv=NOh6 z@_SgA06>GiRZaC1 zU>$khdA{M{`i&2ctk}Je-gWkjg&JAr+<~uU32TQwb|9Ws^!Ynb=~)T z4X3D0J@tF)-8bv*S}BVI+~~OAJ<#vjPc=PWyYu)J^W+%tUR&vDf3(5t zzJAzSv$NJ`zwNxZqwnB0TU+Czw7DnK1`w{|mdd BEt~)V diff --git a/modules/blog/skins/xe_blog/images/purple/iconMyInfo.gif b/modules/blog/skins/xe_blog/images/purple/iconMyInfo.gif deleted file mode 100644 index af4545bfab22696d2f3a0e7e704f15c326c51618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmZ?wbhEHb+Z^fq|1j2P6YBgMmfMz|&>oo)dGDb?zO0=zCnC&(lrduBqhO?i^P`rK4pcjqL(V O3mPP08Uer9VvdUNvgiFq?THNKpj_jbAK=0l5T zOb_p#8ulwo`|GI%k6#~~H7znTC2NkG_Jh|a51l;!=k@hl_a1KCee`6l(eGQkzu(%m zY{Sk)Yj(V-k3Vi@uzgz3IU6 znVuS7fi_Ny{C;cC%&B3s-LP=>OMUB+|n}QUUFh)jSSWR)~K_T diff --git a/modules/blog/skins/xe_blog/images/purple/lineBlogListTh.gif b/modules/blog/skins/xe_blog/images/purple/lineBlogListTh.gif deleted file mode 100644 index 6c74832c3a7927e6f5dfd3bce51135676b23e229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2442 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 P0JPMOJNu7Ae&_!Sw8q6w diff --git a/modules/blog/skins/xe_blog/images/red/bgBlogListTh.gif b/modules/blog/skins/xe_blog/images/red/bgBlogListTh.gif deleted file mode 100644 index ae25c2d8262f05114a7497476fdb61cfef87fd5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmZ?wbhEHbWMzhh&eGEPy+>d5d`Z%6zj@&`@A(}Rk}O0ddMBh@I+SCjeqlw4<5H=0 c*E`Bi=T_`(D45}(CVwuyEh;u+yEB6|01``RWB>pF diff --git a/modules/blog/skins/xe_blog/images/red/bgBoxTypeB.gif b/modules/blog/skins/xe_blog/images/red/bgBoxTypeB.gif deleted file mode 100644 index 01406b48a1713469a83835e9850fcfb7e96543a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmZ?wbhEHbWMzX diff --git a/modules/blog/skins/xe_blog/images/red/bgBoxTypeB.gif.1 b/modules/blog/skins/xe_blog/images/red/bgBoxTypeB.gif.1 deleted file mode 100644 index 01406b48a1713469a83835e9850fcfb7e96543a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmZ?wbhEHbWMzX diff --git a/modules/blog/skins/xe_blog/images/red/blogHeaderLine.gif b/modules/blog/skins/xe_blog/images/red/blogHeaderLine.gif deleted file mode 100644 index 6fc563f064552e26dd5595c3707fde2bb77bd7bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmV;m080NyNk%w1VYmwe0Du4h?Gsv5R!brI1ONa4001li0002E3j+WE0*r)@smtvT zqnxzb7qZ^G`wxcVNS5Y_rs~SJ?hD8AOxN~}=lag~{tpZahs2`sh)gP%%%<}RjY_A~ zs`ZM^YPa03_X`dSFXXcMj83Z!;-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!an;=b~3QG zCYbi7WKMeIur}v)&|wczzuf!fjwb`&|93c%=M*T>&(&F^X~?J9xgtbpWt8g0=ZU+Q zMy)>ecCurdhs6C3m4dXMllR`w@~z`y@kwi_6}Mqz5aMob$rfs8@MmLdYH9ZBp6JiP oQRzKp28TcYoVoMn^ZT>#E?K&48H=-){u*sVCH0M}qKXXG02Ow3!Tg*KdD5efj(M@1HMU|NQ**_t)<~ zpTGY7{patWKlSzXe}4SDdf@nfFkm1KDE?$&WMB|t&;cn2*~!3Kwt%HKC3BLJz}lSG zZU-b--E;4k3!L=@YTGZ}qoRH5GgN*8jLI+P*)1 zQ_q1k>su_xcb}EH@%B^AzjHc2{x=jg_;9qgwez)e_;C03^-tjTVPcy)ZTfU3XD$7? O+J;K%i&TXa8LR>RBXMc~ diff --git a/modules/blog/skins/xe_blog/images/red/buttonTypeInput24.gif b/modules/blog/skins/xe_blog/images/red/buttonTypeInput24.gif deleted file mode 100644 index 2ae80ed238be56880daa0a5132810d9c92f1fe35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmZ?wbhEHblwc5HI3mXI_s^eax9e&P05@$MIt2U^}c+AFt6PE7I9}C-v4)a&=-^_(SIVPD5B9~{)LPwFIPmZkI*ST z__k_)d|I-P-t4nyTB^?GZJ#-DM~&ZdWBwm|>h`DG{cC7!YVu)gYwzgn^bzXq>z^>e shhxgrY160s2+y7~ciuc7CMH%Eq1nvy=R0c~tTixF(%7UfrpRCo0FP^hC;$Ke diff --git a/modules/blog/skins/xe_blog/images/red/iconArticle.gif b/modules/blog/skins/xe_blog/images/red/iconArticle.gif deleted file mode 100644 index 5cd05be62b79fa6c8900278bc05f431766c79c58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmZ?wbhEHbeDCDd%R5ed`~3Cn_9JWC=l=Tf^Y8D!t6FFO`}gnn z&)@(5|7Sn~ia%MvJRJ}TvXg-|C_zPRNy@y7%htUrO?){m)gd=iYK`5^2l`UnZi>PY zY93Akk7r2gP02`@IfK*WL}yS(LDr%vn%BF0^%UEC9%|cW8||?0>o~XLT{%z7#T7sP J*DEqu0|33}ZEyep diff --git a/modules/blog/skins/xe_blog/images/red/iconFile.gif b/modules/blog/skins/xe_blog/images/red/iconFile.gif deleted file mode 100644 index ee0dd83c7bf626183b7f6d5c13b7ef2a01ef16b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmZ?wbhEHbGx%dD7|64ou0!ao` zp!k!8k%57WK?fuZGJ}D|KA_Wcb%288kxEB4!<6Xjt;vfdbG$p6wa&j1PbAC^Hi;Du|bA!v%EO zrlp!#tt4e=;;oOM>72o6Lid?-W;rAE75pCH%m3x??CNN3>$3qHkZ2$XJRt-t$j{O& z`?Oe^Pp00dQo$i^P?CN@>8D{Bnu;ow62{mx4MOy^z(=P73^N$w85LoZn3+tZkpH7% zWhyaBbo0Z<*I6i51mm$l zGWFK~l2%YjRrO*qFUxW)9)NSw%xskBnaRkop(_ZXP}tA01E#6vbH9mc3YnNrG>o7bCFSQsnJL{gs@62@6>KomtqF7siQ4{-`AA|#i}xmh79%Vn1HX;@`BT9QNv=NOh6 z@_SgA06>GiRZaC1 zU>$khdA{M{`i&2ctk}Je-gWkjg&JAr+<~uU32TQwb|9Ws^!Ynb=~)T z4X3D0J@tF)-8bv*S}BVI+~~OAJ<#vjPc=PWyYu)J^W+%tUR&vDf3(5t zzJAzSv$NJ`zwNxZqwnB0TU+Czw7DnK1`w{|mdd BEt~)V diff --git a/modules/blog/skins/xe_blog/images/red/iconMyInfo.gif b/modules/blog/skins/xe_blog/images/red/iconMyInfo.gif deleted file mode 100644 index b48e1fcd22e678a2dbb387e5357d0172d62a943c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmV-m0H6OyNk%w1VF~~W0HOu}{{R30A^8LW000I6 zEC2ui015yK0009eXj)wQWe_qPoPyXzMBYZ^RnIbzWibW8Rs<6fpoIqjr_=0B0suRp Cd?iEx diff --git a/modules/blog/skins/xe_blog/images/red/iconWrite.gif b/modules/blog/skins/xe_blog/images/red/iconWrite.gif deleted file mode 100644 index 2caff746f2ee91d040a7dc185cc9cee70fc13646..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmZ?wbhEHb9dF e24T5uMR8^}MiC`Zes&H?0WmHXK~_FT25SKDYi4=? diff --git a/modules/blog/skins/xe_blog/images/red/lineBlogListTh.gif b/modules/blog/skins/xe_blog/images/red/lineBlogListTh.gif deleted file mode 100644 index ee37cb8dfdba8b1ae5c9a7389e8eb0731cf4b1fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2489 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 ZVbwl)>NG2h3j?FtrOQ`>yuBP5tO0@?i&Ovr diff --git a/modules/blog/skins/xe_blog/images/tree_menu/join.gif b/modules/blog/skins/xe_blog/images/tree_menu/join.gif deleted file mode 100644 index 46162d1f8712c10d6136bb708ab92f8142152202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 zcmZ?wbhEHb6k-rzXkcJyXlVHV|G(l-7DfgJMg|=QAOOiQFv<4FH=KUEdfpt3ORshA Yx&LIzk};W<9?!r r%~=@rTj`9iaeYIF(v;LDtyvvbI@x<}milgEzO!rhcaL|IfvT+m@mnAg diff --git a/modules/blog/skins/xe_blog/images/tree_menu/minusbottom.gif b/modules/blog/skins/xe_blog/images/tree_menu/minusbottom.gif deleted file mode 100644 index dc3198be275d3da71011a6cb4fa59b8b94656c8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0oiI(^czmUT|IBk lf~en0XMBz88#;uhq&8{I>afzu-gC3m_gnAtsyGG)YXIxA8@>Pl diff --git a/modules/blog/skins/xe_blog/images/tree_menu/page.gif b/modules/blog/skins/xe_blog/images/tree_menu/page.gif deleted file mode 100644 index 42d7318c5d928a2033cb42c72598a131ea6de64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582 zcmZ?wbhEHb6k-r!c*el+`}gnn@8AFU{r~N^{|65qeDdVU-@kuvy#9aS{{Mgf|9}4Z z|M0{AU%q_(`SWMv)Wg{&OV2(3AD1{GbotxKt1eYFZ#Zz^|ILSQTV|i?T5|Ba{La?4kwX3c6}c&WZ`PygnpJ?rkDyZry# zum9<}^Zxw(U)#BD%KlHsjvf2=@89j`-!lsq`N~Rn2+cXw3F)`cNXo|{M zwn^yh*lA;L&u+56RaJ{?r=8t#bK_Gj;^%BG95Yu?zS_*U>z2K_g$4ipCbgRvpFHC> zdg-Vu`PTd?H;48ok#7ReIGiR-xW0J7!Dc}Y2`z_&_QUOboFWD+3JrbT68dFMM=k~^ HFjxZso}Jb2 diff --git a/modules/blog/skins/xe_blog/images/tree_menu/page_folder.gif b/modules/blog/skins/xe_blog/images/tree_menu/page_folder.gif deleted file mode 100644 index e6d880347f518bbd1239f2af3e3059ccb1e674e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 622 zcmZ?wbhEHb6k-r!c*el+{{8!<#k_3u{{L^wI(YEl_U+q$|Ni~|@MghDua+)ZG%JH? z-TL((7IrU~Kj+DlCo5O3lwA7%*s)`qHgDa!eb@j0OBdvEG*;)$$zqw8!`56^^k}p5 z_Ya-7_UFu)+TYb$+uz;v|9Z=kBA(5S(&rbc{eRsuGoA72{gy`u15VE{KDj_~ajDeg z37uzVnk*{dIyud7L!HE&S<`mx+V>;JX-$>L)2C0b?{GLaORBB0{O{F*<)!?K3%Nf$ zsam#d+5aDt|39h!f4lVm`_9*|U#E2~`~QE=wr$&f|N3)mmgIjBn8`2{fZ|UUMg|5? z1|5)NL2<&se!9W4skx=K)lgW7o1c@{KvtWf%~RNQ+VpAif|G?@nV2{@=DW(VPUdzM za9Zso;A-yDro->*#N*D+IV1gO z@j_>Lk*uD81ih2?D)vTMXLcNRa$tCI39M1!eiVTiL RukLUjIIv`XD-$DwH2~IF)06-J diff --git a/modules/blog/skins/xe_blog/images/tree_menu/plus.gif b/modules/blog/skins/xe_blog/images/tree_menu/plus.gif deleted file mode 100755 index c064c11f10d1071d4ced590ce4aa5cef96f38f53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmZ?wbhEHb6k-rzn8?IXUtiC_!0`Y7e;}#&lZBCifr&u}$Yub^Gcf5)(Qi2YcJ;hD s3!;82ol%!Ln=y|u?_j0cszsgh={>80C*3Udwc7iA4}T4-Dl3CE0Hbsr)c^nh diff --git a/modules/blog/skins/xe_blog/images/tree_menu/plusbottom.gif b/modules/blog/skins/xe_blog/images/tree_menu/plusbottom.gif deleted file mode 100644 index b5671d891a9e57ac2fd5551187b44684e45b48e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmZ?wbhEHb6k-r!n8?J?(9poZ!0`Y7e;}#&lZBCifr&u}$Og&^0oj^U^czmUT|IBk pf~en0XVhiRX3S&EJ6Nfhh&eGEPy+>d5d`Z%6zj@&`@A(}Rk}O0ddMBh@I+SCjeqlw4<5H=0 c*E`Bi=T_`(D45}(CVwuyEh;u+yEB6|01``RWB>pF diff --git a/modules/blog/skins/xe_blog/images/white/bgBoxTypeB.gif b/modules/blog/skins/xe_blog/images/white/bgBoxTypeB.gif deleted file mode 100644 index 09f7dd59cd21149a0a456595a07cb8fccbb288c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmZ?wbhEHbWMznQ`}y<7w{Ktn{rmIz^M|irKmY#y z`|saB$BrNP`t|G2pWi=!{`mX%ufKnRD!>2w_2cW;Pyhb?{qp70@83WF|NqZ`4JiI( z0SoJZNRXWjtgZ@bU7?xt+-K?ONbh~GaM~-@*`n@kjs4&KO#v@7#8f?05_gJN%x%cH k;;@u$-Sw6*@0V5kr){YCqcL4D-YS={|^`_I7nD%c!-#&IJ4I1 j_y`%9ut-^Hd5M{+xyjk-`3V{-I!aneQKI$BrL7bMC~2i)Z#9*!l0@-$O_C9yz-I`i;w%E}#4Q_4Ci4-#>r;@afb0U%!6* z{{8dw=Z}B?{`v6X?Z=Pr{`~p9XYaNfH?RKw{cG0jssF)%fvQ09CkrD3gDQg#$W)M@ z7}&NP2+Hu#k?LIP*?1(!YW|W#ERIbD>u%(TIXS6#%->Mq^KXKX$fUHh*Lv=KxH!wD zaDvf~KORTk_kU2~<5Cf8ZLO}Y$!}HR;#Fao$e_&7sie#}g+YavTZMT+N9T;03sksS zR76D!3mIpw7FA*4QDI_Imfp2{hVu69Dm+3e;^I4Z@5(=VT17}uMM7e2!Nsc*DuV1P pa(C|DyDz80&c90b+4C1KHu1A52E6xGWK&i6`tAFVZ>o+A)&PvKuVDZH diff --git a/modules/blog/skins/xe_blog/images/white/buttonReply.gif b/modules/blog/skins/xe_blog/images/white/buttonReply.gif deleted file mode 100644 index 6005348654403e890652771f60ae204eca01d6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmZ?wbhEHb6k!lzxT?hP<;$l_m(QI#bL_&!Gbc_SxqjpFfkV5Wzj(U;z|MdF{_fqk z{o3_QhmPz$bMC~k;|H%?y>R5{{__`3ef|3R+xIU&eti4;_s`Ft-+%r3@%i(I4atw6o0ZXGB7AH=zxp|`H6vT?STvF9y(H; z3lAwC$+4Qh&^b}iD`ee`95cZv8>hJ&Dtz9x$Tdz#+soE?<3p*20Y~h+a`U=+eqJR- zv8JZH=C&q9L0(0X-rl@Eg}z=zUM5B1nKScd&6%ah#G)v)WJ%ug zgCd`RqQuT!yYqG{3h*dOA3kza;i$AC51XRQx$_q;$|$mNES9`+^VTgPMGh|cfJeUa YT#9lpUcP$$Qc>yshmW5=IWkxS02i&M761SM diff --git a/modules/blog/skins/xe_blog/images/white/buttonTypeInput24.gif b/modules/blog/skins/xe_blog/images/white/buttonTypeInput24.gif deleted file mode 100644 index 0dcfc0e3df9a4ec01b31e4d88cb7fa54dbf2e012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmZ?wbhEHblwc5HxT?*wAuirlZ z{Q3RU=MUe$efjk1{jXm?K7aZ6{rlHHe|~@X@b>rbpS$;NyK(dCe=uO65>Wif!pOj& z&Y%M_59B8XwgU%(Gd*;q`j-YDO~|sEAFyJflR@jc8*9R{l`MQ_Y^d;2n=K=7Ipb{J z?z?Ipho7vx{k~$)%83S<{~8*bn$$SC)fhXwx_f%mxcSu-CQq3;ZP_N$xqV=1O|dhB!XBnW}6P>p-?Ong3O>JrGCTNV{&Qeh{==5fz6@S VIQV73?dtb61q%)rgoTA606QIMbg2LU diff --git a/modules/blog/skins/xe_blog/images/white/iconFile.gif b/modules/blog/skins/xe_blog/images/white/iconFile.gif deleted file mode 100644 index c39a49aa0041c443294864ff91d0aaddc882daf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmZ?wbhEHbbf^4kCZ|8HJd3nUp( zf#OdVMg|5h1|5(v$P5M+`+!c*)d32UM=BlJ3{#@7w k**L{C3yFSq=cEp2xmK6ufhV6_EI93uc>1jvlOTgN08rdB@Bjb+ diff --git a/modules/blog/skins/xe_blog/images/white/iconList.gif b/modules/blog/skins/xe_blog/images/white/iconList.gif deleted file mode 100644 index 1c83bcaddc58ad1998c8c736b43cf10a3a5784dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmZ?wbhEHbx$EBYXQ_&R4kRctGFSrukAx=L diff --git a/modules/blog/skins/xe_blog/images/white/iconMyInfo.gif b/modules/blog/skins/xe_blog/images/white/iconMyInfo.gif deleted file mode 100644 index af4545bfab22696d2f3a0e7e704f15c326c51618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmZ?wbhEHb+Z^fq|1j2P6YBgMmfMz|&>oo)dGDb?zO0=zCnC&(lrduBqhO?i^P`rK4pcjqL(V O3mPP08Uer9VvdUNvgiFq?THNKpj_jbAK=0l5T zOb_p#8ulwo`|GI%k6#~~H7znTC2NkG_Jh|a51l;!=k@hl_a1KCee`6l(eGQkzu(%m zY{Sk)Yj(V-k3Vi@uzgz3IU6 znVuS7fi_Ny{C;cC%&B3s-LP=>OMUB+|n}QUUFh)jSSWR)~K_T diff --git a/modules/blog/skins/xe_blog/images/white/lineBlogListTh.gif b/modules/blog/skins/xe_blog/images/white/lineBlogListTh.gif deleted file mode 100644 index 6d891d82c48cdbf1cad8f7a3e672e472afe1ec55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2763 zcmZveSy0ml0>)G80&BU(y1)RntaSmAB0WY}=yaKGM?%QKxE)}?Ds3G=L}jfD3|J=w z3skujB@`6Hm4tAGD+vjgfaFe4kVJwIt|TNt?)?ABKgZgA-tXb}@V$I5zlSd|>0IpJ ze_(uY95x4oSu7?9f^0VM9Y7E;TTE6fXf_+<8#1d6bU5rrqu$|wj3&LwWH1_aPN&^u zHki#u05C(46$C9#r^9ZCTrL;v|K+dN!~d%z|KJ~+us^v%LTfKyY0ahd=W8YlBE`3^ ztrz!eZ);uCgaUYEU>&FPCO1Fs*#h|%qAz1W+FQuqFPV~4i;+<+V%12AFg0^c$GD9i zkZHm3J7O*5!j|F6@BUg*S@qk!`_(nIb@dM(HavRVh;RD6x#h{z)@Ova_KwajB8l8h z>FMq3AD|8n4Ude{=!`KYYkXpIYWn%i?A(iaHiygO3xp!^!pm2SORtwD(l;wNec!IF z%QrT+ws#at)vj8zw|}73=?zAc*#dx88)SDlU9k6$1jDI>=j9$BMqJ=f+h!|$KS4Z! z54OL!AMi!qDrc~RT^I7td%;OVo!o}M{l!JTz#Z!1 zVWpVx&-=$w%#qzi^1pg63YnuC3H2v_D~d(imoa|UtO;3k?fP`NYcgS+q2J;(oW3L) zA2TW!I+CBECzxi9bolDJXo3Z3<+Jxc#!QY|jjF|-OXA512+(cupJApZ9S~^Ltc$0n z-kISRF2^4B%axaTgp%bhoab4UyxjL(_{QC1sks}!24s^rDuN4D8c_RrTn_Xz9N&3MM_>1KTsBlUB~((?5$0&;rw^TC&budzcaBMqFB z_odJV#_XFG zQxZQlFMXGG&HOq&r_a26p=jSM$*TO+BE5{iW_goK>a(om)Aud10`{lC>MhAN;BB$8 z4_Lbm>;vmq_b5<)*Z(@WQ5Dt?ZdQLBm3yc@G0M9ADDAp+rzxl3s(4a#U{w+-qiil! zC;qx^mrUxnse9=MHVu^>1?`PUu0#6_Wj}N<4je$*Y4CEX^7C#f%G-I{Z_2QC;Yjbb8&_T_0^px!;-j&48y}F zL1$a@6%fzTxx(uu#um9JDVCiiy4l>& zfNRFaNw}gyrtzt+n)H=2NnEmGYy}0RuK}+3j?MTC=0#3$M=an1O#}}V`5S-ULPeaZ z&9{d9Z5ZO^y$n-(fRKDHhWE0z#AWIT@#=;rB3?agHg$%hx)Eu-SB*?lS9DD`G6%7U zCk_*1h27{P-eRlGL`v|Yq*Nl7+5^pGIEr!}&s!qKnY&YJDBqC~uPGUi+i-`lsdV1! z{t|OfmRC99_X1OOz zX96wMDpc=}{(R|toMo`SruTAK@*7@;WvEHmn;pY{BPy{B6TJFz6O&iOM<_5dsxL2% zzp~7;()P*n*Lj) zKx=&pbVUk6%E!F3ATr3C#uxS&+;B_`Ye+Cev?&@iym&42oz^oR$)Qy z@Dn9c87H%fibcb%fI#^*WEEq*M+ojH)i*)5g(~z&yT4F%F5dRCzScF;8HUe(TU{-ET#3?_$e=Y)M4tqN+B;g=doUlyv^!dd3$n{SFpL?0k**@%zTsQP zmwsGsa0o8y>dUx5F`Gyfl%ak!9bBt{W5NppDHkyCPOR zCMpscTOqqL!H2m}i8i$dIaF{A^Oftt8kQLE*iETpE|Jh?N~S}dE@m#%MdtoehbGI1 zC1s;6LoJTITnuYPBC^m}j{Sl<)~XT>FlCN|VlitC5CM~rLyPqpm%C%YnINaG3Nyax zF9zr1o%;H^@$E2-m6z!>Jidfg#E7k;Qm2vNGoebv*j}|bO=Qf3I!$a_W;xB&x{19U z474J1S{UMqgCa4s204LgpGjRM#=aTk0y&sT172)b#Jj8ub(1C%#-Yx1*`(r03tj9u zD0M+{pDB=yxugGw+^)h**(748h2?VS>Za^UjLRl-IYIH16A-(c?=B)N0DCAF3qPEW zbt}etG+~c0u%1$^H;DBOC_5Tkb}YTjuedCrsVtCD7A!404wi)k;7-KiPNw5Ri*eyi WxCjO=Qi_WLanS+gX95nv;{OY`JD*tq diff --git a/modules/blog/skins/xe_blog/input_password_form.html b/modules/blog/skins/xe_blog/input_password_form.html deleted file mode 100644 index 0f935eb92..000000000 --- a/modules/blog/skins/xe_blog/input_password_form.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -

    - -
    -

    {$lang->msg_input_password}

    -
    - -
    - - - - - - - -
    - -
    - - diff --git a/modules/blog/skins/xe_blog/js/blog.js b/modules/blog/skins/xe_blog/js/blog.js deleted file mode 100644 index 2fd8db522..000000000 --- a/modules/blog/skins/xe_blog/js/blog.js +++ /dev/null @@ -1,105 +0,0 @@ -/** - * @file modules/blog/js/blog.js - * @author zero (zero@nzeo.com) - * @brief blog 모듈의 javascript - **/ - -/* 글쓰기 작성후 */ -function completeDocumentInserted(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var document_srl = ret_obj['document_srl']; - var category_srl = ret_obj['category_srl']; - - alert(message); - - var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); - if(category_srl) url = url.setQuery('category',category_srl); - location.href = url; -} - -/* 글 삭제 */ -function completeDeleteDocument(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var page = ret_obj['page']; - - var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('document_srl',''); - if(page) url = url.setQuery('page',page); - - alert(message); - - location.href = url; -} - -/* 검색 실행 */ -function completeSearch(fo_obj, params) { - fo_obj.submit(); -} - -// 현재 페이지 reload -function completeReload(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - - location.href = location.href; -} - -/* 댓글쓰기 submit */ -function doCommentSubmit() { - var fo_obj = xGetElementById('fo_comment_write'); - procFilter(fo_obj, insert); -} - -/* 댓글 글쓰기 작성후 */ -function completeInsertComment(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var comment_srl = ret_obj['comment_srl']; - - alert(message); - var url = current_url.setQuery('comment_srl','').setQuery('act','').setQuery('rnd',comment_srl); - if(comment_srl) url += '#comment_'+comment_srl; - location.href = url; -} - -/* 댓글 삭제 */ -function completeDeleteComment(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var document_srl = ret_obj['document_srl']; - var page = ret_obj['page']; - - var url = current_url.setQuery('mid',mid).setQuery('document_srl',document_srl).setQuery('act',''); - if(page) url = url.setQuery('page',page); - - alert(message); - - location.href = url; -} - -/* 트랙백 삭제 */ -function completeDeleteTrackback(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var document_srl = ret_obj['document_srl']; - var page = ret_obj['page']; - - var url = "./?mid="+mid+'&document_srl='+document_srl; - if(page) url += "&page="+page; - - alert(message); - - location.href = url; -} - -/* 카테고리 이동 */ -function doChangeCategory(sel_obj, url) { - var category_srl = sel_obj.options[sel_obj.selectedIndex].value; - if(!category_srl) location.href=url; - else location.href=url+'&category='+category_srl; -} diff --git a/modules/blog/skins/xe_blog/js/blog_tree_menu.js b/modules/blog/skins/xe_blog/js/blog_tree_menu.js deleted file mode 100644 index a62be3f79..000000000 --- a/modules/blog/skins/xe_blog/js/blog_tree_menu.js +++ /dev/null @@ -1,277 +0,0 @@ -/** - * @file blog_tree_menu.js - * @author zero (zero@nzeo.com) - * @brief xml파일을 읽어서 트리 메뉴를 그려줌 - * - * common/tpl/tree_menu.js 를 서비스용으로만 사용하기 위해서 수정한 것. - * 관리 기능이 없고 css 적용이 가능 - **/ - -// 폴더를 모두 열고/닫기 위한 변수 설정 -var blog_tree_menu_folder_list = new Array(); - -// 노드의 정보를 가지고 있을 변수 -var blog_node_info_list = new Array(); - -// 카테고리의 node_srl로 문서 갯수를 리턴하는 함수 -function getDocumentCount(node_srl) { - return parseInt(category_document_count[node_srl],10); -} - -// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수 -function blogLoadTreeMenu(xml_url, title, index_url) { - // 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함) - var zone = xGetElementById("blog_category"); - if(typeof(zone)=="undefined") return; - - // 제목이 없으면 제목을 category로 지정 - if(typeof(title)=="undefined" || !title) title = "Category"; - - // index url이 없으면 현재 # 으로 대체 - if(!index_url) index_url= "#"; - - // xml_handler를 이용해서 직접 메뉴 xml파일를 읽음 - if(!xml_url) return; - var oXml = new xml_handler(); - oXml.reset(); - oXml.xml_path = xml_url; - - var param = {"title":title, "index_url":index_url} - - // 요청후 drawTreeMenu()함수를 호출 (xml_handler.js에서 request method를 직접 이용) - oXml.request(blogDrawTreeMenu, oXml, null, null, null, param); -} - -// 트리메뉴 XML정보를 이용해서 정해진 zone에 출력 -var blog_menu_selected = false; -function blogDrawTreeMenu(oXml, callback_func, resopnse_tags, null_func, param) { - var title = param.title; - var index_url = param.index_url; - - var zone = xGetElementById("blog_category"); - var html = ""; - var document_count = 0; - - // 받아온 xml내용을 이용하여 트리 메뉴 그림 - var xmlDoc = oXml.getResponseXml(); - if(!xmlDoc) { - xInnerHtml(zone, html); - return null; - } - - // node 태그에 해당하는 값들을 가져와서 html을 작성 - var node_list = xmlDoc.getElementsByTagName("node"); - if(node_list.length>0) { - var root = xmlDoc.getElementsByTagName("root")[0]; - var output = blogDrawNode(root,0); - html += output.html; - document_count += parseInt(output.document_count,10); - } - - // 제목 지정 - var title_class = "selected"; - if(blog_menu_selected) title_class = "unselected"; - var title_html = '
    '+title+' '; - if(document_count) title_html += '('+document_count+')'; - html = title_html+'
    '+html+'
    '; - - // 출력하려는 zone이 없다면 load후에 출력하도록 함 - if(!zone) { - xAddEventListener(window, 'load', function() { blogDrawTeeMenu(html); }); - - // 출력하려는 zone을 찾아졌다면 바로 출력 - } else { - xInnerHtml(zone, html); - } - - return null; -} - -// 페이지 랜더링 중에 메뉴의 html이 완성되었을때 window.onload event 후에 그리기 재시도를 하게 될 함수 -function blogDrawTeeMenu(html) { - xInnerHtml("blog_category", html); -} - -// root부터 시작해서 recursive하게 노드를 표혐 -function blogDrawNode(parent_node, depth) { - var output = {html:"", expand:"N", document_count:0} - - for (var i=0; i< parent_node.childNodes.length; i++) { - var html = ""; - var selected = false; - - // nodeName이 node가 아니면 패스~ - var node = parent_node.childNodes.item(i); - if(node.nodeName!="node") continue; - - // node의 기본 변수들 체크 - var node_srl = node.getAttribute("node_srl"); - var text = node.getAttribute("text"); - var url = node.getAttribute("url"); - var expand = node.getAttribute("expand"); - var document_count = parseInt(node.getAttribute("document_count"),10); - if(!text) continue; - - // 자식 노드가 있는지 확인 - var hasChild = false; - if(node.hasChildNodes()) hasChild = true; - - // nextSibling가 있는지 확인 - var hasNextSibling = false; - if(i==parent_node.childNodes.length-1) hasNextSibling = true; - - // 후에 사용하기 위해 blog_node_info_list에 node_srl을 값으로 하여 node object 추가 - blog_node_info_list[node_srl] = node; - - // zone_id 값을 세팅 - var zone_id = "blog_category_"+node_srl; - blog_tree_menu_folder_list[blog_tree_menu_folder_list.length] = zone_id; - - var current_category = current_url.getQuery('category'); - if(current_category == node_srl) { - selected = true; - blog_menu_selected = true; - } - - // blog_selected_node이 node_srl과 같으면 펼침으로 처리 - if(selected) expand = "Y"; - - // 아이콘 설정 - var line_class = null; - var folder_class = null; - - // 자식 노드가 있을 경우 자식 노드의 html을 구해옴 - var child_output = null; - var child_html = ""; - - if(hasChild) { - // 자식 노드의 zone id를 세팅 - var child_zone_id = zone_id+"_child"; - blog_tree_menu_folder_list[blog_tree_menu_folder_list.length] = child_zone_id; - - // html을 받아옴 - child_output = blogDrawNode(node, depth+1); - var chtml = child_output.html; - var cexpand = child_output.expand; - if(cexpand == "Y") expand = "Y"; - document_count += parseInt(child_output.document_count,10); - - // 무조건 펼침이 아닐 경우 - if(expand!="Y") { - var line_class = "line_close"; - if(hasNextSibling) line_class = "item_close"; - //if(depth==0) line_class = "line_null"; - child_html += '
    '+chtml+'
    '; - - // 무조건 펼침일 경우 - } else { - var line_class = "line_open"; - if(hasNextSibling) line_class = "item_open"; - //if(depth==0) line_class = "line_null"; - child_html += '
    '+chtml+'
    '; - } - } - - // 자식 노드가 있는지 확인하여 있으면 아이콘을 바꿈 - if(hasChild) { - - // 무조건 펼침이 아닐 경우 - if(expand != "Y") { - if(!hasNextSibling) { - line_class = "minus"; - folder_class = "folder_close"; - } else { - line_class = "minus_bottom"; - folder_class = "folder_close"; - } - // 무조건 펼침일 경우 - } else { - if(!hasNextSibling) { - line_class = "plus"; - folder_class = "folder_open"; - } else { - line_class = "plus_bottom"; - folder_class = "folder_open"; - } - } - - // 자식 노드가 없을 경우 - } else { - if(hasNextSibling) { - line_class = "join_bottom"; - folder_class = "page"; - } else { - line_class = "join"; - folder_class = "page"; - } - } - - if(depth==0) line_class = 'line_null'; - - - // html 작성 - var click_str = ' class="'+folder_class+'"' ; - if(hasChild) click_str += ' onclick="blogToggleFolder(\''+zone_id+'\');return false;" '; - - var text_class = "unselected"; - if(selected) text_class = "selected"; - - var document_count_text = ""; - if(document_count) document_count_text = '('+document_count+')'; - - // 왼쪽 폴더/페이지와 텍스트 위치를 맞추기 위해;;; table태그 일단 사용. 차후 바꾸자.. - html += '
    '+ - '
    '+ - ''+ - '
    '+text+''+document_count_text+'
    '+ - '
    '; - - if(hasChild && child_html) html += child_html; - - html += '
    '; - - output.html += html; - - if(expand=="Y") output.expand = "Y"; - - output.document_count += parseInt(document_count,10); - } - return output; -} - -// 노드의 폴더 아이콘 클릭시 -function blogToggleFolder(zone_id) { - // 아이콘을 클릭한 대상을 찾아봄 - var child_zone = xGetElementById(zone_id+"_child"); - if(!child_zone) return; - - var line_obj = xGetElementById(zone_id+'_line'); - var folder_obj = xGetElementById(zone_id+'_folder'); - - - // 대상의 자식 노드들이 숨겨져 있다면 열고 아니면 닫기 - if(folder_obj.className == "folder_open") { - child_zone.style.display = "none"; - - if(!line_obj.className.search('null')) { - if(line_obj.className.indexOf('bottom')>0) line_obj.className = 'plus_bottom'; - else line_obj.className = 'plus'; - } - - folder_obj.className = 'folder_close' - } else { - child_zone.style.display = "block"; - - if(!line_obj.className.search('null')) { - if(line_obj.className.indexOf('bottom')>0) line_obj.className = 'minus_bottom'; - else line_obj.className = 'minus'; - } - - folder_obj.className = 'folder_open'; - } -} - -// 노드 클릭시 -function blogSelectNode(url) { - location.href = url; -} diff --git a/modules/blog/skins/xe_blog/layout.html b/modules/blog/skins/xe_blog/layout.html deleted file mode 100644 index d71edd67d..000000000 --- a/modules/blog/skins/xe_blog/layout.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - - - - - {@$layout_info->colorset = "white"} - - - - - - - - - - - - - - - - - - - {$layout_info->header_text} - -
    - - - - - -
    -
    - - - -
    - - my profile image - - - - -
    -
    {$layout_info->profile}
    -
    - -
    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - powered by zeroboard XE -
    - -
    - - -
    {$content}
    - -
    - -
    - - -{$layout_info->footer_text} diff --git a/modules/blog/skins/xe_blog/list.html b/modules/blog/skins/xe_blog/list.html deleted file mode 100644 index dd99e17d4..000000000 --- a/modules/blog/skins/xe_blog/list.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/modules/blog/skins/xe_blog/message.html b/modules/blog/skins/xe_blog/message.html deleted file mode 100644 index 00bf01814..000000000 --- a/modules/blog/skins/xe_blog/message.html +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - {$message} -
    - - - {$lang->cmd_login} - - - diff --git a/modules/blog/skins/xe_blog/screenshot/cyan.gif b/modules/blog/skins/xe_blog/screenshot/cyan.gif deleted file mode 100644 index 570dd2cec748c07deb4333fa2c2b9160f872ff7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21501 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 diff --git a/modules/blog/skins/xe_blog/screenshot/green.gif b/modules/blog/skins/xe_blog/screenshot/green.gif deleted file mode 100644 index df96888e71f4dbe4194e8b48c5e4bb1e580c9d18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21437 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 diff --git a/modules/blog/skins/xe_blog/screenshot/purple.gif b/modules/blog/skins/xe_blog/screenshot/purple.gif deleted file mode 100644 index ccc3237d1b6e8ce2e7620cad5a3c8b481686517f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21063 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 diff --git a/modules/blog/skins/xe_blog/screenshot/red.gif b/modules/blog/skins/xe_blog/screenshot/red.gif deleted file mode 100644 index a7a98c99fa52cd4483c73cf5debf5b5c94de1da9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21400 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%0AcCkZ=$GDzgSYPm3`A-VH>Pg7~gRl}XAn4eKD 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 >D|g# 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 diff --git a/modules/blog/skins/xe_blog/skin.xml b/modules/blog/skins/xe_blog/skin.xml deleted file mode 100644 index cea2939e9..000000000 --- a/modules/blog/skins/xe_blog/skin.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - 제로보드XE 블로그 기본 스킨 - ZBXEブログのデフォルトスキン - Zeroboard XE博客默认皮肤 - Default Skin of Zeroboard XE blog - - zero - zero - zero - zero - - 제로보드XE 블로그 기본 스킨입니다. - 디자인 : 서기정 (http://blog.naver.com/addcozy) - HTML/CSS : 정찬명 (http://naradesign.net) - - - ゼロボードXEブログの基本スキンです。 - デザイン:ソギジョン (http://blog.naver.com/addcozy) - HTML/CSS:ジョンチャンミョン (http://naradesign.net) - - - Zeroboard XE博客默认皮肤。 - 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Chan-Myung Jeong (http://naradesign.net) - - - This is default skin of Zeroboard XE blog. - Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Chan-Myung Jeong (http://naradesign.net) - - - - - 하얀색(기본) - 白色(基本) - 白色(默认) - White (default) - - - 청록색 - 青緑 - 青绿色 - Cyan - - - 초록색 - - 绿色 - Green - - - 빨간색 - - 红色 - Red - - - 보라색 - - 紫色 - Purple - - - - - 상단 제목 - 上段タイトル - 博客标题 - Top Title - 레이아웃의 상단에 표시할 제목을 입력하세요. - レイアウト上段に表示させるタイトルを入力してください。 - 请输入博客主标题。 - Please input title which will be displayed on top of layout. - - - 부제 - サブタイトル - 副标题 - Subtitle - 레이아웃의 상단에 큰 제목 아래 부제목을 입력하세요. - レイアウトの上段にメインタイトルの下のサブタイトルを入力してください。 - 请输入副标题。 - Please input subtitle which will be displayed under the top title. - - - 로고이미지 - ロゴイメージ - LOGO图片 - Logo Image - 레이아웃의 상단에 표시될 로고이미지를 입력하세요. - レイアウトの上段に表示されるロゴイメージを入力してください。 - 上传博客LOGO图片。 - Please input logo image which will be displayed on top of layout. - - - 프로필 이미지 - プロフィールイメージ - 博客个性图片 - Profile Image - 프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다) - プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。 - 请输入博客个性图片(推荐宽度160px)。 - Please input profile image (It is recommended to set width as 160px) - - - 배경 이미지 - 背景イメージ - 背景图片 - Background Image - 배경 이미지를 사용하시려면 등록해주세요. - 背景イメージを使う場合は、登録してください。 - 要想使用背景图片请在这里上传。 - Please input if you want to use background image. - - - 프로필 - プロフィール - 简介 - Profile - 간단한 프로필을 입력해주세요 - 簡単なプロフィールを入力してください。 - 请输入简单介绍。 - Please input your simple profile - - - 카테고리명 - カテゴリ名 - 分类名 - Category - 카테고리의 이름을 입력해주세요. - カテゴリ名を入力してください。 - 请输入分类名。 - Please input the name of category. - - - 글쓴이 표시 - 投稿者表示 - 显示作者 - Display Author - 다수가 블로그를 함께 운영시에 글쓴이의 이름을 표시할 수 있습니다. - 多数の人が一緒に運営している場合、投稿者の名前を表示させることができます。 - 多人共同管理博客时可以显示日志发布者。 - It can display authors' name when the blog is being administrated by many administrators. - off - on - - - -

    - 상단 메뉴 - 上段メニュー - 菜单 - Top Menu - 1 - - - diff --git a/modules/blog/skins/xe_blog/style.list.html b/modules/blog/skins/xe_blog/style.list.html deleted file mode 100644 index c3f86a92d..000000000 --- a/modules/blog/skins/xe_blog/style.list.html +++ /dev/null @@ -1,74 +0,0 @@ - -
    - - -
    {$lang->document_count} {number_format($total_count)}
    - -
    - - -
    - {@ $_col_count = 6 } - - - - {@ $_col_count++} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->no}{$lang->title}{$lang->writer}{$lang->readed_count}{$lang->voted_count}{$lang->date}{$lang->last_update}
    - {$lang->no_documents} -
    {$no} - {$document->getTitle($module_info->subject_cut_size)} - - - {$document->getCommentCount()} - - - - {$document->getTrackbackCount()} - - - {$document->printExtraImages(60*60*$module_info->duration_new)} -
    {$document->getNickName()}
    {(int)$document->get('readed_count')}{(int)$document->get('voted_count')}{$document->getRegdate('Y-m-d')}{zdate($document->get('last_update'),'Y-m-d H:i')}
    -
    - diff --git a/modules/blog/skins/xe_blog/trackback.html b/modules/blog/skins/xe_blog/trackback.html deleted file mode 100644 index 52581974e..000000000 --- a/modules/blog/skins/xe_blog/trackback.html +++ /dev/null @@ -1,24 +0,0 @@ - - - -
    - - -
    - -
    - {htmlspecialchars($val->title)} - {htmlspecialchars($val->blog_name)} - delete - - {zdate($val->regdate, "Y.m.d H:i")} - ({$val->ipaddress}) - -
    - -
    - - -
    - diff --git a/modules/blog/skins/xe_blog/view_document.html b/modules/blog/skins/xe_blog/view_document.html deleted file mode 100644 index 8d6558c1c..000000000 --- a/modules/blog/skins/xe_blog/view_document.html +++ /dev/null @@ -1,190 +0,0 @@ - -
    -
    -
    -
    -

    {$oDocument->getTitle()}

    -
    - -
    - Posted {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} - at {$category_list[$oDocument->get('category_srl')]->title} -
    - - -
    - by {$oDocument->getNickName()} - - {$oDocument->get('ipaddress')} - -
    - - -
    - - {$lang->readed_count}: {$oDocument->get('readed_count')} - , - - - {$lang->voted_count}: {$oDocument->get('voted_count')} - -
    -
    -
    - -
      -
    • {$lang->document_url} : {$oDocument->getPermanentUrl()}
    • - -
    • {$lang->trackback_url} : {$oDocument->getTrackbackUrl()}
    • - -
    - - - - - - - - - - - - - -
    {$val->name} - - -
    - - -
    -
    - - - {$lang->msg_is_secret} -
    - - - - -
    - -
    - -
    - - {$oDocument->getContent()} - -
    -
    - -
    - {@ $tag_list = $oDocument->get('tag_list') } - -
    -
    {$lang->tag}
    - -
    - - - -
    -
    {$lang->uploaded_file} :
    - -
    -
    - -
    -
    - - - - - - -
    -
    - - - - - - - - - - - - - - - -
    - -
    fileupload)-->enctype="multipart/form-data" class="blogEditor" > -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    - -
    class="borderTop">{$editor?$editor:$comment_editor[$oDocument->document_srl]}
    - -
    - -
    - -
    -
    -
    - diff --git a/modules/blog/skins/xe_blog/write_form.html b/modules/blog/skins/xe_blog/write_form.html deleted file mode 100644 index dc8836973..000000000 --- a/modules/blog/skins/xe_blog/write_form.html +++ /dev/null @@ -1,112 +0,0 @@ - - - -
    -
    fileupload)-->enctype="multipart/form-data" class="blogEditor" id="fo_write"> -
    - - - - - -
    - - - - - - - - - - - -
    - - -
    - - - -
    - -
    - - {@ $_color = array('555555','222288','226622','2266EE','8866CC','88AA66','EE2222','EE6622','EEAA22','EEEE22') } -
    -
    - get('title_bold')=='Y')-->checked="checked" /> - -
    -
    - isLocked())-->checked="checked" id="lock_comment" /> - -
    - -
    - isSecret())-->checked="checked" id="is_secret" /> - -
    -
    - allowComment())-->checked="checked" id="allow_comment" /> - -
    -
    - allowTrackback())-->checked="checked" id="allow_trackback" /> - -
    - -
    - useNotify())-->checked="checked" id="notify_message" /> - -
    - -
    - -
    {$editor}
    - -
    - - -

    {$lang->about_tag}

    -
    - - - -
    - - - -
    - - - -
    - -
    - - - - -
    - -
    - - - -
    - -
    -
    -
    - diff --git a/modules/blog/tpl/addition_setup.html b/modules/blog/tpl/addition_setup.html deleted file mode 100644 index 944e5adb1..000000000 --- a/modules/blog/tpl/addition_setup.html +++ /dev/null @@ -1,3 +0,0 @@ - - -{$setup_content} diff --git a/modules/blog/tpl/blog_delete.html b/modules/blog/tpl/blog_delete.html deleted file mode 100644 index 2b0807218..000000000 --- a/modules/blog/tpl/blog_delete.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - -
    - - - - - - - - - - - - - - - - - - - -
    {$lang->confirm_delete}
    {$lang->module_name}{$module_info->mid}
    {$lang->module}{$module_info->module}
    {$lang->document_count}{$module_info->document_count}
    - - - -
    - diff --git a/modules/blog/tpl/blog_info.html b/modules/blog/tpl/blog_info.html deleted file mode 100644 index bd2c49fec..000000000 --- a/modules/blog/tpl/blog_info.html +++ /dev/null @@ -1,98 +0,0 @@ - - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->module_category} - - {$lang->not_exists} - - {$module_category[$module_info->module_category_srl]->title} - -
    {$lang->skin}{$module_info->skin_title} ({$module_info->skin})
    {$lang->browser_title}{htmlspecialchars($module_info->browser_title)}
    {$lang->list_count}{$module_info->list_count?$module_info->list_count:20}
    {$lang->page_count}{$module_info->page_count?$module_info->page_count:10}
    {$lang->description}{nl2br(htmlspecialchars($module_info->description))} 
    {$lang->header_text}{htmlspecialchars($module_info->header_text)} 
    {$lang->footer_text}{htmlspecialchars($module_info->footer_text)} 
    {$lang->admin_id}{implode(",",$module_info->admin_id)} 
    - {$lang->cmd_modify} - - {$lang->cmd_blog_list} - -
    - - - - {@ $extra_vars_name = $module_info->extra_vars[$i]->name} - {@ $extra_vars_type = $module_info->extra_vars[$i]->type} - {@ $extra_vars_is_required = $module_info->extra_vars[$i]->is_required=='Y'?'Y':'N'} - {@ $extra_vars_default_value = $module_info->extra_vars[$i]->default?$module_info->extra_vars[$i]->default:' '} - {@ $extra_vars_desc = $module_info->extra_vars[$i]->desc?$module_info->extra_vars[$i]->desc:' '} - {@ $extra_vars_search = $module_info->extra_vars[$i]->search=='Y'?'Y':'N'} - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->extra_vars} {$i}
    {$lang->column_name}{$extra_vars_name}
    {$lang->column_type}{$extra_vars_type}
    {$lang->is_required}{$extra_vars_is_required}
    {$lang->default_value}{$extra_vars_default_value}
    {$lang->description}{$extra_vars_desc}
    {$lang->cmd_search}{$extra_vars_search}
    - - diff --git a/modules/blog/tpl/blog_insert.html b/modules/blog/tpl/blog_insert.html deleted file mode 100644 index 4048d5223..000000000 --- a/modules/blog/tpl/blog_insert.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->mid} - -

    {$lang->about_mid}

    -
    {$lang->is_default} - is_default=='Y')-->checked="checked" id="fld_for_default" class="checkbox" /> - -
    {$lang->module_category} - -

    {$lang->about_module_category}

    -
    {$lang->browser_title} - -

    {$lang->about_browser_title}

    -
    {$lang->skin} - -

    {$lang->about_skin}

    -
    {$lang->list_count} - -

    {$lang->about_list_count}

    -
    {$lang->page_count} - -

    {$lang->about_page_count}

    -
    {$lang->description} - -

    {$lang->about_description}

    -
    {$lang->header_text} - -

    {$lang->about_header_text}

    -
    {$lang->footer_text} - -

    {$lang->about_footer_text}

    -
    {$lang->admin_id} - -

    {$lang->about_admin_id}

    -
    - - -
    - {@ $extra_vars_name = ''} - {@ $extra_vars_type = ''} - {@ $extra_vars_is_required = ''} - {@ $extra_vars_default_value = ''} - {@ $extra_vars_desc = ''} - {@ $extra_vars_search = ''} - - {@ $extra_vars_name = $module_info->extra_vars[$i]->name} - {@ $extra_vars_type = $module_info->extra_vars[$i]->type} - {@ $extra_vars_is_required = $module_info->extra_vars[$i]->is_required} - {@ $extra_vars_default_value = $module_info->extra_vars[$i]->default} - {@ $extra_vars_desc = $module_info->extra_vars[$i]->desc} - {@ $extra_vars_search = $module_info->extra_vars[$i]->search} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->extra_vars} {$i}
    {$lang->column_name}
    {$lang->column_type} - -
    {$lang->is_required}checked="checked" />
    {$lang->default_value}

    {$lang->about_extra_vars_default_value}

    {$lang->description}
    {$lang->cmd_search}checked="checked" />
    - - -
    diff --git a/modules/blog/tpl/category_info.html b/modules/blog/tpl/category_info.html deleted file mode 100644 index d9e92e1e8..000000000 --- a/modules/blog/tpl/category_info.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - --- - - - - - - - - - - - - - - - - - - - - -
    {$lang->parent_category_title}{$category_info->parent_category_title}
    {$lang->category_title} - -

    {$lang->about_category_title}

    -
    {$lang->expand} - expand=="Y")-->checked="checked" class="checkbox" /> - {$lang->about_expand} -
    {$lang->category_group_srls} - -
    group_srls)&&in_array($key, $category_info->group_srls))-->checked="checked" class="checkbox" />
    - -

    {$lang->about_category_group_srls}

    -
    - - {$lang->cmd_delete} - - {$lang->cmd_close} - - - {$lang->cmd_make_child} - -
    diff --git a/modules/blog/tpl/category_list.html b/modules/blog/tpl/category_list.html deleted file mode 100644 index 1b4203b92..000000000 --- a/modules/blog/tpl/category_list.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - -

    {$lang->blog} {$lang->cmd_management}

    -
    {nl2br($lang->about_blog_category)}
    - - - -

    - - - -
    - - - -
    - -
    -
    - - - -
    -
    -
    -
    -
    - - -
    diff --git a/modules/blog/tpl/css/blog.css b/modules/blog/tpl/css/blog.css deleted file mode 100644 index 613a74b4a..000000000 --- a/modules/blog/tpl/css/blog.css +++ /dev/null @@ -1,11 +0,0 @@ -@charset "utf-8"; - -body { margin:10px; } - -.menuListZone { table-layout:fixed; } -.menuListZone td { vertical-align:top; } -.menuListZone td.category_zone { padding-right:10px; } - -#category_list { padding:.5em 0 .5em 0; margin-bottom:2em; width:250px; overflow:hidden; float:left; position:absolute; left:10px;} -#category_info { margin-left:10px; width:560px; _width:540px; float:left; position:absolute; right:10px;} -*:first-child+html #category_info { width:550px; } diff --git a/modules/blog/tpl/filter/delete_blog.xml b/modules/blog/tpl/filter/delete_blog.xml deleted file mode 100644 index 1244441eb..000000000 --- a/modules/blog/tpl/filter/delete_blog.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
    - - - - - - - -
    diff --git a/modules/blog/tpl/filter/delete_category.xml b/modules/blog/tpl/filter/delete_category.xml deleted file mode 100644 index 05093325a..000000000 --- a/modules/blog/tpl/filter/delete_category.xml +++ /dev/null @@ -1,11 +0,0 @@ - -
    - - - - - - - - -
    diff --git a/modules/blog/tpl/filter/insert_blog.xml b/modules/blog/tpl/filter/insert_blog.xml deleted file mode 100644 index cae7c16e2..000000000 --- a/modules/blog/tpl/filter/insert_blog.xml +++ /dev/null @@ -1,149 +0,0 @@ - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/modules/blog/tpl/filter/insert_category.xml b/modules/blog/tpl/filter/insert_category.xml deleted file mode 100644 index 1e896f29a..000000000 --- a/modules/blog/tpl/filter/insert_category.xml +++ /dev/null @@ -1,23 +0,0 @@ - -
    - - - - - - - - - - - - - - - - - - - - -
    diff --git a/modules/blog/tpl/filter/insert_grant.xml b/modules/blog/tpl/filter/insert_grant.xml deleted file mode 100644 index ee69ea24a..000000000 --- a/modules/blog/tpl/filter/insert_grant.xml +++ /dev/null @@ -1,11 +0,0 @@ - -
    - - - - - - - - -
    diff --git a/modules/blog/tpl/filter/manage_checked_document.xml b/modules/blog/tpl/filter/manage_checked_document.xml deleted file mode 100644 index de9e65f32..000000000 --- a/modules/blog/tpl/filter/manage_checked_document.xml +++ /dev/null @@ -1,7 +0,0 @@ - -
    - - - - - diff --git a/modules/blog/tpl/filter/move_category.xml b/modules/blog/tpl/filter/move_category.xml deleted file mode 100644 index d324a1a59..000000000 --- a/modules/blog/tpl/filter/move_category.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/modules/blog/tpl/grant_list.html b/modules/blog/tpl/grant_list.html deleted file mode 100644 index d578beb99..000000000 --- a/modules/blog/tpl/grant_list.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - ----- - - - - - - - - - - - - - - - - - - - - -
    {$lang->about_grant}
    {$lang->grant}{$lang->target}
    {$val->title} - -
    - grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - -
    - -
    {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    - -
    diff --git a/modules/blog/tpl/header.html b/modules/blog/tpl/header.html deleted file mode 100644 index dbf21e153..000000000 --- a/modules/blog/tpl/header.html +++ /dev/null @@ -1,44 +0,0 @@ - - - -{@ - $blog_menu_list = array( - 'dispBlogAdminBlogInfo'=>$lang->cmd_view_info, - 'dispBlogAdminBlogAdditionSetup'=>$lang->cmd_addition_setup, - 'dispBlogAdminCategoryInfo'=>$lang->cmd_manage_category, - 'dispBlogAdminGrantInfo'=>$lang->cmd_manage_grant, - 'dispBlogAdminSkinInfo'=>$lang->cmd_manage_skin, - 'dispLayoutAdminEdit'=>$lang->cmd_layout_edit, - ); -} - -

    {$lang->blog} {$lang->cmd_management}

    - -
    {nl2br($lang->about_blog)}
    - - - -
    - -

    {$module_info->mid} ({$lang->is_default}) | View

    - -
    - - - - -
    - diff --git a/modules/blog/tpl/index.html b/modules/blog/tpl/index.html deleted file mode 100644 index 1b7e4893d..000000000 --- a/modules/blog/tpl/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - -
    - Total {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)} -
    - - - - -------- - -------- - -------- - -------- - -------- - -------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->no} -
    - - - - -
    -
    {$lang->mid} / {$lang->browser_title}{$lang->regdate}{$lang->cmd_view}{$lang->cmd_copy}{$lang->cmd_delete}
    {$no} - - {$lang->not_exists} - - {$module_category[$val->module_category_srl]->title} - - - {$val->mid} - {htmlspecialchars($val->browser_title)} - {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_copy}{$lang->cmd_delete} 
    - - - - - - diff --git a/modules/blog/tpl/js/blog_admin.js b/modules/blog/tpl/js/blog_admin.js deleted file mode 100644 index 5bca5e37e..000000000 --- a/modules/blog/tpl/js/blog_admin.js +++ /dev/null @@ -1,283 +0,0 @@ -/** - * @file modules/blog/js/blog_admin.js - * @author zero (zero@nzeo.com) - * @brief blog 모듈의 관리자용 javascript - **/ - -/* 모듈 생성 후 */ -function completeInsertBlog(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - - var page = ret_obj['page']; - - alert(message); - - var url = current_url.setQuery('act','dispBlogAdminBlogInfo'); - location.href = url; -} - -/* 모듈 삭제 후 */ -function completeDeleteBlog(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var page = ret_obj['page']; - alert(message); - - var url = current_url.setQuery('act','dispBlogAdminContent').setQuery('module_srl',''); - if(page) url = url.setQuery('page',page); - location.href = url; -} - -/* 카테고리 관련 작업들 */ -function doUpdateCategory(category_srl, mode, message) { - if(typeof(message)!='undefined'&&!confirm(message)) return; - - var fo_obj = xGetElementById('fo_category_info'); - fo_obj.category_srl.value = category_srl; - fo_obj.mode.value = mode; - - procFilter(fo_obj, update_category); -} - -/* 카테고리 정보 수정 후 */ -function completeUpdateCategory(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var module_srl = ret_obj['module_srl']; - var page = ret_obj['page']; - alert(message); - - var url = current_url.setQuery('module_srl',module_srl).setQuery('act','dispBlogAdminCategoryInfo'); - if(page) url.setQuery('page',page); - location.href = url; -} - -/* 권한 관련 */ -function doSelectAll(obj, key) { - var fo_obj = obj.parentNode; - while(fo_obj.nodeName != 'FORM') { - fo_obj = fo_obj.parentNode; - } - - for(var i=0;i200) { - obj.style.marginTop = ( xScrollTop() - 210 )+'px'; - } else { - obj.style.marginTop = '0px'; - } - - var tpl = ret_obj['tpl']; - xInnerHtml(obj, tpl); - obj.style.display = 'block'; - - var fo_obj = xGetElementById("fo_category"); - fo_obj.category_title.focus(); - - /* - var x = _xPos + 50; - var y = _yPos - xHeight(obj)/2+ xScrollTop(); - xLeft(obj, x); - xTop(obj, y); - xRemoveEventListener(document,'mousedown',checkMousePosition); - - if(xGetElementById('cBody') && xHeight('cBody')< y+xHeight(obj)+50) { - xHeight('cBody', y + xHeight(obj) + 50); - } - - if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter(); - */ -} - -/* 카테고리 아이템 입력후 */ -function completeInsertCategory(ret_obj) { - var xml_file = ret_obj['xml_file']; - var category_srl = ret_obj['category_srl']; - var module_srl = ret_obj['module_srl']; - var parent_srl = ret_obj['parent_srl']; - - if(!xml_file) return; - - loadTreeMenu(xml_file, 'category', 'zone_category', category_title, '',doGetCategoryInfo, category_srl, doMoveTree); - - if(!category_srl) { - xInnerHtml("category_info", ""); - } else { - var params = {node_srl:category_srl, parent_srl:parent_srl} - doGetCategoryInfo(null, params) - } - - if(typeof('fixAdminLayoutFooter')=="function") fixAdminLayoutFooter(); -} - - -/* 카테고리를 드래그하여 이동한 후 실행할 함수 , 이동하는 category_srl과 대상 category_srl을 받음 */ -function doMoveTree(category_id, source_category_srl, target_category_srl) { - source_category_srl = source_category_srl.replace(/menu_category_/,''); - target_category_srl = target_category_srl.replace(/menu_category_/,''); - var p_fo_obj = xGetElementById("fo_category"); - - var fo_obj = xGetElementById("fo_move_category"); - fo_obj.source_category_srl.value = source_category_srl; - fo_obj.target_category_srl.value = target_category_srl; - fo_obj.module_srl.value = p_fo_obj.module_srl.value; - - // 이동 취소를 선택하였을 경우 다시 그림;; - if(!procFilter(fo_obj, move_category)) { - var params = new Array(); - params["xml_file"] = xGetElementById('fo_category').xml_file.value; - params["source_category_srl"] = source_category_srl; - completeMoveCategory(params); - } -} - -function completeMoveCategory(ret_obj) { - var source_category_srl = ret_obj['source_category_srl']; - var xml_file = ret_obj['xml_file']; - - loadTreeMenu(xml_file, 'category', "zone_category", category_title, '', doGetCategoryInfo, source_category_srl, doMoveTree); -} - -/* 카테고리 목록 갱신 */ -function doReloadTreeCategory(module_srl) { - var params = new Array(); - params["module_srl"] = module_srl; - - // 서버에 요청하여 해당 노드의 정보를 수정할 수 있도록 한다. - var response_tags = new Array('error','message', 'xml_file'); - exec_xml('blog', 'procBlogAdminMakeXmlFile', params, completeInsertCategory, response_tags, params); -} - -/* 카테고리 삭제 */ -function doDeleteCategory(category_srl) { - var fo_obj = xGetElementById("fo_category"); - if(!fo_obj) return; - - procFilter(fo_obj, delete_category); -} - -/* 카테고리 아이템 삭제 후 */ -function completeDeleteCategory(ret_obj) { - var module_srl = ret_obj['module_srl']; - var category_srl = ret_obj['category_srl']; - var xml_file = ret_obj['xml_file']; - alert(ret_obj['message']); - - loadTreeMenu(xml_file, 'category', 'zone_category', category_title, '', doGetCategoryInfo, category_srl, doMoveTree); - - var obj = xGetElementById('category_info'); - xInnerHtml(obj, ""); - obj.style.display = 'none'; -} - diff --git a/modules/blog/tpl/js/blog_tree_menu.js b/modules/blog/tpl/js/blog_tree_menu.js deleted file mode 100644 index cdd13e42f..000000000 --- a/modules/blog/tpl/js/blog_tree_menu.js +++ /dev/null @@ -1,584 +0,0 @@ -/** - * @file blog_tree_menu.js - * @author zero (zero@nzeo.com) - * @brief xml파일을 읽어서 트리 메뉴를 그려줌 - * - * common/tpl/tree_menu.js 를 서비스용으로만 사용하기 위해서 수정한 것. - * 관리 기능이 없고 css 적용이 가능 - **/ - -// 폴더를 모두 열고/닫기 위한 변수 설정 -var blog_tree_menu_folder_list = new Array(); - -// 노드의 정보를 가지고 있을 변수 -var blog_node_info_list = new Array(); - -// 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수 -function blogLoadTreeMenu(xml_url, title, index_url) { - // 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함) - var zone = xGetElementById("blog_category"); - if(typeof(zone)=="undefined") return; - - // 노드 정보들을 담을 변수 세팅 - blog_node_info_list = new Array(); - - // 제목이 없으면 제목을 category로 지정 - if(typeof(title)=="undefined" || !title) title = "category"; - - // index url이 없으면 현재 # 으로 대체 - if(!index_url) index_url= "#"; - - // xml_handler를 이용해서 직접 메뉴 xml파일를 읽음 - if(!xml_url) return; - var oXml = new xml_handler(); - oXml.reset(); - oXml.xml_path = url; - - // menu_id, zone_id는 계속 달고 다녀야함 - var param = {"title":title, "index_url":index_url} - - // 요청후 drawTreeMenu()함수를 호출 (xml_handler.js에서 request method를 직접 이용) - oXml.request(blogDrawTreeMenu, oXml, null, null, null, param); -} - -// 트리메뉴 XML정보를 이용해서 정해진 zone에 출력 -function blogDrawTreeMenu(oXml, callback_func, resopnse_tags, null_func, param) { - var title = param.title; - var index_url = param.index_url; - - var zone = xGetElementById("blog_category"); - var html = ""; - - // 제목 지정 - html = '
    '+title+'
    '; - - var xmlDoc = oXml.getResponseXml(); - if(!xmlDoc) { - xInnerHtml(zone, html); - return null; - } - - blog_tree_menu_folder_list[menu_id] = new Array(); - - // node 태그에 해당하는 값들을 가져와서 html을 작성 - var node_list = xmlDoc.getElementsByTagName("node"); - if(node_list.length>0) { - var root = xmlDoc.getElementsByTagName("root")[0]; - var output = drawNode(root, menu_id); - html += output.html; - } - - // 출력하려는 zone이 없다면 load후에 출력하도록 함 - if(!zone) { - xAddEventListener(window, 'load', function() { drawTeeMenu(zone_id, menu_id, html); }); - - // 출력하려는 zone을 찾아졌다면 바로 출력 - } else { - xInnerHtml(zone, html); - if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl); - } - - return null; -} - -// 페이지 랜더링 중에 메뉴의 html이 완성되었을때 window.onload event 후에 그리기 재시도를 하게 될 함수 -function drawTeeMenu(zone_id, menu_id, html) { - xInnerHtml(zone_id, html); - if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl); -} - -// root부터 시작해서 recursive하게 노드를 표혐 -function drawNode(parent_node, menu_id) { - var output = {html:"", expand:"N"} - - for (var i=0; i< parent_node.childNodes.length; i++) { - var html = ""; - - // nodeName이 node가 아니면 패스~ - var node = parent_node.childNodes.item(i); - if(node.nodeName!="node") continue; - - // node의 기본 변수들 체크 - var node_srl = node.getAttribute("node_srl"); - var text = node.getAttribute("text"); - var url = node.getAttribute("url"); - var expand = node.getAttribute("expand"); - - if(!text) continue; - - // 자식 노드가 있는지 확인 - var hasChild = false; - if(node.hasChildNodes()) hasChild = true; - - // nextSibling가 있는지 확인 - var hasNextSibling = false; - if(i==parent_node.childNodes.length-1) hasNextSibling = true; - - // 후에 사용하기 위해 blog_node_info_list에 node_srl을 값으로 하여 node object 추가 - blog_node_info_list[menu_id][node_srl] = node; - - // zone_id 값을 세팅 - var zone_id = "menu_"+menu_id+"_"+node_srl; - blog_tree_menu_folder_list[menu_id][blog_tree_menu_folder_list[menu_id].length] = zone_id; - - // url을 확인하여 현재의 url과 동일하다고 판단되면 manual_select_node_srl 에 값을 추가 (관리자페이지일 경우는 무시함) - if(node_callback_func[menu_id] == moveTreeMenu && url && current_url.getQuery('category')==node_srl) manual_select_node_srl = node_srl; - - // manual_select_node_srl이 node_srl과 같으면 펼침으로 처리 - if(manual_select_node_srl == node_srl) expand = "Y"; - - // 아이콘 설정 - var line_icon = null; - var folder_icon = null; - - // 자식 노드가 있을 경우 자식 노드의 html을 구해옴 - var child_output = null; - var child_html = ""; - if(hasChild) { - // 자식 노드의 zone id를 세팅 - var child_zone_id = zone_id+"_child"; - blog_tree_menu_folder_list[menu_id][blog_tree_menu_folder_list[menu_id].length] = child_zone_id; - - // html을 받아옴 - child_output = drawNode(node, menu_id); - var chtml = child_output.html; - var cexpand = child_output.expand; - if(cexpand == "Y") expand = "Y"; - - // 무조건 펼침이 아닐 경우 - if(expand!="Y") { - if(!hasNextSibling) child_html += ''; - else child_html += ''; - // 무조건 펼침일 경우 - } else { - if(!hasNextSibling) child_html += '
    '+chtml+'
    '; - else child_html += '
    '+chtml+'
    '; - } - } - - // 자식 노드가 있는지 확인하여 있으면 아이콘을 바꿈 - if(hasChild) { - // 무조건 펼침이 아닐 경우 - if(expand != "Y") { - if(!hasNextSibling) { - line_icon = "minus"; - folder_icon = "page"; - } else { - line_icon = "minusbottom"; - folder_icon = "page"; - } - // 무조건 펼침일 경우 - } else { - if(!hasNextSibling) { - line_icon = "plus"; - folder_icon = "page"; - } else { - line_icon = "plusbottom"; - folder_icon = "page"; - } - } - - // 자식 노드가 없을 경우 - } else { - if(hasNextSibling) { - line_icon = "joinbottom"; - folder_icon = "page"; - } else { - line_icon = "join"; - folder_icon = "page"; - } - } - - - // html 작성 - html += '
    '; - - if(hasChild) html+= ''; - else html+= ''; - - html += 'linefolder'; - - var chk_enable = xGetElementById(menu_id+"_enable_move"); - if(chk_enable) { - html += ''; - } else { - html += ''; - } - - html += text+''; - - html += child_html; - - html += '
    '; - - output.html += html; - - if(expand=="Y") output.expand = "Y"; - } - return output; -} - -// 관리자 모드일 경우 *_enable_move 의 값에 따라 메뉴 이동을 시키거나 정보를 보여주도록 변경 -function doNodeFunc(obj, menu_id, node_srl, zone_id) { - var chk_enable = xGetElementById(menu_id+"_enable_move"); - if(!chk_enable || chk_enable.checked!=true || !obj) { - selectNode(menu_id,node_srl,zone_id); - return; - } - - deSelectNode(); - tree_drag_enable(obj,tree_drag_start,tree_drag,tree_drag_end); -} - -// 수동으로 메뉴를 선택하도록 함 -function manualSelectNode(menu_id, node_srl) { - var zone_id = "menu_"+menu_id+"_"+node_srl; - selectNode(menu_id,node_srl,zone_id,false); - return; -} - -// 노드의 폴더 아이콘 클릭시 -function toggleFolder(zone_id) { - // 아이콘을 클릭한 대상을 찾아봄 - var child_zone = xGetElementById(zone_id+"_child"); - if(!child_zone) return; - - // 대상의 아이콘들 찾음 - var line_icon = xGetElementById(zone_id+'_line_icon'); - var folder_icon = xGetElementById(zone_id+'_folder_icon'); - - // 대상의 자식 노드들이 숨겨져 있다면 열고 아니면 닫기 - if(child_zone.style.display == "block") { - child_zone.style.display = "none"; - if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_minus_bottom_icon.src; - else line_icon.src = tree_minus_icon.src; - - folder_icon.src = tree_folder_icon.src; - } else { - if(line_icon.src.indexOf('bottom')>0) line_icon.src = tree_plus_bottom_icon.src; - else line_icon.src = tree_plus_icon.src; - folder_icon.src = tree_open_folder_icon.src; - child_zone.style.display = "block"; - } -} - -// 노드의 글자 선택시 -var prev_selected_node = null; -function selectNode(menu_id, node_srl, zone_id, move_url) { - // 선택된 노드를 찾아봄 - var node_zone = xGetElementById(zone_id+'_node'); - if(!node_zone) return; - - // 이전에 선택된 노드가 있었다면 원래데로 돌림 - if(prev_selected_node) { - var prev_zone = xGetElementById(prev_selected_node.id); - if(prev_zone) { - prev_zone.style.backgroundColor = "#ffffff"; - prev_zone.style.fontWeight = "normal"; - prev_zone.style.color = "#000000"; - } - } - - // 선택된 노드의 글자를 변경 - prev_selected_node = node_zone; - node_zone.style.backgroundColor = "#0e078f"; - node_zone.style.fontWeight = "bold"; - node_zone.style.color = "#FFFFFF"; - - // 함수 실행 - if(typeof(move_url)=="undefined"||move_url==true) { - var func = node_callback_func[menu_id]; - func(menu_id, blog_node_info_list[menu_id][node_srl]); - //toggleFolder(zone_id); - } -} - -// 선택된 노드의 표시를 없앰 -function deSelectNode() { - // 이전에 선택된 노드가 있었다면 원래데로 돌림 - if(!prev_selected_node) return; - prev_selected_node.style.backgroundColor = "#ffffff"; - prev_selected_node.style.fontWeight = "normal"; - prev_selected_node.style.color = "#000000"; -} - - -// 모두 닫기 -function closeAllTreeMenu(menu_id) { - for(var i in blog_tree_menu_folder_list[menu_id]) { - var zone_id = blog_tree_menu_folder_list[menu_id][i]; - var zone = xGetElementById(zone_id); - if(!zone) continue; - var child_zone = xGetElementById(zone_id+"_child"); - if(!child_zone) continue; - - child_zone.style.display = "block"; - toggleFolder(zone_id); - } -} - -// 모두 열기 -function openAllTreeMenu(menu_id) { - for(var i in blog_tree_menu_folder_list[menu_id]) { - var zone_id = blog_tree_menu_folder_list[menu_id][i]; - var zone = xGetElementById(zone_id); - if(!zone) continue; - var child_zone = xGetElementById(zone_id+"_child"); - if(!child_zone) continue; - - child_zone.style.display = "none"; - toggleFolder(zone_id); - } -} - -// 메뉴 클릭시 기본으로 동작할 함수 (사용자 임의 함수로 대체될 수 있음) -function moveTreeMenu(menu_id, node) { - // url과 open_window값을 구함 - var node_srl = node.getAttribute("node_srl"); - var url = node.getAttribute("url"); - var open_window = node.getAttribute("open_window"); - var hasChild = false; - if(node.hasChildNodes()) hasChild = true; - - // url이 없고 child가 있으면 해당 폴더 토글한다 - if(!url && hasChild) { - var zone_id = "menu_"+menu_id+"_"+node_srl; - toggleFolder(zone_id); - return; - } - - // url이 있으면 url을 분석한다 (제로보드 특화된 부분. url이 http나 ftp등으로 시작하면 그냥 해당 url 열기) - if(url) { - // http, ftp등의 연결이 아닌 경우 제로보드용으로 처리 - if(url.indexOf('://')==-1) url = "./?"+url; - - // open_window에 따라서 처리 - if(open_window != "Y") location.href=url; - else { - var win = window.open(url); - win.focus(); - } - } -} - -// 메뉴 드래그 중이라는 상황을 간직할 변수 -var tree_drag_manager = {obj:null, isDrag:false} -var tree_tmp_object = new Array(); -var tree_disappear = 0; - -/** - * 메뉴 드래깅을 위한 함수들 - **/ -// 드래깅시 보여줄 임시 object를 생성하는 함수 -function tree_create_tmp_object(obj) { - var tmp_obj = tree_tmp_object[obj.id]; - if(tmp_obj) return tmp_obj; - - tmp_obj = xCreateElement('DIV'); - tmp_obj.id = obj.id + '_tmp'; - tmp_obj.style.display = 'none'; - tmp_obj.style.position = 'absolute'; - tmp_obj.style.backgroundColor = obj.style.backgroundColor; - tmp_obj.style.fontSize = obj.style.fontSize; - tmp_obj.style.fontFamlily = obj.style.fontFamlily; - tmp_obj.style.color = "#5277ff"; - tmp_obj.style.opacity = 1; - tmp_obj.style.filter = 'alpha(opacity=100)'; - - document.body.appendChild(tmp_obj); - tree_tmp_object[obj.id] = tmp_obj; - return tmp_obj; -} - -// 기생성된 임시 object를 찾아서 return, 없으면 만들어서 return -function tree_get_tmp_object(obj) { - var tmp_obj = tree_tmp_object[obj.id]; - if(!tmp_obj) tmp_obj = tree_create_tmp_object(obj); - return tmp_obj; -} - -// 메뉴에 마우스 클릭이 일어난 시점에 드래그를 위한 제일 첫 동작 (해당 object에 각종 함수나 상태변수 설정) -function tree_drag_enable(child_obj, funcDragStart, funcDrag, funcDragEnd) { - // 클릭이 일어난 메뉴의 상위 object를 찾음 - var obj = child_obj.parentNode.parentNode; - - // 상위 object에 드래그 가능하다는 상태와 각 드래그 관련 함수를 설정 - obj.draggable = true; - obj.drag_start = funcDragStart; - obj.drag = funcDrag; - obj.drag_end = funcDragEnd; - obj.target_id = null; - - // 드래그 가능하지 않다면 드래그 가능하도록 상태 지정하고 mousemove이벤트 등록 - if (!tree_drag_manager.isDrag) { - tree_drag_manager.isDrag = true; - xAddEventListener(document, 'mousemove', tree_drag_mouse_move, false); - } - - // mousedown이벤트 값을 지정 - xAddEventListener(obj, 'mousedown', tree_mouse_down, false); -} - -// 드래그를 시작할때 호출되는 함수 (이동되는 형태를 보여주기 위한 작업을 함) -function tree_drag_start(tobj, px, py) { - var obj = tree_get_tmp_object(tobj); - - xInnerHtml(obj, xInnerHtml(tobj)); - - tobj.source_color = tobj.style.color; - tobj.style.color = "#BBBBBB"; - - xLeft(obj, xPageX(tobj)); - xTop(obj, xPageY(tobj)); - xWidth(obj, xWidth(tobj)); - xHeight(obj, xHeight(tobj)); - - xDisplay(obj, 'block'); -} - -// 드래그 시작후 마우스를 이동할때 발생되는 이벤트에 의해 실행되는 함수 -function tree_drag(tobj, dx, dy) { - var obj = tree_get_tmp_object(tobj); - xLeft(obj, parseInt(xPageX(obj),10) + parseInt(dx,10)); - xTop(obj, parseInt(xPageY(obj),10) + parseInt(dy,10)); - - var menu_id = tobj.id.replace(/menu_/,''); - menu_id = menu_id.replace(/_([0-9]+)$/,''); - if(!menu_id) return; - - for(var node_srl in blog_node_info_list[menu_id]) { - var zone_id = "menu_"+menu_id+"_"+node_srl; - var target_obj = xGetElementById(zone_id); - - var hh = parseInt(xHeight(target_obj),10); - var h = parseInt(parseInt(xHeight(target_obj),10)/2,10); - - var l = xPageX(target_obj); - var t = xPageY(target_obj); - var ll = parseInt(l,10) + parseInt(xWidth(target_obj),10); - var tt = parseInt(t,10) + hh; - - if( tobj != target_obj && tobj.xDPX >= l && tobj.xDPX <= ll) { - if(tobj.xDPY >= t && tobj.xDPY < tt-h) { - try { - target_obj.parentNode.insertBefore(tobj, target_obj); - tobj.target_id = target_obj.id; - } catch(e) { - } - } - } - } -} - -// 드래그 종료 (이동되는 object가 이동할 곳에 서서히 이동되는 것처럼 보이는 효과) -function tree_drag_end(tobj, px, py) { - var obj = tree_get_tmp_object(tobj); - tree_disappear = tree_disapear_object(obj, tobj); - tree_drag_disable(tobj.id); -} - -// 스르르 사라지게 함;; -function tree_disapear_object(obj, tobj) { - var it = 150; - var ib = 15; - - var x = parseInt(xPageX(obj),10); - var y = parseInt(xPageY(obj),10); - var ldt = (x - parseInt(xPageX(tobj),10)) / ib; - var tdt = (y - parseInt(xPageY(tobj),10)) / ib; - - return setInterval(function() { - if(ib < 1) { - clearInterval(tree_disappear); - xInnerHtml(tobj,xInnerHtml(obj)); - xInnerHtml(obj,''); - xDisplay(obj, 'none'); - return; - } - ib -= 5; - x-=ldt; - y-=tdt; - xLeft(obj, x); - xTop(obj, y); - }, it/ib); -} - -// 마우스다운 이벤트 발생시 호출됨 -function tree_mouse_down(e) { - var evt = new xEvent(e); - var obj = evt.target; - - while(obj && !obj.draggable) { - obj = xParent(obj, true); - } - - if(obj) { - xPreventDefault(e); - obj.xDPX = evt.pageX; - obj.xDPY = evt.pageY; - tree_drag_manager.obj = obj; - xAddEventListener(document, 'mouseup', tree_mouse_up, false); - if (obj.drag_start) obj.drag_start(obj, evt.pageX, evt.pageY); - } -} - -// 마우스 버튼을 놓았을때 동작될 함수 (각종 이벤트 해제 및 변수 설정 초기화) -function tree_mouse_up(e) { - if (tree_drag_manager.obj) { - xPreventDefault(e); - xRemoveEventListener(document, 'mouseup', tree_mouse_up, false); - - if (tree_drag_manager.obj.drag_end) { - var evt = new xEvent(e); - tree_drag_manager.obj.drag_end(tree_drag_manager.obj, evt.pageX, evt.pageY); - } - - tree_drag_manager.obj = null; - tree_drag_manager.isDrag = false; - } -} - -// 드래그할때의 object이동등을 담당 -function tree_drag_mouse_move(e) { - var evt = new xEvent(e); - - if (tree_drag_manager.obj) { - xPreventDefault(e); - - var obj = tree_drag_manager.obj; - var dx = evt.pageX - obj.xDPX; - var dy = evt.pageY - obj.xDPY; - - obj.xDPX = evt.pageX; - obj.xDPY = evt.pageY; - - if (obj.drag) { - obj.drag(obj, dx, dy); - } else { - xMoveTo(obj, xLeft(obj) + dx, xTop(obj) + dy); - } - } -} - -// 해당 object 에 더 이상 drag가 되지 않도록 설정 -function tree_drag_disable(id) { - if (!tree_drag_manager) return; - var obj = xGetElementById(id); - obj.draggable = false; - obj.drag_start = null; - obj.drag = null; - obj.drag_end = null; - obj.style.color = obj.source_color; - - xRemoveEventListener(obj, 'mousedown', tree_mouse_down, false); - - if(obj.id && obj.target_id && obj.id!=obj.target_id) { - var menu_id = obj.id.replace(/menu_/,''); - menu_id = menu_id.replace(/_([0-9]+)$/,''); - if(menu_id) { - var callback_move_func = node_move_callback_func[menu_id]; - if(callback_move_func) callback_move_func(menu_id, obj.id, obj.target_id); - } - } - obj.target_id = null; -} diff --git a/modules/blog/tpl/layout_setup.html b/modules/blog/tpl/layout_setup.html deleted file mode 100644 index 6c38dd166..000000000 --- a/modules/blog/tpl/layout_setup.html +++ /dev/null @@ -1,12 +0,0 @@ - - -
    - - - - -
    - {$lang->about_layout_setup} -
    - -
    diff --git a/modules/blog/tpl/skin_info.html b/modules/blog/tpl/skin_info.html deleted file mode 100644 index 850769d9d..000000000 --- a/modules/blog/tpl/skin_info.html +++ /dev/null @@ -1,135 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->skin_default_info}
    {$lang->skin}{$skin_info->title}
    {$lang->skin_maker}{$skin_info->maker->name} ({$skin_info->maker->email_address})
    {$lang->skin_maker_homepage}{$skin_info->maker->homepage}
    {$lang->date}{$skin_info->maker->date}
    {$lang->description}{nl2br(trim($skin_info->maker->description))}
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->extra_vars}
    {$lang->colorset} - - - {@ $_img_info = getImageSize($val->screenshot); $_height = $_img_info[1]+40; $_width = $_img_info[0]+20; $_talign = "center"; } - - {@ $_width = 200; $_height = 20; $_talign = "left"; } - -
    - colorset==$val->name)-->checked="checked"/> - - -
    - {$val->title} - -
    - -
    {$menu_info->title}
    ({$menu_name})
    - -
    {$val->title} - - - - - - - - - - - - - value))-->checked="checked" class="checkbox" /> - - - - - - - - value)-->checked="checked"/> - - - - - - - -
    -
    - - -
    - - - - - - -

    {nl2br($val->description)}

    - -
    - -
    - - diff --git a/modules/blog/tpl/top_refresh.html b/modules/blog/tpl/top_refresh.html deleted file mode 100644 index 1c4d1632d..000000000 --- a/modules/blog/tpl/top_refresh.html +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/modules/guestbook/conf/info.xml b/modules/guestbook/conf/info.xml deleted file mode 100644 index 0c5b3f87d..000000000 --- a/modules/guestbook/conf/info.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 방명록 - ゲストブック - Guest Book - Tablero de visitas - 留言本 - Гостевая книга - - 제로 - Zero - zero - zero - zero - 모듈 제작을 위해 sample로 제작된 모듈입니다. - モジュール作成のためのサンプルで作成されたモジュールです。 - This is a sample module for creating modules. - Este is un módulo de muestra para crear módulos. - 留言本sample模块。 - Это модуль-пример для создания модулей. - - diff --git a/modules/guestbook/conf/module.xml b/modules/guestbook/conf/module.xml deleted file mode 100644 index d37266566..000000000 --- a/modules/guestbook/conf/module.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - 글 작성 - 留言 - 書き込み作成 - - - 댓글 작성 - 发表评论 - コメント作成 - - - 관리 - 管理 - 管理 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/modules/guestbook/guestbook.admin.controller.php b/modules/guestbook/guestbook.admin.controller.php deleted file mode 100644 index c2e935401..000000000 --- a/modules/guestbook/guestbook.admin.controller.php +++ /dev/null @@ -1,247 +0,0 @@ -module = 'guestbook'; - - // mid값을 직접 받지 않고 guestbook_name으로 받는 이유는 mid는 특별히 약속된 변수명이라 오동작이 발생할 수 있어서 다른 이름으로 전달을 받은후 다시 바꾸어준다. - $args->mid = $args->guestbook_name; - unset($args->guestbook_name); - - // is_default일 경우 별다른 요청이 없는 index페이지의 경우 바로 호출이 되는데 이 값을 설정을 하게 된다. - if($args->is_default!='Y') $args->is_default = 'N'; - - // 기본 값외의 것들을 정리 - $extra_var = delObjectVars(Context::getRequestVars(), $args); - unset($extra_var->act); - unset($extra_var->page); - unset($extra_var->guestbook_name); - - // module_srl이 넘어오면 원 모듈이 있는지 확인 - if($args->module_srl) { - $oModuleModel = &getModel('module'); - $module_info = $oModuleModel->getModuleInfoByModuleSrl($args->module_srl); - - // 만약 원래 모듈이 없으면 새로 입력하기 위한 처리 - if($module_info->module_srl != $args->module_srl) unset($args->module_srl); - } - - // $extra_var를 serialize - $args->extra_vars = serialize($extra_var); - - // module 모듈의 controller 객체 생성 - $oModuleController = &getController('module'); - - // is_default=='Y' 이면 - if($args->is_default=='Y') $oModuleController->clearDefaultModule(); - - /** - * module_srl값이 없다면 신규 등록으로 처리를 한다. - **/ - if(!$args->module_srl) { - // module controller를 이용하여 모듈을 생성한다. - $output = $oModuleController->insertModule($args); - $msg_code = 'success_registed'; - - // 권한의 경우 기본으로 설정을 해주는 것이 좋으며 방명록 모듈의 경우 manager권한을 관리 그룹으로 설정을 한다. - if($output->toBool()) { - // 관리그룹을 member model객체에서 구할 수 있다. - $oMemberModel = &getModel('member'); - $admin_group = $oMemberModel->getAdminGroup(); - $admin_group_srl = $admin_group->group_srl; - - $module_srl = $output->get('module_srl'); - $grants = serialize(array('manager'=>array($admin_group_srl))); - - // module controller의 module 권한 설정 method를 이용하여 기본 권한을 적용한다. - $oModuleController->updateModuleGrant($module_srl, $grants); - } - /** - * module_srl이 있다면 모듈의 정보를 수정한다 - **/ - } else { - $output = $oModuleController->updateModule($args); - $msg_code = 'success_updated'; - } - - // 결과값에 오류가 있을 경우 그대로 객체 리턴. - if(!$output->toBool()) return $output; - - // 등록후 페이지 이동을 위해 변수 설정 및 메세지를 설정한다. - $this->add('page',Context::get('page')); - $this->add('module_srl',$output->get('module_srl')); - $this->setMessage($msg_code); - } - - /** - * @brief 방명록 삭제 - **/ - function procGuestbookAdminDeleteGuestbook() { - // 삭제할 대상 방명록의 module_srl을 구한다. - $module_srl = Context::get('module_srl'); - - // 원본을 구해온다 - $oModuleController = &getController('module'); - $output = $oModuleController->deleteModule($module_srl); - - // 삭제 처리시 오류가 발생하면 결과 객체를 바로 리턴한다. - if(!$output->toBool()) return $output; - - // 등록후 페이지 이동을 위해 변수 설정 및 메세지를 설정한다. - $this->add('module','guestbook'); - $this->add('page',Context::get('page')); - $this->setMessage('success_deleted'); - } - - /** - * @brief 권한 설정 - * 생성된 방명록에 ./conf/module.xml에 정의된 권한과 관리자가 선택한 그룹의 값을 연동하여 권한을 설정하게 된다. - **/ - function procGuestbookAdminInsertGrant() { - // 대상 방명록(모듈)의 고유값인 module_srl을 체크한다. - $module_srl = Context::get('module_srl'); - - /** - * 현 모듈의 권한 목록을 가져옴 - * xml_info 는 guestbook모듈이 요청되었다고 판단될때 ModuleObject에서 이미 세팅해 놓은 상태이다. - **/ - $grant_list = $this->xml_info->grant; - - /** - * 권한의 목록을 loop로 돌면서 권한 설정을 한다. - * zbxe의 경우 가능한 간단한 xmlrpc사용을 위해서 배열의 경우 |@|를 pipe로 하여 하나의 string으로 전달한다. - * 요청받은 권한의 대상 그룹과 권한을 배열로 한 후 serialize하여 modules테이블에 module_srl을 키로 한 rows에 데이터를 적용한다. - **/ - if(count($grant_list)) { - foreach($grant_list as $key => $val) { - $group_srls = Context::get($key); - if($group_srls) $arr_grant[$key] = explode('|@|',$group_srls); - } - $grants = serialize($arr_grant); - } - - // 권한 설정은 모듈 공통이라 module 모듈의 controller을 생성하여 저장하도록 한다. - $oModuleController = &getController('module'); - $oModuleController->updateModuleGrant($module_srl, $grants); - - // 권한 설정후 돌아갈 페이지를 위하여 module_srl값을 세팅하고 성공 메세지 역시 세팅한다. - $this->add('module_srl',Context::get('module_srl')); - $this->setMessage('success_registed'); - } - - /** - * @brief 스킨 정보 업데이트 - * 스킨 정보는 skin.xml파일의 extra_vars와 입력된 변수값을 조합하여 serialize하여 modules 테이블에 module_srl을 키로 하여 저장을 하게 된다. - **/ - function procGuestbookAdminUpdateSkinInfo() { - // module_srl에 해당하는 정보들을 가져오기 - $module_srl = Context::get('module_srl'); - - // 어떤 스킨이 사용중인지 확인하기 위해서 module_srl을 이용하여 모듈의 정보를 구하고 스킨을 구한다. - $oModuleModel = &getModel('module'); - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - $skin = $module_info->skin; - - // 스킨의 정보르 구해옴 (extra_vars를 체크하기 위해서) - $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); - - // 입력받은 변수들을 체크 (mo, act, module_srl, page등 기본적인 변수들 없앰) - $obj = Context::getRequestVars(); - unset($obj->act); - unset($obj->module_srl); - unset($obj->page); - - // 원 skin_info에서 extra_vars의 type이 image일 경우 별도 처리를 해줌 - if($skin_info->extra_vars) { - foreach($skin_info->extra_vars as $vars) { - if($vars->type!='image') continue; - - $image_obj = $obj->{$vars->name}; - - // 삭제 요청에 대한 변수를 구함 - $del_var = $obj->{"del_".$vars->name}; - unset($obj->{"del_".$vars->name}); - if($del_var == 'Y') { - @unlink($module_info->{$vars->name}); - continue; - } - - // 업로드 되지 않았다면 이전 데이터를 그대로 사용 - if(!$image_obj['tmp_name']) { - $obj->{$vars->name} = $module_info->{$vars->name}; - continue; - } - - // 정상적으로 업로드된 파일이 아니면 무시 - if(!is_uploaded_file($image_obj['tmp_name'])) { - unset($obj->{$vars->name}); - continue; - } - - // 이미지 파일이 아니어도 무시 - if(!preg_match("/\.(jpg|jpeg|gif|png)$/i", $image_obj['name'])) { - unset($obj->{$vars->name}); - continue; - } - - // 경로를 정해서 업로드 - $path = sprintf("./files/attach/images/%s/", $module_srl); - - // 디렉토리 생성 - if(!FileHandler::makeDir($path)) return false; - - $filename = $path.$image_obj['name']; - - // 파일 이동 - if(!move_uploaded_file($image_obj['tmp_name'], $filename)) { - unset($obj->{$vars->name}); - continue; - } - - // 변수를 바꿈 - unset($obj->{$vars->name}); - $obj->{$vars->name} = $filename; - } - } - - // serialize하여 저장 - $skin_vars = serialize($obj); - - // module controller객체를 생성하여 module_srl을 키로 한 rows에 serialize한 스킨 정보를 적용한다. - $oModuleController = &getController('module'); - $oModuleController->updateModuleSkinVars($module_srl, $skin_vars); - - /** - * 스킨 정보는 첨부파일때문에 xml로 전달이 되지 않고 POST로 전송이 되어 왔으므로 템플릿을 이용하여 프레임을 refresh시키도록 한다. - * 스킨 정보를 수정할때 숨어 있는 iframe을 target으로 삼기에 기본 레이아웃을 이용하면 되므로 직접 레이아웃 경로와 파일을 기본으로 지정한다. - **/ - $this->setLayoutPath('./common/tpl'); - $this->setLayoutFile('default_layout.html'); - $this->setTemplatePath($this->module_path.'tpl'); - $this->setTemplateFile("top_refresh.html"); - } - } -?> diff --git a/modules/guestbook/guestbook.admin.view.php b/modules/guestbook/guestbook.admin.view.php deleted file mode 100644 index 3b8d899ce..000000000 --- a/modules/guestbook/guestbook.admin.view.php +++ /dev/null @@ -1,189 +0,0 @@ -module_srl) { - $module_srl = $this->module_srl; - Context::set('module_srl', $module_srl); - } - - // module info를 구하기 위해 module model 객체 생성 - $oModuleModel = &getModel('module'); - - // 모듈 카테고리 목록을 구함 - $module_category = $oModuleModel->getModuleCategories(); - Context::set('module_category', $module_category); - - // module_srl이 있다면 요청된 모듈의 정보를 미리 구해 놓음 - if($module_srl) { - $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - if(!$module_info) { - Context::set('module_srl',''); - $this->act = 'list'; - } else { - $this->module_info = $module_info; - Context::set('module_info',$module_info); - } - } - - // 템플릿 경로 지정, 관리자 페이지를 위한 템플릿은 별도의 스킨 기능이 없이 ./modules/모듈/tpl/ 에 위치해 놓기에 바로 지정을 해 놓는다. - $template_path = sprintf("%stpl/",$this->module_path); - $this->setTemplatePath($template_path); - } - - /** - * @brief 생성된 방명록들의 목록을 보여줌 - * guestbook이라는 module명으로 등록된 모듈을 구하기 위해서 몇가지 설정을 한 후에 쿼리를 수행한다. - * 쿼리수행은 executeQuery(모듈명.쿼리아이디, 인자변수) 로 하게 되며 이 쿼리아이디에 해당하는 xml파일은 모듈의 queries디렉토리에 지정이 되어 있다. - * - * 이 특정 module의 목록은 module model객체에서 구할 수 있지만 검색등의 각 모듈마다 다른 조건 때문에 각 모듈별로 쿼리를 생성해 놓는다. - * 모든 모듈의 결과물(mid)는 modules 테이블에 저장이 된다. - **/ - function dispGuestbookAdminContent() { - $args->sort_index = "module_srl"; ///< 정렬 순서는 모듈의 sequence값으로 하고 정렬은 역순. 즉 생성된 순으로 한다. - $args->page = Context::get('page'); ///< 현재 페이지를 설정 - $args->list_count = 40; ///< 한페이지에 40개씩 보여주기로 고정. - $args->page_count = 10; ///< 페이지의 수는 10개로 제한. - $args->s_module_category_srl = Context::get('module_category_srl'); ///< 모듈분류값을 인자로 추가 - $output = executeQuery('guestbook.getGuestbookList', $args); ///< guestbook.getGuesbookList 쿼리 실행 (./modules/guestbook/query/getGuestbookList.xml) - - /** - * 템플릿에 쓰기 위해서 context::set - * xml query에 navigation이 있고 list_count가 정의되어 있으면 결과 변수에 아래 5가지의 값이 세팅이 된다. - **/ - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('guestbook_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - - // 템플릿 파일 지정 (./modules/guestbook/tpl/index.html파일이 지정이 됨) - $this->setTemplateFile('index'); - } - - /** - * @brief 선택된 방명록의 정보 출력 - **/ - function dispGuestbookAdminGuestbookInfo() { - // module_srl 값이 없다면 그냥 index 페이지를 보여줌 - if(!Context::get('module_srl')) return $this->dispGuestbookAdminContent(); - - // 레이아웃이 정해져 있다면 레이아웃 정보를 추가해줌(layout_title, layout) - if($this->module_info->layout_srl) { - $oLayoutModel = &getModel('layout'); - $layout_info = $oLayoutModel->getLayout($this->module_info->layout_srl); - $this->module_info->layout = $layout_info->layout; - $this->module_info->layout_title = $layout_info->layout_title; - } - - // 정해진 스킨이 있으면 해당 스킨의 정보를 구함 - if($this->module_info->skin) { - $oModuleModel = &getModel('module'); - $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $this->module_info->skin); - $this->module_info->skin_title = $skin_info->title; - } - - // 템플릿 파일 지정 - $this->setTemplateFile('guestbook_info'); - } - - /** - * @brief 방명록 설정 폼 출력 - **/ - function dispGuestbookAdminInsertGuestbook() { - // 스킨 목록을 구해옴 - $oModuleModel = &getModel('module'); - $skin_list = $oModuleModel->getSkins($this->module_path); - Context::set('skin_list',$skin_list); - - // 레이아웃 목록을 구해옴 - $oLayoutMode = &getModel('layout'); - $layout_list = $oLayoutMode->getLayoutList(); - Context::set('layout_list', $layout_list); - - // 템플릿 파일 지정 - $this->setTemplateFile('guestbook_insert'); - } - - /** - * @brief 방명록 삭제 화면 출력 - **/ - function dispGuestbookAdminDeleteGuestbook() { - if(!Context::get('module_srl')) return $this->dispGuestbookAdminContent(); - - $module_info = Context::get('module_info'); - - // 해당 방명록에 입력된 전체 글의 갯수를 보여줌 (혹시 삭제 실수를 방지하기 위해서) - $oDocumentModel = &getModel('document'); - $document_count = $oDocumentModel->getDocumentCount($module_info->module_srl); - $module_info->document_count = $document_count; - - Context::set('module_info',$module_info); - - // 템플릿 파일 지정 - $this->setTemplateFile('guestbook_delete'); - } - - /** - * @brief 스킨 정보 보여줌 - **/ - function dispGuestbookAdminSkinInfo() { - - // 현재 선택된 모듈의 스킨의 정보 xml 파일을 읽음 - $module_info = Context::get('module_info'); - $skin = $module_info->skin; - - $oModuleModel = &getModel('module'); - $skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin); - - // skin_info에 extra_vars 값을 지정 - if(count($skin_info->extra_vars)) { - foreach($skin_info->extra_vars as $key => $val) { - $name = $val->name; - $type = $val->type; - $value = $module_info->{$name}; - if($type=="checkbox"&&!$value) $value = array(); - $skin_info->extra_vars[$key]->value= $value; - } - } - - Context::set('skin_info', $skin_info); - $this->setTemplateFile('skin_info'); - } - - /** - * @brief 권한 목록 출력 - **/ - function dispGuestbookAdminGrantInfo() { - // module_srl을 구함 - $module_srl = Context::get('module_srl'); - - // module.xml에서 권한 관련 목록을 구해옴 - $grant_list = $this->xml_info->grant; - Context::set('grant_list', $grant_list); - - // 권한 그룹의 목록을 가져온다 - $oMemberModel = &getModel('member'); - $group_list = $oMemberModel->getGroups(); - Context::set('group_list', $group_list); - - $this->setTemplateFile('grant_list'); - } - } -?> diff --git a/modules/guestbook/guestbook.class.php b/modules/guestbook/guestbook.class.php deleted file mode 100644 index 211eb5613..000000000 --- a/modules/guestbook/guestbook.class.php +++ /dev/null @@ -1,64 +0,0 @@ -insertActionForward('guestbook', 'view', 'dispGuestbookAdminContent'); - $oModuleController->insertActionForward('guestbook', 'view', 'dispGuestbookAdminGuestbookInfo'); - $oModuleController->insertActionForward('guestbook', 'view', 'dispGuestbookAdminInsertGuestbook'); - $oModuleController->insertActionForward('guestbook', 'view', 'dispGuestbookAdminDeleteGuestbook'); - $oModuleController->insertActionForward('guestbook', 'view', 'dispGuestbookAdminSkinInfo'); - $oModuleController->insertActionForward('guestbook', 'view', 'dispGuestbookAdminGrantInfo'); - $oModuleController->insertActionForward('guestbook', 'controller', 'procGuestbookAdminUpdateSkinInfo'); - - - // Object 클래스의 객체는 기본적으로 성공(error=0)으로 되어 있고 이 값을 return함으로써 ModuleHandler등에서 오류 유무를 파악할 수 있다. - return new Object(); - } - - /** - * @brief 설치가 이상이 없는지 체크하는 method - * 설치시 필수 체크 부분이 있다면 검토하는 코드를 추가할 수 있다. - **/ - function checkUpdate() { - return false; - } - - /** - * @brief 업데이트 실행 - * 설치시 이상이 있으면 이 moduleUpdate() 메쏘드를 이용하여 업데이트 구문을 실행할수 있다. - **/ - function moduleUpdate() { - return new Object(); - } - - /** - * @brief 캐시 파일 재생성 - **/ - function recompileCache() { - } - } -?> diff --git a/modules/guestbook/guestbook.controller.php b/modules/guestbook/guestbook.controller.php deleted file mode 100644 index 18b5897ae..000000000 --- a/modules/guestbook/guestbook.controller.php +++ /dev/null @@ -1,246 +0,0 @@ -grant->write_document) return new Object(-1, 'msg_not_permitted'); - - /** - * 글작성시 필요한 변수를 세팅한다. - * 일단 Context::getReuqestVars()를 통해 모든 입력된 변수값을 가져온다. - * 글 작성은 document controller를 이용하여 정리된 변수를 넘겨줌으로서 동작이 된다. - **/ - $obj = Context::getRequestVars(); - - // 현재 방명록의 module_srl값을 구해와서 세팅한다. - $obj->module_srl = $this->module_srl; - - // 공지사항 지정 변수값인 is_notice가 Y가 아니거나 관리자가 아니라면 공지사항은 무조건 N로 세팅한다. - if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N'; - - /** - * 문서의 신규 입력인지 수정인지에 대한 체크를 하기 위해서 document model을 통해 원본 문서가 있는지 확인하는 절차를 거쳐야 한다. - **/ - $oDocumentModel = &getModel('document'); - - // document module의 controller 객체 생성 - $oDocumentController = &getController('document'); - - // 문서객체를 구해온다. - $oDocument = $oDocumentModel->getDocument($obj->document_srl, $this->grant->manager); - - /** - * 제목은 document모델에서는 필수 요건이다. - * 방명록에서는 제목이 필요 없어서 본문의 내용중 앞 10자리의 글자를 잘라서 제목으로 강제 적용한다. - **/ - $obj->title = cut_str($obj->content,10,'...'); - - /** - * 이미 존재하는 글일 경우 수정을 한다. - * 글 수정은 document controller의 updateDocument() method를 이용한다. - * 결과메세지를 일단 강제로 정의 해 놓는다. - **/ - if($oDocument->isExists() && $oDocument->document_srl == $obj->document_srl) { - $output = $oDocumentController->updateDocument($oDocument, $obj); - $msg_code = 'success_updated'; - - /** - * 존재하지 않는다고 판단이 되면 신규글 입력을 한다. - * 신규글 입력은 document controller의 inesrtDocument() method를 이용한다. - * 결과메세지를 일단 강제로 정의 해 놓는다. - **/ - } else { - $obj->document_srl = getNextSequence(); - $output = $oDocumentController->insertDocument($obj); - $msg_code = 'success_registed'; - } - - /** - * updateDocument(), insertDocument()에서 오류가 발생하였으면 리턴받은 객체 자체를 바로 돌려준다. - * 이 object객체는 error, message등의 내부 변수를 이용하여 에러 발생 유무와 에러 메세지를 가지고 있다. - **/ - if(!$output->toBool()) return $output; - - /** - * 결과를 리턴하기 위해서 mid, document_srl값을 세팅을 한다. - * controller의 경우 대부분 xml로 요청을 받고 xml로 return을 하게 된다. - * $this->add(key, value)로 세팅된 값들은 결과 xml에서 사용이 된다. - * 이 값들은 javascript에서 xml handler를 통해서 사용이 가능하게 되고 보통 url조합을 할때 사용이 된다. - **/ - $this->add('mid', Context::get('mid')); - $this->add('document_srl', $output->get('document_srl')); - - /** - * 성공 메세지 등록 - * setMessage($message)는 xml에 지정이 되고 이 message는 javascript에서 alert()를 시키게 된다. - **/ - $this->setMessage($msg_code); - } - - /** - * @brief 문서 삭제 - **/ - function procGuestbookDeleteDocument() { - // 문서 번호 확인 - $document_srl = Context::get('document_srl'); - - // 문서 번호가 없다면 오류 발생 - if(!$document_srl) return $this->doError('msg_invalid_document'); - - // document module model 객체 생성 - $oDocumentController = &getController('document'); - - // 삭제 시도 - $output = $oDocumentController->deleteDocument($document_srl, $this->grant->manager); - - // 삭제시 실패하였을 경우 리턴받은 객체를 그대로 리턴. - if(!$output->toBool()) return $output; - - // 성공 메세지 등록 - $this->add('mid', Context::get('mid')); - $this->add('page', Context::get('page')); - $this->setMessage('success_deleted'); - } - - /** - * @brief 댓글 추가 - **/ - function procGuestbookInsertComment() { - // 권한 체크 - if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted'); - - // 댓글 입력에 필요한 데이터 추출 - $obj = Context::gets('document_srl','comment_srl','parent_srl','content','password','nick_name','nick_name','member_srl','email_address','homepage'); - $obj->module_srl = $this->module_srl; - - // comment 모듈의 model 객체 생성 - $oCommentModel = &getModel('comment'); - - // comment 모듈의 controller 객체 생성 - $oCommentController = &getController('comment'); - - /** - * 게시판이나 블로그와 달리 방명록의 댓글은 textarea를 그대로 사용한다. - * 따라서 줄바꾸임나 태그제거등의 작업을 해주어야 함 - **/ - $obj->content = nl2br(strip_tags($obj->content)); - - /** - * 존재하는 댓글인지를 확인하여 존재 하지 않는 댓글이라면 신규로 등록하기 위해서 comment_srl의 sequence값을 받는다 - **/ - if(!$obj->comment_srl) { - $obj->comment_srl = getNextSequence(); - } else { - $comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager); - } - - // comment_srl이 없을 경우 신규 입력 - if($comment->comment_srl != $obj->comment_srl) { - - // parent_srl이 있으면 답변으로 - if($obj->parent_srl) { - $parent_comment = $oCommentModel->getComment($obj->parent_srl); - if(!$parent_comment->comment_srl) return new Object(-1, 'msg_invalid_request'); - - $output = $oCommentController->insertComment($obj); - - // 없으면 신규 - } else { - $output = $oCommentController->insertComment($obj); - } - - // comment_srl이 있으면 수정으로 - } else { - $obj->parent_srl = $comment->parent_srl; - $output = $oCommentController->updateComment($obj, $this->grant->manager); - $comment_srl = $obj->comment_srl; - } - - // 오류 발생시 객체 그대로 리턴. - if(!$output->toBool()) return $output; - - // 댓글 입력후 페이지 이동을 위한 변수 및 메세지를 설정한다. - $this->add('mid', Context::get('mid')); - $this->add('document_srl', $obj->document_srl); - $this->add('comment_srl', $obj->comment_srl); - - $this->setMessage('success_registed'); - } - - /** - * @brief 댓글 삭제 - **/ - function procGuestbookDeleteComment() { - // 댓글 번호 확인 - $comment_srl = Context::get('comment_srl'); - if(!$comment_srl) return $this->doError('msg_invalid_request'); - - // comment 모듈의 controller 객체 생성 - $oCommentController = &getController('comment'); - $output = $oCommentController->deleteComment($comment_srl, $this->grant->manager); - - // 오류 발생시 객체 그대로 리턴. - if(!$output->toBool()) return $output; - - // 댓글 입력후 페이지 이동을 위한 변수 및 메세지를 설정한다. - $this->setMessage('success_deleted'); - $this->add('mid', Context::get('mid')); - $this->add('page', Context::get('page')); - $this->add('document_srl', $output->get('document_srl')); - } - - /** - * @brief 문서와 댓글의 비밀번호를 확인 - * 비밀번호와 문서 혹은 댓글의 비밀번호를 비교하여 이상이 없다면 해당 문서 또는 댓글에 권한을 부여한다. - * 이 권한은 세션에 저장이 되어 차후 다시 수정등을 할 경우 비밀번호 검사를 하지 않게 된다. - **/ - function procGuestbookVerificationPassword() { - // 비밀번호와 문서 번호를 받음 - $password = Context::get('password'); - $document_srl = Context::get('document_srl'); - $comment_srl = Context::get('comment_srl'); - - $oMemberModel = &getModel('member'); - - // comment_srl이 있을 경우 댓글이 대상 - if($comment_srl) { - // 문서번호에 해당하는 글이 있는지 확인 - $oCommentModel = &getModel('comment'); - $oComment = $oCommentModel->getComment($comment_srl); - if(!$oComment->isExists()) return new Object(-1, 'msg_invalid_request'); - - // 문서의 비밀번호와 입력한 비밀번호의 비교 - if(!$oMemberModel->isValidPassword($oComment->get('password'),$password)) return new Object(-1, 'msg_invalid_password'); - - $oComment->setGrant(); - } else { - // 문서번호에 해당하는 글이 있는지 확인 - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - if(!$oDocument->isExists()) return new Object(-1, 'msg_invalid_request'); - - // 문서의 비밀번호와 입력한 비밀번호의 비교 - if(!$oMemberModel->isValidPassword($oDocument->get('password'),$password)) return new Object(-1, 'msg_invalid_password'); - - $oDocument->setGrant(); - } - } - - } -?> diff --git a/modules/guestbook/guestbook.view.php b/modules/guestbook/guestbook.view.php deleted file mode 100644 index ad0836358..000000000 --- a/modules/guestbook/guestbook.view.php +++ /dev/null @@ -1,328 +0,0 @@ -module_srl) Context::set('module_srl',$this->module_srl); - - /** - * 현재 방명록 모듈의 정보를 module_info라는 이름으로 템플릿에서 사용할 수 있게 하기 위해 세팅한다 - **/ - Context::set('module_info',$this->module_info); - - /** - * 스킨 정보에서 받는 목록수나 페이지수를 미리 선언해 놓는다 - **/ - $this->list_count = $this->module_info->list_count?$this->module_info->list_count:20; - $this->page_count = $this->module_info->page_count?$this->module_info->page_count:10; - - /** - * 모듈정보에서 넘어오는 skin값을 이용하여 최종 출력할 템플릿의 위치를 출력한다. - * $this->module_path는 ./modules/guestbook/의 값을 가지고 있다 - **/ - $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); - $this->setTemplatePath($template_path); - - } - - /** - * @brief 목록 및 입력항목 출력 - **/ - function dispGuestbookContent() { - /** - * 목록 구현에 필요한 변수들을 가져온다 - * 방명록은 기본적으로 page변수만 있으면 된다 - **/ - $page = Context::get('page'); - - $oDocumentModel = &getModel('document'); ///< getModel, getController, getView 함수를 통해서 간단히 원하는 객체를 생성할 수 있다. - - /** - * write_form.html을 목록에서도 include를 하게 되는데 write_form.html의 경우 $oDocument라는 선택된 문서의 객체가 필요하다. - * 목록에서는 수정이 아닌 입력만 있어서 이 $oDocument라는 object를 생성을 해 준다 - **/ - $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); - Context::set('oDocument', $oDocument); - - /** - * 글 작성 권한이 있다면 글쓰기 에디터를 세팅한다 - * write_document는 ./conf/module.xml에 정의되어 있고 관리페이지에서 권한 그룹을 설정한 값이다. - **/ - if($this->grant->write_document) { - /** - * 에디터에서 사용할 고유 문서 번호를 구해 온다. - * ZBXE에서는 모든 고유값을 getNextSequence() 로 구해 올 수 있고 글쓰기(editor) 모듈은 이 고유번호를 바탕으로 동작을 한다. - **/ - $document_srl = getNextSequence(); - - /** - * editor model객체의 getEditor method를 호출하여 세팅한다. - * 이 때 여러가지 옵션을 지정하여 다른 에디터 코드를 받을 수 있다. - **/ - $oEditorModel = &getModel('editor'); - $option->primary_key_name = 'document_srl'; - $option->content_key_name = 'content'; - $option->allow_fileupload = false; ///< 파일 업로드 기능을 제한 - $option->enable_autosave = false; ///< 자동 저장 기능을 활성화 - $option->enable_default_component = false; ///< 기본 에디터 컴포넌트의 활성화 - $option->enable_component = false; ///< 추가 에디터 컴포넌트의 활성화 - $option->resizable = false; ///< 글쓰기 폼의 상하 조절 가능하도록 설정 - $option->disable_html = true; ///< html_mode - $option->height = 200; ///< 에디터의 높이 지정 - $editor = $oEditorModel->getEditor($document_srl, $option); ///< 에디터코드를 받음 - Context::set('editor', $editor); ///< 에디터코드를 editor라는 이름으로 세팅. - } - - /** - * document 모듈을 이용해서 현재 방명록의 module_srl로 목록을 구한다. - * 목록을 구할때 필요한 변수를 $args에 세팅후 document.model객체를 생성하고 getDocumentList() method를 호출한다. - **/ - // 목록을 구하기 위한 옵션 - $args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl - $args->page = $page; ///< 페이지 - $args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수 - $args->page_count = $this->page_count; ///< 페이지 네비게이션에 나타날 페이지의 수 - $args->sort_index = 'list_order'; ///< 목록의 정렬 대상 (list_order, 즉 날짜의 역순을 정렬 대상으로 한다) - $args->order_type = 'asc'; ///< 정렬 순서 (list_order는 -1부터 -1되어서 저장되는 값이라 asc로 정렬 순서를 정하면 된다) - - /** - * document model객체를 생성하여 목록을 구한다. - **/ - $output = $oDocumentModel->getDocumentList($args); - - /** - * 템플릿에 쓰기 위해서 document_model::getDocumentList() 의 return object에 있는 값들을 세팅 - * ZBXE에서 목록의 경우 5가지의 값으로 결과를 받는다. - * total_count : 대상의 전체 글 수 - * total_page : 대상의 전체 페이지 수 (list_count, page_count로 계산되어진 값) - * page : 현재 페이지 - * data : 목록 배열 - * page_navigation : 페이지 네비게이션을 출력하기 위한 object - **/ - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('document_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - - /** - * 템플릿 파일을 지정한다. - * 이미 template path는 init()에서 정의를 하였다. - **/ - $this->setTemplateFile('list'); - } - - /** - * @brief 글 수정 화면 출력 - **/ - function dispGuestbookModify() { - // 권한 체크 - if(!$this->grant->write_document) return $this->dispGuestbookMessage('msg_not_permitted'); - - // GET parameter에서 document_srl을 가져옴 - $document_srl = Context::get('document_srl'); - - // document 모듈 객체 생성 - $oDocumentModel = &getModel('document'); - - $oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); - $oDocument->setDocument($document_srl); - - if(!$oDocument->isExists()) Context::set('document_srl',''); - - if(!$document_srl) $document_srl = getNextSequence(); - - // 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 - if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); - - Context::set('document_srl',$document_srl); - Context::set('oDocument', $oDocument); - - // 에디터 모듈의 getEditor를 호출하여 세팅 - $oEditorModel = &getModel('editor'); - $option->primary_key_name = 'document_srl'; - $option->content_key_name = 'content'; - $option->allow_fileupload = $this->grant->fileupload; - $option->enable_autosave = true; - $option->enable_default_component = true; - $option->enable_component = true; - $option->resizable = true; - $option->height = 600; - $editor = $oEditorModel->getEditor($document_srl, $option); - Context::set('editor', $editor); - - $this->setTemplateFile('write_form'); - } - - - /** - * @brief 문서 삭제 화면 출력 - **/ - function dispGuestbookDelete() { - /** - * 권한 체크 - * 글쓰기 권한이 없다면 아예 접근이 불가능하도록 해 버린다. - **/ - if(!$this->grant->write_document) return $this->dispGuestbookMessage('msg_not_permitted'); - - /** - * 삭제할 문서번호를 가져온다 - * 이 문서 번호는 get parmameter에 저장되어 있고 Context 클래스에서 미리 세팅을 해 놓은 상태이다. - **/ - $document_srl = Context::get('document_srl'); - - /** - * 문서 번호가 없으면 잘못된 접근으로 에러 메세지를 출력한다. - **/ - if(!$document_srl) return $this->dispGuestbookMessage('msg_invalid_request'); - - /** - * 문서 번호로 문서객체를 구해온다 - **/ - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - - // 대상 문서가 없으면 에러 - if(!$oDocument->isExists()) return $this->dispGuestbookContent(); - - /** - * 권한을 체크한다. - * 권한 체크는 글쓴 사용자와 현재 로그인한 사용자의 정보가 같거나 최고관리자 일 경우 권한이 있다고 판단하고, - * 그렇지 않은 경우는 비밀번호 입력 폼을 출력한다. - **/ - if(!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form'); - - // 구해진 문서를 context setting하고 delete_form.html 파일을 템플릿 파일로 지정하여 삭제 폼을 출력한다. - Context::set('oDocument',$oDocument); - - // delete_from.html 템플릿 파일의 지정 - $this->setTemplateFile('delete_form'); - } - - /** - * @brief 댓글의 답글 화면 출력 - **/ - function dispGuestbookReplyComment() { - // 댓글 작성 권한을 체크한다. - if(!$this->grant->write_comment) return $this->dispGuestbookMessage('msg_not_permitted'); - - // 댓글의 답글을 출력하기 위해서 문서와 원 댓글의 유효성을 검사하기 위해 변수를 가져온다. - $document_srl = Context::get('document_srl'); - $parent_srl = Context::get('comment_srl'); - - // 지정된 원 댓글이 없다면 오류 - if(!$parent_srl) return new Object(-1, 'msg_invalid_request'); - - // 해당 댓글를 찾아본다 - $oCommentModel = &getModel('comment'); - $source_comment = $oCommentModel->getComment($parent_srl, $this->grant->manager); - - // 댓글이 없다면 오류 - if(!$source_comment) return $this->dispGuestbookMessage('msg_invalid_request'); - - // 필요한 정보들 세팅 - Context::set('document_srl',$source_comment->document_srl); - Context::set('parent_srl',$parent_srl); - Context::set('comment_srl',NULL); - Context::set('source_comment',$source_comment); - - /** - * comment_form.html 템플릿 파일을 출력할 파일로 지정 - **/ - $this->setTemplateFile('comment_form'); - } - - /** - * @brief 댓글 수정 폼 출력 - **/ - function dispGuestbookModifyComment() { - // 댓글 작성 권한을 체크한다. - if(!$this->grant->write_comment) return $this->dispGuestbookMessage('msg_not_permitted'); - - // 댓글을 수정하기 위하여 문서와 원 댓글의 유효성을 검사하기 위해 변수를 가져온다. - $document_srl = Context::get('document_srl'); - $comment_srl = Context::get('comment_srl'); - - // 지정된 댓글이 없다면 오류 - if(!$comment_srl) return new Object(-1, 'msg_invalid_request'); - - // 해당 댓글를 찾아본다 - $oCommentModel = &getModel('comment'); - $comment = $oCommentModel->getComment($comment_srl, $this->grant->manager); - - // 댓글이 없다면 오류 - if(!$comment) return $this->dispGuestbookMessage('msg_invalid_request'); - - // 문서번호를 context setting한다 - Context::set('document_srl',$comment->document_srl); - - // 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 - if(!$comment->is_granted) return $this->setTemplateFile('input_password_form'); - - // 필요한 정보들 세팅 - Context::set('comment_srl',$comment_srl); - Context::set('comment', $comment); - - // comment_form 파일을 템플릿 출력 파일로 지정 - $this->setTemplateFile('comment_form'); - } - - /** - * @brief 댓글 삭제 화면 출력 - **/ - function dispGuestbookDeleteComment() { - // 댓글 작성 권한을 체크한다. - if(!$this->grant->write_comment) return $this->dispGuestbookMessage('msg_not_permitted'); - - // 삭제할 댓글번호를 가져온다 - $comment_srl = Context::get('comment_srl'); - - // 삭제하려는 댓글이 있는지 확인 - if(!$comment_srl) return $this->dispGuestbookMessage('msg_invalid_request'); - - // 해당 댓글을 가져온다. - $oCommentModel = &getModel('comment'); - $comment = $oCommentModel->getComment($comment_srl, $this->grant->manager); - - // 삭제하려는 댓글이 없으면 에러 - if(!$comment) return $this->dispGuestbookContent('msg_invalid_request'); - - // 문서 번호를 context setting한다. - Context::set('document_srl',$comment->document_srl); - - // 권한이 없는 경우 비밀번호 입력화면으로 - if(!$comment->is_granted) return $this->setTemplateFile('input_password_form'); - - Context::set('comment',$comment); - - // delete_comemnt_form.html파일을 출력 파일로 지정한다. - $this->setTemplateFile('delete_comment_form'); - } - - /** - * @brief 메세지 출력 - **/ - function dispGuestbookMessage($msg_code) { - $msg = Context::getLang($msg_code); - if(!$msg) $msg = $msg_code; - Context::set('message', $msg); - $this->setTemplateFile('message'); - } - - } -?> diff --git a/modules/guestbook/lang/en.lang.php b/modules/guestbook/lang/en.lang.php deleted file mode 100644 index 2b14f4a9d..000000000 --- a/modules/guestbook/lang/en.lang.php +++ /dev/null @@ -1,16 +0,0 @@ -guestbook = "Guestbook"; - - // Words used in buttons - $lang->cmd_guestbook_list = 'Guestbook List'; - $lang->cmd_module_config = 'Common Guestbook Configuration'; - $lang->cmd_view_info = 'Guestbook Info'; - - $lang->about_board = "This module is used for creating and managing guestbooks.\nSelect the module's name from the list after creating one to configurate specifically.\nBe careful with guestbook's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)"; -?> diff --git a/modules/guestbook/lang/es.lang.php b/modules/guestbook/lang/es.lang.php deleted file mode 100644 index e56b02c0d..000000000 --- a/modules/guestbook/lang/es.lang.php +++ /dev/null @@ -1,16 +0,0 @@ -board = "Tablero de Visitas"; - - // Palabras utilizadas en los botones - $lang->cmd_board_list = 'Lista de tebleros de visitas'; - $lang->cmd_module_config = 'Configuración común del tablero de visitas'; - $lang->cmd_view_info = 'Información del tablero de visitas'; - - $lang->about_board = "El módulo es usado para crear y manejar los tableros de visitas.\nLuego de crear un Tablero, seleciona el nombre del módulo en la lista para la configuración más detallada.\nSea cuidadoso con el nombre del módulo, ya que ese nombre va a ser la dirección URL. (ej : http://dominio/zb/?mid=nombre del módulo)"; -?> diff --git a/modules/guestbook/lang/jp.lang.php b/modules/guestbook/lang/jp.lang.php deleted file mode 100644 index 5468fab1a..000000000 --- a/modules/guestbook/lang/jp.lang.php +++ /dev/null @@ -1,16 +0,0 @@ -guestbook = "ゲストブック"; - - // ボタンに使用する用語 - $lang->cmd_guestbook_list = 'ゲストブックリスト'; - $lang->cmd_module_config = 'ゲストブック共通設定'; - $lang->cmd_view_info = 'ゲストブック情報'; - - $lang->about_guestbook = "ゲストブックを作成・管理できるモジュールです。作成後、リストからモジュール名を選択すると詳細な設定ができます。ゲストブックのモジュール名は、接続URLになるため、慎重に入力してください。(例:http://ドメイン/zb/?mid=モジュール名)"; -?> diff --git a/modules/guestbook/lang/ko.lang.php b/modules/guestbook/lang/ko.lang.php deleted file mode 100644 index e8bb2da38..000000000 --- a/modules/guestbook/lang/ko.lang.php +++ /dev/null @@ -1,16 +0,0 @@ -guestbook = "방명록"; - - // 버튼에 사용되는 언어 - $lang->cmd_guestbook_list = '방명록 목록'; - $lang->cmd_module_config = '방명록 공통 설정'; - $lang->cmd_view_info = '방명록 정보'; - - $lang->about_guestbook = "방명록을 생성하고 관리할 수 있는 방명록 모듈입니다.\n생성하신 후 목록에서 모듈이름을 선택하시면 자세한 설정이 가능합니다.\n방명록의 모듈이름은 접속 url이 되므로 신중하게 입력해주세요. (ex : http://도메인/zb/?mid=모듈이름)"; -?> diff --git a/modules/guestbook/lang/ru.lang.php b/modules/guestbook/lang/ru.lang.php deleted file mode 100644 index 3c27ab74c..000000000 --- a/modules/guestbook/lang/ru.lang.php +++ /dev/null @@ -1,16 +0,0 @@ - | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467; - * @brief Russian basic language pack for Zeroboard XE - **/ - - $lang->guestbook = "Гостевая книга"; - - // Слова, использованные в кнопках - $lang->cmd_guestbook_list = 'Список гостевых книг'; - $lang->cmd_module_config = 'Общая конфигурация гостевых книг'; - $lang->cmd_view_info = 'Информация гостевой книги'; - - $lang->about_board = "Этот модуль служит для создания и управления гостевыми книгами.\nВы можете выбрать имя модуля из списка после создания для дополнительного конифигурирования.\nПожалуйста, будте осторожны с именем модуля форума, поскольку оно будет URL. (например : http://domain/zb/?mid=имя_модуля)"; -?> diff --git a/modules/guestbook/lang/zh-CN.lang.php b/modules/guestbook/lang/zh-CN.lang.php deleted file mode 100644 index d88855e7e..000000000 --- a/modules/guestbook/lang/zh-CN.lang.php +++ /dev/null @@ -1,16 +0,0 @@ -guestbook = "留言本"; - - // 按钮语言 - $lang->cmd_guestbook_list = '留言本目录'; - $lang->cmd_module_config = '留言本共同设置'; - $lang->cmd_view_info = '留言本信息'; - - $lang->about_guestbook = "可生成并管理留言本的模块。\n生成留言本后在留言本目录中点击模块名既可设置更详细的相关项目。\n因留言本的模块名将变成其url中的一部分,所以请慎重填写模块名(ex:http://域名/zb/?mid=模块名)。"; -?> diff --git a/modules/guestbook/queries/getGuestbookList.xml b/modules/guestbook/queries/getGuestbookList.xml deleted file mode 100644 index 090dec365..000000000 --- a/modules/guestbook/queries/getGuestbookList.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/modules/guestbook/skins/default/comment.html b/modules/guestbook/skins/default/comment.html deleted file mode 100644 index 441f5d69d..000000000 --- a/modules/guestbook/skins/default/comment.html +++ /dev/null @@ -1,66 +0,0 @@ - -
    - - {@ $_comment_list = $document->getComments() } - - -
    -
    - - - -
    - - {$lang->cmd_delete} - {$lang->cmd_modify} - - {$lang->cmd_reply} -
    - -
    - - {$comment->getRegdate('Y.m.d')} {$comment->getRegdate('H:i:s')} - - - ({$comment->get('ipaddress')}) - -
    - -
    - - - {$comment->getNickName()} - - {$comment->getNickName()} - - -
    {$comment->getNickName()}
    - -
    - -
    - -
    - - - {$lang->msg_is_secret} -
    - - - - -
    - -
    - - - {$comment->getContent(false)} - -
    - -
    -
    - - -
    - diff --git a/modules/guestbook/skins/default/comment_form.html b/modules/guestbook/skins/default/comment_form.html deleted file mode 100644 index 46a55f4da..000000000 --- a/modules/guestbook/skins/default/comment_form.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - -
    -
    -
    - - {$source_comment->getRegdate('Y.m.d')} {$source_comment->getRegdate('H:i:s')} - - - ({$source_comment->get('ipaddress')}) - -
    - -
    - - - {$source_comment->getNickName()} - - {$source_comment->getNickName()} - - -
    {$source_comment->getNickName()}
    - -
    - -
    - -
    - - - {$lang->msg_is_secret} -
    - - - - -
    - -
    - - - {$source_comment->getContent(false)} - -
    -
    -
    - - - -
    -
    - - - - - - -
    - - - - - - - - - - - -
    - -
    -
    - is_secret=='Y')-->checked="checked"/> - -
    - -
    - notify_message == 'Y')-->checked="checked" id="notify_message" /> - -
    - -
    - -
    - -
    - - - - -
    - -
    - - - - diff --git a/modules/guestbook/skins/default/css/guestbook.css b/modules/guestbook/skins/default/css/guestbook.css deleted file mode 100644 index 8ae411843..000000000 --- a/modules/guestbook/skins/default/css/guestbook.css +++ /dev/null @@ -1,105 +0,0 @@ -@charset "utf-8"; - -/* guestbook Title */ -.guestbookHeader { border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/bgH3.gif) repeat-x left bottom; overflow:hidden; _width:100%;} -.guestbookHeader h3 { border-bottom:3px solid #fe3614; } -.guestbookHeader h3 { float:left; font-size:1.2em; padding:1em 2em .7em 1.2em; background:#ffffff url(../images/lineH3.gif) no-repeat right bottom;} - -/* guestbook Description */ -.guestbookDescription { color:#AEAEAE; border:1px solid #DDDDDD; overflow:hidden; padding:1em; margin-top:1em;} - -.guestbookInformation { width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666;} - -.articleNum { float:left; padding:0 0 0 15px; } - -/* account Navigation */ -.accountNavigation { float:right; } -.accountNavigation li { float:left; margin-left:7px; list-style:none; padding-top:3px;} -.accountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;} -.accountNavigation li.setup a { background:url(../images/iconSetup.gif) no-repeat left top; padding-left:14px; } -.accountNavigation li.admin a { background:url(../images/iconAdmin.gif) no-repeat left top; padding-left:12px; } -.accountNavigation li.listType { margin-left:5px; } -.accountNavigation li.loginAndLogout { background:url(../images/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; _padding-top:5px;} -*:first-child+html li.loginAndLogout { padding-top:5px; } - - -/* pageNavigation */ -.pageNavigation { display:block; margin-top:1em; text-align:center; font:bold 11px Tahoma; margin-top:1.5em;} -.pageNavigation a { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; } -.pageNavigation .current { position:relative; margin-left:-4px; font:bold 11px Tahoma; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; text-decoration:none; line-height:1em; } -.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; } -.pageNavigation a:visited { color:#999999; } -.pageNavigation a.goToFirst, .pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;} -.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;} - -.boardWrite { border:1px solid #DDDDDD; background-color:#EFEFEF; overflow:hidden; position:relative; margin-bottom:20px; padding:.5em 0; } -.boardWrite .inputTypeText { width:100px; } -.boardWrite .userNameAndPw { margin-bottom:-1px; padding:.5em 0; margin-left:20px;} -.boardWrite .boardEditor fieldset { width:auto; position:relative;} -.boardWrite .option { margin-left:20px; padding:.5em 0; overflow:hidden; width:90%;} -.boardWrite .option dd { float:left; margin-right:1em; padding-top:.2em; _padding-top:.1em;} -.boardWrite .option dd * { vertical-align:middle;} -.boardWrite .option dd select { width:7em; font-size:.95em;height:20px;} -.boardWrite .inputTypeText { background:#fbfbfb;} - -.commentWrite { border:1px solid #EFEFEF; overflow:hidden; position:relative; margin-top:10px; margin-bottom:20px; padding:.5em 0; } -.commentWrite .inputTypeText { width:100px; } -.commentWrite .userNameAndPw { margin-bottom:-1px; padding:.5em 0; margin-left:20px;} -.commentWrite .commentEditor fieldset { width:auto; position:relative; border:none;} -.commentWrite .option { margin-left:20px; padding:.5em 0; overflow:hidden; width:90%;} -.commentWrite .option dd { float:left; margin-right:1em; padding-top:.2em; _padding-top:.1em;} -.commentWrite .option dd * { vertical-align:middle;} -.commentWrite .option dd select { width:7em; font-size:.95em;height:20px;} -.commentWrite .inputTypeText { background:#fbfbfb;} -.commentWrite .editorBox { text-align:center; margin-bottom:10px;} -.commentWrite .textarea { width:98%; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:8em; padding:.2em 0 0 .3em; background:#ffffff; font-size:1em; } - -.documentBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db; margin-top:.5em;} -.documentBox .documentItem { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; list-style:none;} -.documentBox p { display:inline; margin-bottom:1em;} -.documentBox .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0; cursor:pointer;} -.documentBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; } -.documentBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;} -.documentBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;} - -.documentBox .documentOption { float:right; white-space:nowrap; margin-left:.2em;} -.documentBox .documentOption img { vertical-align:middle;} - -.documentBox .documentContent { clear:left; } -.documentBox .documentContent p { display:block; } -.documentBox .documentContent ul li { padding:0; border:none; line-height:1.25em; list-style:disc;} -.documentBox .documentContent ol li { padding:0; border:none; line-height:1.25em; list-style:decimal;} -.documentBox .document { background-color:#FAFAFA;} - -.smallBox { border:1px solid #e0e1db; margin-left:auto; margin-right:auto; } -.smallBox.w268 { width:268px;} -.smallBox .header { position:relative; _width:100%; background:#ffffff url(../images/normal/bgH3.gif) no-repeat left bottom; overflow:hidden;} -.smallBox .header h3 { clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; } -.smallBox .complex { padding:1.5em 2em 2em 2em;} -.smallBox .inputPassword { position:relative; border:none; padding:2em 2em 1.5em 2em;} -.smallBox .inputPassword .inputTypeText { float:left; margin-right:.5em; width:8em;} -.smallBox .inputPassword legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;} - - -.replyBox { padding:.6em .6em; color:#666666; border:1px solid #e0e1db; margin-top:.5em;} -.replyBox .replyItem { padding:.6em .8em .6em .6em; line-height:1.25em; clear:both; list-style:none; border-bottom:1px dotted #e0e1db;} -.replyBox p { display:inline; margin-bottom:1em;} -.replyBox .author { float:left; padding:0 .3em 0 0; font-size:.9em; color:#3074a5; margin:0 .3em .5em 0;} -.replyBox .author a { color:#3074a5; margin-right:.3em; text-decoration:none; } -.replyBox .voted { float:left; font-size:.9em; color:#AAAAAA; margin:0 .3em .5em 1em;} -.replyBox .date { float:right; font:.8em Tahoma; color:#cccccc; margin:.3em 0 .5em 0;} - -.replyBox .replyOption { float:right; white-space:nowrap; margin-left:.2em;} -.replyBox .replyOption img { vertical-align:middle;} - -.replyBox .replyContent { clear:left; } -.replyBox .replyContent p { display:block; } -.replyBox .replyContent ul li { padding:0; border:none; line-height:1.25em; list-style:disc;} -.replyBox .replyContent ol li { padding:0; border:none; line-height:1.25em; list-style:decimal;} -.replyBox .reply { background-color:#FAFAFA;} -.replyBox .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;} - -.replyBox .fileAttached { _width:99%; border:1px solid #eaeae7; overflow:hidden; background:#fbfbfb; margin-top:.3em; list-style:none;} -.replyBox .fileAttached ul { float:left; padding:.3em 1em .2em 0; margin-left:.5em; _margin-left:.25em;} -.replyBox .fileAttached li a { font-size:.9em; white-space:nowrap; position:relative; color:#444444; } -.replyBox .fileAttached li a:visited { color:#777777;} diff --git a/modules/guestbook/skins/default/delete_comment_form.html b/modules/guestbook/skins/default/delete_comment_form.html deleted file mode 100644 index a06174f59..000000000 --- a/modules/guestbook/skins/default/delete_comment_form.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -
    - -
    -

    {$lang->confirm_delete}

    -
    - -
    - - - - - - - - -
    - - - diff --git a/modules/guestbook/skins/default/delete_form.html b/modules/guestbook/skins/default/delete_form.html deleted file mode 100644 index 1ca638c93..000000000 --- a/modules/guestbook/skins/default/delete_form.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -
    - -
    -

    {$lang->confirm_delete}

    -
    - -
    - - - - - - - -
    - - diff --git a/modules/guestbook/skins/default/filter/delete_comment.xml b/modules/guestbook/skins/default/filter/delete_comment.xml deleted file mode 100644 index 3780d6a18..000000000 --- a/modules/guestbook/skins/default/filter/delete_comment.xml +++ /dev/null @@ -1,18 +0,0 @@ - -
    - - - - - - - - - - - - - - - -
    diff --git a/modules/guestbook/skins/default/filter/delete_document.xml b/modules/guestbook/skins/default/filter/delete_document.xml deleted file mode 100644 index 8750f03ad..000000000 --- a/modules/guestbook/skins/default/filter/delete_document.xml +++ /dev/null @@ -1,16 +0,0 @@ - -
    - - - - - - - - - - - - - -
    diff --git a/modules/guestbook/skins/default/filter/input_password.xml b/modules/guestbook/skins/default/filter/input_password.xml deleted file mode 100644 index 2e26fbde8..000000000 --- a/modules/guestbook/skins/default/filter/input_password.xml +++ /dev/null @@ -1,15 +0,0 @@ - -
    - - - - - - - - - - - - -
    diff --git a/modules/guestbook/skins/default/filter/insert.xml b/modules/guestbook/skins/default/filter/insert.xml deleted file mode 100644 index debca08a7..000000000 --- a/modules/guestbook/skins/default/filter/insert.xml +++ /dev/null @@ -1,17 +0,0 @@ - -
    - - - - - - - - - - - - - - -
    diff --git a/modules/guestbook/skins/default/filter/insert_comment.xml b/modules/guestbook/skins/default/filter/insert_comment.xml deleted file mode 100644 index 674c9501d..000000000 --- a/modules/guestbook/skins/default/filter/insert_comment.xml +++ /dev/null @@ -1,28 +0,0 @@ - -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/modules/guestbook/skins/default/footer.html b/modules/guestbook/skins/default/footer.html deleted file mode 100644 index 9d5404ca8..000000000 --- a/modules/guestbook/skins/default/footer.html +++ /dev/null @@ -1 +0,0 @@ -{$module_info->footer_text} diff --git a/modules/guestbook/skins/default/header.html b/modules/guestbook/skins/default/header.html deleted file mode 100644 index 9543c2827..000000000 --- a/modules/guestbook/skins/default/header.html +++ /dev/null @@ -1,58 +0,0 @@ - - -{$module_info->header_text} - - - -
    -

    {$module_info->title}

    -
    - - - - -
    {$module_info->memo}
    - - - -
    - - - -
    {$lang->document_count} {number_format($total_count)}
    - - - - -
    - - diff --git a/modules/guestbook/skins/default/images/bgH3.gif b/modules/guestbook/skins/default/images/bgH3.gif deleted file mode 100644 index 0d07bb456e10b535227875f571d18e92c50d4530..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2778 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 F{{iBWh`Rs) diff --git a/modules/guestbook/skins/default/images/bottomGotoFirst.gif b/modules/guestbook/skins/default/images/bottomGotoFirst.gif deleted file mode 100644 index e0297fecbe6666e8076cf1c4bd48571dc826c5f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmd@Ll<#=3_e}661_o;Y DN%IX& diff --git a/modules/guestbook/skins/default/images/bottomGotoLast.gif b/modules/guestbook/skins/default/images/bottomGotoLast.gif deleted file mode 100644 index 0a7141d0d51a0dcece12d04038c8f846f0ae56c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmbu$G48y@J<;=(2!k~M DKokru diff --git a/modules/guestbook/skins/default/images/buttonDeleteX.gif b/modules/guestbook/skins/default/images/buttonDeleteX.gif deleted file mode 100644 index c066e49be9d50d49daaf3a1c500142e171a25687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61 zcmZ?wbhEHbeZ{n#KddYuKfoC1{hHM$->CMz`~#d5&)@XVAk^3bZ1e* t3Cn|vBJN36&A5HR^Rd9R)DyL{8m8v9tyGc@-k|C7DM6EuU6GN&8UQZyBn1Ef diff --git a/modules/guestbook/skins/default/images/buttonModifyE.gif b/modules/guestbook/skins/default/images/buttonModifyE.gif deleted file mode 100644 index 1cde1b60f24e1282ab47cf15b2e3c6761ebddb5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmZ?wbhEHb6k!l#xT?zVeQKI$BrL7bMC~2i)Z#9*!l0@-$O_C9yz-I`i;w%E}#4Q_4Ci4-#>r;@afb0U%!6* z{{8dw=Z}B?{`v6X?Z=Pr{`~p9XYaNfH?RKw{cG0jssF)%fvQ09CkrD3gDQg#$W)M@ z7}&NP2+Hu#k?LIP*?1(!YW|W#ERIbD>u%(TIXS6#%->Mq^KXKX$fUHh*Lv=KxH!wD zaDvf~KORTk_kU2~<5Cf8ZLO}Y$!}HR;#Fao$e_&7sie#}g+YavTZMT+N9T;03sksS zR76D!3mIpw7FA*4QDI_Imfp2{hVu69Dm+3e;^I4Z@5(=VT17}uMM7e2!Nsc*DuV1P pa(C|DyDz80&c90b+4C1KHu1A52E6xGWK&i6`tAFVZ>o+A)&PvKuVDZH diff --git a/modules/guestbook/skins/default/images/buttonReply.gif b/modules/guestbook/skins/default/images/buttonReply.gif deleted file mode 100644 index 6005348654403e890652771f60ae204eca01d6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmZ?wbhEHb6k!lzxT?hP<;$l_m(QI#bL_&!Gbc_SxqjpFfkV5Wzj(U;z|MdF{_fqk z{o3_QhmPz$bMC~k;|H%?y>R5{{__`3ef|3R+xIU&eti4;_s`Ft-+%r3@%i(I4atw6o0ZXGB7AH=zxp|`H6vT?STvF9y(H; z3lAwC$+4Qh&^b}iD`ee`95cZv8>hJ&Dtz9x$Tdz#+soE?<3p*20Y~h+a`U=+eqJR- zv8JZH=C&q9L0(0X-rl@Eg}z=zUM5B1nKScd&6%ah#G)v)WJ%ug zgCd`RqQuT!yYqG{3h*dOA3kza;i$AC51XRQx$_q;$|$mNES9`+^VTgPMGh|cfJeUa YT#9lpUcP$$Qc>yshmW5=IWkxS02i&M761SM diff --git a/modules/guestbook/skins/default/images/iconAdmin.gif b/modules/guestbook/skins/default/images/iconAdmin.gif deleted file mode 100644 index 4a581a524651fc6ffe53f7e92c30cde6abac90cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmZ?wbhEHbloegXr7H2^m89IpTX diff --git a/modules/guestbook/skins/default/images/iconArrowD8.gif b/modules/guestbook/skins/default/images/iconArrowD8.gif deleted file mode 100644 index fe3143edc992334d34a18240b76e4d246b1767e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWM*JxXkcWxapT7S|Nj+#vM@3*Ff!;c00Bsbfr-_HXHdp^c8s9puLCu&^r;2=ywJc@+Djh2Yf>V@eF+*DFy1g6T-EXMjc8hv(~ zHR#sT(m)isq5l-FIpE6-v-+VxfW`yp@WCB1hLf@L8urB99A{SU%SyeOF@RM|@Hh!0 zDr$|v)*|bRpfw@8cjGZ>W=4N}9AE|?^vckyKu_Pbc4t-KQKaYE! z7&(Jay{v#w>!Z+ll-5MBG7;|k?iTseN(Cm%QR0E8f#{O6VliGG!E81*W^l_B<7zz9 zQj40^`NATkrsFJEi1|j=7=qDYYSm#NAEODVbiwFVOqr=Q5ditmKPn*m?Z_d-MpS#g zy(b87g2>}Nyri{+lXa<>!%bUvjlEd1IZ+~S5FPWDz941Y&h9#y*UFP03+4_*!yiFk z!aQG~;qmy<Q-2M9)259yB(2+Lmxv^KHBPFI&v+P+y(RFm zJM*1{EzyJ8NXKOfsjnzZEzPZKO1^D6q2|QRa-DKVls4NwmzL-RO`L{1n_$*uM%EnO id{q~asusL&vpLK+oV@VOE04G2+P!R#Pub5SF@FJTrB=-V diff --git a/modules/guestbook/skins/default/images/iconSetup.gif b/modules/guestbook/skins/default/images/iconSetup.gif deleted file mode 100644 index 33b41da114321534bd1766c254b371ad88f5290a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmZ?wbhEHb=;&9kUTxU0;pWYoMMXuuy}dCpG5`PnXTSy&f3h$# zFmN#FfFwa?FtB(Ccvha7^ME5{q6I@}$kf7~OX(sxiFq6w*$xZrU@4!&?8vitZeoOl oM}u>7e%Nl!;#JeUm6dq?**)DHRtVTFoY9~B@u^-?2@8WY02oR!hyVZp diff --git a/modules/guestbook/skins/default/images/lineH3.gif b/modules/guestbook/skins/default/images/lineH3.gif deleted file mode 100644 index fe42fe3781237403eca94635261e9596fd922c1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45 ucmZ?wbhEHbWMmLwXkcJ?`0y?R1B2pE79h#MpaUX6G7L;CE&VfD8LR=-2na3! diff --git a/modules/guestbook/skins/default/images/line_1x10_e0e0e0.gif b/modules/guestbook/skins/default/images/line_1x10_e0e0e0.gif deleted file mode 100644 index 6a848dd581e9ecdf86112d9e89d590c2a18c3296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 tcmZ?wbhEHbWMtrCXkcJ?@ZbRh1B2pE79h#MpaUX6G7L=2E&Z$v)&R+u2Y~

    - - -
    - - - - - -

    - - - - - - - - - - -
    {$lang->msg_input_password}
    {$lang->password}
    - - -
    - - - diff --git a/modules/guestbook/skins/default/js/guestbook.js b/modules/guestbook/skins/default/js/guestbook.js deleted file mode 100644 index 2af522f3e..000000000 --- a/modules/guestbook/skins/default/js/guestbook.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @file modules/guestbook/js/guestbook.js - * @author zero (zero@nzeo.com) - * @brief guestbook 모듈의 javascript - **/ - -/* 글쓰기 작성후 */ -function completeDocumentInserted(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - - alert(message); - - var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('page','').setQuery('comment_srl',''); - location.href = url; -} - -/* 글 삭제 */ -function completeDeleteDocument(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var page = ret_obj['page']; - - var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('comment_srl',''); - alert(message); - - location.href = url; -} - -// 현재 페이지 reload -function completeReload(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - - location.href = location.href; -} - -/* 댓글 글쓰기 작성후 */ -function completeInsertComment(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var document_srl = ret_obj['document_srl']; - var comment_srl = ret_obj['comment_srl']; - - var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('comment_srl',''); - alert(message); - - location.href = url; -} - -/* 댓글 삭제 */ -function completeDeleteComment(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var mid = ret_obj['mid']; - var document_srl = ret_obj['document_srl']; - var page = ret_obj['page']; - - var url = current_url.setQuery('mid',mid).setQuery('act','').setQuery('comment_srl',''); - alert(message); - - location.href = url; -} - diff --git a/modules/guestbook/skins/default/list.html b/modules/guestbook/skins/default/list.html deleted file mode 100644 index 682427416..000000000 --- a/modules/guestbook/skins/default/list.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - -
    - -
    - - - - -
    -
    -
    - - {$lang->cmd_delete} - {$lang->cmd_modify} - -
    - -
    - - {$document->getRegdate('Y.m.d')} {$document->getRegdate('H:i:s')} - - - ({$document->get('ipaddress')}) - -
    - -
    - - - {$document->getNickName()} - - {$document->getNickName()} - - -
    {$document->getNickName()}
    - -
    - -
    - -
    - - - {$lang->msg_is_secret} -
    - - - -
    - -
    -
    - - {$document->getContent(false, false)} - -
    -
    - - - - - -
    - -
    -
    - - - - - -
    - - - - - - - - - - - -
    - -
    -
    - - -
    - -
    - - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    - -
    - - - - - - diff --git a/modules/guestbook/skins/default/message.html b/modules/guestbook/skins/default/message.html deleted file mode 100644 index 00bf01814..000000000 --- a/modules/guestbook/skins/default/message.html +++ /dev/null @@ -1,11 +0,0 @@ - - -
    - {$message} -
    - - - {$lang->cmd_login} - - - diff --git a/modules/guestbook/skins/default/skin.xml b/modules/guestbook/skins/default/skin.xml deleted file mode 100644 index d79ba9b40..000000000 --- a/modules/guestbook/skins/default/skin.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - 방명록 기본 스킨 - 留言本默认皮肤 - ゲストブックのデフォルトスキン - - 제로 - Zero - Zero - board모듈의 default스킨 - 留言本模块的默认皮肤。 - ボード(board)モジュールのデフォルトスキンです。 - - - - 기본 - 默认 - デフォルト - - - - - 제목 - 标题 - タイトル - 방명록의 제목을 적어주세요. - 请输入留言本标题。 - ゲストブックのタイトルを入力してください。 - - - 방명록 설명 - 留言本说明 - ゲストブックの説明 - 내용의 기본값 - 内容默认值 - 内容のデフォルト値 - - - diff --git a/modules/guestbook/skins/default/write_form.html b/modules/guestbook/skins/default/write_form.html deleted file mode 100644 index 466c93728..000000000 --- a/modules/guestbook/skins/default/write_form.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - -
    -
    - - - - - - -
    - - - - - - - - - - - -
    - - -
    - -
    - isLocked())-->checked="checked" id="lock_comment" /> - -
    - -
    - isSecret())-->checked="checked" id="is_secret" /> - -
    -
    - allowComment())-->checked="checked" id="allow_comment" /> - -
    - -
    - useNotify())-->checked="checked" id="notify_message" /> - -
    - -
    - -
    {$editor}
    - -
    - -
    - -
    - -
    -
    - - - - diff --git a/modules/guestbook/tpl/filter/delete_guestbook.xml b/modules/guestbook/tpl/filter/delete_guestbook.xml deleted file mode 100644 index 21817e5d3..000000000 --- a/modules/guestbook/tpl/filter/delete_guestbook.xml +++ /dev/null @@ -1,10 +0,0 @@ - -
    - - - - - - - -
    diff --git a/modules/guestbook/tpl/filter/insert_grant.xml b/modules/guestbook/tpl/filter/insert_grant.xml deleted file mode 100644 index c8e4c8600..000000000 --- a/modules/guestbook/tpl/filter/insert_grant.xml +++ /dev/null @@ -1,11 +0,0 @@ - -
    - - - - - - - - -
    diff --git a/modules/guestbook/tpl/filter/insert_guestbook.xml b/modules/guestbook/tpl/filter/insert_guestbook.xml deleted file mode 100644 index 4b6450fa3..000000000 --- a/modules/guestbook/tpl/filter/insert_guestbook.xml +++ /dev/null @@ -1,33 +0,0 @@ - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/modules/guestbook/tpl/grant_list.html b/modules/guestbook/tpl/grant_list.html deleted file mode 100644 index dde86a6f5..000000000 --- a/modules/guestbook/tpl/grant_list.html +++ /dev/null @@ -1,38 +0,0 @@ - - - -
    {nl2br($lang->about_grant)}
    - -
    - - - - ----- - - - - - - - - - - - - - -
    {$lang->target}
    {$val->title} - - grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - - - {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    - -
    - -
    diff --git a/modules/guestbook/tpl/guestbook_delete.html b/modules/guestbook/tpl/guestbook_delete.html deleted file mode 100644 index d83d9ea6e..000000000 --- a/modules/guestbook/tpl/guestbook_delete.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->confirm_delete}
    {$lang->module_name}{$module_info->mid}
    {$lang->module}{$module_info->module}
    {$lang->document_count}{$module_info->document_count}
    - {$lang->cmd_back} - -
    - -
    diff --git a/modules/guestbook/tpl/guestbook_info.html b/modules/guestbook/tpl/guestbook_info.html deleted file mode 100644 index 5c4ef95ab..000000000 --- a/modules/guestbook/tpl/guestbook_info.html +++ /dev/null @@ -1,70 +0,0 @@ - - - --- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->module_category} - - {$lang->not_exists} - - {$module_category[$module_info->module_category_srl]->title} - -
    {$lang->layout} - - {$module_info->layout_title} ({$module_info->layout}) - - {$lang->not_exists} - -
    {$lang->skin}{$module_info->skin_title} ({$module_info->skin})
    {$lang->browser_title}{htmlspecialchars($module_info->browser_title)}
    {$lang->use_category}{$lang->use}{$lang->notuse}
    {$lang->list_count}{$module_info->list_count?$module_info->list_count:20}
    {$lang->page_count}{$module_info->page_count?$module_info->page_count:10}
    {$lang->description}{nl2br(htmlspecialchars($module_info->description))} 
    {$lang->header_text}{htmlspecialchars($module_info->header_text)} 
    {$lang->footer_text}{htmlspecialchars($module_info->footer_text)} 
    {$lang->admin_id}{implode(",",$module_info->admin_id)} 
    - {$lang->cmd_modify} - - {$lang->cmd_guestbook_list} - -
    diff --git a/modules/guestbook/tpl/guestbook_insert.html b/modules/guestbook/tpl/guestbook_insert.html deleted file mode 100644 index 9a8538403..000000000 --- a/modules/guestbook/tpl/guestbook_insert.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->mid} - -

    {$lang->about_mid}

    -
    {$lang->is_default} - is_default=='Y')-->checked="checked" id="fld_for_default" class="checkbox" /> - -
    {$lang->module_category} - -

    {$lang->about_module_category}

    -
    {$lang->browser_title} - -

    {$lang->about_browser_title}

    -
    {$lang->layout} - -

    {$lang->about_layout}

    -
    {$lang->skin} - -

    {$lang->about_skin}

    -
    {$lang->list_count} - -

    {$lang->about_list_count}

    -
    {$lang->page_count} - -

    {$lang->about_page_count}

    -
    {$lang->description} - -

    {$lang->about_description}

    -
    {$lang->header_text} - -

    {$lang->about_header_text}

    -
    {$lang->footer_text} - -

    {$lang->about_footer_text}

    -
    {$lang->admin_id} - -

    {$lang->about_admin_id}

    -
    - -
    - -
    diff --git a/modules/guestbook/tpl/header.html b/modules/guestbook/tpl/header.html deleted file mode 100644 index 817b3327c..000000000 --- a/modules/guestbook/tpl/header.html +++ /dev/null @@ -1,25 +0,0 @@ - - -

    {$lang->guestbook} {$lang->cmd_management}

    - -
    {nl2br($lang->about_guestbook)}
    - - -
    - -

    {$module_info->mid} ({$lang->is_default}) | View

    - - - -
    - - diff --git a/modules/guestbook/tpl/index.html b/modules/guestbook/tpl/index.html deleted file mode 100644 index 494a6d253..000000000 --- a/modules/guestbook/tpl/index.html +++ /dev/null @@ -1,129 +0,0 @@ - - - -
    - Total {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)} -
    - - - - -------- - -------- - -------- - -------- - -------- - -------- - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->no} -
    - - - - -
    -
    {$lang->mid} / {$lang->browser_title}{$lang->regdate}{$lang->cmd_view}{$lang->cmd_copy}{$lang->cmd_delete}
    {$no} - - {$lang->not_exists} - - {$module_category[$val->module_category_srl]->title} - - - {$val->mid} - - {htmlspecialchars($val->browser_title)} - {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_copy}{$lang->cmd_delete}
    - - - - - - diff --git a/modules/guestbook/tpl/js/guestbook_admin.js b/modules/guestbook/tpl/js/guestbook_admin.js deleted file mode 100644 index f641d1724..000000000 --- a/modules/guestbook/tpl/js/guestbook_admin.js +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @file modules/guestbook/js/guestbook_admin.js - * @author zero (zero@nzeo.com) - * @brief guestbook 모듈의 관리자용 javascript - **/ - -/* 모듈 생성 후 */ -function completeInsertGuestbook(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - - var page = ret_obj['page']; - var module_srl = ret_obj['module_srl']; - - alert(message); - - var url = current_url.setQuery('act','dispGuestbookAdminGuestbookInfo'); - if(module_srl) url = url.setQuery('module_srl',module_srl); - if(page) url.setQuery('page',page); - location.href = url; -} - -/* 모듈 삭제 후 */ -function completeDeleteGuestbook(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var page = ret_obj['page']; - alert(message); - - var url = current_url.setQuery('act','dispGuestbookAdminContent').setQuery('module_srl',''); - if(page) url = url.setQuery('page',page); - location.href = url; -} - -/* 권한 관련 */ -function doSelectAll(obj, key) { - var fo_obj = obj.parentNode; - while(fo_obj.nodeName != 'FORM') { - fo_obj = fo_obj.parentNode; - } - - for(var i=0;i - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->skin_default_info}
    {$lang->skin}{$skin_info->title}
    {$lang->skin_maker}{$skin_info->maker->name} ({$skin_info->maker->email_address})
    {$lang->skin_maker_homepage}{$skin_info->maker->homepage}
    {$lang->date}{$skin_info->maker->date}
    {$lang->description}{nl2br($skin_info->maker->description)}
    - - - - - - - - - - - - - - - - - - - -
    {$lang->extra_vars}
    {$lang->colorset} - -
    - - {$val->title} - - - colorset==$val->name)-->checked="checked"/> - -
    - -
    {$val->title} - - - - - - - - - - - - - value))-->checked="checked" class="checkbox" /> - - - - - - - - value)-->checked="checked"/> - - - - - - - -
    -
    - - -
    - - - - - - -

    {nl2br($val->description)}

    - -
    - -
    -
    - - diff --git a/modules/guestbook/tpl/top_refresh.html b/modules/guestbook/tpl/top_refresh.html deleted file mode 100644 index 2f4983d1d..000000000 --- a/modules/guestbook/tpl/top_refresh.html +++ /dev/null @@ -1,3 +0,0 @@ - From 830f084638626c6f5070487b348b926bc37b958c Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 22 Jan 2008 04:01:39 +0000 Subject: [PATCH 133/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3574 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/member_messages.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/skins/default/member_messages.html b/modules/member/skins/default/member_messages.html index 98f386292..b3576371e 100644 --- a/modules/member/skins/default/member_messages.html +++ b/modules/member/skins/default/member_messages.html @@ -22,7 +22,7 @@
    -
    {$message->content}
    +
    {$message->content}
    From 4b9f56167bab91a4e6f3e42ac3bb10f943b49b13 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 23 Jan 2008 03:32:14 +0000 Subject: [PATCH 134/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EB=B3=80=EA=B2=BD.?= =?UTF-8?q?=20=EA=B2=8C=EC=8B=9C=ED=8C=90/=EC=84=A4=EB=AC=B8=EC=A1=B0?= =?UTF-8?q?=EC=82=AC=20=EC=8A=A4=ED=82=A8=EB=93=B1=EC=9D=98=20=EC=84=B8?= =?UTF-8?q?=EC=84=B8=ED=95=98=EA=B2=8C=20=EC=96=B4=EA=B8=8B=EB=82=9C=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3575 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/comment.html | 1 + modules/board/skins/xe_board/css/common.css | 10 +++++----- modules/board/skins/xe_board/css/cyan.css | 4 ++-- modules/board/skins/xe_board/css/green.css | 4 ++-- modules/board/skins/xe_board/css/purple.css | 4 ++-- modules/board/skins/xe_board/css/red.css | 4 ++-- modules/board/skins/xe_board/css/white.css | 4 ++-- modules/board/skins/xe_board/header.html | 1 - modules/document/tpl/icons/file.gif | Bin 146 -> 101 bytes modules/document/tpl/icons/image.gif | Bin 211 -> 298 bytes modules/document/tpl/icons/movie.gif | Bin 343 -> 195 bytes modules/document/tpl/icons/new.gif | Bin 78 -> 465 bytes modules/document/tpl/icons/secret.gif | Bin 338 -> 313 bytes modules/document/tpl/icons/update.gif | Bin 79 -> 465 bytes modules/poll/skins/default/css/poll.css | 3 ++- .../login_info/skins/xe_official/css/black.css | 4 ++-- .../skins/xe_official/css/default.css | 2 +- .../login_info/skins/xe_official/css/white.css | 2 +- 18 files changed, 22 insertions(+), 21 deletions(-) diff --git a/modules/board/skins/xe_board/comment.html b/modules/board/skins/xe_board/comment.html index ef134cb9b..b8e61ad2c 100644 --- a/modules/board/skins/xe_board/comment.html +++ b/modules/board/skins/xe_board/comment.html @@ -75,6 +75,7 @@
  • {$file->source_filename} ({FileHandler::filesize($file->file_size)})({number_format($file->download_count)})
  • +
    diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 0b4157f3b..8065678bb 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -86,10 +86,10 @@ Jeong, Chan Myeong 070601~070630 .boardRead .tag li { display:inline; list-style:none; } .boardRead .tag li a { color:#444444;} -.boardRead .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px;} +.boardRead .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;} .boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px;} -.boardRead .fileAttached li { display:inline; white-space:nowrap margin:3px 5px 0 3px; list-style:none; } -.boardRead .fileAttached li a { text-decoration:none; font-size:.9em; padding:0 0 2px 17px; white-space:nowrap; color:#444444; } +.boardRead .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; } +.boardRead .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; } .boardRead .fileAttached li a:visited { color:#777777;} .boardRead .contentButton { text-align:right;margin:10px 0 5px 0; border-top:1px solid #DDDDDD; padding-top:10px;} @@ -123,9 +123,9 @@ Jeong, Chan Myeong 070601~070630 .replyBox .reply { background-color:#F4F4F4; border-bottom:1px dotted #DDDDDD;} .replyBox .replyIndent { background:url(../images/common/iconReplyArrow.gif) no-repeat .0em .3em; padding-left:1.3em;} -.replyBox .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px;} +.replyBox .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;} .replyBox .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; line-height:22px;} -.replyBox .fileAttached li { display:inline; white-space:nowrap margin:3px 5px 0 3px; list-style:none; } +.replyBox .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; } .replyBox .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; } .replyBox .fileAttached li a:visited { color:#777777;} diff --git a/modules/board/skins/xe_board/css/cyan.css b/modules/board/skins/xe_board/css/cyan.css index 02b399c26..58f24497e 100644 --- a/modules/board/skins/xe_board/css/cyan.css +++ b/modules/board/skins/xe_board/css/cyan.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#2895c0; } /* boardRead */ -boardRead .fileAttached li a { background:url(../images/cyan/iconFile.gif) no-repeat left top;} +.boardRead .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left 2px;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#2895c0;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/cyan/iconFile.gif) no-repeat left;} +.replyBox .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left 2px;} diff --git a/modules/board/skins/xe_board/css/green.css b/modules/board/skins/xe_board/css/green.css index 5852383bf..2d5f43029 100644 --- a/modules/board/skins/xe_board/css/green.css +++ b/modules/board/skins/xe_board/css/green.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#38b549; } /* boardRead */ -.boardRead .fileAttached li a { background:url(../images/green/iconFile.gif) no-repeat left top;} +.boardRead .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left 2px;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#38b549;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/green/iconFile.gif) no-repeat left;} +.replyBox .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left 2px;} diff --git a/modules/board/skins/xe_board/css/purple.css b/modules/board/skins/xe_board/css/purple.css index 932d1e880..a920b2847 100644 --- a/modules/board/skins/xe_board/css/purple.css +++ b/modules/board/skins/xe_board/css/purple.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#b1ae00; } /* boardRead */ -.boardRead .fileAttached li a { background:url(../images/purple/iconFile.gif) no-repeat left top;} +.boardRead .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left 2px;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#b1ae00;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/purple/iconFile.gif) no-repeat left;} +.replyBox .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left 2px;} diff --git a/modules/board/skins/xe_board/css/red.css b/modules/board/skins/xe_board/css/red.css index 79cfcbd4a..38359226c 100644 --- a/modules/board/skins/xe_board/css/red.css +++ b/modules/board/skins/xe_board/css/red.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#ff6600; } /* boardRead */ -.boardRead .fileAttached li a { background:url(../images/red/iconFile.gif) no-repeat left top;} +.boardRead .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left 2px;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#ff6600;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/red/iconFile.gif) no-repeat left;} +.replyBox .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left 2px;} diff --git a/modules/board/skins/xe_board/css/white.css b/modules/board/skins/xe_board/css/white.css index 6294be325..132372e2c 100644 --- a/modules/board/skins/xe_board/css/white.css +++ b/modules/board/skins/xe_board/css/white.css @@ -12,7 +12,7 @@ .accountNavigation li.myInfo a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; } /* boardRead */ -.boardRead .fileAttached li a { background:url(../images/white/iconFile.gif) no-repeat left top;} +.boardRead .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left 2px;} /* style.list */ .boardList th { background:#ffffff url(../images/white/lineBoardListTh.gif) no-repeat left bottom; } @@ -26,4 +26,4 @@ /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#ff6600;} -.replyBox .fileAttached li { border:0px; display:inline; margin-right:.75em; line-height:1.5em; padding:.1em 0 .1em 1.5em; background:url(../images/white/iconFile.gif) no-repeat left;} +.replyBox .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left 2px;} diff --git a/modules/board/skins/xe_board/header.html b/modules/board/skins/xe_board/header.html index 3b27a5c38..7cd745c00 100644 --- a/modules/board/skins/xe_board/header.html +++ b/modules/board/skins/xe_board/header.html @@ -5,7 +5,6 @@ {@$module_info->colorset = "white"} - diff --git a/modules/document/tpl/icons/file.gif b/modules/document/tpl/icons/file.gif index c39a49aa0041c443294864ff91d0aaddc882daf0..b9c4269839046185c14f660c7dc4504c59918a2a 100644 GIT binary patch literal 101 zcmZ?wbhEHbYu% zz^s+A>&`wEFD7>l3!bbK8ydH1-b?ShtG-75IcJ380{w*Z?+jLFn7j5bFkob`1^~_8 BCSm{p literal 146 zcmZ?wbhEHbbf^4kCZ|8HJd3nUp( zf#OdVMg|5h1|5(v$P5M+`+!c*)d32UM=BlJ3{#@7w k**L{C3yFSq=cEp2xmK6ufhV6_EI93uc>1jvlOTgN08rdB@Bjb+ diff --git a/modules/document/tpl/icons/image.gif b/modules/document/tpl/icons/image.gif index 128454cb7dd9b367f383e75d96761b164cc36840..3f77a6944bae7161f3763c68d38f73bd61e0c966 100644 GIT binary patch delta 266 zcmV+l0rmdV0jdIjM@dFFIbjO`4FJ_K0KMt|l+xX?K0Aj@e z!sP$3-_Za6|FPn4aI!toca@cu|G|KP6rlK%g^__lfI$bO31lY&YkpK=1>o;?JMnBfv%FTJu1*s_%m74{2@vMH&}@p)FHXd<+T nK{eP?My0udBS1iildHjl!7zeN_?VNytr_QMPp*<>Vz34PT}53T literal 343 zcmZ?wbhEHb?id=-)+8yL9QR1~{shG$H#nxepxv|Knl&uFI&3k#dx^4szp?DB@1 zn!4>;T6)6ltlTYa9bH1Ke6kbTbvyMG`Is2e3^TN|^hBAM6P3jIB~@gkL{ypC47P3G KVZi3dU=0A3I-D~A diff --git a/modules/document/tpl/icons/new.gif b/modules/document/tpl/icons/new.gif index 1ecd96d991b849a9e64a306bf18d4acfe8efdf7a..b446b72070363b7faa112f936dabcda04b5875d4 100644 GIT binary patch literal 465 zcmZ?wbhEHb>;+N_X@=U$Rbs`M4V+gEauPyBa9~ diff --git a/modules/document/tpl/icons/secret.gif b/modules/document/tpl/icons/secret.gif index 61bdcaef1b64ffd97cf4715a7ab45d05bbe46bdd..786d64d12784df1fdfe1bbd284531bf91883951e 100644 GIT binary patch literal 313 zcmZ?wbhEHbTDoGziZ^fG zynOjGKR>^`yu6~KV#9_FFJ8QO|Ni}xCr=(ddi3z&!{^VRKYjZ2-o1N|A3sh=NLa97 z!RyzrzkdDt>eZ{&t5?sTKmW^@FK^$z-Me>hR#sM8TH62r{~4$U6o0ZXGBBty=zxp_ z`H6uo%wckYht4b>)`JH#q;#w%aW9OR(Za-eEXl#fz{9Co!$GCu#4@(!hCUPSec0|0 wA$9Y8S@VR3l`dYYB4U!PP7M6=3S0uxTzoN39I6aVQVgmbKC@;!IWkxS0K6`5VgLXD delta 316 zcmV-C0mJ^e0@4D1M@dFFIbjU|4FJ_P0C90~b8~ZPX=!R|YV7RnaBy&RbaZZRZm+Me zE-o&stE=?%^y%s8<>lqFva+9_pLKP0sHmuKZ*R1;w4I%ucXxMSU|_nsy65NT>gww2 z>+7YZrQqP;q@<*vprGXBeLc(Jjuw9N>pg{fgE#y$(d48kDHhycc5cqj>ohRj(g(MX06N@FvK4M2pB zOjx7692YbvAqf))LIxxvFdPXfBN#3*LMt=~4hRVf2sABwHUTUO4-pS49uXB^LIpJe OOBMk&1_e#EK>$1Y>5wo0 diff --git a/modules/document/tpl/icons/update.gif b/modules/document/tpl/icons/update.gif index c17ae083da28d24a72f1edafb77b7eb13a359caf..a5b34ee5e2f30eb6b5299ec322aa61232606a35a 100644 GIT binary patch literal 465 zcmZ?wbhEHbZfR|6 vX6)=@?C9=p>SXAe)WbA!a_0obDYIuzn>&5#WQIAj`sU5=YhS&lk--`OezhMP literal 79 zcmZ?wbhEHbU^sm%@C@(bU fL}U5mjp9$FN)|GA-8YL;v0AHh Date: Wed, 23 Jan 2008 03:40:22 +0000 Subject: [PATCH 135/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3576 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_blog/layout.html | 6 ++++-- modules/lifepod/skins/xe_official/css/common.css | 5 ++--- modules/springnote/skins/xe_official/css/common.css | 9 ++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/layouts/xe_blog/layout.html b/layouts/xe_blog/layout.html index ea8eaf609..3b471f2db 100644 --- a/layouts/xe_blog/layout.html +++ b/layouts/xe_blog/layout.html @@ -50,12 +50,14 @@
  • {$lang->cmd_logout}
  • -
  • Skin Info
  • + + +
  • Skin Info
  • rss
  • Tag list
  • - + diff --git a/modules/lifepod/skins/xe_official/css/common.css b/modules/lifepod/skins/xe_official/css/common.css index 5b137c90c..f69cc00fc 100644 --- a/modules/lifepod/skins/xe_official/css/common.css +++ b/modules/lifepod/skins/xe_official/css/common.css @@ -11,12 +11,11 @@ /* account Navigation */ .accountNavigation { float:right; } -.accountNavigation li { float:left; margin-left:7px; list-style:none; padding-top:3px;} +.accountNavigation li { float:left; margin-left:7px; list-style:none; } .accountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;} .accountNavigation li.setup a { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; } .accountNavigation li.admin a { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; } -.accountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; _padding-top:5px;} -*:first-child+html li.loginAndLogout { padding-top:5px; } +.accountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; } INPUT.CalendarViewMonth { width:44px; diff --git a/modules/springnote/skins/xe_official/css/common.css b/modules/springnote/skins/xe_official/css/common.css index d1bfe469f..b5ac73b47 100644 --- a/modules/springnote/skins/xe_official/css/common.css +++ b/modules/springnote/skins/xe_official/css/common.css @@ -10,12 +10,11 @@ /* account Navigation */ .accountNavigation { float:right; } -.accountNavigation li { float:left; margin-left:7px; list-style:none; padding-top:3px;} +.accountNavigation li { float:left; margin-left:7px; list-style:none; } .accountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;} -.accountNavigation li.setup a { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; } -.accountNavigation li.admin a { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; } -.accountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; _padding-top:5px;} -*:first-child+html li.loginAndLogout { padding-top:5px; } +.accountNavigation li.setup { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; } +.accountNavigation li.admin { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; } +.accountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left top; padding-left:8px; } .pageSearch { text-align:right; margin-bottom:10px; } .pageList { border:1px solid #E3E3E2; } From 554ccd6d71a8c2670a47ee72227937fa35e8925f Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 23 Jan 2008 07:01:21 +0000 Subject: [PATCH 136/278] =?UTF-8?q?=ED=8F=AC=EB=9F=BC=ED=98=95=20=EC=9C=84?= =?UTF-8?q?=EC=A0=AF=20=EC=8A=A4=ED=82=A8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3577 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/module.model.php | 1 + widgets/forum/conf/info.xml | 91 +++++++++++++++++ widgets/forum/forum.class.php | 95 ++++++++++++++++++ widgets/forum/queries/getLatestComments.xml | 14 +++ widgets/forum/queries/getTotalComments.xml | 15 +++ widgets/forum/queries/getTotalDocuments.xml | 15 +++ .../forum/skins/default/css/.common.css.swp | Bin 0 -> 12288 bytes widgets/forum/skins/default/css/common.css | 28 ++++++ widgets/forum/skins/default/images/back.gif | Bin 0 -> 1020 bytes widgets/forum/skins/default/images/div.gif | Bin 0 -> 289 bytes widgets/forum/skins/default/images/icon.gif | Bin 0 -> 259 bytes .../forum/skins/default/images/icon_new.gif | Bin 0 -> 262 bytes widgets/forum/skins/default/images/lb.gif | Bin 0 -> 49 bytes widgets/forum/skins/default/images/lt.gif | Bin 0 -> 50 bytes widgets/forum/skins/default/images/rb.gif | Bin 0 -> 49 bytes .../forum/skins/default/images/replies.gif | Bin 0 -> 197 bytes widgets/forum/skins/default/images/rt.gif | Bin 0 -> 50 bytes widgets/forum/skins/default/images/top_bg.gif | Bin 0 -> 209 bytes widgets/forum/skins/default/list.html | 47 +++++++++ widgets/forum/skins/default/skin.xml | 33 ++++++ 20 files changed, 339 insertions(+) create mode 100644 widgets/forum/conf/info.xml create mode 100644 widgets/forum/forum.class.php create mode 100644 widgets/forum/queries/getLatestComments.xml create mode 100644 widgets/forum/queries/getTotalComments.xml create mode 100644 widgets/forum/queries/getTotalDocuments.xml create mode 100644 widgets/forum/skins/default/css/.common.css.swp create mode 100644 widgets/forum/skins/default/css/common.css create mode 100644 widgets/forum/skins/default/images/back.gif create mode 100644 widgets/forum/skins/default/images/div.gif create mode 100644 widgets/forum/skins/default/images/icon.gif create mode 100644 widgets/forum/skins/default/images/icon_new.gif create mode 100644 widgets/forum/skins/default/images/lb.gif create mode 100644 widgets/forum/skins/default/images/lt.gif create mode 100644 widgets/forum/skins/default/images/rb.gif create mode 100644 widgets/forum/skins/default/images/replies.gif create mode 100644 widgets/forum/skins/default/images/rt.gif create mode 100644 widgets/forum/skins/default/images/top_bg.gif create mode 100644 widgets/forum/skins/default/list.html create mode 100644 widgets/forum/skins/default/skin.xml diff --git a/modules/module/module.model.php b/modules/module/module.model.php index b7d2d3009..8a66931e6 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -73,6 +73,7 @@ * @brief 여러개의 module_srl에 해당하는 모듈의 정보를 구함 **/ function getModulesInfo($module_srls) { + if(is_array($module_srls)) $module_srls = implode(',',$module_srls); $args->module_srls = $module_srls; $output = executeQueryArray('module.getModulesInfo', $args); if(!$output->toBool()) return; diff --git a/widgets/forum/conf/info.xml b/widgets/forum/conf/info.xml new file mode 100644 index 000000000..c15cbf9bd --- /dev/null +++ b/widgets/forum/conf/info.xml @@ -0,0 +1,91 @@ + + + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + + 제로 + zero + zero + zero + zero + zero + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + + + 제목 + 栏目名 + タイトル + Title + Título + Заголовок + text + + + new 표시 시간 (hours) + new图标显示时间(hours) + Newの表示時間 (Hours) + Duration of indication for new item + Длительность индикации для новых объектов + text + 새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. (시간 단위) + 可以设置最新更新主题的new图标显示时间。 + 新しく登録された書き込みに対して「New」の表示時間を指定します(時間単位)。 + You may set the duration of indication for fresh item. (unit is hour) + Вы можете установить длительность индикации для нового объекта. (единица - час) + + + 제목 글자수 + タイトルの文字数 + 标题字数 + Length of Subject + Número de letras del título + Длина темы + text + 제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다) + タイトルの文字数が指定できます(「0」または空欄の場合は、文字数を制限しません)。 + 可以设置标题的字数。(0或留空为不限) + Length of Subject can be assigned. (0 or blank value will not restrict the length) + El largo del título puede ser asignado. (valor 0 o en blanco no restringe el largo) + Длина темы может быть присвоена. (0 или пустое значение не будут ограничивать длину) + + + 대상 모듈 + 模块对象 + モジュール + Target Module + Módulo Objetivo + Модуль назначения + mid_list + 선택하신 모듈에 등록된 글을 대상으로 합니다. + 将把被选模块当中的主题作为对象。 + チェックされたモジュールに登録されたコンテンツ(書き込み)を対象とします。 + The target articles to be sorted will be the ones submitted in the selected module. + El objetivo de los documentos agregados serán los del módulo selccionado. + Статьи назначения для сортировки будут теми, что были размещены в выбранном модуле. + + + diff --git a/widgets/forum/forum.class.php b/widgets/forum/forum.class.php new file mode 100644 index 000000000..04eb99218 --- /dev/null +++ b/widgets/forum/forum.class.php @@ -0,0 +1,95 @@ +title; + + // 최근 글 표시 시간 + $duration_new = $args->duration_new; + if(!$duration_new) $duration_new = 12; + + // 제목 길이 자르기 + $subject_cut_size = $args->subject_cut_size; + if(!$subject_cut_size) $subject_cut_size = 0; + + // 대상 모듈 + if($args->mid_list) $mid_list = explode(",",$args->mid_list); + else return; + + // module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌 + $oModuleModel = &getModel('module'); + $module_srls = $oModuleModel->getModuleSrlByMid($mid_list); + + // 대상 모듈의 정보를 구함 + $module_list = $oModuleModel->getModulesInfo($module_srls); + + // 각 모듈별로 먼저 정리 시작 + foreach($module_list as $module) { + $modules[$module->module_srl]->title = $module->browser_title; + $modules[$module->module_srl]->mid = $module->mid; + $modules[$module->module_srl]->description = $module->description; + $modules[$module->module_srl]->document_count = 0; + $modules[$module->module_srl]->comment_count = 0; + + // 최근 수정된 댓글의 정보 + $last_args = null; + $last_args->module_srl = $module->module_srl; + $output = executeQuery('widgets.forum.getLatestComments', $last_args); + + if(is_array($output->data)) $modules[$module->module_srl]->last_comment = array_pop($output->data); + else $modules[$module->module_srl]->last_comment = null; + } + + // 각 모듈별 전체글을 구함 + $total_documents_args->module_srl = $module->module_srl; + $total_documents_args->module_srls = implode(',',$module_srls); + + $total_documents_output = executeQueryArray('widgets.forum.getTotalDocuments',$total_documents_args); + foreach($total_documents_output->data as $val) { + $modules[$val->module_srl]->document_count = $val->count; + } + + // 각 모듈별 댓글 수를 구함 + $total_comments_args->module_srl = $module->module_srl; + $total_comments_args->module_srls = implode(',',$module_srls); + + $total_comments_output = executeQueryArray('widgets.forum.getTotalComments',$total_comments_args); + foreach($total_comments_output->data as $val) { + $modules[$val->module_srl]->comment_count = $val->count; + } + + $widget_info->title = $title; + $widget_info->modules = $modules; + $widget_info->subject_cut_size = $subject_cut_size; + $widget_info->duration_new = $duration_new * 60*60; + + Context::set('widget_info', $widget_info); + + // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정) + $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); + Context::set('colorset', $args->colorset); + + // 템플릿 파일을 지정 + $tpl_file = 'list'; + + // 템플릿 컴파일 + $oTemplate = &TemplateHandler::getInstance(); + $output = $oTemplate->compile($tpl_path, $tpl_file); + return $output; + } + } +?> diff --git a/widgets/forum/queries/getLatestComments.xml b/widgets/forum/queries/getLatestComments.xml new file mode 100644 index 000000000..d036ad8aa --- /dev/null +++ b/widgets/forum/queries/getLatestComments.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/widgets/forum/queries/getTotalComments.xml b/widgets/forum/queries/getTotalComments.xml new file mode 100644 index 000000000..76c845ba0 --- /dev/null +++ b/widgets/forum/queries/getTotalComments.xml @@ -0,0 +1,15 @@ + + +
    + + + + + + + + + + + + diff --git a/widgets/forum/queries/getTotalDocuments.xml b/widgets/forum/queries/getTotalDocuments.xml new file mode 100644 index 000000000..2abf501b8 --- /dev/null +++ b/widgets/forum/queries/getTotalDocuments.xml @@ -0,0 +1,15 @@ + + +
    + + + + + + + + + + + + diff --git a/widgets/forum/skins/default/css/.common.css.swp b/widgets/forum/skins/default/css/.common.css.swp new file mode 100644 index 0000000000000000000000000000000000000000..83de11d52e71f30b9dc3f4e160309f13bcf34076 GIT binary patch literal 12288 zcmeI2zi-n(6vwYj{3;-jS|JtbXoUn4c9MqvauzDlA_g{~f(0)2**VqrMdwSKHfmQU z7@3(ESYY8FU}s{bZ2SfM0r1Xt+Bh||R3N14o%KyB$M(DTdEfVjG|lRxd-v&_T_dnA z5c2uktGk~*J|}OU5wgjZG^Y<*hrMpwTv%CIS*ffGFW@?<_)>MEO0p{Aq~dX(bwXWn zlceIxD3Y-ae;yPYKSu&c;1C2l+PCIMNqxFjotnH#FI{|ih@0>dB!C2v01`j~NB{{S z0VIF~juQdh9w9#jrgYD3vo+U#u_O znrl#B#@g~(B*G0xvzCllel8K4+?j8~9a{&+W*yyqv?~8RsL3oX z<>B)zF|&n*B}E zpsmc(GryVwt$~SKX!>kQmX4CWfssw^mYrGrH(fM1d5h1iX6?D}nUK%W1kFmh+kk$$ z@&+90+`g!uhF_aCQAx_R{db)g4^eFtcUALTCwR)}ZE2j$M!DMfRY(sXmZU?}ww#ZMUQ^KYI literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/css/common.css b/widgets/forum/skins/default/css/common.css new file mode 100644 index 000000000..bb3b33802 --- /dev/null +++ b/widgets/forum/skins/default/css/common.css @@ -0,0 +1,28 @@ +.xeForum { background:url("../images/back.gif") repeat-x left top; padding:0; } + +.xeForum div.forumTable { padding:0 6px 0 6px; } +.xeForum table { width:100%; border:0; table-layout:fixed; } + +.xeForum table tr.top { height:22px; } +.xeForum table th { vertical-align:bottom; color:#ffffff; font-weight:normal; padding-bottom:5px; } +.xeForum table th.title { font-weight:normal; text-align:left; padding-left:10px; } +.xeForum table th.last_post { text-align:left; padding-left:15px; } + +.xeForum table tr.content { background:#EFEFEF; height:55px; } + +.xeForum table td.topic, .xeForum td.icon, .xeForum td.title, .xeForum td.topic, .xeForum td.replies , .xeForum td.last_post{ padding:5px 0 5px 0; border-top:1px solid #FFFFFF; } +.xeForum table td.topic, .xeForum td.icon, .xeForum td.title, .xeForum td.topic, .xeForum td.replies , .xeForum td.last_post{ padding:5px 0 5px 0; border-bottom:1px solid #6E6E6E; } +.xeForum table td.icon { text-align:center; } + +.xeForum table td.title a { text-decoration:none; color:#3A3947; font-size:9pt;} +.xeForum table td.title p { margin-top:5px; font-weight:normal; text-decoration:none; color:#838383; font-size:9pt;} +.xeForum table td.title p a { font-weight:normal; text-decoration:none; color:#838383; font-size:9pt;} + +.xeForum table td.topic, .xeForum td.replies, .xeForum td.last_post { background:#EFEFEF url("../images/div.gif") no-repeat left 3px; } + +.xeForum table td.topic, .xeForum td.replies { text-align:center; color:#3A3947; font-family:tahoma; font-size:8pt; } + +.xeForum table td.last_post { text-align:left; color:#3A3947; font-family:tahoma; font-size:8pt; padding-left:15px; } +.xeForum table td.last_post div.author img { vertical-align:middle; } +.xeForum table td.last_post div.date { margin-top:5px; text-align:left; color:#3A3947; font-family:tahoma; font-size:8pt; } + diff --git a/widgets/forum/skins/default/images/back.gif b/widgets/forum/skins/default/images/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..8120d20ef04b93f0d6c5df46cb29d535bfcd4676 GIT binary patch literal 1020 zcmVC|MoSmMZpc|s2q@|{(5~-@I ztgWuEu(1*sw6(UkxVgH!ycZL{z`?@9#Kp$P6AsGD%+1cv(9zNk3f0!v*xB0K+}+;a z*&O2I0PICJXU$+M@= zpFn*c7)rFL(W6L{DqYI7sne%WqZTzlwW`&tShH%~%C)Q4uVBN99UJz6*|TWVs$I*r zt=k6!;>w*%x31m0c=PJr%eSxJzkmY^9!$8f;lqd%EAC66vE#>(BTJr4xw7TUm@{kM z%(=7Y&!9t#e*B@d>C>oFt6t5zwd>cgW6PdRySDAyxO3~?&AYen-@t5f($n3;DZoGDB*+@R%qdc7-p#9h8%Y2;fElG zDB_4DmT2OMD5j|5iY&J1;)^iGDC3MY)@b96IOeG1jy(40NG7S| zl1w(~0+o_zM{=bwNED(Iku7Ha6Bh$gD&qKr1`=%bKED(R$@R%+>`m}aW!rkr-_ z>8GHED(a}DmTKy$sHUpws;su^>Z`EED(kGY)@tjmxaO+suDtf@>#x8DE9|hu7HjOW z$R?}ovdlK??6c5DEA6z@R%`8fwb*8>?Y7)@>+QGThAZy4+ZYo z#w+i<^ww+dz4+#<@4o!@>+in+2Q2Ww1Q%@Z!3Za;@WKo??C`@7M=bHg6jyBV#TaL- q@x~l??D5AShb;2QB$sUR$tb6+^2#i??DESn$1L;AG}nx62mm|&bW{!i literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/images/div.gif b/widgets/forum/skins/default/images/div.gif new file mode 100644 index 0000000000000000000000000000000000000000..22948e4232119b381cbf459a8de6b60bd6de5211 GIT binary patch literal 289 zcmZ?wbhEHbWMa@_xXQrr;K76M-@iY8{P@|kXE$%&ynFZVmoH!b{{4IF)~)BypTB+k z_Q{hcuU@^nbLY;>moM+#yZ7|z(;GK#JbLu#;lqb7Uc9(|{rdg;_us#N|MBC;*RNmS zzJ2@6n>XLSeS7!r-S6MOfBg9I_3PK4KY#xE_3P88Pk;XW`TY6w<;$1<|NqZGC7}3| z1#FTIhy?kGfz9r~WKR#7S$tESTU-(*3HbNBy~^z13cskF!pXR2{z>;wf-Gma`C5z_ dwhAkB9ZXD^V)XrzTYONDRehtlgoGo5H2@R?iWvX^ literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/images/icon.gif b/widgets/forum/skins/default/images/icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9a69477ff512f61b04b4de32a66ee482784ed7b GIT binary patch literal 259 zcmZ?wbhEHb6k`x%IKsftFkwSM$A$?j4iqf-(6HkFg%|(-|M)*)!G?wnK=MFB#e{-} z4G9Ge4HFJb*zy0vhyM#!9C+~Je?US*!;AwDKKuuQ4?q4h;0B66S-_GyAQEIJ18akV zN?!^mr&H0IfT#P`B}SP1y(6-8OX>UD{W7kHiY59z*qaDGcT-lr)inf`rEG=931#&&V87bonuno%3H};-JB>^(A4D8(puKR i$X&!_m!Hxv$jT}-)7GMI?)-&3LaSDt81zN literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/images/icon_new.gif b/widgets/forum/skins/default/images/icon_new.gif new file mode 100644 index 0000000000000000000000000000000000000000..454fad1feeea247ceab3132ca90c71c1d34922ef GIT binary patch literal 262 zcmZ?wbhEHb6k`x%IKsd%Va0)h1s@t#{J-$x|AYk_{{Q&ju;G6~LBoUv2NEhKeE9JH z0Z@F${|6ubH_SM&V8wxegogh>z`*d~2aq5P6o0aS73qLTkev*y%@36OQhqWpIIZ!2 zvM(>t$7Jmt-^p7_-{0hm`l^F-u@#EL8UpH^wym#;3%a<=NUApw};lry}uYUOO z;oG-ww{PEm|Ni}-KY!l5dGqYqv(KMDKYsl9`t|Fxm+#)WV*?QU|NpPx# literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/images/rt.gif b/widgets/forum/skins/default/images/rt.gif new file mode 100644 index 0000000000000000000000000000000000000000..6c1ad7fa98583b478dac8b1a98dc5f0051cd9596 GIT binary patch literal 50 ycmZ?wbhEHbWMg1sXkcXc4+e@qSr{1@7#VaJfB+=Jz{Kg(kkEFzZUGM~gEatlG7WkF literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/images/top_bg.gif b/widgets/forum/skins/default/images/top_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..65e69d535e15b51a6c06d9562af35f39353c2823 GIT binary patch literal 209 zcmZ?wbhEHbWMfcfIKsd%dGh3rj*dBV=1iC{VfO6VlO|1?Hf>sOZ||&Gv!+jXJ)NDM3l=PxGG)rlnKK!11I3>#U`ZVi39^%c z)lWgSZwbfTj4Hhx?L7vH=RIhB|pB25SKNG*jjP literal 0 HcmV?d00001 diff --git a/widgets/forum/skins/default/list.html b/widgets/forum/skins/default/list.html new file mode 100644 index 000000000..9d1f8f601 --- /dev/null +++ b/widgets/forum/skins/default/list.html @@ -0,0 +1,47 @@ + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + +
    {$widget_info->title} {$lang->topic}{$lang->replies}{$lang->last_post}
    icon + {$val->title} +

    {$val->description}

    +
    {number_format($val->document_count)}{number_format($val->comment_count)} + +
    + {$val->last_comment->nick_name} + go +
    +
    {zdate($val->last_comment->regdate,"Y-m-d H:i")}
    + +   + +
    +
    + + +
    +
    diff --git a/widgets/forum/skins/default/skin.xml b/widgets/forum/skins/default/skin.xml new file mode 100644 index 000000000..49b25ddb0 --- /dev/null +++ b/widgets/forum/skins/default/skin.xml @@ -0,0 +1,33 @@ + + + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + + 제로 + zero + zero + zero + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + + + 흰색 바탕용 + 白い背景用 + 白色背景 + White Background + + + From 8578efa48f0382500ccdb3536b6d9f7dc5b50814 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 23 Jan 2008 09:25:59 +0000 Subject: [PATCH 137/278] =?UTF-8?q?=ED=8F=AC=EB=9F=BC=20=EC=9C=84=EC=A0=AF?= =?UTF-8?q?=EC=97=90=20=EC=B5=9C=EA=B7=BC=EA=B8=80-=EC=B5=9C=EA=B7=BC?= =?UTF-8?q?=EB=8C=93=EA=B8=80=EC=9D=98=20=EC=B2=98=EB=A6=AC=EB=A5=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3578 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/forum/forum.class.php | 25 +++++++++++++++--- widgets/forum/queries/getLatestDocuments.xml | 14 ++++++++++ .../forum/skins/default/css/.common.css.swp | Bin 12288 -> 0 bytes widgets/forum/skins/default/css/common.css | 2 +- widgets/forum/skins/default/list.html | 10 +++---- 5 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 widgets/forum/queries/getLatestDocuments.xml delete mode 100644 widgets/forum/skins/default/css/.common.css.swp diff --git a/widgets/forum/forum.class.php b/widgets/forum/forum.class.php index 04eb99218..88f8b2e68 100644 --- a/widgets/forum/forum.class.php +++ b/widgets/forum/forum.class.php @@ -45,13 +45,32 @@ $modules[$module->module_srl]->document_count = 0; $modules[$module->module_srl]->comment_count = 0; - // 최근 수정된 댓글의 정보 + // 최근 등록된 댓글의 정보 + $last_comment = null; $last_args = null; $last_args->module_srl = $module->module_srl; $output = executeQuery('widgets.forum.getLatestComments', $last_args); + if(is_array($output->data)) $last_comment = array_pop($output->data); - if(is_array($output->data)) $modules[$module->module_srl]->last_comment = array_pop($output->data); - else $modules[$module->module_srl]->last_comment = null; + // 최근 등록된 글의 정보 + $last_document = null; + $last_args = null; + $last_args->module_srl = $module->module_srl; + $output = executeQuery('widgets.forum.getLatestDocuments', $last_args); + if(is_array($output->data)) $last_document = array_pop($output->data); + + $last_item = null; + if($last_comment && $last_document) { + if($last_document->regdate > $last_comment->regdate) $last_item = $last_document; + else $last_item = $last_comment; + } elseif($last_document) { + $last_item = $last_document; + } elseif($last_comment) { + $last_item = $last_comment; + } + $modules[$module->module_srl]->last_item = $last_item; + + if($last_item && $last_item->regdate > date("YmdHis",time()-$duration_new*60*60)) $modules[$module->module_srl]->is_new = true; } // 각 모듈별 전체글을 구함 diff --git a/widgets/forum/queries/getLatestDocuments.xml b/widgets/forum/queries/getLatestDocuments.xml new file mode 100644 index 000000000..7ba49510a --- /dev/null +++ b/widgets/forum/queries/getLatestDocuments.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/widgets/forum/skins/default/css/.common.css.swp b/widgets/forum/skins/default/css/.common.css.swp deleted file mode 100644 index 83de11d52e71f30b9dc3f4e160309f13bcf34076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2zi-n(6vwYj{3;-jS|JtbXoUn4c9MqvauzDlA_g{~f(0)2**VqrMdwSKHfmQU z7@3(ESYY8FU}s{bZ2SfM0r1Xt+Bh||R3N14o%KyB$M(DTdEfVjG|lRxd-v&_T_dnA z5c2uktGk~*J|}OU5wgjZG^Y<*hrMpwTv%CIS*ffGFW@?<_)>MEO0p{Aq~dX(bwXWn zlceIxD3Y-ae;yPYKSu&c;1C2l+PCIMNqxFjotnH#FI{|ih@0>dB!C2v01`j~NB{{S z0VIF~juQdh9w9#jrgYD3vo+U#u_O znrl#B#@g~(B*G0xvzCllel8K4+?j8~9a{&+W*yyqv?~8RsL3oX z<>B)zF|&n*B}E zpsmc(GryVwt$~SKX!>kQmX4CWfssw^mYrGrH(fM1d5h1iX6?D}nUK%W1kFmh+kk$$ z@&+90+`g!uhF_aCQAx_R{db)g4^eFtcUALTCwR)}ZE2j$M!DMfRY(sXmZU?}ww#ZMUQ^KYI diff --git a/widgets/forum/skins/default/css/common.css b/widgets/forum/skins/default/css/common.css index bb3b33802..b25e09364 100644 --- a/widgets/forum/skins/default/css/common.css +++ b/widgets/forum/skins/default/css/common.css @@ -16,7 +16,7 @@ .xeForum table td.title a { text-decoration:none; color:#3A3947; font-size:9pt;} .xeForum table td.title p { margin-top:5px; font-weight:normal; text-decoration:none; color:#838383; font-size:9pt;} -.xeForum table td.title p a { font-weight:normal; text-decoration:none; color:#838383; font-size:9pt;} +.xeForum table td.title p a { font-weight:normal; text-decoration:underline; color:#838383; font-size:9pt;} .xeForum table td.topic, .xeForum td.replies, .xeForum td.last_post { background:#EFEFEF url("../images/div.gif") no-repeat left 3px; } diff --git a/widgets/forum/skins/default/list.html b/widgets/forum/skins/default/list.html index 9d1f8f601..b0d8d642c 100644 --- a/widgets/forum/skins/default/list.html +++ b/widgets/forum/skins/default/list.html @@ -19,7 +19,7 @@ - + + + + + diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index 5a829696c..345aa77d7 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -112,6 +112,13 @@

    {$lang->about_except_notice}

    + + + + - + diff --git a/modules/file/tpl/file_module_config.html b/modules/file/tpl/file_module_config.html index 499b9bf9c..be3d14b05 100644 --- a/modules/file/tpl/file_module_config.html +++ b/modules/file/tpl/file_module_config.html @@ -1,7 +1,6 @@ - - +
    iconicon {$val->title}

    {$val->description}

    @@ -27,12 +27,12 @@
    {number_format($val->document_count)} {number_format($val->comment_count)} - +
    - {$val->last_comment->nick_name} - go + {$val->last_item->nick_name} + go
    -
    {zdate($val->last_comment->regdate,"Y-m-d H:i")}
    +
    {zdate($val->last_item->regdate,"Y-m-d H:i")}
      From bdbeea29dfb0183bcd487eca788a6e3c39c3f4bc Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 23 Jan 2008 11:58:39 +0000 Subject: [PATCH 138/278] =?UTF-8?q?menu=EC=9D=98=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=A5=BC=20=EC=A7=81=EC=A0=91=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20=EA=B0=80=EB=8A=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=98=EA=B3=A0=20menu=EC=9D=98=20?= =?UTF-8?q?=EA=B0=92=EC=A4=91=20link=EB=9D=BC=EB=8A=94=20=EA=B0=92?= =?UTF-8?q?=EC=9D=84=20=EC=82=AC=EC=9A=A9=EC=8B=9C=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EB=90=9C=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EB=A5=BC=20=EA=B7=B8=EB=8C=80=EB=A1=9C=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=A0=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95.=20=EB=A9=94=EB=89=B4=EB=93=A4=EC=9D=98=20=EC=9E=AC?= =?UTF-8?q?=EC=BB=B4=ED=8C=8C=EC=9D=BC=20=ED=95=84=EC=9A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3579 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_official/layout.html | 14 +-- modules/menu/conf/module.xml | 3 + modules/menu/lang/en.lang.php | 2 + modules/menu/lang/es.lang.php | 2 + modules/menu/lang/jp.lang.php | 2 + modules/menu/lang/ko.lang.php | 2 + modules/menu/lang/ru.lang.php | 2 + modules/menu/lang/zh-CN.lang.php | 4 +- modules/menu/menu.admin.controller.php | 122 +++++++++++++++++++-- modules/menu/queries/getChildMenuCount.xml | 6 +- modules/menu/tpl/js/menu_admin.js | 78 +++++++++++++ modules/menu/tpl/menu_file_uploaded.html | 10 ++ modules/menu/tpl/menu_item_info.html | 27 ++++- modules/menu/tpl/menu_management.html | 9 +- 14 files changed, 258 insertions(+), 25 deletions(-) create mode 100644 modules/menu/tpl/menu_file_uploaded.html diff --git a/layouts/xe_official/layout.html b/layouts/xe_official/layout.html index d6a508b26..e82bdf9b7 100644 --- a/layouts/xe_official/layout.html +++ b/layouts/xe_official/layout.html @@ -36,12 +36,12 @@ diff --git a/modules/menu/conf/module.xml b/modules/menu/conf/module.xml index d9c0f3dcd..05d662c18 100644 --- a/modules/menu/conf/module.xml +++ b/modules/menu/conf/module.xml @@ -15,5 +15,8 @@ + + + diff --git a/modules/menu/lang/en.lang.php b/modules/menu/lang/en.lang.php index 7f7329568..8e37c5286 100644 --- a/modules/menu/lang/en.lang.php +++ b/modules/menu/lang/en.lang.php @@ -48,4 +48,6 @@ $lang->about_menu_group_srls = 'If you select a group, only the group members can see the menu. (if xml file is directly opened, it will be shown.)'; $lang->about_menu = "Menu module will help you to create a complete site through the convenient menu management which arranges created modules and links to layouts without any manual works..\nMenu is not a site manager, but it just has information which can link to modules and layouts so you can express different types of menu."; + + $lang->alert_image_only = "이미지 파일만 등록가능합니다."; ?> diff --git a/modules/menu/lang/es.lang.php b/modules/menu/lang/es.lang.php index 238b0af29..17e9fbcd8 100644 --- a/modules/menu/lang/es.lang.php +++ b/modules/menu/lang/es.lang.php @@ -48,4 +48,6 @@ $lang->about_menu_group_srls = 'Si tu selecciona el grupo, sólo los usuarios del grupo pueden ver el menú. (Si el archivo xml es abierto directamente, lo mostrará.)'; $lang->about_menu = "Módulo del menú te ayudara a crear un sitio completo a través de un conveniente manejo del menú que ordena los módulos creados y conecta con el diseño sin ningún otro trabajo.\nEl menú no es un manejador del sitio, sino que permite conectar los módulos con el diseño y a través del diseño puede expresar variados estilos del menú."; + + $lang->alert_image_only = "이미지 파일만 등록가능합니다."; ?> diff --git a/modules/menu/lang/jp.lang.php b/modules/menu/lang/jp.lang.php index cb2e1be03..dd8c69c86 100644 --- a/modules/menu/lang/jp.lang.php +++ b/modules/menu/lang/jp.lang.php @@ -48,4 +48,6 @@ $lang->about_menu_group_srls = 'グループを選択すると該当するグループのユーザにのみメニューが表示されます(XMLファイルを直接開くと情報が表示されます)。'; $lang->about_menu = "メニューモジュルは、生成されたモジュールを、便利なメニュー管理機能で、整理したりレイアウトをリンクしたりして煩わしい作業なしでサイトを構築できるようにします。メニューは、サイトを管理するというより、モジュールとレイアウトをリンクして様々なメニューを表示させる情報のみ保持します。"; + + $lang->alert_image_only = "이미지 파일만 등록가능합니다."; ?> diff --git a/modules/menu/lang/ko.lang.php b/modules/menu/lang/ko.lang.php index 66f52c674..3c5f29a5d 100644 --- a/modules/menu/lang/ko.lang.php +++ b/modules/menu/lang/ko.lang.php @@ -48,4 +48,6 @@ $lang->about_menu_group_srls = '그룹을 선택하시면 해당 그룹의 사용자만 메뉴가 보이게 됩니다. (xml파일을 직접 열람하면 노출이 됩니다)'; $lang->about_menu = "메뉴모듈은 생성된 모듈을 편리한 메뉴관리기를 통해 정리하고 레이아웃과 연결하여 별도의 수작업 없이 완성된 사이트를 구축하도록 도와줍니다..\n메뉴는 사이트를 관리하기 보다는 모듈과 레이아웃을 연결해 주며 레이아웃을 통해서 여러가지 형태의 메뉴를 표시할 수 있도록 하는 정보만 가지고 있습니다."; + + $lang->alert_image_only = "이미지 파일만 등록가능합니다."; ?> diff --git a/modules/menu/lang/ru.lang.php b/modules/menu/lang/ru.lang.php index 9811e89a6..5936b5b13 100644 --- a/modules/menu/lang/ru.lang.php +++ b/modules/menu/lang/ru.lang.php @@ -48,4 +48,6 @@ $lang->about_menu_group_srls = 'Если Вы выберите группу, то только ее члены могут видеть это меню. (если XML файл открыт напрямую, оно будет показано.)'; $lang->about_menu = "Модуль меню поможет Вам создать полноценный сайт посредством удобного менеджмента меню, которое расставляет созданные модули и ссылки в лейауты без всякой ручной работы.\nМеню не является менеджером сайта, но оно содержит информацию, которая может связываться с модулями и лейаутами так, что Вы можете выразить различные виды меню."; + + $lang->alert_image_only = "이미지 파일만 등록가능합니다."; ?> diff --git a/modules/menu/lang/zh-CN.lang.php b/modules/menu/lang/zh-CN.lang.php index 41a4dc32d..9fe9e51a2 100644 --- a/modules/menu/lang/zh-CN.lang.php +++ b/modules/menu/lang/zh-CN.lang.php @@ -48,4 +48,6 @@ $lang->about_menu_group_srls = '如选择用户组,只有所属组用户才能看到此菜单。 —(xml文件中不能隐藏)'; $lang->about_menu = "菜单模块可以通过菜单管理器整理已生成的模块并同布局相连接来轻松建设一个完整的网站。\n菜单模块虽然具有连接模块和布局并通过布局来显示多种形态菜单的信息,但它不具备管理网站的功能。"; -?> \ No newline at end of file + + $lang->alert_image_only = "이미지 파일만 등록가능합니다."; +?> diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 5700b0370..78573d92c 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -59,6 +59,10 @@ } } + // 이미지 버튼 모두 삭제 + $image_path = sprintf('./files/attach/menu_button/%s', $menu_srl); + FileHandler::removeDir($image_path); + $args->menu_srl = $menu_srl; // 메뉴 메뉴 삭제 @@ -87,8 +91,14 @@ // 메뉴 이름 체크 $lang_supported = Context::get('lang_supported'); + $name_inserted = false; foreach($lang_supported as $key => $val) { $menu_name[$key] = $source_args->{"menu_name_".strtolower($key )}; + if($menu_name[$key]) $name_inserted = true; + } + if(!$name_inserted) { + global $lang; + return new Object(-1, sprintf($lang->filter->isnull, $lang->menu_name)); } // 변수를 다시 정리 (form문의 column과 DB column이 달라서) @@ -101,9 +111,9 @@ $args->url = trim($source_args->menu_url); $args->open_window = $source_args->menu_open_window; $args->expand = $source_args->menu_expand; - $args->normal_btn = $source_args->menu_normal_btn; - $args->hover_btn = $source_args->menu_hover_btn; - $args->active_btn = $source_args->menu_active_btn; + $args->normal_btn = $source_args->normal_btn; + $args->hover_btn = $source_args->hover_btn; + $args->active_btn = $source_args->active_btn; $args->group_srls = $source_args->group_srls; // 이미 존재하는지를 확인 @@ -185,6 +195,11 @@ // XML 파일을 갱신하고 위치을 넘겨 받음 $xml_file = $this->makeXmlFile($args->menu_srl); + // 이미지 버튼 모두 삭제 + if($item_info->normal_btn) @unlink($item_info->normal_btn); + if($item_info->hover_btn) @unlink($item_info->hover_btn); + if($item_info->active_btn) @unlink($item_info->active_btn); + $this->add('xml_file', $xml_file); $this->add('menu_title', $menu_title); $this->add('menu_item_srl', $parent_srl); @@ -250,6 +265,51 @@ $this->add('xml_file',$xml_file); } + /** + * @brief 메뉴 이미지 버튼을 등록 + **/ + function procMenuAdminUploadButton() { + $menu_srl = Context::get('menu_srl'); + $menu_item_srl = Context::get('menu_item_srl'); + $target = Context::get('target'); + $target_file = Context::get($target); + + // 필수 요건이 없거나 업로드된 파일이 아니면 오류 발생 + if(!$menu_srl || !$menu_item_srl || !$target_file || !is_uploaded_file($target_file['tmp_name']) || !preg_match('/\.(gif|jpeg|jpg|png)/i',$target_file['name'])) { + Context::get('error_messge', Context::getLang('msg_invalid_request')); + + // 요건을 만족하고 업로드된 파일이면 지정된 위치로 이동 + } else { + $tmp_arr = explode('/',$target_file['type']); + $ext = $tmp_arr[count($tmp_arr)-1]; + + $path = sprintf('./files/attach/menu_button/%d/', $menu_srl); + $filename = sprintf('%s%d.%s.%s', $path, $menu_item_srl, $target, $ext); + + if(!is_dir($path)) FileHandler::makeDir($path); + + move_uploaded_file($target_file['tmp_name'], $filename); + Context::set('filename', $filename); + } + + + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('menu_file_uploaded'); + } + + /** + * @brief 등록된 메뉴 이미지 제거 + **/ + function procMenuAdminDeleteButton() { + $menu_srl = Context::get('menu_srl'); + $menu_item_srl = Context::get('menu_item_srl'); + $target = Context::get('target'); + $filename = Context::get('filename'); + @unlink($filename); + + $this->add('target', $target); + } + /** * @brief 메뉴의 xml 파일을 만들고 위치를 return **/ @@ -341,16 +401,32 @@ else $href = $url; $open_window = $node->open_window; $expand = $node->expand; - $normal_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->normal_btn); - $hover_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->hover_btn); - $active_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->active_btn); + + $normal_btn = $node->normal_btn; + if($normal_btn && preg_match('/^\.\/files\/attach\/menu_button/i',$normal_btn)) $normal_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$normal_btn); + else $normal_btn = ''; + $hover_btn = $node->hover_btn; + if($hover_btn && preg_match('/^\.\/files\/attach\/menu_button/i',$hover_btn)) $hover_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$hover_btn); + else $hover_btn = ''; + $active_btn = $node->active_btn; + if($active_btn && preg_match('/^\.\/files\/attach\/menu_button/i',$active_btn)) $active_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$active_btn); + else $active_btn = ''; + $group_srls = $node->group_srls; + if($normal_btn) { + if($hover_btn) $hover_str = sprintf('onmouseover="this.src=\'%s\'"', $hover_btn); else $hover_str = ''; + if($active_btn) $active_str = sprintf('onmousedown="this.src=\'%s\'"', $active_btn); else $active_str = ''; + $link = sprintf('<img src="%s" onmouseout="this.src=\'%s\'" alt="" %s %s />', $normal_btn, $normal_btn, $hover_str, $active_str); + } else { + $link = ''; + } + // node->group_srls값이 있으면 if($group_srls) $group_check_code = sprintf('($_is_admin==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( - 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ', + 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" link="%s"', $menu_item_srl, $node->parent_srl, $group_check_code, @@ -363,7 +439,9 @@ $expand, $normal_btn, $hover_btn, - $active_btn + $active_btn, + $group_check_code, + $link ); if($child_buff) $buff .= sprintf('%s', $attribute, $child_buff); @@ -417,9 +495,31 @@ $child_buff = $child_output['buff']; $expand = $node->expand; + $normal_btn = $node->normal_btn; + if($normal_btn && preg_match('/^\.\/files\/attach\/menu_button/i',$normal_btn)) $normal_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$normal_btn); + else $normal_btn = ''; + + $hover_btn = $node->hover_btn; + if($hover_btn && preg_match('/^\.\/files\/attach\/menu_button/i',$hover_btn)) $hover_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$hover_btn); + else $hover_btn = ''; + + $active_btn = $node->active_btn; + if($active_btn && preg_match('/^\.\/files\/attach\/menu_button/i',$active_btn)) $active_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$active_btn); + else $active_btn = ''; + + $group_srls = $node->group_srls; + + if($normal_btn) { + if($hover_btn) $hover_str = sprintf('onmouseover=\"this.src=\'%s\'\"', $hover_btn); else $hover_str = ''; + if($active_btn) $active_str = sprintf('onmousedown=\"this.src=\'%s\'\"', $active_btn); else $active_str = ''; + $link = sprintf('"\"".$_menu_names[%d][$lang_type]."\""', $normal_btn, $normal_btn, $node->menu_item_srl, $hover_str, $active_str); + } else { + $link = sprintf('$_menu_names[%d][$lang_type]', $node->menu_item_srl); + } + // 속성을 생성한다 ( url_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) $attribute = sprintf( - '"node_srl"=>"%s","parent_srl"=>"%s","text"=>(%s?$_menu_names[%d][$lang_type]:""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s)', + '"node_srl"=>"%s","parent_srl"=>"%s","text"=>(%s?$_menu_names[%d][$lang_type]:""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s), "link"=>(%s?%s:""),', $node->menu_item_srl, $node->parent_srl, $group_check_code, @@ -435,7 +535,9 @@ $selected, $selected, $expand, - $child_buff + $child_buff, + $group_check_code, + $link ); // buff 데이터를 생성한다 diff --git a/modules/menu/queries/getChildMenuCount.xml b/modules/menu/queries/getChildMenuCount.xml index 99c941aba..d60cf92a4 100644 --- a/modules/menu/queries/getChildMenuCount.xml +++ b/modules/menu/queries/getChildMenuCount.xml @@ -1,11 +1,11 @@ - + - +
    - + diff --git a/modules/menu/tpl/js/menu_admin.js b/modules/menu/tpl/js/menu_admin.js index c1dacba33..a63db6543 100644 --- a/modules/menu/tpl/js/menu_admin.js +++ b/modules/menu/tpl/js/menu_admin.js @@ -201,3 +201,81 @@ function doInsertMid(mid, menu_id) { fo_obj.menu_url.value = mid; window.close(); } + +/* 각 메뉴의 버튼 이미지 등록 */ +function doMenuUploadButton(obj) { + // 이미지인지 체크 + if(!/\.(gif|jpg|jpeg|png)$/i.test(obj.value)) return alert(alertImageOnly); + + // iframe 객체 생성 (있으면 있는것 이용) + if(!xGetElementById('tmp_upload_iframe')) { + if(xIE4Up) { + window.document.body.insertAdjacentHTML("afterEnd", ""); + } else { + var obj_iframe = xCreateElement('IFRAME'); + obj_iframe.name = obj_iframe.id = 'tmp_upload_iframe'; + obj_iframe.style.display = 'none'; + obj_iframe.style.width = '1px'; + obj_iframe.style.height = '1px'; + obj_iframe.style.position = 'absolute'; + obj_iframe.style.top = '-10px'; + obj_iframe.style.left = '-10px'; + window.document.body.appendChild(obj_iframe); + } + } + + // 현재 form의 target을 바꾸고 이미지 등록 + obj.form.target = 'tmp_upload_iframe'; + + // submit + obj.form.act.value = "procMenuAdminUploadButton"; + obj.form.target.value = obj.name; + obj.form.submit(); + obj.form.act.value = ""; + obj.form.target.value = ""; +} + +/* 메뉴 이미지 업로드 후처리 */ +function completeMenuUploadButton(target, filename) { + var column_name = target.replace(/^menu_/,''); + var fo_obj = xGetElementById("fo_menu"); + var zone_obj = xGetElementById(target+'_zone'); + var img_obj = xGetElementById(target+'_img'); + + fo_obj[column_name].value = filename; + + var img = new Image(); + img.src = filename; + img_obj.src = img.src; + zone_obj.style.display = "block"; +} + +/* 업로드된 메뉴 이미지 삭제 */ +function doDeleteButton(target) { + var fo_obj = xGetElementById("fo_menu"); + + var col_name = target.replace(/^menu_/,''); + + var params = new Array(); + params['target'] = target; + params['menu_srl'] = fo_obj.menu_srl.value; + params['menu_item_srl'] = fo_obj.menu_item_srl.value; + params['filename'] = fo_obj[col_name].value; + + var response_tags = new Array('error','message', 'target'); + + exec_xml('menu','procMenuAdminDeleteButton', params, completeDeleteButton, response_tags); +} + +function completeDeleteButton(ret_obj, response_tags) { + var target = ret_obj['target']; + + var column_name = target.replace(/^menu_/,''); + var fo_obj = xGetElementById("fo_menu"); + var zone_obj = xGetElementById(target+'_zone'); + var img_obj = xGetElementById(target+'_img'); + fo_obj[column_name].value = ""; + + img_obj.src = ""; + zone_obj.style.display = "none"; +} diff --git a/modules/menu/tpl/menu_file_uploaded.html b/modules/menu/tpl/menu_file_uploaded.html new file mode 100644 index 000000000..ee0a373d6 --- /dev/null +++ b/modules/menu/tpl/menu_file_uploaded.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/modules/menu/tpl/menu_item_info.html b/modules/menu/tpl/menu_item_info.html index a1a15fd90..ffa43084d 100644 --- a/modules/menu/tpl/menu_item_info.html +++ b/modules/menu/tpl/menu_item_info.html @@ -1,5 +1,8 @@ + + +
    @@ -49,15 +52,33 @@ - + - + - + diff --git a/modules/menu/tpl/menu_management.html b/modules/menu/tpl/menu_management.html index 7bee82f1f..d05abd47c 100644 --- a/modules/menu/tpl/menu_management.html +++ b/modules/menu/tpl/menu_management.html @@ -5,6 +5,10 @@ + + + + + {$comment->getContent(true)} diff --git a/modules/board/skins/cozy_board/css/common.css b/modules/board/skins/cozy_board/css/common.css index a133bd1a3..5c9ae3476 100644 --- a/modules/board/skins/cozy_board/css/common.css +++ b/modules/board/skins/cozy_board/css/common.css @@ -586,3 +586,9 @@ Jeong, Chan Myeong 070601~070630 .searchNextButton { border:1px solid #979797; border-left:1px solid #B1B1B1; border-top:1px solid #B1B1B1; color:#4F4F4F; height:21px; font-size:8pt; padding-left:5px; padding-right:5px; _padding-top:3px;} *:first-child+html .searchNextButton { padding-top:3px; } + +/* 회원 서명 및 프로필 이미지 출력 */ +.memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px;} +.memberSignature .profile { float:left; margin-right:20px; } +.memberSignature .signature { float:left; } +img.commentProfileImage { margin:5px 10px 5px 0; } diff --git a/modules/board/skins/cozy_board/view_document.html b/modules/board/skins/cozy_board/view_document.html index b0ce7e077..b045733e2 100644 --- a/modules/board/skins/cozy_board/view_document.html +++ b/modules/board/skins/cozy_board/view_document.html @@ -79,6 +79,19 @@ {$oDocument->getContent()} + + + +
    + +
    profile
    + + +
    {$oDocument->getSignature()}
    + +
    +
    + diff --git a/modules/board/skins/xe_board/comment.html b/modules/board/skins/xe_board/comment.html index b8e61ad2c..141a1c869 100644 --- a/modules/board/skins/xe_board/comment.html +++ b/modules/board/skins/xe_board/comment.html @@ -63,8 +63,12 @@ + + + {$comment->getContent(true)} +
    diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 8065678bb..74688c69a 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -306,3 +306,9 @@ h5 { padding:2px; } .tags .tagTypeD a { font-weight:bold; margin:0; background-color:#EFEFEF;} .tags .tagTypeE a { font-weight:normal; margin:0;} + +/* 회원 서명 및 프로필 이미지 출력 */ +.memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px;} +.memberSignature .profile { float:left; margin-right:20px; } +.memberSignature .signature { float:left; } +img.commentProfileImage { margin:5px 10px 5px 0; } diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 1f8271834..ecf99441c 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -105,6 +105,19 @@
    ipaddress : {$oDocument->get('ipaddress')}
    + + + +
    + +
    profile
    + + +
    {$oDocument->getSignature()}
    + +
    +
    + diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 3bd5be65f..d71612a78 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -260,5 +260,26 @@ return $oEditorModel->getModuleEditor('comment', $module_srl, $this->comment_srl, 'comment_srl', 'content'); } + /** + * @brief 작성자의 프로필 이미지를 return + **/ + function getProfileImage() { + if(!$this->isExists() || !$this->get('member_srl')) return; + $oMemberModel = &getModel('member'); + $profile_info = $oMemberModel->getProfileImage($this->get('member_srl')); + if(!$profile_info) return; + + return $profile_info->src; + } + + /** + * @brief 작성자의 서명을 return + **/ + function getSignature() { + if(!$this->isExists() || !$this->get('member_srl')) return; + $oMemberModel = &getModel('member'); + $signature = $oMemberModel->getSignature($this->get('member_srl')); + return $signature; + } } ?> diff --git a/modules/document/document.item.php b/modules/document/document.item.php index fe083c07f..45fac59de 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -579,5 +579,27 @@ $oEditorModel = &getModel('editor'); return $oEditorModel->getModuleEditor('comment', $this->get('module_srl'), $comment_srl, 'comment_srl', 'content'); } + + /** + * @brief 작성자의 프로필 이미지를 return + **/ + function getProfileImage() { + if(!$this->isExists() || !$this->get('member_srl')) return; + $oMemberModel = &getModel('member'); + $profile_info = $oMemberModel->getProfileImage($this->get('member_srl')); + if(!$profile_info) return; + + return $profile_info->src; + } + + /** + * @brief 작성자의 서명을 return + **/ + function getSignature() { + if(!$this->isExists() || !$this->get('member_srl')) return; + $oMemberModel = &getModel('member'); + $signature = $oMemberModel->getSignature($this->get('member_srl')); + return $signature; + } } ?> diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 789edce43..0c1d99b87 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -406,59 +406,75 @@ * @brief 프로필 이미지의 정보를 구함 **/ function getProfileImage($member_srl) { - $exts = array('gif','jpg','png'); - for($i=0;$i<3;$i++) { - $image_name_file = sprintf('files/member_extra_info/profile_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]); - if(file_exists($image_name_file)) { - list($width, $height, $type, $attrs) = getimagesize($image_name_file); - $info->width = $width; - $info->height = $height; - $info->src = Context::getRequestUri().$image_name_file; - $info->file = './'.$image_name_file; - return $info; + if(!isset($GLOBALS['__member_info__']['profile_image'][$member_srl])) { + $GLOBALS['__member_info__']['profile_image'][$member_srl] = null; + $exts = array('gif','jpg','png'); + for($i=0;$i<3;$i++) { + $image_name_file = sprintf('files/member_extra_info/profile_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]); + if(file_exists($image_name_file)) { + list($width, $height, $type, $attrs) = getimagesize($image_name_file); + $info->width = $width; + $info->height = $height; + $info->src = Context::getRequestUri().$image_name_file; + $info->file = './'.$image_name_file; + $GLOBALS['__member_info__']['profile_image'][$member_srl] = $info; + break; + } } } - return; + + return $GLOBALS['__member_info__']['profile_image'][$member_srl]; } /** * @brief 이미지이름의 정보를 구함 **/ function getImageName($member_srl) { - $image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); - if(!file_exists($image_name_file)) return; - list($width, $height, $type, $attrs) = getimagesize($image_name_file); - $info->width = $width; - $info->height = $height; - $info->src = Context::getRequestUri().$image_name_file; - $info->file = './'.$image_name_file; - return $info; + if(!isset($GLOBALS['__member_info__']['image_name'][$member_srl])) { + $image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); + if(file_exists($image_name_file)) { + list($width, $height, $type, $attrs) = getimagesize($image_name_file); + $info->width = $width; + $info->height = $height; + $info->src = Context::getRequestUri().$image_name_file; + $info->file = './'.$image_name_file; + $GLOBALS['__member_info__']['image_name'][$member_srl] = $info; + } else $GLOBALS['__member_info__']['image_name'][$member_srl] = null; + } + return $GLOBALS['__member_info__']['image_name'][$member_srl]; } /** * @brief 이미지마크의 정보를 구함 **/ function getImageMark($member_srl) { - $image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); - if(!file_exists($image_mark_file)) return; - list($width, $height, $type, $attrs) = getimagesize($image_mark_file); - $info->width = $width; - $info->height = $height; - $info->src = Context::getRequestUri().$image_mark_file; - $info->file = './'.$image_mark_file; - return $info; + if(!isset($GLOBALS['__member_info__']['image_mark'][$member_srl])) { + $image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); + if(file_exists($image_mark_file)) { + list($width, $height, $type, $attrs) = getimagesize($image_mark_file); + $info->width = $width; + $info->height = $height; + $info->src = Context::getRequestUri().$image_mark_file; + $info->file = './'.$image_mark_file; + $GLOBALS['__member_info__']['image_mark'][$member_srl] = $info; + } else $GLOBALS['__member_info__']['image_mark'][$member_srl] = null; + } + return $GLOBALS['__member_info__']['image_mark'][$member_srl]; } /** * @brief 사용자의 signature를 구함 **/ function getSignature($member_srl) { - $filename = sprintf('files/member_extra_info/signature/%s%d.signature.php', getNumberingPath($member_srl), $member_srl); - if(!file_exists($filename)) return ''; - - $buff = FileHandler::readFile($filename); - $signature = trim(substr($buff, 40)); - return $signature; + if(!isset($GLOBALS['__member_info__']['signature'][$member_srl])) { + $filename = sprintf('files/member_extra_info/signature/%s%d.signature.php', getNumberingPath($member_srl), $member_srl); + if(file_exists($filename)) { + $buff = FileHandler::readFile($filename); + $signature = trim(substr($buff, 40)); + $GLOBALS['__member_info__']['signature'][$member_srl] = $signature; + } else $GLOBALS['__member_info__']['signature'][$member_srl] = null; + } + return $GLOBALS['__member_info__']['signature'][$member_srl]; } /** From f18e739563165710c091574f2329247026cfb90a Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 24 Jan 2008 05:38:11 +0000 Subject: [PATCH 145/278] =?UTF-8?q?xe=5Fboard=EC=9D=98=20=EA=B2=8C?= =?UTF-8?q?=EC=8B=9C=EA=B8=80/=EB=8C=93=EA=B8=80=20=ED=8C=9D=EC=97=85?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EC=95=88=20?= =?UTF-8?q?=EB=B3=B4=EC=9D=B4=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0.=20=EB=8C=93=EA=B8=80=EC=9D=98=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=EC=8B=9C=20alt=EA=B0=92=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3586 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/comment.html | 2 +- modules/board/skins/xe_board/comment.html | 2 +- modules/board/skins/xe_board/css/common.css | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/board/skins/cozy_board/comment.html b/modules/board/skins/cozy_board/comment.html index 242c77e21..0b104346f 100644 --- a/modules/board/skins/cozy_board/comment.html +++ b/modules/board/skins/cozy_board/comment.html @@ -54,7 +54,7 @@ - + profile {$comment->getContent(true)} diff --git a/modules/board/skins/xe_board/comment.html b/modules/board/skins/xe_board/comment.html index 141a1c869..87f648545 100644 --- a/modules/board/skins/xe_board/comment.html +++ b/modules/board/skins/xe_board/comment.html @@ -64,7 +64,7 @@ - + profile {$comment->getContent(true)} diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 74688c69a..d0033c94c 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -45,7 +45,7 @@ Jeong, Chan Myeong 070601~070630 /* boardRead */ .viewDocument { border-bottom:2px solid #AAAAAA; margin-bottom:20px; } -.boardRead { margin:0 0 10px 0; } +.boardRead { margin:10px 0 10px 0; } .boardRead .titleAndUser { overflow:hidden; border-bottom:1px solid #e0e1db; } @@ -290,8 +290,8 @@ Jeong, Chan Myeong 070601~070630 /* 게시물의 팝업 메뉴 */ -.comment_popup_menu, .document_popup_menu { text-align:right; background:url(../images/common/document_menu.gif) no-repeat right top; padding-right:16px; } -.comment_popup_menu span, .document_popup_menu span { cursor:pointer; display:inline; background:none; padding:0 0 0 0; margin:0 0 0 0; } +.comment_popup_menu, .document_popup_menu { text-align:right; background:none; background:url(../images/common/document_menu.gif) no-repeat right top; padding:0 15px; 0 0; } +.comment_popup_menu span, .document_popup_menu span { cursor:pointer; display:inline; } /* tag list */ .tagsBox { border:1px solid #EEEEEE; padding:10px; overflow:hidden;} From f9c41b78fd192872509ab4c4c23dd7e63dbf2acd Mon Sep 17 00:00:00 2001 From: supershop Date: Thu, 24 Jan 2008 08:24:57 +0000 Subject: [PATCH 146/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3587 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_guestbook/skin.xml | 9 ++++++- modules/editor/lang/en.lang.php | 32 +++++++++++------------ widgets/category/skins/default/skin.xml | 4 +++ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/modules/board/skins/xe_guestbook/skin.xml b/modules/board/skins/xe_guestbook/skin.xml index 026833174..7680113b4 100644 --- a/modules/board/skins/xe_guestbook/skin.xml +++ b/modules/board/skins/xe_guestbook/skin.xml @@ -1,15 +1,18 @@ 방명록 기본 스킨 - 留言本默认皮肤 + 留言本默认皮肤 ゲストブックのデフォルトスキン + Zeroboard XE Basic Guestbook Skin 제로 Zero Zero + Zero board모듈의 default스킨 留言本模块的默认皮肤。 ボード(board)モジュールのデフォルトスキンです。 + This is the basic guestbook skin of Zeroboard XE. @@ -48,17 +51,21 @@ 제목 标题 タイトル + Title 방명록의 제목을 적어주세요. 请输入留言本标题。 ゲストブックのタイトルを入力してください。 + Please input the title of guestbook. 방명록 설명 留言本说明 ゲストブックの説明 + Description 내용의 기본값 内容默认值 内容のデフォルト値 + Default value of content diff --git a/modules/editor/lang/en.lang.php b/modules/editor/lang/en.lang.php index bb7484731..57de40d54 100644 --- a/modules/editor/lang/en.lang.php +++ b/modules/editor/lang/en.lang.php @@ -28,23 +28,23 @@ $lang->cmd_disable = "Inactive"; $lang->cmd_enable = "Active"; - $lang->editor_skin = '에디터 스킨'; - $lang->upload_file_grant = '파일 첨부 권한'; - $lang->enable_default_component_grant = '기본 컴포넌트 사용 권한'; - $lang->enable_component_grant = '컴포넌트 사용 권한'; - $lang->enable_html_grant = 'HTML편집 권한'; - $lang->enable_autosave = '자동저장 사용'; - $lang->height_resizable = '높이 조절 가능'; - $lang->editor_height = '에디터 높이'; + $lang->editor_skin = 'Editor Skin'; + $lang->upload_file_grant = 'Permission for uploading'; + $lang->enable_default_component_grant = 'Permission of using default components'; + $lang->enable_component_grant = 'Permission of using components'; + $lang->enable_html_grant = 'Permission of using HTML'; + $lang->enable_autosave = 'Use auto-save'; + $lang->height_resizable = 'Height Resizable'; + $lang->editor_height = 'Height of Editor'; - $lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다'; - $lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)'; - $lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다'; - $lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다'; - $lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.'; - $lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다'; + $lang->about_editor_skin = 'You may select the skin of editor.'; + $lang->about_upload_file_grant = 'You may set the permission of file attaching. (Everyone would have permission if nothing checked)'; + $lang->about_default_component_grant = 'You may set the permission of using default components of editor. (Everyone would have permission if nothing checked)'; + $lang->about_component_grant = 'You may set the permission of using expanded components of editor. (Everyone would have permission if nothing checked)'; + $lang->about_editor_height = 'You may set the height of editor.'; + $lang->about_editor_height_resizable = 'Permit to resize the height of editor.'; + $lang->about_enable_html_grant = 'You may give the permission of using HTML'; + $lang->about_enable_autosave = 'You may enable the auto-save function while writing articles.'; $lang->edit->fontname = 'Font'; $lang->edit->fontsize = 'Size'; diff --git a/widgets/category/skins/default/skin.xml b/widgets/category/skins/default/skin.xml index f53104716..edb3d5ac5 100644 --- a/widgets/category/skins/default/skin.xml +++ b/widgets/category/skins/default/skin.xml @@ -1,13 +1,17 @@ 분류 출력 기본 스킨 + Default Skin of Category Widget 제로 + Zero 게시글 분류를 출력하는 기본 스킨입니다 + This is a widget that displays categories of articles. 기본 컬러 + Default Color From 8ac478e55212c3674d16cc1df98e0443fea9b4a9 Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 24 Jan 2008 08:25:50 +0000 Subject: [PATCH 147/278] ticket:324 . Fixed lifepod module git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3588 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/lifepod.model.php | 11 +++++--- modules/lifepod/lifepod.view.php | 45 ++++++++++++++++++------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/modules/lifepod/lifepod.model.php b/modules/lifepod/lifepod.model.php index f41eff6f4..179568991 100644 --- a/modules/lifepod/lifepod.model.php +++ b/modules/lifepod/lifepod.model.php @@ -31,15 +31,15 @@ return $oReqeust; } - function getURL($address, $start, $end) { - return sprintf("%s&start=%s&end=%s", $address, $start, $end); + function getURL($address, $start, $end, $pageNumber) { + return sprintf("%s&start=%s&end=%s&page=%d", $address, $start, $end, $pageNumber); } /** * @brief lifepod 페이지 정보 가져오기 * @remarks 한해씩 끊어서 페이지를 가져옵니다. 아직 50개 이상의 calendar info가 있는 경우 앞에 것만 가져오는 문제가 있습니다. **/ - function getPage($address, $year) { + function getPage($address, $year, $pageNumber) { if($year == null) { $year = date("Y"); @@ -48,7 +48,7 @@ $start = sprintf("%s-01-01",$year); $end = sprintf("%s-01-01",$year+1); - $url = $this->getURL($address, $start, $end); + $url = $this->getURL($address, $start, $end, $pageNumber); $oReqeust = $this->getRequest($url); $oResponse = $oReqeust->sendRequest(); @@ -77,6 +77,9 @@ $page->data[] = $data; } $page->color = $xmldoc->childNodes["feed"]->childNodes["color"]->body; + $page->total = intval($xmldoc->childNodes["feed"]->childNodes["opensearch:totalresults"]->body); + $page->start = intval($xmldoc->childNodes["feed"]->childNodes["opensearch:startindex"]->body); + $page->perpage = intval($xmldoc->childNodes["feed"]->childNodes["opensearch:itemsperpage"]->body); return $page; } diff --git a/modules/lifepod/lifepod.view.php b/modules/lifepod/lifepod.view.php index bd5261e23..44edd44c6 100644 --- a/modules/lifepod/lifepod.view.php +++ b/modules/lifepod/lifepod.view.php @@ -53,28 +53,35 @@ foreach($caladdresses as $key=>$val) { - $page = $oLifepodModel->getPage($val, $cYear, $cMonth, $cDay); - for($j=0;$jdata);$j++) - { - $data = &$page->data[$j]; - if($data->childNodes["date-start"]) + $shouldGetMore = false; + $pageNumber = 1; + $page = null; + do { + $page = $oLifepodModel->getPage($val, $cYear, $pageNumber); + if(!$page) break; + for($j=0;$jdata);$j++) { - $data->childNodes["date-start"]->body = $this->dateFormatChange($data->childNodes["date-start"]->body); - } + $data = &$page->data[$j]; + if($data->childNodes["date-start"]) + { + $data->childNodes["date-start"]->body = $this->dateFormatChange($data->childNodes["date-start"]->body); + } - if($data->childNodes["date-end"]) - { - $plus = 0; - if($data->childNodes["type"]->body == "daylong") - $plus = -1; - $data->childNodes["date-end"]->body = $this->dateFormatChange($data->childNodes["date-end"]->body, $plus); - } + if($data->childNodes["date-end"]) + { + $plus = 0; + if($data->childNodes["type"]->body == "daylong") + $plus = -1; + $data->childNodes["date-end"]->body = $this->dateFormatChange($data->childNodes["date-end"]->body, $plus); + } - $data->childNodes["description"]->body = str_replace("\n", "
    ", $data->childNodes["description"]->body); - $data->childNodes["description"]->body = str_replace("'", "\'", $data->childNodes["description"]->body); - $data->childNodes["title"]->body = str_replace("'", "\'", $data->childNodes["title"]->body); - } - $calendars[] = $page; + $data->childNodes["description"]->body = str_replace("\n", "
    ", $data->childNodes["description"]->body); + $data->childNodes["description"]->body = str_replace("'", "\'", $data->childNodes["description"]->body); + $data->childNodes["title"]->body = str_replace("'", "\'", $data->childNodes["title"]->body); + } + $calendars[] = $page; + $pageNumber++; + } while ( $page->start + $page->perpage - 1 < $page->total ); } Context::set('calendars', $calendars); From 9d3c3faf7fbfe0c4e6a8555a93cafd0deb667d14 Mon Sep 17 00:00:00 2001 From: haojilin Date: Fri, 25 Jan 2008 04:42:25 +0000 Subject: [PATCH 148/278] modules/editor/lang/zh-CN.lang.php git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3589 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/lang/zh-CN.lang.php | 32 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/editor/lang/zh-CN.lang.php b/modules/editor/lang/zh-CN.lang.php index 813aa8273..5f0570ec7 100644 --- a/modules/editor/lang/zh-CN.lang.php +++ b/modules/editor/lang/zh-CN.lang.php @@ -28,23 +28,23 @@ $lang->cmd_disable = "非激活"; $lang->cmd_enable = "激活"; - $lang->editor_skin = '에디터 스킨'; - $lang->upload_file_grant = '파일 첨부 권한'; - $lang->enable_default_component_grant = '기본 컴포넌트 사용 권한'; - $lang->enable_component_grant = '컴포넌트 사용 권한'; - $lang->enable_html_grant = 'HTML편집 권한'; - $lang->enable_autosave = '자동저장 사용'; - $lang->height_resizable = '높이 조절 가능'; - $lang->editor_height = '에디터 높이'; + $lang->editor_skin = '编辑器皮肤'; + $lang->upload_file_grant = '文件上传权限'; + $lang->enable_default_component_grant = '基本组件使用权限'; + $lang->enable_component_grant = '组件使用权限'; + $lang->enable_html_grant = 'HTML编辑权限'; + $lang->enable_autosave = '使用自动保存'; + $lang->height_resizable = '使用高度调整'; + $lang->editor_height = '编辑器高度'; - $lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다'; - $lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)'; - $lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다'; - $lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다'; - $lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.'; - $lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다'; + $lang->about_editor_skin = '可以选择编辑器皮肤。'; + $lang->about_upload_file_grant = '可以设置上传文件的权限。 (全部解除时任何用户都可以上传文件)'; + $lang->about_default_component_grant = '可以指定在编辑器基本组件的使用权限。 (全部解除时任何用户都可以使用)'; + $lang->about_component_grant = '可以指定除了基本组件外的扩展组件使用的权限。 (全部解除时任何用户都可以使用)'; + $lang->about_editor_height = '可以指定编辑器的基本高度。'; + $lang->about_editor_height_resizable = '允许直接变更编辑器的高度。'; + $lang->about_enable_html_grant = '用HTML代码编辑的权限。'; + $lang->about_enable_autosave = '发表主题时激活自动保存内容的功能。'; $lang->edit->fontname = '字体'; $lang->edit->fontsize = '大小'; From 0ce327c2d15cd4369d2edb0603c36a48f00cf797 Mon Sep 17 00:00:00 2001 From: haojilin Date: Fri, 25 Jan 2008 04:57:52 +0000 Subject: [PATCH 149/278] zh-CN(widgets/category/skins/default/skin.xml) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3590 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/category/skins/default/skin.xml | 38 ++++++++++++++----------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/widgets/category/skins/default/skin.xml b/widgets/category/skins/default/skin.xml index edb3d5ac5..7317ad2ff 100644 --- a/widgets/category/skins/default/skin.xml +++ b/widgets/category/skins/default/skin.xml @@ -1,17 +1,21 @@ - - - 분류 출력 기본 스킨 - Default Skin of Category Widget - - 제로 - Zero - 게시글 분류를 출력하는 기본 스킨입니다 - This is a widget that displays categories of articles. - - - - 기본 컬러 - Default Color - - - + + + 분류 출력 기본 스킨 + Default Skin of Category Widget + 分类输出基本皮肤 + + 제로 + Zero + Zero + 게시글 분류를 출력하는 기본 스킨입니다 + This is a widget that displays categories of articles. + 输出主题分类的基本皮肤 + + + + 기본 컬러 + Default Color + 默认颜色 + + + From 2b36184311cdd667586265c1891b4618b0fed223 Mon Sep 17 00:00:00 2001 From: haojilin Date: Fri, 25 Jan 2008 05:15:24 +0000 Subject: [PATCH 150/278] zh-CN(modules/editor/skins/textarea/skin.xml) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3591 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/textarea/skin.xml | 31 ++++++++++++++++---------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/modules/editor/skins/textarea/skin.xml b/modules/editor/skins/textarea/skin.xml index c2b0f9147..8bae91a6c 100644 --- a/modules/editor/skins/textarea/skin.xml +++ b/modules/editor/skins/textarea/skin.xml @@ -1,12 +1,19 @@ - - - 제로보드XE textarea 에디터 스킨 - - zero - - 위지윅에디터가 아닌 가벼운 글 편집을 원할 경우 사용되는 스킨입니다. - 에디터컴포넌트나 파일첨부등의 기능이 모두 되지 않고 단순히 글로 된 컨텐츠만 사용할 수 있습니다. - 개발 : zero (http://www.zeroboard.com) - - - + + + 제로보드XE textarea 에디터 스킨 + zeroboard XE textarea 编辑器皮肤 + + zero + zero + + 위지윅에디터가 아닌 가벼운 글 편집을 원할 경우 사용되는 스킨입니다. + 에디터컴포넌트나 파일첨부등의 기능이 모두 되지 않고 단순히 글로 된 컨텐츠만 사용할 수 있습니다. + 개발 : zero (http://www.zeroboard.com) + + + 适用于纯文本形式输入内容时使用的皮肤。 + 不支持编辑器组件和上传文件的功能,可使用在纯文本形式的内容。 + 开发 : zero (http://www.zeroboard.com) + + + From b0d44dfdfdb63aa35275faa0ea26a4491ed79ace Mon Sep 17 00:00:00 2001 From: haojilin Date: Fri, 25 Jan 2008 05:16:36 +0000 Subject: [PATCH 151/278] zh-CN(modules/editor/skins/textarea/skin.xml) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3592 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/textarea/skin.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/skins/textarea/skin.xml b/modules/editor/skins/textarea/skin.xml index 8bae91a6c..7a3d79e20 100644 --- a/modules/editor/skins/textarea/skin.xml +++ b/modules/editor/skins/textarea/skin.xml @@ -10,7 +10,7 @@ 에디터컴포넌트나 파일첨부등의 기능이 모두 되지 않고 단순히 글로 된 컨텐츠만 사용할 수 있습니다. 개발 : zero (http://www.zeroboard.com) - + 适用于纯文本形式输入内容时使用的皮肤。 不支持编辑器组件和上传文件的功能,可使用在纯文本形式的内容。 开发 : zero (http://www.zeroboard.com) From dcc062f8041e142e872e8f14a35b534efad37535 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 25 Jan 2008 07:57:28 +0000 Subject: [PATCH 152/278] =?UTF-8?q?=EC=99=B8=EB=B6=80=20CSS=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=A0=20=EB=95=8C=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=ED=8C=90=EB=8B=A8=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20css=EB=A5=BC=20=EC=97=B0=EA=B2=B0=ED=95=98=EC=A7=80?= =?UTF-8?q?=20=EC=95=8A=EB=8D=98=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3593 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 5 ++--- classes/optimizer/Optimizer.class.php | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 1833eaa37..1a5a492ea 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -713,8 +713,7 @@ **/ function _addJsFile($file) { if(in_array($file, $this->js_files)) return; - - if(!preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file)); + //if(!preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file)); $this->js_files[] = $file; } @@ -749,7 +748,7 @@ function _addCSSFile($file) { if(in_array($file, $this->css_files)) return; - if(preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file)); + //if(preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file)); $this->css_files[] = $file; } diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index b203cf0e1..6c5c01376 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -42,7 +42,7 @@ foreach($source_files as $file) { if(!$file) continue; $file = str_replace("\\","/",$file); - if(substr($file,7)=='http://' || $file == './common/css/button.css') $files[] = $file; + if(preg_match('/^http:\/\//i', $file) || $file == './common/css/button.css') $files[] = $file; else $targets[] = $file; } From bfce1b5dbb9a3d87c043e778e4952fd2142a8b40 Mon Sep 17 00:00:00 2001 From: haojilin Date: Sat, 26 Jan 2008 03:54:23 +0000 Subject: [PATCH 153/278] =?UTF-8?q?=EC=A4=91=EA=B5=AD=EC=96=B4=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EB=AA=85=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3594 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/referer/lang/zh-CN.lang.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 modules/referer/lang/zh-CN.lang.php diff --git a/modules/referer/lang/zh-CN.lang.php b/modules/referer/lang/zh-CN.lang.php new file mode 100644 index 000000000..447c65280 --- /dev/null +++ b/modules/referer/lang/zh-CN.lang.php @@ -0,0 +1,10 @@ + + * @brief Korean language pack + */ + + $lang->referer = "点击来源"; + $lang->ranking = "访问次数"; +?> From 97006a51d31ed17325b4a7d14598862f3d5e88d6 Mon Sep 17 00:00:00 2001 From: haojilin Date: Sat, 26 Jan 2008 04:30:50 +0000 Subject: [PATCH 154/278] =?UTF-8?q?=EC=A4=91=EA=B5=AD=EC=96=B4=20-=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=B6=80=EB=B6=84=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3595 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/referer/lang/zh-CN.php | 10 ---------- widgets/category/conf/info.xml | 35 +++++++++++++++++++--------------- 2 files changed, 20 insertions(+), 25 deletions(-) delete mode 100644 modules/referer/lang/zh-CN.php diff --git a/modules/referer/lang/zh-CN.php b/modules/referer/lang/zh-CN.php deleted file mode 100644 index 447c65280..000000000 --- a/modules/referer/lang/zh-CN.php +++ /dev/null @@ -1,10 +0,0 @@ - - * @brief Korean language pack - */ - - $lang->referer = "点击来源"; - $lang->ranking = "访问次数"; -?> diff --git a/widgets/category/conf/info.xml b/widgets/category/conf/info.xml index b1aa90f58..30ab9f288 100644 --- a/widgets/category/conf/info.xml +++ b/widgets/category/conf/info.xml @@ -1,15 +1,20 @@ - - - 게시글 분류 출력기 - - 제로 - 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. - - - - 대상 모듈 - mid_list - 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. - - - + + + 게시글 분류 출력기 + 输出主题分类 + + 제로 + zero + 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. + 把论坛等文本模块的分类在使用的模块里抽出分类后输出类似于博客分类的功能。 + + + + 대상 모듈 + 对象模块 + mid_list + 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. + 将把被选模块当中的主题作为对象。请选择一个模块。 + + + From 76f682d587784f64553241d7666bca300c975d25 Mon Sep 17 00:00:00 2001 From: haojilin Date: Sat, 26 Jan 2008 04:59:04 +0000 Subject: [PATCH 155/278] =?UTF-8?q?=EC=A4=91=EA=B5=AD=EC=96=B4=20-=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=B6=80=EB=B6=84=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3596 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/forum/conf/info.xml | 182 +++++++++++++-------------- widgets/forum/skins/default/skin.xml | 66 +++++----- 2 files changed, 124 insertions(+), 124 deletions(-) diff --git a/widgets/forum/conf/info.xml b/widgets/forum/conf/info.xml index c15cbf9bd..3aed7004a 100644 --- a/widgets/forum/conf/info.xml +++ b/widgets/forum/conf/info.xml @@ -1,91 +1,91 @@ - - - 포럼형 최근 게시물 - 포럼형 최근 게시물 - 포럼형 최근 게시물 - 포럼형 최근 게시물 - 포럼형 최근 게시물 - 포럼형 최근 게시물 - - 제로 - zero - zero - zero - zero - zero - - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. - - - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. - - - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. - - - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. - - - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. - - - - - 제목 - 栏目名 - タイトル - Title - Título - Заголовок - text - - - new 표시 시간 (hours) - new图标显示时间(hours) - Newの表示時間 (Hours) - Duration of indication for new item - Длительность индикации для новых объектов - text - 새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. (시간 단위) - 可以设置最新更新主题的new图标显示时间。 - 新しく登録された書き込みに対して「New」の表示時間を指定します(時間単位)。 - You may set the duration of indication for fresh item. (unit is hour) - Вы можете установить длительность индикации для нового объекта. (единица - час) - - - 제목 글자수 - タイトルの文字数 - 标题字数 - Length of Subject - Número de letras del título - Длина темы - text - 제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다) - タイトルの文字数が指定できます(「0」または空欄の場合は、文字数を制限しません)。 - 可以设置标题的字数。(0或留空为不限) - Length of Subject can be assigned. (0 or blank value will not restrict the length) - El largo del título puede ser asignado. (valor 0 o en blanco no restringe el largo) - Длина темы может быть присвоена. (0 или пустое значение не будут ограничивать длину) - - - 대상 모듈 - 模块对象 - モジュール - Target Module - Módulo Objetivo - Модуль назначения - mid_list - 선택하신 모듈에 등록된 글을 대상으로 합니다. - 将把被选模块当中的主题作为对象。 - チェックされたモジュールに登録されたコンテンツ(書き込み)を対象とします。 - The target articles to be sorted will be the ones submitted in the selected module. - El objetivo de los documentos agregados serán los del módulo selccionado. - Статьи назначения для сортировки будут теми, что были размещены в выбранном модуле. - - - + + + 포럼형 최근 게시물 + 论坛型最新主题列表 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + + 제로 + zero + zero + zero + zero + zero + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 把一个或多个版面输出类似于论坛形式的控件。 + 利用对象版面里设定的主题和说明显示。 + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + + + 제목 + 栏目名 + タイトル + Title + Título + Заголовок + text + + + new 표시 시간 (hours) + new图标显示时间(hours) + Newの表示時間 (Hours) + Duration of indication for new item + Длительность индикации для новых объектов + text + 새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. (시간 단위) + 可以设置最新更新主题的new图标显示时间。 + 新しく登録された書き込みに対して「New」の表示時間を指定します(時間単位)。 + You may set the duration of indication for fresh item. (unit is hour) + Вы можете установить длительность индикации для нового объекта. (единица - час) + + + 제목 글자수 + タイトルの文字数 + 标题字数 + Length of Subject + Número de letras del título + Длина темы + text + 제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다) + タイトルの文字数が指定できます(「0」または空欄の場合は、文字数を制限しません)。 + 可以设置标题的字数。(0或留空为不限) + Length of Subject can be assigned. (0 or blank value will not restrict the length) + El largo del título puede ser asignado. (valor 0 o en blanco no restringe el largo) + Длина темы может быть присвоена. (0 или пустое значение не будут ограничивать длину) + + + 대상 모듈 + 模块对象 + モジュール + Target Module + Módulo Objetivo + Модуль назначения + mid_list + 선택하신 모듈에 등록된 글을 대상으로 합니다. + 将把被选模块当中的主题作为对象。 + チェックされたモジュールに登録されたコンテンツ(書き込み)を対象とします。 + The target articles to be sorted will be the ones submitted in the selected module. + El objetivo de los documentos agregados serán los del módulo selccionado. + Статьи назначения для сортировки будут теми, что были размещены в выбранном модуле. + + + diff --git a/widgets/forum/skins/default/skin.xml b/widgets/forum/skins/default/skin.xml index 49b25ddb0..8c81ce100 100644 --- a/widgets/forum/skins/default/skin.xml +++ b/widgets/forum/skins/default/skin.xml @@ -1,33 +1,33 @@ - - - 기본 포럼형 위젯 스킨 - 기본 포럼형 위젯 스킨 - 기본 포럼형 위젯 스킨 - 기본 포럼형 위젯 스킨 - - 제로 - zero - zero - zero - - 포럼형 위젯의 기본 스킨입니다. - - - 포럼형 위젯의 기본 스킨입니다. - - - 포럼형 위젯의 기본 스킨입니다. - - - 포럼형 위젯의 기본 스킨입니다. - - - - - 흰색 바탕용 - 白い背景用 - 白色背景 - White Background - - - + + + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + 基本论坛型控件皮肤 + 기본 포럼형 위젯 스킨 + + 제로 + zero + zero + zero + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + 论坛型控件的基本皮肤。 + + + 포럼형 위젯의 기본 스킨입니다. + + + + + 흰색 바탕용 + 白い背景用 + 白色背景 + White Background + + + From 138f98dd3e076e519629b9827246dd63d49fa3af Mon Sep 17 00:00:00 2001 From: supershop Date: Sat, 26 Jan 2008 10:10:40 +0000 Subject: [PATCH 156/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3597 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/install/lang/en.lang.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/install/lang/en.lang.php b/modules/install/lang/en.lang.php index 543d2f0c4..97a46d811 100644 --- a/modules/install/lang/en.lang.php +++ b/modules/install/lang/en.lang.php @@ -172,13 +172,13 @@ EndOfLicense; $lang->about_database_file = 'Sqlite saves data in the file. Location of the database file should be unreachable by web
    Data file should be inside the permission of 707.'; - $lang->success_installed = 'Installation Complete'; - $lang->success_updated = 'Update Complete'; + $lang->success_installed = 'Installation has been completed'; + $lang->success_updated = 'Update has been completed'; - $lang->msg_cannot_proc = 'Unabled to execute the request because installation environment is not provided'; + $lang->msg_cannot_proc = 'Installation environment is not proper to proceed.'; $lang->msg_already_installed = 'Zeroboard is already installed'; $lang->msg_dbconnect_failed = "Error has occurred while connecting DB.\nPlease check DB information again"; $lang->msg_table_is_exists = "Table is already created in the DB.\nConfig file is recreated"; - $lang->msg_install_completed = "Installation complete.\nThank you for choosing ZeroboardXE"; - $lang->msg_install_failed = "Error has occurred while creating installation file."; + $lang->msg_install_completed = "Installation has been completed.\nThank you for choosing Zeroboard XE"; + $lang->msg_install_failed = "An error has occurred while creating installation file."; ?> From 204cdd9b12a62f1659a6f310cc14c1bc88c0120e Mon Sep 17 00:00:00 2001 From: bnu Date: Sun, 27 Jan 2008 07:41:43 +0000 Subject: [PATCH 157/278] =?UTF-8?q?menu=20module=EC=97=90=EC=84=9C=20'<=3F?= =?UTF-8?q?'=20->=20'<=3Fphp'=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3598 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/menu/menu.admin.controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index a6abf4d62..9b07c68ba 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -421,14 +421,14 @@ if($active_btn) $active_str = sprintf('onmousedown="this.src=\'%s\'"', $active_btn); else $active_str = ''; $link = sprintf('<img src="%s" onmouseout="this.src=\'%s\'" alt="" %s %s %s />', $normal_btn, $normal_btn, $hover_str, $active_str, $classname); } else { - $link = ''; + $link = ''; } // node->group_srls값이 있으면 if($group_srls) $group_check_code = sprintf('($_is_admin==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( - 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" link="%s"', + 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" link="%s"', $menu_item_srl, $node->parent_srl, $group_check_code, From b1b242f5999c597884770ab9702c8d512023804b Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 01:40:22 +0000 Subject: [PATCH 158/278] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=EC=9D=98=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=AA=BD=EC=A7=80=20=EC=88=98=EC=8B=A0=20?= =?UTF-8?q?=EC=97=AC=EB=B6=80=EC=99=80=20=EC=83=81=EA=B4=80=EC=97=86?= =?UTF-8?q?=EC=9D=B4=20=EB=A9=94=EC=84=B8=EC=A7=80=EB=A5=BC=20=EB=B3=B4?= =?UTF-8?q?=EB=82=BC=20=EC=88=98=20=EC=9E=88=EA=B2=8C=20=ED=95=98=EA=B3=A0?= =?UTF-8?q?=20=ED=9A=8C=EC=9B=90=20=EC=9D=B4=EB=A6=84=20=ED=81=B4=EB=A6=AD?= =?UTF-8?q?=EC=8B=9C=20=EB=82=98=ED=83=80=EB=82=98=EB=8A=94=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=20=EB=A9=94=EB=89=B4=EC=9D=98=20span=EC=9D=84=20div?= =?UTF-8?q?=EB=A1=9C=20=ED=95=98=EC=97=AC=20=EA=B8=80=EA=B3=BC=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=EC=9D=B4=20=EA=B2=B9=EC=B9=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3599 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/member_extra_info.addon.php | 5 ++++- common/css/default.css | 6 +++--- common/js/common.js | 4 ++-- modules/member/member.controller.php | 12 +++++++----- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/addons/member_extra_info/member_extra_info.addon.php b/addons/member_extra_info/member_extra_info.addon.php index 815c44ae1..fecf0162d 100644 --- a/addons/member_extra_info/member_extra_info.addon.php +++ b/addons/member_extra_info/member_extra_info.addon.php @@ -85,9 +85,12 @@ // 대상 회원의 정보를 가져옴 $target_member_info = $this->getMemberInfoByMemberSrl($member_srl); if(!$target_member_info->member_srl) return; + + // 로그인된 사용자 정보를 구함 + $logged_info = Context::get('logged_info'); // 4. 쪽지 발송 메뉴를 만듬 - if( $target_member_info->allow_message =='Y' || ($target_member_info->allow_message == 'F' && $this->isFriend($member_srl))) { + if( $logged_info->is_admin == 'Y' || $target_member_info->allow_message =='Y' || ($target_member_info->allow_message == 'F' && $this->isFriend($member_srl))) { $menu_str = Context::getLang('cmd_send_message'); $menu_link = sprintf('%s?module=member&act=dispMemberSendMessage&receiver_srl=%s',Context::getRequestUri(),$member_srl); $menu_list .= sprintf("\n%s,%s,popopen('%s','sendMessage')", Context::getRequestUri().'/modules/member/tpl/images/icon_write_message.gif', $menu_str, $menu_link); diff --git a/common/css/default.css b/common/css/default.css index 6465e2b00..a656b7b81 100644 --- a/common/css/default.css +++ b/common/css/default.css @@ -101,6 +101,6 @@ div.xe_content blockquote { margin-left:40px; !important} #fororiginalimage { z-index:1002; } #closeOriginalImageBtn { position:absolute; right:8px; top:5px; cursor:pointer; width:50px; height:12px; z-index:1003; } #popup_menu_area { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; } -#popup_menu_area .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; line-height:22px;} -#popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; white-space:nowrap; height:22px;} -#popup_menu_area .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; height:22px; letter-spacing:-1px; white-space:nowrap;} +#popup_menu_area .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; } +#popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; white-space:nowrap; } +#popup_menu_area .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; letter-spacing:-1px; white-space:nowrap;} diff --git a/common/js/common.js b/common/js/common.js index 8869a064f..91b8190c9 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -596,8 +596,8 @@ function displayPopupMenu(ret_obj, response_tags, params) { if(!str || !func) continue; - if(icon) html += ""+str+"
    "; - else html += ""+str+"
    "; + if(icon) html += "
    "+str+"
    "; + else html += "
    "+str+"

    "; } } loaded_popup_menu_list[menu_id] = html; diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 5be4d1353..c6515a6ce 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -167,11 +167,13 @@ $receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); if($receiver_member_info->member_srl != $receiver_srl) return new Object(-1, 'msg_not_exists_member'); - // 받을 회원의 쪽지 수신여부 검사 - if($receiver_member_info->allow_message == 'F') { - if(!$oMemberModel->isFriend($receiver_member_info->member_srl)) return new object(-1, 'msg_allow_message_to_friend'); - } elseif($receiver_member_info->allow_messge == 'N') { - return new object(-1, 'msg_disallow_message'); + // 받을 회원의 쪽지 수신여부 검사 (최고관리자이면 패스) + if($logged_info->is_admin != 'Y') { + if($receiver_member_info->allow_message == 'F') { + if(!$oMemberModel->isFriend($receiver_member_info->member_srl)) return new object(-1, 'msg_allow_message_to_friend'); + } elseif($receiver_member_info->allow_messge == 'N') { + return new object(-1, 'msg_disallow_message'); + } } // 쪽지 발송 From f55bab7222cde3a4947c36f957d747d362e37c5c Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 01:48:40 +0000 Subject: [PATCH 159/278] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83?= =?UTF-8?q?=EC=8B=9C=EC=97=90=20session=5Fdestroy()=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=EB=A1=9C=20=EC=84=B8=EC=85=98=20=ED=8C=8C=EA=B8=B0=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=B6=94=EA=B0=80.=20-=20=EB=9F=AD?= =?UTF-8?q?=EC=8A=A4=EB=8B=98=20=EC=9D=98=EA=B2=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3600 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index c6515a6ce..9c73c7f31 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -1579,6 +1579,7 @@ foreach($_SESSION as $key => $val) { $_SESSION[$key] = ''; } + session_destroy(); } } ?> From 78b76b949bf3a8b1778a6d32f1839dcbdbe1b495 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 02:42:44 +0000 Subject: [PATCH 160/278] =?UTF-8?q?=EC=AA=BD=EC=A7=80=20=EB=82=B4=EC=9A=A9?= =?UTF-8?q?=20=EB=B3=BC=EB=95=8C=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=A6=AC?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EC=A6=88=20=EB=B0=8F=20ul/ol=EA=B3=BC=20?= =?UTF-8?q?=EA=B0=99=EC=9D=80=20style=EC=9D=B4=20=EC=A0=9C=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=81=EC=9A=A9=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3601 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/css/common.css | 2 +- modules/member/skins/default/member_messages.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/member/skins/default/css/common.css b/modules/member/skins/default/css/common.css index 2ee2845e2..73cb98b00 100644 --- a/modules/member/skins/default/css/common.css +++ b/modules/member/skins/default/css/common.css @@ -84,7 +84,7 @@ .readMessage .messageHeader address em { font-size:1em; font-style:white; color:#333333; margin-right:.3em; float:left;} .readMessage .messageHeader address em a { color:#333333;} .readMessage .messageHeader address .date { font:.8em Tahoma; color:#999999; margin-left:10px;} -.readMessage .messageBody { border:1px solid #e0e1db; margin:0 1.5em 1.5em 1.5em; padding:1em; position:relative; color:#666666;} +.readMessage .messageBody { border:1px solid #e0e1db; margin:0 1.5em 1.5em 1.5em; padding:1em; color:#666666;} .readMessage .deleteOrKeep { padding:.5em 0; overflow:hidden; background:#f5f5f3; border-top:1px solid #eaebe7; _width:100%;} .instantMessage { float:right; overflow:hidden;} .instantMessage li { float:left; padding:0 .8em 0 .8em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center; list-style:none; } diff --git a/modules/member/skins/default/member_messages.html b/modules/member/skins/default/member_messages.html index b3576371e..98f386292 100644 --- a/modules/member/skins/default/member_messages.html +++ b/modules/member/skins/default/member_messages.html @@ -22,7 +22,7 @@ -
    {$message->content}
    +
    {$message->content}
    From de2a43eb433511dcc6ee94a31cfba175c4875a98 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 02:49:05 +0000 Subject: [PATCH 161/278] =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=98=EC=9D=B4=20?= =?UTF-8?q?=EC=97=86=EC=9D=84=EB=95=8C=20=EA=B3=B5=EC=9A=A9=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=20=EB=A9=94=EB=89=B4=EC=9D=98=20=EA=B0=84=EA=B2=A9?= =?UTF-8?q?=EC=9D=B4=20=EB=B2=8C=EC=96=B4=EC=A7=80=EB=8A=94=20=EA=B2=83?= =?UTF-8?q?=EC=9D=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3602 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/js/common.js b/common/js/common.js index 91b8190c9..9ca8bdede 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -597,7 +597,7 @@ function displayPopupMenu(ret_obj, response_tags, params) { if(!str || !func) continue; if(icon) html += "
    "+str+"
    "; - else html += "
    "+str+"

    "; + else html += "
    "+str+"
    "; } } loaded_popup_menu_list[menu_id] = html; From 95cfcf7f830fe3e551e62608e202d8e139fcb04e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 06:11:00 +0000 Subject: [PATCH 162/278] =?UTF-8?q?=EC=9C=84=EC=A0=AF=20=ED=95=B8=EB=93=A4?= =?UTF-8?q?=EB=A7=81=20=ED=95=98=EB=8A=94=20=EB=B6=80=EB=B6=84=EC=9D=84=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=ED=95=98=EC=97=AC=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=88=98=EC=A0=95=EC=8B=9C=20=EC=9C=84=EC=A0=AF?= =?UTF-8?q?=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=98=EA=B2=8C=20=EB=90=98?= =?UTF-8?q?=EB=A9=B4=20=ED=95=B4=EB=8B=B9=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EB=A5=BC=20=EB=8B=A4=EC=8B=9C=20=EC=9D=BD=EC=96=B4=20=ED=94=8C?= =?UTF-8?q?=EB=9E=98=EC=8B=9C=ED=8C=8C=EC=9D=BC=EB=93=B1=EC=9D=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20css=EC=9D=98=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=EA=B0=80=20=EC=97=86=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3603 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 259 +++++++++++------- modules/page/page.admin.controller.php | 3 +- modules/page/page.admin.view.php | 4 +- .../page/tpl/filter/insert_page_content.xml | 1 + modules/page/tpl/js/page_admin.js | 3 +- modules/page/tpl/page_content_modify.html | 14 +- modules/widget/tpl/add_content_widget.html | 3 +- modules/widget/tpl/js/widget.js | 37 ++- modules/widget/tpl/js/widget_admin.js | 5 +- modules/widget/widget.controller.php | 95 +------ 10 files changed, 209 insertions(+), 215 deletions(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index 5c9ba0207..c85c10960 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -13,20 +13,29 @@ * @brief 위젯 캐시 처리 **/ function getCache($sequence, $cache) { + // 위젯 캐시는 캐시 번호와 캐시 시간이 없으면 캐시하지 않는 것으로 처리함 if(!$sequence || !$cache) return; + // 캐시 디렉토리가 없으면 생성하고 return $cache_path = './files/cache/widget_cache/'; if(!is_dir($cache_path)) { FileHandler::makeDir($cache_path); return; } + // 캐시파일명을 구해서 해당 파일이 없으면 return $cache_file = sprintf('%s%d.%s.cache', $cache_path, $sequence, Context::getLangType()); if(!file_exists($cache_file)) return; - $filemtime= filemtime($cache_file); + $filemtime = filemtime($cache_file); + + // 만약 캐시파일이 widgetHandler보다 이전에 생성된 파일이면 새로 캐시해야 함 + if($filemtime < filemtime('./classes/widget/WidgetHandler.class.php')) return; + + // 캐시 파일의 수정일이 캐시시간보다 크면 새로 만들기 위해서 return if($filemtime + $cache*60 < time()) return; + // 캐시 파일 내용을 읽어서 return $output = FileHandler::readFile($cache_file); return $output; } @@ -42,130 +51,170 @@ /** * @brief 위젯을 찾아서 실행하고 결과를 출력 - *
    태그 사용 templateHandler에서 WidgetHandler::execute()를 실행하는 코드로 대체하게 된다 + * 태그 사용 templateHandler에서 WidgetHandler::execute()를 실행하는 코드로 대체하게 된다 * - * $include_info가 true일 경우 css 코드와 위젯핸들링을 위한 코드까지 포함하도록 한다 + * $include_info가 true일 경우 페이지 수정시 위젯 핸들링을 위한 코드까지 포함함 **/ function execute($widget, $args, $include_info = false) { // 디버그를 위한 위젯 실행 시간 저장 if(__DEBUG__==3) $start = getMicroTime(); - $args->style = preg_replace('/background\-image: url\(none\)/is','', $args->style); - - // widget중 widgetContent 는 page 모듈에 종속적인 위젯으로 직접 page.admin.controller.php를 호출하여 처리를 해야 함 (차후 정리 필요) - if($widget == 'widgetContent') { - $style = $args->style; - $body = base64_decode($args->body); - $widget_padding_left = $args->widget_padding_left; - $widget_padding_right = $args->widget_padding_right; - $widget_padding_top = $args->widget_padding_top; - $widget_padding_bottom = $args->widget_padding_bottom; - if($include_info) { - $oWidgetController = &getController('widget'); - $tpl = $oWidgetController->transEditorContent($body, $args); - } else { - $tpl = sprintf('
    %s
    ', $style, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left, $body); + // args값에서 urldecode를 해줌 + $object_vars = get_object_vars($args); + if(count($object_vars)) { + foreach($object_vars as $key => $val) { + if(in_array($key, array('body','class','style','widget_sequence','widget','widget_padding_left','widget_padding_top','widget_padding_bottom','widget_padding_right'))) continue; + $args->{$key} = urldecode($val); } - return $tpl; - // widget Box일 경우 간단히 변경만 시도함 - } else if($widget == 'widgetBox') { - $style = $args->style; - $widget_padding_left = $args->widget_padding_left; - $widget_padding_right = $args->widget_padding_right; - $widget_padding_top = $args->widget_padding_top; - $widget_padding_bottom = $args->widget_padding_bottom; - if($include_info) { - $tpl = sprintf('
    ', $style, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left); - } else { - $tpl = sprintf('
    %s', $style, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left, $body); - } - return $tpl; } - // 설치된 위젯들에 대한 처리 - if(!is_dir(sprintf('./widgets/%s/',$widget))) return; - - $cache_path = './files/cache/widget_cache/'; - if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); - - // $widget의 객체를 받음 - $oWidget = WidgetHandler::getObject($widget); - if(!$oWidget) return; - - // 위젯 output을 생성하기 위한 변수 설정 - $widget_padding_top = $args->widget_padding_top; - $widget_padding_bottom = $args->widget_padding_bottom; - $widget_padding_left = $args->widget_padding_left; - $widget_padding_right = $args->widget_padding_right; - - $inner_style = sprintf("padding:%dpx %dpx %dpx %dpx !important; padding:none !important;", $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left); - /** - * 출력을 위해 위젯 내용을 div로 꾸밈 + * 위젯이 widgetContent/ widgetBox가 아니라면 내용을 구함 **/ - // 서비스에 사용하기 위해 위젯 정보를 포함하지 않을 경우 - if(!$include_info) { + if($widget != 'widgetContent' && $widget != 'widgetBox') { + if(!is_dir(sprintf('./widgets/%s/',$widget))) return; - // 위젯 실행 - $html = $oWidget->proc($args); - $output = sprintf('
    %s
    ', $args->style, $inner_style, $html); + // 위젯의 내용을 담을 변수 + $widget_content = ''; - // 위젯 sequence가 있고 위젯의 캐싱을 지정하였고 위젯정보를 담지 않도록 하였을 경우 캐시 파일을 저장 - if($args->widget_sequence && $args->widget_cache) WidgetHandler::writeCache($args->widget_sequence, $output); + // 캐시된 코드가 있는지 확인 + $widget_sequence = $args->widget_sequence; + $widget_cache = $args->widget_cache; + if($widget_cache && $widget_sequence) $widget_content = WidgetHandler::getCache($widget_sequence, $widget_cache); - // 에디팅등에 사용하기 위한 목적으로 위젯 정보를 포함할 경우 - } else { - // 위젯 실행 - //if($args->widget_sequence && $args->widget_cache) $html = WidgetHandler::getCache($args->widget_sequence, $args->widget_cache); - //if(!$html) $html = $oWidget->proc($args); - $html = $oWidget->proc($args); + // 캐시된 코드가 없을 경우 코드 생성 + if(!$widget_content) { + $oWidget = WidgetHandler::getObject($widget); + if(!$oWidget) return; - // args 정리 - $attribute = array(); - if($args) { - foreach($args as $key => $val) { - if($key == 'class' || $key == 'style') continue; - if(strpos($val,'|@|')>0) { - $val = str_replace('|@|',',',$val); - } - $attribute[] = sprintf('%s="%s"', $key, str_replace('"','\"',$val)); + $widget_content = $oWidget->proc($args); + + if(!is_string($widget_content)) { + if(is_object($widget_content) && (is_a($widget_content, 'Object')||is_subclass_of($widget_content, 'Object'))) { + $widget_content = $widget_content->getMessage(); + } else $widget_content = ''; } } - // 결과물에 있는 css Meta 목록을 구해와서 해당 css를 아예 읽어버림 - require_once("./classes/optimizer/Optimizer.class.php"); - $oOptimizer = new Optimizer(); - preg_match_all('!<\!\-\-Meta:([^\-]*?)\-\->!is', $html, $matches); - $css_header = null; - for($i=0;$ireplaceCssPath($css_file, $buff)."\n"; + // 위젯의 캐시값과 위젯 sequence가 있을 경우 캐시 파일에 저장 + if($widget_cache && $widget_sequence) WidgetHandler::writeCache($widget_sequence, $widget_content); + } + + /** + * 관리자가 지정한 위젯의 style을 구함 + **/ + // 가끔 잘못된 코드인 background-image:url(none)이 들어 있을 수가 있는데 이럴 경우 none에 대한 url을 요청하므로 무조건 제거함 + $style = preg_replace('/background\-image: url\(none\)/is','', $args->style); + + // 내부 여백을 둔 것을 구해서 style문으로 미리 변경해 놓음 + $widget_padding_left = $args->widget_padding_left; + $widget_padding_right = $args->widget_padding_right; + $widget_padding_top = $args->widget_padding_top; + $widget_padding_bottom = $args->widget_padding_bottom; + $inner_style = sprintf("padding:%dpx %dpx %dpx %dpx !important; padding:none !important;", $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left); + + /** + * 위젯 출력물을 구함 + **/ + // 일반 페이지 호출일 경우 지정된 스타일만 꾸면서 바로 return 함 + if(!$include_info) { + switch($widget) { + // 내용 직접 추가일 경우 + case 'widgetContent' : + $body = base64_decode($args->body); + $output = sprintf('
    %s
    ', $style, $inner_style, $body); + break; + + // 위젯 박스일 경우 + case 'widgetBox' : + $output = sprintf('
    ', $style, $inner_style); + break; + + // 일반 위젯일 경우 + default : + $output = sprintf('
    %s
    ', $style, $inner_style, $widget_content); + break; } - if(!$html) $html = ' '; - $output = sprintf( - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '%s'. - '
    '. - '
    '. - '
    ', - $css_header, - $args->style, - $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left, - $widget, implode(' ',$attribute), - $inner_style, - $html - ); + // 페이지 수정시에 호출되었을 경우 위젯 핸들링을 위한 코드 추가 + } else { + switch($widget) { + // 내용 직접 추가일 경우 + case 'widgetContent' : + $body = base64_decode($args->body); + $oWidgetController = &getController('widget'); + + $output = sprintf( + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '%s'. + '
    '. + '
    '. + ''. + '
    ', + $style, + $args->widget_padding_left, $args->widget_padding_right, $args->widget_padding_top, $args->widget_padding_bottom, + $inner_style, + $body, + base64_encode($body) + ); + break; + + // 위젯 박스일 경우 + case 'widgetBox' : + $output = sprintf( + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    ', + $style, $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left, $inner_style); + break; + + // 일반 위젯일 경우 + default : + // args 정리 + $attribute = array(); + if($args) { + foreach($args as $key => $val) { + if(in_array($key, array('class','style','widget_padding_top','widget_padding_right','widget_padding_bottom','widget_padding_left','widget'))) continue; + if(strpos($val,'|@|')>0) $val = str_replace('|@|',',',$val); + $attribute[] = sprintf('%s="%s"', $key, str_replace('"','\"',$val)); + } + } + + $output = sprintf( + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '
    '. + '%s'. + '
    '. + '
    '. + '
    ', + $style, + $widget_padding_top, $widget_padding_right, $widget_padding_bottom, $widget_padding_left, + $widget, implode(' ',$attribute), + $inner_style, + $widget_content + ); + break; + } } // 위젯 결과물 생성 시간을 debug 정보에 추가 diff --git a/modules/page/page.admin.controller.php b/modules/page/page.admin.controller.php index e1f03f88c..bfd2fb5a9 100644 --- a/modules/page/page.admin.controller.php +++ b/modules/page/page.admin.controller.php @@ -98,10 +98,11 @@ $oFileController->setFilesValid($module_info->module_srl); // 캐시파일 재생성 - $this->procPageAdminRemoveWidgetCache(); + //$this->procPageAdminRemoveWidgetCache(); $this->add("module_srl", $module_info->module_srl); $this->add("page", Context::get('page')); + $this->add("mid", $module_info->mid); $this->setMessage($msg_code); } diff --git a/modules/page/page.admin.view.php b/modules/page/page.admin.view.php index d112b5876..b41821af3 100644 --- a/modules/page/page.admin.view.php +++ b/modules/page/page.admin.view.php @@ -153,7 +153,9 @@ Context::set('module_info', $this->module_info); // 내용을 세팅 - $content = $this->module_info->content; + $content = Context::get('content'); + if(!$content) $content = $this->module_info->content; + Context::set('content', $content); // 내용중 위젯들을 변환 $oWidgetController = &getController('widget'); diff --git a/modules/page/tpl/filter/insert_page_content.xml b/modules/page/tpl/filter/insert_page_content.xml index bdc237398..58e3b5c2e 100644 --- a/modules/page/tpl/filter/insert_page_content.xml +++ b/modules/page/tpl/filter/insert_page_content.xml @@ -10,6 +10,7 @@ + diff --git a/modules/page/tpl/js/page_admin.js b/modules/page/tpl/js/page_admin.js index 1282949d2..fb95953f6 100644 --- a/modules/page/tpl/js/page_admin.js +++ b/modules/page/tpl/js/page_admin.js @@ -32,8 +32,9 @@ function completeInsertPageContent(ret_obj) { var page = ret_obj['page']; var module_srl = ret_obj['module_srl']; + var mid = ret_obj['mid']; - location.href = current_url.setQuery('act',''); + location.href = current_url.setQuery('mid',mid).setQuery('act',''); } /* 수정한 페이지 컨텐츠를 저장 */ diff --git a/modules/page/tpl/page_content_modify.html b/modules/page/tpl/page_content_modify.html index 733a2ce50..28a8faf63 100644 --- a/modules/page/tpl/page_content_modify.html +++ b/modules/page/tpl/page_content_modify.html @@ -1,13 +1,20 @@ + + + + +
    {$page_content}
    -
    + + + - +
    +
    - +
    diff --git a/modules/widget/tpl/add_content_widget.html b/modules/widget/tpl/add_content_widget.html index 74e08c898..f6ed89969 100644 --- a/modules/widget/tpl/add_content_widget.html +++ b/modules/widget/tpl/add_content_widget.html @@ -1,9 +1,8 @@ -
    -
    + diff --git a/modules/widget/tpl/js/widget.js b/modules/widget/tpl/js/widget.js index ecec79d36..529980953 100644 --- a/modules/widget/tpl/js/widget.js +++ b/modules/widget/tpl/js/widget.js @@ -49,7 +49,7 @@ function getPadding(obj, direct) { } -/* 위젯 배치 시작을 함 */ +/* 위젯 핸들링 시작 */ var zonePageObj = null; var zoneModuleSrl = 0; function doStartPageModify(zoneID, module_srl) { @@ -155,8 +155,7 @@ function getWidgetCode(childObj, widget) { var value = childObj.attributes[i].nodeValue; if(!value) continue; - if(value && typeof(value)=="string") value = value.replace(/\"/ig,'"'); - attrs += name+'="'+value+'" '; + attrs += name+'="'+escape(value)+'" '; } var style = childObj.getAttribute("style"); return ''; @@ -196,11 +195,28 @@ function doSyncPageContent() { } // 부모창에 위젯을 추가 -function completeAddContent(ret_obj) { - var tpl = ret_obj["tpl"]; +function completeAddContent(fo_obj) { + var editor_sequence = fo_obj.getAttribute('editor_sequence'); + var content = editorGetContent(editor_sequence); + + var tpl = ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '+ + '
    '+ + '
    '+ + '
    '+ + '
    '+ + '
    '+ + content+ + '
    '+ + '
    '+ + ''+ + '
    '; + opener.doAddWidgetCode(tpl); window.close(); - return false; } /* 박스 위젯 추가 */ @@ -259,6 +275,7 @@ function doAddWidgetCode(widget_code) { var nodes = dummy.childNodes; var zoneObj = xGetElementById('zonePageContent'); + zoneObj.style.visibility = 'hidden'; if(selectedWidget && selectedWidget.getAttribute("widget")) { while ( nodes.length ) { @@ -273,7 +290,13 @@ function doAddWidgetCode(widget_code) { } } - doFitBorderSize(); + // 위젯 추가후 페이지 리로딩 + var tpl = getWidgetContent(); + + var fo_obj = xGetElementById('pageFo'); + fo_obj.content.value = tpl; + + fo_obj.submit(); } // 클릭 이벤트시 위젯의 수정/제거/이벤트 무효화 처리 diff --git a/modules/widget/tpl/js/widget_admin.js b/modules/widget/tpl/js/widget_admin.js index 63cd16205..aba022d46 100644 --- a/modules/widget/tpl/js/widget_admin.js +++ b/modules/widget/tpl/js/widget_admin.js @@ -102,7 +102,10 @@ function doFillWidgetVars() { case "text" : case "textarea" : var val = selected_node.getAttribute(name); - if(val) node.value = val; + 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)) { diff --git a/modules/widget/widget.controller.php b/modules/widget/widget.controller.php index 62d6801ad..ade15ed22 100644 --- a/modules/widget/widget.controller.php +++ b/modules/widget/widget.controller.php @@ -130,34 +130,12 @@ $this->add('colorset_list', $colorsets); } - /** - * @brief 직접 내용 입력된 위젯의 처리 - **/ - function procWidgetAddContent() { - $content = Context::get('content'); - $args = Context::getRequestVars('style','widget_padding_left','widget_padding_right','widget_padding_bottom','widget_padding_top'); - - $tpl = $this->transEditorContent($content, $args); - - $this->add('tpl', $tpl); - } - /** * @breif 특정 content의 위젯 태그들을 변환하여 return **/ function transWidgetCode($content, $include_info = false) { - $this->include_info = $include_info; - // 내용중 widget이 아닌 것들을 일단 분리 - /* - $none_widget_code = preg_replace('!]*)widget=([^\>]*?)\>!is', '', $content); - $oPageAdminController = &getAdminController('page'); - if(trim($none_widget_code)) { - $args->style = "float:left;overflow:hidden;padding:none;padding:none"; - $args->widget_padding_left = $args->widget_padding_top = $args->widget_padding_right = $args->widget_padding_bottom = 0; - $none_widget_content = $oPageAdminController->transEditorContent($none_widget_code, $args); - } - */ + $this->include_info = $include_info; // 내용중 위젯을 또다시 구함 (기존 버전에서 페이지 수정해 놓은것과의 호환을 위해서) $content = preg_replace_callback('!]*)widget=([^\>]*?)\>!is', array($this,'transWidget'), $content); @@ -165,17 +143,6 @@ // 박스 위젯을 다시 구함 $content = preg_replace_callback('!]*)widget=([^\>]*?)\>
    !is', array($this,'transWidgetBox'), $content); - // include_info, 즉 위젯의 수정일 경우 css와 js파일을 추가해 주고 위젯 수정용 레이어도 추가함 - if($this->include_info) { - Context::addJsFile("./modules/widget/tpl/js/widget.js"); - Context::addCSSFile("./modules/widget/tpl/css/widget.css"); - - $oTemplate = &TemplateHandler::getInstance(); - $tpl = $oTemplate->compile($this->module_path.'tpl', 'widget_layer'); - $content .= $tpl; - - } - return $content; } @@ -183,10 +150,7 @@ * @brief 위젯 코드를 실제 php코드로 변경 **/ function transWidget($matches) { - $oContext = &Context::getInstance(); $buff = trim($matches[0]); - $buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', array($oContext, _fixQuotation), $buff); - $buff = str_replace("&","&",$buff); $oXmlParser = new XmlParser(); $xml_doc = $oXmlParser->parse(trim($buff)); @@ -196,14 +160,6 @@ if(!$vars->widget) return ""; - // 캐시 체크 - $widget_sequence = $vars->widget_sequence; - $widget_cache = $vars->widget_cache; - if($widget_cache && $widget_sequence && !$this->include_info) { - $output = WidgetHandler::getCache($widget_sequence, $widget_cache); - if($output) return $output; - } - // 위젯의 이름을 구함 $widget = $vars->widget; unset($vars->widget); @@ -229,54 +185,5 @@ return WidgetHandler::execute($widget, $vars, $this->include_info); } - /** - * @brief 에디터에서 생성한 컨텐츠를 페이지 수정시 사용할 수 있도록 코드 생성 - **/ - function transEditorContent($content, $args = null) { - // 에디터의 내용을 변환하여 visual한 영역과 원본 소스를 가지고 있는 code로 분리 - $code = $content; - - $oContext = &Context::getInstance(); - $content = preg_replace_callback('!]*)editor_component=([^\>]*)>(.*?)\<\/div\>!is', array($oContext,'transEditorComponent'), $content); - $content = preg_replace_callback('!]*)editor_component=([^\>]*?)\>!is', array($oContext,'transEditorComponent'), $content); - - // 결과물에 있는 css Meta 목록을 구해와서 해당 css를 아예 읽어버림 - require_once("./classes/optimizer/Optimizer.class.php"); - $oOptimizer = new Optimizer(); - preg_match_all('!<\!\-\-Meta:([^\-]*?)\-\->!is', $content, $matches); - $css_header = null; - for($i=0;$ireplaceCssPath($css_file, $buff)."\n"; - } - - $tpl = sprintf( - ''. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '
    '. - '%s'. - '
    '. - '
    '. - ''. - '
    ', - $css_header, - $args->style, - $args->widget_padding_left, $args->widget_padding_right, $args->widget_padding_top, $args->widget_padding_bottom, - $args->widget_padding_top, $args->widget_padding_right, $args->widget_padding_bottom, $args->widget_padding_left, - $content, - base64_encode($code) - ); - - return $tpl; - } - } ?> From 723b9a454530f1872470dd2bc6e1a0aefab193fb Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 06:14:57 +0000 Subject: [PATCH 163/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3604 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/rss/tpl/rss20.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/rss/tpl/rss20.html b/modules/rss/tpl/rss20.html index acd8c3ddc..c898bf758 100644 --- a/modules/rss/tpl/rss20.html +++ b/modules/rss/tpl/rss20.html @@ -14,7 +14,7 @@ getNickName()}]]> getPermanentUrl()}]]> - getContent(false)}]]> + getContent(false,false)}]]> getContentText(100)}]]> From 2c85caaff900ff508a1f3244918ba164cf712489 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 06:54:05 +0000 Subject: [PATCH 164/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3605 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 2 +- config/func.inc.php | 32 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index c85c10960..75c8c019e 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -64,7 +64,7 @@ if(count($object_vars)) { foreach($object_vars as $key => $val) { if(in_array($key, array('body','class','style','widget_sequence','widget','widget_padding_left','widget_padding_top','widget_padding_bottom','widget_padding_right'))) continue; - $args->{$key} = urldecode($val); + $args->{$key} = utf8RawUrlDecode(utf8RawUrlDecode($val)); } } diff --git a/config/func.inc.php b/config/func.inc.php index f1f7d39dc..5ac341df6 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -470,4 +470,36 @@ if(function_exists('php_sapi_name') && php_sapi_name()=='cgi') return preg_replace('/index.php/i','',$_SERVER['PATH_INFO']); return preg_replace('/index.php/i','',$_SERVER['SCRIPT_NAME']); } + + function utf8RawUrlDecode ($source) { + $decodedStr = ""; + $pos = 0; + $len = strlen ($source); + while ($pos < $len) { + $charAt = substr ($source, $pos, 1); + if ($charAt == '%') { + $pos++; + $charAt = substr ($source, $pos, 1); + if ($charAt == 'u') { + // we got a unicode character + $pos++; + $unicodeHexVal = substr ($source, $pos, 4); + $unicode = hexdec ($unicodeHexVal); + $entity = "&#". $unicode . ';'; + $decodedStr .= utf8_encode ($entity); + $pos += 4; + } + else { + // we have an escaped ascii character + $hexVal = substr ($source, $pos, 2); + $decodedStr .= chr (hexdec ($hexVal)); + $pos += 2; + } + } else { + $decodedStr .= $charAt; + $pos++; + } + } + return $decodedStr; + } ?> From 72a7abfa0416b1148443929d742eed10ab18f16c Mon Sep 17 00:00:00 2001 From: supershop Date: Mon, 28 Jan 2008 07:08:57 +0000 Subject: [PATCH 165/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3606 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/forum/conf/info.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/widgets/forum/conf/info.xml b/widgets/forum/conf/info.xml index 3aed7004a..c232c8501 100644 --- a/widgets/forum/conf/info.xml +++ b/widgets/forum/conf/info.xml @@ -3,14 +3,14 @@ 포럼형 최근 게시물 论坛型最新主题列表 포럼형 최근 게시물 - 포럼형 최근 게시물 + Dispaly Forum Style Newest Articles 포럼형 최근 게시물 포럼형 최근 게시물 제로 zero zero - zero + Zero zero zero @@ -26,8 +26,8 @@ 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + This widget displays newest articles from one or more board in forum style. + Description will be displayed with target board's title and description. 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. From 931a1050955f0acfa1395dcd23c92e945aaf85a9 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 08:39:09 +0000 Subject: [PATCH 166/278] =?UTF-8?q?xe=5Fofficial=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=EC=9D=98=20=EC=A2=8C?= =?UTF-8?q?=EC=B8=A1=202,3=EB=8B=A8=EA=B3=84=20=EB=A9=94=EB=89=B4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=A9=94=EB=89=B4=EC=9D=98=20expand=20=EC=86=8D?= =?UTF-8?q?=EC=84=B1=EA=B0=92=EC=9D=84=20=EC=A0=81=EC=9A=A9=EB=B0=9B?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3607 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_official/css/black.css | 2 +- layouts/xe_official/css/default.css | 2 +- layouts/xe_official/css/white.css | 2 +- layouts/xe_official/layout.html | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/layouts/xe_official/css/black.css b/layouts/xe_official/css/black.css index 9121e584a..92139ae87 100644 --- a/layouts/xe_official/css/black.css +++ b/layouts/xe_official/css/black.css @@ -63,7 +63,7 @@ body { background:#3d3d3d url(../images/black/bgBody.gif) repeat-x;} #lnb li.on a { color:#ffffff; background:#e61700; border:1px solid #ff1a00;} #lnb li.on a:hover, #lnb li.on a:focus { font-weight:bold;} -#lnb li ul { display:none; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #3d3d3d; overflow:hidden;} +#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #3d3d3d; overflow:hidden;} #lnb li.on ul { display:block;} #lnb li ul li { padding:0; border-top:1px solid #474747; position:relative; top:-1px;} #lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;} diff --git a/layouts/xe_official/css/default.css b/layouts/xe_official/css/default.css index f37a55491..a64c31bde 100644 --- a/layouts/xe_official/css/default.css +++ b/layouts/xe_official/css/default.css @@ -65,7 +65,7 @@ body { background:#FFFFFF url(../images/default/bgBody.gif) repeat-x left top; } #lnb li.on a { color:#ffffff; background:#de4332; border:1px solid #de4332;} #lnb li.on a:hover, #lnb li.on a:focus { font-weight:bold;} -#lnb li ul { display:none; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #ffffff; overflow:hidden;} +#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #ffffff; overflow:hidden;} #lnb li.on ul { display:block;} #lnb li ul li { padding:0; border-top:1px solid #f2f2f2; position:relative; top:-1px;} #lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;} diff --git a/layouts/xe_official/css/white.css b/layouts/xe_official/css/white.css index d8a4ae3c6..f2e1337bc 100644 --- a/layouts/xe_official/css/white.css +++ b/layouts/xe_official/css/white.css @@ -64,7 +64,7 @@ body { background:#ffffff;} #lnb li.on a { color:#ffffff; background:#de4332; border:1px solid #de4332;} #lnb li.on a:hover, #lnb li.on a:focus { font-weight:bold;} -#lnb li ul { display:none; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #ffffff; overflow:hidden;} +#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #ffffff; overflow:hidden;} #lnb li.on ul { display:block;} #lnb li ul li { padding:0; border-top:1px solid #f2f2f2; position:relative; top:-1px;} #lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;} diff --git a/layouts/xe_official/layout.html b/layouts/xe_official/layout.html index e82bdf9b7..d9fc2c2c9 100644 --- a/layouts/xe_official/layout.html +++ b/layouts/xe_official/layout.html @@ -98,7 +98,7 @@
  • class="on">onclick="window.open(this.href);return false;">{$val['link']} - +
    • class="on">onclick="window.open(this.href);return false;">{$v['link']}
    • From a90950fd2654863768db2cd158b27bdbe6c76979 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 09:14:01 +0000 Subject: [PATCH 167/278] =?UTF-8?q?=EC=9C=84=EC=A0=AF=ED=95=B8=EB=93=A4?= =?UTF-8?q?=EB=9F=AC=EC=97=90=EC=84=9C=20=EC=9C=84=EC=A0=AF=EC=9D=98=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=EA=B0=92=EC=9D=B4=20string=EC=9D=B4=20?= =?UTF-8?q?=EC=95=84=EB=8B=88=EA=B3=A0=20Object=20class=EC=9D=98=20instanc?= =?UTF-8?q?e=EC=9D=BC=20=EA=B2=BD=EC=9A=B0=20=EB=A9=94=EC=84=B8=EC=A7=80?= =?UTF-8?q?=EB=A5=BC=20=EA=B2=B0=EA=B3=BC=EB=A1=9C=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3608 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index 75c8c019e..8ef0e152f 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -89,11 +89,7 @@ $widget_content = $oWidget->proc($args); - if(!is_string($widget_content)) { - if(is_object($widget_content) && (is_a($widget_content, 'Object')||is_subclass_of($widget_content, 'Object'))) { - $widget_content = $widget_content->getMessage(); - } else $widget_content = ''; - } + if(is_object($widget_content) && (is_a($widget_content, 'Object')||is_subclass_of($widget_content, 'Object'))) $widget_content = $widget_content->getMessage(); } // 위젯의 캐시값과 위젯 sequence가 있을 경우 캐시 파일에 저장 From d725819e2920e9f69b3fdd54fad337eaf80477ad Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 28 Jan 2008 09:35:42 +0000 Subject: [PATCH 168/278] =?UTF-8?q?=EC=9C=84=EC=A0=AF=EC=BA=90=EC=8B=B1=20?= =?UTF-8?q?=ED=83=80=EC=9D=B4=EB=B0=8D=EC=9D=84=20=EC=A0=9C=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=A1=EC=A7=80=20=EB=AA=BB=ED=95=98=EB=8D=98=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3609 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 77 +++++++++++++------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index 8ef0e152f..1fe6a6f2d 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -12,32 +12,51 @@ /** * @brief 위젯 캐시 처리 **/ - function getCache($sequence, $cache) { - // 위젯 캐시는 캐시 번호와 캐시 시간이 없으면 캐시하지 않는 것으로 처리함 - if(!$sequence || !$cache) return; + function getCache($widget, $args) { - // 캐시 디렉토리가 없으면 생성하고 return - $cache_path = './files/cache/widget_cache/'; - if(!is_dir($cache_path)) { - FileHandler::makeDir($cache_path); - return; + // widget, 캐시 번호와 캐시값이 설정되어 있는지 확인 + $widget_sequence = $args->widget_sequence; + $widget_cache = $args->widget_cache; + + /** + * 캐시 번호와 캐시 값이 아예 없으면 바로 데이터를 추출해서 리턴 + **/ + if(!$widget_cache || !$widget_sequence) { + $oWidget = WidgetHandler::getObject($widget); + if(!$oWidget) return; + + return $oWidget->proc($args); } - // 캐시파일명을 구해서 해당 파일이 없으면 return - $cache_file = sprintf('%s%d.%s.cache', $cache_path, $sequence, Context::getLangType()); - if(!file_exists($cache_file)) return; + /** + * 캐시 번호와 캐시값이 설정되어 있으면 캐시 파일을 불러오도록 함 + **/ + + // 캐시 디렉토리가 없으면 생성 + $cache_path = './files/cache/widget_cache/'; + if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); - $filemtime = filemtime($cache_file); + // 캐시파일명을 구함 + $cache_file = sprintf('%s%d.%s.cache', $cache_path, $widget_sequence, Context::getLangType()); - // 만약 캐시파일이 widgetHandler보다 이전에 생성된 파일이면 새로 캐시해야 함 - if($filemtime < filemtime('./classes/widget/WidgetHandler.class.php')) return; + // 캐시 파일이 존재하면 해당 파일의 유효성 검사 + if(file_exists($cache_file)) { + $filemtime = filemtime($cache_file); - // 캐시 파일의 수정일이 캐시시간보다 크면 새로 만들기 위해서 return - if($filemtime + $cache*60 < time()) return; + // 수정 시간을 비교해서 캐싱중이어야 하거나 WidgetHandler.class.php 파일보다 나중에 만들어 졌다면 캐시값을 return + if($filemtime + $widget_cache*60 > time() && $filemtime > filemtime('./classes/widget/WidgetHandler.class.php')) { + return FileHandler::readFile($cache_file); + } + } - // 캐시 파일 내용을 읽어서 return - $output = FileHandler::readFile($cache_file); - return $output; + // 캐시를 새로 해야 할 경우임 + $oWidget = WidgetHandler::getObject($widget); + if(!$oWidget) return; + + $widget_content = $oWidget->proc($args); + WidgetHandler::writeCache($widget_sequence, $widget_content); + + return $widget_content; } /** @@ -75,25 +94,7 @@ if(!is_dir(sprintf('./widgets/%s/',$widget))) return; // 위젯의 내용을 담을 변수 - $widget_content = ''; - - // 캐시된 코드가 있는지 확인 - $widget_sequence = $args->widget_sequence; - $widget_cache = $args->widget_cache; - if($widget_cache && $widget_sequence) $widget_content = WidgetHandler::getCache($widget_sequence, $widget_cache); - - // 캐시된 코드가 없을 경우 코드 생성 - if(!$widget_content) { - $oWidget = WidgetHandler::getObject($widget); - if(!$oWidget) return; - - $widget_content = $oWidget->proc($args); - - if(is_object($widget_content) && (is_a($widget_content, 'Object')||is_subclass_of($widget_content, 'Object'))) $widget_content = $widget_content->getMessage(); - } - - // 위젯의 캐시값과 위젯 sequence가 있을 경우 캐시 파일에 저장 - if($widget_cache && $widget_sequence) WidgetHandler::writeCache($widget_sequence, $widget_content); + $widget_content = WidgetHandler::getCache($widget, $args); } /** From 32f478321c8cbb4825f7aa082ffac4c8c63f7ea4 Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 28 Jan 2008 16:21:34 +0000 Subject: [PATCH 169/278] info check git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3610 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/rainbow_link/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/rainbow_link/conf/info.xml b/addons/rainbow_link/conf/info.xml index 0b6a48d6d..720a676f7 100644 --- a/addons/rainbow_link/conf/info.xml +++ b/addons/rainbow_link/conf/info.xml @@ -12,7 +12,7 @@ dynamicdrive.com dynamicdrive.com dynamicdrive.com - dynamicdrive.com + dynamicdrive.com rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다. 이 애드온의 rainbow.js는 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>에 저작권이 있습니다. From 5973f30f7fa676d3d2c0e816a66d4bff8c8c866d Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 28 Jan 2008 17:44:51 +0000 Subject: [PATCH 170/278] =?UTF-8?q?BOM=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3611 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/rainbow_link/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/rainbow_link/conf/info.xml b/addons/rainbow_link/conf/info.xml index 720a676f7..09cf0fb2c 100644 --- a/addons/rainbow_link/conf/info.xml +++ b/addons/rainbow_link/conf/info.xml @@ -1,4 +1,4 @@ - + 레인보우 링크 애드온 Rainbow 链接 @@ -12,7 +12,7 @@ dynamicdrive.com dynamicdrive.com dynamicdrive.com - dynamicdrive.com + dynamicdrive.com rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다. 이 애드온의 rainbow.js는 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>에 저작권이 있습니다. From d725c15649d82840cc1807a761d7e56751bbf445 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 29 Jan 2008 02:03:16 +0000 Subject: [PATCH 171/278] =?UTF-8?q?=EC=B5=9C=EA=B7=BC=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=9C=84=EC=A0=AF=EC=9D=98=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=EA=B0=80=20cubrid=EC=97=90=EC=84=9C=20=EB=82=98=EC=98=A4?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8D=98=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0.=20group=20by=20=EC=A0=88=EC=9D=98=20=EC=9E=98?= =?UTF-8?q?=EB=AA=BB=EB=90=9C=20=EC=BF=BC=EB=A6=AC=20=EB=95=8C=EB=AC=B8?= =?UTF-8?q?=EC=9E=84.=20by=20=EC=84=9C=EC=83=81=EC=9A=B1=EB=8B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3612 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/queries/getOneFileInDocument.xml | 2 +- widgets/newest_images/newest_images.class.php | 17 ++++++++++------- .../newest_images/skins/xe_official/list.html | 2 +- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/modules/file/queries/getOneFileInDocument.xml b/modules/file/queries/getOneFileInDocument.xml index 566a7ed57..0ac54ba1b 100644 --- a/modules/file/queries/getOneFileInDocument.xml +++ b/modules/file/queries/getOneFileInDocument.xml @@ -4,7 +4,7 @@
  • {$lang->menu_normal_btn} + + +
    {$lang->menu_hover_btn} + + +
    {$lang->menu_active_btn} + + +
    {$lang->menu_group_srls}
    - + diff --git a/widgets/newest_images/newest_images.class.php b/widgets/newest_images/newest_images.class.php index 45189f3ed..ae475466c 100644 --- a/widgets/newest_images/newest_images.class.php +++ b/widgets/newest_images/newest_images.class.php @@ -71,17 +71,20 @@ // 정해진 모듈에서 문서별 파일 목록을 구함 $files_output = executeQueryArray("file.getOneFileInDocument", $obj); + $files_count = count($files_output->data); + + $document_srl_list = array(); + for($i=0;$i<$files_count;$i++) $document_srl_list[] = $files_output->data[$i]->document_srl; $oDocumentModel = &getModel('document'); - if(count($files_output->data)) { - foreach($files_output->data as $key => $val) { - $oDocument = null; - $oDocument = $oDocumentModel->getDocument(); - $oDocument->setAttribute($val); - $document_list[] = $oDocument; - } + $tmp_document_list = $oDocumentModel->getDocuments($document_srl_list); + $document_list = array(); + if(count($tmp_document_list)) { + foreach($tmp_document_list as $val) $document_list[] = $val; } + $document_count = count($document_list); + $total_count = $widget_info->rows_list_count * $widget_info->cols_list_count; for($i=$document_count;$i<$total_count;$i++) $document_list[] = new DocumentItem(); $widget_info->document_list = $document_list; diff --git a/widgets/newest_images/skins/xe_official/list.html b/widgets/newest_images/skins/xe_official/list.html index 9537078cf..28baefdc7 100644 --- a/widgets/newest_images/skins/xe_official/list.html +++ b/widgets/newest_images/skins/xe_official/list.html @@ -61,7 +61,7 @@ - + more From 8e2a4d93f1d754af7d2a00327e4148543b2c29bd Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 29 Jan 2008 03:42:29 +0000 Subject: [PATCH 172/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3613 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/newest_images/newest_images.class.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/widgets/newest_images/newest_images.class.php b/widgets/newest_images/newest_images.class.php index ae475466c..97d5f147a 100644 --- a/widgets/newest_images/newest_images.class.php +++ b/widgets/newest_images/newest_images.class.php @@ -72,15 +72,16 @@ // 정해진 모듈에서 문서별 파일 목록을 구함 $files_output = executeQueryArray("file.getOneFileInDocument", $obj); $files_count = count($files_output->data); - $document_srl_list = array(); - for($i=0;$i<$files_count;$i++) $document_srl_list[] = $files_output->data[$i]->document_srl; + if($files_count>0) { + for($i=0;$i<$files_count;$i++) $document_srl_list[] = $files_output->data[$i]->document_srl; - $oDocumentModel = &getModel('document'); - $tmp_document_list = $oDocumentModel->getDocuments($document_srl_list); - $document_list = array(); - if(count($tmp_document_list)) { - foreach($tmp_document_list as $val) $document_list[] = $val; + $oDocumentModel = &getModel('document'); + $tmp_document_list = $oDocumentModel->getDocuments($document_srl_list); + $document_list = array(); + if(count($tmp_document_list)) { + foreach($tmp_document_list as $val) $document_list[] = $val; + } } $document_count = count($document_list); From 01c4702fa37e5ac45a77598ea3dacf7b8e57e54d Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 29 Jan 2008 05:17:19 +0000 Subject: [PATCH 173/278] =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EC=8B=9C=20=EB=82=B4=EC=9A=A9=EC=9D=B4=20=EC=95=84?= =?UTF-8?q?=EB=9E=98=EC=97=90=EC=84=9C=20=EC=9C=84=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=ED=95=98=EB=8A=94=20=ED=98=84=EC=83=81=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3614 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/page/tpl/page_content_modify.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/page/tpl/page_content_modify.html b/modules/page/tpl/page_content_modify.html index 28a8faf63..9b3c6bb66 100644 --- a/modules/page/tpl/page_content_modify.html +++ b/modules/page/tpl/page_content_modify.html @@ -4,7 +4,6 @@ -
    {$page_content}
    @@ -40,3 +39,4 @@ xAddEventListener(window,"load",function() { doStartPageModify('zonePageContent', '{$module_info->module_srl}'); }); + From c4993d0c8f94d21e329b4350bb04d44d4b01677e Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 29 Jan 2008 05:32:54 +0000 Subject: [PATCH 174/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3615 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/widget/tpl/js/widget.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/widget/tpl/js/widget.js b/modules/widget/tpl/js/widget.js index 529980953..d3fc6ad8d 100644 --- a/modules/widget/tpl/js/widget.js +++ b/modules/widget/tpl/js/widget.js @@ -275,7 +275,11 @@ function doAddWidgetCode(widget_code) { var nodes = dummy.childNodes; var zoneObj = xGetElementById('zonePageContent'); - zoneObj.style.visibility = 'hidden'; + + //zoneObj.style.visibility = 'hidden'; + zoneObj.style.opacity = 0.2; + zoneObj.style.filter = "alpha(opacity=20)"; + if(selectedWidget && selectedWidget.getAttribute("widget")) { while ( nodes.length ) { From de22e50d5a3bb5083ce0d025340123ab638f3ba3 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 29 Jan 2008 05:51:13 +0000 Subject: [PATCH 175/278] =?UTF-8?q?=EC=B5=9C=EA=B7=BC=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=9C=84=EC=A0=AF=EC=9D=98=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3616 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/newest_images/newest_images.class.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/widgets/newest_images/newest_images.class.php b/widgets/newest_images/newest_images.class.php index 97d5f147a..ecd3d6dd0 100644 --- a/widgets/newest_images/newest_images.class.php +++ b/widgets/newest_images/newest_images.class.php @@ -69,23 +69,25 @@ $obj->direct_download = 'Y'; $obj->isvalid = 'Y'; + $oDocumentModel = &getModel('document'); + // 정해진 모듈에서 문서별 파일 목록을 구함 $files_output = executeQueryArray("file.getOneFileInDocument", $obj); $files_count = count($files_output->data); + $document_srl_list = array(); + $document_list = array(); + if($files_count>0) { for($i=0;$i<$files_count;$i++) $document_srl_list[] = $files_output->data[$i]->document_srl; - $oDocumentModel = &getModel('document'); $tmp_document_list = $oDocumentModel->getDocuments($document_srl_list); - $document_list = array(); if(count($tmp_document_list)) { foreach($tmp_document_list as $val) $document_list[] = $val; } } $document_count = count($document_list); - $total_count = $widget_info->rows_list_count * $widget_info->cols_list_count; for($i=$document_count;$i<$total_count;$i++) $document_list[] = new DocumentItem(); $widget_info->document_list = $document_list; From 8151402ad5dd29828b7584162762c8d4dc186713 Mon Sep 17 00:00:00 2001 From: rokmcssu Date: Tue, 29 Jan 2008 07:04:39 +0000 Subject: [PATCH 176/278] =?UTF-8?q?#394=20=ED=81=90=EB=B8=8C=EB=A6=AC?= =?UTF-8?q?=EB=93=9C=20=EB=AA=A8=EB=93=88=EC=9D=98=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=95=20=EB=B2=84=EA=B7=B8=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3617 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBCubrid.class.php | 170 +++++++++++++++++----------------- 1 file changed, 85 insertions(+), 85 deletions(-) diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 8943d9299..d94c09631 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -423,21 +423,21 @@ $name = $val['name']; $value = $val['value']; if($this->getColumnType($output->column_type,$name)!='number') { - $clen=strlen($value); - if ($clen <= $this->cutlen) - $value = "'".$this->addQuotes($value)."'"; - else { - $wrk=""; - $off=0; - while ($off<$clen) { - $wlen=$clen-$off; - if ($wlen>$this->cutlen) $wlen=$this->cutlen; - if ($off>0) $wrk .= "+\n"; - $wrk .= "'".$this->addQuotes(substr($value, $off, $wlen))."'"; - $off += $wlen; - } - $value = $wrk; - } + $clen=strlen($value); + if ($clen <= $this->cutlen) + $value = "'".$this->addQuotes($value)."'"; + else { + $wrk=""; + $off=0; + while ($off<$clen) { + $wlen=$clen-$off; + if ($wlen>$this->cutlen) $wlen=$this->cutlen; + if ($off>0) $wrk .= "+\n"; + $wrk .= "'".$this->addQuotes(substr($value, $off, $wlen))."'"; + $off += $wlen; + } + $value = $wrk; + } if(!$value) $value = 'null'; } elseif(!$value || is_numeric($value)) $value = (int)$value; @@ -467,21 +467,21 @@ if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value; else { if($output->column_type[$name]!='number') { - $clen=strlen($value); - if ($clen <= $this->cutlen) - $value = "'".$this->addQuotes($value)."'"; - else { - $wrk=""; - $off=0; - while ($off<$clen) { - $wlen=$clen-$off; - if ($wlen>$this->cutlen) $wlen=$this->cutlen; - if ($off>0) $wrk .= "+\n"; - $wrk .= "'".$this->addQuotes(substr($value, $off, $wlen))."'"; - $off += $wlen; - } - $value = $wrk; - } + $clen=strlen($value); + if ($clen <= $this->cutlen) + $value = "'".$this->addQuotes($value)."'"; + else { + $wrk=""; + $off=0; + while ($off<$clen) { + $wlen=$clen-$off; + if ($wlen>$this->cutlen) $wlen=$this->cutlen; + if ($off>0) $wrk .= "+\n"; + $wrk .= "'".$this->addQuotes(substr($value, $off, $wlen))."'"; + $off += $wlen; + } + $value = $wrk; + } } elseif(!$value || is_numeric($value)) $value = (int)$value; @@ -573,16 +573,16 @@ $index_list[] = sprintf('%s %s', $val[0], $val[1]); } if(count($index_list)) $query .= ' order by '.implode(',',$index_list); - $query = sprintf('%s for orderby_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s for orderby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); } else { if (count($output->groups)) - $query = sprintf('%s having groupby_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s having groupby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); else { if ($condition) - $query = sprintf('%s and inst_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s and inst_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); else - $query = sprintf('%s where inst_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s where inst_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); } } @@ -609,53 +609,53 @@ /** * @brief 현재 시점의 Stack trace를 보여줌.결과를 fetch **/ - function backtrace() - { - $output = "
    \n"; - $output .= "Backtrace:
    \n"; - $backtrace = debug_backtrace(); - - foreach ($backtrace as $bt) { - $args = ''; - foreach ($bt['args'] as $a) { - if (!empty($args)) { - $args .= ', '; - } - switch (gettype($a)) { - case 'integer': - case 'double': - $args .= $a; - break; - case 'string': - $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : ''); - $args .= "\"$a\""; - break; - case 'array': - $args .= 'Array('.count($a).')'; - break; - case 'object': - $args .= 'Object('.get_class($a).')'; - break; - case 'resource': - $args .= 'Resource('.strstr($a, '#').')'; - break; - case 'boolean': - $args .= $a ? 'True' : 'False'; - break; - case 'NULL': - $args .= 'Null'; - break; - default: - $args .= 'Unknown'; - } - } - $output .= "
    \n"; - $output .= "file: {$bt['line']} - {$bt['file']}
    \n"; - $output .= "call: {$bt['class']}{$bt['type']}{$bt['function']}($args)
    \n"; - } - $output .= "
    \n"; - return $output; - } + function backtrace() + { + $output = "
    \n"; + $output .= "Backtrace:
    \n"; + $backtrace = debug_backtrace(); + + foreach ($backtrace as $bt) { + $args = ''; + foreach ($bt['args'] as $a) { + if (!empty($args)) { + $args .= ', '; + } + switch (gettype($a)) { + case 'integer': + case 'double': + $args .= $a; + break; + case 'string': + $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : ''); + $args .= "\"$a\""; + break; + case 'array': + $args .= 'Array('.count($a).')'; + break; + case 'object': + $args .= 'Object('.get_class($a).')'; + break; + case 'resource': + $args .= 'Resource('.strstr($a, '#').')'; + break; + case 'boolean': + $args .= $a ? 'True' : 'False'; + break; + case 'NULL': + $args .= 'Null'; + break; + default: + $args .= 'Unknown'; + } + } + $output .= "
    \n"; + $output .= "file: {$bt['line']} - {$bt['file']}
    \n"; + $output .= "call: {$bt['class']}{$bt['type']}{$bt['function']}($args)
    \n"; + } + $output .= "
    \n"; + return $output; + } /** @@ -696,16 +696,16 @@ $index_list[] = sprintf('%s %s', $val[0], $val[1]); } if(count($index_list)) $query .= ' order by '.implode(',',$index_list); - $query = sprintf('%s for orderby_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s for orderby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); } else { if (count($output->groups)) - $query = sprintf('%s having groupby_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s having groupby_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); else { if ($condition) - $query = sprintf('%s and inst_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s and inst_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); else - $query = sprintf('%s where inst_num() between %d and %d', $query, $start_count, $list_count); + $query = sprintf('%s where inst_num() between %d and %d', $query, $start_count + 1, $list_count + $start_count); } } From 50ecfaf9a1febb61d831f24c7d4b3db1a4d9dd43 Mon Sep 17 00:00:00 2001 From: haneul Date: Tue, 29 Jan 2008 09:07:00 +0000 Subject: [PATCH 177/278] =?UTF-8?q?=EC=98=81=EB=AC=B8=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3619 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/point/lang/en.lang.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/point/lang/en.lang.php b/modules/point/lang/en.lang.php index c6ffb8c80..1c4c9223a 100644 --- a/modules/point/lang/en.lang.php +++ b/modules/point/lang/en.lang.php @@ -34,8 +34,8 @@ $lang->cmd_point_recal = 'Recalculate Point'; $lang->about_cmd_point_recal = "This will check articles/comments/attached files and reset all members' point to preset point."; - $lang->point_link_group = '그룹 연동'; - $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->point_link_group = 'Group Change by Level'; + $lang->about_point_link_group = 'If you specify level for a specific group, users are assigned into the group when they adavnce to the level by getting points. When new group is assigned, the user is removed from the former assigned group.'; $lang->about_module_point = "You can set point for each module and modules which don't have any value will use default point.
    All point will be restored on acting reverse."; From 0865bddced4771d4324370358dbd863733f8dd08 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 30 Jan 2008 00:54:08 +0000 Subject: [PATCH 178/278] =?UTF-8?q?php5=20=EC=9D=B4=EC=A0=84=EB=B2=84?= =?UTF-8?q?=EC=A0=84=EC=9D=BC=EB=95=8C=20pdo=EA=B4=80=EB=A0=A8=20DB?= =?UTF-8?q?=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=9C=20=EC=BD=94=EB=93=9C=EC=9D=98=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EB=B9=84=EA=B5=90=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3620 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 6c3beea8b..3f5c634b3 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -83,7 +83,7 @@ for($i=0;$i Date: Wed, 30 Jan 2008 02:44:36 +0000 Subject: [PATCH 179/278] =?UTF-8?q?=ED=8F=AC=EC=9D=B8=ED=8A=B8=20=EB=9E=AD?= =?UTF-8?q?=ED=82=B9=20=EC=9C=84=EC=A0=AF=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EC=9C=84=EC=A0=AF=EC=9D=98=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=EB=AA=85=EC=97=90=20=EC=82=AC=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EB=8A=94=20javascript=20escape=EC=9D=98=20php=20unescape=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3621 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 2 +- config/func.inc.php | 16 ++++++++++++++-- widgets/rank_point/rank_point.class.php | 2 ++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index 1fe6a6f2d..ccbc26345 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -83,7 +83,7 @@ if(count($object_vars)) { foreach($object_vars as $key => $val) { if(in_array($key, array('body','class','style','widget_sequence','widget','widget_padding_left','widget_padding_top','widget_padding_bottom','widget_padding_right'))) continue; - $args->{$key} = utf8RawUrlDecode(utf8RawUrlDecode($val)); + $args->{$key} = utf8RawUrlDecode($val); } } diff --git a/config/func.inc.php b/config/func.inc.php index 5ac341df6..6cdb5ed08 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -471,6 +471,11 @@ return preg_replace('/index.php/i','',$_SERVER['SCRIPT_NAME']); } + /** + * javascript의 escape의 php unescape 함수 + * Function converts an Javascript escaped string back into a string with specified charset (default is UTF-8). + * Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps + **/ function utf8RawUrlDecode ($source) { $decodedStr = ""; $pos = 0; @@ -485,8 +490,7 @@ $pos++; $unicodeHexVal = substr ($source, $pos, 4); $unicode = hexdec ($unicodeHexVal); - $entity = "&#". $unicode . ';'; - $decodedStr .= utf8_encode ($entity); + $decodedStr .= _code2utf($unicode); $pos += 4; } else { @@ -502,4 +506,12 @@ } return $decodedStr; } + + function _code2utf($num){ + if($num<128)return chr($num); + if($num<2048)return chr(($num>>6)+192).chr(($num&63)+128); + if($num<65536)return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128); + if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128); + return ''; + } ?> diff --git a/widgets/rank_point/rank_point.class.php b/widgets/rank_point/rank_point.class.php index de79b7ded..4b609926e 100644 --- a/widgets/rank_point/rank_point.class.php +++ b/widgets/rank_point/rank_point.class.php @@ -45,6 +45,8 @@ $obj->list_count = $list_count; $obj->is_admin = $args->without_admin == "true" ? "N" : ""; + $output = new Object(); + if(count($target_group) || count($target_group_without)) { // 그룹 목록을 구해옴 $group_list = $oMemberModel->getGroups(); From 5a1ae48b71549a4ef99e1bc84f88523db42b000c Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 30 Jan 2008 02:47:23 +0000 Subject: [PATCH 180/278] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=ED=8F=AC=ED=95=A8=EB=90=9C=20=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=EC=9D=98=20=ED=8C=8C=EC=9D=BC=EC=B2=A8=EB=B6=80=20?= =?UTF-8?q?=EC=95=88=EB=82=B4=20=EB=AC=B8=EA=B5=AC=EC=9D=98=20IE6/IE7?= =?UTF-8?q?=EC=9D=98=20=EA=B8=80=EC=9E=90=20=ED=81=AC=EA=B8=B0=20=ED=82=A4?= =?UTF-8?q?=EC=9B=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3622 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/default/css/editor.css | 4 ++-- modules/editor/skins/msword2007/css/editor.css | 4 ++-- modules/editor/skins/xquared/css/default.css | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/editor/skins/default/css/editor.css b/modules/editor/skins/default/css/editor.css index cc7f0cbe0..71ad31ba9 100644 --- a/modules/editor/skins/default/css/editor.css +++ b/modules/editor/skins/default/css/editor.css @@ -41,8 +41,8 @@ .xeEditor .fileAttach .fileListArea .fileList { background:transparent; overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} .xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} .xeEditor .fileAttach .fileUploadControl { float:left; } -.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;} -*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:7pt; } +.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:8pt; text-align:right;} +*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:8pt; } .xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;} .xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;} diff --git a/modules/editor/skins/msword2007/css/editor.css b/modules/editor/skins/msword2007/css/editor.css index 882edf11c..d23101e75 100644 --- a/modules/editor/skins/msword2007/css/editor.css +++ b/modules/editor/skins/msword2007/css/editor.css @@ -47,8 +47,8 @@ .xeEditor .fileAttach .fileListArea .fileList { background:url(../images/select_dot.gif); overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} .xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} .xeEditor .fileAttach .fileUploadControl { float:left; } -.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;} -*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:7pt; } +.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:8pt; text-align:right;} +*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:8pt; } .xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;} .xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;} diff --git a/modules/editor/skins/xquared/css/default.css b/modules/editor/skins/xquared/css/default.css index ce6f21227..421cf8168 100644 --- a/modules/editor/skins/xquared/css/default.css +++ b/modules/editor/skins/xquared/css/default.css @@ -17,8 +17,8 @@ .xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:10px; font-size:11px;} .xeEditor .fileAttach .fileListArea .fileList option { line-height:100%; padding-left:.5em;} .xeEditor .fileAttach .fileUploadControl { float:left; } -.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:7pt; text-align:right;} -*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:7pt; } +.xeEditor .fileAttach .file_attach_info { color:#AAAAAA; font-size:.9em; _font-size:8pt; text-align:right;} +*:first-child+html .xeEditor .fileAttach .file_attach_info { font-size:8pt; } .xeEditor .fileAttach .fileUploadControl .uploaderButton { display:block; cursor:pointer; background:url(../images/buttonTypeBCenter.gif) repeat-x left center; line-height:100%; overflow:visible; color:#3f4040; margin:0 1px; font-size:.9em; white-space:nowrap;} .xeEditor .fileAttach .fileUploadControl .uploaderButton:hover { text-decoration:none;} From aa981f248861776abaaf79c3c384d0bd5b3d7521 Mon Sep 17 00:00:00 2001 From: supershop Date: Wed, 30 Jan 2008 03:56:23 +0000 Subject: [PATCH 181/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3623 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/en.lang.php | 3 ++- modules/document/lang/en.lang.php | 2 +- modules/member/lang/en.lang.php | 2 +- modules/module/lang/en.lang.php | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index e4b54dc9b..d536cda1b 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -7,7 +7,7 @@ $lang->board = "Board"; - $lang->except_notice = "공지사항 제외"; + $lang->except_notice = "Exclude Notices"; $lang->cmd_manage_menu = 'Menu management'; $lang->cmd_make_child = 'Add child category'; @@ -32,5 +32,6 @@ $lang->about_layout_setup = 'You can manually modify board layout code. Insert or manage the widget code anywhere you want'; $lang->about_board_category = 'You can make board categories.
    When board category is broken, try rebuilding the cache file manually.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; + $lang->about_except_notice = "Notice articles will not be displayed on normal list."; $lang->about_board = "This module is for creating and managing boards.\nYou may select the module name from the list after creating one to configure specifically.\nPlease be careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)"; ?> diff --git a/modules/document/lang/en.lang.php b/modules/document/lang/en.lang.php index fa0cea306..d9e2c7a0b 100644 --- a/modules/document/lang/en.lang.php +++ b/modules/document/lang/en.lang.php @@ -14,7 +14,7 @@ $lang->title_bold = 'Bold'; $lang->title_color = 'Color'; - $lang->cmd_search_next = '계속 검색'; + $lang->cmd_search_next = 'Search Next'; $lang->cmd_temp_save = 'Temporary Save'; diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index df5dac5ee..4d812c245 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -143,7 +143,7 @@ $lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages"; $lang->msg_disallow_message = 'Failed to send because receiver rejects message reception'; $lang->msg_insert_group_name = 'Please input name of group'; - $lang->msg_check_group = '그룹을 선택해 주세요'; + $lang->msg_check_group = 'Please select the group'; $lang->msg_not_uploaded_profile_image = 'Profile image could not be registered'; $lang->msg_not_uploaded_image_name = 'Image name could not be registered'; diff --git a/modules/module/lang/en.lang.php b/modules/module/lang/en.lang.php index d947ed942..98d64ed51 100644 --- a/modules/module/lang/en.lang.php +++ b/modules/module/lang/en.lang.php @@ -52,7 +52,7 @@ $lang->about_skin = 'You may choose a module skin.'; $lang->about_use_category = 'If checked, category function will be enabled.'; $lang->about_list_count = 'You can set the number of limit to show article in a page.(default is 20)'; - $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; + $lang->about_search_list_count = 'You may set the number of articles to be exposed when you use search or category function. (default is 20)'; $lang->about_page_count = 'You can set the number of page link to move pages in a bottom of page.(default is 10)'; $lang->about_admin_id = 'You can grant a manager to have all permissions to the module.\n You can enter multiple IDs using
    ,(comma) \n(but the module manager cannot access the site admin page.)'; $lang->about_grant = 'If you disable all permissions for a specific object, members who has not logged in would get permission.'; From a0f966b42be13a1d8ba7f722f6d59a4f17584df0 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 30 Jan 2008 04:13:53 +0000 Subject: [PATCH 182/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3624 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/style.webzine.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xe_board/style.webzine.html b/modules/board/skins/xe_board/style.webzine.html index 9d7598eef..5bde292fb 100644 --- a/modules/board/skins/xe_board/style.webzine.html +++ b/modules/board/skins/xe_board/style.webzine.html @@ -118,7 +118,7 @@
    - + From 47f5c9a1f82ce8626dacee3fd9ad3493f4ce3eab Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 30 Jan 2008 04:36:23 +0000 Subject: [PATCH 183/278] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20>=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83?= =?UTF-8?q?=20=ED=8E=B8=EC=A7=91=EC=8B=9C=20textarea=EC=9D=98=20width?= =?UTF-8?q?=EA=B0=80=20=EC=98=81=EC=97=AD=EC=9D=84=20=EC=B9=A8=EB=B2=94?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20?= =?UTF-8?q?=ED=8E=B8=EC=A7=91=EC=B0=BD=EC=9D=B4=20=EC=95=84=EB=9E=98?= =?UTF-8?q?=EB=A1=9C=20=EB=96=A8=EC=96=B4=EC=A7=80=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3626 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/tpl/css/admin.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/admin/tpl/css/admin.css b/modules/admin/tpl/css/admin.css index 21ce08c60..8cb1509ae 100644 --- a/modules/admin/tpl/css/admin.css +++ b/modules/admin/tpl/css/admin.css @@ -130,6 +130,6 @@ h4 .view { color:#158692; padding-right:.6em; font:bold .9em Tahoma; background: #popFooter { width:620px; background:#f7f7f6; border-top:1px solid #e8e8e7; padding:.5em 0 .5em 0; overflow:hidden; } #popFooter .close { position:relative; left:50%; margin-left:-1em; float:left;} -.layout_editor { width:100%; height:500px; border:0px; font-size:1em; } +.layout_editor { width:99%; height:500px; border:0px; font-size:1em; } .layout_editor_box { padding:10px; border:1px solid #DDDDDD; } From d0696e472cf3fb9d1614b886219392d876ca046d Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 31 Jan 2008 09:48:15 +0000 Subject: [PATCH 184/278] =?UTF-8?q?MySQL=20Innodb=EC=97=90=EC=84=9C=20tran?= =?UTF-8?q?saction=20start=20=EB=B3=80=EC=88=98=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EC=9D=B4=20=EB=B9=A0=EC=A7=84=20=EB=AC=B8=EC=A0=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95.=20by=20vhain=EB=8B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3627 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBMysql_innodb.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index a653cc420..f46016978 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -121,6 +121,7 @@ **/ function begin() { if(!$this->isConnected() || $this->transaction_started) return; + $this->transaction_started = true; $this->_query("begin"); } From e77fff6715acaa019823cb624c447367a3d8816b Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 1 Feb 2008 02:12:36 +0000 Subject: [PATCH 185/278] =?UTF-8?q?xe=5Fboard=EC=9D=98=20=EC=B2=A8?= =?UTF-8?q?=EB=B6=80=ED=8C=8C=EC=9D=BC=20=EC=95=84=EC=9D=B4=EC=BD=98?= =?UTF-8?q?=EC=9D=B4=20=EC=9E=98=EB=A0=A4=20=EB=B3=B4=EC=9D=B4=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3628 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index d0033c94c..f562af552 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -87,7 +87,7 @@ Jeong, Chan Myeong 070601~070630 .boardRead .tag li a { color:#444444;} .boardRead .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;} -.boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px;} +.boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px; height:22px;} .boardRead .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; } .boardRead .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; } .boardRead .fileAttached li a:visited { color:#777777;} From bab732877b4f5339e3c3299429e61a5567a91711 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 1 Feb 2008 02:18:43 +0000 Subject: [PATCH 186/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3629 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 6 +++--- modules/board/skins/xe_board/css/cyan.css | 4 ++-- modules/board/skins/xe_board/css/green.css | 4 ++-- modules/board/skins/xe_board/css/purple.css | 4 ++-- modules/board/skins/xe_board/css/red.css | 4 ++-- modules/board/skins/xe_board/css/white.css | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index f562af552..ae9f0cf8c 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -87,8 +87,8 @@ Jeong, Chan Myeong 070601~070630 .boardRead .tag li a { color:#444444;} .boardRead .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;} -.boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px; height:22px;} -.boardRead .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; } +.boardRead .fileAttached h5 { font-weight:normal; color:#999999; font-size:1em; line-height:22px; } +.boardRead .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; height:18px;} .boardRead .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; } .boardRead .fileAttached li a:visited { color:#777777;} @@ -125,7 +125,7 @@ Jeong, Chan Myeong 070601~070630 .replyBox .fileAttached { border:1px solid #EFEFEF; background-color:#F4F4F4; padding:5px; margin-top:10px; overflow:hidden;} .replyBox .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; line-height:22px;} -.replyBox .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; } +.replyBox .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; height:18px;} .replyBox .fileAttached li a { text-decoration:none; font-size:.9em; white-space:nowrap; color:#444444; } .replyBox .fileAttached li a:visited { color:#777777;} diff --git a/modules/board/skins/xe_board/css/cyan.css b/modules/board/skins/xe_board/css/cyan.css index 58f24497e..684534d9e 100644 --- a/modules/board/skins/xe_board/css/cyan.css +++ b/modules/board/skins/xe_board/css/cyan.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#2895c0; } /* boardRead */ -.boardRead .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left 2px;} +.boardRead .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left top;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#2895c0;} -.replyBox .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left 2px;} +.replyBox .fileAttached li { background:url(../images/cyan/iconFile.gif) no-repeat left top;} diff --git a/modules/board/skins/xe_board/css/green.css b/modules/board/skins/xe_board/css/green.css index 2d5f43029..eb0b34992 100644 --- a/modules/board/skins/xe_board/css/green.css +++ b/modules/board/skins/xe_board/css/green.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#38b549; } /* boardRead */ -.boardRead .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left 2px;} +.boardRead .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left top;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#38b549;} -.replyBox .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left 2px;} +.replyBox .fileAttached li { background:url(../images/green/iconFile.gif) no-repeat left top;} diff --git a/modules/board/skins/xe_board/css/purple.css b/modules/board/skins/xe_board/css/purple.css index a920b2847..ff5f45cb9 100644 --- a/modules/board/skins/xe_board/css/purple.css +++ b/modules/board/skins/xe_board/css/purple.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#b1ae00; } /* boardRead */ -.boardRead .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left 2px;} +.boardRead .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left top;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#b1ae00;} -.replyBox .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left 2px;} +.replyBox .fileAttached li { background:url(../images/purple/iconFile.gif) no-repeat left top;} diff --git a/modules/board/skins/xe_board/css/red.css b/modules/board/skins/xe_board/css/red.css index 38359226c..5e67302af 100644 --- a/modules/board/skins/xe_board/css/red.css +++ b/modules/board/skins/xe_board/css/red.css @@ -21,9 +21,9 @@ .pageNavigation .current { color:#ff6600; } /* boardRead */ -.boardRead .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left 2px;} +.boardRead .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left top;} /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#ff6600;} -.replyBox .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left 2px;} +.replyBox .fileAttached li { background:url(../images/red/iconFile.gif) no-repeat left top;} diff --git a/modules/board/skins/xe_board/css/white.css b/modules/board/skins/xe_board/css/white.css index 132372e2c..9705e7d4d 100644 --- a/modules/board/skins/xe_board/css/white.css +++ b/modules/board/skins/xe_board/css/white.css @@ -12,7 +12,7 @@ .accountNavigation li.myInfo a { background:url(../images/white/iconMyInfo.gif) no-repeat left top; padding-left:14px; } /* boardRead */ -.boardRead .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left 2px;} +.boardRead .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left top;} /* style.list */ .boardList th { background:#ffffff url(../images/white/lineBoardListTh.gif) no-repeat left bottom; } @@ -26,4 +26,4 @@ /* replyAndTrackback */ .buttonBox .replyAndTrackback a strong { color:#ff6600;} -.replyBox .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left 2px;} +.replyBox .fileAttached li { background:url(../images/white/iconFile.gif) no-repeat left top;} From f7ac2f007fc48e04d732eb84d5448572e7d2a158 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 1 Feb 2008 10:02:44 +0000 Subject: [PATCH 187/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3630 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/newest_document/skins/xe_official/css/black.css | 4 ++-- widgets/newest_document/skins/xe_official/css/white.css | 4 ++-- widgets/webzine/skins/xe_official/css/normal.css | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/widgets/newest_document/skins/xe_official/css/black.css b/widgets/newest_document/skins/xe_official/css/black.css index a14fc63d5..59fdfe2cf 100644 --- a/widgets/newest_document/skins/xe_official/css/black.css +++ b/widgets/newest_document/skins/xe_official/css/black.css @@ -6,8 +6,8 @@ .latest_black ul li .title a { color:#818181; text-decoration:none; } .latest_black ul li .title a:hover { text-decoration:underline; } -.latest_black ul li .title span.comment { color:#FE6700; font:.8em Tahoma; } -.latest_black ul li .title span.comment a { color:#FE6700; font:.8em Tahoma; } +.latest_black ul li .title span.comment { color:#FE6700; font:.9em Tahoma; } +.latest_black ul li .title span.comment a { color:#FE6700; font:.9em Tahoma; } .latest_black ul li .date { color:#999999; font:.8em Tahoma; white-space:nowrap; margin-right:5px;} diff --git a/widgets/newest_document/skins/xe_official/css/white.css b/widgets/newest_document/skins/xe_official/css/white.css index dbf002a4c..078498964 100644 --- a/widgets/newest_document/skins/xe_official/css/white.css +++ b/widgets/newest_document/skins/xe_official/css/white.css @@ -6,8 +6,8 @@ .latest_white ul li .title a { color:#555555; text-decoration:none; } .latest_white ul li .title a:hover { text-decoration:underline; } -.latest_white ul li .title span.comment { color:#FE6700; font:.8em Tahoma; } -.latest_white ul li .title span.comment a { color:#FE6700; font:.8em Tahoma; } +.latest_white ul li .title span.comment { color:#FE6700; font:.9em Tahoma; } +.latest_white ul li .title span.comment a { color:#FE6700; font:.9em Tahoma; } .latest_white ul li .date { color:#999999; font:.8em Tahoma; white-space:nowrap; margin-right:5px;} diff --git a/widgets/webzine/skins/xe_official/css/normal.css b/widgets/webzine/skins/xe_official/css/normal.css index 2953f356e..9585eaa20 100644 --- a/widgets/webzine/skins/xe_official/css/normal.css +++ b/widgets/webzine/skins/xe_official/css/normal.css @@ -20,7 +20,7 @@ .nw_box .thumbnailBox .titleBox { margin-top:8px; margin-bottom:5px;} .nw_box .thumbnailBox .titleBox .title { } -.nw_box .thumbnailBox .titleBox .title strong { font-weight:bold; font-size:0.9em; color:#ed2a32; } +.nw_box .thumbnailBox .titleBox .title strong { font-weight:normal; font-size:0.9em; color:#ed2a32; } .nw_box .thumbnailBox .titleBox .title a { color:#000000; text-decoration:none; } .nw_box .thumbnailBox .titleBox .title a:hover { text-decoration:underline; } From 629fddf3605f4e889284c26320ce17e5951c8ea5 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 1 Feb 2008 10:21:28 +0000 Subject: [PATCH 188/278] =?UTF-8?q?=EC=9B=B9=EC=A7=84=ED=98=95=20=EC=9C=84?= =?UTF-8?q?=EC=A0=AF=EC=97=90=20=EA=B3=B5=EC=A7=80=EC=82=AC=ED=95=AD?= =?UTF-8?q?=EC=9A=A9=EC=9C=BC=EB=A1=9C=20=EC=93=B8=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8A=94=20=EA=B8=B0=EB=B3=B8=20=EC=8A=A4=ED=82=A8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3631 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../webzine/skins/notice_style/css/normal.css | 16 ++++++ widgets/webzine/skins/notice_style/list.html | 49 +++++++++++++++++++ widgets/webzine/skins/notice_style/skin.xml | 25 ++++++++++ 3 files changed, 90 insertions(+) create mode 100644 widgets/webzine/skins/notice_style/css/normal.css create mode 100644 widgets/webzine/skins/notice_style/list.html create mode 100644 widgets/webzine/skins/notice_style/skin.xml diff --git a/widgets/webzine/skins/notice_style/css/normal.css b/widgets/webzine/skins/notice_style/css/normal.css new file mode 100644 index 000000000..3c2881850 --- /dev/null +++ b/widgets/webzine/skins/notice_style/css/normal.css @@ -0,0 +1,16 @@ +.noticeBox { padding-bottom:5px; overflow:hidden; } + +.noticeBox h2 { font-size:1em; display:block; height:21px; padding:9px 0 0 9px; margin-bottom:5px; color:#000000; background:url(../images/normal/lineNotice.gif) no-repeat left bottom;} + +.noticeBox .listTable { width:100%; table-layout:fixed; border:none;} + +.noticeBox .titleBox { margin-top:8px;border-bottom:2px solid #DDDDDD; padding-bottom:5px; margin-bottom:10px; } +.noticeBox .titleBox .title { } +.noticeBox .titleBox .title strong { font-weight:normal; font-size:0.9em; color:#ed2a32; } +.noticeBox .titleBox .title a { font-weight:bold; font-size:1.4em; color:#444444; text-decoration:none; } +.noticeBox .titleBox .title a:hover { font-weight:bold; font-size:1.4em; text-decoration:underline; } +.noticeBox .titleBox .regdate { font-size:0.9em; color:#AAAAAA; } + +.noticeBox .contentbox { line-height:120%; } +.noticeBox .contentbox img.thumbnail { padding:4px; border:1px solid #DEDEDE; margin:0 10px 10px 0;} +.noticeBox .contentbox img.thumbnail:hover { border:1px solid #54564b; } diff --git a/widgets/webzine/skins/notice_style/list.html b/widgets/webzine/skins/notice_style/list.html new file mode 100644 index 000000000..615f526ea --- /dev/null +++ b/widgets/webzine/skins/notice_style/list.html @@ -0,0 +1,49 @@ + + + + + + +
    + +

    {$widget_info->title}

    + + + +
    +
    {$document->getNickName()}
    {$document->get('readed_count')>0?$document->get('readed_count'):' '}{$document->get('voted_count')>0?$document->get('voted_count'):' '}{$document->get('voted_count')!=0?$document->get('voted_count'):' '} {$document->getRegdate('Y-m-d')} {zdate($document->get('last_update'),'Y-m-d H:i')}
    + {@ $count = 0; } + + + + {@ $oDocument = $widget_info->document_list[$i*$widget_info->cols_list_count + $j]} + {@ $_existsThumbnail = $oDocument->thumbnailExists($widget_info->thumbnail_width,$widget_info->thumbnail_height,$widget_info->thumbnail_type) } + + + + + +
    + +
    + + + {$oDocument->getTitle($widget_info->subject_cut_size)} + + + + [{$oDocument->getRegdate("m-d")}] + + +
    + +
    + + {$oDocument->getSummary($widget_info->content_cut_size)} +
    + +
     
    + + + + diff --git a/widgets/webzine/skins/notice_style/skin.xml b/widgets/webzine/skins/notice_style/skin.xml new file mode 100644 index 000000000..afde87d30 --- /dev/null +++ b/widgets/webzine/skins/notice_style/skin.xml @@ -0,0 +1,25 @@ + + + 공지사항 형태의 출력 + 공지사항 형태의 출력 + 공지사항 형태의 출력 + 공지사항 형태의 출력 + + 제로 + Zero + Zero + Zero + 글 목록과 이미지가 같이 출력되는 웹진형 스킨입니다. 이미지가 있는 글들만 노출이 됩니다. + コンテンツリストとイメージが一緒に出力されるウェブジンスタイルスキンです。イメージを含むコンテンツのみ表示されます。 + 可以同时显示最新主题列表及缩略图的网络杂志型默认皮肤。只显示有图片的最新主题。 + This is a webzine style skin that displays article list and images. Articles with images will be exposed only. + + + + 기본 컬러 + デフォルトカラー + 默认颜色 + Default Color + + + From 47e5a24be725435ca38c419af0679c5392aeeed8 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 04:51:16 +0000 Subject: [PATCH 189/278] Fixed English translations git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3632 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/blogapi/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/blogapi/conf/info.xml b/addons/blogapi/conf/info.xml index 17f8edb91..416de9f5a 100644 --- a/addons/blogapi/conf/info.xml +++ b/addons/blogapi/conf/info.xml @@ -33,9 +33,9 @@ This blogApi addon supports metaWeblog. - Toggling this with use option lets RSD tag be exposed for each module. + By using this option, it lets the RSD tag to be exposed to each module. URL to the api is http://setup_path/module_name/api. - Only selecting use option enables RSD tag and api to behave. + RSD tag and the api will work only if u use this addon. Este blogApi addon soporta el metaWeblog. From f9f89ba93b0f9dfb2d58d562f0752aafa7e6f8e7 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 04:56:09 +0000 Subject: [PATCH 190/278] Fixed English translations git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3633 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/counter/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/counter/conf/info.xml b/addons/counter/conf/info.xml index 54ff175d1..e8dc0179c 100644 --- a/addons/counter/conf/info.xml +++ b/addons/counter/conf/info.xml @@ -27,7 +27,7 @@ This addon logs access information based on the basic counter module within Zeroboard XE. - It is necessary for aggregation of access information to turn on this addon. + The access information will be collected only if you turn on this addon. Este addon contador básico de Zeroboard XE permite llevar la información de acceso a la página web de los visitantes. From 174b60e526aad0dbc4b37c4ae9df5d733acf4a41 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 04:59:38 +0000 Subject: [PATCH 191/278] Fixed English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3634 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/lemonpen/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/lemonpen/conf/info.xml b/addons/lemonpen/conf/info.xml index b5bf54ef2..b97cd882e 100644 --- a/addons/lemonpen/conf/info.xml +++ b/addons/lemonpen/conf/info.xml @@ -17,7 +17,7 @@ sid sid 레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요. - Please input sid value that you got after registering site at LemonPen. + Please input sid value that you got after registering at the LemonPen website. レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) From 97d67726368cf86daee6aee9daada6120ff5a719 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 14:36:00 +0000 Subject: [PATCH 192/278] Fixed English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3635 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/point_level_icon/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/point_level_icon/conf/info.xml b/addons/point_level_icon/conf/info.xml index 9ccbdb58a..0120e98ba 100644 --- a/addons/point_level_icon/conf/info.xml +++ b/addons/point_level_icon/conf/info.xml @@ -26,8 +26,8 @@ レベルアイコンは、「モジュール>ポイントシステム」で選択できます。 - This addon displays level icon in front of user name when you are using point system. - You can choose level icon on Module > Point System. + This addon displays level icon in front of the user name when you are using the point system. + You can choose the level icon on Module > Point System. Este addon muestra el nivel del ícono delante del nombre del usuario cuando es usado el sistema de puntos. From c117dc07f95e8e015cf83922076d2aa672345a76 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 15:07:02 +0000 Subject: [PATCH 193/278] Fixed English translation (still need some correction) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3636 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/conf/info.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 868004eb9..90b50415e 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -3,7 +3,7 @@ 사용자 추가 정보 및 커뮤니케이션 기능 활성화 会員情報・コミュニティアドオン 用户扩展信息 - Addon for enabling facilities for providing additional information about users and communicating + Enabling additional information about users and the communication function. Addon para activar la función de la Información addcional del usuario y de la comunicación. Аддон для предоставления дополнительной информации о пользователях и коммуникации @@ -45,12 +45,12 @@ Among other information about users, this addon displays image name, image mark, and signature. - In case of you not using this information, this stands apart from basic information so runtime can be reduced. - To expose image name, image mark, and signature, please turn on this addon. - 1. Just before displaying user information, this will figure out unique key of member from the definition of "&lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt;" and replace image name and/or image mark if they exsist. - 2. Just before displaying, this is gonna locate the definition of "&lt;div class="document_{unique key of document}"&gt;...&lt;/div&gt;" and insert the signature below it. - 3. When arrived a new slip, this will popup it. - 4. This makes available to send a slip if the target is a member when MemberModel::getMemberMenu is called. + This addon is normally turned off to reduce loading time. + To display image name, image mark, and the signature, please turn on this addon. + 1. Right before displaying, this addon will seek for the unique key of the member from &lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt; and will replace the content with the image name and/or image mark if they exist. + 2. Right before displaying, this addon will search for &lt;div class="document_{unique key of document}"&gt;...&lt;/div&gt; and will display the signature in the bottom of the article. + 3. When a new msessage is arrived, this will display the message in the popup window. + 4. This makes available to send a message if the target is a member when MemberModel::getMemberMenu is called. 5. This adds a menu for registering as a friend when MemberModel::getMemberMenu is called. From 2f728523b350769f2468de9358ee7a2a15b07c59 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 15:10:37 +0000 Subject: [PATCH 194/278] Fixed English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3637 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/rainbow_link/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/rainbow_link/conf/info.xml b/addons/rainbow_link/conf/info.xml index 09cf0fb2c..0e010ad3d 100644 --- a/addons/rainbow_link/conf/info.xml +++ b/addons/rainbow_link/conf/info.xml @@ -22,7 +22,7 @@ 此插件的rainbow.js文件版权属于 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a> - This addon adds a file named "rainbow.js" to headers, then linked text will get chameleon(rainbow) color change effect. + This addon will insert the "rainbow.js" file to the header, which will make the linked text to get the chameleon(rainbow) color change effect. "rainbow.js" Copyrightⓒ2007 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>. From f85ce1b270d1687b5bf458d14cf02fa15deef005 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 15:16:04 +0000 Subject: [PATCH 195/278] Added extra English translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3638 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_blog/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layouts/xe_blog/conf/info.xml b/layouts/xe_blog/conf/info.xml index 0eb5f4e0e..03fd8d7d9 100644 --- a/layouts/xe_blog/conf/info.xml +++ b/layouts/xe_blog/conf/info.xml @@ -82,11 +82,11 @@ 기본 모듈 기본 모듈 기본 모듈 - 기본 모듈 + Basic module 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 - 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 + The widgets that are being displayed in the layout will work properly if you select the basic module 상단 제목 From 6f23fc2e524a662672f795ae2260724a0cd2ff95 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 3 Feb 2008 15:27:11 +0000 Subject: [PATCH 196/278] Fixed English translation (still need some correction) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3639 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 90b50415e..6dc1dbd94 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -44,7 +44,7 @@ 5. 呼出MemberModel::getMemberMenu时,添加[加为好友]菜单。 - Among other information about users, this addon displays image name, image mark, and signature. + Among other information about users, this addon displays image name, image mark, and signature. This addon is normally turned off to reduce loading time. To display image name, image mark, and the signature, please turn on this addon. 1. Right before displaying, this addon will seek for the unique key of the member from &lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt; and will replace the content with the image name and/or image mark if they exist. From 5f03664751337e573138fa4ce882ecd10f0bc0e5 Mon Sep 17 00:00:00 2001 From: heemin Date: Sun, 3 Feb 2008 16:39:06 +0000 Subject: [PATCH 197/278] Changed AND Added Japanese Translation. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3640 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/jp.lang.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index c6cad0269..7f2cc1ee7 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -1,7 +1,7 @@ image_mark = 'イメージマーク'; $lang->image_mark_max_width = '横幅制限サイズ'; $lang->image_mark_max_height = '縦幅制限サイズ'; - $lang->enable_openid = 'OpenID使用'; + $lang->signature_max_height = '署名の高さの制限'; + $lang->enable_openid = 'OpenID使用'; $lang->enable_join = '会員加入を許可する'; $lang->limit_day = '臨時制限日'; $lang->limit_date = '制限日'; @@ -187,6 +188,7 @@ $lang->about_image_name = 'ユーザの名前を文字の代わりにイメージで表示させることができます。'; $lang->about_image_mark = '使用者の名前の前にマークを付けることができます。'; $lang->about_profile_image = 'ユーザのプロフィールイメージが使用できるようにします。'; + $lang->about_signature_max_height = '署名欄の高さのサイズを制限します。 (0 もしくは空の場合は制限なし。)'; $lang->about_accept_agreement = '加入規約をすべて読んだ上で同意します。'; $lang->about_member_default = '会員加入時に基本グループとして設定されます。'; From dd8bc240af7fe7db69da3e4a7728e2a78179b04c Mon Sep 17 00:00:00 2001 From: heemin Date: Sun, 3 Feb 2008 16:40:30 +0000 Subject: [PATCH 198/278] Changed AND Added Japanese Translation. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3641 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/jp.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index 7f2cc1ee7..d431a1c6d 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -41,7 +41,7 @@ $lang->image_mark = 'イメージマーク'; $lang->image_mark_max_width = '横幅制限サイズ'; $lang->image_mark_max_height = '縦幅制限サイズ'; - $lang->signature_max_height = '署名の高さの制限'; + $lang->signature_max_height = '署名欄の高さの制限'; $lang->enable_openid = 'OpenID使用'; $lang->enable_join = '会員加入を許可する'; $lang->limit_day = '臨時制限日'; From 1d88106251ebf0c27f9ccd4ecbeb061cbbdd28ba Mon Sep 17 00:00:00 2001 From: heemin Date: Sun, 3 Feb 2008 17:03:22 +0000 Subject: [PATCH 199/278] Changed AND Added Japanese Translation. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3642 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/jp.lang.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index d431a1c6d..5c7101c8b 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -116,8 +116,8 @@ $lang->msg_cart_is_null = '対象を選択してください。'; $lang->msg_checked_file_is_deleted = '%d個の添付ファイルが削除されました。'; - $lang->msg_find_account_title = 'IDどパスワードの情報'; - $lang->msg_find_account_info = '要求されたアカウント情報は下記の通りです。'; + $lang->msg_find_account_title = '会員IDどパスワードの情報'; + $lang->msg_find_account_info = '登録された会員情報は下記の通りです。'; $lang->msg_find_account_comment = '下のリンクをクリックすると上のパスワードに変更されます。
    ログインしてからパスワードを変更してください。'; $lang->msg_auth_mail_sended = '%s メールでは認証情報を含んだ内容が送信されました。 メールを確認してください。'; $lang->msg_invalid_auth_key = '正しくないアカウントの認証要求です。
    IDとパスワードの検索を行うか、サイト管理者にアカウント情報をお問い合わせください。'; From 0c03ed127dff50f6afb07f9153f1edddb527ddfd Mon Sep 17 00:00:00 2001 From: heemin Date: Thu, 7 Feb 2008 05:54:56 +0000 Subject: [PATCH 200/278] Changed AND Added Japanese Translation. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3643 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/point/lang/jp.lang.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/point/lang/jp.lang.php b/modules/point/lang/jp.lang.php index ec89c9e98..0e1b706f6 100644 --- a/modules/point/lang/jp.lang.php +++ b/modules/point/lang/jp.lang.php @@ -31,11 +31,11 @@ $lang->cmd_exp_calc = '計算'; $lang->cmd_exp_reset = '初期化'; - $lang->cmd_point_recal = '포인트 재계산'; - $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->cmd_point_recal = 'ポイント再計算'; + $lang->about_cmd_point_recal = '掲示物/コメント/添付ファイル全てを調べ、ポイント設定に合わせて、全会員のポイントを再計算します。'; - $lang->point_link_group = '그룹 연동'; - $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->point_link_group = 'グループ連動'; + $lang->about_point_link_group = 'グループにレベルを指定すると、該当レベルになったらグループが変更されます。 ただし、新しいグループに変更されると以前自動登録されたグループは消去されます。'; $lang->about_module_point = 'モジュール別にポイントを指定することができますが、指定されていないモジュールでは、デフォルトポイントが使用されます。すべてのポイント数は、反対のアクションを行った際には原状復帰されます。'; @@ -47,7 +47,7 @@ $lang->point_upload_file = 'アップロード'; $lang->point_delete_file = 'ファイル削除'; $lang->point_download_file = 'ダウンロード'; - $lang->point_read_document = '게시글 조회'; + $lang->point_read_document = '書き込み照会'; $lang->cmd_point_config = 'デフォルト設定'; @@ -57,6 +57,6 @@ $lang->msg_cannot_download = 'ポイントが不足しているため、ダウンロードできません。'; - $lang->point_recal_message = '포인트 적용중입니다. (%d / %d)'; - $lang->point_recal_finished = '포인트 재계산이 모두 완료되었습니다'; + $lang->point_recal_message = 'ただ今ポイントを適用しています。 (%d / %d)'; + $lang->point_recal_finished = 'ポイント再計算が完了しました。'; ?> From 844d1b33f9f283020c657967bbfc05d575b12c42 Mon Sep 17 00:00:00 2001 From: supershop Date: Sat, 9 Feb 2008 01:38:09 +0000 Subject: [PATCH 201/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3644 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/en.lang.php | 1 - modules/menu/lang/en.lang.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index d536cda1b..229fd6962 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -31,7 +31,6 @@ $lang->about_category_group_srls = 'Only the selected group will be able to see current categories. (Manually open xml file to expose)'; $lang->about_layout_setup = 'You can manually modify board layout code. Insert or manage the widget code anywhere you want'; $lang->about_board_category = 'You can make board categories.
    When board category is broken, try rebuilding the cache file manually.'; - $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_except_notice = "Notice articles will not be displayed on normal list."; $lang->about_board = "This module is for creating and managing boards.\nYou may select the module name from the list after creating one to configure specifically.\nPlease be careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)"; ?> diff --git a/modules/menu/lang/en.lang.php b/modules/menu/lang/en.lang.php index 8e37c5286..d4675bfa6 100644 --- a/modules/menu/lang/en.lang.php +++ b/modules/menu/lang/en.lang.php @@ -49,5 +49,5 @@ $lang->about_menu = "Menu module will help you to create a complete site through the convenient menu management which arranges created modules and links to layouts without any manual works..\nMenu is not a site manager, but it just has information which can link to modules and layouts so you can express different types of menu."; - $lang->alert_image_only = "이미지 파일만 등록가능합니다."; + $lang->alert_image_only = "Only image files can be registered."; ?> From beb897647d959135148a020e27f7386516ad2490 Mon Sep 17 00:00:00 2001 From: heemin Date: Tue, 12 Feb 2008 08:36:17 +0000 Subject: [PATCH 202/278] Changed AND Added Japanese Translation. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3645 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/lang/jp.lang.php | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/editor/lang/jp.lang.php b/modules/editor/lang/jp.lang.php index c524f33cd..3abb51a8d 100644 --- a/modules/editor/lang/jp.lang.php +++ b/modules/editor/lang/jp.lang.php @@ -28,23 +28,23 @@ $lang->cmd_disable = "未使用"; $lang->cmd_enable = "使用"; - $lang->editor_skin = '에디터 스킨'; - $lang->upload_file_grant = '파일 첨부 권한'; - $lang->enable_default_component_grant = '기본 컴포넌트 사용 권한'; - $lang->enable_component_grant = '컴포넌트 사용 권한'; - $lang->enable_html_grant = 'HTML편집 권한'; - $lang->enable_autosave = '자동저장 사용'; - $lang->height_resizable = '높이 조절 가능'; - $lang->editor_height = '에디터 높이'; + $lang->editor_skin = 'エディタースキン'; + $lang->upload_file_grant = 'ファイル添付権限'; + $lang->enable_default_component_grant = '基本コンポーネント使用権限'; + $lang->enable_component_grant = 'コンポーネント使用権限'; + $lang->enable_html_grant = 'HTML編集権限'; + $lang->enable_autosave = '自動保存使用'; + $lang->height_resizable = '高さの調節可能'; + $lang->editor_height = 'エディターの高さ'; - $lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다'; - $lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)'; - $lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다'; - $lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다'; - $lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.'; - $lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다'; + $lang->about_editor_skin = 'エディターのスキンの選択が出来ます。'; + $lang->about_upload_file_grant = 'ファイル添付可能な権限の設定が出来ます。(選択なしの場合、誰でも添付が可能)'; + $lang->about_default_component_grant = 'エディターでの基本コンポーネントを使用可能な権限の設定が出来ます。(選択なしの場合、誰でも利用可能)'; + $lang->about_component_grant = '基本コンポーネント以外の拡張コンポーネント機能が利用可能な権限の設定が出来ます。(選択なしの場合、誰でも利用可能)'; + $lang->about_editor_height = 'エディターの基本高さを設定します。'; + $lang->about_editor_height_resizable = 'エディターの高さを直接変更出来るようにします。'; + $lang->about_enable_html_grant = 'HTML編集権限を付与します。'; + $lang->about_enable_autosave = '書き込みのとき、自動保存機能をオンにします。'; $lang->edit->fontname = 'フォント'; $lang->edit->fontsize = 'フォントサイズ'; From 8a23896fa3c26d408bd5c44022cd3c80439114f0 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 12 Feb 2008 09:20:26 +0000 Subject: [PATCH 203/278] =?UTF-8?q?displayMultimedia()=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=EC=97=90=20flashvars=EA=B0=92=EC=9D=84=20=EB=B0=9B?= =?UTF-8?q?=EC=9D=84=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3646 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index 9ca8bdede..1ebbbea5b 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -177,7 +177,7 @@ function toggleDisplay(obj, opt) { /** * @brief 멀티미디어 출력용 (IE에서 플래쉬/동영상 주변에 점선 생김 방지용) **/ -function displayMultimedia(src, width, height, auto_start) { +function displayMultimedia(src, width, height, auto_start, flashvars) { if(src.indexOf('files')==0) src = request_uri+src; if(auto_start) auto_start = "true"; else auto_start = "false"; @@ -186,15 +186,18 @@ function displayMultimedia(src, width, height, auto_start) { var codebase = ""; var html = ""; + if(typeof(flashvars)=="undefined") flashvars = ""; + if(/\.swf/i.test(src)) { clsid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"; codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"; html = ""+ - ""+ + ""+ ""+ ""+ ""+ ""+ + ""+ ""+ "<\/object>"; } else if(/\.flv/i.test(src)) { From 57c9272fd6225cc6a04239103fe765673bd0c75e Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 01:30:03 +0000 Subject: [PATCH 204/278] =?UTF-8?q?=EC=A7=81=EC=A0=91=20=ED=8E=B8=EC=A7=91?= =?UTF-8?q?=20=EC=9C=84=EC=A0=AF=EC=97=90=20xe=5Fcontent=20className?= =?UTF-8?q?=EC=9D=84=20=EB=B6=80=EC=97=AC=ED=95=98=EC=97=AC=20style=20?= =?UTF-8?q?=EC=A0=95=EC=83=81=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3647 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index ccbc26345..473888751 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -119,7 +119,7 @@ // 내용 직접 추가일 경우 case 'widgetContent' : $body = base64_decode($args->body); - $output = sprintf('
    %s
    ', $style, $inner_style, $body); + $output = sprintf('
    %s
    ', $style, $inner_style, $body); break; // 위젯 박스일 경우 From dc45e416347c8077f70714cb1f0f869d0af9665a Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 04:03:58 +0000 Subject: [PATCH 205/278] =?UTF-8?q?#403=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EB=A6=AC=EC=82=AC=EC=9D=B4=EC=A6=88=EB=A5=BC=20xe=5Fcontent=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20=EA=B0=80=EC=A7=84=20div?= =?UTF-8?q?=EC=97=90=EC=84=9C=EB=8F=84=20=EC=A0=81=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=ED=95=98=EA=B3=A0=20?= =?UTF-8?q?=EB=AA=A8=EB=93=A0=20=EA=B2=8C=EC=8B=9C=EA=B8=80/=EC=BB=A8?= =?UTF-8?q?=ED=85=90=EC=B8=A0=EC=97=90=20=EB=AC=B4=EC=A1=B0=EA=B1=B4=20xe?= =?UTF-8?q?=5Fcontent=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=AA=85=EC=9D=84=20?= =?UTF-8?q?=EB=B6=80=EC=97=AC=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3648 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 4 ++-- modules/comment/comment.item.php | 3 +++ modules/document/document.item.php | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index 1ebbbea5b..30baa0633 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -228,10 +228,10 @@ function resizeImageContents() { // 상위 node의 className이 document_ 또는 comment_ 로 시작하지 않으면 패스 var parent = obj.parentNode; while(parent) { - if(parent.className && parent.className.search(/document_|comment_/i) != -1) break; + if(parent.className && parent.className.search(/xe_content|document_|comment_/i) != -1) break; parent = parent.parentNode; } - if (!parent || parent.className.search(/document_|comment_/i) < 0) continue; + if (!parent || parent.className.search(/xe_content|document_|comment_/i) < 0) continue; if(parent.parentNode) xWidth(parent, xWidth(parent.parentNode)); parent.style.width = '100%'; diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index d71612a78..a9540f9e7 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -180,6 +180,9 @@ $content, $this->comment_srl, $this->get('member_srl') ); + // 컨텐츠에 대한 조작이 필요하지 않더라도 xe_content라는 클래스명을 꼭 부여 + } else { + $content = sprintf('
    %s
    ', $content); } return $content; diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 45fac59de..c4b205344 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -268,6 +268,9 @@ $this->document_srl, $this->get('member_srl'), $this->document_srl, $this->get('member_srl') ); + // 컨텐츠에 대한 조작이 필요하지 않더라도 xe_content라는 클래스명을 꼭 부여 + } else { + $content = sprintf('
    %s
    ', $content); } return $content; From ff03bb0244294b1c3c2a8936d3775dcad0be425c Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 04:08:43 +0000 Subject: [PATCH 206/278] =?UTF-8?q?=EB=B2=84=EC=A0=84=EB=AA=85=20=EC=98=AC?= =?UTF-8?q?=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3649 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 33c7fe0f8..460aae9a7 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -14,7 +14,7 @@ * 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며 * config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함 **/ - define('__ZBXE_VERSION__', '0.2.8'); + define('__ZBXE_VERSION__', '0.2.9'); /** * @brief 디버깅 메세지 출력 From fce44a63f648be66cc44c4a158e31c1a9fef1af9 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 04:16:10 +0000 Subject: [PATCH 207/278] =?UTF-8?q?=EC=BB=A4=EB=B0=8B=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3650 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/index.php b/index.php index f0b1f9f29..ad14f4e83 100644 --- a/index.php +++ b/index.php @@ -36,6 +36,7 @@ * (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA) **/ + /** * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 **/ From 40e5d8a65d2832e8423a1b3615e14083f9edfbd5 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 04:41:31 +0000 Subject: [PATCH 208/278] =?UTF-8?q?=EC=BB=A4=EB=B0=8B=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3651 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- index.php | 1 - 1 file changed, 1 deletion(-) diff --git a/index.php b/index.php index ad14f4e83..f0b1f9f29 100644 --- a/index.php +++ b/index.php @@ -36,7 +36,6 @@ * (자유 소프트웨어 재단: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA) **/ - /** * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 **/ From c03f9bee4770b51931ab68c9f49b3008e222bfe0 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 04:42:46 +0000 Subject: [PATCH 209/278] =?UTF-8?q?=EC=BB=A4=EB=B0=8B=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3652 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/index.php b/index.php index f0b1f9f29..e6412311f 100644 --- a/index.php +++ b/index.php @@ -66,4 +66,5 @@ $oModuleHandler->init(); $oModule = &$oModuleHandler->procModule(); $oModuleHandler->displayContent($oModule); + ?> From 8e3caa39837a6cc31984c99a99946d4a909d52ca Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 04:43:09 +0000 Subject: [PATCH 210/278] =?UTF-8?q?=EC=BB=A4=EB=B0=8B=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=A7=88=EB=AC=B4=EB=A6=AC.=20ciabot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3653 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- index.php | 1 - 1 file changed, 1 deletion(-) diff --git a/index.php b/index.php index e6412311f..f0b1f9f29 100644 --- a/index.php +++ b/index.php @@ -66,5 +66,4 @@ $oModuleHandler->init(); $oModule = &$oModuleHandler->procModule(); $oModuleHandler->displayContent($oModule); - ?> From 4d1d8ba929a01033f15d404a156f394162deed9c Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 13 Feb 2008 11:53:25 +0000 Subject: [PATCH 211/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=A0=95=EB=B3=B4=EB=A5=BC=20DB=EC=97=90=20?= =?UTF-8?q?=EB=82=A8=EA=B2=A8=EC=84=9C=20=EC=B2=B4=ED=81=AC=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=EC=9D=84=20=EB=B6=80=ED=95=98?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=EB=A1=9C=20=EC=9D=B8=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EC=9D=BC=EB=8B=A8=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3654 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.controller.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index ced16b193..b3d173dac 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -333,16 +333,21 @@ return false; } - // document의 작성자가 회원일때 조사 - if($member_srl) { - - // 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 생각하고 세션 등록후 패스 - if($member_srl && $logged_info->member_srl == $member_srl) { - $_SESSION['readed_document'][$document_srl] = true; - return false; - } + // document의 작성자가 회원일때 글쓴이와 현재 로그인 사용자의 정보가 일치하면 읽었다고 판단후 세션 등록하고 패스 + if($member_srl && $logged_info->member_srl == $member_srl) { + $_SESSION['readed_document'][$document_srl] = true; + return false; } + // 조회수 업데이트 + $args->document_srl = $document_srl; + $output = executeQuery('document.updateReadedCount', $args); + + // 세션 등록 + $_SESSION['readed_document'][$document_srl] = true; + + /** + * DB를 이용한 조회수 체크는 부하 문제로 일단 제거 // 로그인 사용자이면 member_srl, 비회원이면 ipaddress로 판단 if($logged_info->member_srl) { $args->member_srl = $logged_info->member_srl; @@ -367,6 +372,7 @@ // 세션 정보에 남김 return $_SESSION['readed_document'][$document_srl] = true; + */ } /** From eefe8f825f9713510900d8f8c93c77f6b3c6ad6d Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 05:20:53 +0000 Subject: [PATCH 212/278] =?UTF-8?q?#406=20=EA=B2=8C=EC=8B=9C=ED=8C=90=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=97=90=20=EC=83=81=EB=8B=B4=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3655 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.admin.controller.php | 2 ++ modules/board/board.view.php | 27 ++++++++++++++++++- modules/board/lang/en.lang.php | 2 ++ modules/board/lang/es.lang.php | 2 ++ modules/board/lang/jp.lang.php | 2 ++ modules/board/lang/ko.lang.php | 2 ++ modules/board/lang/ru.lang.php | 2 ++ modules/board/lang/zh-CN.lang.php | 2 ++ modules/board/tpl/board_info.html | 4 +++ modules/board/tpl/board_insert.html | 7 +++++ modules/board/tpl/filter/insert_board.xml | 1 + modules/document/document.model.php | 1 + modules/document/queries/getDocumentList.xml | 1 + .../queries/getDocumentListWithinComment.xml | 1 + .../queries/getDocumentListWithinTag.xml | 1 + 15 files changed, 56 insertions(+), 1 deletion(-) diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index b92347ea0..52bb285e2 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -154,6 +154,7 @@ $extra_vars->list_count = $args->list_count; $extra_vars->search_list_count = $args->search_list_count; $extra_vars->except_notice = $args->except_notice!='Y'?'N':'Y'; + $extra_vars->consultation = $args->consultation!='Y'?'N':'Y'; $extra_vars->page_count = $args->page_count; $obj->extra_vars = serialize($extra_vars); @@ -179,6 +180,7 @@ $extra_var = delObjectVars(Context::getRequestVars(), $args); if($extra_var->use_category!='Y') $extra_var->use_category = 'N'; if($extra_var->except_notice!='Y') $extra_var->except_notice = 'N'; + if($extra_var->consultation!='Y') $extra_var->consultation = 'N'; unset($extra_var->act); unset($extra_var->page); unset($extra_var->board_name); diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 522e040ac..b13a90c50 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -25,9 +25,22 @@ // 기본 모듈 정보들 설정 (list_count, page_count는 게시판 모듈 전용 정보이고 기본 값에 대한 처리를 함) if($this->module_info->list_count) $this->list_count = $this->module_info->list_count; if($this->module_info->search_list_count) $this->search_list_count = $this->module_info->search_list_count; - if($this->module_info->except_notice == 'N') $this->except_notice = false; else $this->except_notice = true; if($this->module_info->page_count) $this->page_count = $this->module_info->page_count; + // 일반 목록에서 공지사항을 제외하는 기능의 체크 + if($this->module_info->except_notice == 'N') $this->except_notice = false; + else $this->except_notice = true; + + // 상담 기능 체크. 현재 게시판의 관리자이면 상담기능을 off시킴 + if($this->module_info->consultation == 'Y' && !$this->grant->manager) { + $this->consultation = true; + + // 현재 사용자가 비로그인 사용자라면 글쓰기/댓글쓰기/목록보기/글보기 권한을 제거함 + if(!Context::get('is_logged')) $this->grant->list = $this->grant->write_document = $this->grant->write_comment = $this->grant->view = false; + } else { + $this->consultation = false; + } + /** * 스킨 경로를 미리 template_path 라는 변수로 설정함 **/ @@ -94,6 +107,12 @@ // 글에 대한 정보를 구함 $oDocument->setDocument($document_srl); + // 상담 기능이 열려 있을 경우 현재 사용자의 글이 아니면 무시 + if($oDocument->isExists() && $this->consultation) { + $logged_info = Context::get('logged_info'); + if($oDocument->get('member_srl')!=$logged_info->member_srl) $oDocument = new DocumentItem(); + } + // 글이 존재하지 않으면 글이 존재 하지 않는다는 오류 메세지 출력 if(!$oDocument->isExists()) { @@ -162,6 +181,12 @@ // 만약 카테고리가 있거나 검색어가 있으면list_count를 search_list_count 로 이용 if($args->category_srl || $args->search_keyword) $args->list_count = $this->search_list_count; + // 상담 기능이 on되어 있으면 현재 로그인 사용자의 글만 나타나도록 옵션 변경 + if($this->consultation) { + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + } + // 일반 글을 구해서 context set $output = $oDocumentModel->getDocumentList($args, $this->except_notice); Context::set('document_list', $output->data); diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index 229fd6962..1c79ff38f 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -19,6 +19,7 @@ $lang->expand = 'Expand'; $lang->category_group_srls = 'Accessable Group'; $lang->search_result = 'Search result'; + $lang->consultation = '상담 기능'; // words used in button $lang->cmd_board_list = 'Board list'; @@ -33,4 +34,5 @@ $lang->about_board_category = 'You can make board categories.
    When board category is broken, try rebuilding the cache file manually.'; $lang->about_except_notice = "Notice articles will not be displayed on normal list."; $lang->about_board = "This module is for creating and managing boards.\nYou may select the module name from the list after creating one to configure specifically.\nPlease be careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)"; + $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/board/lang/es.lang.php b/modules/board/lang/es.lang.php index d0527ea93..c569181f4 100644 --- a/modules/board/lang/es.lang.php +++ b/modules/board/lang/es.lang.php @@ -21,6 +21,7 @@ $lang->expand = 'Expandir'; $lang->category_group_srls = 'Limitar el grupo'; $lang->search_result = 'Resultado de la búsqueda'; + $lang->consultation = '상담 기능'; // Palabras utilizadas en los botones $lang->cmd_board_list = 'Lista del tableros'; @@ -35,4 +36,5 @@ $lang->about_board_category = 'Puede crear las categorias de tableros.
    Cuando no funciona la categoría de tableros, rehacer el archivo caché manualmente para solucionar.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "Este módulo es para crear y manejar los tableros.\nLuego de crear un Tablero, seleciona el nombre del módulo para la configuración más detallada.\nSea cuidadoso con el nombre del módulo, ya que ese nombre va a ser la dirección URL. (ej : http://dominio/zb/?mid=nombre del módulo)"; + $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/board/lang/jp.lang.php b/modules/board/lang/jp.lang.php index 0d92df001..496874e03 100644 --- a/modules/board/lang/jp.lang.php +++ b/modules/board/lang/jp.lang.php @@ -22,6 +22,7 @@ $lang->expand = '拡張表示'; $lang->category_group_srls = 'グループ制限'; $lang->search_result = '検索結果'; + $lang->consultation = '상담 기능'; // ボタンに使用する用語 $lang->cmd_board_list = '掲示板リスト'; @@ -36,4 +37,5 @@ $lang->about_board_category = 'ブログのカテゴリを作成します。
    ブログのカテゴリが誤作動する場合、「キャッシュファイルの再生性」を手動で行うことで解決できます。'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "掲示板の生成、および管理する掲示板モジュールです。\n生成後、リストからモジュール名を選択すると詳細な設定ができます。\n掲示板のモジュール名はURLになりますので注意してください。 (ex : http://ドメイン/zb/?mid=モジュール名)"; + $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/board/lang/ko.lang.php b/modules/board/lang/ko.lang.php index 9a9a2929c..3781467e7 100644 --- a/modules/board/lang/ko.lang.php +++ b/modules/board/lang/ko.lang.php @@ -19,6 +19,7 @@ $lang->expand = '펼침'; $lang->category_group_srls = '그룹제한'; $lang->search_result = '검색결과'; + $lang->consultation = '상담 기능'; // 버튼에 사용되는 언어 $lang->cmd_board_list = '게시판 목록'; @@ -33,4 +34,5 @@ $lang->about_board_category = '분류를 만드실 수 있습니다.
    분류가 오동작을 할 경우 캐시파일 재생성을 수동으로 해주시면 해결이 될 수 있습니다.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "게시판을 생성하고 관리할 수 있는 게시판 모듈입니다.\n생성하신 후 목록에서 모듈이름을 선택하시면 자세한 설정이 가능합니다.\n게시판의 모듈이름은 접속 url이 되므로 신중하게 입력해주세요. (ex : http://도메인/zb/?mid=모듈이름)"; + $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/board/lang/ru.lang.php b/modules/board/lang/ru.lang.php index 33f3f3132..461c9ac65 100644 --- a/modules/board/lang/ru.lang.php +++ b/modules/board/lang/ru.lang.php @@ -22,6 +22,7 @@ $lang->expand = 'Расширить'; $lang->category_group_srls = 'Доступные группы'; $lang->search_result = 'Результат поиска'; + $lang->consultation = '상담 기능'; // слова, использованные в кнопке $lang->cmd_board_list = 'Список форумов'; @@ -36,4 +37,5 @@ $lang->about_board_category = 'Вы можете сделать категории блога.
    Когда категория блога испорчена, попробуйте перепостроить файл кеша вручную.'; $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "Этот модуль служит для создания и управления форумами.\nВы можете выбрать имя модуля из списка после создания для дополнительного конифигурирования.\nПожалуйста, будте осторожны с именем модуля форума, поскольку оно будет URL. (например : http://domain/zb/?mid=имя_модуля)"; + $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/board/lang/zh-CN.lang.php b/modules/board/lang/zh-CN.lang.php index 689ee0036..c8a60da37 100644 --- a/modules/board/lang/zh-CN.lang.php +++ b/modules/board/lang/zh-CN.lang.php @@ -22,6 +22,7 @@ $lang->expand = '展开'; $lang->category_group_srls = '用户组'; $lang->search_result = '搜索结果'; + $lang->consultation = '상담 기능'; // 按钮语言 $lang->cmd_board_list = '版面目录'; @@ -37,4 +38,5 @@ $lang->about_board_category = '可以添加/删除博客分类
    博客分类有异常情况时,可以尝试重新生成缓冲文件。'; $lang->about_except_notice = "设置一般目录下不显示公告。"; $lang->about_board = "可生成,管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。"; + $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/board/tpl/board_info.html b/modules/board/tpl/board_info.html index fdee8bf1a..1ea2fef2e 100644 --- a/modules/board/tpl/board_info.html +++ b/modules/board/tpl/board_info.html @@ -51,6 +51,10 @@
    {$lang->except_notice} {$module_info->except_notice=='N'?$lang->notuse:$lang->use}
    {$lang->consultation}{$module_info->consultation=='Y'?$lang->use:$lang->notuse}
    {$lang->description} {nl2br(htmlspecialchars($module_info->description))} 
    {$lang->consultation} + consultation=='Y')-->checked="checked" /> +

    {nl2br($lang->about_consultation)}

    +
    {$lang->description} diff --git a/modules/board/tpl/filter/insert_board.xml b/modules/board/tpl/filter/insert_board.xml index 4a4be1f10..6863a4cf1 100644 --- a/modules/board/tpl/filter/insert_board.xml +++ b/modules/board/tpl/filter/insert_board.xml @@ -17,6 +17,7 @@ + diff --git a/modules/document/document.model.php b/modules/document/document.model.php index a51e9c243..6a255c3df 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -144,6 +144,7 @@ $args->page_count = $obj->page_count?$obj->page_count:10; $args->start_date = $obj->start_date?$obj->start_date:null; $args->end_date = $obj->end_date?$obj->end_date:null; + $args->member_srl = $obj->member_srl; // 카테고리가 선택되어 있으면 하부 카테고리까지 모두 조건에 추가 if($args->category_srl) { diff --git a/modules/document/queries/getDocumentList.xml b/modules/document/queries/getDocumentList.xml index a7b6eacd1..f2dc839a1 100644 --- a/modules/document/queries/getDocumentList.xml +++ b/modules/document/queries/getDocumentList.xml @@ -9,6 +9,7 @@ + diff --git a/modules/document/queries/getDocumentListWithinComment.xml b/modules/document/queries/getDocumentListWithinComment.xml index bb39eb0f3..866c85e55 100644 --- a/modules/document/queries/getDocumentListWithinComment.xml +++ b/modules/document/queries/getDocumentListWithinComment.xml @@ -10,6 +10,7 @@ + diff --git a/modules/document/queries/getDocumentListWithinTag.xml b/modules/document/queries/getDocumentListWithinTag.xml index 3564a9122..48dee7639 100644 --- a/modules/document/queries/getDocumentListWithinTag.xml +++ b/modules/document/queries/getDocumentListWithinTag.xml @@ -9,6 +9,7 @@ + From fffcc7d8d6264b452154a525b2ed4e24632d8d79 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 05:29:21 +0000 Subject: [PATCH 213/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4,=20=EB=9F=AC=EC=8B=9C=EC=95=84=EC=96=B4=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3656 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/lang/es.lang.php | 4 ++-- modules/springnote/conf/info.xml | 3 +++ modules/springnote/conf/module.xml | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/file/lang/es.lang.php b/modules/file/lang/es.lang.php index 0d341a5bb..49a931386 100644 --- a/modules/file/lang/es.lang.php +++ b/modules/file/lang/es.lang.php @@ -16,7 +16,7 @@ $lang->allowed_filesize = 'Límite del tamaño del archivo adjunto'; $lang->allowed_attach_size = 'Límite del tamaño total de los archivos adjuntos por documento'; $lang->allowed_filetypes = 'Tipos de archivos permitidos'; - $lang->enable_download_group = '다운로드 가능 그룹'; + $lang->enable_download_group = 'Descargar permitió grupos'; $lang->about_allowed_filesize = 'Puede definir el límite del tamaño del archivo adjunto. (exceptuando el administrador)'; $lang->about_allowed_attach_size = 'Puede definir el límite del tamaño total de los archivos adjuntos por documento. (exceptuando el administrador)'; @@ -26,7 +26,7 @@ $lang->cmd_move_to_document = 'Mover hacia el doncumento'; $lang->cmd_download = 'Descargar'; - $lang->msg_not_permitted_download = '다운로드 할 수 있는 권한이 없습니다'; + $lang->msg_not_permitted_download = 'Usted no tiene ningún permiso para descargar'; $lang->msg_cart_is_null = 'Seleccione el archivo a eliminar'; $lang->msg_checked_file_is_deleted = 'Total de %d archivos eliminados'; $lang->msg_exceeds_limit_size = 'Ha excedido el límite del tamaño total de los archivos adjuntos'; diff --git a/modules/springnote/conf/info.xml b/modules/springnote/conf/info.xml index dc8de1acd..01397eada 100644 --- a/modules/springnote/conf/info.xml +++ b/modules/springnote/conf/info.xml @@ -4,17 +4,20 @@ スプリングノート連動 Springnote API Springnote + Springnote Спрингноут 제로 Zero Zero Zero + Zero Zero 스프링노트의 페이지를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. スプリングノートのページをゼロボードXEと連動させて出力する機能のモジュールです。 把Springnote网站页面整合到Zeroboard XE的模块。 This modules links pages of Springnote with ZeroboardXE, and display them. + Esta módulos de enlaces de páginas Springnote con ZeroboardXE, y lo muestra. Этот модуль связывает страницы Springnote с ZeroboardXE, и отображает их. diff --git a/modules/springnote/conf/module.xml b/modules/springnote/conf/module.xml index 094b66311..5a9b32cec 100644 --- a/modules/springnote/conf/module.xml +++ b/modules/springnote/conf/module.xml @@ -3,12 +3,16 @@ 목록 + Lista + список 目录 リスト list 열람 + Opinión + мнение 查看 閲覧 view From 6d70eb96adff5373db7f113ea6501682749a8fe6 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 06:01:35 +0000 Subject: [PATCH 214/278] =?UTF-8?q?#400=20=EA=B2=8C=EC=8B=9C=ED=8C=90?= =?UTF-8?q?=EC=9D=98=20=EC=B6=94=EA=B0=80=EC=84=A4=EC=A0=95=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=8C=8C=EC=9D=BC=20=EB=8B=A4=EC=9A=B4=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EA=B6=8C=ED=95=9C=20=EB=B6=80=EB=B6=84=EC=9D=98=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3657 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/tpl/editor_module_config.html | 4 ++-- modules/file/tpl/file_module_config.html | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/editor/tpl/editor_module_config.html b/modules/editor/tpl/editor_module_config.html index 6f9248698..b57106423 100644 --- a/modules/editor/tpl/editor_module_config.html +++ b/modules/editor/tpl/editor_module_config.html @@ -10,8 +10,8 @@
    {$lang->editor}
     {$lang->document} - {$lang->comment} + {$lang->document}{$lang->comment}
    {$lang->editor_skin}
    From 72ac60d6708ab0cb4eb43a7b91de58d629c58e21 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 06:02:15 +0000 Subject: [PATCH 215/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4(=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4)=20=EC=96=B8?= =?UTF-8?q?=EC=96=B4=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3658 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/importer/lang/es.lang.php | 8 ++++---- modules/lifepod/conf/info.xml | 5 +++++ modules/lifepod/conf/module.xml | 4 +++- modules/widget/lang/es.lang.php | 10 +++++----- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/modules/importer/lang/es.lang.php b/modules/importer/lang/es.lang.php index 79d151731..a058759ba 100644 --- a/modules/importer/lang/es.lang.php +++ b/modules/importer/lang/es.lang.php @@ -13,7 +13,7 @@ $lang->importer = 'Transferir los datos de zeroboard'; $lang->source_type = 'Objetivo a transferir'; $lang->type_member = 'Información del usuario'; - $lang->type_message = '쪽지(메세지) 정보'; + $lang->type_message = 'Mensaje de Datos'; $lang->type_ttxml = 'TTXML'; $lang->type_module = 'Información del documento.'; $lang->type_syncmember = 'Sincronizar la información del usuario'; @@ -46,9 +46,9 @@ // bla bla... $lang->about_type_member = 'Seleccione esta opción si estas transferiendo la información del usuario.'; - $lang->about_type_message = '데이터 이전 대상이 쪽지(메세지)일 경우 선택해주세요'; - $lang->about_type_ttxml = '데이터 이전 대상이 TTXML(textcube계열)일 경우 선택해주세요'; - $lang->about_ttxml_user_id = 'TTXML이전시에 글쓴이로 지정할 사용자 아이디를 입력해주세요. (이미 가입된 아이디여야 합니다)'; + $lang->about_type_message = 'Si está transfiriendo la información de mensajes, seleccione esta opción'; + $lang->about_type_ttxml = ' Si está transfiriendo la TTXML (textcube) información, seleccione esta opción'; + $lang->about_ttxml_user_id = 'Por favor, de entrada ID de usuario establecer como autor de la transferencia de TTXML. (Identificación de usuario debe ser firmado ya en marcha)'; $lang->about_type_module = 'Seleccione esta opción si estas transfeririendo información del documento de los tableros'; $lang->about_type_syncmember = 'Seleccione esta opción cuando tenga que sincronizar la información del usuario luego de haber transferido la información del usuario y del artículo.'; $lang->about_importer = "Es posible trasferir los datos de Zeroboard4, zb5beta o de otros programas a ZeroBoardXE.\nPara la transferencia debe utilizar Exportador XML para transformar los datos en archivo XML, y luego subir ese archivo."; diff --git a/modules/lifepod/conf/info.xml b/modules/lifepod/conf/info.xml index dbbc51b75..3e39284d9 100644 --- a/modules/lifepod/conf/info.xml +++ b/modules/lifepod/conf/info.xml @@ -4,11 +4,16 @@ Lifepod Lifepod連動 Лайфпод + Lifepod + 라이프팟 연동 + haneul haneul haneul 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. + Este módulo muestra calendario de lifepod. + 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. This module displays calendar from lifepod. (Openmaru社提供の)LifepodサービスのカレンダーをゼロボードXEに連動して出力するモジュールです。 Этот модуль отображает календать с lifepod'а. diff --git a/modules/lifepod/conf/module.xml b/modules/lifepod/conf/module.xml index f523c35bb..30bf6adb6 100644 --- a/modules/lifepod/conf/module.xml +++ b/modules/lifepod/conf/module.xml @@ -3,7 +3,9 @@ 열람 - 查看 + Opinión + мнение + 查看 閲覧 view diff --git a/modules/widget/lang/es.lang.php b/modules/widget/lang/es.lang.php index b0f3a52fc..3f75866af 100644 --- a/modules/widget/lang/es.lang.php +++ b/modules/widget/lang/es.lang.php @@ -41,12 +41,12 @@ $lang->about_widget_code_in_page = 'Luego de ingresar los valores requeridos, presiona el botón "Añadir" para insertar el código de widget dentro de la página.'; $lang->about_widget = "Un Widget es una pequena aplicación para ser usados en los diseños o en el módulo de páginas.\n Puede ser enlazados con un módulo interno o con open api externo y con la configuración de ella puede utilizar en variadas aplicaciones.\nSin la necesidad de utilizar los módulos de página o del diseño de Zeroboard XE, Usted puede directamente añadir un widget usando la función de [Generar Códigos]."; - $lang->cmd_content_insert = "내용 직접 추가"; - $lang->cmd_box_widget_insert = "상자 위젯 추가"; - $lang->cmd_remove_all_widgets = "내용 모두 지우기"; + $lang->cmd_content_insert = "Introduzca contenido por ti mismo"; + $lang->cmd_box_widget_insert = "Insertar cuadro de widget"; + $lang->cmd_remove_all_widgets = "Eliminar todos los reproductores"; - $lang->cmd_widget_size = "위젯 크기"; - $lang->cmd_widget_align = "위젯 정렬"; + $lang->cmd_widget_size = "Tamaño artilugio"; + $lang->cmd_widget_align = "Alinear Widget"; $lang->cmd_widget_align_left = "왼쪽"; $lang->cmd_widget_align_right = "오른쪽"; $lang->cmd_widget_margin = "외부 여백"; From 27dbf11b67564e5acc73aabc9fef96af7bd2cd3f Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 06:19:42 +0000 Subject: [PATCH 216/278] =?UTF-8?q?#399=20IE=EA=B3=84=EC=97=B4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20select=20-=20option=EC=97=90=20disabled=20=EA=B0=80?= =?UTF-8?q?=20=EB=A8=B9=ED=9E=88=EC=A7=88=20=EC=95=8A=EB=8A=94=20=EA=B2=83?= =?UTF-8?q?=EC=9D=84=20=EC=9E=90=EB=B0=94=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=EB=A1=9C=20=EC=A0=81=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3659 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/common/js/common.js b/common/js/common.js index 30baa0633..e96177f3d 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -940,3 +940,26 @@ var Base64 = { } } + +/* select - option의 disabled=disabled 속성을 IE에서도 체크하기 위한 함수 */ +if(xIE4Up) { + xAddEventListener(window, 'load', activateOptionDisabled); + + function activateOptionDisabled(evt) { + var sels = xGetElementsByTagName('select'); + for(var i=0; i < sels.length; i++){ + sels[i].onchange = function() { + if(this.options[this.selectedIndex].disabled) { + if(this.options.length<=1) this.selectedIndex = -1; + else if(this.selectedIndex < this.options.length - 1) this.selectedIndex++; + else this.selectedIndex--; + } + } + if(sels[i].options[sels[i].selectedIndex].disabled) sels[i].onchange(); + + for(var j=0; j < sels[i].options.length; j++) { + if(sels[i].options[j].disabled) sels[i].options[j].style.color = '#CCC'; + } + } + } +} From ea4451e8ac1922daa0fa85b24d335527aef368a1 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 06:28:33 +0000 Subject: [PATCH 217/278] =?UTF-8?q?#398=20=EB=B8=94=EB=A1=9C=EA=B7=B8API?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=8C=8C=EC=9D=BC=EC=B2=A8=EB=B6=80=20?= =?UTF-8?q?=EA=B6=8C=ED=95=9C=EC=9D=B4=20=EB=B3=80=EA=B2=BD=EB=90=9C=20?= =?UTF-8?q?=EA=B2=83=EC=9D=84=20=EC=A0=81=EC=9A=A9=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3660 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/blogapi/blogapi.addon.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/addons/blogapi/blogapi.addon.php b/addons/blogapi/blogapi.addon.php index 27dbb978f..d5fc3879a 100644 --- a/addons/blogapi/blogapi.addon.php +++ b/addons/blogapi/blogapi.addon.php @@ -119,8 +119,21 @@ // 파일 업로드 case 'metaWeblog.newMediaObject' : // 파일 업로드 권한 체크 - if(!$this->grant->fileupload) { - printContent( getXmlRpcFailure(1, 'no permission') ); + $oFileModel = &getModel('file'); + $file_module_config = $oFileModel->getFileModuleConfig($this->module_srl); + if(is_array($file_module_config->download_grant) && count($file_module_config->download_grant)>0) { + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin != 'Y') { + $is_permitted = false; + for($i=0;$idownload_grant);$i++) { + $group_srl = $file_module_config->download_grant[$i]; + if($logged_info->group_list[$group_srl]) { + $is_permitted = true; + break; + } + } + if(!$is_permitted) printContent( getXmlRpcFailure(1, 'no permission') ); + } } $fileinfo = $params[3]->value->struct->member; From ce6f2504aba95b6c3c0e6b53779fe6550334b209 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 07:12:06 +0000 Subject: [PATCH 218/278] =?UTF-8?q?#396=20=EC=B5=9C=EA=B3=A0=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=EC=9E=84=EC=97=90=EB=8F=84=20=ED=8A=B9?= =?UTF-8?q?=EC=A0=95=20=EA=B7=B8=EB=A3=B9=EC=97=90=20=EC=86=8D=ED=95=B4?= =?UTF-8?q?=EC=9E=88=EC=A7=80=20=EC=95=8A=EC=95=84=EC=84=9C=20=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20=EB=B6=80=EC=97=AC?= =?UTF-8?q?=EB=90=9C=20=EB=A9=94=EB=89=B4=EA=B0=80=20=ED=91=9C=EC=8B=9C?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3661 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/menu/menu.admin.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 9b07c68ba..39a0d4a14 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -365,7 +365,7 @@ // php 캐시 파일 생성 $php_output = $this->getPhpCacheCode($tree[0], $tree); - $php_buff = sprintf('list = array(%s); if($_SESSION["logged_info"]&&$_SESSION["logged_info"]->is_admin=="Y") $_is_admin = true; ?>', $php_output['name'], $php_output['buff']); + $php_buff = sprintf('is_admin=="Y") $_is_admin = true; $lang_type = Context::getLangType(); %s; $menu->list = array(%s); ?>', $php_output['name'], $php_output['buff']); // 파일 저장 FileHandler::writeFile($xml_file, $xml_buff); From 3d648436540c652605e81c818f1db4a6433bc1a6 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 07:34:57 +0000 Subject: [PATCH 219/278] =?UTF-8?q?IE=EA=B3=84=EC=97=B4=EC=9D=98=20select-?= =?UTF-8?q?option=20disabled=20=EC=9E=91=EB=8F=99=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=9E=90=EB=B0=94=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=ED=95=A8=EC=88=98=EC=9D=98=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3662 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index e96177f3d..96a6d03f8 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -942,7 +942,6 @@ var Base64 = { } /* select - option의 disabled=disabled 속성을 IE에서도 체크하기 위한 함수 */ -if(xIE4Up) { xAddEventListener(window, 'load', activateOptionDisabled); function activateOptionDisabled(evt) { @@ -955,11 +954,11 @@ if(xIE4Up) { else this.selectedIndex--; } } - if(sels[i].options[sels[i].selectedIndex].disabled) sels[i].onchange(); + + if(sels[i].selectedIndex >= 0 && sels[i].options[ sels[i].selectedIndex ].disabled) sels[i].onchange(); for(var j=0; j < sels[i].options.length; j++) { - if(sels[i].options[j].disabled) sels[i].options[j].style.color = '#CCC'; + if(sels[i].options[j].disabled) sels[i].options[j].style.color = '#CCCCCC'; } } } -} From 2d9042dc34dd7a597388acad78ec8f2a24e5e7c8 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 07:36:33 +0000 Subject: [PATCH 220/278] =?UTF-8?q?#249=20=EB=B9=84=EB=B0=80=EA=B8=80=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=EC=9E=90=EB=8A=94=20=ED=95=B4=EB=8B=B9=20?= =?UTF-8?q?=EA=B8=80=EC=9D=98=20=EB=AA=A8=EB=93=A0=20=EA=B6=8C=ED=95=9C?= =?UTF-8?q?=EC=9D=84=20=EA=B0=80=EC=A7=80=EA=B2=8C=20=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=8C=93=EA=B8=80=EC=9D=B4=20=EB=8B=AC=EB=A6=AC=EB=A9=B4=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=ED=95=98=EA=B3=A0=20=EB=B9=84=EB=B0=80=EA=B8=80?= =?UTF-8?q?=EC=9D=98=20=EB=8C=93=EA=B8=80=EC=9D=80=20=EB=8C=93=EA=B8=80=20?= =?UTF-8?q?=EC=88=AB=EC=9E=90=EB=A7=8C=20=EB=85=B8=EC=B6=9C=EB=90=98?= =?UTF-8?q?=EA=B3=A0=20=EB=82=B4=EC=9A=A9=EC=9D=80=20=EB=85=B8=EC=B6=9C?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3663 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/view_document.html | 2 +- modules/board/skins/xe_board/view_document.html | 2 +- modules/document/document.item.php | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/modules/board/skins/cozy_board/view_document.html b/modules/board/skins/cozy_board/view_document.html index b045733e2..e05401822 100644 --- a/modules/board/skins/cozy_board/view_document.html +++ b/modules/board/skins/cozy_board/view_document.html @@ -156,7 +156,7 @@ - +
    diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index ecf99441c..9ca66ceb8 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -169,7 +169,7 @@ - + diff --git a/modules/document/document.item.php b/modules/document/document.item.php index c4b205344..2bb5eabe9 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -575,10 +575,23 @@ return $oEditorModel->getModuleEditor('document', $module_srl, $this->document_srl, 'document_srl', 'content'); } + /** + * @brief 댓글을 달 수 있는지에 대한 권한 체크 + * 게시글의 댓글 권한과 또 다른 부분 + **/ + function isEnableComment() { + // 권한이 없고 비밀글 or 댓글금지 or 댓글허용금지이면 return false + if(!$this->isGranted() && ( $this->isSecret() || $this->isLocked() || !$this->allowComment() ) ) return false; + + return true; + } + /** * @brief 댓글 에디터 html을 구해서 return **/ function getCommentEditor() { + if(!$this->isEnableComment()) return; + $oEditorModel = &getModel('editor'); return $oEditorModel->getModuleEditor('comment', $this->get('module_srl'), $comment_srl, 'comment_srl', 'content'); } From cacb75738d12de91098d6bfa5a3d610cb350760f Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 07:52:58 +0000 Subject: [PATCH 221/278] =?UTF-8?q?#249=20=EB=B9=84=EB=B0=80=EB=8C=93?= =?UTF-8?q?=EA=B8=80=EC=97=90=20=EB=8C=93=EA=B8=80=EC=9D=84=20=EB=8B=AC=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20=EC=9D=B4?= =?UTF-8?q?=EC=96=91=EB=90=98=EB=8F=84=EB=A1=9D=20=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=8C=93=EA=B8=80=EB=A1=9C=20=EC=84=9C?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EC=95=BC=EA=B8=B0=EA=B0=80=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3664 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/comment.item.php | 17 ++++++++++++++--- modules/comment/comment.model.php | 8 ++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index a9540f9e7..c24a49e5c 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -63,6 +63,10 @@ $this->is_granted = true; } + function setAccessible() { + $_SESSION['accessibled_comment'][$this->comment_srl] = true; + } + function isEditable() { if($this->isGranted() || !$this->get('member_srl')) return true; return false; @@ -73,12 +77,19 @@ } function isAccessible() { - if($this->isGranted()) return true; - if(!$this->isSecret()) return true; + if($_SESSION['accessibled_comment'][$this->comment_srl]) return true; + + if($this->isGranted() || !$this->isSecret()) { + $this->setAccessible(); + return true; + } $oDocumentModel = &getModel('document'); $oDocument = $oDocumentModel->getDocument($this->get('document_srl')); - if($oDocument->isGranted()) return true; + if($oDocument->isGranted()) { + $this->setAccessible(); + return true; + } return false; } diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index 8cf2fd1d6..c831920e4 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -208,7 +208,7 @@ /** * @brief 댓글을 계층형으로 재배치 **/ - function _arrangeComment(&$comment_list, $list, $depth) { + function _arrangeComment(&$comment_list, $list, $depth, $set_grant = false) { if(!count($list)) return; foreach($list as $key => $val) { $oCommentItem = new commentItem(); @@ -219,13 +219,17 @@ $oCommentItem->setAttribute($tmp); $comment_list[$tmp->comment_srl] = $oCommentItem; - $this->_arrangeComment($comment_list,$val->child,$depth+1); + if($set_grant) $oCommentItem->setAccessible(); + + $this->_arrangeComment($comment_list,$val->child,$depth+1, $oCommentItem->isGranted()); } else { $val->depth = $depth; $oCommentItem->setAttribute($val); + if($set_grant) $oCommentItem->setAccessible(); $comment_list[$val->comment_srl] = $oCommentItem; } + } } From 71b6b68affda2ddf9e185a42ad9fd12ecaacacaf Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 08:04:00 +0000 Subject: [PATCH 222/278] =?UTF-8?q?#368=20=EC=98=81=EB=AC=B8=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=20=EB=B0=8F=201970=EB=85=84=20=EC=9D=B4=EC=A0=84?= =?UTF-8?q?=EC=9D=98=20=EC=9B=94=20=EC=98=81=EB=AC=B8=20=ED=91=9C=EA=B8=B0?= =?UTF-8?q?=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3665 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 2 +- config/func.inc.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index b1c1d18ed..f72275f33 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -84,7 +84,7 @@ $lang->email_address = 'Email'; $lang->homepage = 'Homepage'; $lang->blog = 'Blog'; - $lang->birthday = 'Birthdate'; + $lang->birthday = 'Birthday'; $lang->browser_title = 'Browser Title'; $lang->title = 'Subject'; $lang->title_content = 'Subject+Content'; diff --git a/config/func.inc.php b/config/func.inc.php index 6cdb5ed08..f4a4026e0 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -256,8 +256,8 @@ * @brief 월이름을 return **/ function getMonthName($month, $short = true) { - $short_month = array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); - $long_month = array("January","February","March","April","May","June","July","August","September","October","November","December"); + $short_month = array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); + $long_month = array('','January','February','March','April','May','June','July','August','September','October','November','December'); return !$short?$long_month[$month]:$short_month[$month]; } From 0b8598769cbf8341ccac2789fbfff8b649afdbac Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 08:11:17 +0000 Subject: [PATCH 223/278] =?UTF-8?q?#391=20=EA=B0=A4=EB=9F=AC=EB=A6=AC/?= =?UTF-8?q?=EC=9B=B9=EC=A7=84=20=EC=8A=A4=ED=82=A8=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=8D=B8=EB=84=A4=EC=9D=BC=EC=9D=B4=EB=82=98=20=EB=B3=B8?= =?UTF-8?q?=EB=AC=B8=20=ED=81=B4=EB=A6=AD=EC=8B=9C=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EB=B3=80=EC=88=98=EA=B0=80=20=EB=94=B0=EB=9D=BC?= =?UTF-8?q?=EA=B0=80=EC=A7=80=20=EC=95=8A=EC=95=84=EC=84=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=EB=93=B1=EC=9D=98=20=EC=9E=91=EC=97=85=ED=9B=84=20?= =?UTF-8?q?=EC=B2=AB=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A1=9C=20=EB=8F=8C?= =?UTF-8?q?=EC=95=84=EA=B0=80=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3666 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/style.gallery.html | 2 +- modules/board/skins/cozy_board/style.webzine.html | 4 ++-- modules/board/skins/xe_board/style.gallery.html | 2 +- modules/board/skins/xe_board/style.webzine.html | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/board/skins/cozy_board/style.gallery.html b/modules/board/skins/cozy_board/style.gallery.html index 2960170dd..c1da2b373 100644 --- a/modules/board/skins/cozy_board/style.gallery.html +++ b/modules/board/skins/cozy_board/style.gallery.html @@ -98,7 +98,7 @@
    - + diff --git a/modules/board/skins/cozy_board/style.webzine.html b/modules/board/skins/cozy_board/style.webzine.html index 812931675..889039f65 100644 --- a/modules/board/skins/cozy_board/style.webzine.html +++ b/modules/board/skins/cozy_board/style.webzine.html @@ -87,7 +87,7 @@
    - + diff --git a/modules/board/skins/xe_board/style.gallery.html b/modules/board/skins/xe_board/style.gallery.html index aefb14367..7b29c1dd2 100644 --- a/modules/board/skins/xe_board/style.gallery.html +++ b/modules/board/skins/xe_board/style.gallery.html @@ -96,7 +96,7 @@
    - + diff --git a/modules/board/skins/xe_board/style.webzine.html b/modules/board/skins/xe_board/style.webzine.html index 5bde292fb..14f1c9170 100644 --- a/modules/board/skins/xe_board/style.webzine.html +++ b/modules/board/skins/xe_board/style.webzine.html @@ -96,7 +96,7 @@
    - + From f1b53d7a4747d7ea46132d0d2921451475781b2a Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 08:36:27 +0000 Subject: [PATCH 224/278] =?UTF-8?q?#402=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=9D=98=20conf/module.xml=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=98=20=EB=AF=B8=EC=84=A4=EC=A0=95=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=98=EC=97=AC=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=88=98=EC=A0=95=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20?= =?UTF-8?q?=EB=B6=80=EC=97=AC=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3667 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/page/conf/module.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/page/conf/module.xml b/modules/page/conf/module.xml index ede8ba3ef..fa8a3ded7 100644 --- a/modules/page/conf/module.xml +++ b/modules/page/conf/module.xml @@ -18,6 +18,7 @@ + From cdf6a11e636b6223866bfa5e8e88fabb44b3a354 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 08:42:23 +0000 Subject: [PATCH 225/278] =?UTF-8?q?#402=20=EC=99=80=20=EC=97=B0=EA=B3=84?= =?UTF-8?q?=EB=90=98=EC=96=B4=20=EB=82=B4=EC=9A=A9=20=EC=A7=81=EC=A0=91=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EC=8B=9C=20=EA=B6=8C=ED=95=9C=EC=97=86?= =?UTF-8?q?=EC=9D=8C=20=EB=AC=B8=EC=A0=9C=EB=8F=84=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3668 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/widget/widget.class.php | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/modules/widget/widget.class.php b/modules/widget/widget.class.php index 8be456250..7bedf4803 100644 --- a/modules/widget/widget.class.php +++ b/modules/widget/widget.class.php @@ -49,5 +49,42 @@ // widget 생성 캐시 파일 삭제 FileHandler::removeFilesInDir("./files/cache/widget_cache"); } + + /** + * @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; + } } ?> From 5e63bdf0f841690ae0a091f44937a7d46a3ab845 Mon Sep 17 00:00:00 2001 From: chinaskyking Date: Thu, 14 Feb 2008 09:06:25 +0000 Subject: [PATCH 226/278] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=ED=94=84=ED=8C=9F=20?= =?UTF-8?q?=EC=97=B0=EB=8F=99=20=EB=AA=A8=EB=93=88=20=EC=86=8C=EA=B0=9C=20?= =?UTF-8?q?=EC=A4=91=EB=AC=B8=20=EB=88=84=EB=9D=BD=20=EB=B2=88=EC=97=AD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3669 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lifepod/conf/info.xml b/modules/lifepod/conf/info.xml index 3e39284d9..21de0f711 100644 --- a/modules/lifepod/conf/info.xml +++ b/modules/lifepod/conf/info.xml @@ -5,7 +5,7 @@ Lifepod連動 Лайфпод Lifepod - 라이프팟 연동 + Lifepod haneul @@ -13,7 +13,7 @@ haneul 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. Este módulo muestra calendario de lifepod. - 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. + 把Lifepod日历连接到zbXE的模块。 This module displays calendar from lifepod. (Openmaru社提供の)LifepodサービスのカレンダーをゼロボードXEに連動して出力するモジュールです。 Этот модуль отображает календать с lifepod'а. From ee4b8af79103a72da62a23e95538cf9f9b5cabe4 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 14 Feb 2008 09:43:53 +0000 Subject: [PATCH 227/278] =?UTF-8?q?IE=EA=B3=84=EC=97=B4=EC=97=90=EC=84=9C?= =?UTF-8?q?=20select-option=EC=9D=98=20disabled=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=EA=B0=80=20=EC=9D=BC=EB=B0=98=20select?= =?UTF-8?q?=EC=9D=98=20onchange=ED=95=A8=EC=88=98=EB=A5=BC=20=EB=AC=B4?= =?UTF-8?q?=EC=8B=9C=ED=95=98=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3670 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index 96a6d03f8..57f0e7001 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -942,11 +942,22 @@ var Base64 = { } /* select - option의 disabled=disabled 속성을 IE에서도 체크하기 위한 함수 */ +if(xIE4Up) { xAddEventListener(window, 'load', activateOptionDisabled); function activateOptionDisabled(evt) { var sels = xGetElementsByTagName('select'); for(var i=0; i < sels.length; i++){ + var disabled_exists = false; + for(var j=0; j < sels[i].options.length; j++) { + if(sels[i].options[j].disabled) { + sels[i].options[j].style.color = '#CCCCCC'; + disabled_exists = true; + } + } + + if(!disabled_exists) continue; + sels[i].onchange = function() { if(this.options[this.selectedIndex].disabled) { if(this.options.length<=1) this.selectedIndex = -1; @@ -957,8 +968,6 @@ var Base64 = { if(sels[i].selectedIndex >= 0 && sels[i].options[ sels[i].selectedIndex ].disabled) sels[i].onchange(); - for(var j=0; j < sels[i].options.length; j++) { - if(sels[i].options[j].disabled) sels[i].options[j].style.color = '#CCCCCC'; - } } } +} From df1c52fe065e545e8528dc741131c66969c23166 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 14:21:12 +0000 Subject: [PATCH 228/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4(=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4)=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3671 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/lang/es.lang.php | 26 +++++++++++++------------- modules/comment/lang/es.lang.php | 4 ++-- modules/widget/lang/es.lang.php | 30 +++++++++++++++--------------- widgets/gagachat/conf/info.xml | 32 +++++++++++++++++++++++++++++++- 4 files changed, 61 insertions(+), 31 deletions(-) diff --git a/modules/admin/lang/es.lang.php b/modules/admin/lang/es.lang.php index 06761c41b..e516ac296 100644 --- a/modules/admin/lang/es.lang.php +++ b/modules/admin/lang/es.lang.php @@ -5,26 +5,26 @@ * @sumario Paquete del idioma español (sólo los básicos) **/ - $lang->admin_info = '관리자 정보'; - $lang->admin_index = '관리자 초기 페이지'; + $lang->admin_info = 'Administrador de Información'; + $lang->admin_index = 'Índice de la página admin'; $lang->module_category_title = array( - 'service' => '서비스형 모듈', - 'manager' => '관리형 모듈', - 'utility' => '기능성 모듈', - 'accessory' => '부가 모듈', - 'base' => '기본 모듈', + 'service' => 'Módulos de Servicio', + 'manager' => 'La gestión de módulos', + 'utility' => 'Utilidad de módulos', + 'accessory' => 'Módulos adicionales', + 'base' => 'Módulos por defecto', ); $lang->newest_news = "Noticias recientes"; $lang->env_setup = "Configuración"; - $lang->env_information = "환경 정보"; - $lang->current_version = "설치된 버전"; - $lang->current_path = "설치된 경로"; - $lang->released_version = "최신 버전"; - $lang->about_download_link = "설치된 버전보다 최신의 버전이 배포되었습니다. download링크를 클릭하시면 다운 받으실 수 있습니다."; + $lang->env_information = "Información Ambiental"; + $lang->current_version = "Versión actual"; + $lang->current_path = "Instalado Sendero"; + $lang->released_version = "Versión más reciente"; + $lang->about_download_link = "La versión más reciente de Zerboard XE está disponible. Para descargar la versión más reciente, haga clic en enlace de descarga."; $lang->item_module = "Lista de Módulos"; $lang->item_addon = "Lista de Addons"; @@ -46,7 +46,7 @@ $lang->welcome_to_zeroboard_xe = 'Esta es la página del Administrador de Zeroboard XE'; $lang->about_admin_page = "La página del Administrador aún está en desarrollo."; - $lang->about_lang_env = "위 설정한 언어셋을 처음 방문하는 사용자들에게 동일하게 적용하기 위해서는 원하는 언어로 변경후 아래 [저장] 버튼을 클릭하시면 됩니다"; + $lang->about_lang_env = "Para aplicar idioma seleccionado conjunto de los usuarios, como por defecto, haga clic en el botón [Guardar] el cambio."; $lang->zeroboard_xe_user_links = 'Enlaces para los usuarios '; $lang->zeroboard_xe_developer_links = 'Enlace para los desarrolladores'; diff --git a/modules/comment/lang/es.lang.php b/modules/comment/lang/es.lang.php index 9fbbe25af..95b01c425 100644 --- a/modules/comment/lang/es.lang.php +++ b/modules/comment/lang/es.lang.php @@ -5,9 +5,9 @@ * @sumario Paquete del idioma español para el módulo de comentarios. **/ - $lang->cmd_comment_do = '이 댓글을..'; + $lang->cmd_comment_do = 'Usted ...'; - $lang->comment_list = '댓글 목록'; + $lang->comment_list = 'Comentarios Lista'; $lang->cmd_delete_checked_comment = 'Eliminar lo seleccionado' ; $lang->msg_cart_is_null = 'Selecciona el commentario que desea eliminar'; diff --git a/modules/widget/lang/es.lang.php b/modules/widget/lang/es.lang.php index 3f75866af..243640bed 100644 --- a/modules/widget/lang/es.lang.php +++ b/modules/widget/lang/es.lang.php @@ -47,19 +47,19 @@ $lang->cmd_widget_size = "Tamaño artilugio"; $lang->cmd_widget_align = "Alinear Widget"; - $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_align_left = "Izquierda"; + $lang->cmd_widget_align_right = "Derecho"; + $lang->cmd_widget_margin = "Margen"; + $lang->cmd_widget_padding = "Relleno"; + $lang->cmd_widget_border = "Frontera"; + $lang->cmd_widget_border_solid = "Sólidos"; + $lang->cmd_widget_border_dotted = "Salpicando"; + $lang->cmd_widget_background_color = "Color de fondo"; + $lang->cmd_widget_background_image_url = "Imagen de fondo"; + $lang->cmd_widget_background_image_repeat = "Repita"; + $lang->cmd_widget_background_image_no_repeat = "No Repetir"; + $lang->cmd_widget_background_image_x_repeat = "Repita X"; + $lang->cmd_widget_background_image_y_repeat = "Repita Y"; + $lang->cmd_widget_background_image_x = "Posición X"; + $lang->cmd_widget_background_image_y = "Posición Y"; ?> diff --git a/widgets/gagachat/conf/info.xml b/widgets/gagachat/conf/info.xml index 852585b60..6307a8390 100644 --- a/widgets/gagachat/conf/info.xml +++ b/widgets/gagachat/conf/info.xml @@ -2,106 +2,136 @@ 가가 채팅 Gaga Chat + Gaga Chat 디지레이브 Digirave + Digirave 실시간 채팅방을 생성합니다 This widget created realtime chat room + Este artilugio creado sala de chat en tiempo real 채팅방 이름(필수/영문) Title of Room (Essential/English only) + Título de la habitación (Esenciales / Inglés solamente) text 채팅방 이름. (@, @@, @@@ 로 시작하는 채팅방은 회원 시스템과 연동 가능한 보안 채팅방) 보안 채팅방은 http://www.gagalive.kr/live/livechatxe 에서 신청하시길 바랍니다. 회원 시스템과 연동하지 않을 경우 별도의 신청 필요 없이 원하는 채팅방 이름만 입력하면 됩니다. - Title of Room. + Title of Room. (Chat room which title starts with @, @@, @@@ is a secure chat room that can be linked with member system) Please apply for secure chat room at http://www.gagalive.kr/live/livechatxe. If member system is unnecessary, you can just input the title. + Título de la habitación. +(En sala título que comienza con @, @ @, @ @ @ es una sala de chat seguro que puede vincularse con los miembros del sistema) +Por favor, solicitar el seguro en la sala de chat http://www.gagalive.kr/live/livechatxe. +Si los miembros del sistema no es necesario, basta con introducir el título. + 채팅방 보안 키(선택사항) Chat Room Security Key (Optional)) + Sala de chat clave de seguridad (Opcional)) text 보안 채팅방 사용시에만 필요함. 보안 채팅방을 사용하지 않을 경우에는 빈 칸으로 놔두시길 바랍니다. Security Key is only necessary for secure chat rooms. In case of normal chat room, please leave it blank. + Security Key is only necessary for secure chat rooms. In case of normal chat room, please leave it blank. 채팅방 관리자(선택사항) Chat Room Adminstrator (Optional) + Chat Room Adminstrator (Optional) text 보안 채팅방 사용시에만 적용됨. 강제 퇴장 기능 가능함. 아이디, 아이디2, 아이디3 처럼 채팅방 관리자들을 , 로 분리하시길 바랍니다. Adminstrators will be applied for secure chat rooms. Banning available. Please seperate each id with comma(,) like ID1, ID2, ID3. + Adminstrators will be applied for secure chat rooms. Banning available. Please seperate each id with comma(,) like ID1, ID2, ID3. 채팅방 형태 Form of Chat Room + Form of Chat Room select 세로형/가로형 Vertical/Horizontal + Vertical/Horizontal 세로형 Vertical + Vertical 2 가로형 Horizontal + Horizontal 1 채팅방 높이(선택사항) Height of Chat Room (Optional) + Height of Chat Room (Optional) text 채팅방 높이(기본값 450) Height of chat room (450 as default) + Height of chat room (450 as default) 글씨체(선택사항) Font (Optional) + Font (Optional) text Font-family 예) 굴림체 Font-family ex) Gulim + Font-family ex) Gulim 글씨 색깔(선택사항) Font Color (Optional) + Font Color (Optional) text 채팅방 글씨 색깔 예) white 또는 #FFFFFF Font color of chat room ex) white or #FFFFFF + Font color of chat room ex) white or #FFFFFF 배경 색깔(선택사항) Background Color (Optional) + Background Color (Optional) text 채팅방 배경 색깔 예) black 또는 #000000 Background color of chat room ex) black or #000000 + Background color of chat room ex) black or #000000 큰 글씨체 Large Font + Large Font select 글씨체 크기 Font size + Font size 작은 글씨체 Small Font + Small Font small 중간 글씨체 Medium Font + Medium Font medium 큰 글씨체 Large Font + Large Font large From 029d3df0b20ae94d36d2d7b27e905619e828fb35 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 14:51:59 +0000 Subject: [PATCH 229/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3672 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/install/lang/es.lang.php | 4 ++-- modules/member/lang/es.lang.php | 34 ++++++++++++++++---------------- modules/menu/lang/es.lang.php | 2 +- modules/point/lang/es.lang.php | 22 ++++++++++----------- widgets/gagachat/conf/info.xml | 34 ++++++++++++++++---------------- 5 files changed, 48 insertions(+), 48 deletions(-) diff --git a/modules/install/lang/es.lang.php b/modules/install/lang/es.lang.php index 44b8fd0f2..b7ba77fec 100644 --- a/modules/install/lang/es.lang.php +++ b/modules/install/lang/es.lang.php @@ -259,8 +259,8 @@ EndOfLicense; $lang->admin_title = 'Información del Administrator'; $lang->env_title = 'Configuración'; - $lang->use_optimizer = 'Optimizer 사용'; - $lang->about_optimizer = 'Optimizer를 사용하면 다수의 CSS/ JS파일을 통합/압축 전송하여 매우 빠르게 사이트 접속이 가능하게 합니다.
    다만 CSS나 JS에 따라서 문제가 생길 수 있습니다. 이때는 Optimizer 비활성화 하시면 정상적인 동작은 가능합니다'; + $lang->use_optimizer = 'Habilitar el optimizador'; + $lang->about_optimizer = 'Si optimizador está habilitado, los usuarios pueden acceder rápidamente a este sitio, ya que hay múltiples CSS / JS archivos son comprimidos juntos y antes de la transmisión.
    No obstante, esta optimización podría ser problemáticas de acuerdo con CSS o JS. Si inhabilitarlo, que funciona correctamente a pesar de que sería más lento el trabajo.'; $lang->use_rewrite = 'Usar rewrite mod'; $lang->about_rewrite = "Si el servidor de la web soporte rewrite mod, URL largas como http://bla/?documento_srl=123 puede abreviarse como http://bla/123"; $lang->time_zone = 'La Hora por Zona'; diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index 57d30557d..6013a2604 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -1,6 +1,6 @@ group_title = 'Nombre del grupo'; $lang->group_srl = 'Número del grupo'; $lang->signature = 'Firma'; - $lang->profile_image = '프로필 사진'; - $lang->profile_image_max_width = '가로 제한 크기'; - $lang->profile_image_max_height = '세로 제한 크기'; + $lang->profile_image = 'Perfil de Imagen'; + $lang->profile_image_max_width = 'Max Anchura'; + $lang->profile_image_max_height = 'Max Altura'; $lang->image_name = 'Nombre de la imagen'; $lang->image_name_max_width = 'Ancho Máximo'; $lang->image_name_max_height = 'Altura Máxima'; @@ -56,11 +56,11 @@ $lang->current_password = 'Contraseña actual'; $lang->openid = 'OpenID'; - $lang->webmaster_name = '웹마스터 이름'; - $lang->webmaster_email = '웹마스터 메일주소'; + $lang->webmaster_name = 'Nombre del Webmaster'; + $lang->webmaster_email = 'Correo electrónico Webmaster'; - $lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)'; - $lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.'; + $lang->about_webmaster_name = 'Por favor, webmaster de entrada el nombre que se utilizará para la autenticación de los correos u otros sitio de la administración. (Por defecto: webmaster)'; + $lang->about_webmaster_email = 'Introduzca la dirección de correo electrónico webmaster.'; $lang->search_target_list = array( 'user_id' => 'ID', @@ -97,7 +97,7 @@ $lang->cmd_manage_form = 'Manejo de forma del registro'; $lang->cmd_view_own_document = 'Ver documentos escritos'; $lang->cmd_view_scrapped_document = 'Ver Scraps'; - $lang->cmd_view_saved_document = '저장함 보기'; + $lang->cmd_view_saved_document = 'Ver artículos guardados'; $lang->cmd_send_email = 'Enviar Email'; $lang->cmd_send_message = 'Enviar Mensaje'; $lang->cmd_reply_message = 'Responder el mensaje'; @@ -116,10 +116,10 @@ $lang->msg_checked_file_is_deleted = '%d archivos adjuntos son eliminados'; $lang->msg_find_account_title = 'Account Info'; - $lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다'; - $lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.
    로그인 하신 후 비밀번호를 바꾸어주세요.'; - $lang->msg_auth_mail_sended = '%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요.'; - $lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다. 꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.'; + $lang->msg_find_account_info = 'Esto se solicita la información de la cuenta'; + $lang->msg_find_account_comment = 'La contraseña se modificará para arriba al hacer clic en un enlace a continuación.
    Por favor, después de modificar la contraseña de acceso.'; + $lang->msg_auth_mail_sended = 'La autenticación de correo ha sido enviado a% s. Por favor, compruebe su correo.'; + $lang->msg_success_authed = 'Esto no es válido solicitud de autenticación.
    Por favor, inténtelo encontrar información de la cuenta o póngase en contacto con el administrador.'; $lang->msg_no_message = 'No hay mensajes'; $lang->message_received = 'Usted ha recibido un mensaje'; @@ -142,7 +142,7 @@ $lang->msg_allow_message_to_friend = "Falló el envío por permitir sólo mensajes de sus amigos"; $lang->msg_disallow_message = 'Falló el envío por ser usuario rechazado para recibir mensajes'; $lang->msg_insert_group_name = 'Por favor ingresar el nombre del grupo'; - $lang->msg_check_group = '그룹을 선택해 주세요'; + $lang->msg_check_group = 'Introduce nombre de grupo'; $lang->msg_not_uploaded_image_name = 'Imagen del nombre no puede ser registrado'; $lang->msg_not_uploaded_image_mark = 'Imagen de marca no puede ser resistrado'; @@ -184,14 +184,14 @@ $lang->about_image_name = "Permitir a los usuarios el uso de imagen del nombre en ves del nombre del usuario"; $lang->about_image_mark = "Permitir a los usuarios el uso de imagen de marca delante de sus nombres"; - $lang->about_profile_image = '사용자의 프로필 이미지를 사용할 수 있게 합니다'; + $lang->about_profile_image = 'Permitir a los usuarios a utilizar nombre de la imagen en lugar de texto nombre'; $lang->about_accept_agreement = "Yo he leído todo el acuerdo y acepto"; $lang->about_member_default = 'Al registrar se configura como grupo predefinido'; $lang->about_openid = 'Cuando tu registra como OpenID, la información básica como ID o la dirección del email sera guardado en este sitio, pero la contraseña y la resolución de la certificación se hará en el servicio ofrecido por openID'; - $lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.
    탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다'; + $lang->about_openid_leave = 'La secesión de OpenID medios eliminación de su información de miembros de este sitio.
    Si se registra después de la secesión, se le reconocerá como un nuevo miembro, de modo que ya no tienen el permiso para que su ex-escrito artículos.'; $lang->about_member = "Esto es un módulo para crear/modificar/eliminar usuarios y manejar grupos o el formato del registro.\n Usted puede manejar usuarios creando nuevos grupos, y obtener información adicional manejando el formato del registro"; - $lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다
    가입할때 등록하신 메일 주소를 입력하시고 "아이디/ 비밀번호 찾기" 버튼을 클릭해주세요.
    '; + $lang->about_find_member_account = 'Su información de la cuenta será observado por dirección de correo electrónico registrada.
    Introduce la dirección de correo electrónico que usted tiene de entrada en el registro, y pulse "Buscar" Información de la cuenta ".
    '; ?> diff --git a/modules/menu/lang/es.lang.php b/modules/menu/lang/es.lang.php index 17e9fbcd8..86e6aac19 100644 --- a/modules/menu/lang/es.lang.php +++ b/modules/menu/lang/es.lang.php @@ -49,5 +49,5 @@ $lang->about_menu = "Módulo del menú te ayudara a crear un sitio completo a través de un conveniente manejo del menú que ordena los módulos creados y conecta con el diseño sin ningún otro trabajo.\nEl menú no es un manejador del sitio, sino que permite conectar los módulos con el diseño y a través del diseño puede expresar variados estilos del menú."; - $lang->alert_image_only = "이미지 파일만 등록가능합니다."; + $lang->alert_image_only = "Sólo los archivos de imagen pueden ser registradas."; ?> diff --git a/modules/point/lang/es.lang.php b/modules/point/lang/es.lang.php index d981b11e5..d4b48381b 100644 --- a/modules/point/lang/es.lang.php +++ b/modules/point/lang/es.lang.php @@ -26,16 +26,16 @@ $lang->disable_download = 'Prohibida la descarga'; $lang->about_disable_download = "Se prohibe la descarga de archivos al tener los puntos insuficientes.. (Excepto los archivos de imagen)"; - $lang->level_point_calc = '레벨별 포인트 계산'; - $lang->expression = '레벨 변수 i를 사용하여 자바스크립트 수식을 입력하세요. 예: Math.pow(i, 2) * 90'; - $lang->cmd_exp_calc = '계산'; - $lang->cmd_exp_reset = '초기화'; + $lang->level_point_calc = 'Punto por punto cálculo'; + $lang->expression = 'Por favor, de entrada mediante el uso de Javascript fórmula nivel variable i . Ex) Math.pow (i, 2) * 90'; + $lang->cmd_exp_calc = 'Calcular'; + $lang->cmd_exp_reset = 'Restablecer'; - $lang->cmd_point_recal = '포인트 재계산'; - $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->cmd_point_recal = 'Punto Recalcular'; + $lang->about_cmd_point_recal = 'Que se encargará de chequear los artículos / comentarios / archivos adjuntos y restablecer todos los miembros punto a punto preestablecido.'; - $lang->point_link_group = '그룹 연동'; - $lang->about_point_link_group = '그룹에 원하는 레벨을 지정하면 해당 레벨에 도달할때 그룹이 변경됩니다. 단 새로운 그룹으로 변경될때 이전에 자동 등록된 그룹은 제거됩니다.'; + $lang->point_link_group = 'Grupo de cambio de nivel'; + $lang->about_point_link_group = 'Si especifica nivel para un grupo específico, a los usuarios se les asigna en el grupo cuando se adavnce al nivel por conseguir puntos. Al nuevo grupo se le asigna, el usuario se retira del ex grupo asignado.'; $lang->about_module_point = "Usted puede definir los puntos para cada módulo y los módulos que no tengan ningun valor usarán punto predefinido.
    Todos los puntos serán restituidos al actuar en forma contraria."; @@ -47,7 +47,7 @@ $lang->point_upload_file = 'Al subri archivos'; $lang->point_delete_file = 'Al borrar archivos'; $lang->point_download_file = 'Al descargar archivos (Excepto imágenes)'; - $lang->point_read_document = '게시글 조회'; + $lang->point_read_document = 'El Reading'; $lang->cmd_point_config = 'Configuración predefinida'; @@ -57,6 +57,6 @@ $lang->msg_cannot_download = "No tiene puntos suficientes para descagar"; - $lang->point_recal_message = '포인트 적용중입니다. (%d / %d)'; - $lang->point_recal_finished = '포인트 재계산이 모두 완료되었습니다'; + $lang->point_recal_message = 'Ajuste de Punto. (%d / %d)'; + $lang->point_recal_finished = 'Punto cálculo está acabado.'; ?> diff --git a/widgets/gagachat/conf/info.xml b/widgets/gagachat/conf/info.xml index 6307a8390..b4a2fed16 100644 --- a/widgets/gagachat/conf/info.xml +++ b/widgets/gagachat/conf/info.xml @@ -40,21 +40,21 @@ Si los miembros del sistema no es necesario, basta con introducir el título. text 보안 채팅방 사용시에만 필요함. 보안 채팅방을 사용하지 않을 경우에는 빈 칸으로 놔두시길 바랍니다. Security Key is only necessary for secure chat rooms. In case of normal chat room, please leave it blank. - Security Key is only necessary for secure chat rooms. In case of normal chat room, please leave it blank. + Clave de seguridad sólo es necesario para garantizar las salas de chat. En caso de la sala de chat normal, por favor dejar en blanco. 채팅방 관리자(선택사항) Chat Room Adminstrator (Optional) - Chat Room Adminstrator (Optional) + Sala de chat Administrador (Opcional) text 보안 채팅방 사용시에만 적용됨. 강제 퇴장 기능 가능함. 아이디, 아이디2, 아이디3 처럼 채팅방 관리자들을 , 로 분리하시길 바랍니다. Adminstrators will be applied for secure chat rooms. Banning available. Please seperate each id with comma(,) like ID1, ID2, ID3. - Adminstrators will be applied for secure chat rooms. Banning available. Please seperate each id with comma(,) like ID1, ID2, ID3. + Adminstrators se aplicarán para garantizar las salas de chat. Se prohíben los disponibles. Por favor, separar cada id con una coma (,) como ID1, ID2, ID3. 채팅방 형태 Form of Chat Room - Form of Chat Room + Forma de la sala de chat select 세로형/가로형 Vertical/Horizontal @@ -75,63 +75,63 @@ Si los miembros del sistema no es necesario, basta con introducir el título. 채팅방 높이(선택사항) Height of Chat Room (Optional) - Height of Chat Room (Optional) + Altura de la Sala de chat (Opcional) text 채팅방 높이(기본값 450) Height of chat room (450 as default) - Height of chat room (450 as default) + Altura de la sala de chat (450 como valor por defecto) 글씨체(선택사항) Font (Optional) - Font (Optional) + Font (Opcional) text Font-family 예) 굴림체 Font-family ex) Gulim - Font-family ex) Gulim + Font-family ex) Gulim 글씨 색깔(선택사항) Font Color (Optional) - Font Color (Optional) + Font Color (Optional) text 채팅방 글씨 색깔 예) white 또는 #FFFFFF Font color of chat room ex) white or #FFFFFF - Font color of chat room ex) white or #FFFFFF + Font color de la ex sala de chat) o blanco # FFFFFF 배경 색깔(선택사항) Background Color (Optional) - Background Color (Optional) + Color de fondo (Opcional) text 채팅방 배경 색깔 예) black 또는 #000000 Background color of chat room ex) black or #000000 - Background color of chat room ex) black or #000000 + Color de fondo de la sala de chat ex) o negro # 000000 큰 글씨체 Large Font - Large Font + Large Font select 글씨체 크기 Font size - Font size + Font size 작은 글씨체 Small Font - Small Font + Small Font small 중간 글씨체 Medium Font - Medium Font + Medium Font medium 큰 글씨체 Large Font - Large Font + Large Font large From 235a2d6e0ed94a9042f058ebb99d193916bf88d6 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 15:02:09 +0000 Subject: [PATCH 230/278] =?UTF-8?q?es.lang.php=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=B6=94=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3673 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/referer/lang/es.lang.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 modules/referer/lang/es.lang.php diff --git a/modules/referer/lang/es.lang.php b/modules/referer/lang/es.lang.php new file mode 100644 index 000000000..1c5ba0cd0 --- /dev/null +++ b/modules/referer/lang/es.lang.php @@ -0,0 +1,10 @@ + + * @brief English language pack + */ + + $lang->referer = "Referer"; + $lang->ranking = "Ranking"; +?> From 68f870e9c302903520bbe0cebe17c1854c5d58d9 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 15:11:33 +0000 Subject: [PATCH 231/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3674 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/opage/lang/es.lang.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 modules/opage/lang/es.lang.php diff --git a/modules/opage/lang/es.lang.php b/modules/opage/lang/es.lang.php new file mode 100644 index 000000000..decea7cf4 --- /dev/null +++ b/modules/opage/lang/es.lang.php @@ -0,0 +1,15 @@ +opage = "Page Exteriores"; + $lang->opage_path = "Ubicacion del documento externo"; + $lang->opage_caching_interval = "Establezca el tiempo de cache"; + + $lang->about_opage = "Este modulo permite el uso externo de archivos html o php en Zeroboard XE.
    Permite ruta absoluta o relativa, y si la URL comienza con "http://", se puede mostrar la pagina externa del servidor."; + $lang->about_opage_path= "Por favor ingrese la ubicacion del documento externos.
    Ambos ruta absoluta como '/ path1/path2/sample.php' o ruta relativa como "../path2/sample.php 'puede ser utilizado.
    Si la via de entrada, como "http://url/sample.php ', el resultado sera recibido y, a continuacion se muestran.
    Esta es la actual Zeroboard Xe ruta absoluta.
    "; + $lang->about_opage_caching_interval = "La unidad es minuto, y se muestra temporal de los datos guardados por el tiempo asignado.
    Se recomienda a la cache para una buena vez si una gran cantidad de recursos se necesitan otros servidores cuando se muestran los datos o la informacion.
    Un valor de 0 no cache."; +?> From 1abf58df2ac2561539d40de980a0f11af08096a6 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Thu, 14 Feb 2008 15:32:30 +0000 Subject: [PATCH 232/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3675 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/lang/es.lang.php | 32 ++++++++++++++++---------------- widgets/rank_count/conf/info.xml | 24 ++++++++++++++++++++++++ widgets/rank_point/conf/info.xml | 18 ++++++++++++++++++ 3 files changed, 58 insertions(+), 16 deletions(-) diff --git a/modules/editor/lang/es.lang.php b/modules/editor/lang/es.lang.php index 0dd591e59..8df8d3a90 100644 --- a/modules/editor/lang/es.lang.php +++ b/modules/editor/lang/es.lang.php @@ -28,23 +28,23 @@ $lang->cmd_disable = "Desactivado"; $lang->cmd_enable = "activado"; - $lang->editor_skin = '에디터 스킨'; - $lang->upload_file_grant = '파일 첨부 권한'; - $lang->enable_default_component_grant = '기본 컴포넌트 사용 권한'; - $lang->enable_component_grant = '컴포넌트 사용 권한'; - $lang->enable_html_grant = 'HTML편집 권한'; - $lang->enable_autosave = '자동저장 사용'; - $lang->height_resizable = '높이 조절 가능'; - $lang->editor_height = '에디터 높이'; + $lang->editor_skin = 'Editor de Cuidado de la Piel'; + $lang->upload_file_grant = 'La autorización para cargar'; + $lang->enable_default_component_grant = 'La autorización del uso de los componentes por defecto'; + $lang->enable_component_grant = 'La autorización de la utilización de componentes'; + $lang->enable_html_grant = 'La autorización de uso de HTML'; + $lang->enable_autosave = 'Utilice función de guardado automático,'; + $lang->height_resizable = 'Altura cambiar de tamaño'; + $lang->editor_height = 'Altura de Editor'; - $lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다'; - $lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)'; - $lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다'; - $lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다'; - $lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.'; - $lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다'; + $lang->about_editor_skin = 'Usted puede seleccionar la piel del editor.'; + $lang->about_upload_file_grant = 'Usted puede configurar el permiso de archivo adjunto. (Todo el mundo tendría permiso si no comprobado)'; + $lang->about_default_component_grant = 'Usted puede configurar el permiso de uso de los componentes de editor por defecto. (Todo el mundo tendría permiso si no comprobado)'; + $lang->about_component_grant = 'Usted puede configurar el permiso de utilizar la ampliación de los componentes de editor. (Todo el mundo tendría permiso si no comprobado)'; + $lang->about_editor_height = 'Usted puede configurar la altura del editor.'; + $lang->about_editor_height_resizable = 'Permiso para cambiar el tamaño de la altura del editor.'; + $lang->about_enable_html_grant = 'Usted puede dar el permiso de uso de HTML'; + $lang->about_enable_autosave = 'Usted puede permitir que la función de guardado automático, en tanto que función de la redacción de artículos'; $lang->edit->fontname = 'Fuente'; $lang->edit->fontsize = 'Tamaño'; diff --git a/widgets/rank_count/conf/info.xml b/widgets/rank_count/conf/info.xml index a2e8a5d7d..c4f767aa2 100644 --- a/widgets/rank_count/conf/info.xml +++ b/widgets/rank_count/conf/info.xml @@ -3,17 +3,20 @@ 글, 댓글 랭킹 출력 書き込み、コメントランキング出力 Article, Comment Ranking + El artículo, el comentario ranking 会员各项活动排行榜 Рейтинг статей, комментариев Simulz Simulz Simulz + Simulz Simulz Simulz 글, 댓글 작성 순위를 출력합니다. 書き込み、コメント作成順位を出力します。 This widget displays articles and comments ranking. + Este widget muestra de artículos y comentarios ranking. 按发表主题/评论/附件/推荐/查看数显示会员排行的控件。 Этот виджет отображает рейтинг статей и комментариев. @@ -23,12 +26,14 @@ タイトル 栏目名 Title + Título Заголовок text 위젯의 제목으로 출력됩니다. ウィジェットのタイトルとして出力されます。 显示为控件的栏目名。 It will be the title. + Será el título. Это будет заголовком.
    @@ -49,6 +54,9 @@ 순위 대상 + Rank target + Rango meta + Место целевого 順位対象 排行对象 select @@ -56,12 +64,14 @@ 対象を選択してください。 请选择排行对象。 Rank by + Rank por Рейтинговать по 글 작성 書き込み作成 发表主题 Article + Artículo Статья document @@ -70,6 +80,7 @@ コメント作成 发表评论 Comment + Comentario Комментарий comment @@ -78,6 +89,7 @@ ファイル添付 附件 Attach + Adjuntar Вложение attach @@ -86,6 +98,7 @@ 推薦数 推荐 Votes + Votos Голоса vote @@ -94,6 +107,7 @@ 照合数 查看 Reads + Lecturas Прочтения read @@ -103,18 +117,21 @@ 管理者 显示管理员 Without Admin + Sin Admin Без админа select 순위에 관리자를 포함합니다. 順位に管理者を含みます。 选择排行榜是否要显示管理员。 Disables admins' ranking + Desactiva admins' ranking Отключает учет рейтинга админов 포함 含む 显示 False + Falso Нет false @@ -123,6 +140,7 @@ 含まない 不显示 True + Verdadero Да true @@ -132,12 +150,14 @@ グループを含む 用户组 With Group + Con Grupo С группой text 출력할 회원 그룹명을 입력하세요. 예)준회원,정회원 出力する会員グループ名を入力してください(例:準会員、正会員)。 请输入要显示的会员组。例)准会员,正会员 Enables group's ranking + Permite grupo de la clasificación Включает учет рейтинга группы @@ -145,12 +165,14 @@ グループ除外 豁免用户组 Without Group + Sin Grupo Без группы text 제외할 회원 그룹명을 입력하세요. 예)관리그룹 除外するグループ名を入力してください(例:管理グループ) 请输入豁免用户组名。例)管理组 Disables group's ranking + Desactiva grupo de la clasificación Выключает учет рейтинга группы @@ -158,12 +180,14 @@ 期間(日) 期间(日期) Registration Date + Fecha de Registro Дата регистрации text 설정 기간 내의 순위를 출력합니다. 設定期間内の順位を出力します。 显示设置期间内的会员排行。 Registration Date + Fecha de Registro Дата регистрации
    diff --git a/widgets/rank_point/conf/info.xml b/widgets/rank_point/conf/info.xml index 5b5a82c2a..657074ba5 100644 --- a/widgets/rank_point/conf/info.xml +++ b/widgets/rank_point/conf/info.xml @@ -3,17 +3,20 @@ 포인트 랭킹 출력 ポイントランキング出力 Display Point Ranking + Pantalla punto ranking 会员积分排行榜 Отображение рейтинга поинтов Simulz Simulz + Simulz Simulz Simulz Simulz 회원의 포인트 순위를 출력합니다. 会員のポイント順位を出力します。 This widget displays members' point ranking. + Este widget muestra de los miembros del punto de la clasificación. 显示会员积分排行的控件。 Этот виджет отображает рейтинг поитов пользователей. @@ -22,11 +25,14 @@ 제목 タイトル Title + Título + Название 栏目名 text 위젯의 제목으로 출력됩니다. ウィジェットのタイトルとして出力します。 It will be displayed as widget's title. + Que se mostrarán en forma de widget de título. 显示为控件的栏目名。 Это будет заголовком виджета. @@ -34,11 +40,14 @@ 목록수 リスト数 No. of List + N º de la lista + Количество Список 目录数 text 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) 出力されるリストの数を指定することができます(デフォルト5個)。 You may set number of list that will be displayed. (default 5) + Usted puede configurar el número de lista que se mostrarán. (Por defecto 5) 可以设置要显示的会员数。(默认为5个) Вы можете выбрать число списка для отображения. (стандарт: 5) @@ -46,17 +55,21 @@ 관리자 管理者 Administrator + Administrador + Администратор 显示管理员 select 순위에 관리자를 포함합니다. 順位に管理者を含みます。 Administrators will be also ranked. + Los administradores también se clasificó. 选择排行榜是否要显示管理员。 Администраторы будут тоже подлежать рейтингу. 포함 含む Include + Incluir 显示 Включить false @@ -65,6 +78,7 @@ 미포함 含まない Exclude + Excluir 不显示 Исключить true @@ -74,12 +88,14 @@ 그룹 포함 グループを含む Include Group + Incluir Grupo 用户组 Включить группу text 출력할 회원 그룹명을 입력하세요. 예)준회원,정회원 出力する会員のグループ名を入力してください(例:準会員、正会員)。 Please input name of group to include. ex) Associate, Regular Group + Introduce nombre de grupo a incluir. Ex) Asociado, Grupo Regular 请输入要显示的会员组。例)准会员,正会员 Пожалуйста, введите имя группы для включения. например: Общая, Обычная (Associate, Regular Group) @@ -87,12 +103,14 @@ 그룹 제외 グループ除外 Exclude Group + Excluir Grupo 豁免用户组 Исключить группу text 제외할 회원 그룹명을 입력하세요. 예)관리그룹,정회원 除外するグループ名を入力してください(管理グループ、正会員)。 Please input name of group to exclude. ex) Managing, Regular Group + Introduce nombre de grupo para excluir. Ex) Administrar, regular Group 请输入豁免用户组名。例)管理组 Пожалуйста, введите имя группы для ислючения. например: Общая, Обычная (Associate, Regular Group) From 6c1dd09f6be6ecb595566779a396a9613e87eb5f Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 00:55:27 +0000 Subject: [PATCH 233/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3676 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/es.lang.php | 4 ++-- modules/opage/lang/es.lang.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/board/lang/es.lang.php b/modules/board/lang/es.lang.php index c569181f4..621e2b384 100644 --- a/modules/board/lang/es.lang.php +++ b/modules/board/lang/es.lang.php @@ -7,7 +7,7 @@ $lang->board = "Tablero"; - $lang->except_notice = "공지사항 제외"; + $lang->except_notice = "Excluir Avisos"; $lang->cmd_manage_menu = 'Manejo del menú'; $lang->cmd_make_child = 'Agregar sub categoría'; $lang->cmd_enable_move_category = "Cambiar la posición de la categoría. (arrastrar y soltar luego de haber selecionado)"; @@ -34,7 +34,7 @@ $lang->about_category_group_srls = 'Solo se verán los grupos seleccionados en la actual categoría. (Abrir manualmente en archivo xml para la exposición)'; $lang->about_layout_setup = 'Puede modificar manualmente el código del diseño de tableros. Insertar o modificar el código de widget.'; $lang->about_board_category = 'Puede crear las categorias de tableros.
    Cuando no funciona la categoría de tableros, rehacer el archivo caché manualmente para solucionar.'; - $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; + $lang->about_except_notice = "Aviso de los artículos no se mostrará en la lista normal."; $lang->about_board = "Este módulo es para crear y manejar los tableros.\nLuego de crear un Tablero, seleciona el nombre del módulo para la configuración más detallada.\nSea cuidadoso con el nombre del módulo, ya que ese nombre va a ser la dirección URL. (ej : http://dominio/zb/?mid=nombre del módulo)"; $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; ?> diff --git a/modules/opage/lang/es.lang.php b/modules/opage/lang/es.lang.php index decea7cf4..bbcb92d5b 100644 --- a/modules/opage/lang/es.lang.php +++ b/modules/opage/lang/es.lang.php @@ -9,7 +9,7 @@ $lang->opage_path = "Ubicacion del documento externo"; $lang->opage_caching_interval = "Establezca el tiempo de cache"; - $lang->about_opage = "Este modulo permite el uso externo de archivos html o php en Zeroboard XE.
    Permite ruta absoluta o relativa, y si la URL comienza con "http://", se puede mostrar la pagina externa del servidor."; - $lang->about_opage_path= "Por favor ingrese la ubicacion del documento externos.
    Ambos ruta absoluta como '/ path1/path2/sample.php' o ruta relativa como "../path2/sample.php 'puede ser utilizado.
    Si la via de entrada, como "http://url/sample.php ', el resultado sera recibido y, a continuacion se muestran.
    Esta es la actual Zeroboard Xe ruta absoluta.
    "; + $lang->about_opage = 'Este modulo permite el uso externo de archivos html o php en Zeroboard XE.
    Permite ruta absoluta o relativa, y si la URL comienza con "http://", se puede mostrar la pagina externa del servidor.'; + $lang->about_opage_path= "Por favor ingrese la ubicacion del documento externos.
    Ambos ruta absoluta como '/ path1/path2/sample.php' o ruta relativa como \"../path2/sample.php\" puede ser utilizado.
    Si la via de entrada, como \"http://url/sample.php\", el resultado sera recibido y, a continuacion se muestran.
    Esta es la actual Zeroboard Xe ruta absoluta.
    "; $lang->about_opage_caching_interval = "La unidad es minuto, y se muestra temporal de los datos guardados por el tiempo asignado.
    Se recomienda a la cache para una buena vez si una gran cantidad de recursos se necesitan otros servidores cuando se muestran los datos o la informacion.
    Un valor de 0 no cache."; ?> From 3c49faf7fbaeb5cfbc4bdd654b1d3c9de348b31e Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 03:37:21 +0000 Subject: [PATCH 234/278] =?UTF-8?q?=EC=B5=9C=EA=B7=BC=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=20>=20=EB=89=B4=EC=8A=A4=ED=8B=B0=EC=BB=A4=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A8=20css=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3677 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../skins/news_ticker/css/black.css | 4 ++-- .../skins/news_ticker/css/blue.css | 4 ++-- .../skins/news_ticker/css/gray.css | 4 ++-- .../skins/news_ticker/css/green.css | 4 ++-- .../newest_document/skins/news_ticker/css/red.css | 4 ++-- .../skins/news_ticker/css/yellow.css | 4 ++-- .../skins/news_ticker/images/black/left.gif | Bin 256 -> 0 bytes .../skins/news_ticker/images/black/right.gif | Bin 255 -> 0 bytes .../skins/news_ticker/images/blue/left.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/blue/right.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/gray/left.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/gray/right.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/green/left.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/green/right.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/none/left.gif | Bin 43 -> 0 bytes .../skins/news_ticker/images/none/right.gif | Bin 43 -> 0 bytes .../skins/news_ticker/images/red/left.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/red/right.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/yellow/left.gif | Bin 261 -> 0 bytes .../skins/news_ticker/images/yellow/right.gif | Bin 261 -> 0 bytes .../newest_document/skins/news_ticker/list.html | 5 ----- 21 files changed, 12 insertions(+), 17 deletions(-) delete mode 100644 widgets/newest_document/skins/news_ticker/images/black/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/black/right.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/blue/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/blue/right.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/gray/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/gray/right.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/green/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/green/right.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/none/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/none/right.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/red/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/red/right.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/yellow/left.gif delete mode 100644 widgets/newest_document/skins/news_ticker/images/yellow/right.gif diff --git a/widgets/newest_document/skins/news_ticker/css/black.css b/widgets/newest_document/skins/news_ticker/css/black.css index d0e09c72c..68c6e1f6c 100644 --- a/widgets/newest_document/skins/news_ticker/css/black.css +++ b/widgets/newest_document/skins/news_ticker/css/black.css @@ -1,7 +1,7 @@ .news_ticker_black { height:25px; overflow:hidden; clear:both; background:#FFFFFF url("../images/black/bg.gif") repeat-x left top; white-space:nowrap; } -.news_ticker_black table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed;} -.news_ticker_black table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; } +.news_ticker_black table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed; border-left:1px solid #000000; border-right:1px solid #000000; } +.news_ticker_black table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; padding:0 6px 0 6px; } .news_ticker_black .tickerBox { height:16px; margin:3px 0 3px 0; padding-top:3px; white-space:nowrap; overflow:hidden; } diff --git a/widgets/newest_document/skins/news_ticker/css/blue.css b/widgets/newest_document/skins/news_ticker/css/blue.css index d7d7a9d7d..bc9c8af48 100644 --- a/widgets/newest_document/skins/news_ticker/css/blue.css +++ b/widgets/newest_document/skins/news_ticker/css/blue.css @@ -1,7 +1,7 @@ .news_ticker_blue { height:25px; overflow:hidden; clear:both; background:#FFFFFF url("../images/blue/bg.gif") repeat-x left top; white-space:nowrap; } -.news_ticker_blue table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed;} -.news_ticker_blue table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; } +.news_ticker_blue table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed; border-left:1px solid #000000; border-right:1px solid #000000;} +.news_ticker_blue table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; padding:0 6px 0 6px;} .news_ticker_blue .tickerBox { height:25px; padding-top:6px; white-space:nowrap; overflow:hidden; } diff --git a/widgets/newest_document/skins/news_ticker/css/gray.css b/widgets/newest_document/skins/news_ticker/css/gray.css index f408135a8..3df93b939 100644 --- a/widgets/newest_document/skins/news_ticker/css/gray.css +++ b/widgets/newest_document/skins/news_ticker/css/gray.css @@ -1,7 +1,7 @@ .news_ticker_gray { height:25px; overflow:hidden; clear:both; background:#FFFFFF url("../images/gray/bg.gif") repeat-x left top; white-space:nowrap; } -.news_ticker_gray table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed;} -.news_ticker_gray table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; } +.news_ticker_gray table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed; border-left:1px solid #000000; border-right:1px solid #000000; } +.news_ticker_gray table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; padding:0 6px 0 6px;} .news_ticker_gray .tickerBox { height:25px; padding-top:6px; white-space:nowrap; overflow:hidden; } diff --git a/widgets/newest_document/skins/news_ticker/css/green.css b/widgets/newest_document/skins/news_ticker/css/green.css index 5335aba80..bfbe66f5e 100644 --- a/widgets/newest_document/skins/news_ticker/css/green.css +++ b/widgets/newest_document/skins/news_ticker/css/green.css @@ -1,7 +1,7 @@ .news_ticker_green { height:25px; overflow:hidden; clear:both; background:#FFFFFF url("../images/green/bg.gif") repeat-x left top; white-space:nowrap; } -.news_ticker_green table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed;} -.news_ticker_green table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; } +.news_ticker_green table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed; border-left:1px solid #000000; border-right:1px solid #000000;} +.news_ticker_green table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; padding:0 6px 0 6px; } .news_ticker_green .tickerBox { height:25px; padding-top:6px; white-space:nowrap; overflow:hidden; } diff --git a/widgets/newest_document/skins/news_ticker/css/red.css b/widgets/newest_document/skins/news_ticker/css/red.css index 19fbfb01d..8e2acf392 100644 --- a/widgets/newest_document/skins/news_ticker/css/red.css +++ b/widgets/newest_document/skins/news_ticker/css/red.css @@ -1,7 +1,7 @@ .news_ticker_red { height:25px; overflow:hidden; clear:both; background:#FFFFFF url("../images/red/bg.gif") repeat-x left top; white-space:nowrap; } -.news_ticker_red table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed;} -.news_ticker_red table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; } +.news_ticker_red table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed; border-left:1px solid #000000; border-right:1px solid #000000;} +.news_ticker_red table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; padding:0 6px 0 6px;} .news_ticker_red .tickerBox { height:25px; padding-top:6px; white-space:nowrap; overflow:hidden; } diff --git a/widgets/newest_document/skins/news_ticker/css/yellow.css b/widgets/newest_document/skins/news_ticker/css/yellow.css index 4b05e5d9b..ac1b5d26c 100644 --- a/widgets/newest_document/skins/news_ticker/css/yellow.css +++ b/widgets/newest_document/skins/news_ticker/css/yellow.css @@ -1,7 +1,7 @@ .news_ticker_yellow { height:25px; overflow:hidden; clear:both; background:#FFFFFF url("../images/yellow/bg.gif") repeat-x left top; white-space:nowrap; } -.news_ticker_yellow table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed;} -.news_ticker_yellow table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; } +.news_ticker_yellow table { width:100%; height:25px; margin:0; padding:0; table-layout:fixed; border-left:1px solid #000000; border-right:1px solid #000000;} +.news_ticker_yellow table td { white-space:nowrap; overflow:hidden; height:25px; vertical-align:top; padding:0 6px 0 6px; } .news_ticker_yellow .tickerBox { height:25px; padding-top:6px; white-space:nowrap; overflow:hidden; } diff --git a/widgets/newest_document/skins/news_ticker/images/black/left.gif b/widgets/newest_document/skins/news_ticker/images/black/left.gif deleted file mode 100644 index fc78f4245d4233e86e82ab6ebf878eb1bcd4b4d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmZ?wbhEHb(3Xz|5GP+V1YqJkVOB9$C(FntY$B7DDj#*PwK`Rvude|{SV%AI_k|n zy}YIBY}|aM4?Aq?jBdRD@w@Zj``^FS8Je0~n$`I_I=ed6S^D}X^s5U^nL2Ii)M-;DPoFh& X)-)r51q&A~Fw$D4uDVi1k--`O)0bKP diff --git a/widgets/newest_document/skins/news_ticker/images/blue/left.gif b/widgets/newest_document/skins/news_ticker/images/blue/left.gif deleted file mode 100644 index ae1d28e6d05ed1f91637018f5b49e89aa5b0eec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHbNpK#tXH^{x`Hx$}f> ztTC(Zs@VVFeWs({?9=MaRcGVot9{sEQIRvV#F|O_MBNptP2({T42PnZ25|1Mp|psRoAO1GFSru==OEX diff --git a/widgets/newest_document/skins/news_ticker/images/gray/left.gif b/widgets/newest_document/skins/news_ticker/images/gray/left.gif deleted file mode 100644 index 4bbad94910a74b6d7f96660560fdf683c79a9f50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHb%=JsRJTG zb~3OwC8+kLL`G(;TBZJI--qg;lHBXh7rg&dCw5?gL4}n>|B1((hjOfDtGAVS&7CK8 zV~tsLQN{iT?=>CuW}jAXt~whxU**FNo4TqS?|=OEJox_iZ*``o=9Xr4mX6M@PIckF s{t5l+3{$2~o2o82YxbPk>f8$!E?TJ0xNP}~%=JsRJTG zb~3OwC8+kPWX{d#3iEiqZ*6E`N$%xO3*PV16F;y(K*L(1-(xY)p&YB3Mr|ctQ%_0V zSRa?2|^#RcFIat9;lYqgQ?7eZ_8{gYSR;G-7IMZfP=N>FDh0FcR+T rpU`K-FlFkrDMo^`X3v>r#JynQq6J2b%a*TLW~8-7U3I;RB7-#mQPXzV diff --git a/widgets/newest_document/skins/news_ticker/images/green/left.gif b/widgets/newest_document/skins/news_ticker/images/green/left.gif deleted file mode 100644 index 24aeffcf5f86905408b4e3812caca3ecf1e4014b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHb4BMtpf`TDzYT{Pdv^%kYhDly}iV1?mUhg zYs{)=RqTK8zSBu>_UYxVRcGVoOMKX2Q>S&~{g2-#54`{VTb;kDxusd1v7@uAQ(dsH re?q@H!<4Dhrm73gnmuQ>I_H9gix#RgEnB`~xw`fm4Yl=3iVW5Oq*Zz) diff --git a/widgets/newest_document/skins/news_ticker/images/green/right.gif b/widgets/newest_document/skins/news_ticker/images/green/right.gif deleted file mode 100644 index 001867bc8d6f925225e9495c5fe411442643b45e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHbTK9)i4Qwu^t5lhuh@O&!291njrg0ITbhg*J36~Mj0F4o rC-fOHOqn`uijmN)*>h$YaV}W6Xn_&avgIq58ELIiS6#27$Y2csCF^!2 diff --git a/widgets/newest_document/skins/news_ticker/images/none/left.gif b/widgets/newest_document/skins/news_ticker/images/none/left.gif deleted file mode 100644 index 35d42e808f0a8017b8d52a06be2f8fec0b466a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ diff --git a/widgets/newest_document/skins/news_ticker/images/none/right.gif b/widgets/newest_document/skins/news_ticker/images/none/right.gif deleted file mode 100644 index 35d42e808f0a8017b8d52a06be2f8fec0b466a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ diff --git a/widgets/newest_document/skins/news_ticker/images/red/left.gif b/widgets/newest_document/skins/news_ticker/images/red/left.gif deleted file mode 100644 index 2e3ded5e51564a9ca285c6db29ebea79e57fef44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHb()KnvgOf=6`!tOe|6x%i(R`OELwDL&YYXQy*IkL z?#`HTd(xzvJv}!%JHI`7^7;1d_vg=lfA;L{$&+6nJgC*u`v3nw18$)BlLaiP10q3o zGO#u!sP?5qMrN#9wfxDx57l-hx!2W~zW-C_bYOu&g_1=7iN~6Ua;#=A?=10}JCEVU z8nbGxiv17XpLEcheOkS->TKM6rVl%8>ZESG|MC0ff%m_Et8+9pw=}DBcXW1js`K>q rPv}?YoHBLVRCV52v**lK=UT9E(L!~;Wy@DASJz&np|)O0k--`OGwOMf diff --git a/widgets/newest_document/skins/news_ticker/images/red/right.gif b/widgets/newest_document/skins/news_ticker/images/red/right.gif deleted file mode 100644 index 02bf6e34640e09e3876940424a9249570161d9d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHb()KnvgOf=6`!tOe|6x%i(R`OELwDL&YYXQy*IkL z?#`HTd(xzvJv}!%JHI`7^7;1d_vg=lfA;L{$&+6nJgC*u`v3nw18$)BlLaiP10q3o zGO#u!sP?I3&dulw3wph8ZK!QY?q#E;@Av3AA6Ouup)Aqwu~_F&j@8Ufoh4pVPchtB zBc`ogu|Hw`83(=DCyg4b&W4?4`mjSrPx{9DirsGxy#M{vh@+{wrOAl9qqD2Sh^McA qLZ1=ml&RCE81c@UJ!h5?*MfzM78vm@TfSnMk=7b@)%7Zh4Aua6=XDbR diff --git a/widgets/newest_document/skins/news_ticker/images/yellow/left.gif b/widgets/newest_document/skins/news_ticker/images/yellow/left.gif deleted file mode 100644 index d8f1d283c9580be4b23180bc17a59fc8bc963e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmZ?wbhEHbRAgMK9i- zJbR<_)%)}3ZuZ`Pw&la;+n4Xo`1<|X!xy`ry*Ya2-kic(t^fc3GvEe_KUu(%Iv^5c zCj)C!f@)t%WMsywRq0RmeW;cz$-S<=@co}Uy8{ahDug8ZPdx5Cm}50ty|u(^?mV>{ zYs{*hD)v8k@9CsB`?Pv{)!DfDOdodG)JffV|Kqpj!S}y^tBW)>w=}B@baZxgsRAgMK9i- zJbR<_)%)}3ZuZ`Pw&la;+n4Xo`1<|X!xy`ry*Ya2-kic(t^fc3GvEe_KUu(%Iv^5c zCj)C!f@+^i=G=^~u)x>*)`rTKiv0=eeVp`WpEPQ(IvaMH>B9~gJ?R_oD|YJ~eE<8Wkw{Z>OOug6M`u@u5nEsX qggztQDO0CSF=CiCd(JE))&&a}EimF
    {$category_list[$document->get('category_srl')]->title} @@ -122,7 +122,7 @@
    - {$document->getSummary(120)} + {$document->getSummary(120)}   isCarted())-->checked="checked" /> @@ -132,7 +132,7 @@
    - {$document->getSummary(120)} + {$document->getSummary(120)}  
    - - - - -
      @@ -35,7 +31,6 @@
    From bb23904420c915eefcf03a22e68e13329b057a8f Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Fri, 15 Feb 2008 04:35:18 +0000 Subject: [PATCH 235/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3678 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/DroArc_clock/conf/info.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/widgets/DroArc_clock/conf/info.xml b/widgets/DroArc_clock/conf/info.xml index 6de4ca623..e994f0ee9 100644 --- a/widgets/DroArc_clock/conf/info.xml +++ b/widgets/DroArc_clock/conf/info.xml @@ -4,17 +4,20 @@ Flash数字时钟 フラッシュデジタル時計 Flash digital Clock + Reloj digital Flash Цифровые Flash часы 드로아크 DroArc DroArc DroArc + DroArc DroArc 플래쉬로 된 디지털 시계를 출력합니다. 显示Flash数字时钟。 フラッシュのデジタル時計を表示します。 It will display the digital clock created with flash. + Se mostrará el reloj digital creado con flash. Это отображает цифровые часы, созданные flash. @@ -23,12 +26,14 @@ 宽度 横幅 Width + Ancho Ширина text 가로길이를 지정하실 수 있습니다. (기본 150px) 可以设置宽度大小。 (默认为 150px) 横幅のサイズの指定ができます(デフォルト150px)。 It will be able to set the width. (default is 150px) + Se estará en condiciones de establecer el ancho. (Por defecto es 150 px) Возможно установить ширину. (стандартное значение 150px) @@ -37,11 +42,13 @@ 縦幅 Высота Height + Altura text 세로길이를 지정하실 수 있습니다. (기본 64px) 可以设置高度大小。(默认为 64px) 縦幅のサイズの指定ができます(デフォルト64px)。 It will be able to set the width. (default is 64px) + Se estará en condiciones de establecer el ancho. (Por defecto es 64px) Возможно установить высоту. (стандартное значение 64px) From eee31a84a2248617c350b6bb8f361a16c46c7128 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Fri, 15 Feb 2008 04:51:07 +0000 Subject: [PATCH 236/278] =?UTF-8?q?=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4=20?= =?UTF-8?q?=EC=9D=BC=EB=B6=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3679 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/rank_download/conf/info.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/widgets/rank_download/conf/info.xml b/widgets/rank_download/conf/info.xml index 51a91eaf0..994ce7762 100644 --- a/widgets/rank_download/conf/info.xml +++ b/widgets/rank_download/conf/info.xml @@ -3,17 +3,20 @@ 다운로드 랭킹 출력 ダウンロードランキング出力 Download Ranking + Descargar Clasificación 下载附件排行榜 Рейтинг закачек Simulz Simulz Simulz + Simulz Simulz Simulz 자료 내려받기 순위를 출력합니다. ダウンロードランキングを出力します。 This widget displays download ranking. + Este widget muestra descargar ranking. 显示附件下载排行的控件。 Этот виджет отображает рейтинг закачек. @@ -22,12 +25,14 @@ 제목 タイトル Title + Título 栏目名 Залоговок text 위젯의 제목으로 출력됩니다. ウィジェットのタイトルとして出力されます。 It will be displayed as widget's title. + Que se mostrarán en forma de widget de título. 显示为控件的栏目名。 Это будет заголовком виджета. @@ -35,12 +40,14 @@ 목록수 リスト数 No. of List + N º de la lista 目录数 Число списка text 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) 出力されるリスト数を指定することができます(デフォルト5個)。 You may set number of list that will be displayed. (default 5) + You may set number of list that will be displayed. (default 5) 可以设置要显示的排行数。(默认 5个) Вы можете выбрать число списка для отображения. (стандарт: 5) @@ -48,18 +55,21 @@ 파일 종류 ファイルの種類 File Type + File Type 附件类型 Тип файла select 순위에 포함할 파일 종류를 선택하세요. 順位に含むファイルの種類を選択してください。 Please select file type to include. + Please select file type to include. 请选择要显示的附件类型。 Пожалуйста, выберите тип файла для включения. 모두 全て All + All 全部 Все all @@ -68,6 +78,7 @@ 이미지 제외 イメージ除外 Exclude Images + Exclude Images 图片除外 Исключить изображения noimage @@ -76,6 +87,7 @@ 이미지만 イメージのみ Images Only + Images Only 图片 Только изображения image @@ -85,18 +97,21 @@ 내려 받기 ダウンロード Download + Download 显示下载链接 Скачать select 바로 내려 받는 링크를 보여줍니다. 直接ダウンロードするリンクを表示します。 It shows direct download link. + It shows direct download link. 可以选择是否要显示下载链接。 Это показывает прямую ссылку для скачки. 링크 보임 リンク表示 Show Link + Show Link 显示 Показать ссылку Y @@ -105,6 +120,7 @@ 링크 숨김 リンク非表示 Hide Link + Hide Link 不显示 Спрятать ссылку N @@ -114,12 +130,14 @@ 대상 모듈 対象モジュール Target Module + Target Module 对象模块 Модуль назначения mid_list 선택하신 모듈에 등록된 글을 대상으로 합니다. 選択したモジュールに登録されたコンテンツ(書き込み)を対象とします。 Articles in selected module will be target. + Articles in selected module will be target. 将把被选模块中的主题作为对象。 Статьи в выбранном модуле будут назначением. From 42c355c93c19badac7318899f35d055bc8684a72 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Fri, 15 Feb 2008 05:33:20 +0000 Subject: [PATCH 237/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4(=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4)=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3680 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/category/conf/info.xml | 20 ++++++++++++++++++++ widgets/forum/conf/info.xml | 19 +++++++++++-------- widgets/rank_download/conf/info.xml | 24 ++++++++++++------------ 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/widgets/category/conf/info.xml b/widgets/category/conf/info.xml index 30ab9f288..908444e19 100644 --- a/widgets/category/conf/info.xml +++ b/widgets/category/conf/info.xml @@ -1,19 +1,39 @@ 게시글 분류 출력기 + 게시글 분류 출력기 + 게시글 분류 출력기 + 게시글 분류 출력기 + 게시글 분류 출력기 输出主题分类 제로 + zero + zero + zero + zero zero 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. + 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. + 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. + 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. + 게시판등 문서모듈의 분류를 사용하는 모듈에서 분류를 추출하여 블로그 카테고리와 같이 출력하는 기능입니다. 把论坛等文本模块的分类在使用的模块里抽出分类后输出类似于博客分类的功能。 대상 모듈 + 대상 모듈 + 대상 모듈 + 대상 모듈 + 대상 모듈 对象模块 mid_list 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. + 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. + 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. + 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. + 선택하신 모듈을 대상으로 합니다. 꼭 한개의 모듈만 선택해 주세요. 将把被选模块当中的主题作为对象。请选择一个模块。 diff --git a/widgets/forum/conf/info.xml b/widgets/forum/conf/info.xml index c232c8501..4f8e1ec61 100644 --- a/widgets/forum/conf/info.xml +++ b/widgets/forum/conf/info.xml @@ -2,10 +2,10 @@ 포럼형 최근 게시물 论坛型最新主题列表 - 포럼형 최근 게시물 - Dispaly Forum Style Newest Articles - 포럼형 최근 게시물 - 포럼형 최근 게시물 + フォーラムスタイルの最新の記事を表示 + Display Forum Style Newest Articles + Pantalla Foro estilo más reciente de artículos + Дисплей стиле форума новейших статей 제로 zero @@ -22,16 +22,17 @@ 利用对象版面里设定的主题和说明显示。 - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + このウィジェットの最新の記事を表示1つまたは複数の委員会からのフォーラムのスタイルです。説明が表示されるターゲットボードのタイトルと説明しています。 This widget displays newest articles from one or more board in forum style. Description will be displayed with target board's title and description. + + + Este widget muestra más reciente de artículos de uno o varios bordo de estilo en el foro. Descripción se mostrará con la meta bordo del título y la descripción. - 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. - 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + Этот виджет отображает новейшие изделия из одной или нескольких борту в стиле форума. Описание будет отображаться с целевыми борту название и описание. @@ -49,12 +50,14 @@ new图标显示时间(hours) Newの表示時間 (Hours) Duration of indication for new item + Duration of indication for new item Длительность индикации для новых объектов text 새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. (시간 단위) 可以设置最新更新主题的new图标显示时间。 新しく登録された書き込みに対して「New」の表示時間を指定します(時間単位)。 You may set the duration of indication for fresh item. (unit is hour) + Usted puede configurar la duración de la indicación de un nuevo tema. (Unidad es hora) Вы можете установить длительность индикации для нового объекта. (единица - час) diff --git a/widgets/rank_download/conf/info.xml b/widgets/rank_download/conf/info.xml index 994ce7762..892073731 100644 --- a/widgets/rank_download/conf/info.xml +++ b/widgets/rank_download/conf/info.xml @@ -47,7 +47,7 @@ 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) 出力されるリスト数を指定することができます(デフォルト5個)。 You may set number of list that will be displayed. (default 5) - You may set number of list that will be displayed. (default 5) + Usted puede configurar el número de lista que se mostrarán. (Por defecto 5) 可以设置要显示的排行数。(默认 5个) Вы можете выбрать число списка для отображения. (стандарт: 5) @@ -55,21 +55,21 @@ 파일 종류 ファイルの種類 File Type - File Type + Tipo de archivo 附件类型 Тип файла select 순위에 포함할 파일 종류를 선택하세요. 順位に含むファイルの種類を選択してください。 Please select file type to include. - Please select file type to include. + Por favor, seleccione el tipo de archivo a incluir. 请选择要显示的附件类型。 Пожалуйста, выберите тип файла для включения. 모두 全て All - All + Todos 全部 Все all @@ -78,7 +78,7 @@ 이미지 제외 イメージ除外 Exclude Images - Exclude Images + Excluir imágenes 图片除外 Исключить изображения noimage @@ -87,7 +87,7 @@ 이미지만 イメージのみ Images Only - Images Only + Sólo imágenes 图片 Только изображения image @@ -97,21 +97,21 @@ 내려 받기 ダウンロード Download - Download + Descargar 显示下载链接 Скачать select 바로 내려 받는 링크를 보여줍니다. 直接ダウンロードするリンクを表示します。 It shows direct download link. - It shows direct download link. + Muestra enlace de descarga directa. 可以选择是否要显示下载链接。 Это показывает прямую ссылку для скачки. 링크 보임 リンク表示 Show Link - Show Link + Ver Link 显示 Показать ссылку Y @@ -120,7 +120,7 @@ 링크 숨김 リンク非表示 Hide Link - Hide Link + Ocultar Link 不显示 Спрятать ссылку N @@ -130,14 +130,14 @@ 대상 모듈 対象モジュール Target Module - Target Module + Objetivo Módulo 对象模块 Модуль назначения mid_list 선택하신 모듈에 등록된 글을 대상으로 합니다. 選択したモジュールに登録されたコンテンツ(書き込み)を対象とします。 Articles in selected module will be target. - Articles in selected module will be target. + Los artículos seleccionados en el módulo se meta. 将把被选模块中的主题作为对象。 Статьи в выбранном модуле будут назначением. From 75630968bae39350ffc630bc2bf40b4ec99ee7bc Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Fri, 15 Feb 2008 06:15:02 +0000 Subject: [PATCH 238/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4(=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4)=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3681 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/lang/es.lang.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 modules/lifepod/lang/es.lang.php diff --git a/modules/lifepod/lang/es.lang.php b/modules/lifepod/lang/es.lang.php new file mode 100644 index 000000000..93de037a3 --- /dev/null +++ b/modules/lifepod/lang/es.lang.php @@ -0,0 +1,15 @@ +lifepod = "Lifepod"; + + $lang->calendar_address = "Calendario de la Dirección XML"; + $lang->cmd_lifepod_list = 'Lista Lifepod'; + $lang->cmd_view_info = 'Lifepod Información.'; + + $lang->about_lifepod = "Lifepod calendario es un servicio proporcionado por Openmaru Studio.
    Lifepod Zeroboard XE módulo desplays Lifepod específicas de calendarios como documentos internos."; +?> From 6b8bdef9fd838a6141d7f2a0fafd8a6233df4db8 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Fri, 15 Feb 2008 06:50:40 +0000 Subject: [PATCH 239/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4,=20=EB=9F=AC=EC=8B=9C=EC=95=84=EC=96=B4=20=EB=B0=8F?= =?UTF-8?q?=20=EC=9D=BC=EB=B3=B8=EC=96=B4=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3682 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/lang/es.lang.php | 2 +- modules/module/lang/jp.lang.php | 2 +- modules/springnote/lang/es.lang.php | 30 +++++++++++++++++++++++++++++ modules/springnote/lang/jp.lang.php | 4 ++-- modules/springnote/lang/ru.lang.php | 12 ++++++------ 5 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 modules/springnote/lang/es.lang.php diff --git a/modules/module/lang/es.lang.php b/modules/module/lang/es.lang.php index b64b22469..6244d1e3c 100644 --- a/modules/module/lang/es.lang.php +++ b/modules/module/lang/es.lang.php @@ -52,7 +52,7 @@ $lang->about_skin = 'Usted puede elegir un tema del módulo.'; $lang->about_use_category = 'Si selecciona esta opción, la función de categoría sera activada.'; $lang->about_list_count = 'Usted puede definir el número límite de los documentos a mostrar en una página.(Predefinido es 20)'; - $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; + $lang->about_search_list_count = 'Usted puede configurar el número de artículos que se exponen cuando se utiliza la función de búsqueda o categoría. (Por defecto es 20)'; $lang->about_page_count = 'Usted puede definir el número de página enlazada para mover páginas en un botón de la página.(Predefinido es 10)'; $lang->about_admin_id = 'Usted puede definir el administrador de atribuciones superiores al módulo.\n Usted puede asignar múltiples IDs,
    utilizando una ","(coma) \n(pero el administrador del módulo no puede acceder al sitio de la pógina del administrador.)'; $lang->about_grant = 'Si usted desea desactivar a todos los objetos teniendo atribuciones especificas, incluso el usuario no conectado pueden tener atribuciones.'; diff --git a/modules/module/lang/jp.lang.php b/modules/module/lang/jp.lang.php index 66d218244..4c28268e1 100644 --- a/modules/module/lang/jp.lang.php +++ b/modules/module/lang/jp.lang.php @@ -52,7 +52,7 @@ $lang->about_skin = 'モジュールのスキンを選択することができます。'; $lang->about_use_category = 'チェックするとカテゴリ機能が使用できます。'; $lang->about_list_count = '1ページ当たりに表示される書き込みの数が指定できます(デフォルト20個)。'; - $lang->about_search_list_count = '검색 또는 카테고리 선택등을 할 경우 표시될 글의 수를 지정하실 수 있습니다. 기본(20개)'; + $lang->about_search_list_count = 'お勧めの記事数を設定するにさらされるかのカテゴリ検索機能を使用する場合です。 (デフォルトは20 )'; $lang->about_page_count = 'リストの下段に移動できるページのリンク数が指定できます(デフォルト10個)。'; $lang->about_admin_id = '該当するモジュールに対して最高権限を持つ管理者を指定することができます。「,(コンマ)」で区切って多数のIDが指定できます(管理者ページへのアクセスはできません)。'; $lang->about_grant = '特定権限の対象をすべて解除するとログインしていない会員ユーザまで権限が与えられます。'; diff --git a/modules/springnote/lang/es.lang.php b/modules/springnote/lang/es.lang.php new file mode 100644 index 000000000..de6541c62 --- /dev/null +++ b/modules/springnote/lang/es.lang.php @@ -0,0 +1,30 @@ +springnote = "Springnote"; + $lang->springnote_openid = "OpenID"; + $lang->springnote_userkey = "Usuario clave"; + $lang->springnote_pageid = "Numero de pagina"; + $lang->springnote_pageid_setup = 'Set Page Number'; + $lang->springnote_pageid_option_only = 'Establezca el numero de pagina'; + $lang->springnote_pageid_option_list = 'Feria de Seleccion de Paginas (mostrar la lista)'; + $lang->springnote_domain = "Conjunto de Dominio"; + + $lang->page_url = "URL original"; + $lang->page_modified = "Ultima Modificacion"; + $lang->page_modifier = "El ultimo modificador"; +-------------------------------------------------------------- + $lang->cmd_springnote_list = 'Lista Springnote'; + $lang->cmd_view_info = 'Springnote Informacion'; + + $lang->about_springnote = "Springnote es un Wiki Openmaru de servicios que ofrece.
    Springnote ZeroboardXE modulo especifico springnote muestra las paginas como documentos internos."; + $lang->about_springnote_openid = "Por favor, introduzca su OpenID que creo Springnote"; + $lang->about_springnote_userkey = 'Usuario clave para que se pueda Springnote modulo.
    Por favor, de entrada generada clave de usuario despues de entrar en su OpenID [ Obtener clave de usuario ].'; + $lang->about_springnote_pageid = 'Por favor, de entrada pageid si desea mostrar pagina concreta en primer lugar.'; + $lang->about_springnote_pageid_setup = "Puede establecer 'Mostrar solo seleccionados Paginas (ocultar la lista) "," Feria de Seleccion de Paginas (mostrar la lista) ", etc, cuando usted establece el numero de pagina."; + $lang->about_springnote_domain = "Usted puede configurar otro dominio del springnote. (Por favor, de entrada solo de dominio de la forma de 'http://domain.springnote.com')"; +?> diff --git a/modules/springnote/lang/jp.lang.php b/modules/springnote/lang/jp.lang.php index 10015b5f5..4fa5dc38e 100644 --- a/modules/springnote/lang/jp.lang.php +++ b/modules/springnote/lang/jp.lang.php @@ -25,6 +25,6 @@ $lang->about_springnote_openid = "スプリングノートでページを作成したオープンIDを入力してください。"; $lang->about_springnote_userkey = 'スプリングノートとの連動するためのユーザKeyを入力してください。
    [
    ユーザーキー受信]をクリックして入力して生成されるキーの値を入力してください。'; $lang->about_springnote_pageid = '使用するスプリングノートの中の特定ページを出力したい場合、「pageid」の値を入力してください。'; - $lang->about_springnote_pageid_setup = '페이지 번호 지정시 해당 페이지만 보이기(목록 비포함), 해당 페이지부터 보이기(목록 포함)등을 지정할 수 있습니다'; - $lang->about_springnote_domain = '자신의 스프링노트가 아닌 다른 도메인의 스프링노트를 입력할 수 있습니다. (http://도메인.springnote.com 에서 도메인값만 입력해주세요)'; + $lang->about_springnote_pageid_setup = '設定することができます'選択されたページのみを表示(隠すリスト) ' 、 'ショーから選択されたページ(番組リスト) ' etcときにページ番号を設定します。'; + $lang->about_springnote_domain = 'springnote他のドメインの設定をお勧めします。 (ドメインのみを入力してくださいフォームからの' http://domain.springnote.com ' )'; ?> diff --git a/modules/springnote/lang/ru.lang.php b/modules/springnote/lang/ru.lang.php index 82453dd22..ef2e460b0 100644 --- a/modules/springnote/lang/ru.lang.php +++ b/modules/springnote/lang/ru.lang.php @@ -9,10 +9,10 @@ $lang->springnote_openid = "Открытый ID"; $lang->springnote_userkey = "Ключ юзера"; $lang->springnote_pageid = "Номер страницы"; - $lang->springnote_pageid_setup = '페이지 번호 설정'; - $lang->springnote_pageid_option_only = '지정된 페이지만 보여주기 (목록 보이지 않음)'; - $lang->springnote_pageid_option_list = '지정된 페이지부터 보이기 (목록 보임)'; - $lang->springnote_domain = "도메인 지정"; + $lang->springnote_pageid_setup = 'Установить номер страницы'; + $lang->springnote_pageid_option_only = 'Показать только выбранные страницы (скрыть список)'; + $lang->springnote_pageid_option_list = 'Показать с Отдельные страницы (показать список)'; + $lang->springnote_domain = "Установить доменов"; $lang->page_url = "Оригинальный URL"; $lang->page_modified = "Последняя модификация"; @@ -25,6 +25,6 @@ $lang->about_springnote_openid = "Пожалуйста, введите Ваш OpenID, который создал Springnote."; $lang->about_springnote_userkey = 'Ключ юзера нужен для того, чтобы включить Springnote модуль.
    Пожалуйста, введите сгенерированный Ключ Юзера после ввода Вашего OpenID на [Получить Ключ Юзера] .'; $lang->about_springnote_pageid = 'Пожалуйста, введите pageid, если вы хотите отобразить определенную страницу сначала.'; - $lang->about_springnote_pageid_setup = '페이지 번호 지정시 해당 페이지만 보이기(목록 비포함), 해당 페이지부터 보이기(목록 포함)등을 지정할 수 있습니다'; - $lang->about_springnote_domain = '자신의 스프링노트가 아닌 다른 도메인의 스프링노트를 입력할 수 있습니다. (http://도메인.springnote.com 에서 도메인값만 입력해주세요)'; + $lang->about_springnote_pageid_setup = 'Вы можете установить "Показать только выбранные страницы (скрыть список) ',' Показать с Отдельные страницы (показать список)" и т.д., когда вы установите номер страницы.'; + $lang->about_springnote_domain = "Вы можете задать другие доменные springnote. (Введите только домен из формы "http://domain.springnote.com ' )"; ?> From c5a59a06d8900b7ab011ff2df6168d46a4b256f1 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 07:04:13 +0000 Subject: [PATCH 240/278] =?UTF-8?q?=EC=96=B8=EC=96=B4=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=A4=91=EC=97=90=20=EB=AC=B8=EC=9E=90=EC=97=B4=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3683 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/springnote/lang/es.lang.php | 4 ++-- modules/springnote/lang/jp.lang.php | 4 ++-- modules/springnote/lang/ru.lang.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/springnote/lang/es.lang.php b/modules/springnote/lang/es.lang.php index de6541c62..fd771337d 100644 --- a/modules/springnote/lang/es.lang.php +++ b/modules/springnote/lang/es.lang.php @@ -17,7 +17,7 @@ $lang->page_url = "URL original"; $lang->page_modified = "Ultima Modificacion"; $lang->page_modifier = "El ultimo modificador"; --------------------------------------------------------------- + $lang->cmd_springnote_list = 'Lista Springnote'; $lang->cmd_view_info = 'Springnote Informacion'; @@ -25,6 +25,6 @@ $lang->about_springnote_openid = "Por favor, introduzca su OpenID que creo Springnote"; $lang->about_springnote_userkey = 'Usuario clave para que se pueda Springnote modulo.
    Por favor, de entrada generada clave de usuario despues de entrar en su OpenID [ Obtener clave de usuario ].'; $lang->about_springnote_pageid = 'Por favor, de entrada pageid si desea mostrar pagina concreta en primer lugar.'; - $lang->about_springnote_pageid_setup = "Puede establecer 'Mostrar solo seleccionados Paginas (ocultar la lista) "," Feria de Seleccion de Paginas (mostrar la lista) ", etc, cuando usted establece el numero de pagina."; + $lang->about_springnote_pageid_setup = "Puede establecer 'Mostrar solo seleccionados Paginas (ocultar la lista) \",\" Feria de Seleccion de Paginas (mostrar la lista) \", etc, cuando usted establece el numero de pagina."; $lang->about_springnote_domain = "Usted puede configurar otro dominio del springnote. (Por favor, de entrada solo de dominio de la forma de 'http://domain.springnote.com')"; ?> diff --git a/modules/springnote/lang/jp.lang.php b/modules/springnote/lang/jp.lang.php index 4fa5dc38e..fd6f6f1db 100644 --- a/modules/springnote/lang/jp.lang.php +++ b/modules/springnote/lang/jp.lang.php @@ -25,6 +25,6 @@ $lang->about_springnote_openid = "スプリングノートでページを作成したオープンIDを入力してください。"; $lang->about_springnote_userkey = 'スプリングノートとの連動するためのユーザKeyを入力してください。
    [
    ユーザーキー受信]をクリックして入力して生成されるキーの値を入力してください。'; $lang->about_springnote_pageid = '使用するスプリングノートの中の特定ページを出力したい場合、「pageid」の値を入力してください。'; - $lang->about_springnote_pageid_setup = '設定することができます'選択されたページのみを表示(隠すリスト) ' 、 'ショーから選択されたページ(番組リスト) ' etcときにページ番号を設定します。'; - $lang->about_springnote_domain = 'springnote他のドメインの設定をお勧めします。 (ドメインのみを入力してくださいフォームからの' http://domain.springnote.com ' )'; + $lang->about_springnote_pageid_setup = '設定することができます\'選択されたページのみを表示(隠すリスト) \' 、 \'ショーから選択されたページ(番組リスト) \' etcときにページ番号を設定します。'; + $lang->about_springnote_domain = 'springnote他のドメインの設定をお勧めします。 (ドメインのみを入力してくださいフォームからの\' http://domain.springnote.com \' )'; ?> diff --git a/modules/springnote/lang/ru.lang.php b/modules/springnote/lang/ru.lang.php index ef2e460b0..cf4a07a8d 100644 --- a/modules/springnote/lang/ru.lang.php +++ b/modules/springnote/lang/ru.lang.php @@ -25,6 +25,6 @@ $lang->about_springnote_openid = "Пожалуйста, введите Ваш OpenID, который создал Springnote."; $lang->about_springnote_userkey = 'Ключ юзера нужен для того, чтобы включить Springnote модуль.
    Пожалуйста, введите сгенерированный Ключ Юзера после ввода Вашего OpenID на [Получить Ключ Юзера] .'; $lang->about_springnote_pageid = 'Пожалуйста, введите pageid, если вы хотите отобразить определенную страницу сначала.'; - $lang->about_springnote_pageid_setup = 'Вы можете установить "Показать только выбранные страницы (скрыть список) ',' Показать с Отдельные страницы (показать список)" и т.д., когда вы установите номер страницы.'; - $lang->about_springnote_domain = "Вы можете задать другие доменные springnote. (Введите только домен из формы "http://domain.springnote.com ' )"; + $lang->about_springnote_pageid_setup = 'Вы можете установить "Показать только выбранные страницы (скрыть список) \',\' Показать с Отдельные страницы (показать список)" и т.д., когда вы установите номер страницы.'; + $lang->about_springnote_domain = 'Вы можете задать другие доменные springnote. (Введите только домен из формы "http://domain.springnote.com \' )'; ?> From 92253dcd1acea69e4c6350d35bb20ec5d68334e2 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 07:12:09 +0000 Subject: [PATCH 241/278] =?UTF-8?q?=ED=86=B5=ED=95=A9=EA=B2=80=EC=83=89?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=9D=98=20=EA=B8=B0=EB=B3=B8=20=EC=8A=A4?= =?UTF-8?q?=ED=82=A8=EC=9D=98=20css=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3684 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/integration_search/skins/default/css/white.css | 7 +++---- modules/integration_search/skins/default/index.html | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/integration_search/skins/default/css/white.css b/modules/integration_search/skins/default/css/white.css index b50689f96..1bdd0f48a 100644 --- a/modules/integration_search/skins/default/css/white.css +++ b/modules/integration_search/skins/default/css/white.css @@ -1,5 +1,5 @@ @charset "utf-8"; -#spot { border:8px solid #cecece; width:754px; height:64px; position:relative; margin:0 -15px 30px 0;} +#spot { border:8px solid #cecece; height:64px; position:relative; margin-bottom:30px;} #spot h2 { position:absolute; top:24px; left:-8px;} #spot .search { text-align:center; position:relative; top:22px;} #spot .search * { vertical-align:middle;} @@ -8,8 +8,7 @@ #spot .search .submit {} #content { width:100%; overflow:hidden; position:relative;} -#content h3.result { width:100%; height:23px; border-bottom:1px solid #cecece; _margin-top:-2px; margin-bottom:23px; margin-left:15px;} -*:first-child+html #content h3.result { margin-top:-2px;} +#content h3.result { width:100%; height:23px; border-bottom:1px solid #cecece; margin-bottom:23px; margin-left:15px;} #content h3.result strong { color:#ff1a00;} #content .sortBy { position:absolute; top:0; right:0; overflow:hidden;} #content .sortBy li { list-style:none; float:left; padding:0 6px; position:relative; right:-6px; background:url(../images/white/vrType2.gif) no-repeat right 1px;} @@ -19,7 +18,7 @@ .searchResult { margin-left:15px;} .searchResult li { width:100%; margin-bottom:29px; clear:both; overflow:hidden;list-style:none; } .searchResult li .thumb { display:block; float:left; margin-right:14px;} -.searchResult li dl {} +.searchResult li dl { margin:0; } .searchResult li dl dt { color:#d8d8d8; margin-bottom:1px;} .searchResult li dl dt a { color:#1a3588; text-decoration:underline;} .searchResult li dl dt .reply { color:#fe6700; font:.9em Tahoma;} diff --git a/modules/integration_search/skins/default/index.html b/modules/integration_search/skins/default/index.html index 9574d2f7b..3c262aa4e 100644 --- a/modules/integration_search/skins/default/index.html +++ b/modules/integration_search/skins/default/index.html @@ -9,7 +9,7 @@
    -

    검색하기

    +

    {$lang->cmd_search}

    From ef9060dcf81129051ca227b91b864315e9e29316 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 08:21:49 +0000 Subject: [PATCH 242/278] =?UTF-8?q?#401=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EC=8B=9C=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20=EB=A3=A8=ED=8B=B4=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EC=A0=95=EC=83=81=20=EB=8F=99=EC=9E=91=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3685 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.controller.php | 31 +++------------------- modules/point/point.controller.php | 12 +++++++++ modules/point/tpl/point_module_config.html | 2 +- 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index b3d173dac..b28c6d20e 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -324,6 +324,9 @@ $member_srl = $oDocument->get('member_srl'); $logged_info = Context::get('logged_info'); + // 조회수 업데이트가 되면 trigger 호출 (after) + $output = ModuleHandler::triggerCall('document.updateReadedCount', 'after', $oDocument); + if(!$output->toBool()) return $output; // session에 정보로 조회수를 증가하였다고 생각하면 패스 if($_SESSION['readed_document'][$document_srl]) return false; @@ -345,34 +348,6 @@ // 세션 등록 $_SESSION['readed_document'][$document_srl] = true; - - /** - * DB를 이용한 조회수 체크는 부하 문제로 일단 제거 - // 로그인 사용자이면 member_srl, 비회원이면 ipaddress로 판단 - if($logged_info->member_srl) { - $args->member_srl = $logged_info->member_srl; - } else { - $args->ipaddress = $_SERVER['REMOTE_ADDR']; - } - $args->document_srl = $document_srl; - $output = executeQuery('document.getDocumentReadedLogInfo', $args); - - // 로그 정보에 조회 로그가 있으면 세션 등록후 패스 - if($output->data->count) return $_SESSION['readed_document'][$document_srl] = true; - - // 조회수 업데이트 - $output = executeQuery('document.updateReadedCount', $args); - - // 로그 남기기 - $output = executeQuery('document.insertDocumentReadedLog', $args); - - // 조회수 업데이트가 되면 trigger 호출 (after) - $output = ModuleHandler::triggerCall('document.updateReadedCount', 'after', $oDocument); - if(!$output->toBool()) return $output; - - // 세션 정보에 남김 - return $_SESSION['readed_document'][$document_srl] = true; - */ } /** diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index ab79d30fd..9861bfa6e 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -331,6 +331,18 @@ // 포인트를 구해옴 $point = $config->module_point[$obj->get('module_srl')]['read_document']; if(!isset($point)) $point = $config->read_document; + + // 조회 포인트가 없으면 패스 + if(!$point) return new Object(); + + // 읽은 기록이 있는지 확인 + $args->member_srl = $member_srl; + $args->document_srl = $obj->document_srl; + $output = executeQuery('document.getDocumentReadedLogInfo', $args); + if($output->data->count) return new Object(); + + // 읽은 기록이 없으면 기록 남김 + $output = executeQuery('document.insertDocumentReadedLog', $args); // 포인트 증감 $cur_point += $point; diff --git a/modules/point/tpl/point_module_config.html b/modules/point/tpl/point_module_config.html index 176ceb914..0ac5d524f 100644 --- a/modules/point/tpl/point_module_config.html +++ b/modules/point/tpl/point_module_config.html @@ -1,7 +1,7 @@ - + From 0790e9015cf36dd02a94838cc54f21d5cd4c55f0 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 08:40:25 +0000 Subject: [PATCH 243/278] =?UTF-8?q?#392=20=EB=B9=84=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EC=9D=98=20=EA=B8=80/=EB=8C=93=EA=B8=80=20=EC=88=98=EC=A0=95/?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=EC=8B=9C=20=EC=98=A4=EB=A5=98=EA=B0=80=20?= =?UTF-8?q?=EC=83=9D=EA=B8=B0=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3686 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.view.php | 1 + modules/board/skins/cozy_board/comment.html | 2 +- modules/board/skins/cozy_board/view_document.html | 4 ++-- modules/board/skins/xe_board/comment.html | 2 +- modules/board/skins/xe_board/view_document.html | 4 ++-- modules/board/skins/xe_guestbook/comment.html | 2 +- modules/board/skins/xe_guestbook/view_document.html | 4 ++-- 7 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/board/board.view.php b/modules/board/board.view.php index b13a90c50..2b50ba535 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -44,6 +44,7 @@ /** * 스킨 경로를 미리 template_path 라는 변수로 설정함 **/ + $this->module_info->skin = 'xe_guestbook'; $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); // 만약 스킨 경로가 없다면 xe_board로 변경 diff --git a/modules/board/skins/cozy_board/comment.html b/modules/board/skins/cozy_board/comment.html index 0b104346f..f454e4645 100644 --- a/modules/board/skins/cozy_board/comment.html +++ b/modules/board/skins/cozy_board/comment.html @@ -30,7 +30,7 @@ ({$comment->get('ipaddress')}) - + {$lang->cmd_delete} {$lang->cmd_modify} diff --git a/modules/board/skins/cozy_board/view_document.html b/modules/board/skins/cozy_board/view_document.html index e05401822..33085160c 100644 --- a/modules/board/skins/cozy_board/view_document.html +++ b/modules/board/skins/cozy_board/view_document.html @@ -22,8 +22,8 @@ {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} - {$lang->cmd_modify} - {$lang->cmd_delete} + {$lang->cmd_modify} + {$lang->cmd_delete} diff --git a/modules/board/skins/xe_board/comment.html b/modules/board/skins/xe_board/comment.html index 87f648545..9650390cb 100644 --- a/modules/board/skins/xe_board/comment.html +++ b/modules/board/skins/xe_board/comment.html @@ -12,7 +12,7 @@
    - + {$lang->cmd_delete} {$lang->cmd_modify} diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 9ca66ceb8..3fdc141c8 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -152,8 +152,8 @@ {$lang->cmd_list} - {$lang->cmd_modify} - {$lang->cmd_delete} + {$lang->cmd_modify} + {$lang->cmd_delete}
    diff --git a/modules/board/skins/xe_guestbook/comment.html b/modules/board/skins/xe_guestbook/comment.html index bcbdc70e5..b1113298d 100644 --- a/modules/board/skins/xe_guestbook/comment.html +++ b/modules/board/skins/xe_guestbook/comment.html @@ -12,7 +12,7 @@
    - + {$lang->cmd_delete} {$lang->cmd_modify} diff --git a/modules/board/skins/xe_guestbook/view_document.html b/modules/board/skins/xe_guestbook/view_document.html index e8ccfa569..d073ff0b9 100644 --- a/modules/board/skins/xe_guestbook/view_document.html +++ b/modules/board/skins/xe_guestbook/view_document.html @@ -93,8 +93,8 @@ From 8a68fcccf4eab64a52f343239f392351c558e496 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 08:40:50 +0000 Subject: [PATCH 244/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3687 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.view.php | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 2b50ba535..b13a90c50 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -44,7 +44,6 @@ /** * 스킨 경로를 미리 template_path 라는 변수로 설정함 **/ - $this->module_info->skin = 'xe_guestbook'; $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); // 만약 스킨 경로가 없다면 xe_board로 변경 From 868d5ca0da4e596946fec480dccb90eb539ee7fb Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 08:59:02 +0000 Subject: [PATCH 245/278] =?UTF-8?q?#390=20=EC=84=9C=EB=AA=85=20=EB=86=92?= =?UTF-8?q?=EC=9D=B4=EA=B0=80=20=EA=B0=95=EC=A0=9C=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=EC=99=80=20=EB=8C=93=EA=B8=80=EC=9D=98=20get?= =?UTF-8?q?Signature()=20=ED=95=A8=EC=88=98=EB=A5=BC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3688 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/css/common.css | 1 - modules/board/skins/xe_board/css/common.css | 1 - modules/comment/comment.item.php | 13 +++++++++++++ modules/document/document.item.php | 13 +++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/modules/board/skins/cozy_board/css/common.css b/modules/board/skins/cozy_board/css/common.css index 5c9ae3476..2f26ce12a 100644 --- a/modules/board/skins/cozy_board/css/common.css +++ b/modules/board/skins/cozy_board/css/common.css @@ -590,5 +590,4 @@ Jeong, Chan Myeong 070601~070630 /* 회원 서명 및 프로필 이미지 출력 */ .memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px;} .memberSignature .profile { float:left; margin-right:20px; } -.memberSignature .signature { float:left; } img.commentProfileImage { margin:5px 10px 5px 0; } diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index ae9f0cf8c..d9e177efc 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -310,5 +310,4 @@ h5 { padding:2px; } /* 회원 서명 및 프로필 이미지 출력 */ .memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px;} .memberSignature .profile { float:left; margin-right:20px; } -.memberSignature .signature { float:left; } img.commentProfileImage { margin:5px 10px 5px 0; } diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index c24a49e5c..fbca8d828 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -290,9 +290,22 @@ * @brief 작성자의 서명을 return **/ function getSignature() { + // 존재하지 않는 글이면 패스~ if(!$this->isExists() || !$this->get('member_srl')) return; + + // 서명정보를 구함 $oMemberModel = &getModel('member'); $signature = $oMemberModel->getSignature($this->get('member_srl')); + + // 회원모듈에서 서명 최고 높이 지정되었는지 검사 + if(!isset($GLOBALS['__member_signature_max_height'])) { + $oModuleModel = &getModel('module'); + $member_config = $oModuleModel->getModuleConfig('member'); + $GLOBALS['__member_signature_max_height'] = $member_config->signature_max_height; + } + $max_signature_height = $GLOBALS['__member_signature_max_height']; + if($max_signature_height) $signature = sprintf('
    %s
    ',$max_signature_height, $signature); + return $signature; } } diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 2bb5eabe9..d789a2160 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -612,9 +612,22 @@ * @brief 작성자의 서명을 return **/ function getSignature() { + // 존재하지 않는 글이면 패스~ if(!$this->isExists() || !$this->get('member_srl')) return; + + // 서명정보를 구함 $oMemberModel = &getModel('member'); $signature = $oMemberModel->getSignature($this->get('member_srl')); + + // 회원모듈에서 서명 최고 높이 지정되었는지 검사 + if(!isset($GLOBALS['__member_signature_max_height'])) { + $oModuleModel = &getModel('module'); + $member_config = $oModuleModel->getModuleConfig('member'); + $GLOBALS['__member_signature_max_height'] = $member_config->signature_max_height; + } + $max_signature_height = $GLOBALS['__member_signature_max_height']; + if($max_signature_height) $signature = sprintf('
    %s
    ',$max_signature_height, $signature); + return $signature; } } From 2e8bc42d2e72e454713dd8a1c406a6d2ee04ff0b Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 09:02:59 +0000 Subject: [PATCH 246/278] =?UTF-8?q?#364=20cozy=5Fboard=EC=9D=98=20css=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3689 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/css/common.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/cozy_board/css/common.css b/modules/board/skins/cozy_board/css/common.css index 2f26ce12a..f8fd5e7d6 100644 --- a/modules/board/skins/cozy_board/css/common.css +++ b/modules/board/skins/cozy_board/css/common.css @@ -62,7 +62,7 @@ Jeong, Chan Myeong 070601~070630 .boardList td.title, .boardList td.title a { color:#444444; text-decoration:none; } .boardList td.title a:visited { color:#777777;} -.boardList td.title .title_wrap { width:100%; overflow:hidden; white-space:nowrap;} +.boardList td.title .title_wrap { width:100%; overflow:hidden; } .boardList td.author { padding:0 .5em 0 1.3em; color:#333333; font:.95em "돋움", Dotum, "굴림", Gulim, AppleGothic, Sans-serif;} .boardList td.author a { font-size:1em; color:#333333;} .boardList td.reading { font:.8em Tahoma; color:#999999; text-align:center;} From a09751f6c458bbec7630e9c23a73ac3450a88499 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 15 Feb 2008 09:45:25 +0000 Subject: [PATCH 247/278] =?UTF-8?q?#385=20Firefox/=20Opera=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=9C=EC=99=B8=ED=95=9C=20=EB=B8=8C=EB=9D=BC=EC=9A=B0?= =?UTF-8?q?=EC=A0=80=EC=97=90=EC=84=9C=20board-top,=20bottom=EC=9D=84=20he?= =?UTF-8?q?ight=EC=97=90=20+=20=EC=8B=9C=ED=82=A4=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=EB=A1=9C=20FF=20css=20hack=EC=9D=84=20=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=97=AC=20=EC=9D=BC=EB=8B=A8=20=EC=B5=9C?= =?UTF-8?q?=EB=8C=80=20=EA=B7=BC=EC=A0=91=ED=95=98=EA=B2=8C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3690 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index d9e177efc..6b9b65136 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -139,7 +139,8 @@ Jeong, Chan Myeong 070601~070630 /* list */ .boardList { width:100%; border:1px solid #e0e1db; border-top:none; table-layout:fixed;} .boardListNoTopBorder { border:none; } -.boardList th { color:#3e3f3e; font-weight:normal; border-top:1px solid #e0e1db; border-bottom:1px solid #ffffff; padding-top:5px; white-space:nowrap; height:33px; overflow:hidden;} +.boardList th { color:#3e3f3e; font-weight:normal; border-top:1px solid #e0e1db; border-bottom:1px solid #ffffff; white-space:nowrap; padding-top:5px; height:28px; overflow:hidden;} +html:not([lang*=""]) .boardList th { height:33px; } .boardList th.no_line { background-position:-3px bottom; } .boardList th a { color:#3e3f3e; text-decoration:none; } .boardList th.num { border-left:1px solid #ffffff; } From 6740a6884fce613c5647747616105ecc99cfb901 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Fri, 15 Feb 2008 10:45:26 +0000 Subject: [PATCH 248/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4(=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4)=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3691 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/webzine/conf/info.xml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/widgets/webzine/conf/info.xml b/widgets/webzine/conf/info.xml index ddc34722e..5bf833fdc 100644 --- a/widgets/webzine/conf/info.xml +++ b/widgets/webzine/conf/info.xml @@ -4,7 +4,7 @@ 网络杂志型主题列表 ウェブジンスタイル最新コンテンツ出力 Display Newest Articles with Webzine Style - 웹진 형태 최근 문서 출력 + Mostrar más nuevos artículos con el estilo Webzine Отображение последних статей в стиле webzine 제로 @@ -16,7 +16,7 @@ 把最新主题显示为网络杂志类型的控件。 最新コンテンツをウェブジンスタイルで出力するウィジェットです。 This widget displays newest articles with webzine style. - 최근 문서를 웹진형태로 출력하는 위젯입니다. + Este widget muestra más reciente de artículos con webzine estilo. Этот виджет отображает последние статьи в стиле webzine. @@ -40,7 +40,7 @@ 排序对象 ソート対象 Target to be sorted - Objetivo para ser ordenados + Objetivo para ser ordenados Назначение для сортировки select 등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다. @@ -96,7 +96,7 @@ 升序 昇順 Asending order - Orden Acendente + Orden Acendente По возрастанию asc @@ -106,12 +106,14 @@ new图标显示时间(hours) Newの表示時間 (Hours) Duration of indication for new item + Duración de la indicación para el nuevo tema Длительность индикации для новых объектов text 새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. (시간 단위) 可以设置最新更新主题的new图标显示时间。 新しく登録された書き込みに対して「New」の表示時間を指定します(時間単位)。 You may set the duration of indication for fresh item. (unit is hour) + Usted puede configurar la duración de la indicación de un nuevo tema. (Unidad es hora) Вы можете установить длительность индикации для нового объекта. (единица - час) @@ -149,11 +151,13 @@ サムネール生成方法 缩略图生成方式 Thumbnail Type + Thumbnail Type Тип миниатюры 썸네일 생성 방법을 선택할 수 있습니다. (crop : 꽉 채우기, ratio : 비율 맞추기) サムネールの生成方法を選択します(Crop : トリミング, Ratio : 比率)。 可以选择缩略图生成方式。 (crop : 裁减, ratio : 比例) Thumbnail Type may be set here. + Tipo de miniatura puede establecerse aquí. Тип миниатюры может быть установлен здесь. select @@ -161,6 +165,7 @@ Crop (トリミング) Crop (裁减) Crop + Cultivos Crop (Обрезание) crop @@ -169,6 +174,7 @@ Ratio (比率) Ratio (比例) Ratio + Ratio Ratio (Отношение) ratio @@ -193,11 +199,13 @@ イメージ縦幅 高度 Height of Image + Altura de la imagen Высота изображения 이미지의 세로 크기를 지정할 수 있습니다. (기본 100px) イメージの縦幅サイズを指定します(デフォルト 100px) 可以指定图片高度。(默认为100px) You can set the height of image. (100 as default) + Se puede establecer la altura de la imagen. (100 como valor por defecto) Вы можете установить вытсоту изображения. (стандарт: 100px) text From 42b4c07f337a50adb1dff6d553265cbc211da116 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Sun, 17 Feb 2008 21:18:02 +0000 Subject: [PATCH 249/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4,=20=EB=9F=AC=EC=8B=9C=EC=95=84=EC=96=B4=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3692 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/lang.info | 2 +- layouts/xe_blog/conf/info.xml | 58 ++++++++++++++++++++++++++- layouts/xe_official/conf/info.xml | 23 ++++++++++- modules/member/conf/info.xml | 2 +- modules/member/lang/ru.lang.php | 2 +- modules/member/skins/default/skin.xml | 24 +++++++++++ 6 files changed, 106 insertions(+), 5 deletions(-) diff --git a/common/lang/lang.info b/common/lang/lang.info index 66722fbe2..bd717093c 100644 --- a/common/lang/lang.info +++ b/common/lang/lang.info @@ -3,4 +3,4 @@ en,English zh-CN,中文 jp,日本語 es,Español -ru,Русский +ru,Русский \ No newline at end of file diff --git a/layouts/xe_blog/conf/info.xml b/layouts/xe_blog/conf/info.xml index 03fd8d7d9..2dbc62912 100644 --- a/layouts/xe_blog/conf/info.xml +++ b/layouts/xe_blog/conf/info.xml @@ -4,11 +4,15 @@ ZBXEブログのデフォルトスキン Zeroboard XE博客默认皮肤 Default Skin of Zeroboard XE blog + Cuidado de la Piel por defecto de Zeroboard XE blog + По умолчанию Кожа Zeroboard XE блоге zero zero zero zero + zero + zero 제로보드XE 블로그 기본 스킨입니다. 디자인 : 서기정 (http://blog.naver.com/addcozy) @@ -28,6 +32,16 @@ This is default skin of Zeroboard XE blog. Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + Esto es por defecto de la piel Zeroboard XE blog. + Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML / CSS: Jeong Chan-Myung (http://naradesign.net) + + + Это умолчанию кожи Zeroboard XE блоге. + Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML / CSS: Jeong Chan-Myung (http://naradesign.net) @@ -36,17 +50,21 @@ カラーセット 颜色 Colorset - Set de colores + Set de Colores + Colorset 원하시는 컬러셋을 선택해주세요. 希望するカラーセットを選択してください。 请选择颜色。 Please select a colorset you want. + Выберите colorset хотите. Seleccione set de colores que desea. 하얀색(기본) 白色(基本) 白色(默认) White (default) + Blanco (por defecto) + Белые (по умолчанию) white @@ -54,6 +72,8 @@ 青緑 青绿色 Cyan + Cian + Cyan cyan @@ -61,6 +81,8 @@ 绿色 Green + Verde + Green green @@ -68,6 +90,8 @@ 红色 Red + Roja + Красный red @@ -75,6 +99,8 @@ 紫色 Purple + Púrpura + Фиолетовый purple @@ -83,70 +109,98 @@ 기본 모듈 기본 모듈 Basic module + Módulo Básico + Основной модуль 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 The widgets that are being displayed in the layout will work properly if you select the basic module + Los reproductores que se muestran en el diseño funcionará correctamente si selecciona el módulo básico + В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль 상단 제목 上段タイトル 博客标题 Top Title + Top Título + Рейтинг Название 레이아웃의 상단에 표시할 제목을 입력하세요. レイアウト上段に表示させるタイトルを入力してください。 请输入博客主标题。 Please input title which will be displayed on top of layout. + Introduce el título que se mostrará en la parte superior de diseño. + Введите название, которое будет отображаться в верхней части формы. 부제 サブタイトル 副标题 Subtitle + Subtítulo + Подзаголовок 레이아웃의 상단에 큰 제목 아래 부제목을 입력하세요. レイアウトの上段にメインタイトルの下のサブタイトルを入力してください。 请输入副标题。 Please input subtitle which will be displayed under the top title. + Por favor, de entrada subtítulo que se mostrará bajo el título arriba. + Введите субтитров, которые будут отображаться в верхней заголовок. 로고이미지 ロゴイメージ LOGO图片 Logo Image + Imagen Logo + Изображения логотипа 레이아웃의 상단에 표시될 로고이미지를 입력하세요. レイアウトの上段に表示されるロゴイメージを入力してください。 上传博客LOGO图片。 Please input logo image which will be displayed on top of layout. + Introduce el logotipo imagen que se mostrará en la parte superior de diseño. + Введите логотипа изображение, которое будет отображаться в верхней части формы. 프로필 이미지 プロフィールイメージ 博客个性图片 Profile Image + Perfil de Imagen + Профиль Изображение 프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다) プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。 请输入博客个性图片(推荐宽度160px)。 Please input profile image (It is recommended to set width as 160px) + Por favor, el perfil de entrada de imagen (Se recomienda configurar el ancho de 160px) + Введите профиля изображения (Рекомендуется устанавливать ширину, 160px) 배경 이미지 背景イメージ 背景图片 Background Image + Imagen de fondo + Фоновое изображение 배경 이미지를 사용하시려면 등록해주세요. 背景イメージを使う場合は、登録してください。 要想使用背景图片请在这里上传。 Please input if you want to use background image. + Entre, por favor, si desea utilizar la imagen de fondo. + Введите, если вы хотите использовать фоновое изображение. 프로필 プロフィール 简介 Profile + Perfil + Профиль 간단한 프로필을 입력해주세요 簡単なプロフィールを入力してください。 请输入简单介绍。 Please input your simple profile + Por favor, introduzca su perfil simple + Введите простое профиль @@ -155,6 +209,8 @@ 上段メニュー 菜单 Top Menu + Menú superior + Главное меню 1 diff --git a/layouts/xe_official/conf/info.xml b/layouts/xe_official/conf/info.xml index bd0898b99..34673e5ac 100644 --- a/layouts/xe_official/conf/info.xml +++ b/layouts/xe_official/conf/info.xml @@ -3,12 +3,14 @@ ZBXE 공식 사이트 레이아웃 ZBXEオフィシャルレイアウト ZBXE Official website layout + ZBXE Официальный сайт макет Diseño oficial de la página web de ZBXE ZBXE 官方网站布局 zero Zero zero + zero zero zero @@ -28,6 +30,12 @@ Designer : So-Ra Lee HTML/CSS : Chan-Myung Jeong Layout producer : zero + + + Этот формат является Zeroboard XE Официальный сайт компоновку. + Дизайнер: So-Ra Lee + HTML / CSS: Chan-Myung Jeong + Макет производителя: ноль Este diseño is el diseño oficial de la página web de Zerobard XE. @@ -48,16 +56,19 @@ カラーセット 颜色 Colorset + Colorset Set de colores 원하시는 컬러셋을 선택해주세요. 希望するカラーセットを選択してください。 请选择颜色。 Please select a colorset you want. + Выберите colorset хотите. Seleccione set de colores que desea. 기본 デフォルト Basic + Базовые Básico 默认 default @@ -66,6 +77,7 @@ 검은색 Black + Черного Negro 黑色 black @@ -74,6 +86,7 @@ 하얀색 white + белый Blanco 白色 white @@ -84,11 +97,13 @@ ロゴイメージ LOGO图片 Logo image + Изображения логотипа Imagen del logotipo 레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 23px인 투명이미지가 가장 어울립니다) レイアウトの上段に表示されるロゴイメージを入力してください。 (縦幅が23pxである透明イメージが最も合います。) 请输入显示在布局顶部的LOGO图片。(高度为23px的透明图片为适。) Please input a logo image which will be displayed on the top of layout. (Transparent image with height of 23px is recommended.) + Введите логотип изображение, которое будет отображаться в верхней части формы. (Прозрачный изображение с высотой 23px рекомендуется.) Ingresar una imagen para logotipo. ( Se recomienda una imagen de fondo transparente con una altura de 23px. @@ -96,11 +111,13 @@ ホームページURL 主页地址 Homepage URL + Домашняя страница URL URL de la página web 로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요. ロゴをクリックした時に移動するホームページのURLを入力してください。 点击网站LOGO时要移动的页面URL。 Please input the URL to redirect when user clicks the logo + Пожалуйста, введите URL для перенаправления, когда пользователь нажимает логотип Ingresar el URL de la página web para redireccionar al pulsar el logotipo @@ -108,11 +125,13 @@ 背景イメージ 背景图片 Background Image - Imagen de fondo + Фоновое изображение + Imagen de fondo 배경 이미지를 사용하시려면 등록해주세요. 背景イメージを使う場合は、登録してください。 要想使用背景图片请在这里上传。 Please input if you want to use background image. + Введите, если вы хотите использовать фоновое изображение. Ingresar imagen de fondo si desea usar. @@ -122,6 +141,7 @@ 上段メニュー 主菜单 Top menu + Верхнее меню Menú Principal 3 @@ -130,6 +150,7 @@ 下段メニュー 底部菜单 Bottom menu + Внизу меню Menú Inferior 1 diff --git a/modules/member/conf/info.xml b/modules/member/conf/info.xml index 4652122b4..8c7d341e3 100644 --- a/modules/member/conf/info.xml +++ b/modules/member/conf/info.xml @@ -17,7 +17,7 @@ 对会员进行管理及相关设置的模块。 会員管理及び会員関連設定などを行うモジュールです。 This module is for managing or configuring members. - Este módulo es para el manejo y la configuración de los usuarios. + Este módulo es para el manejo y la configuración de los usuarios. Этот модуль служит для управления и конфигурирования пользователей. diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index 426f655cd..a5aa25e96 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -143,7 +143,7 @@ $lang->msg_allow_message_to_friend = "Отправка провалена, поскольку получатель принимает сообщения только от друзей"; $lang->msg_disallow_message = 'Отправка провалена, поскольку получатель отклоняет прием сообщений'; $lang->msg_insert_group_name = 'Пожалуйста, введите имя группы'; - $lang->msg_check_group = '그룹을 선택해 주세요'; + $lang->msg_check_group = 'Введите имя группы'; $lang->msg_not_uploaded_image_name = 'Имя изображения не может быть зарегистрировано'; $lang->msg_not_uploaded_image_mark = 'Марка не может быть зарегистрирована'; diff --git a/modules/member/skins/default/skin.xml b/modules/member/skins/default/skin.xml index 5066938af..9d0165158 100644 --- a/modules/member/skins/default/skin.xml +++ b/modules/member/skins/default/skin.xml @@ -4,11 +4,15 @@ 会员模块默认皮肤 会員デフォルトスキン Default Member Skin + Por defecto miembro piel + По умолчанию членом кожи (주)NHN (株)NHN (株)NHN NHN Corp + NHN Corp + NHN Корп 회원모듈의 default스킨 디자인 : 서기정 (http://blog.naver.com/addcozy) @@ -28,6 +32,16 @@ default skin of member module Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + Por defecto de la piel miembro módulo + Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML / CSS: Jeong Chan-Myung (http://naradesign.net) + + + умолчанию кожу члена модуль + Дизайн: Ги Чен Се (http://blog.naver.com/addcozy) + HTML / CSS: Чен-Чен Мен (http://naradesign.net) @@ -36,30 +50,40 @@ 默认 デフォルト default + Por defecto + умолчанию 청록색 青緑 青绿色 cyan + Cian + бирюзовый 초록색 绿色 green + Verde + зеленый 빨간색 红色 red + Roja + красный 보라색 紫色 purple + Púrpura + Лиловый From d01d9bfbd8e71ce85cbe841517bb1612768698a1 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Sun, 17 Feb 2008 22:12:02 +0000 Subject: [PATCH 250/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4,=20=EB=9F=AC=EC=8B=9C=EC=95=84=EC=96=B4=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3693 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/google_analytics/conf/info.xml | 7 +++++++ addons/lemonpen/conf/info.xml | 10 +++++++++ addons/referer/conf/info.xml | 5 +++++ common/lang/es.lang.php | 30 +++++++++++++-------------- common/lang/ru.lang.php | 2 +- 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/addons/google_analytics/conf/info.xml b/addons/google_analytics/conf/info.xml index c576c9be9..be7d19bc6 100644 --- a/addons/google_analytics/conf/info.xml +++ b/addons/google_analytics/conf/info.xml @@ -3,12 +3,14 @@ Google Analytics Google Analytics Google Analytics + Google Analytics Google Analytics Google Analyticsアドオン 제로 Zero Zero + Zero Zero Zero @@ -19,6 +21,9 @@ This addon inserts Google Analytics code to site. + + + Este addon inserciones Google Analytics código de sitio. Google Analytics @@ -32,11 +37,13 @@ uacct uacct uacct + Uacct uacct uacct Google Analytics 코드의 _uacct 값을 입력해주세요. 请输入Google Analytics代码的_uacct值。 Please input _uacct from Google Analytics code. + Por favor, de entrada _uacct código de Google Analytics. Google Analytics _uacct Google Analyticsコードの「_uacct」の値を入力してください。 diff --git a/addons/lemonpen/conf/info.xml b/addons/lemonpen/conf/info.xml index b97cd882e..a71fc7a33 100644 --- a/addons/lemonpen/conf/info.xml +++ b/addons/lemonpen/conf/info.xml @@ -2,22 +2,32 @@ LemonPen XE 애드온 LemonPen XE Addon + LemonPen XE addon + LemonPen XE Addon LemonPen XE アドオン zero zero + zero + zero zero 활성화 하시면 레몬펜을 사이트에 달 수 있습니다. You can insert LemonPen to the site when you enable this. + Puede insertar LemonPen al sitio cuando este se activa. + Вы можете вставить LemonPen к месту, когда вы позволили это. 機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供) sid sid + sid + sid sid 레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요. Please input sid value that you got after registering at the LemonPen website. + Por favor, de entrada sid valor que había que hacer después de registrarse en el sitio web LemonPen. + Введите замороженный ценности, которые вы получили после регистрации на сайте LemonPen. レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) diff --git a/addons/referer/conf/info.xml b/addons/referer/conf/info.xml index 23dd18d7f..4940718b0 100644 --- a/addons/referer/conf/info.xml +++ b/addons/referer/conf/info.xml @@ -4,12 +4,14 @@ リファラー コレクター 反向链接统计 Referer Collector + Referer Collector Сборщик рефералов haneul Haneul haneul haneul + haneul haneul Referer log를 수집합니다. @@ -22,6 +24,9 @@ Collect referer log and statistics. + + + Recoger referer log y estadísticas. Собирает лог рефералов и статистику. diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 9c83adf8f..2bf47cbdb 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -21,16 +21,16 @@ $lang->cmd_comment_registration = 'Agregar commentarios'; $lang->cmd_insert = 'Insertar'; $lang->cmd_save = 'Guardar'; - $lang->cmd_load = '불러오기'; + $lang->cmd_load = 'Carga'; $lang->cmd_input = 'Ingresar'; $lang->cmd_search = 'Buscar'; $lang->cmd_cancel = 'Cancelar'; $lang->cmd_back = 'Atrás'; $lang->cmd_vote = 'Recomendar'; - $lang->cmd_vote_down = '비추천'; - $lang->cmd_declare = '신고'; - $lang->cmd_cancel_declare = '신고 취소'; - $lang->cmd_declared_list = '신고 목록'; + $lang->cmd_vote_down = 'Critique'; + $lang->cmd_declare = 'Acusan'; + $lang->cmd_cancel_declare = 'Cancelar acusan'; + $lang->cmd_declared_list = 'Lista acusaciones'; $lang->cmd_copy = 'Copia'; $lang->cmd_move = 'Mover'; $lang->cmd_move_up = 'Arriba'; @@ -48,7 +48,7 @@ $lang->cmd_close = 'Cerrar'; $lang->cmd_open = 'Abrir'; $lang->cmd_setup = 'Configuración'; - $lang->cmd_addition_setup = '추가 설정'; + $lang->cmd_addition_setup = 'Configurar'; $lang->cmd_option = 'Opción'; $lang->cmd_apply = 'Aplicar'; $lang->cmd_open_calendar = 'Abrir el calendario'; @@ -57,8 +57,8 @@ $lang->cmd_scrap = 'Scrap'; $lang->cmd_preview = 'Previo'; $lang->cmd_reset = 'Rehacer'; - $lang->cmd_remake_cache = "캐시파일 재생성"; - $lang->cmd_publish = "발행"; + $lang->cmd_remake_cache = "Re-crear el archivo caché"; + $lang->cmd_publish = "Publicar"; $lang->cmd_layout_setup = 'Configuración del diseño'; $lang->cmd_layout_edit = 'Editar el diseño'; @@ -87,8 +87,8 @@ $lang->browser_title = 'Título del navegador'; $lang->title = 'Título'; $lang->title_content = 'Título+Contenido'; - $lang->topic = '주제'; - $lang->replies = '응답'; + $lang->topic = 'Tema'; + $lang->replies = 'Responder'; $lang->content = 'Contenidos'; $lang->document = 'Documentos'; $lang->comment = 'Commentarios'; @@ -125,14 +125,14 @@ $lang->document_count = 'Cantidad de documentos'; $lang->page_count = 'Cantidad de páginas'; $lang->list_count = 'Cantidad de listas'; - $lang->search_list_count = '검색 목록 수'; + $lang->search_list_count = 'Buscar lista Conde'; $lang->readed_count = 'Leídos'; $lang->voted_count = 'Recomendados'; $lang->member_count = 'Cantidad de usuarios'; $lang->date = 'Fecha'; $lang->regdate = 'Fecha publicada'; $lang->last_update = 'Ultima actualización'; - $lang->last_post = '최근 등록'; + $lang->last_post = 'Último mensaje'; $lang->signup_date = 'Fecha del registro'; $lang->last_login = 'Ultima conección'; $lang->first_page = 'Primera página'; @@ -181,7 +181,7 @@ $lang->msg_module_is_not_standalone = 'Módulo solicitado no puede ser ejecutado independientemente'; $lang->success_registed = 'Agregado con éxito'; - $lang->success_declared = '신고되었습니다'; + $lang->success_declared = 'Acusado con éxito'; $lang->success_updated = 'Actualizado con éxito'; $lang->success_deleted = 'Boarrado con éxito'; $lang->success_voted = 'Recomendado con éxito'; @@ -189,13 +189,13 @@ $lang->success_sended = 'Enviado con éxito'; $lang->success_reset = 'Reajustado con éxito'; $lang->success_leaved = 'Abandonado con éxito'; - $lang->success_saved = '저장되었습니다'; + $lang->success_saved = 'Guardado correctamente'; $lang->fail_to_delete = 'No puede ser borrado'; $lang->fail_to_move = 'No puede ser movido'; $lang->failed_voted = 'No puede ser recomendado'; - $lang->failed_declared = '신고를 하실 수 없습니다'; + $lang->failed_declared = 'No se ha podido acusar'; $lang->fail_to_delete_have_children = 'No puede ser borrado, ya que el mensaje posee respuestas '; $lang->confirm_submit = '¿Está seguro que desea enviar?'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index d76fc271c..2146aeb89 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -126,7 +126,7 @@ $lang->document_count = 'Всего статей'; $lang->page_count = 'Кол-во страниц'; $lang->list_count = 'Кол-во списков'; - $lang->search_list_count = '검색 목록 수'; + $lang->search_list_count = 'Поиск Список кол'; $lang->readed_count = 'Хиты'; $lang->voted_count = 'Голоса'; $lang->member_count = 'Кол-во пользователей'; From 354a48d7b04ea32e6ba414046c5805311709be45 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 11:19:06 +0000 Subject: [PATCH 251/278] =?UTF-8?q?documents=20=ED=85=8C=EC=9D=B4=EB=B8=94?= =?UTF-8?q?=EC=97=90=20module=5Fsrl=20+=20document=5Fsrl=EC=9D=98=20?= =?UTF-8?q?=EB=B3=B5=ED=95=A9=20=EC=9D=B8=EB=8D=B1=EC=8A=A4=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3694 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/document/document.class.php b/modules/document/document.class.php index 630e5e5d3..548badba3 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -30,6 +30,7 @@ $oDB->addIndex("documents","idx_module_readed_count", array("module_srl","readed_count")); $oDB->addIndex("documents","idx_module_voted_count", array("module_srl","voted_count")); $oDB->addIndex("documents","idx_module_notice", array("module_srl","is_notice")); + $oDB->addIndex("documents","idx_module_document_srl", array("module_srl","document_srl")); // 2007. 10. 17 모듈이 삭제될때 등록된 글도 모두 삭제하는 트리거 추가 $oModuleController->insertTrigger('module.deleteModule', 'document', 'controller', 'triggerDeleteModuleDocuments', 'after'); @@ -83,6 +84,9 @@ // 2007. 11. 20 게시글에 module_srl + is_notice 복합인덱스 만들기 if(!$oDB->isIndexExists("documents","idx_module_notice")) return true; + + // 2008. 02. 18 게시글에 module_srl + document_srl 복합인덱스 만들기 (manian님 확인) + if(!$oDB->isIndexExists("documents","idx_module_document_srl")) return true; /** * 2007. 12. 03 : 확장변수(extra_vars) 컬럼이 없을 경우 추가 @@ -168,6 +172,11 @@ **/ if(!$oDB->isColumnExists("documents","extra_vars")) $oDB->addColumn('documents','extra_vars','text'); + /** + * 2008. 02. 18 게시글에 module_srl + document_srl 복합인덱스 만들기 (manian님 확인) + **/ + if(!$oDB->isIndexExists("documents","idx_module_document_srl")) $oDB->addIndex("documents","idx_module_document_srl", array("module_srl","document_srl")); + return new Object(0,'success_updated'); } From 530b41c31b189d4f42be51bb15e20e1ffa713f97 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 12:33:38 +0000 Subject: [PATCH 252/278] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=9C=EC=99=B8=ED=95=9C=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=ED=95=AD=EB=AA=A9=EC=97=90=20=EB=8C=80=ED=95=B4=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20=EC=A0=95=EB=B3=B4/=EB=B9=84=EA=B3=B5=EA=B0=9C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3695 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 3 ++ common/lang/es.lang.php | 3 ++ common/lang/fr.lang.php | 3 ++ common/lang/jp.lang.php | 3 ++ common/lang/ko.lang.php | 3 ++ common/lang/ru.lang.php | 3 ++ common/lang/zh-CN.lang.php | 3 ++ modules/member/member.model.php | 17 +++++++++ modules/member/skins/default/css/common.css | 25 ++++++++++-- modules/member/skins/default/member_info.html | 38 +++++++++++-------- modules/member/skins/default/modify_info.html | 4 ++ modules/member/skins/default/signup_form.html | 31 ++++++++++++--- modules/member/tpl/css/member_admin.css | 7 ++++ modules/member/tpl/insert_member.html | 11 ++++-- modules/member/tpl/js/signup_check.js | 4 +- modules/member/tpl/member_info.html | 2 +- 16 files changed, 126 insertions(+), 34 deletions(-) create mode 100644 modules/member/tpl/css/member_admin.css diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index f72275f33..6ed8c4261 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -152,6 +152,9 @@ $lang->notuse = 'Not use'; $lang->not_exists = "Doesn't exist"; + $lang->public = 'public'; + $lang->private = 'private'; + $lang->unit_sec = 'sec'; $lang->unit_min = 'min'; $lang->unit_hour = 'hr'; diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 2bf47cbdb..15afedfd8 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -151,6 +151,9 @@ $lang->notuse = 'No usar'; $lang->not_exists = 'No existe'; + $lang->public = 'public'; + $lang->private = 'private'; + $lang->unit_sec = 'segundo'; $lang->unit_min = 'minuto'; $lang->unit_hour = 'hora'; diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index 1b7dfc8ab..872498dfe 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -150,6 +150,9 @@ $lang->notuse = 'Ne pas Utiliser'; $lang->not_exists = 'n\'Existe Pas'; + $lang->public = 'public'; + $lang->private = 'private'; + $lang->unit_sec = 'sec'; $lang->unit_min = 'min'; $lang->unit_hour = 'heur'; diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php index 57255d687..443689616 100644 --- a/common/lang/jp.lang.php +++ b/common/lang/jp.lang.php @@ -152,6 +152,9 @@ $lang->notuse = '未使用'; $lang->not_exists = 'なし'; + $lang->public = 'public'; + $lang->private = 'private'; + $lang->unit_sec = '秒'; $lang->unit_min = '分'; $lang->unit_hour = '時'; diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index d0b6e3944..eae8e8340 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -152,6 +152,9 @@ $lang->notuse = '미사용'; $lang->not_exists = '없음'; + $lang->public = '공개'; + $lang->private = '비공개'; + $lang->unit_sec = '초'; $lang->unit_min = '분'; $lang->unit_hour = '시'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index 2146aeb89..35f1581be 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -152,6 +152,9 @@ $lang->notuse = 'Не использовать'; $lang->not_exists = "Не существует"; + $lang->public = 'public'; + $lang->private = 'private'; + $lang->unit_sec = 'сек.'; $lang->unit_min = 'мин.'; $lang->unit_hour = 'ч.'; diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index 40a7b5992..054c2aaca 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -152,6 +152,9 @@ $lang->notuse = '未使用'; $lang->not_exists = '无'; + $lang->public = 'public'; + $lang->private = 'private'; + $lang->unit_sec = '秒'; $lang->unit_min = '分'; $lang->unit_hour = '时'; diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 0c1d99b87..838216353 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -315,6 +315,12 @@ $obj->lang = $val->column_title; $obj->required = $val->required=='Y'?true:false; $filter_output[] = $obj; + + unset($open_obj); + $open_obj->name = 'open_'.$val->column_name; + $open_obj->required = false; + $filter_output[] = $open_obj; + } return $filter_output; @@ -331,10 +337,18 @@ $extend_form_list = $this->getJoinFormlist(); if(!$extend_form_list) return; + // 관리자이거나 자기 자신이 아니면 비공개의 경우 무조건 패스해버림 + $logged_info = Context::get('logged_info'); + foreach($extend_form_list as $srl => $item) { $column_name = $item->column_name; $value = $member_info->{$column_name}; + if($logged_info->is_admin != 'Y' && $logged_info->member_srl != $member_info->member_srl && $member_info->{'open_'.$column_name}!='Y') { + $extend_form_list[$srl]->is_private = true; + continue; + } + // 추가 확장폼의 종류에 따라 값을 변경 switch($item->column_type) { case 'checkbox' : @@ -351,6 +365,9 @@ } $extend_form_list[$srl]->value = $value; + + if($member_info->{'open_'.$column_name}=='Y') $extend_form_list[$srl]->is_opened = true; + else $extend_form_list[$srl]->is_opened = false; } return $extend_form_list; } diff --git a/modules/member/skins/default/css/common.css b/modules/member/skins/default/css/common.css index 73cb98b00..47e26ac19 100644 --- a/modules/member/skins/default/css/common.css +++ b/modules/member/skins/default/css/common.css @@ -99,28 +99,45 @@ .memberInfoTable th, .memberInfoTable td { border-top:1px solid #eaebe7; padding:.5em;} .memberInfoTable th { background:#f5f5f3; text-align:left; padding:.5em 1em;} .memberInfoTable td { border-left:1px solid #eaebe7;} -.memberInfoTable td input { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1em; line-height:1em; background:#fbfbfb; vertical-align:middle; float:left; margin-right:.5em; margin-bottom:.5em; color:#666666;} +.memberInfoTable td input { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1em; line-height:1em; background:#fbfbfb; vertical-align:middle; margin-right:.5em; margin-bottom:.5em; color:#666666;} .memberInfoTable td input.radio, .memberInfoTable td input.check { border:none; padding:0; margin:0; background:none; margin-top:.4em;} .memberInfoTable td input.w4em { width:4em;} .memberInfoTable td input.w2em { width:2em;} -.memberInfoTable td select { float:left; margin-right:.5em;} +.memberInfoTable td select { margin-right:.5em;} +.memberInfoTable td checkbox { border:0; } .memberInfoTable td .fl { margin-right:.5em;} .memberInfoTable td br { clear:both;} -.memberInfoTable td p { float:left; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;} -.memberInfoTable td label { float:left; color:#3f4040; padding-top:.3em; margin-right:.5em;} +.memberInfoTable td p { font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;} +.memberInfoTable td label { color:#3f4040; padding-top:.3em; margin-right:.5em;} +.memberInfoTable td ul { list-style:none; } .memberInfoTable td .checkbox { border:none; } +/* 아이디, 이름, 이메일 주소 중복 체크후 중복되면 출력되는 메세지의 className */ +.memberInfoTable td .checkValue { margin-top:5px; font-weight:bold; color:#444444; } + /* modify/ insert member info */ .memberImage { clear:both; } .memberImage .info { margin-bottom:1.5em; float:left; margin-right:1em;} .memberImage .form { float:left; } .memberImage .form input { height:1.5em; margin:0 .3em 0 0; padding:0;} + .checkbox li { float:left; margin-right:2em; } .checkbox li input { border:none; } + .str_birthday { cursor:pointer; float:left; width:80px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px 3px 3px 18px; margin-right:.3em;} .krZip .address2 { clear:both; margin-top:10px;} + .extendDesc { clear:both; margin-top:0; font-size:.9em; color:#999999; } +.extendPublic { clear:both; margin-top:5px; padding:0; font-size:.9em; color:#999999; } +.extendPublic input { padding:0; margin:0; } + +.publicItem { display:block; margin-top:5px;} +.publicItem input { margin:0; padding:0;} +.publicItem label { font-weight:normal; margin:0; padding:0; color:#666666;} +span.publicItem { display:inline; margin:0; font-weight:normal; color:#666666; } +span.privateItem { display:inline; margin:0; font-weight:normal; color:#666666; } + .agreementBox { border:1px solid #AAAAAA; margin:.5em 0 0 0; padding:1em; border-bottom:none; height:200px; overflow-y:scroll;} .agreementButton { background-color:#EEEEEE; padding:1em; border:1px solid #AAAAAA; border-top:none;} diff --git a/modules/member/skins/default/member_info.html b/modules/member/skins/default/member_info.html index d10bf90d1..f4b210d50 100644 --- a/modules/member/skins/default/member_info.html +++ b/modules/member/skins/default/member_info.html @@ -83,23 +83,29 @@ {@ $dummy_chk = 0 }
    class="first-child" {@ $dummy_chk = 1; }> - + diff --git a/modules/member/skins/default/modify_info.html b/modules/member/skins/default/modify_info.html index 575bab754..08ff8ed41 100644 --- a/modules/member/skins/default/modify_info.html +++ b/modules/member/skins/default/modify_info.html @@ -149,6 +149,10 @@ - + - + - + - + - + @@ -70,7 +85,7 @@ - +
    {htmlspecialchars($val->column_title)} + {htmlspecialchars($val->column_title)} + - - {htmlspecialchars($val->value[0])} - - - {htmlspecialchars($val->value[1])} - - - {htmlspecialchars($val->value[2])} - - {htmlspecialchars($val->value[0])}
    {htmlspecialchars($val->value[1])} - - {htmlspecialchars(implode(", ",$val->value))}  - - {zdate($val->value, "Y-m-d")}  - - {nl2br(htmlspecialchars($val->value))}  - + + {$lang->private} + + + {htmlspecialchars($val->value[0])} + - + {htmlspecialchars($val->value[1])} + - + {htmlspecialchars($val->value[2])} + + {htmlspecialchars($val->value[0])}
    {htmlspecialchars($val->value[1])} + + {htmlspecialchars(implode(", ",$val->value))}  + + {zdate($val->value, "Y-m-d")}  + + {nl2br(htmlspecialchars($val->value))}  + +
    {htmlspecialchars($val->column_title)} * +
    + is_opened)-->checked="checked" value="Y" id="open_{$val->column_name}" /> + +
    diff --git a/modules/member/skins/default/signup_form.html b/modules/member/skins/default/signup_form.html index 18820034c..00937ca31 100644 --- a/modules/member/skins/default/signup_form.html +++ b/modules/member/skins/default/signup_form.html @@ -41,23 +41,38 @@
    {$lang->user_name} *

    {$lang->about_user_name}

    + +

    {$lang->about_user_name}

    +
    {$lang->nick_name} *

    {$lang->about_nick_name}

    + +

    {$lang->about_nick_name}

    +
    {$lang->email_address} *

    {$lang->about_email_address}

    + +

    {$lang->about_email_address}

    +
    {$lang->homepage}

    {$lang->about_homepage}

    + +

    {$lang->about_homepage}

    +
    {$lang->blog}

    {$lang->about_blog_url}

    + +

    {$lang->about_blog_url}

    +
    {$lang->birthday}
    {$lang->allow_mailing}

    {$lang->about_allow_mailing}

    {$lang->about_allow_mailing}

    @@ -86,6 +101,10 @@ {htmlspecialchars($val->column_title)} * +
    + + +
    diff --git a/modules/member/tpl/css/member_admin.css b/modules/member/tpl/css/member_admin.css new file mode 100644 index 000000000..b99be882e --- /dev/null +++ b/modules/member/tpl/css/member_admin.css @@ -0,0 +1,7 @@ +@charset "utf-8"; + +.publicItem { display:block; margin-top:5px;} +.publicItem input { margin:0; padding:0;} +.publicItem label { font-weight:normal; margin:0; padding:0; color:#666666;} +span.publicItem { display:inline; margin:0; font-weight:normal; color:#666666; } + diff --git a/modules/member/tpl/insert_member.html b/modules/member/tpl/insert_member.html index e0a9be0e5..7c7439fa4 100644 --- a/modules/member/tpl/insert_member.html +++ b/modules/member/tpl/insert_member.html @@ -1,5 +1,6 @@ + @@ -150,10 +151,12 @@ - - * - - {$val->column_title} + {htmlspecialchars($val->column_title)} + * +
    + is_opened)-->checked="checked" value="Y" id="open_{$val->column_name}" /> + +
    diff --git a/modules/member/tpl/js/signup_check.js b/modules/member/tpl/js/signup_check.js index ca8c38c47..b54316210 100644 --- a/modules/member/tpl/js/signup_check.js +++ b/modules/member/tpl/js/signup_check.js @@ -59,9 +59,7 @@ function completeMemberCheckValue(ret_obj, response_tags, e) { if(! (dummy = xGetElementById(dummy_id)) ) { dummy = xCreateElement('DIV'); dummy.id = dummy_id; - dummy.style.display = "none"; - dummy.style.clear = 'both'; - dummy.style.marginTop = '10px'; + dummy.className = "checkValue"; obj.parentNode.insertBefore(dummy, obj.lastChild); } diff --git a/modules/member/tpl/member_info.html b/modules/member/tpl/member_info.html index 429736cde..772a33a77 100644 --- a/modules/member/tpl/member_info.html +++ b/modules/member/tpl/member_info.html @@ -145,7 +145,7 @@ - {htmlspecialchars($val->column_title)} + {htmlspecialchars($val->column_title)} ({$lang->public}) {htmlspecialchars($val->value[0])} From 61a37545f9501fd97a1f5d721f0c3984b2fc258e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 12:44:06 +0000 Subject: [PATCH 253/278] =?UTF-8?q?=EC=AA=BD=EC=A7=80=20=EB=8B=B5=EB=B3=80?= =?UTF-8?q?=EC=8B=9C=20=EC=9B=90=EB=B3=B8=EA=B8=80=EA=B3=BC=20=EC=A0=9C?= =?UTF-8?q?=EB=AA=A9=EC=9D=B4=20=EB=82=98=ED=83=80=EB=82=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95.=20=EC=AA=BD=EC=A7=80=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=EC=8B=9C=20=EB=B0=9B=EB=8A=94=EC=9D=B4?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=B2=B4=ED=81=AC=EB=A5=BC=20?= =?UTF-8?q?=ED=86=B5=ED=95=98=EC=97=AC=20=EB=82=A8=EC=9D=98=20=EC=AA=BD?= =?UTF-8?q?=EC=A7=80=EB=A5=BC=20=EB=B3=BC=20=EC=88=98=20=EC=97=86=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3696 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.view.php | 15 +++++++++++++-- modules/member/skins/default/js/member.js | 5 +++-- modules/member/skins/default/member_messages.html | 2 +- modules/member/skins/default/send_message.html | 4 ++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 735055c0d..7631696cf 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -287,7 +287,7 @@ // message_srl이 있으면 내용 추출 if($message_srl) { $message = $oMemberModel->getSelectedMessage($message_srl); - if($message->message_srl == $message_srl) Context::set('message', $message); + if($message->message_srl == $message_srl && $message->receiver_srl == $logged_info->member_srl) Context::set('message', $message); } // 목록 추출 @@ -360,6 +360,7 @@ **/ function dispMemberSendMessage() { $this->setLayoutFile("popup_layout"); + $oMemberModel = &getModel('member'); // 로그인이 되어 있지 않으면 오류 표시 if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); @@ -369,7 +370,17 @@ $receiver_srl = Context::get('receiver_srl'); if(!$receiver_srl || $logged_info->member_srl == $receiver_srl) return $this->stop('msg_not_logged'); - $oMemberModel = &getModel('member'); + // 답글 쪽지일 경우 원본 메세지의 글번호를 구함 + $message_srl = Context::get('message_srl'); + if($message_srl) { + $source_message = $oMemberModel->getSelectedMessage($message_srl); + if($source_message->message_srl == $message_srl && $source_message->sender_srl == $receiver_srl) { + $source_message->title = "[re] ".$source_message->title; + $source_message->content = "\r\n
    \r\n
    ".trim($source_message->content)."
    "; + Context::set('source_message', $source_message); + } + } + $receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); Context::set('receiver_info', $receiver_info); diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index bd813dbec..ff9bb1775 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -134,8 +134,9 @@ function completeSendMessage(ret_obj) { window.close(); } -function doSendMessage(member_srl) { - var url = current_url.setQuery('module','member').setQuery('act','dispMemberSendMessage').setQuery('receiver_srl',member_srl); +function doSendMessage(member_srl, message_srl) { + if(typeof(message_srl)=='undefined') message_srl = 0; + var url = current_url.setQuery('module','member').setQuery('act','dispMemberSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl); popopen(url, 'sendMessage'); } diff --git a/modules/member/skins/default/member_messages.html b/modules/member/skins/default/member_messages.html index 98f386292..86651c3e6 100644 --- a/modules/member/skins/default/member_messages.html +++ b/modules/member/skins/default/member_messages.html @@ -26,7 +26,7 @@
    - {$lang->cmd_reply} + {$lang->cmd_reply} {$lang->cmd_store} diff --git a/modules/member/skins/default/send_message.html b/modules/member/skins/default/send_message.html index e45bf1ab9..f80880033 100644 --- a/modules/member/skins/default/send_message.html +++ b/modules/member/skins/default/send_message.html @@ -9,7 +9,7 @@
    - +
    @@ -22,7 +22,7 @@ {$lang->title} - + {$lang->cmd_option} From d0cf6957a575b076bb232010da9bcf48fb7742dd Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Mon, 18 Feb 2008 14:37:26 +0000 Subject: [PATCH 254/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4(=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4)=20=EB=B2=88?= =?UTF-8?q?=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3697 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/es.lang.php | 4 ++-- common/lang/ru.lang.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 15afedfd8..764a18a13 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -151,8 +151,8 @@ $lang->notuse = 'No usar'; $lang->not_exists = 'No existe'; - $lang->public = 'public'; - $lang->private = 'private'; + $lang->public = 'Público'; + $lang->private = 'Privado'; $lang->unit_sec = 'segundo'; $lang->unit_min = 'minuto'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index 35f1581be..cd302a578 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -152,8 +152,8 @@ $lang->notuse = 'Не использовать'; $lang->not_exists = "Не существует"; - $lang->public = 'public'; - $lang->private = 'private'; + $lang->public = 'общественности'; + $lang->private = 'частный'; $lang->unit_sec = 'сек.'; $lang->unit_min = 'мин.'; From 94ff9c89204f68b8632be4fc2cd95b624112e6b6 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 17:08:36 +0000 Subject: [PATCH 255/278] =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80.=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8/=EB=A1=9C=EA=B7=B8=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=ED=9B=84=20=EC=9D=B4=EB=8F=99=ED=95=A0=20url=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3698 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 14 +++- common/js/xml_handler.js | 5 ++ .../board/skins/xe_board/view_document.html | 2 +- modules/document/document.item.php | 6 +- modules/member/lang/en.lang.php | 6 ++ modules/member/lang/es.lang.php | 6 ++ modules/member/lang/jp.lang.php | 6 ++ modules/member/lang/ko.lang.php | 12 ++- modules/member/lang/ru.lang.php | 6 ++ modules/member/lang/zh-CN.lang.php | 6 ++ modules/member/member.admin.controller.php | 2 +- modules/member/member.class.php | 73 ++++++++++-------- modules/member/member.controller.php | 76 +++++++++++++++++-- modules/member/member.model.php | 1 + modules/member/member.view.php | 6 +- modules/member/queries/deleteAutologin.xml | 8 ++ modules/member/queries/getAutologin.xml | 15 ++++ modules/member/queries/insertAutologin.xml | 9 +++ modules/member/schemas/member_autologin.xml | 4 + modules/member/skins/default/js/member.js | 11 ++- modules/member/skins/default/login_form.html | 13 ++-- modules/member/tpl/logout.html | 7 ++ modules/member/tpl/member_config.html | 16 +++- widgets/login_info/skins/default/js/login.js | 9 +-- .../login_info/skins/default/login_form.html | 13 ++-- .../login_info/skins/xe_official/js/login.js | 15 ++-- .../skins/xe_official/login_form.html | 10 ++- 27 files changed, 271 insertions(+), 86 deletions(-) create mode 100644 modules/member/queries/deleteAutologin.xml create mode 100644 modules/member/queries/getAutologin.xml create mode 100644 modules/member/queries/insertAutologin.xml create mode 100644 modules/member/schemas/member_autologin.xml create mode 100644 modules/member/tpl/logout.html diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 1a5a492ea..4d879700b 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -106,10 +106,20 @@ $this->_setUploadedArgument(); // 인증관련 데이터를 Context에 설정 - $oMember = getModel('member'); - if($oMember->isLogged()) { + $oMemberModel = &getModel('member'); + + // 로그인되어 있지 않고 자동로그인 키값이 있으면 자동 로그인 체크 + if(!$oMemberModel->isLogged() && $_COOKIE['xeak']) { + $oMemberController = &getController('member'); + $oMemberController->doAutologin(); + } + + // 로그인되어 있으면 로그인 정보 기록 + if($oMemberModel->isLogged()) { $this->_set('is_logged', true); $this->_set('logged_info', $_SESSION['logged_info']); + + // 로그인 되어 있지 않으면 먼저 자동 로그인을 체크 비로그인 상태 기록 } else { $this->_set('is_logged', false); $this->_set('logged_info', NULL); diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js index c3dace935..10a26d2df 100644 --- a/common/js/xml_handler.js +++ b/common/js/xml_handler.js @@ -44,6 +44,11 @@ function xml_response_filter(oXml, callback_func, response_tags, callback_func_a return null; } + if(ret_obj["redirect_url"]) { + location.href=ret_obj["redirect_url"]; + return null; + } + if(!callback_func) return null; callback_func(ret_obj, response_tags, callback_func_arg, fo_obj); diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 3fdc141c8..8deaf2c25 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -116,7 +116,7 @@
    {$oDocument->getSignature()}
    -
    +
    diff --git a/modules/document/document.item.php b/modules/document/document.item.php index d789a2160..ae8098e9a 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -625,8 +625,10 @@ $member_config = $oModuleModel->getModuleConfig('member'); $GLOBALS['__member_signature_max_height'] = $member_config->signature_max_height; } - $max_signature_height = $GLOBALS['__member_signature_max_height']; - if($max_signature_height) $signature = sprintf('
    %s
    ',$max_signature_height, $signature); + if($signature) { + $max_signature_height = $GLOBALS['__member_signature_max_height']; + if($max_signature_height) $signature = sprintf('
    %s
    ',$max_signature_height, $signature); + } return $signature; } diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 4d812c245..bee0fb9b6 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -11,6 +11,7 @@ $lang->default_group_1 = "Associate Member"; $lang->default_group_2 = "Regular Member"; $lang->admin_group = "Managing Group"; + $lang->keep_signed = 'Keep me signed in'; $lang->remember_user_id = 'Save ID'; $lang->already_logged = "You're already logged on"; $lang->denied_user_id = 'Entered ID is prohibited.'; @@ -45,6 +46,8 @@ $lang->enable_join = 'Allow Member Join'; $lang->limit_day = 'Temporary Limit Date'; $lang->limit_date = 'Limit Date'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; $lang->redirect_url = 'URL after Join'; $lang->agreement = 'Member Join Agreement'; $lang->accept_agreement = 'Agree'; @@ -59,6 +62,7 @@ $lang->webmaster_name = "Webmaster's Name"; $lang->webmaster_email = "Webmaster's Email"; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = "Please input webmaster's name which will be used for authentication mails or other site administration. (default : webmaster)"; $lang->about_webmaster_email = "Please input webmaster's email address."; @@ -181,6 +185,8 @@ $lang->about_enable_join = 'Allow users to sign up'; $lang->about_limit_day = 'You can limit certification date after sign up'; $lang->about_limit_date = 'User cannot login until assigned date'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; $lang->about_redirect_url = 'Please input URL where users will go after sign up. When this is empty, it will be set as the previous page of sign up page.'; $lang->about_agreement = "Sign up agreement will only be displayed when it's not empty"; diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index 6013a2604..072b8eb23 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -11,6 +11,7 @@ $lang->default_group_1 = "Usuario registrado"; $lang->default_group_2 = "Usuario regular"; $lang->admin_group = "Manejo del grupo"; + $lang->keep_signed = 'Keep me signed in'; $lang->remember_user_id = 'Guardar ID'; $lang->already_logged = "Ya está conectado"; $lang->denied_user_id = 'Este ID está prohibido.'; @@ -45,6 +46,8 @@ $lang->enable_join = 'Permitir el registro del usuario'; $lang->limit_day = 'Límite de la fecha temporal'; $lang->limit_date = 'Límite de fecha'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; $lang->redirect_url = 'URL luego del registro'; $lang->agreement = 'Acuerdo del registro del usuario'; $lang->accept_agreement = 'Acepto'; @@ -59,6 +62,7 @@ $lang->webmaster_name = 'Nombre del Webmaster'; $lang->webmaster_email = 'Correo electrónico Webmaster'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = 'Por favor, webmaster de entrada el nombre que se utilizará para la autenticación de los correos u otros sitio de la administración. (Por defecto: webmaster)'; $lang->about_webmaster_email = 'Introduzca la dirección de correo electrónico webmaster.'; @@ -179,6 +183,8 @@ $lang->about_enable_join = 'Debe seleccionar esta opción para permitir el registro de los usuarios'; $lang->about_limit_day = 'Usted puede limitar la fecha de la certificación luego de registrar'; $lang->about_limit_date = 'Usuario no podra conectarse hasta la fecha indicada'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; $lang->about_redirect_url = 'Ingresar la URL que va a abrir luego de registrar los usuarios. Cuando esto esta vacío, se habrirá la página anterior a la del registro.'; $lang->about_agreement = "Acuerdo del registro no será mostrado si esta vacío"; diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index 5c7101c8b..2dd807796 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -11,6 +11,7 @@ $lang->default_group_1 = "準会員"; $lang->default_group_2 = "正会員"; $lang->admin_group = "管理グループ"; + $lang->keep_signed = '로그인 유지'; $lang->remember_user_id = 'ID保存'; $lang->already_logged = '既にログインされています。'; $lang->denied_user_id = '使用が禁じられているIDです。'; @@ -46,6 +47,8 @@ $lang->enable_join = '会員加入を許可する'; $lang->limit_day = '臨時制限日'; $lang->limit_date = '制限日'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; $lang->redirect_url = '加入後移動ページ'; $lang->agreement = '会員加入規約'; $lang->accept_agreement = '規約に同意する'; @@ -60,6 +63,7 @@ $lang->webmaster_name = 'ウェブマスターの名前'; $lang->webmaster_email = 'ウェブマスターのメール'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = '認証メールまたはサイト管理時に使用されるウェブマスターの名前を入力してください(デフォルト : webmaster)'; $lang->about_webmaster_email = 'ウェブマスターのメールアドレスを入力してください。'; @@ -182,6 +186,8 @@ $lang->about_enable_join = 'チェックを入れないとユーザが会員に加入できません。'; $lang->about_limit_day = '会員加入後一定の期間中、認証制限を行うことができます。'; $lang->about_limit_date = '指定された期間まで該当ユーザはログインできなくします。'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; $lang->about_redirect_url = '会員加入後、移動するURLを入力してください。空の場合は会員加入する前のページに戻ります。'; $lang->about_agreement = '会員加入規約がない場合は表示されません。'; diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 72b2a857e..149aa5889 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -8,9 +8,10 @@ $lang->member = '회원'; $lang->member_default_info = '기본 정보'; $lang->member_extend_info = '추가 정보'; - $lang->default_group_1 = "준회원"; - $lang->default_group_2 = "정회원"; - $lang->admin_group = "관리그룹"; + $lang->default_group_1 = '준회원'; + $lang->default_group_2 = '정회원'; + $lang->admin_group = '관리그룹'; + $lang->keep_signed = '로그인 유지'; $lang->remember_user_id = '아이디 저장'; $lang->already_logged = '이미 로그인되어 있습니다'; $lang->denied_user_id = '사용금지된 아이디입니다'; @@ -46,6 +47,8 @@ $lang->enable_join = '회원 가입 허가'; $lang->limit_day = '임시 제한 일자'; $lang->limit_date = '제한일'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; $lang->redirect_url = '회원 가입후 이동할 페이지'; $lang->agreement = '회원 가입 약관'; $lang->accept_agreement = '약관동의'; @@ -60,6 +63,7 @@ $lang->webmaster_name = '웹마스터 이름'; $lang->webmaster_email = '웹마스터 메일주소'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)'; $lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.'; @@ -182,6 +186,8 @@ $lang->about_enable_join = '체크를 하셔야 사용자들이 회원가입을 할 수 있습니다'; $lang->about_limit_day = '회원 가입후 정해진 일자동안 인증 제한을 할 수 있습니다'; $lang->about_limit_date = '지정된 일자까지 해당 사용자는 로그인을 할 수 없습니다'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; $lang->about_redirect_url = '회원 가입후 이동할 url을 입력해 주세요. 비어 있으면 가입 이전 페이지로 돌아갑니다'; $lang->about_agreement = '회원가입약관이 없을 경우 표시되지 않습니다'; diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index a5aa25e96..256e309fe 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -11,6 +11,7 @@ $lang->default_group_1 = "Общая группа"; $lang->default_group_2 = "Особая группа"; $lang->admin_group = "Администативная группа"; + $lang->keep_signed = '로그인 유지'; $lang->remember_user_id = 'Сохранить ID'; $lang->already_logged = "Вы уже вошли"; $lang->denied_user_id = 'Извините. Этот ID запрещен.'; @@ -45,6 +46,8 @@ $lang->enable_join = 'Позволить пользователям регистрироваться'; $lang->limit_day = 'Временный лимит даты'; $lang->limit_date = 'Дата лимита'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; $lang->redirect_url = 'URL после регистрации'; $lang->agreement = 'Пользовательское соглашение о регистрации'; $lang->accept_agreement = 'Согласен'; @@ -59,6 +62,7 @@ $lang->webmaster_name = "Имя веб-мастера"; $lang->webmaster_email = "Email веб-мастера"; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = "Пожалуйста, введите имя веб-мастера, которое будет использоваться для аутентификационных писем или другого адиминистрирования сайта. (по умолчанию : webmaster)"; $lang->about_webmaster_email = "Пожалуйста, введите email адрес веб-мастера."; @@ -180,6 +184,8 @@ $lang->about_enable_join = 'Позволить пользователям регистрироваться'; $lang->about_limit_day = 'Вы можете ограничить дату сертификации после регистрации'; $lang->about_limit_date = 'Пользователь не может войти до указанной даты'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; $lang->about_redirect_url = 'Пожалуйста, введите URL, куда пользователи попадут после регистрации. Когда поле пустое, будет установлена страница предшествуящая странице регистрации.'; $lang->about_agreement = "Регистрационное соглашение будет показано, если оно содержит текст"; diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index 42cee0b1d..7b25e2e72 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -11,6 +11,7 @@ $lang->default_group_1 = "准会员"; $lang->default_group_2 = "正会员"; $lang->admin_group = "管理组"; + $lang->keep_signed = '로그인 유지'; $lang->remember_user_id = '保存ID'; $lang->already_logged = '您已经登录!'; $lang->denied_user_id = '被禁止的用户名。'; @@ -45,6 +46,8 @@ $lang->enable_join = '允许会员注册'; $lang->limit_day = '认证限制'; $lang->limit_date = '限制日期'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; $lang->redirect_url = '注册会员后页面转向'; $lang->agreement = '会员注册条款'; $lang->accept_agreement = '同意条款'; @@ -59,6 +62,7 @@ $lang->webmaster_name = '管理员名'; $lang->webmaster_email = '管理员电子邮件'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = '请输入认证所需的电子邮件地址或管理其他网站时要使用的网站管理员名称。(默认 : webmaster)'; $lang->about_webmaster_email = '请输入网站管理员的电子邮件地址。'; @@ -179,6 +183,8 @@ $lang->about_enable_join = '选择此项后用户才可以注册。'; $lang->about_limit_day = '注册会员后的认证有效期限。'; $lang->about_limit_date = '直到指定日期该用户不能登录。'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; $lang->about_redirect_url = '请输入注册会员后的页面转向 url。(留空为返回前页)'; $lang->about_agreement = '没有会员条款时不显示。'; diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index 004a0b78b..4aff8b6d4 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -83,7 +83,7 @@ **/ function procMemberAdminInsertConfig() { // 기본 정보를 받음 - $args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','limit_day','redirect_url','agreement','profile_image','profile_image_max_width','profile_image_max_height','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height','signature_max_height'); + $args = Context::gets('webmaster_name','webmaster_email','skin','colorset','enable_openid','enable_join','limit_day','after_login_url','after_logout_url','redirect_url','agreement','profile_image','profile_image_max_width','profile_image_max_height','image_name','image_mark', 'image_name_max_width', 'image_name_max_height','image_mark_max_width','image_mark_max_height','signature_max_height'); if(!$args->skin) $args->skin = "default"; if(!$args->colorset) $args->colorset = "white"; if($args->enable_join!='Y') $args->enable_join = 'N'; diff --git a/modules/member/member.class.php b/modules/member/member.class.php index cff79cf04..3a15de02d 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -51,50 +51,61 @@ $oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageName'); $oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageMark'); + $oModuleModel = &getModel('module'); + $args = $oModuleModel->getModuleConfig('member'); + // 기본 정보를 세팅 $args->enable_join = 'Y'; - $args->enable_openid = 'N'; - $args->image_name = 'Y'; - $args->image_mark = 'Y'; - $args->profile_image = 'Y'; - $args->image_name_max_width = '90'; - $args->image_name_max_height = '20'; - $args->image_mark_max_width = '20'; - $args->image_mark_max_height = '20'; - $args->profile_image_max_width = '80'; - $args->profile_image_max_height = '80'; + if(!$args->enable_openid) $args->enable_openid = 'N'; + if(!$args->image_name) $args->image_name = 'Y'; + if(!$args->image_mark) $args->image_mark = 'Y'; + if(!$args->profile_image) $args->profile_image = 'Y'; + if(!$args->image_name_max_width) $args->image_name_max_width = '90'; + if(!$args->image_name_max_height) $args->image_name_max_height = '20'; + if(!$args->image_mark_max_width) $args->image_mark_max_width = '20'; + if(!$args->image_mark_max_height) $args->image_mark_max_height = '20'; + if(!$args->profile_image_max_width) $args->profile_image_max_width = '80'; + if(!$args->profile_image_max_height) $args->profile_image_max_height = '80'; $oModuleController->insertModuleConfig('member',$args); // 멤버 컨트롤러 객체 생성 + $oMemberModel = &getModel('member'); $oMemberController = &getController('member'); $oMemberAdminController = &getAdminController('member'); - // 관리자, 정회원, 준회원 그룹을 입력 - $group_args->title = Context::getLang('admin_group'); - $group_args->is_default = 'N'; - $group_args->is_admin = 'Y'; - $output = $oMemberAdminController->insertGroup($group_args); + $groups = $oMemberModel->getGroups(); + if(!count($groups)) { + // 관리자, 정회원, 준회원 그룹을 입력 + $group_args->title = Context::getLang('admin_group'); + $group_args->is_default = 'N'; + $group_args->is_admin = 'Y'; + $output = $oMemberAdminController->insertGroup($group_args); - unset($group_args); - $group_args->title = Context::getLang('default_group_1'); - $group_args->is_default = 'Y'; - $group_args->is_admin = 'N'; - $output = $oMemberAdminController->insertGroup($group_args); + unset($group_args); + $group_args->title = Context::getLang('default_group_1'); + $group_args->is_default = 'Y'; + $group_args->is_admin = 'N'; + $output = $oMemberAdminController->insertGroup($group_args); - unset($group_args); - $group_args->title = Context::getLang('default_group_2'); - $group_args->is_default = 'N'; - $group_args->is_admin = 'N'; - $oMemberAdminController->insertGroup($group_args); + unset($group_args); + $group_args->title = Context::getLang('default_group_2'); + $group_args->is_default = 'N'; + $group_args->is_admin = 'N'; + $oMemberAdminController->insertGroup($group_args); + } // 관리자 정보 세팅 - $admin_info = Context::gets('user_id','password','nick_name','user_name', 'email_address'); - if($admin_info->user_id) { - // 관리자 정보 입력 - $oMemberAdminController->insertAdmin($admin_info); + $admin_args->is_admin = 'Y'; + $output = executeQuery('member.getMemberList', $admin_args); + if(!$output->data) { + $admin_info = Context::gets('user_id','password','nick_name','user_name', 'email_address'); + if($admin_info->user_id) { + // 관리자 정보 입력 + $oMemberAdminController->insertAdmin($admin_info); - // 로그인 처리시킴 - $output = $oMemberController->doLogin($admin_info->user_id); + // 로그인 처리시킴 + $output = $oMemberController->doLogin($admin_info->user_id); + } } // 금지 아이디 등록 (기본 + 모듈명) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 9c73c7f31..9c5cf09ea 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -16,7 +16,7 @@ /** * @brief user_id, password를 체크하여 로그인 시킴 **/ - function procMemberLogin($user_id = null, $password = null, $remember_user_id = null) { + function procMemberLogin($user_id = null, $password = null, $keep_signed = null) { // 변수 정리 if(!$user_id) $user_id = Context::get('user_id'); $user_id = trim($user_id); @@ -24,14 +24,19 @@ if(!$password) $password = Context::get('password'); $password = trim($password); - if($remember_user_id) $remember_user_id = Context::get('remember_user_id'); - if($remember_user_id != 'Y') setcookie('user_id',''); + if(!$keep_signed) $keep_signed = Context::get('keep_signed'); // 아이디나 비밀번호가 없을때 오류 return if(!$user_id) return new Object(-1,'null_user_id'); if(!$password) return new Object(-1,'null_password'); - return $this->doLogin($user_id, $password); + $output = $this->doLogin($user_id, $password, $keep_signed=='Y'?true:false); + + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('member'); + if($config->after_login_url) $this->setRedirectUrl($config->after_login_url); + + return $output; } /** @@ -137,8 +142,14 @@ // 로그아웃 이후 trigger 호출 (after) $trigger_output = ModuleHandler::triggerCall('member.doLogout', 'after', $logged_info); if(!$trigger_output->toBool()) return $trigger_output; - - return new Object(); + + $output = new Object(); + + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('member'); + if($config->after_logout_url) Context::set('redirect_url', $config->after_logout_url); + + return $output; } /** @@ -1202,10 +1213,44 @@ return executeQuery('member.addMemberToGroup',$args); } + /** + * @brief 자동 로그인 시킴 + **/ + function doAutologin() { + // 자동 로그인 키 값을 구함 + $args->autologin_key = $_COOKIE['xeak']; + + // 키값에 해당하는 정보 구함 + $output = executeQuery('member.getAutologin', $args); + + // 정보가 없으면 쿠키 삭제 + if(!$output->toBool() || !$output->data) { + setCookie('xeak',null,time()+60*60*24*365, '/'); + return; + } + + $user_id = $output->data->user_id; + $password = $output->data->password; + if(!$user_id || !$password) { + setCookie('xeak',null,time()+60*60*24*365, '/'); + return; + } + + // 정보를 바탕으로 키값 비교 + $key = md5($user_id.$password.$_SERVER['REMOTE_ADDR']); + + if($key == $args->autologin_key) { + $output = $this->doLogin($user_id); + } else { + executeQuery('member.deleteAutologin', $args); + setCookie('xeak',null,time()+60*60*24*365, '/'); + } + } + /** * @brief 로그인 시킴 **/ - function doLogin($user_id, $password = '') { + function doLogin($user_id, $password = '', $keep_signed = false) { // 로그인 이전에 trigger 호출 (before) $trigger_obj->user_id = $user_id; $trigger_obj->password = $password; @@ -1241,6 +1286,18 @@ $trigger_output = ModuleHandler::triggerCall('member.doLogin', 'after', $member_info); if(!$trigger_output->toBool()) return $trigger_output; + // 자동 로그인 사용시 정보 처리 + if($keep_signed) { + // 자동 로그인 키 생성 + $autologin_args->autologin_key = md5($user_id.$member_info->password.$_SERVER['REMOTE_ADDR']); + $autologin_args->member_srl = $member_info->member_srl; + executeQuery('member.deleteAutologin', $autologin_args); + $output = executeQuery('member.insertAutologin', $autologin_args); + if($output->toBool()) { + setCookie('xeak',$autologin_args->autologin_key, time()+60*60*24*365, '/'); + } + } + $this->setSessionInfo($member_info); return $output; @@ -1580,6 +1637,11 @@ $_SESSION[$key] = ''; } session_destroy(); + + if($_COOKIE['xeak']) { + $args->autologin_key = $_COOKIE['xeak']; + executeQuery('member.deleteAutologin', $args); + } } } ?> diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 838216353..cf2ff5022 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -430,6 +430,7 @@ $image_name_file = sprintf('files/member_extra_info/profile_image/%s%d.%s', getNumberingPath($member_srl), $member_srl, $exts[$i]); if(file_exists($image_name_file)) { list($width, $height, $type, $attrs) = getimagesize($image_name_file); + $info = null; $info->width = $width; $info->height = $height; $info->src = Context::getRequestUri().$image_name_file; diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 7631696cf..bbbe0ad05 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -262,7 +262,11 @@ * @brief 로그아웃 출력 **/ function dispMemberLogout() { - // 템플릿 파일 지정 + $oMemberController = &getController('member'); + $oMemberController->procMemberLogout(); + + Context::set('layout','none'); + $this->setTemplatePath($this->module_path.'/tpl'); $this->setTemplateFile('logout'); } diff --git a/modules/member/queries/deleteAutologin.xml b/modules/member/queries/deleteAutologin.xml new file mode 100644 index 000000000..5919a4058 --- /dev/null +++ b/modules/member/queries/deleteAutologin.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/member/queries/getAutologin.xml b/modules/member/queries/getAutologin.xml new file mode 100644 index 000000000..078182d48 --- /dev/null +++ b/modules/member/queries/getAutologin.xml @@ -0,0 +1,15 @@ + + +
    +
    + + + + + + + + + + + diff --git a/modules/member/queries/insertAutologin.xml b/modules/member/queries/insertAutologin.xml new file mode 100644 index 000000000..ed3c5aa3d --- /dev/null +++ b/modules/member/queries/insertAutologin.xml @@ -0,0 +1,9 @@ + + +
    + + + + + + diff --git a/modules/member/schemas/member_autologin.xml b/modules/member/schemas/member_autologin.xml new file mode 100644 index 000000000..a18bf578c --- /dev/null +++ b/modules/member/schemas/member_autologin.xml @@ -0,0 +1,4 @@ +
    + + +
    diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index ff9bb1775..5ced64d67 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -74,13 +74,12 @@ function doUploadImageMark() { /* 로그인 영역에 포커스 */ function doFocusUserId(fo_id) { + if(xScrollTop()) return; var fo_obj = xGetElementById(fo_id); - if(xGetCookie('user_id')) { - fo_obj.user_id.value = xGetCookie('user_id'); - fo_obj.remember_user_id.checked = true; - fo_obj.password.focus(); - } else { - fo_obj.user_id.focus(); + if(fo_obj.user_id) { + try{ + fo_obj.user_id.focus(); + } catch(e) {}; } } diff --git a/modules/member/skins/default/login_form.html b/modules/member/skins/default/login_form.html index 5e59f03b2..64d9511e4 100644 --- a/modules/member/skins/default/login_form.html +++ b/modules/member/skins/default/login_form.html @@ -2,6 +2,11 @@ + +
    @@ -21,8 +26,8 @@

    - - + +

    @@ -57,8 +62,4 @@
    - - diff --git a/modules/member/tpl/logout.html b/modules/member/tpl/logout.html new file mode 100644 index 000000000..87e4c7702 --- /dev/null +++ b/modules/member/tpl/logout.html @@ -0,0 +1,7 @@ + diff --git a/modules/member/tpl/member_config.html b/modules/member/tpl/member_config.html index 134d3acdd..caec89fc5 100644 --- a/modules/member/tpl/member_config.html +++ b/modules/member/tpl/member_config.html @@ -84,10 +84,24 @@

    {$lang->about_signature_max_height}

    + + {$lang->after_login_url} + + +

    {$lang->about_after_login_url}

    + + + + {$lang->after_logout_url} + + +

    {$lang->about_after_logout_url}

    + + {$lang->redirect_url} - +

    {$lang->about_redirect_url}

    diff --git a/widgets/login_info/skins/default/js/login.js b/widgets/login_info/skins/default/js/login.js index da278dc3b..9ee9694d4 100644 --- a/widgets/login_info/skins/default/js/login.js +++ b/widgets/login_info/skins/default/js/login.js @@ -1,13 +1,8 @@ /* 로그인 영역에 포커스 */ function doFocusUserId(fo_id) { + if(xScrollTop()) return; var fo_obj = xGetElementById(fo_id); - if(xGetCookie('user_id')) { - fo_obj.user_id.value = xGetCookie('user_id'); - fo_obj.remember_user_id.checked = true; - try{ - fo_obj.password.focus(); - } catch(e) {}; - } else { + if(fo_obj.user_id) { try{ fo_obj.user_id.focus(); } catch(e) {}; diff --git a/widgets/login_info/skins/default/login_form.html b/widgets/login_info/skins/default/login_form.html index 744d38a88..9b8d4a082 100644 --- a/widgets/login_info/skins/default/login_form.html +++ b/widgets/login_info/skins/default/login_form.html @@ -7,6 +7,11 @@ + +

    - - + + + From 5a0b5a35bb9c56943ac37e6be50cf2dd11f746a1 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 17:14:13 +0000 Subject: [PATCH 256/278] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EC=84=A4=EC=B9=98?= =?UTF-8?q?=ED=9B=84=EC=97=90=20=EC=B2=B4=ED=81=AC=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3699 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 4d879700b..debc38151 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -109,7 +109,7 @@ $oMemberModel = &getModel('member'); // 로그인되어 있지 않고 자동로그인 키값이 있으면 자동 로그인 체크 - if(!$oMemberModel->isLogged() && $_COOKIE['xeak']) { + if(Context::isInstalled() && !$oMemberModel->isLogged() && $_COOKIE['xeak']) { $oMemberController = &getController('member'); $oMemberController->doAutologin(); } From c34beaedb804d0fc034d1314c97acb98b0a22a50 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 17:19:58 +0000 Subject: [PATCH 257/278] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=85=8C=EC=9D=B4=EB=B8=94=EC=9D=B4=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EB=90=98=EC=96=B4=20=EC=9E=88=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8D=94=EB=9D=BC=EB=8F=84=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EC=9D=B4=20=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3700 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 9c5cf09ea..b68870db2 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -1292,8 +1292,8 @@ $autologin_args->autologin_key = md5($user_id.$member_info->password.$_SERVER['REMOTE_ADDR']); $autologin_args->member_srl = $member_info->member_srl; executeQuery('member.deleteAutologin', $autologin_args); - $output = executeQuery('member.insertAutologin', $autologin_args); - if($output->toBool()) { + $autologin_output = executeQuery('member.insertAutologin', $autologin_args); + if($autologin_output->toBool()) { setCookie('xeak',$autologin_args->autologin_key, time()+60*60*24*365, '/'); } } From 69ab023c4090895029f508c491b2629bee7f0c67 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 17:24:18 +0000 Subject: [PATCH 258/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3701 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/css/cyan.css | 2 +- modules/member/skins/default/css/green.css | 2 +- modules/member/skins/default/css/purple.css | 2 +- modules/member/skins/default/css/red.css | 2 +- modules/member/skins/default/css/white.css | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/member/skins/default/css/cyan.css b/modules/member/skins/default/css/cyan.css index f1b1227f1..f44b4ac04 100644 --- a/modules/member/skins/default/css/cyan.css +++ b/modules/member/skins/default/css/cyan.css @@ -1,4 +1,4 @@ @charset "utf-8"; .boardHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;} -.memberSmallBox .header h3 { margin:0; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;} +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/member/skins/default/css/green.css b/modules/member/skins/default/css/green.css index c8cfafe64..878496c2b 100644 --- a/modules/member/skins/default/css/green.css +++ b/modules/member/skins/default/css/green.css @@ -1,4 +1,4 @@ @charset "utf-8"; .boardHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d0dbd1; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;} -.memberSmallBox .header h3 { margin:0; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;} +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/member/skins/default/css/purple.css b/modules/member/skins/default/css/purple.css index 1e7882b43..3cd1adf13 100644 --- a/modules/member/skins/default/css/purple.css +++ b/modules/member/skins/default/css/purple.css @@ -1,4 +1,4 @@ @charset "utf-8"; .boardHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;} -.memberSmallBox .header h3 { margin:0; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;} +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/member/skins/default/css/red.css b/modules/member/skins/default/css/red.css index 96cd17842..e3af1d9e4 100644 --- a/modules/member/skins/default/css/red.css +++ b/modules/member/skins/default/css/red.css @@ -1,4 +1,4 @@ @charset "utf-8"; .boardHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} -.memberSmallBox .header h3 { margin:0; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/member/skins/default/css/white.css b/modules/member/skins/default/css/white.css index 08eca972c..10cb268b4 100644 --- a/modules/member/skins/default/css/white.css +++ b/modules/member/skins/default/css/white.css @@ -1,5 +1,5 @@ @charset "utf-8"; .boardHeader h3 { float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border:none; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} -.memberSmallBox .header h3 { margin:0; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border:none; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border:none; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} From 393a4095da24c5052bc9f6e0934126a0c2872764 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 17:25:49 +0000 Subject: [PATCH 259/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3702 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/login_info/skins/xe_official/login_form.html | 1 + 1 file changed, 1 insertion(+) diff --git a/widgets/login_info/skins/xe_official/login_form.html b/widgets/login_info/skins/xe_official/login_form.html index c6504573a..12f751dbe 100644 --- a/widgets/login_info/skins/xe_official/login_form.html +++ b/widgets/login_info/skins/xe_official/login_form.html @@ -33,6 +33,7 @@ +
    From 542c174bfee02110612f52669490f8684b96650b Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Mon, 18 Feb 2008 17:38:35 +0000 Subject: [PATCH 260/278] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=97=90=20=EC=84=A4?= =?UTF-8?q?=EB=AA=85=20=EC=9E=98=EB=AA=BB=EB=90=9C=EA=B2=83=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3703 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.view.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/board.view.php b/modules/board/board.view.php index b13a90c50..8aea4d2f4 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -213,7 +213,7 @@ $obj->list_count = 10000; $output = $oTagModel->getTagList($obj); - // 내용을 랜던으로 정렬 + // 내용을 랜덤으로 정렬 if(count($output->data)) { $numbers = array_keys($output->data); shuffle($numbers); From bc7c5b4112e3f4908919ceb7294714f956b36929 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 18:35:17 +0000 Subject: [PATCH 261/278] =?UTF-8?q?=EB=B3=B4=EB=82=B8=20=EC=AA=BD=EC=A7=80?= =?UTF-8?q?=ED=95=A8=20=EB=82=B4=EC=9A=A9=20=EB=B3=B4=EA=B8=B0=EC=8B=9C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=83=9D=EA=B8=B0=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3704 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.view.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/member.view.php b/modules/member/member.view.php index bbbe0ad05..da34964fc 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -291,7 +291,7 @@ // message_srl이 있으면 내용 추출 if($message_srl) { $message = $oMemberModel->getSelectedMessage($message_srl); - if($message->message_srl == $message_srl && $message->receiver_srl == $logged_info->member_srl) Context::set('message', $message); + if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl || $message->sender_srl == $logged_info->member_srl) ) Context::set('message', $message); } // 목록 추출 From bb153d7cdc3653e98939bf13ab136e334aa19836 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 18:37:56 +0000 Subject: [PATCH 262/278] =?UTF-8?q?=EC=B9=9C=EA=B5=AC=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=20=EB=B3=B4=EA=B8=B0=EC=97=90=EC=84=9C=20=EC=AA=BD=EC=A7=80=20?= =?UTF-8?q?=EB=B0=9C=EC=86=A1=20=EB=B2=84=ED=8A=BC=EC=9D=84=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3705 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/friends_list.html | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/modules/member/skins/default/friends_list.html b/modules/member/skins/default/friends_list.html index f0bea28e0..71e194475 100644 --- a/modules/member/skins/default/friends_list.html +++ b/modules/member/skins/default/friends_list.html @@ -22,17 +22,16 @@ - + + - - - @@ -55,7 +53,6 @@ - From 0d20464a4c7ae0cac7eb6c89c5ea2f07c4b9b38f Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 18:41:44 +0000 Subject: [PATCH 263/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3706 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/lang/es.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/member_extra_info/lang/es.lang.php b/addons/member_extra_info/lang/es.lang.php index efd23396a..7eb876a67 100644 --- a/addons/member_extra_info/lang/es.lang.php +++ b/addons/member_extra_info/lang/es.lang.php @@ -1,3 +1,3 @@ alert_new_message_arrived = 'Ha llegado un nuevo mensaje. Desea leer ahora?'; + $lang->alert_new_message_arrived = 'Ha llegado un nuevo mensaje. Desea leer ahora?'; ?> From d54fa4208eceb221549f8a02c3d1d3fdf70d2307 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 18:46:06 +0000 Subject: [PATCH 264/278] =?UTF-8?q?=EC=AA=BD=EC=A7=80=EA=B0=80=20=EC=99=94?= =?UTF-8?q?=EB=8B=A4=EB=8A=94=20=EB=A9=94=EC=84=B8=EC=A7=80=EC=9D=98=20?= =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90=EC=96=B4=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3707 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/lang/es.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/member_extra_info/lang/es.lang.php b/addons/member_extra_info/lang/es.lang.php index 7eb876a67..51933d3f8 100644 --- a/addons/member_extra_info/lang/es.lang.php +++ b/addons/member_extra_info/lang/es.lang.php @@ -1,3 +1,3 @@ alert_new_message_arrived = 'Ha llegado un nuevo mensaje. Desea leer ahora?'; + $lang->alert_new_message_arrived = 'Usted tiene un nuevo mensaje. Quiere comprobar ahora?'; ?> From 798b9ff84277d5f487feef94e1edd32d78cbb4e0 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 18 Feb 2008 19:06:46 +0000 Subject: [PATCH 265/278] =?UTF-8?q?=EB=A9=94=EB=89=B4=EC=9D=98=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=97=B0=EA=B2=B0=EC=8B=9C=20"=EC=84=A0?= =?UTF-8?q?=ED=83=9D=EC=8B=9C"=20=EB=B2=84=ED=8A=BC=EC=9D=84=20=ED=95=B4?= =?UTF-8?q?=EB=8B=B9=20=EB=A9=94=EB=89=B4=EA=B0=80=20=EC=84=A0=ED=83=9D?= =?UTF-8?q?=EB=90=98=EC=97=88=EC=9D=84=EB=95=8C=20=ED=91=9C=EC=8B=9C?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3708 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/menu/menu.admin.controller.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 39a0d4a14..8ebba16dd 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -517,13 +517,15 @@ if($hover_btn) $hover_str = sprintf('onmouseover=\"this.src=\'%s\'\"', $hover_btn); else $hover_str = ''; if($active_btn) $active_str = sprintf('onmousedown=\"this.src=\'%s\'\"', $active_btn); else $active_str = ''; $link = sprintf('"\"".$_menu_names[%d][$lang_type]."\""', $normal_btn, $normal_btn, $node->menu_item_srl, $hover_str, $active_str, $classname); + if($active_btn) $link_active = sprintf('"\"".$_menu_names[%d][$lang_type]."\""', $active_btn, $node->menu_item_srl, $classname); + else $link_active = $link; } else { - $link = sprintf('$_menu_names[%d][$lang_type]', $node->menu_item_srl); + $link_active = $link = sprintf('$_menu_names[%d][$lang_type]', $node->menu_item_srl); } // 속성을 생성한다 ( url_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) $attribute = sprintf( - '"node_srl"=>"%s","parent_srl"=>"%s","text"=>(%s?$_menu_names[%d][$lang_type]:""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s), "link"=>(%s?%s:""),', + '"node_srl"=>"%s","parent_srl"=>"%s","text"=>(%s?$_menu_names[%d][$lang_type]:""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s), "link"=>(%s? ( array(%s)&&in_array(Context::get("mid"),array(%s)) ?%s:%s):""),', $node->menu_item_srl, $node->parent_srl, $group_check_code, @@ -541,6 +543,9 @@ $expand, $child_buff, $group_check_code, + $selected, + $selected, + $link_active, $link ); From 68913531e1872672b85472ecee1418a450ecd7cb Mon Sep 17 00:00:00 2001 From: supershop Date: Mon, 18 Feb 2008 20:50:54 +0000 Subject: [PATCH 266/278] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B6=94=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3709 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/en.lang.php | 4 +-- .../components/cc_license/lang/en.lang.php | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 modules/editor/components/cc_license/lang/en.lang.php diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index 1c79ff38f..b47a5cd38 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -19,7 +19,7 @@ $lang->expand = 'Expand'; $lang->category_group_srls = 'Accessable Group'; $lang->search_result = 'Search result'; - $lang->consultation = '상담 기능'; + $lang->consultation = 'Consultation'; // words used in button $lang->cmd_board_list = 'Board list'; @@ -34,5 +34,5 @@ $lang->about_board_category = 'You can make board categories.
    When board category is broken, try rebuilding the cache file manually.'; $lang->about_except_notice = "Notice articles will not be displayed on normal list."; $lang->about_board = "This module is for creating and managing boards.\nYou may select the module name from the list after creating one to configure specifically.\nPlease be careful with board's module name, since it will be the url. (ex : http://domain/zb/?mid=modulename)"; - $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; + $lang->about_consultation = "Non-administrator members would see their own artocles.\nNon-members would not be able to write articles when using consultation."; ?> diff --git a/modules/editor/components/cc_license/lang/en.lang.php b/modules/editor/components/cc_license/lang/en.lang.php new file mode 100644 index 000000000..6838a9a97 --- /dev/null +++ b/modules/editor/components/cc_license/lang/en.lang.php @@ -0,0 +1,29 @@ + + * @brief WYSIWYG module > CCL display component + **/ + + $lang->ccl_default_title = 'Creative Commons Korea Copyrights'; + $lang->ccl_default_message = 'This component can be used by %s%s%s%s'; + + $lang->ccl_title = 'Title'; + $lang->ccl_use_mark = 'Use Mark'; + $lang->ccl_allow_commercial = 'Allow Commercial Use'; + $lang->ccl_allow_modification = 'Allow Modification of Component'; + + $lang->ccl_allow = 'Allow'; + $lang->ccl_disallow = 'Disallow'; + $lang->ccl_sa = 'Modify Identical Condition'; + + $lang->ccl_options = array( + 'ccl_allow_commercial' => array('Y'=>'-Commertial', 'N'=>'-Noncommertial'), + 'ccl_allow_modification' => array('Y'=>'-Inhibit', 'N'=>'-Inhibit', 'SA'=>'-Under Identical Condition'), + ); + + $lang->about_ccl_title = 'Title will be displayed. Default message will be displayed when nothing is input.'; + $lang->about_ccl_use_mark = 'You may display or hide mark. (default: display)'; + $lang->about_ccl_allow_commercial = 'You may allow or disallow commertial use. (default: disallow)'; + $lang->about_ccl_allow_modification = 'You may allow or disallow modification of the work. (default: allow)'; +?> From 05c2051593b8a2b8ea63cc59a154ec4df2be7cfd Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Tue, 19 Feb 2008 09:31:56 +0000 Subject: [PATCH 267/278] =?UTF-8?q?=EC=8A=A4=ED=8E=98=EC=9D=B8=EC=96=B4(?= =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90=EC=96=B4)=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3710 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/skin.xml | 17 ++++++++ .../components/cc_license/lang/es.lang.php | 29 ++++++++++++++ .../code_highlighter/lang/es.lang.php | 16 ++++++++ .../components/image_gallery/lang/es.lang.php | 27 +++++++++++++ .../components/image_link/lang/es.lang.php | 21 ++++++++++ .../multimedia_link/lang/es.lang.php | 14 +++++++ .../components/naver_map/lang/es.lang.php | 22 ++++++++++ .../components/poll_maker/lang/es.lang.php | 19 +++++++++ .../components/quotation/lang/es.lang.php | 40 +++++++++++++++++++ .../components/table_maker/lang/es.lang.php | 24 +++++++++++ .../components/url_link/lang/es.lang.php | 21 ++++++++++ 11 files changed, 250 insertions(+) create mode 100644 modules/editor/components/cc_license/lang/es.lang.php create mode 100644 modules/editor/components/code_highlighter/lang/es.lang.php create mode 100644 modules/editor/components/image_gallery/lang/es.lang.php create mode 100644 modules/editor/components/image_link/lang/es.lang.php create mode 100644 modules/editor/components/multimedia_link/lang/es.lang.php create mode 100644 modules/editor/components/naver_map/lang/es.lang.php create mode 100644 modules/editor/components/poll_maker/lang/es.lang.php create mode 100644 modules/editor/components/quotation/lang/es.lang.php create mode 100644 modules/editor/components/table_maker/lang/es.lang.php create mode 100644 modules/editor/components/url_link/lang/es.lang.php diff --git a/modules/board/skins/cozy_board/skin.xml b/modules/board/skins/cozy_board/skin.xml index cc9af9fd3..1927d2e18 100644 --- a/modules/board/skins/cozy_board/skin.xml +++ b/modules/board/skins/cozy_board/skin.xml @@ -3,12 +3,14 @@ cozy Cozy cozy + cozy Cozy (주)NHN (株)NHN (株)NHN NHN Corp + NHN Corp cozy simple 스킨의 목록형입니다. 디자인 : 서기정 (http://blog.naver.com/addcozy) @@ -23,6 +25,11 @@ This is list style board of cozy simple skin. Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) HTML/CSS : Ji-Hun So + + + Esta es la lista de estilo acogedor simple junta de la piel. + Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML / CSS: Ji-Hun So Cozy样式皮肤。 @@ -35,30 +42,35 @@ 빨간색(기본) Red (default) + Roja (por defecto) 红色(默认) 녹색 Green + Verde 绿色 파란색 Blue + Azul 蓝色 분홍색 ピンク Pink + Pink 粉红色 청록색 青緑 Cyan + Cian 青绿色 @@ -67,6 +79,7 @@ 기본 형태 默认样式 Default Form + Formulario por defecto 목록형, 웹진형, 갤러리형의 기본 스타일을 지정할 수 있습니다. 포럼형 스타일은 정렬대상을 updated로 하셔야 합니다. @@ -82,6 +95,10 @@ You may select default styles such as list style, webzine style or gallery style. Align Target for forum style is required to be selected as 'updated'. + + + Usted puede seleccionar por defecto los estilos como el estilo de lista, estilo o webzine Galería de estilo. + Alinear Meta para el foro estilo es necesaria para ser seleccionado como 'actualización'. list webzine diff --git a/modules/editor/components/cc_license/lang/es.lang.php b/modules/editor/components/cc_license/lang/es.lang.php new file mode 100644 index 000000000..50271e1e7 --- /dev/null +++ b/modules/editor/components/cc_license/lang/es.lang.php @@ -0,0 +1,29 @@ + + * @brief WYSIWYG module > CCL display component + **/ + + $lang->ccl_default_title = 'Creative Commons Corea derechos de autor'; + $lang->ccl_default_message = 'Este componente puede ser usado por % S% s% s% s "; + + $lang->ccl_title = 'Titulo'; + $lang->ccl_use_mark = 'Utilice Mark'; + $lang->ccl_allow_commercial = 'Permitir el uso comercial'; + $lang->ccl_allow_modification = 'Permitir la modificacion de componente'; + + $lang->ccl_allow = 'Permitir'; + $lang->ccl_disallow = 'Disallow'; + $lang->ccl_sa = 'Modificar identica condicion'; + + $lang->ccl_options = array( + 'ccl_allow_commercial' => array('Y'=>'-Commertial', 'N'=>'-Noncommertial'), + 'ccl_allow_modification' => array('Y'=>'-Inhibit', 'N'=>'-Inhibit', 'SA'=>'-Under Identical Condition'), + ); + + $lang->about_ccl_title = 'Titulo en la pantalla. Default mensaje se muestra cuando no hay nada de entrada.'; + $lang->about_ccl_use_mark = 'Puede mostrar u ocultar la marca. (Por defecto: pantalla)'; + $lang->about_ccl_allow_commercial = 'Usted puede permitir o no permitir el uso comercial. (Por defecto: inhabilitar)'; + $lang->about_ccl_allow_modification = 'Usted puede habilitar o inhabilitar la modificacion de la obra. (Por defecto: permitir)'; +?> diff --git a/modules/editor/components/code_highlighter/lang/es.lang.php b/modules/editor/components/code_highlighter/lang/es.lang.php new file mode 100644 index 000000000..f97e71a16 --- /dev/null +++ b/modules/editor/components/code_highlighter/lang/es.lang.php @@ -0,0 +1,16 @@ + | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467; + * @brief 위지윅에디터(editor) 모듈 > 코드하이라이터 (code_highlighter) 컴포넌트의 언어팩 / English language for Zeroboard XE + **/ + $lang->code_type = 'Código Tipo'; + + $lang->used_collapse = 'Utilice Folding'; + $lang->hidden_linenumber = 'Ocultar número de línea'; + $lang->hidden_controls = 'Ocultar barra de herramientas'; + + $lang->file_path = 'Ruta del archivo'; + $lang->description = 'Descripción'; + $lang->first_line = 'Primera Línea'; +?> \ No newline at end of file diff --git a/modules/editor/components/image_gallery/lang/es.lang.php b/modules/editor/components/image_gallery/lang/es.lang.php new file mode 100644 index 000000000..502a7c67f --- /dev/null +++ b/modules/editor/components/image_gallery/lang/es.lang.php @@ -0,0 +1,27 @@ + + * @brief editor module > language pack of image_gallery component. + **/ + + $ Lang-> image_gallery = "Haga Galeria de Imagenes"; + $ Lang-> width = "Ancho"; + $ Lang-> altura = "Altura"; + $ Lang-> image_list = "Lista de imagenes"; + $ Lang-> gallery_style = "Galeria de Estilo"; + $ Lang-> gallery_slide_style = "Estilo de diapositivas"; + $ Lang-> gallery_slide_align = "Alinear Estilo"; + $ Lang-> gallery_slide_center = "Centro"; + $ Lang-> gallery_slide_left = "Izquierda"; + $ Lang-> gallery_slide_right = "Derecho"; + $ Lang-> gallery_list_style = "Mostrar todos"; + $ Lang-> gallery_border_color = "Color del borde"; + $ Lang-> gallery_border_thickness = "Grosor de Fronteras"; + $ Lang-> gallery_bg_color = "Color de fondo"; + $ Lang-> about_image_list = "Seleccione archivo para anadir a la galeria de imagenes. Puede arrastrar despues de la seleccion o cambio + clic (para seleccionar ampliamente), ctrl + clic (para seleccionar individualmente)"; + + $ Lang-> cmd_gallery_prev = "Imagen anterior"; + $ Lang-> cmd_gallery_next = "Imagen siguiente"; + $ Lang-> cmd_gallery_thumbnail = "Miniatura"; +?> diff --git a/modules/editor/components/image_link/lang/es.lang.php b/modules/editor/components/image_link/lang/es.lang.php new file mode 100644 index 000000000..ef513eef2 --- /dev/null +++ b/modules/editor/components/image_link/lang/es.lang.php @@ -0,0 +1,21 @@ + + * @brief editor Module > language pack of image_link component + **/ + + $ Lang-> image_url = "Ruta de la imagen"; + $ Lang-> image_alt = "Descripcion de Entrada"; + $ Lang-> image_scale = "Tamano de la Imagen"; + $ Lang-> image_align = "Alinear Estilo"; + $ Lang-> image_align_normal = "Occupy un parrafo"; + $ Lang-> image_align_left = "Izquierda del articulo"; + $ Lang-> image_align_middle = "Centro"; + $ Lang-> image_align_right = "Derecho de articulo"; + $ Lang-> image_border = "Grosor de Fronteras"; + $ Lang-> urllink_url = "URL"; + + $ Lang-> about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; + $ Lang-> cmd_get_scale = "Obtener tamano de la imagen"; +?> diff --git a/modules/editor/components/multimedia_link/lang/es.lang.php b/modules/editor/components/multimedia_link/lang/es.lang.php new file mode 100644 index 000000000..b7ec5e508 --- /dev/null +++ b/modules/editor/components/multimedia_link/lang/es.lang.php @@ -0,0 +1,14 @@ + + * @brief editor module > language pack of multimedia_link component + **/ + + $ Lang-> multimedia_url = "Sendero Multimedia"; + $ Lang-> multimedia_caption = "Descripcion de Entrada"; + $ Lang-> multimedia_width = "Ancho"; + $ Lang-> multimedia_height = "Altura"; + $ Lang-> multimedia_auto_start = "Auto Start"; + +?> diff --git a/modules/editor/components/naver_map/lang/es.lang.php b/modules/editor/components/naver_map/lang/es.lang.php new file mode 100644 index 000000000..813cda4bb --- /dev/null +++ b/modules/editor/components/naver_map/lang/es.lang.php @@ -0,0 +1,22 @@ + + * @brief editor module > language pack of multimedia_link(Naver Map) component + **/ + + $ Lang-> map_width = "Ancho"; + $ Lang-> map_height = "Altura"; + + / / Expresiones + $ Lang-> about_address = "Ex) Jeongjadong Boondang, Yeoksam"; + $ Lang-> about_address_use = "Por favor, busque en la direccion primero y luego pulse el boton [Insertar]. Entonces, el mapa se anadiria al articulo."; + + / / Mensajes de error + $ Lang-> msg_not_exists_addr = "Direccion no existe"; + $ Lang-> msg_fail_to_socket_open = "No se ha podido conectar codigo postal servidor de busqueda"; + $ Lang-> msg_no_result = "Nada de lo encontrado"; + + $ Lang-> msg_no_apikey = "Naver Mapa api clave es necesario el uso de Naver Mapa. \ NPor favor, api clave de entrada despues de la seleccion del modulo> WISYWIG Editor> Abrir Mapa Naver Api "; + +?> diff --git a/modules/editor/components/poll_maker/lang/es.lang.php b/modules/editor/components/poll_maker/lang/es.lang.php new file mode 100644 index 000000000..6f1cbb246 --- /dev/null +++ b/modules/editor/components/poll_maker/lang/es.lang.php @@ -0,0 +1,19 @@ + + * @brief editor module > language pack of poll_maker component + **/ + + $ Lang-> poll_title = "Titulo"; + $ Lang-> poll_item = "Temas"; + $ Lang-> poll_stop_date = "Fecha de Expiracion"; + $ Lang-> poll_chk_count = "Numero de Comprobacion de Partida"; + + $ Lang-> cmd_add_poll = "Anadir Encuesta"; + $ Lang-> cmd_del_poll = "Borrar encuesta"; + $ Lang-> cmd_add_item = "Anadir Tema"; + + $ Lang-> msg_poll_cannot_modify = "No se puede modificar la encuesta. Por lo que debe suprimirse para crear una nueva encuesta"; + +?> \ No newline at end of file diff --git a/modules/editor/components/quotation/lang/es.lang.php b/modules/editor/components/quotation/lang/es.lang.php new file mode 100644 index 000000000..d591c4025 --- /dev/null +++ b/modules/editor/components/quotation/lang/es.lang.php @@ -0,0 +1,40 @@ + + * @brief editor module > language pack of quotation component + **/ + + $ Lang-> quotation_use_folder = "Usar Folding Funcion"; + $ Lang-> quotation_opener = "Nombre del boton Abrir"; + $ Lang-> quotation_closer = "Nombre del boton Cerrar"; + $ Lang-> quotation_padding = "Relleno"; + $ Lang-> quotation_margin = "Margen"; + $ Lang-> quotation_border_color = "Color del borde"; + $ Lang-> quotation_border_thickness = "Grosor de Fronteras"; + + $ Lang-> folder_text_bold = "Texto audacia"; + $ Lang-> about_folder_text_bold = "Hacer Link Text Bold"; + + $ Lang-> folder_text_color = "Color de los vinculos"; + $ Lang-> folder_text_color_blue = "Azul"; + $ Lang-> folder_text_color_red = "Rojo"; + $ Lang-> folder_text_color_yellow = "Amarillo"; + $ Lang-> folder_text_color_green = "Verde"; + + $ Lang-> quotation_border_style = "Estilo de Fronteras"; + $ Lang-> quotation_border_style_list = array ( + "Ninguno", + "Solidos", + "Salpicando", + "Solidos de la izquierda", + "Solidos de Derecho", + ); + + $ Lang-> quotation_bg_color = "Color de fondo"; + + $ Lang-> quotation_opener = "Nombre de Open Link"; + $ Lang-> quotation_opener = "Nombre del Link Cerrar"; + $ Lang-> quotation_cmd_opener = "Mas ..."; + $ Lang-> quotation_cmd_closer = "Cerrar"; +?> diff --git a/modules/editor/components/table_maker/lang/es.lang.php b/modules/editor/components/table_maker/lang/es.lang.php new file mode 100644 index 000000000..9f2454bfc --- /dev/null +++ b/modules/editor/components/table_maker/lang/es.lang.php @@ -0,0 +1,24 @@ + + * @brief editor module > language pack of table_maker component + **/ + + $ Lang-> table_attribute = "Cambiar el cuadro Attibution"; + $ Lang-> cell_attribute = "Cambio de celda Atribucion"; + + $ Lang-> table_width = "Ancho"; + $ Lang-> table_cols_count = "Numero de columnas"; + $ Lang-> table_rows_count = "Numero de filas"; + $ Lang-> table_cellspacing = "Cellspacing"; + $ Lang-> table_cellpadding = "Cellpadding"; + $ Lang-> table_border = "Thicknes Frontera"; + $ Lang-> table_inner_border = "Inner Grosor de linea"; + + $ Lang-> cell_width = "Ancho"; + $ Lang-> cell_height = "Altura"; + + $ Lang-> table_border_color = "Color del borde"; + $ Lang-> table_bg_color = "Color de fondo"; +?> \ No newline at end of file diff --git a/modules/editor/components/url_link/lang/es.lang.php b/modules/editor/components/url_link/lang/es.lang.php new file mode 100644 index 000000000..9089fa898 --- /dev/null +++ b/modules/editor/components/url_link/lang/es.lang.php @@ -0,0 +1,21 @@ + + * @brief editor module > language pack of url_link component + **/ + + $ Lang-> urllink_title = "Titulo"; + $ Lang-> urllink_url = "URL"; + $ Lang-> urllink_open_window = "Abrir Nueva Ventana"; + $ Lang-> urllink_bold = "Texto en negrita"; + + $ Lang-> urllink_color = "Color de los vinculos"; + $ Lang-> urllink_color_blue = "Azul"; + $ Lang-> urllink_color_red = "Rojo"; + $ Lang-> urllink_color_yellow = "Amarillo"; + $ Lang-> urllink_color_green = "Verde"; + + $ Lang-> about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; + $ Lang-> about_url_link_bold = "Hacer el link de texto en negrita"; +?> \ No newline at end of file From 8b44519f8b864a82a5a57f22bba9ad1cee858cfe Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 10:49:13 +0000 Subject: [PATCH 268/278] =?UTF-8?q?index=ED=8C=8C=EC=9D=BC=EC=9D=98=20?= =?UTF-8?q?=EB=A7=81=ED=81=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3711 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.php b/index.php index f0b1f9f29..2647f79aa 100644 --- a/index.php +++ b/index.php @@ -14,7 +14,7 @@ * zeroboard XE 는 오픈 프로젝트로 개발되는 오픈 소스입니다.\n * 자세한 내용은 아래 링크를 참조하세요. * - 공식홈페이지 : http://www.zeroboard.com - * - 오픈프로젝트 사이트 : http://spring.zeroboard.com + * - zbXE 포럼 : http://www.zeroboard.com/forum_main * - 이슈트래킹 : http://trac.zeroboard.com * - SVN Repository : http://svn.zeroboard.com/zeroboard_xe/trunk * - document : http://doc.zeroboard.com From a4313213b190307690162ca2d100ef8e933b48de Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 11:35:49 +0000 Subject: [PATCH 269/278] =?UTF-8?q?=EC=97=90=EC=8A=A4=ED=8C=8C=EB=83=90?= =?UTF-8?q?=EC=96=B4=20=EB=AC=B8=EB=B2=95=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3712 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../components/cc_license/lang/es.lang.php | 2 +- .../components/image_gallery/lang/es.lang.php | 36 ++++++++-------- .../components/image_link/lang/es.lang.php | 24 +++++------ .../multimedia_link/lang/es.lang.php | 10 ++--- .../components/naver_map/lang/es.lang.php | 20 ++++----- .../components/poll_maker/lang/es.lang.php | 18 ++++---- .../components/quotation/lang/es.lang.php | 42 +++++++++---------- .../components/table_maker/lang/es.lang.php | 28 ++++++------- .../components/url_link/lang/es.lang.php | 24 +++++------ 9 files changed, 102 insertions(+), 102 deletions(-) diff --git a/modules/editor/components/cc_license/lang/es.lang.php b/modules/editor/components/cc_license/lang/es.lang.php index 50271e1e7..21fe5a64b 100644 --- a/modules/editor/components/cc_license/lang/es.lang.php +++ b/modules/editor/components/cc_license/lang/es.lang.php @@ -6,7 +6,7 @@ **/ $lang->ccl_default_title = 'Creative Commons Corea derechos de autor'; - $lang->ccl_default_message = 'Este componente puede ser usado por % S% s% s% s "; + $lang->ccl_default_message = 'Este componente puede ser usado por % S% s% s% s '; $lang->ccl_title = 'Titulo'; $lang->ccl_use_mark = 'Utilice Mark'; diff --git a/modules/editor/components/image_gallery/lang/es.lang.php b/modules/editor/components/image_gallery/lang/es.lang.php index 502a7c67f..0c164fc38 100644 --- a/modules/editor/components/image_gallery/lang/es.lang.php +++ b/modules/editor/components/image_gallery/lang/es.lang.php @@ -5,23 +5,23 @@ * @brief editor module > language pack of image_gallery component. **/ - $ Lang-> image_gallery = "Haga Galeria de Imagenes"; - $ Lang-> width = "Ancho"; - $ Lang-> altura = "Altura"; - $ Lang-> image_list = "Lista de imagenes"; - $ Lang-> gallery_style = "Galeria de Estilo"; - $ Lang-> gallery_slide_style = "Estilo de diapositivas"; - $ Lang-> gallery_slide_align = "Alinear Estilo"; - $ Lang-> gallery_slide_center = "Centro"; - $ Lang-> gallery_slide_left = "Izquierda"; - $ Lang-> gallery_slide_right = "Derecho"; - $ Lang-> gallery_list_style = "Mostrar todos"; - $ Lang-> gallery_border_color = "Color del borde"; - $ Lang-> gallery_border_thickness = "Grosor de Fronteras"; - $ Lang-> gallery_bg_color = "Color de fondo"; - $ Lang-> about_image_list = "Seleccione archivo para anadir a la galeria de imagenes. Puede arrastrar despues de la seleccion o cambio + clic (para seleccionar ampliamente), ctrl + clic (para seleccionar individualmente)"; + $lang->image_gallery = "Haga Galeria de Imagenes"; + $lang->width = "Ancho"; + $lang->altura = "Altura"; + $lang->image_list = "Lista de imagenes"; + $lang->gallery_style = "Galeria de Estilo"; + $lang->gallery_slide_style = "Estilo de diapositivas"; + $lang->gallery_slide_align = "Alinear Estilo"; + $lang->gallery_slide_center = "Centro"; + $lang->gallery_slide_left = "Izquierda"; + $lang->gallery_slide_right = "Derecho"; + $lang->gallery_list_style = "Mostrar todos"; + $lang->gallery_border_color = "Color del borde"; + $lang->gallery_border_thickness = "Grosor de Fronteras"; + $lang->gallery_bg_color = "Color de fondo"; + $lang->about_image_list = "Seleccione archivo para anadir a la galeria de imagenes. Puede arrastrar despues de la seleccion o cambio + clic (para seleccionar ampliamente), ctrl + clic (para seleccionar individualmente)"; - $ Lang-> cmd_gallery_prev = "Imagen anterior"; - $ Lang-> cmd_gallery_next = "Imagen siguiente"; - $ Lang-> cmd_gallery_thumbnail = "Miniatura"; + $lang->cmd_gallery_prev = "Imagen anterior"; + $lang->cmd_gallery_next = "Imagen siguiente"; + $lang->cmd_gallery_thumbnail = "Miniatura"; ?> diff --git a/modules/editor/components/image_link/lang/es.lang.php b/modules/editor/components/image_link/lang/es.lang.php index ef513eef2..65b2606e2 100644 --- a/modules/editor/components/image_link/lang/es.lang.php +++ b/modules/editor/components/image_link/lang/es.lang.php @@ -5,17 +5,17 @@ * @brief editor Module > language pack of image_link component **/ - $ Lang-> image_url = "Ruta de la imagen"; - $ Lang-> image_alt = "Descripcion de Entrada"; - $ Lang-> image_scale = "Tamano de la Imagen"; - $ Lang-> image_align = "Alinear Estilo"; - $ Lang-> image_align_normal = "Occupy un parrafo"; - $ Lang-> image_align_left = "Izquierda del articulo"; - $ Lang-> image_align_middle = "Centro"; - $ Lang-> image_align_right = "Derecho de articulo"; - $ Lang-> image_border = "Grosor de Fronteras"; - $ Lang-> urllink_url = "URL"; + $lang->image_url = "Ruta de la imagen"; + $lang->image_alt = "Descripcion de Entrada"; + $lang->image_scale = "Tamano de la Imagen"; + $lang->image_align = "Alinear Estilo"; + $lang->image_align_normal = "Occupy un parrafo"; + $lang->image_align_left = "Izquierda del articulo"; + $lang->image_align_middle = "Centro"; + $lang->image_align_right = "Derecho de articulo"; + $lang->image_border = "Grosor de Fronteras"; + $lang->urllink_url = "URL"; - $ Lang-> about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; - $ Lang-> cmd_get_scale = "Obtener tamano de la imagen"; + $lang->about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; + $lang->cmd_get_scale = "Obtener tamano de la imagen"; ?> diff --git a/modules/editor/components/multimedia_link/lang/es.lang.php b/modules/editor/components/multimedia_link/lang/es.lang.php index b7ec5e508..6c0c53f28 100644 --- a/modules/editor/components/multimedia_link/lang/es.lang.php +++ b/modules/editor/components/multimedia_link/lang/es.lang.php @@ -5,10 +5,10 @@ * @brief editor module > language pack of multimedia_link component **/ - $ Lang-> multimedia_url = "Sendero Multimedia"; - $ Lang-> multimedia_caption = "Descripcion de Entrada"; - $ Lang-> multimedia_width = "Ancho"; - $ Lang-> multimedia_height = "Altura"; - $ Lang-> multimedia_auto_start = "Auto Start"; + $lang->multimedia_url = "Sendero Multimedia"; + $lang->multimedia_caption = "Descripcion de Entrada"; + $lang->multimedia_width = "Ancho"; + $lang->multimedia_height = "Altura"; + $lang->multimedia_auto_start = "Auto Start"; ?> diff --git a/modules/editor/components/naver_map/lang/es.lang.php b/modules/editor/components/naver_map/lang/es.lang.php index 813cda4bb..d7e3cf112 100644 --- a/modules/editor/components/naver_map/lang/es.lang.php +++ b/modules/editor/components/naver_map/lang/es.lang.php @@ -5,18 +5,18 @@ * @brief editor module > language pack of multimedia_link(Naver Map) component **/ - $ Lang-> map_width = "Ancho"; - $ Lang-> map_height = "Altura"; + $lang->map_width = "Ancho"; + $lang->map_height = "Altura"; - / / Expresiones - $ Lang-> about_address = "Ex) Jeongjadong Boondang, Yeoksam"; - $ Lang-> about_address_use = "Por favor, busque en la direccion primero y luego pulse el boton [Insertar]. Entonces, el mapa se anadiria al articulo."; + // Expresiones + $lang->about_address = "Ex) Jeongjadong Boondang, Yeoksam"; + $lang->about_address_use = "Por favor, busque en la direccion primero y luego pulse el boton [Insertar]. Entonces, el mapa se anadiria al articulo."; - / / Mensajes de error - $ Lang-> msg_not_exists_addr = "Direccion no existe"; - $ Lang-> msg_fail_to_socket_open = "No se ha podido conectar codigo postal servidor de busqueda"; - $ Lang-> msg_no_result = "Nada de lo encontrado"; + // Mensajes de error + $lang->msg_not_exists_addr = "Direccion no existe"; + $lang->msg_fail_to_socket_open = "No se ha podido conectar codigo postal servidor de busqueda"; + $lang->msg_no_result = "Nada de lo encontrado"; - $ Lang-> msg_no_apikey = "Naver Mapa api clave es necesario el uso de Naver Mapa. \ NPor favor, api clave de entrada despues de la seleccion del modulo> WISYWIG Editor> Abrir Mapa Naver Api "; + $lang->msg_no_apikey = "Naver Mapa api clave es necesario el uso de Naver Mapa. \nPor favor, api clave de entrada despues de la seleccion del modulo > WISYWIG Editor > Abrir Mapa Naver Api "; ?> diff --git a/modules/editor/components/poll_maker/lang/es.lang.php b/modules/editor/components/poll_maker/lang/es.lang.php index 6f1cbb246..72b817fef 100644 --- a/modules/editor/components/poll_maker/lang/es.lang.php +++ b/modules/editor/components/poll_maker/lang/es.lang.php @@ -5,15 +5,15 @@ * @brief editor module > language pack of poll_maker component **/ - $ Lang-> poll_title = "Titulo"; - $ Lang-> poll_item = "Temas"; - $ Lang-> poll_stop_date = "Fecha de Expiracion"; - $ Lang-> poll_chk_count = "Numero de Comprobacion de Partida"; + $lang->poll_title = "Titulo"; + $lang->poll_item = "Temas"; + $lang->poll_stop_date = "Fecha de Expiracion"; + $lang->poll_chk_count = "Numero de Comprobacion de Partida"; - $ Lang-> cmd_add_poll = "Anadir Encuesta"; - $ Lang-> cmd_del_poll = "Borrar encuesta"; - $ Lang-> cmd_add_item = "Anadir Tema"; + $lang->cmd_add_poll = "Anadir Encuesta"; + $lang->cmd_del_poll = "Borrar encuesta"; + $lang->cmd_add_item = "Anadir Tema"; - $ Lang-> msg_poll_cannot_modify = "No se puede modificar la encuesta. Por lo que debe suprimirse para crear una nueva encuesta"; + $lang->msg_poll_cannot_modify = "No se puede modificar la encuesta. Por lo que debe suprimirse para crear una nueva encuesta"; -?> \ No newline at end of file +?> diff --git a/modules/editor/components/quotation/lang/es.lang.php b/modules/editor/components/quotation/lang/es.lang.php index d591c4025..172deb217 100644 --- a/modules/editor/components/quotation/lang/es.lang.php +++ b/modules/editor/components/quotation/lang/es.lang.php @@ -5,25 +5,25 @@ * @brief editor module > language pack of quotation component **/ - $ Lang-> quotation_use_folder = "Usar Folding Funcion"; - $ Lang-> quotation_opener = "Nombre del boton Abrir"; - $ Lang-> quotation_closer = "Nombre del boton Cerrar"; - $ Lang-> quotation_padding = "Relleno"; - $ Lang-> quotation_margin = "Margen"; - $ Lang-> quotation_border_color = "Color del borde"; - $ Lang-> quotation_border_thickness = "Grosor de Fronteras"; + $lang->quotation_use_folder = "Usar Folding Funcion"; + $lang->quotation_opener = "Nombre del boton Abrir"; + $lang->quotation_closer = "Nombre del boton Cerrar"; + $lang->quotation_padding = "Relleno"; + $lang->quotation_margin = "Margen"; + $lang->quotation_border_color = "Color del borde"; + $lang->quotation_border_thickness = "Grosor de Fronteras"; - $ Lang-> folder_text_bold = "Texto audacia"; - $ Lang-> about_folder_text_bold = "Hacer Link Text Bold"; + $lang->folder_text_bold = "Texto audacia"; + $lang->about_folder_text_bold = "Hacer Link Text Bold"; - $ Lang-> folder_text_color = "Color de los vinculos"; - $ Lang-> folder_text_color_blue = "Azul"; - $ Lang-> folder_text_color_red = "Rojo"; - $ Lang-> folder_text_color_yellow = "Amarillo"; - $ Lang-> folder_text_color_green = "Verde"; + $lang->folder_text_color = "Color de los vinculos"; + $lang->folder_text_color_blue = "Azul"; + $lang->folder_text_color_red = "Rojo"; + $lang->folder_text_color_yellow = "Amarillo"; + $lang->folder_text_color_green = "Verde"; - $ Lang-> quotation_border_style = "Estilo de Fronteras"; - $ Lang-> quotation_border_style_list = array ( + $lang->quotation_border_style = "Estilo de Fronteras"; + $lang->quotation_border_style_list = array ( "Ninguno", "Solidos", "Salpicando", @@ -31,10 +31,10 @@ "Solidos de Derecho", ); - $ Lang-> quotation_bg_color = "Color de fondo"; + $lang->quotation_bg_color = "Color de fondo"; - $ Lang-> quotation_opener = "Nombre de Open Link"; - $ Lang-> quotation_opener = "Nombre del Link Cerrar"; - $ Lang-> quotation_cmd_opener = "Mas ..."; - $ Lang-> quotation_cmd_closer = "Cerrar"; + $lang->quotation_opener = "Nombre de Open Link"; + $lang->quotation_opener = "Nombre del Link Cerrar"; + $lang->quotation_cmd_opener = "Mas ..."; + $lang->quotation_cmd_closer = "Cerrar"; ?> diff --git a/modules/editor/components/table_maker/lang/es.lang.php b/modules/editor/components/table_maker/lang/es.lang.php index 9f2454bfc..c8657f632 100644 --- a/modules/editor/components/table_maker/lang/es.lang.php +++ b/modules/editor/components/table_maker/lang/es.lang.php @@ -5,20 +5,20 @@ * @brief editor module > language pack of table_maker component **/ - $ Lang-> table_attribute = "Cambiar el cuadro Attibution"; - $ Lang-> cell_attribute = "Cambio de celda Atribucion"; + $lang->table_attribute = "Cambiar el cuadro Attibution"; + $lang->cell_attribute = "Cambio de celda Atribucion"; - $ Lang-> table_width = "Ancho"; - $ Lang-> table_cols_count = "Numero de columnas"; - $ Lang-> table_rows_count = "Numero de filas"; - $ Lang-> table_cellspacing = "Cellspacing"; - $ Lang-> table_cellpadding = "Cellpadding"; - $ Lang-> table_border = "Thicknes Frontera"; - $ Lang-> table_inner_border = "Inner Grosor de linea"; + $lang->table_width = "Ancho"; + $lang->table_cols_count = "Numero de columnas"; + $lang->table_rows_count = "Numero de filas"; + $lang->table_cellspacing = "Cellspacing"; + $lang->table_cellpadding = "Cellpadding"; + $lang->table_border = "Thicknes Frontera"; + $lang->table_inner_border = "Inner Grosor de linea"; - $ Lang-> cell_width = "Ancho"; - $ Lang-> cell_height = "Altura"; + $lang->cell_width = "Ancho"; + $lang->cell_height = "Altura"; - $ Lang-> table_border_color = "Color del borde"; - $ Lang-> table_bg_color = "Color de fondo"; -?> \ No newline at end of file + $lang->table_border_color = "Color del borde"; + $lang->table_bg_color = "Color de fondo"; +?> diff --git a/modules/editor/components/url_link/lang/es.lang.php b/modules/editor/components/url_link/lang/es.lang.php index 9089fa898..24946b0e1 100644 --- a/modules/editor/components/url_link/lang/es.lang.php +++ b/modules/editor/components/url_link/lang/es.lang.php @@ -5,17 +5,17 @@ * @brief editor module > language pack of url_link component **/ - $ Lang-> urllink_title = "Titulo"; - $ Lang-> urllink_url = "URL"; - $ Lang-> urllink_open_window = "Abrir Nueva Ventana"; - $ Lang-> urllink_bold = "Texto en negrita"; + $lang->urllink_title = "Titulo"; + $lang->urllink_url = "URL"; + $lang->urllink_open_window = "Abrir Nueva Ventana"; + $lang->urllink_bold = "Texto en negrita"; - $ Lang-> urllink_color = "Color de los vinculos"; - $ Lang-> urllink_color_blue = "Azul"; - $ Lang-> urllink_color_red = "Rojo"; - $ Lang-> urllink_color_yellow = "Amarillo"; - $ Lang-> urllink_color_green = "Verde"; + $lang->urllink_color = "Color de los vinculos"; + $lang->urllink_color_blue = "Azul"; + $lang->urllink_color_red = "Rojo"; + $lang->urllink_color_yellow = "Amarillo"; + $lang->urllink_color_green = "Verde"; - $ Lang-> about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; - $ Lang-> about_url_link_bold = "Hacer el link de texto en negrita"; -?> \ No newline at end of file + $lang->about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; + $lang->about_url_link_bold = "Hacer el link de texto en negrita"; +?> From f0ca1a7e0428a1f359cfbebef363a6758a647844 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 11:37:18 +0000 Subject: [PATCH 270/278] =?UTF-8?q?xe=5Foffical=20=EA=B3=B5=EC=8B=9D=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=EC=9D=98=20=ED=86=B5?= =?UTF-8?q?=ED=95=A9=EA=B2=80=EC=83=89=20=EC=A2=85=EB=A5=98=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=EB=B6=80=EB=B6=84=EC=9D=84=20=EC=9B=B9=EC=A0=91?= =?UTF-8?q?=EA=B7=BC=EC=84=B1=EC=9D=84=20=EB=A7=9E=EC=B6=94=EA=B8=B0=20?= =?UTF-8?q?=EC=9C=84=ED=95=B4=EC=84=9C=20=EC=97=86=EC=95=A0=EA=B3=A0=20?= =?UTF-8?q?=EC=A0=9C=EB=AA=A9/=EB=82=B4=EC=9A=A9=20=EA=B2=80=EC=83=89?= =?UTF-8?q?=EC=9D=84=20=EA=B8=B0=EB=B3=B8=EC=9C=BC=EB=A1=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3713 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_official/layout.html | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/layouts/xe_official/layout.html b/layouts/xe_official/layout.html index d9fc2c2c9..518799dd0 100644 --- a/layouts/xe_official/layout.html +++ b/layouts/xe_official/layout.html @@ -51,31 +51,7 @@ - - - -
      -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    • - - -
    • -
    + From c3cb138ff7ce95aad20d92deb4605db3ff7adc67 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 11:46:20 +0000 Subject: [PATCH 271/278] =?UTF-8?q?#416=20=EB=8C=93=EA=B8=80=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=20=EB=B0=B0=EC=97=B4=EC=9D=B4=20=EC=95=84?= =?UTF-8?q?=EB=8B=8C=20=EA=B0=92=EC=97=90=20=EB=8C=80=ED=95=B4=20=EB=B0=B0?= =?UTF-8?q?=EC=97=B4=20=EC=B2=98=EB=A6=AC=EB=A5=BC=20=ED=95=98=EC=97=AC=20?= =?UTF-8?q?php=EC=98=A4=EB=A5=98=EA=B0=80=20=EC=83=9D=EA=B8=B0=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3714 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/forum/forum.class.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/widgets/forum/forum.class.php b/widgets/forum/forum.class.php index 88f8b2e68..a725cb8fd 100644 --- a/widgets/forum/forum.class.php +++ b/widgets/forum/forum.class.php @@ -50,14 +50,14 @@ $last_args = null; $last_args->module_srl = $module->module_srl; $output = executeQuery('widgets.forum.getLatestComments', $last_args); - if(is_array($output->data)) $last_comment = array_pop($output->data); + if($output->data && is_array($output->data)) $last_comment = array_pop($output->data); // 최근 등록된 글의 정보 $last_document = null; $last_args = null; $last_args->module_srl = $module->module_srl; $output = executeQuery('widgets.forum.getLatestDocuments', $last_args); - if(is_array($output->data)) $last_document = array_pop($output->data); + if($output->data && is_array($output->data)) $last_document = array_pop($output->data); $last_item = null; if($last_comment && $last_document) { @@ -78,8 +78,10 @@ $total_documents_args->module_srls = implode(',',$module_srls); $total_documents_output = executeQueryArray('widgets.forum.getTotalDocuments',$total_documents_args); - foreach($total_documents_output->data as $val) { - $modules[$val->module_srl]->document_count = $val->count; + if($total_documents_output->data) { + foreach($total_documents_output->data as $val) { + $modules[$val->module_srl]->document_count = $val->count; + } } // 각 모듈별 댓글 수를 구함 @@ -87,8 +89,10 @@ $total_comments_args->module_srls = implode(',',$module_srls); $total_comments_output = executeQueryArray('widgets.forum.getTotalComments',$total_comments_args); - foreach($total_comments_output->data as $val) { - $modules[$val->module_srl]->comment_count = $val->count; + if($total_comments_output->data) { + foreach($total_comments_output->data as $val) { + $modules[$val->module_srl]->comment_count = $val->count; + } } $widget_info->title = $title; From edf336668cffb2773eb344bc6fff0bd893dcefb6 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 13:28:29 +0000 Subject: [PATCH 272/278] =?UTF-8?q?1.=20DB=EC=9D=98=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=EB=AA=85=EA=B3=BC=20alias=EC=9D=98=20=EB=B0=B0?= =?UTF-8?q?=EC=97=B4=20=EC=9C=84=EC=B9=98=EB=A5=BC=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=ED=95=9C=20=EC=BF=BC=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=ED=95=98=EB=82=98=EC=9D=98=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=EC=9D=84=20=EC=97=AC=EB=9F=AC=EB=B2=88=20alias?= =?UTF-8?q?=ED=95=98=EC=97=AC=20=EC=82=AC=EC=9A=A9=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95.=20=202.=20?= =?UTF-8?q?=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=EC=9D=84=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20count(*)=20=EA=B5=AC=ED=95=A0=EB=95=8C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=A1=9C=20=EC=BA=90=EC=8B=B1=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=EC=9D=84=20=EB=91=90=EC=96=B4=EC=84=9C=20DB=EB=B6=80?= =?UTF-8?q?=ED=95=98=EB=A5=BC=20=EC=A4=84=EC=9D=B4=EA=B3=A0=20=EC=86=8D?= =?UTF-8?q?=EB=8F=84=20=EC=A6=9D=EA=B0=80=203.=20DB.class.php=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=98=20=EB=B3=80=EA=B2=BD=EC=8B=9C=EC=A0=90?= =?UTF-8?q?=EC=9D=84=20xml=20query=20cache=20file=EC=97=90=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EC=97=AC=20=EC=BD=94=EC=96=B4=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD=EC=8B=9C=20xml=20query=20cache?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=EC=9D=B4=20=EC=9E=AC=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=204.=20?= =?UTF-8?q?=EC=A0=84=EC=B2=B4=20=EC=BA=90=EC=8B=9C=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=9E=AC=EC=83=9D=EC=84=B1=EC=8B=9C=20=EC=B9=B4=EC=9A=B4?= =?UTF-8?q?=ED=84=B0=20=EC=BA=90=EC=8B=9C=20=ED=8C=8C=EC=9D=BC=20=EB=94=94?= =?UTF-8?q?=EB=A0=89=ED=86=A0=EB=A6=AC(./files/cache/db)=EC=9D=98=20?= =?UTF-8?q?=EB=82=B4=EC=9A=A9=EB=8F=84=20=EC=A7=80=EC=9A=B0=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3715 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 73 +++++++++++++++++++++++++++- classes/db/DBCubrid.class.php | 18 ++++--- classes/db/DBMysql.class.php | 18 ++++--- classes/db/DBMysql_innodb.class.php | 18 ++++--- classes/db/DBPostgresql.class.php | 18 ++++--- classes/db/DBSqlite2.class.php | 20 +++++--- classes/db/DBSqlite3_pdo.class.php | 20 +++++--- classes/xml/XmlQueryParser.class.php | 2 +- modules/module/module.class.php | 3 ++ 9 files changed, 143 insertions(+), 47 deletions(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 3f5c634b3..bfd6b4b71 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -15,6 +15,8 @@ class DB { + var $count_cache_path = './files/cache/db'; + var $cond_operation = array( ///< 조건문에서 조건을 등호로 표시하는 변수 'equal' => '=', 'more' => '>=', @@ -220,9 +222,11 @@ // 일단 cache 파일을 찾아본다 $cache_file = sprintf('%s%s.cache.php', $this->cache_file, $query_id); + if(file_exists($cache_file)) $cache_time = filemtime($cache_file); + else $cache_time = -1; - // 없으면 원본 쿼리 xml파일을 찾아서 파싱을 한다 - if(!file_exists($cache_file)||filemtime($cache_file)parse($query_id, $xml_file, $cache_file); @@ -250,12 +254,15 @@ // action값에 따라서 쿼리 생성으로 돌입 switch($output->action) { case 'insert' : + $this->resetCountCache($output->tables); $output = $this->_executeInsertAct($output); break; case 'update' : + $this->resetCountCache($output->tables); $output = $this->_executeUpdateAct($output); break; case 'delete' : + $this->resetCountCache($output->tables); $output = $this->_executeDeleteAct($output); break; case 'select' : @@ -413,7 +420,69 @@ } return $conditions; + } + /** + * @brief 카운터 캐시 데이터 얻어오기 + **/ + function getCountCache($tables, $condition) { + if(!$tables) return false; + if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); + + $condition = md5($condition); + + if(!is_array($tables)) $tables_str = $tables; + else $tables_str = implode('.',$tables); + + $cache_path = sprintf('%s/%s%s', $this->count_cache_path, $this->prefix, $tables_str); + if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); + + $cache_filename = sprintf('%s/%s.%s', $cache_path, $tables_str, $condition); + if(!file_exists($cache_filename)) return false; + + $cache_mtime = filemtime($cache_filename); + + if(!is_array($tables)) $tables = array($tables); + foreach($tables as $alias => $table) { + $table_filename = sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table) ; + if(file_exists($table_filename) && filemtime($table_filename) > $cache_mtime) return false; + } + + $count = (int)FileHandler::readFile($cache_filename); + return $count; + } + + /** + * @brief 카운터 캐시 데이터 저장 + **/ + function putCountCache($tables, $condition, $count = 0) { + if(!$tables) return false; + if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); + + $condition = md5($condition); + + if(!is_array($tables)) $tables_str = $tables; + else $tables_str = implode('.',$tables); + + $cache_path = sprintf('%s/%s%s', $this->count_cache_path, $this->prefix, $tables_str); + if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); + + $cache_filename = sprintf('%s/%s.%s', $cache_path, $tables_str, $condition); + + FileHandler::writeFile($cache_filename, $count); + } + + /** + * @brief 카운터 캐시 리셋 + **/ + function resetCountCache($tables) { + if(!$tables) return false; + if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); + + if(!is_array($tables)) $tables = array($tables); + foreach($tables as $alias => $table) FileHandler::writeFile( sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table), '' ); + + return true; } } ?> diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index d94c09631..f25f47613 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -415,7 +415,7 @@ function _executeInsertAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '"'.$this->prefix.$key.'"'; + $table_list[] = '"'.$this->prefix.$val.'"'; } // 컬럼 정리 @@ -456,7 +456,7 @@ function _executeUpdateAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = "\"".$this->prefix.$key."\" as ".$val; + $table_list[] = "\"".$this->prefix.$val."\" as ".$key; } // 컬럼 정리 @@ -503,7 +503,7 @@ function _executeDeleteAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '"'.$this->prefix.$key.'"'; + $table_list[] = '"'.$this->prefix.$val.'"'; } // 조건절 정리 @@ -524,7 +524,7 @@ // 테이블 정리 $table_list = array(); foreach($output->tables as $key => $val) { - $table_list[] = '"'.$this->prefix.$key.'" as '.$val; + $table_list[] = '"'.$this->prefix.$val.'" as '.$key; } if(!$output->columns) { @@ -668,9 +668,13 @@ // 전체 개수를 구함 $count_query = sprintf('select count(*) as "count" from %s %s', implode(',',$table_list), $condition); - $result = $this->_query($count_query); - $count_output = $this->_fetch($result); - $total_count = (int)$count_output->count; + $total_count = $this->getCountCache($output->tables, $condition); + if($total_count === false) { + $result = $this->_query($count_query); + $count_output = $this->_fetch($result); + $total_count = (int)$count_output->count; + $this->putCountCache($output->tables, $condition, $total_count); + } $list_count = $output->list_count['value']; if(!$list_count) $list_count = 20; diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index 15a357ed8..42df93bc1 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -396,7 +396,7 @@ function _executeInsertAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'`'; + $table_list[] = '`'.$this->prefix.$val.'`'; } // 컬럼 정리 @@ -422,7 +422,7 @@ function _executeUpdateAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'` as '.$val; + $table_list[] = '`'.$this->prefix.$val.'` as '.$key; } // 컬럼 정리 @@ -453,7 +453,7 @@ function _executeDeleteAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'`'; + $table_list[] = '`'.$this->prefix.$val.'`'; } // 조건절 정리 @@ -474,7 +474,7 @@ // 테이블 정리 $table_list = array(); foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'` as '.$val; + $table_list[] = '`'.$this->prefix.$val.'` as '.$key; } if(!$output->columns) { @@ -547,9 +547,13 @@ // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); - $result = $this->_query($count_query); - $count_output = $this->_fetch($result); - $total_count = (int)$count_output->count; + $total_count = $this->getCountCache($output->tables, $condition); + if($total_count === false) { + $result = $this->_query($count_query); + $count_output = $this->_fetch($result); + $total_count = (int)$count_output->count; + $this->putCountCache($output->tables, $condition, $total_count); + } $list_count = $output->list_count['value']; if(!$list_count) $list_count = 20; diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index f46016978..827c31f65 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -406,7 +406,7 @@ function _executeInsertAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'`'; + $table_list[] = '`'.$this->prefix.$val.'`'; } // 컬럼 정리 @@ -432,7 +432,7 @@ function _executeUpdateAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'` as '.$val; + $table_list[] = '`'.$this->prefix.$val.'` as '.$key; } // 컬럼 정리 @@ -463,7 +463,7 @@ function _executeDeleteAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'`'; + $table_list[] = '`'.$this->prefix.$val.'`'; } // 조건절 정리 @@ -484,7 +484,7 @@ // 테이블 정리 $table_list = array(); foreach($output->tables as $key => $val) { - $table_list[] = '`'.$this->prefix.$key.'` as '.$val; + $table_list[] = '`'.$this->prefix.$val.'` as '.$key; } if(!$output->columns) { @@ -557,9 +557,13 @@ // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); - $result = $this->_query($count_query); - $count_output = $this->_fetch($result); - $total_count = (int)$count_output->count; + $total_count = $this->getCountCache($output->tables, $condition); + if($total_count === false) { + $result = $this->_query($count_query); + $count_output = $this->_fetch($result); + $total_count = (int)$count_output->count; + $this->putCountCache($output->tables, $condition, $total_count); + } $list_count = $output->list_count['value']; if(!$list_count) $list_count = 20; diff --git a/classes/db/DBPostgresql.class.php b/classes/db/DBPostgresql.class.php index 7d8231102..4a8090091 100644 --- a/classes/db/DBPostgresql.class.php +++ b/classes/db/DBPostgresql.class.php @@ -400,7 +400,7 @@ function _executeInsertAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key; + $table_list[] = $this->prefix.$val; } // 컬럼 정리 @@ -426,7 +426,7 @@ function _executeUpdateAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key.' as '.$val; + $table_list[] = $this->prefix.$val.' as '.$key; } // 컬럼 정리 @@ -457,7 +457,7 @@ function _executeDeleteAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key; + $table_list[] = $this->prefix.$val; } // 조건절 정리 @@ -478,7 +478,7 @@ // 테이블 정리 $table_list = array(); foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key .' as '.$val; + $table_list[] = $this->prefix.$val.' as '.$key; } if(!$output->columns) { @@ -548,9 +548,13 @@ // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); - $result = $this->_query($count_query); - $count_output = $this->_fetch($result); - $total_count = (int)$count_output->count; + $total_count = $this->getCountCache($output->tables, $condition); + if($total_count === false) { + $result = $this->_query($count_query); + $count_output = $this->_fetch($result); + $total_count = (int)$count_output->count; + $this->putCountCache($output->tables, $condition, $total_count); + } $list_count = $output->list_count['value']; if(!$list_count) $list_count = 20; diff --git a/classes/db/DBSqlite2.class.php b/classes/db/DBSqlite2.class.php index d10a75672..a54b0b250 100644 --- a/classes/db/DBSqlite2.class.php +++ b/classes/db/DBSqlite2.class.php @@ -382,7 +382,7 @@ function _executeInsertAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key; + $table_list[] = $this->prefix.$val; } // 컬럼 정리 @@ -411,7 +411,7 @@ // 대상 테이블이 1개일 경우 if($table_count == 1) { // 테이블 정리 - list($target_table) = array_keys($output->tables); + list($target_table) = array_values($output->tables); $target_table = $this->prefix.$target_table; // 컬럼 정리 @@ -437,7 +437,7 @@ } elseif($table_count == 2) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[$val] = $this->prefix.$val; + $table_list[$val] = $this->prefix.$key; } list($source_table, $target_table) = array_values($table_list); @@ -474,7 +474,7 @@ function _executeDeleteAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key; + $table_list[] = $this->prefix.$val; } // 조건절 정리 @@ -495,7 +495,7 @@ // 테이블 정리 $table_list = array(); foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key.' as '.$val; + $table_list[] = $this->prefix.$val.' as '.$key; } if(!$output->columns) { @@ -568,9 +568,13 @@ // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); - $result = $this->_query($count_query); - $count_output = $this->_fetch($result); - $total_count = (int)$count_output->count; + $total_count = $this->getCountCache($output->tables, $condition); + if($total_count === false) { + $result = $this->_query($count_query); + $count_output = $this->_fetch($result); + $total_count = (int)$count_output->count; + $this->putCountCache($output->tables, $condition, $total_count); + } $list_count = $output->list_count['value']; if(!$list_count) $list_count = 20; diff --git a/classes/db/DBSqlite3_pdo.class.php b/classes/db/DBSqlite3_pdo.class.php index 9d001bbc4..3256e90e6 100644 --- a/classes/db/DBSqlite3_pdo.class.php +++ b/classes/db/DBSqlite3_pdo.class.php @@ -412,7 +412,7 @@ function _executeInsertAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key; + $table_list[] = $this->prefix.$val; } // 컬럼 정리 @@ -450,7 +450,7 @@ // 대상 테이블이 1개일 경우 if($table_count == 1) { // 테이블 정리 - list($target_table) = array_keys($output->tables); + list($target_table) = array_values($output->tables); $target_table = $this->prefix.$target_table; // 컬럼 정리 @@ -476,7 +476,7 @@ } elseif($table_count == 2) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[$val] = $this->prefix.$val; + $table_list[$val] = $this->prefix.$key; } list($source_table, $target_table) = array_values($table_list); @@ -514,7 +514,7 @@ function _executeDeleteAct($output) { // 테이블 정리 foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key; + $table_list[] = $this->prefix.$val; } // 조건절 정리 @@ -536,7 +536,7 @@ // 테이블 정리 $table_list = array(); foreach($output->tables as $key => $val) { - $table_list[] = $this->prefix.$key.' as '.$val; + $table_list[] = $this->prefix.$val.' as '.$key; } if(!$output->columns) { @@ -609,9 +609,13 @@ // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); - $this->_prepare($count_query); - $count_output = $this->_execute(); - $total_count = (int)$count_output->count; + $total_count = $this->getCountCache($output->tables, $condition); + if($total_count === false) { + $this->_prepare($count_query); + $count_output = $this->_execute(); + $total_count = (int)$count_output->count; + $this->putCountCache($output->tables, $condition, $total_count); + } $list_count = $output->list_count['value']; if(!$list_count) $list_count = 20; diff --git a/classes/xml/XmlQueryParser.class.php b/classes/xml/XmlQueryParser.class.php index 163ddcaad..e08dffab4 100644 --- a/classes/xml/XmlQueryParser.class.php +++ b/classes/xml/XmlQueryParser.class.php @@ -46,7 +46,7 @@ $alias = $val->attrs->alias; if(!$alias) $alias = $table_name; - $output->tables[$table_name] = $alias; + $output->tables[$alias] = $table_name; // 테이블을 찾아서 컬럼의 속성을 구함 $table_file = sprintf('./%s/%s/schemas/%s.xml', 'modules', $module, $table_name); diff --git a/modules/module/module.class.php b/modules/module/module.class.php index e751a3b6c..849c9e639 100644 --- a/modules/module/module.class.php +++ b/modules/module/module.class.php @@ -48,6 +48,9 @@ // 트리거 정보가 있는 파일 모두 삭제 FileHandler::removeFilesInDir("./files/cache/triggers"); + + // DB캐시 파일을 모두 삭제 + FileHandler::removeFilesInDir("./files/cache/db"); } } ?> From c604ab34a73668ab372a1bfd52c7b78f52e52486 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 14:22:15 +0000 Subject: [PATCH 273/278] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=8A=A4=ED=82=A8=EB=93=A4=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=99=95=EC=9E=A5=ED=8F=BC=EC=9D=84=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=8B=9C=20=EB=8B=A4=EC=A4=91=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=EA=B0=92=EC=9D=B4=20=EB=88=84=EC=A0=81=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3716 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/cozy_board/extra_var_value.html | 1 + modules/board/skins/xe_board/extra_var_value.html | 1 + modules/board/skins/xe_guestbook/extra_var_value.html | 1 + 3 files changed, 3 insertions(+) diff --git a/modules/board/skins/cozy_board/extra_var_value.html b/modules/board/skins/cozy_board/extra_var_value.html index fd889bab2..7a0ae8d24 100644 --- a/modules/board/skins/cozy_board/extra_var_value.html +++ b/modules/board/skins/cozy_board/extra_var_value.html @@ -5,6 +5,7 @@ {@ $val->value = $oDocument->getExtraValue($key)} +{@ $_tmp_value = array(); } diff --git a/modules/board/skins/xe_board/extra_var_value.html b/modules/board/skins/xe_board/extra_var_value.html index fd889bab2..7a0ae8d24 100644 --- a/modules/board/skins/xe_board/extra_var_value.html +++ b/modules/board/skins/xe_board/extra_var_value.html @@ -5,6 +5,7 @@ {@ $val->value = $oDocument->getExtraValue($key)} +{@ $_tmp_value = array(); } diff --git a/modules/board/skins/xe_guestbook/extra_var_value.html b/modules/board/skins/xe_guestbook/extra_var_value.html index fd889bab2..7a0ae8d24 100644 --- a/modules/board/skins/xe_guestbook/extra_var_value.html +++ b/modules/board/skins/xe_guestbook/extra_var_value.html @@ -5,6 +5,7 @@ {@ $val->value = $oDocument->getExtraValue($key)} +{@ $_tmp_value = array(); } From 2e9032a4ee0d749be05a7de05c9734c24f1ec636 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 15:14:57 +0000 Subject: [PATCH 274/278] =?UTF-8?q?=EC=B9=B4=EC=9A=B4=ED=84=B0=EC=99=80=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=AA=A8=EB=93=88=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EC=BB=A8=ED=85=90?= =?UTF-8?q?=EC=B8=A0=EB=A5=BC=20=EC=9E=AC=EC=B6=9C=EB=A0=A5=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3717 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/counter/counter.addon.php | 2 +- modules/file/file.controller.php | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/counter/counter.addon.php b/addons/counter/counter.addon.php index fc2bed4ae..6e7f2c75a 100644 --- a/addons/counter/counter.addon.php +++ b/addons/counter/counter.addon.php @@ -13,7 +13,7 @@ **/ // called_position가 before_module_init 이고 module이 admin이 아닐 경우 - if($called_position == 'before_module_init' && !$GLOBALS['__counter_addon_called__']) { + if($called_position == 'before_module_init' && !$GLOBALS['__counter_addon_called__'] && !in_array(Context::get('act'), array('procCounterExecute','procFileDelete'))) { if($this->module != 'admin') Context::addJsFile('./modules/counter/tpl/js/counter.js'); $GLOBALS['__counter_addon_called__'] = true; } diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 98bbd92ad..64705c89e 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -198,9 +198,7 @@ if(!$_SESSION['upload_info'][$editor_sequence]->enabled) exit(); $upload_target_srl = $_SESSION['upload_info'][$editor_sequence]->upload_target_srl; - if(!$upload_target_srl) return; - - if($file_srl) $output = $this->deleteFile($file_srl); + if($upload_target_srl && $file_srl) $output = $this->deleteFile($file_srl); // 첨부파일의 목록을 java script로 출력 $this->printUploadedFileList($editor_sequence, $upload_target_srl); @@ -531,6 +529,7 @@ Context::set('upload_status', $upload_status); // 업로드 현황을 브라우저로 알리기 위한 javascript 코드 출력하는 템플릿 호출 + Context::set('layout','none'); $this->setTemplatePath($this->module_path.'tpl'); $this->setTemplateFile('print_uploaded_file_list'); } From f95aca127e90f344c17f79378347f4119cd45f74 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 15:25:38 +0000 Subject: [PATCH 275/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3718 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/file.controller.php | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 64705c89e..3e13531c5 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -503,21 +503,23 @@ * @brief upload_target_srl을 키로 하는 첨부파일을 찾아서 java script 코드로 return **/ function printUploadedFileList($editor_sequence, $upload_target_srl) { - // file의 Model객체 생성 - $oFileModel = &getModel('file'); + if($upload_target_srl) { + // file의 Model객체 생성 + $oFileModel = &getModel('file'); - // 첨부파일 목록을 구함 - $tmp_file_list = $oFileModel->getFiles($upload_target_srl); - $file_count = count($tmp_file_list); + // 첨부파일 목록을 구함 + $tmp_file_list = $oFileModel->getFiles($upload_target_srl); + $file_count = count($tmp_file_list); - // 루프를 돌면서 $buff 변수에 java script 코드를 생성 - $buff = ""; - for($i=0;$i<$file_count;$i++) { - $file_info = $tmp_file_list[$i]; - if(!$file_info->file_srl) continue; - if($file_info->direct_download == 'Y') $file_info->uploaded_filename = sprintf('%s%s', Context::getRequestUri(), str_replace('./', '', $file_info->uploaded_filename)); - $file_list[] = $file_info; - $attached_size += $file_info->file_size; + // 루프를 돌면서 $buff 변수에 java script 코드를 생성 + $buff = ""; + for($i=0;$i<$file_count;$i++) { + $file_info = $tmp_file_list[$i]; + if(!$file_info->file_srl) continue; + if($file_info->direct_download == 'Y') $file_info->uploaded_filename = sprintf('%s%s', Context::getRequestUri(), str_replace('./', '', $file_info->uploaded_filename)); + $file_list[] = $file_info; + $attached_size += $file_info->file_size; + } } // 업로드 상태 표시 작성 From 6562b39554ca96f357715bb3e1cce5cb3b10c5a7 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 15:36:06 +0000 Subject: [PATCH 276/278] =?UTF-8?q?=EC=B2=A8=EB=B6=80=EB=90=9C=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EA=B2=80=EC=82=AC=EC=8B=9C=EC=97=90=20file=20model?= =?UTF-8?q?=EC=9D=98=20=EC=9C=84=EC=B9=98=20=EC=9E=98=EB=AA=BB=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20php=20=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=EB=A6=BD=ED=8A=B8=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3719 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/file.controller.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 3e13531c5..516b0fc0c 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -503,9 +503,10 @@ * @brief upload_target_srl을 키로 하는 첨부파일을 찾아서 java script 코드로 return **/ function printUploadedFileList($editor_sequence, $upload_target_srl) { + $oFileModel = &getModel('file'); + if($upload_target_srl) { // file의 Model객체 생성 - $oFileModel = &getModel('file'); // 첨부파일 목록을 구함 $tmp_file_list = $oFileModel->getFiles($upload_target_srl); From 434395cf4b6599f1a1615792deddb5a4501bb065 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 15:54:18 +0000 Subject: [PATCH 277/278] =?UTF-8?q?=EC=84=A4=EC=B9=98=EC=8B=9C=20db=20port?= =?UTF-8?q?=EA=B0=80=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3720 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBMysql.class.php | 3 +++ classes/db/DBMysql_innodb.class.php | 3 +++ classes/db/DBPostgresql.class.php | 1 + modules/install/tpl/filter/cubrid.xml | 2 +- modules/install/tpl/filter/mysql.xml | 2 ++ modules/install/tpl/filter/postgresql.xml | 2 ++ 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index 42df93bc1..6c6573486 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -57,6 +57,7 @@ function _setDBInfo() { $db_info = Context::getDBInfo(); $this->hostname = $db_info->db_hostname; + $this->port = $db_info->db_port; $this->userid = $db_info->db_userid; $this->password = $db_info->db_password; $this->database = $db_info->db_database; @@ -71,6 +72,8 @@ // db 정보가 없으면 무시 if(!$this->hostname || !$this->userid || !$this->password || !$this->database) return; + if(strpos($this->hostname, ':')===false && $this->port) $this->hostname .= ':'.$this->port; + // 접속시도 $this->fd = @mysql_connect($this->hostname, $this->userid, $this->password); if(mysql_error()) { diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index 827c31f65..a3a982eed 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -57,6 +57,7 @@ function _setDBInfo() { $db_info = Context::getDBInfo(); $this->hostname = $db_info->db_hostname; + $this->port = $db_info->db_port; $this->userid = $db_info->db_userid; $this->password = $db_info->db_password; $this->database = $db_info->db_database; @@ -71,6 +72,8 @@ // db 정보가 없으면 무시 if(!$this->hostname || !$this->userid || !$this->password || !$this->database) return; + if(strpos($this->hostname, ':')===false && $this->port) $this->hostname .= ':'.$this->port; + // 접속시도 $this->fd = @mysql_connect($this->hostname, $this->userid, $this->password); if(mysql_error()) { diff --git a/classes/db/DBPostgresql.class.php b/classes/db/DBPostgresql.class.php index 4a8090091..6b9f8e062 100644 --- a/classes/db/DBPostgresql.class.php +++ b/classes/db/DBPostgresql.class.php @@ -57,6 +57,7 @@ function _setDBInfo() { $db_info = Context::getDBInfo(); $this->hostname = $db_info->db_hostname; + $this->port = $db_info->db_port; $this->userid = $db_info->db_userid; $this->password = $db_info->db_password; $this->database = $db_info->db_database; diff --git a/modules/install/tpl/filter/cubrid.xml b/modules/install/tpl/filter/cubrid.xml index 5046e1402..68bd9a7f3 100644 --- a/modules/install/tpl/filter/cubrid.xml +++ b/modules/install/tpl/filter/cubrid.xml @@ -2,7 +2,7 @@ - + diff --git a/modules/install/tpl/filter/mysql.xml b/modules/install/tpl/filter/mysql.xml index 8be2cdc59..68bd9a7f3 100644 --- a/modules/install/tpl/filter/mysql.xml +++ b/modules/install/tpl/filter/mysql.xml @@ -2,6 +2,7 @@ + @@ -16,6 +17,7 @@ + diff --git a/modules/install/tpl/filter/postgresql.xml b/modules/install/tpl/filter/postgresql.xml index 51868b662..b768e65e0 100644 --- a/modules/install/tpl/filter/postgresql.xml +++ b/modules/install/tpl/filter/postgresql.xml @@ -2,6 +2,7 @@ + @@ -15,6 +16,7 @@ + From c6c3085b1553a52763057899f2ed19274cf612a8 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 19 Feb 2008 16:28:53 +0000 Subject: [PATCH 278/278] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3721 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/func.inc.php b/config/func.inc.php index f4a4026e0..3a455a101 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -467,7 +467,7 @@ * 현재 요청받은 스크립트 경로를 return **/ function getScriptPath() { - if(function_exists('php_sapi_name') && php_sapi_name()=='cgi') return preg_replace('/index.php/i','',$_SERVER['PATH_INFO']); + //if(function_exists('php_sapi_name') && php_sapi_name()=='cgi') return preg_replace('/index.php/i','',$_SERVER['PATH_INFO']); return preg_replace('/index.php/i','',$_SERVER['SCRIPT_NAME']); }
    - @@ -43,7 +42,6 @@ {$lang->user_name} {$lang->nick_name} {$lang->regdate}{$lang->cmd_send_message}
    {$val->user_name}
    {$val->nick_name}
    {zdate($val->regdate,"Y-m-d")}{$lang->cmd_send_message}