From d691339524c45c0f5d483d38ebeffc46d768ea1a Mon Sep 17 00:00:00 2001 From: duvent Date: Mon, 24 Mar 2008 11:08:28 +0000 Subject: [PATCH 01/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4042 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/lang/fr.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/comment/lang/fr.lang.php b/modules/comment/lang/fr.lang.php index 8693b9dd8..7b80aa6f2 100644 --- a/modules/comment/lang/fr.lang.php +++ b/modules/comment/lang/fr.lang.php @@ -11,7 +11,7 @@ $lang->cmd_toggle_checked_comment = 'Renverser les choisis'; $lang->cmd_delete_checked_comment = 'Supprimer les choisis'; - $lang->comment_count = 'Commentaires'; + $lang->comment_count = 'Nombres de Commentaires'; $lang->about_comment_count = 'Quand il y a plus de commentaires, ils seront bougés sur le liste.'; $lang->msg_cart_is_null = 'Choisissez un article à supprimer, SVP.'; From c00e3c8fd71fbdaf48dafb029a340f6e53a2c29a Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 25 Mar 2008 04:33:13 +0000 Subject: [PATCH 02/49] xe_blog layout skin update (to 2step) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4043 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_blog/css/layout.css | 65 +++++----- layouts/xe_blog/css/layout_blue.css | 9 +- layouts/xe_blog/css/layout_gray.css | 9 +- layouts/xe_blog/css/layout_green.css | 9 +- layouts/xe_blog/css/layout_orange.css | 9 +- layouts/xe_blog/css/layout_violet.css | 9 +- layouts/xe_blog/images/powerdByZeroboard.gif | Bin 132 -> 181 bytes layouts/xe_blog/layout.html | 111 ++++++++++-------- .../category/skins/default/css/category.css | 3 +- widgets/category/skins/default/images/top.gif | Bin 572 -> 87 bytes widgets/newest_comment/conf/info.xml | 15 +++ .../newest_comment/newest_comment.class.php | 5 + .../skins/blog_newest_comment/list.html | 2 +- 13 files changed, 125 insertions(+), 121 deletions(-) diff --git a/layouts/xe_blog/css/layout.css b/layouts/xe_blog/css/layout.css index e806ebb46..35aaa4cff 100644 --- a/layouts/xe_blog/css/layout.css +++ b/layouts/xe_blog/css/layout.css @@ -4,67 +4,60 @@ NHN UIT Lab. WebStandardization Team (http://html.nhndesign.com/) Kim, Ji Min 070809-20070903 */ -#blog {width:780px; margin:0 auto;} +#blog {margin:0 auto; width:970px;} -#content { width:100%; position:relative;} +#content { width:100%; } /* Global Navigation */ -.blogNavigation {width:780px; padding-bottom:3em; overflow:hidden;} -ul.blogMenu {margin:0; padding:0; list-style:none; float:left; margin:1.2em 0 0 .9em; overflow:hidden;} +.blogNavigation {overflow:hidden; width:780px;} + +ul.blogGlobal {padding:0; margin:0; list-style:none; overflow:hidden; float:right; margin:10px 0 10px 0; } +ul.blogGlobal li {float:left; margin-left:-1px; padding:0 .6em;} +ul.blogGlobal li a {text-decoration:none; font-size:.9em; letter-spacing:-1px;} + +ul.blogMenu {padding:0; list-style:none; overflow:hidden; float:right; margin:0 0 10px 0; } ul.blogMenu li {float:left; margin-left:-1px; padding:0 .8em;} ul.blogMenu li a {text-decoration:none; font:bold .9em tahoma;} ul.blogMenu li a.on {} -ul.blogGlobal {margin:0; padding:0; list-style:none; float:right; margin:1em .6em 0 0; overflow:hidden;} -ul.blogGlobal li {float:left; margin-left:-1px; padding:0 .6em;} -ul.blogGlobal li a {text-decoration:none; font-size:.9em; letter-spacing:-1px;} +/* Content Box */ +.contentBox { float:left; width:780px; } +.contentBox .centerBg {padding-top:1em;} +.contentBox .topBg {width:100%; height:10px; font-size:0;} +.contentBox .bottomBg {width:100%; height:10px; font-size:0;} +.contentArea {width:740px; margin:0 auto;} + +.blogWidgetAreaBox { width:190px; padding:0; margin:0; float:left; overflow:hidden;} /* Profile */ -.blogProfile {float:left; width:170px; margin:0 0 0 19px; display:inline;} +.blogProfile {width:170px; margin:0 0 10px 10px; } .blogProfile h1 {padding:0; margin:10px 0 8px 2px; font-size:1em; line-height:1.2em;} .blogProfile ul.profileMenu {float:left; margin-left:-4px; overflow:hidden;} .blogProfile ul.profileMenu li {float:left; margin-left:-1px; padding:0 .7em;} .blogProfile ul.profileMenu li a {text-decoration:none; font-size:.9em;} /* title bg box */ -.blogTitleBox {position:relative; width:170px; height:25px; margin-bottom:1.3em;} +.blogTitleBox {width:170px; height:25px; margin:0 0 5px 10px;} +.blogTitleBox h2 {margin:0; padding:5px 0 0 12px; font:bold .9em tahoma;} +.blogTitleBox h2 a { text-decoration:none; } /* category */ -.blogCategory {float:left; width:170px; margin:0 0 0 21px;} -.blogCategory h2 {margin:0; padding:5px 0 0 12px; font:bold .9em tahoma;} /*070917 �섏젙*/ -.blogCategory h2 a { text-decoration:none; } -.blogCategory .categoryToggle {position:absolute; right:.3em; top:.5em;} -.blogCategory .categoryToggle img {display:block; padding:5px; cursor:pointer;} -.blogCategory ul.categoryList { list-style:none; margin:0; padding:0; } -.blogCategory ul.categoryList li {height:1.7em; padding-left:2.1em;} -.blogCategory ul.categoryList li a {text-decoration:none; font-size:1em;} -.blogCategory ul.categoryList li.on a {font-weight:bold; } -.blogCategory ul.categoryList li span.documentCount { font-size:.9em; margin-left:.3em;} -/* Recent Comments */ -.widgetBox {float:left; width:170px; margin:0 0 0 21px;} +/* widget Box */ +.widgetBox {width:170px; margin:0 0 10px 10px;} /* search box */ -.blogSearch { margin-top:2em; } +.blogSearch { margin:0 auto; width:170px; } .blogSearch fieldset {padding:0; margin:0; border:none;} .blogSearch legend {display:none;} .blogSearch input {float:left; vertical-align:middle;} .blogSearch img {float:left; margin-left:2px; vertical-align:middle;} -/* Content Box */ -.contentBox {clear:both; position:relative; width:780px; padding:.8em 0 3em 0;} -.contentBox .centerBg {padding-top:1em;} -.contentBox .topBg {width:100%; height:10px; font-size:0;} -.contentBox .bottomBg {width:100%; height:10px; font-size:0;} -.contentArea {width:740px; margin:0 auto;} - -.zbXE { text-align:center; margin:5px 0 10px 0;} - /* Widget */ -.blog_widget_ h2 {margin:0; padding:5px 0 0 12px; font:bold .9em tahoma;} -.blog_widget_ .items {list-style:none; padding:0; margin:0; margin-top:1.3em; overflow:hidden; width:165px;} -.blog_widget_ .items li { white-space:nowrap; overflow:hidden; height:1.7em; padding-left:1.8em;} -.blog_widget_ .items li a { text-decoration:none; font-size:1em; overflow:hidden; white-space:nowrap;} +.blog_widget_ h2 {margin:0 0 15px 0; padding:5px 0 0 12px; font:bold .9em tahoma;} +.blog_widget_ .items {list-style:none; padding:0; margin:0; margin-top:10px; overflow-x:hidden; width:170px;} +.blog_widget_ .items li { padding:0 10px 0 14px; margin-bottom:5px; } +.blog_widget_ .items li a { text-decoration:none; font-size:1em; } /* Calender */ .widget_calendar {position:relative; float:left; width:170px; } @@ -91,3 +84,5 @@ ul.blogGlobal li a {text-decoration:none; font-size:.9em; letter-spacing:-1px;} .widget_calendar td.posted a {text-decoration:underline;} .widget_calendar td.posted {text-decoration:underline;} + +.zbXE { width:960px; text-align:center; margin:20px auto 20px auto;} diff --git a/layouts/xe_blog/css/layout_blue.css b/layouts/xe_blog/css/layout_blue.css index ea5b87014..f5f48d864 100644 --- a/layouts/xe_blog/css/layout_blue.css +++ b/layouts/xe_blog/css/layout_blue.css @@ -27,12 +27,7 @@ ul.blogGlobal li a {color:#3f4040;} /* title bg box */ .blogTitleBox {background:url(../images/blue/box_blog_title.gif) no-repeat left top;} - -/* category */ -.blogCategory h2 {color:#00afcf;} -.blogCategory h2 a {color:#00afcf;} -.blogCategory ul.categoryList li {background:url(../images/blue/ico_category.gif) no-repeat .8em 0;} -.blogCategory ul.categoryList li a {color:#3f4040;} +.blogTitleBox h2 {color:#00afcf;} /* Content Box */ .contentBox .centerBg {background:url(../images/blue/box_blog_bg.gif) repeat-y left top;} @@ -42,7 +37,7 @@ ul.blogGlobal li a {color:#3f4040;} /* Widget */ .blog_widget_ {background:url(../images/blue/box_blog_title.gif) no-repeat left top;} .blog_widget_ h2 {color:#00afcf;} -.blog_widget_ .items li {background:url(../images/blue/bullet_3x3_1.gif) no-repeat 1em .35em;} +.blog_widget_ .items li {background:url(../images/blue/bullet_3x3_1.gif) no-repeat 5px 5px; } .blog_widget_ .items li a {color:#3f4040;} /* Calender */ diff --git a/layouts/xe_blog/css/layout_gray.css b/layouts/xe_blog/css/layout_gray.css index d5c0d6dae..da5a0ecd3 100644 --- a/layouts/xe_blog/css/layout_gray.css +++ b/layouts/xe_blog/css/layout_gray.css @@ -27,12 +27,7 @@ ul.blogGlobal li a {color:#666666;} /* title bg box */ .blogTitleBox {background:url(../images/gray/box_blog_title.gif) no-repeat left top;} - -/* category */ -.blogCategory h2 {color:#181818;} -.blogCategory h2 a {color:#181818;} -.blogCategory ul.categoryList li {background:url(../images/gray/ico_category.gif) no-repeat .8em 0;} -.blogCategory ul.categoryList li a {color:#3f4040;} +.blogTitleBox h2 {color:#181818;} /* Content Box */ .contentBox .centerBg {background:url(../images/gray/box_blog_bg.gif) repeat-y left top;} @@ -42,7 +37,7 @@ ul.blogGlobal li a {color:#666666;} /* Widget */ .blog_widget_ {background:url(../images/gray/box_blog_title.gif) no-repeat left top;} .blog_widget_ h2 {color:#181818;} -.blog_widget_ .items li {background:url(../images/gray/bullet_3x3_1.gif) no-repeat 1em .35em;} +.blog_widget_ .items li {background:url(../images/gray/bullet_3x3_1.gif) no-repeat 5px 5px; } .blog_widget_ .items li a {color:#3f4040;} /* Calender */ diff --git a/layouts/xe_blog/css/layout_green.css b/layouts/xe_blog/css/layout_green.css index 8e285e29c..d901589fa 100644 --- a/layouts/xe_blog/css/layout_green.css +++ b/layouts/xe_blog/css/layout_green.css @@ -27,12 +27,7 @@ ul.blogGlobal li a {color:#3f4040;} /* title bg box */ .blogTitleBox {background:url(../images/green/box_blog_title.gif) no-repeat left top;} - -/* category */ -.blogCategory h2 {color:#31c100;} -.blogCategory h2 a {color:#31c100;} -.blogCategory ul.categoryList li {background:url(../images/green/ico_category.gif) no-repeat .8em 0;} -.blogCategory ul.categoryList li a {color:#3f4040;} +.blogTitleBox h2 {color:#31c100;} /* Content Box */ .contentBox .centerBg {background:url(../images/green/box_blog_bg.gif) repeat-y left top;} @@ -42,7 +37,7 @@ ul.blogGlobal li a {color:#3f4040;} /* Widget */ .blog_widget_ {background:url(../images/green/box_blog_title.gif) no-repeat left top;} .blog_widget_ h2 {color:#31c100;} -.blog_widget_ .items li {background:url(../images/green/bullet_3x3_1.gif) no-repeat 1em .35em;} +.blog_widget_ .items li {background:url(../images/green/bullet_3x3_1.gif) no-repeat 5px 5px; } .blog_widget_ .items li a {color:#3f4040;} /* Calender */ diff --git a/layouts/xe_blog/css/layout_orange.css b/layouts/xe_blog/css/layout_orange.css index 0e0822297..e9b379b51 100644 --- a/layouts/xe_blog/css/layout_orange.css +++ b/layouts/xe_blog/css/layout_orange.css @@ -27,12 +27,7 @@ ul.blogGlobal li a {color:#999999;} /* title bg box */ .blogTitleBox {background:url(../images/orange/box_blog_title.gif) no-repeat left top;} - -/* category */ -.blogCategory h2 {color:#ff6f4a;} -.blogCategory h2 a {color:#ff6f4a;} -.blogCategory ul.categoryList li {background:url(../images/orange/ico_category.gif) no-repeat .8em 0;} -.blogCategory ul.categoryList li a {color:#999999;} +.blogTitleBox h2 {color:#ff6f4a;} /* Content Box */ .contentBox .centerBg {background:url(../images/orange/box_blog_bg.gif) repeat-y left top;} @@ -42,7 +37,7 @@ ul.blogGlobal li a {color:#999999;} /* Widget */ .blog_widget_ {background:url(../images/orange/box_blog_title.gif) no-repeat left top;} .blog_widget_ h2 {color:#ff6f4a;} -.blog_widget_ .items li {background:url(../images/orange/bullet_3x3_1.gif) no-repeat 1em .35em;} +.blog_widget_ .items li {background:url(../images/orange/bullet_3x3_1.gif) no-repeat 5px 5px;} .blog_widget_ .items li a {color:#999999;} /* Calender */ diff --git a/layouts/xe_blog/css/layout_violet.css b/layouts/xe_blog/css/layout_violet.css index 1c73567ea..9acef015d 100644 --- a/layouts/xe_blog/css/layout_violet.css +++ b/layouts/xe_blog/css/layout_violet.css @@ -27,12 +27,7 @@ ul.blogGlobal li a {color:#3f4040;} /* title bg box */ .blogTitleBox {background:url(../images/violet/box_blog_title.gif) no-repeat left top;} - -/* category */ -.blogCategory h2 {color:#9285bc;} -.blogCategory h2 a {color:#9285bc;} -.blogCategory ul.categoryList li {background:url(../images/violet/ico_category.gif) no-repeat .8em 0;} -.blogCategory ul.categoryList li a {color:#3f4040;} +.blogTitleBox h2 {color:#9285bc;} /* Content Box */ .contentBox .centerBg {background:url(../images/violet/box_blog_bg.gif) repeat-y left top;} @@ -42,7 +37,7 @@ ul.blogGlobal li a {color:#3f4040;} /* Widget */ .blog_widget_ {background:url(../images/violet/box_blog_title.gif) no-repeat left top;} .blog_widget_ h2 {color:#9285bc;} -.blog_widget_ .items li {background:url(../images/violet/bullet_3x3_1.gif) no-repeat 1em .35em;} +.blog_widget_ .items li {background:url(../images/violet/bullet_3x3_1.gif) no-repeat 5px 5px; } .blog_widget_ .items li a {color:#3f4040;} /* Calender */ diff --git a/layouts/xe_blog/images/powerdByZeroboard.gif b/layouts/xe_blog/images/powerdByZeroboard.gif index 8be15c8f4878199b090cc90b0a14d10e6ebe05c6..a1635dd1c34f9f03a9afe4439a03f4d535dd842b 100644 GIT binary patch literal 181 zcmZ?wbhEHb%wb?>n8?Hs66XCM3>X*~6o0ZXGB7YP=m6OaAbAF+wjSN(r|&Y|?fi6g zLdZU=hWdtij1%sKFIuuH$uqi7aMq>e73(Wz-`|)k_1Epllq3o6X=%$8pR({?U9jNQ z6|cR1)gG$hEXHTc6u2bX&ds}e&Gg5OFKXQ``kVEtRSR$0eOv$Z`4mU7)aD~fM&A~% hxX!j>@#g1Z93~%I4le9$ILWYa<4H!TRe=l))&MZePig=F literal 132 zcmZ?wbhEHb%wk|=XkcLY|NnnTn786j76uT|0TCb>2BzqqM)rxh--CKQHeG#{Jp1y} zoLNk9Nhd9}+F~PDrRu-#ODJ`Y+xPm<{h2dm7CxGgDtR?eqkEgDVxdsD+H2{}SH9G(R diff --git a/layouts/xe_blog/layout.html b/layouts/xe_blog/layout.html index 71659ea5d..b26780b0d 100644 --- a/layouts/xe_blog/layout.html +++ b/layouts/xe_blog/layout.html @@ -53,67 +53,80 @@ +
-
- - my profile image - - profile - - -

{$layout_info->profile}

- -
- - -
-
-

category

-
-
    - -
  • depth)-->style="margin-left:{$val->depth*8}px;" class="on">{$val->title}({$val->document_count})
  • - -
-
- -
- -
- - - -
- -
- - -
- - -
-
-
- {$lang->cmd_search} - - - - {$lang->cmd_search} -
-
-
-
+
{$content}
+ + +
+ + +
+ + my profile image + + profile + + +

{$layout_info->profile}

+ + + +
+
+
+ {$lang->cmd_search} + + + + {$lang->cmd_search} +
+
+
+
+ + +
+

category

+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
powered by zbXE
diff --git a/widgets/category/skins/default/css/category.css b/widgets/category/skins/default/css/category.css index 9e7fb9b33..2884cfa39 100644 --- a/widgets/category/skins/default/css/category.css +++ b/widgets/category/skins/default/css/category.css @@ -2,7 +2,7 @@ .categoryWidget .top { background:url("../images/top.gif") no-repeat left -1px; - padding-left:14px; + padding-left:19px; height:18px; } @@ -29,6 +29,7 @@ .categoryWidget .item { margin-left:5px; + height:18px; } diff --git a/widgets/category/skins/default/images/top.gif b/widgets/category/skins/default/images/top.gif index 28e581736eea1117177e647a8ce0348900cb46d3..5239bbfff1151c153e4e8c358980f221d687dd00 100644 GIT binary patch literal 87 zcmZ?wbhEHb6k-r!n8?h~(9oc}a@!9T-v9sqEB<6*WME)s&|v@qkURsE#+?3@r{Df> p5h*y;Fk5uT`rML8BTYHYnaWIjNgr|-nVr4J`SjO1WE(?}n?k@4EZo@w*RSUp#+5fBIhw zrT5pb7A;x%-a_qFe&TO^$$t;;{Z|t>|LDowBPafgGhPXCJ&_##bndioCk}lm%b0lN z)E`G9y_MVk^DrE{cYoED8-G52s5pH3|Ao_sZr=Iv>0|P?eRiAo{cZ$lV2h|d{%7wC&_g1{-gf_4F7}}_TReuSBANK&!PYS z|G!wd=&vO6t4W>DruLYu-tm9$wlBZ`?0fL!zc9mpK?alcdsbBzxoq71(^%eV{myf9 zrsZ$n|L4o+pS!mFXJz>F>7&KkT|h$^hy#j0Sr{1@iWqc2%0Y3$z&^8~sHwT7wXMCQ zv#VLeFi%I)%UiJ{+A&5}+rviRB(z;XQzkYf%r0L}*Im5LHHe!rMZrKXUC`I9%_5x9 zlPl5LQbLVEv@L)sGOoo%DIufHh)+sOwJ6Ca%8w vfnPq$fwwK!O4vM&gOgRv&%l92{Zxm%|ArpNjVl%|V&qd+YMP-Tz+epkT2c!{ diff --git a/widgets/newest_comment/conf/info.xml b/widgets/newest_comment/conf/info.xml index d73d69d79..c1ced21e4 100644 --- a/widgets/newest_comment/conf/info.xml +++ b/widgets/newest_comment/conf/info.xml @@ -51,6 +51,21 @@ Usted puede definir el número de la lista(predefinido: 5). Вы можете выбрать число списка. (стандарт: 5) + + 제목 글자수 + タイトルの文字数 + 标题字数 + 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 или пустое значение не будут ограничивать длину) + 대상 모듈 模块对象 diff --git a/widgets/newest_comment/newest_comment.class.php b/widgets/newest_comment/newest_comment.class.php index 05cea3020..44289f83d 100644 --- a/widgets/newest_comment/newest_comment.class.php +++ b/widgets/newest_comment/newest_comment.class.php @@ -28,6 +28,10 @@ $obj->sort_index = $order_target; $obj->list_count = $list_count; + // 제목 길이 자르기 + $subject_cut_size = $args->subject_cut_size; + if(!$subject_cut_size) $subject_cut_size = 0; + // comment 모듈의 model 객체를 받아서 getCommentList() method를 실행 $oCommentModel = &getModel('comment'); $output = $oCommentModel->getNewestCommentList($obj); @@ -37,6 +41,7 @@ $widget_info->title = $title; $widget_info->comment_list = $output; + $widget_info->subject_cut_size = $subject_cut_size; Context::set('widget_info', $widget_info); diff --git a/widgets/newest_comment/skins/blog_newest_comment/list.html b/widgets/newest_comment/skins/blog_newest_comment/list.html index 616535116..c1a82a00e 100644 --- a/widgets/newest_comment/skins/blog_newest_comment/list.html +++ b/widgets/newest_comment/skins/blog_newest_comment/list.html @@ -24,7 +24,7 @@ From 0655c077852b545bacde9e76f4827cf268b6a517 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 25 Mar 2008 04:40:50 +0000 Subject: [PATCH 03/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4044 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_guestbook/list.html | 12 ------------ modules/board/skins/xe_guestbook/write_form.html | 1 - 2 files changed, 13 deletions(-) diff --git a/modules/board/skins/xe_guestbook/list.html b/modules/board/skins/xe_guestbook/list.html index dd080c4a8..13faa3601 100644 --- a/modules/board/skins/xe_guestbook/list.html +++ b/modules/board/skins/xe_guestbook/list.html @@ -35,18 +35,6 @@
- - - - - From 35caae8af4b1cafc3cf67016595bc5749f788752 Mon Sep 17 00:00:00 2001 From: supershop Date: Tue, 25 Mar 2008 12:22:02 +0000 Subject: [PATCH 04/49] =?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=B3=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@4045 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/en.lang.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index 2710b3692..6d057cb21 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -9,22 +9,22 @@ $lang->except_notice = "Exclude Notices"; - $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_manage_menu = 'Manage Menus'; + $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->parent_category_title = 'Parent Category'; $lang->category_title = 'Category'; $lang->expand = 'Expand'; $lang->category_group_srls = 'Accessable Group'; - $lang->search_result = 'Search result'; + $lang->search_result = 'Search Result'; $lang->consultation = 'Consultation'; // words used in button - $lang->cmd_board_list = 'Board list'; - $lang->cmd_module_config = 'Common board setting'; - $lang->cmd_view_info = 'Board info'; + $lang->cmd_board_list = 'Boards List'; + $lang->cmd_module_config = 'Common Board Setting'; + $lang->cmd_view_info = 'Board Info'; // blah blah.. $lang->about_category_title = 'Please input category name'; From 32e998e534dcba53532ce14d16ca4291f03d248c Mon Sep 17 00:00:00 2001 From: duvent Date: Wed, 26 Mar 2008 11:19:06 +0000 Subject: [PATCH 05/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4046 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/fr.lang.php | 2 +- modules/editor/lang/fr.lang.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index 0a8264f10..4812f0cf4 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -186,7 +186,7 @@ $lang->success_registed = 'Enregistré avec succès'; $lang->success_declared = 'Accusé avec succès'; - $lang->success_updated = 'Mise a jour avec succès'; + $lang->success_updated = 'Mise à jour avec succès'; $lang->success_deleted = 'Supprimé avec succès'; $lang->success_voted = 'Voté avec succès'; $lang->success_moved = 'Bougé avec succès'; diff --git a/modules/editor/lang/fr.lang.php b/modules/editor/lang/fr.lang.php index d48cabdaa..1e39b15c5 100644 --- a/modules/editor/lang/fr.lang.php +++ b/modules/editor/lang/fr.lang.php @@ -12,8 +12,8 @@ $lang->component_link = "Lien"; $lang->component_date = "Jour de Création"; $lang->component_description = "Description"; - $lang->component_extra_vars = "Variables d\'Option"; - $lang->component_grant = "Configuration de l\'Autorisation"; + $lang->component_extra_vars = "Variables d'Option"; + $lang->component_grant = "Configuration de l'Autorisation"; $lang->about_component = "Sur le Composant"; $lang->about_component_grant = "Le groupe sélectionné peut seulement utiliser. (Tout le monde peut utiliser quand le mode est invalid)"; From dbcc5d8a5b5fc06289c67c533d6caa15ad79d90e Mon Sep 17 00:00:00 2001 From: duvent Date: Wed, 26 Mar 2008 12:58:54 +0000 Subject: [PATCH 06/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4047 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/lifepod/lang/fr.lang.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 modules/lifepod/lang/fr.lang.php diff --git a/modules/lifepod/lang/fr.lang.php b/modules/lifepod/lang/fr.lang.php new file mode 100644 index 000000000..c9833c7ce --- /dev/null +++ b/modules/lifepod/lang/fr.lang.php @@ -0,0 +1,15 @@ +lifepod = "Lifepod"; + + $lang->calendar_address = "Addresse de XML du Calendrier"; + $lang->cmd_lifepod_list = 'Liste de Lifepod'; + $lang->cmd_view_info = 'Information de Lifepod.'; + + $lang->about_lifepod = "Lifepod est un service pourvu par Openmaru Studio.
Le module de Lifepod Zeroboard XE se présente les calendriers spécifiques de Lifepod comme les documents internes."; +?> From bf94276932e984b3fac09cd553cc1c48de34c5a2 Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 30 Mar 2008 07:25:32 +0000 Subject: [PATCH 08/49] =?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=B3=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@4049 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/lang/en.lang.php | 2 +- modules/lifepod/lang/en.lang.php | 2 +- modules/menu/lang/en.lang.php | 10 +++++----- modules/widget/lang/en.lang.php | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/admin/lang/en.lang.php b/modules/admin/lang/en.lang.php index 0586bbab6..e1c35079e 100644 --- a/modules/admin/lang/en.lang.php +++ b/modules/admin/lang/en.lang.php @@ -24,7 +24,7 @@ $lang->current_version = "Current Version"; $lang->current_path = "Installed Path"; $lang->released_version = "Latest Version"; - $lang->about_download_link = "Newer version of Zerboard XE is available. To download the latest version, click download link."; + $lang->about_download_link = "New version of Zerboard XE is now available. To download the latest version, click the download link."; $lang->item_module = "Module List"; $lang->item_addon = "Addon List"; diff --git a/modules/lifepod/lang/en.lang.php b/modules/lifepod/lang/en.lang.php index 711c41a22..e994c59cb 100644 --- a/modules/lifepod/lang/en.lang.php +++ b/modules/lifepod/lang/en.lang.php @@ -8,7 +8,7 @@ $lang->lifepod = "Lifepod"; $lang->calendar_address = "Calendar's XML Address"; - $lang->cmd_lifepod_list = 'Lifepod List'; + $lang->cmd_lifepod_list = 'Lifepods List'; $lang->cmd_view_info = 'Lifepod Info.'; $lang->about_lifepod = "Lifepod is a calendar service provided by Openmaru Studio.
Lifepod Zeroboard XE module displays Lifepod's specific calendars as internal documents."; diff --git a/modules/menu/lang/en.lang.php b/modules/menu/lang/en.lang.php index c18e4d7f1..b0418e4b1 100644 --- a/modules/menu/lang/en.lang.php +++ b/modules/menu/lang/en.lang.php @@ -27,13 +27,13 @@ $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->layout_list = 'Layouts List'; + $lang->downloaded_list = 'Downloads List'; $lang->limit_menu_depth = 'Display Enabled'; - $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_make_child = 'Add a Child Menu'; + $lang->cmd_move_to_installed_list = "View Created List"; + $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 = 'A menu with child menus cannot be deleted.'; diff --git a/modules/widget/lang/en.lang.php b/modules/widget/lang/en.lang.php index b0dc4f598..4ae9b9bb3 100644 --- a/modules/widget/lang/en.lang.php +++ b/modules/widget/lang/en.lang.php @@ -8,7 +8,7 @@ $lang->cmd_generate_code = 'Generate Code'; $lang->widget_name = 'Widget Name'; - $lang->widget_maker = 'Widget Developer'; + $lang->widget_maker = 'Developer'; $lang->widget_history = 'Update History'; $lang->widget_info = 'Widget Info'; $lang->widget_code = 'Code'; @@ -33,9 +33,9 @@ $lang->generated_code = 'Generated Code'; - $lang->msg_widget_is_not_exists = '%s widget does not exist.'; - $lang->msg_widget_object_is_null = 'Object of %s widget cannot be created.'; - $lang->msg_widget_proc_is_null = 'proc() of %s widget cannot be executed.'; + $lang->msg_widget_is_not_exists = '%s does not exist.'; + $lang->msg_widget_object_is_null = 'Object of %s could not be created.'; + $lang->msg_widget_proc_is_null = 'proc() of %s could not be executed.'; $lang->about_widget_code = 'Please input required value first, and click [Generate Code] button to generate code to add to the template file.'; $lang->about_widget_code_in_page = 'After entering the required values, click the [Add] button to insert the widget code into the page.'; From 99fd75f6c3adc33a474fbba433d845929095124f Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Sun, 30 Mar 2008 14:53:52 +0000 Subject: [PATCH 09/49] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A7=80=20=EB=A9=94=EC=84=B8=EC=A7=80=EB=A5=BC=20=EC=A2=80?= =?UTF-8?q?=EB=8D=94=20=EC=A0=95=ED=99=95=ED=95=9C=20=EB=9C=BB=EC=9C=BC?= =?UTF-8?q?=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@4050 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/en.lang.php | 4 ++-- modules/member/lang/es.lang.php | 4 ++-- modules/member/lang/jp.lang.php | 4 ++-- modules/member/lang/ko.lang.php | 2 +- modules/member/lang/ru.lang.php | 3 +-- modules/member/lang/zh-CN.lang.php | 4 ++-- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 1602ae579..30a5d57b6 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -63,8 +63,8 @@ $lang->webmaster_name = "Webmaster's Name"; $lang->webmaster_email = "Webmaster's Email"; - $lang->about_keep_signed = 'Your login session will not be expired even browser is closed.\n\nYou would not have to login manually from next time.\n\nIt is strongly recommended not to use this function in PC room, school, or other Public areas where your private information could be stolen.'; - $lang->about_webmaster_name = "Please input webmaster's name which will be used for certification mails or other site administration. (default : webmaster)"; + $lang->about_keep_signed = ' ݴ α ֽϴ.\n\nα Ӻʹ α Ͻ ʿ䰡 ϴ.\n\n, ӹ, б ҿ ̿ α׾ƿ ּ'; + $lang->about_webmaster_name = "Please input webmaster's name which will be used for certification mails or other site administration. (default : webmaster)"; $lang->about_webmaster_email = "Please input webmaster's email address."; $lang->search_target_list = array( diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index d3816a9d9..1e9febe2f 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -62,8 +62,8 @@ $lang->webmaster_name = 'Nombre del Webmaster'; $lang->webmaster_email = 'Correo electrónico Webmaster'; - $lang->about_keep_signed = 'Su nombre de usuario período de sesiones no será vencido incluso el navegador está cerrado. \ N \ nSe no tendría acceso manualmente a partir de la próxima vez. \ N \ nIt Se recomienda encarecidamente no utilizar esta función en la sala de PC, la escuela y otros ámbitos en los que su público Información privada podrían ser robados.'; - $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_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.'; $lang->search_target_list = array( diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index 713513af3..f00f7adfc 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -63,8 +63,8 @@ $lang->webmaster_name = 'ウェブマスターの名前'; $lang->webmaster_email = 'ウェブマスターのメール'; - $lang->about_keep_signed = 'ブラウザーを閉じてもログインの状態が維持されます。.\n\n自動ログインを使用すると、次回からはログインする必要がありません。.\n\n但し、ネットカフェーや学校など公共の場では個人情報流出の恐れがありますので、必ずログアウトしてください。'; - $lang->about_webmaster_name = '認証メールまたはサイト管理時に使用されるウェブマスターの名前を入力してください(デフォルト : webmaster)'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; + $lang->about_webmaster_name = '認証メールまたはサイト管理時に使用されるウェブマスターの名前を入力してください(デフォルト : webmaster)'; $lang->about_webmaster_email = 'ウェブマスターのメールアドレスを入力してください。'; $lang->search_target_list = array( diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 4b968b14a..1b666c463 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -63,7 +63,7 @@ $lang->webmaster_name = '웹마스터 이름'; $lang->webmaster_email = '웹마스터 메일주소'; - $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용시 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)'; $lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.'; diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index 256e309fe..8ec51fda2 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -62,8 +62,7 @@ $lang->webmaster_name = "Имя веб-мастера"; $lang->webmaster_email = "Email веб-мастера"; - $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 게속 유지될 수 있습니다.\n\n로그인 유지시 사용시 다음 접속부터는 로그인을 하실필요가 없습니다.\n\n단, 게임방, 학교등 공공장소에서 이용시 개인정보가 유출될수 있으니 꼭 로그아웃을 해주세요'; - $lang->about_webmaster_name = "Пожалуйста, введите имя веб-мастера, которое будет использоваться для аутентификационных писем или другого адиминистрирования сайта. (по умолчанию : webmaster)"; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = "Пожалуйста, введите имя веб-мастера, которое будет использоваться для аутентификационных писем или другого адиминистрирования сайта. (по умолчанию : webmaster)"; $lang->about_webmaster_email = "Пожалуйста, введите email адрес веб-мастера."; $lang->search_target_list = array( diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index 4949e722b..31637ae8d 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -63,8 +63,8 @@ $lang->webmaster_name = '管理员名'; $lang->webmaster_email = '管理员电子邮件'; - $lang->about_keep_signed = '关闭浏览器后也将维持登录状态。\n\n使用自动登录功能,可解决每次访问都要输入用户名及密码的麻烦。\n\n为防止个人信息泄露,在网吧,学校等公共场所请务必要确认解除登录状态。'; - $lang->about_webmaster_name = '请输入认证所需的电子邮件地址或管理其他网站时要使用的网站管理员名称。(默认 : webmaster)'; + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; + $lang->about_webmaster_name = '请输入认证所需的电子邮件地址或管理其他网站时要使用的网站管理员名称。(默认 : webmaster)'; $lang->about_webmaster_email = '请输入网站管理员的电子邮件地址。'; $lang->search_target_list = array( From 7610ae5e38e77ae780c4a25e457925b9ee8e2f75 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Sun, 30 Mar 2008 14:56:59 +0000 Subject: [PATCH 10/49] =?UTF-8?q?=EA=B8=80=EC=94=A8=20=EA=B9=A8=EC=A7=90?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=B4=20=EB=A1=A4=EB=B0=B1?= =?UTF-8?q?=ED=9B=84=20=EB=8B=A4=EC=8B=9C=20=EC=98=AC=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@4051 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/en.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 30a5d57b6..dc4c1ef75 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -63,7 +63,7 @@ $lang->webmaster_name = "Webmaster's Name"; $lang->webmaster_email = "Webmaster's Email"; - $lang->about_keep_signed = ' ݴ α ֽϴ.\n\nα Ӻʹ α Ͻ ʿ䰡 ϴ.\n\n, ӹ, б ҿ ̿ α׾ƿ ּ'; + $lang->about_keep_signed = 'Your login session will not be expired even browser is closed.\n\nYou would not have to login manually from next time.\n\nIt is strongly recommended not to use this function in PC room, school, or other Public areas where your private information could be stolen.'; $lang->about_webmaster_name = "Please input webmaster's name which will be used for certification mails or other site administration. (default : webmaster)"; $lang->about_webmaster_email = "Please input webmaster's email address."; From b1593458ab75700197961f87e4f3986cf166fd39 Mon Sep 17 00:00:00 2001 From: sspa3141 Date: Sun, 30 Mar 2008 14:57:24 +0000 Subject: [PATCH 11/49] =?UTF-8?q?=EA=B8=80=EC=94=A8=20=EA=B9=A8=EC=A7=90?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=B4=20=EB=A1=A4=EB=B0=B1?= =?UTF-8?q?=ED=9B=84=20=EB=8B=A4=EC=8B=9C=20=EC=98=AC=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@4052 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/en.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index dc4c1ef75..30a5d57b6 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -63,7 +63,7 @@ $lang->webmaster_name = "Webmaster's Name"; $lang->webmaster_email = "Webmaster's Email"; - $lang->about_keep_signed = 'Your login session will not be expired even browser is closed.\n\nYou would not have to login manually from next time.\n\nIt is strongly recommended not to use this function in PC room, school, or other Public areas where your private information could be stolen.'; + $lang->about_keep_signed = ' ݴ α ֽϴ.\n\nα Ӻʹ α Ͻ ʿ䰡 ϴ.\n\n, ӹ, б ҿ ̿ α׾ƿ ּ'; $lang->about_webmaster_name = "Please input webmaster's name which will be used for certification mails or other site administration. (default : webmaster)"; $lang->about_webmaster_email = "Please input webmaster's email address."; From 8eb0d8931fd6c88a463c1531ddd115094ee28918 Mon Sep 17 00:00:00 2001 From: guny Date: Sun, 30 Mar 2008 15:05:56 +0000 Subject: [PATCH 12/49] =?UTF-8?q?=EC=A4=91=EA=B5=AD=EC=96=B4=20-=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=9C=A0=EC=A7=80=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EA=B8=B0=EC=A1=B4=20=EB=B2=88=EC=97=AD=20?= =?UTF-8?q?=EC=9C=A0=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@4053 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/zh-CN.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index 31637ae8d..494e3240b 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -63,7 +63,7 @@ $lang->webmaster_name = '管理员名'; $lang->webmaster_email = '管理员电子邮件'; - $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; + $lang->about_keep_signed = '关闭浏览器后也将维持登录状态。\n\n使用自动登录功能,可解决每次访问都要输入用户名及密码的麻烦。\n\n为防止个人信息泄露,在网吧,学校等公共场所请务必要确认解除登录状态。'; $lang->about_webmaster_name = '请输入认证所需的电子邮件地址或管理其他网站时要使用的网站管理员名称。(默认 : webmaster)'; $lang->about_webmaster_email = '请输入网站管理员的电子邮件地址。'; From 86ac7db67cbe3a2a3894bd438ae4b2c440fd542d Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 00:10:59 +0000 Subject: [PATCH 13/49] =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=EC=84=9C=20=EC=84=9C?= =?UTF-8?q?=EB=AA=85=20=ED=8E=B8=EC=A7=91=20=EA=B8=B0=EB=8A=A5=EC=9D=B4=20?= =?UTF-8?q?=EB=82=98=ED=83=80=EB=82=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20tem?= =?UTF-8?q?plate=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@4054 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.admin.view.php | 2 +- modules/member/tpl/member_config.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/member/member.admin.view.php b/modules/member/member.admin.view.php index a18821948..48cd196aa 100644 --- a/modules/member/member.admin.view.php +++ b/modules/member/member.admin.view.php @@ -95,7 +95,7 @@ $option->allow_fileupload = false; $option->enable_autosave = false; $option->enable_default_component = true; - $option->enable_component = false; + $option->enable_component = true; $option->resizable = true; $option->height = 300; $editor = $oEditorModel->getEditor(0, $option); diff --git a/modules/member/tpl/member_config.html b/modules/member/tpl/member_config.html index 6f18def5b..d30ef4241 100644 --- a/modules/member/tpl/member_config.html +++ b/modules/member/tpl/member_config.html @@ -88,8 +88,8 @@ {$lang->editor_skin} From 9f452d0705d6a25ac0c0cd73b89abf32e4456df7 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 00:13:02 +0000 Subject: [PATCH 14/49] =?UTF-8?q?#441=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=9C=84=EC=B9=98=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=EC=9D=B4=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EB=8F=99=EC=9E=91=EB=90=98=EB=8F=84=EB=A1=9D=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@4055 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/queries/getComponentList.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/queries/getComponentList.xml b/modules/editor/queries/getComponentList.xml index 3820ba151..11d3adc06 100644 --- a/modules/editor/queries/getComponentList.xml +++ b/modules/editor/queries/getComponentList.xml @@ -9,6 +9,6 @@ - + From ce824ed878f98659d058e0a13d7a3b896c1a74d4 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 00:23:59 +0000 Subject: [PATCH 15/49] =?UTF-8?q?select=EC=8B=9C=20count=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=EC=9D=98=20=EA=B2=B0=EA=B3=BC=EB=A5=BC=20=EC=BA=90?= =?UTF-8?q?=EC=8B=B1=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20-=20=EC=BA=90=EC=8B=9C?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=B4=20=EB=84=88=EB=AC=B4=20=EB=A7=8E?= =?UTF-8?q?=EC=9D=B4=20=EC=83=9D=EA=B2=A8=EC=84=9C=20=EC=B0=A8=ED=9B=84=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=ED=9B=84=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=A0=20=EC=98=88=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@4056 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index ab419ec32..c5c0ac5d9 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -426,6 +426,7 @@ * @brief 카운터 캐시 데이터 얻어오기 **/ function getCountCache($tables, $condition) { + return false; if(!$tables) return false; if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); @@ -456,6 +457,7 @@ * @brief 카운터 캐시 데이터 저장 **/ function putCountCache($tables, $condition, $count = 0) { + return false; if(!$tables) return false; if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); @@ -476,6 +478,7 @@ * @brief 카운터 캐시 리셋 **/ function resetCountCache($tables) { + return false; if(!$tables) return false; if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); From 3ed13e73d53ec7324a7fb52052560251878330be Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 02:09:28 +0000 Subject: [PATCH 16/49] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=EC=8B=9C=20=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=AA=BD=20=EB=AC=B8=EC=A0=9C=20=EB=B0=9C=EC=83=9D=EC=8B=9C=20?= =?UTF-8?q?=EB=AC=B4=EC=8B=9C=ED=95=98=EA=B3=A0=20=EC=8B=A4=ED=96=89?= =?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@4057 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../document/document.admin.controller.php | 21 ++++++++++--------- modules/file/file.controller.php | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index 1c9bf575e..19ef9133b 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -159,17 +159,18 @@ $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($inserted_file && $inserted_file->toBool()) { + // 이미지/동영상등일 경우 + 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); - // 이미지/동영상등일 경우 - 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); + // 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); + } } // 기존 파일 삭제 diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index c463ff677..c345cb542 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -338,11 +338,11 @@ // 이미지인지 기타 파일인지 체크하여 upload path 지정 if(preg_match("/\.(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi|asf)$/i", $file_info['name'])) { - $path = sprintf("./files/attach/images/%s/%s/", $module_srl,$upload_target_srl); + $path = sprintf("./files/attach/images/%s/%s", $module_srl,$upload_target_srl); $filename = $path.$file_info['name']; $direct_download = 'Y'; } else { - $path = sprintf("./files/attach/binaries/%s/%s/", $module_srl, $upload_target_srl); + $path = sprintf("./files/attach/binaries/%s/%s", $module_srl, $upload_target_srl); $filename = $path.md5(crypt(rand(1000000,900000), rand(0,100))); $direct_download = 'N'; } From 3009f1ecfb3a3b0b6a1ee8def59ea6ba729a8da6 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 02:18:15 +0000 Subject: [PATCH 17/49] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=EC=8B=9C=20=ED=8C=8C=EC=9D=BC=EB=94=94=EB=A0=89?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=EB=A5=BC=20=EA=B2=8C=EC=8B=9C=EA=B8=80?= =?UTF-8?q?=EC=9D=98=203=EC=9E=90=EB=A6=AC=EC=88=98=EB=A1=9C=20=EC=9E=98?= =?UTF-8?q?=EB=9D=BC=EC=84=9C=20=EB=93=B1=EB=A1=9D=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=ED=95=98=EC=97=AC=20=ED=95=9C=20=EB=94=94=EB=A0=89?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=EC=97=90=20=EC=A0=95=ED=95=B4=EC=A7=84=20ino?= =?UTF-8?q?de=EC=9D=B4=EC=83=81=EC=9D=B4=20=EC=83=9D=EA=B2=A8=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=EA=B0=80=20=EB=B6=88=EA=B0=80=EB=8A=A5?= =?UTF-8?q?=ED=95=98=EA=B2=8C=20=EB=90=98=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@4058 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/file.controller.php | 4 ++-- modules/importer/importer.admin.controller.php | 4 ++-- modules/importer/ttimport.class.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index c345cb542..51f9ec62a 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -338,11 +338,11 @@ // 이미지인지 기타 파일인지 체크하여 upload path 지정 if(preg_match("/\.(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi|asf)$/i", $file_info['name'])) { - $path = sprintf("./files/attach/images/%s/%s", $module_srl,$upload_target_srl); + $path = sprintf("./files/attach/images/%s/%s", $module_srl,getNumberingPath($upload_target_srl,3)); $filename = $path.$file_info['name']; $direct_download = 'Y'; } else { - $path = sprintf("./files/attach/binaries/%s/%s", $module_srl, $upload_target_srl); + $path = sprintf("./files/attach/binaries/%s/%s", $module_srl, getNumberingPath($upload_target_srl,3)); $filename = $path.md5(crypt(rand(1000000,900000), rand(0,100))); $direct_download = 'N'; } diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 3d95da38d..24cd0fecd 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -781,11 +781,11 @@ // 이미지인지 기타 파일인지 체크하여 upload path 지정 if(preg_match("/\.(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi|asf)$/i", $file_obj->source_filename)) { - $path = sprintf("./files/attach/images/%s/%s/", $module_srl,$upload_target_srl); + $path = sprintf("./files/attach/images/%s/%s", $module_srl,getNumberingPath($upload_target_srl,3)); $filename = $path.$file_obj->source_filename; $file_obj->direct_download = 'Y'; } else { - $path = sprintf("./files/attach/binaries/%s/%s/", $module_srl, $upload_target_srl); + $path = sprintf("./files/attach/binaries/%s/%s", $module_srl, getNumberingPath($upload_target_srl,3)); $filename = $path.md5(crypt(rand(1000000,900000), rand(0,100))); $file_obj->direct_download = 'N'; } diff --git a/modules/importer/ttimport.class.php b/modules/importer/ttimport.class.php index f3837b4eb..d8f6c5319 100644 --- a/modules/importer/ttimport.class.php +++ b/modules/importer/ttimport.class.php @@ -286,11 +286,11 @@ // 이미지인지 기타 파일인지 체크하여 upload path 지정 if(preg_match("/\.(jpg|jpeg|gif|png|wmv|wma|mpg|mpeg|avi|swf|flv|mp3|asaf|wav|asx|midi|asf)$/i", $file_obj->source_filename)) { - $path = sprintf("./files/attach/images/%s/%s/", $module_srl,$upload_target_srl); + $path = sprintf("./files/attach/images/%s/%s", $module_srl,getNumberingPath($upload_target_srl,3)); $filename = $path.$file_obj->source_filename; $file_obj->direct_download = 'Y'; } else { - $path = sprintf("./files/attach/binaries/%s/%s/", $module_srl, $upload_target_srl); + $path = sprintf("./files/attach/binaries/%s/%s", $module_srl, getNumberingPath($upload_target_srl,3)); $filename = $path.md5(crypt(rand(1000000,900000), rand(0,100))); $file_obj->direct_download = 'N'; } From 0aebdb77fd29e4944e2204964a1e18e9b7c179f4 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 02:25:53 +0000 Subject: [PATCH 18/49] =?UTF-8?q?springnote=20=EC=97=B0=EB=8F=99=20?= =?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=20=EB=AA=A9=EB=A1=9D=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?css=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@4059 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/springnote/skins/xe_official/css/common.css | 4 ++-- modules/springnote/skins/xe_official/list.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/springnote/skins/xe_official/css/common.css b/modules/springnote/skins/xe_official/css/common.css index 949731e06..386a74ddf 100644 --- a/modules/springnote/skins/xe_official/css/common.css +++ b/modules/springnote/skins/xe_official/css/common.css @@ -18,10 +18,10 @@ .pageSearch { text-align:right; margin:10px 0 10px 0; } .pageList { border:1px solid #E3E3E2; } -.pageList .page { border-top:1px dotted #EFEFEF; padding:10px; } +.pageList .page { border-top:1px dotted #EFEFEF; padding:0; } .pageList .selected { background-color:#EFEFEF; } .pageList .noline { border-top:none; } -.pageList .page .title { background:url("../images/common/document.gif") no-repeat left top; padding-left:18px; } +.pageList .page .pageTitle { background:url("../images/common/document.gif") no-repeat left 5px; padding:5px 0 3px 18px; } .pageList .page a { text-decoration:none; color:#666666; } .pageList .page a:hover { text-decoration:underline; color:#333333; } .pageList .page a:visited { text-decoration:none; color:#999999; } diff --git a/modules/springnote/skins/xe_official/list.html b/modules/springnote/skins/xe_official/list.html index 0f6bd47e0..1117135c0 100644 --- a/modules/springnote/skins/xe_official/list.html +++ b/modules/springnote/skins/xe_official/list.html @@ -136,7 +136,7 @@ {@ $_idx = 0 }
- +
{$val->source}
{@ $_idx++} From 93523865603604f45880c246bf3ac116fe4552ae Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 31 Mar 2008 03:15:28 +0000 Subject: [PATCH 19/49] =?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=EC=9D=98=20=EB=8C=93=EA=B8=80/=ED=9A=8C?= =?UTF-8?q?=EC=9B=90/=EB=AC=B8=EC=84=9C=EB=AA=A9=EB=A1=9D=EC=9D=84=20?= =?UTF-8?q?=EC=A0=95=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@4060 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/tpl/comment_list.html | 14 +++++----- modules/document/tpl/document_list.html | 35 +++++++++++++------------ modules/member/tpl/member_list.html | 2 +- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/modules/comment/tpl/comment_list.html b/modules/comment/tpl/comment_list.html index 00444be89..edd05f398 100644 --- a/modules/comment/tpl/comment_list.html +++ b/modules/comment/tpl/comment_list.html @@ -16,7 +16,7 @@ - + @@ -25,7 +25,7 @@ - + @@ -43,7 +43,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -61,7 +61,7 @@ - + @@ -92,8 +92,8 @@ {$no} {htmlspecialchars($module_list[$val->module_srl]->browser_title)}
{htmlspecialchars($val->nick_name)}
- {zdate($val->regdate,"Y-m-d")} - {zdate($val->last_update, 'Y-m-d H:i:s')}  + {nl2br(zdate($val->regdate,"Y-m-d\nH:i:s"))} + {nl2br(zdate($val->last_update, "Y-m-d\nH:i:s"))}  {$val->ipaddress} {$lang->cmd_move} diff --git a/modules/document/tpl/document_list.html b/modules/document/tpl/document_list.html index e21cc2c78..dc560e808 100644 --- a/modules/document/tpl/document_list.html +++ b/modules/document/tpl/document_list.html @@ -13,30 +13,29 @@ + -{@ $col_width = array(50,40,0,150,55,55,65)} +{@ $col_width = array(50,0,150,55,55,65)} -{@ $col_width = array(50,40,0,150,55,55,75)} +{@ $col_width = array(50,0,150,55,55,75)} -{@ $col_width = array(50,40,0,150,50,50,70)} +{@ $col_width = array(50,0,150,50,50,70)} -{@ $col_width = array(50,40,0,150,55,55,75)} +{@ $col_width = array(50,0,150,55,55,75)} -{@ $col_width = array(50,40,0,150,55,110,75)} +{@ $col_width = array(50,0,150,55,110,75)} -{@ $col_width = array(50,40,0,150,50,60,65)} +{@ $col_width = array(50,0,150,50,60,65)} width="{$width}" /> - - - - - - + + + + + + + + - - - - diff --git a/modules/member/tpl/member_list.html b/modules/member/tpl/member_list.html index 17b7a5c7f..56e34322f 100644 --- a/modules/member/tpl/member_list.html +++ b/modules/member/tpl/member_list.html @@ -80,7 +80,7 @@ - + From 5f7425d22c5e5d6780371a05889e86a48ee836c8 Mon Sep 17 00:00:00 2001 From: aerofleet Date: Mon, 31 Mar 2008 08:31:57 +0000 Subject: [PATCH 20/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4061 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/rank_download/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/widgets/rank_download/conf/info.xml b/widgets/rank_download/conf/info.xml index 892073731..f16cf4fbf 100644 --- a/widgets/rank_download/conf/info.xml +++ b/widgets/rank_download/conf/info.xml @@ -54,14 +54,14 @@ 파일 종류 ファイルの種類 - File Type + Type of File Tipo de archivo 附件类型 Тип файла select 순위에 포함할 파일 종류를 선택하세요. 順位に含むファイルの種類を選択してください。 - Please select file type to include. + Please select type of file to include. Por favor, seleccione el tipo de archivo a incluir. 请选择要显示的附件类型。 Пожалуйста, выберите тип файла для включения. From 43e3ac25167a1cfb2ec0f807f4df689691511cda Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 2 Apr 2008 03:26:09 +0000 Subject: [PATCH 21/49] =?UTF-8?q?#443=20widget.js=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94=20float=EB=9D=BC=EB=8A=94?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=EB=AA=85=EC=9D=84=20cssFloat=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EC=97=AC=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@4062 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/widget/tpl/js/widget.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/widget/tpl/js/widget.js b/modules/widget/tpl/js/widget.js index 8d0f0b876..22033d177 100644 --- a/modules/widget/tpl/js/widget.js +++ b/modules/widget/tpl/js/widget.js @@ -32,9 +32,9 @@ function getStyle(obj) { // float: 값을 구하는게 IE랑 그외가 다름 function getFloat(obj) { - var float = xIE4Up?obj.style.styleFloat:obj.style.cssFloat; - if(!float) float = 'left'; - return float; + var cssFloat = xIE4Up?obj.style.styleFloat:obj.style.cssFloat; + if(!cssFloat) cssFloat = 'left'; + return cssFloat; } function setFloat(obj, fl) { if(xIE4Up) obj.style.styleFloat = fl; @@ -724,15 +724,15 @@ function widgetDrag(tobj, dx, dy) { var pWidth = xWidth(tobj.parentNode); - var float = getFloat(tobj.parentNode); - if(!float) float = 'left'; + var cssFloat = getFloat(tobj.parentNode); + if(!cssFloat) cssFloat = 'left'; // 위젯 리사이즈 (우측) if(tobj.className == 'widgetResize' || tobj.className == 'widgetBoxResize') { if(nx < sx+minWidth) nx = sx+minWidth; if(nx > zoneRight) nx = zoneRight; - if(float == 'right') nx = sx + pWidth; + if(cssFloat == 'right') nx = sx + pWidth; var new_width = nx - sx; if(new_width < minWidth) new_width = minWidth; @@ -754,7 +754,7 @@ function widgetDrag(tobj, dx, dy) { if(nx < zoneLeft) nx = zoneLeft; - if(float == 'left') nx = sx; + if(cssFloat == 'left') nx = sx; var new_width = pWidth + (sx - nx); if(new_width < minWidth) new_width = minWidth; From 56003fb90a06ea46c9d4c88bfe0e69e1b52c7d53 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 2 Apr 2008 08:20:43 +0000 Subject: [PATCH 22/49] =?UTF-8?q?rss=5Freader=20=EC=9C=84=EC=A0=AF?= =?UTF-8?q?=EC=97=90=EC=84=9C=20item=EC=9D=B4=201=EA=B0=9C=EC=9D=BC?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=83=9D=EA=B8=B0=EB=8A=94=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@4063 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/rss_reader/rss_reader.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/widgets/rss_reader/rss_reader.class.php b/widgets/rss_reader/rss_reader.class.php index 2712cec8d..a460e3d72 100644 --- a/widgets/rss_reader/rss_reader.class.php +++ b/widgets/rss_reader/rss_reader.class.php @@ -60,11 +60,13 @@ $rss->title = $xml_doc->rss->channel->title->body; $rss->link = $xml_doc->rss->channel->link->body; - if(!is_array($xml_doc->rss->channel->item)) return; + $items = $xml_doc->rss->channel->item; + if(!$items) return; + if($items && !is_array($items)) $items = array($items); $rss_list = array(); - foreach ($xml_doc->rss->channel->item as $key => $value) { + foreach ($items as $key => $value) { if($key >= $PAGE_LIMIT) break; unset($item); From e25d48baefdf5a2735f7fff61e7d0f75da6bb5fe Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 3 Apr 2008 02:52:02 +0000 Subject: [PATCH 23/49] =?UTF-8?q?#442=20group=20by=EC=A0=88=EC=9D=84=20?= =?UTF-8?q?=EC=9D=B4=EC=9A=A9=ED=95=98=EB=8A=94=20=EB=8C=93=EA=B8=80/=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=20=EA=B2=80=EC=83=89=EC=8B=9C=20select=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=20=EC=BB=AC=EB=9F=BC=EC=9D=84=20group=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=EB=A7=8C=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EA=B2=8C=20=ED=95=9C=20=ED=9B=84=20=EB=8B=A4=EC=8B=9C=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=EB=A5=BC=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EB=8A=94=20=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=ED=91=9C?= =?UTF-8?q?=EC=A4=80=20sql=20=EB=AC=B8=EB=B2=95=EC=97=90=20=EB=A7=9E?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=BF=BC=EB=A6=AC=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@4064 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.model.php | 22 +++++++++++++++++-- .../queries/getDocumentListWithinComment.xml | 2 +- .../queries/getDocumentListWithinTag.xml | 2 +- modules/document/queries/getDocuments.xml | 3 +++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 1608d9c84..cf027b951 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -209,7 +209,6 @@ break; case 'comment' : $args->s_comment = $search_keyword; - $args->sort_index = 'documents.'.$args->sort_index; $query_id = 'document.getDocumentListWithinComment'; $use_division = true; break; @@ -288,7 +287,26 @@ } // document.getDocumentList 쿼리 실행 - $output = executeQueryArray($query_id, $args); + // 만약 query_id가 getDocumentListWithinComment 또는 getDocumentListWithinTag일 경우 group by 절 사용 때문에 쿼리를 한번더 수행 + if(in_array($query_id, array('document.getDocumentListWithinComment', 'document.getDocumentListWithinTag'))) { + $group_args = clone($args); + $group_args->sort_index = 'documents.'.$args->sort_index; + $output = executeQueryArray($query_id, $group_args); + if(!$output->toBool()||!count($output->data)) return $output; + + foreach($output->data as $key => $val) { + if($val->document_srl) $target_srls[] = $val->document_srl; + } + + $target_args->document_srls = implode(',',$target_srls); + $target_args->list_order = $args->sort_index; + $target_args->order = $args->order_type; + $target_args->list_count = $args->list_count; + $target_args->page = 1; + $output = executeQueryArray('document.getDocuments', $target_args); + } else { + $output = executeQueryArray($query_id, $args); + } // 결과가 없거나 오류 발생시 그냥 return if(!$output->toBool()||!count($output->data)) return $output; diff --git a/modules/document/queries/getDocumentListWithinComment.xml b/modules/document/queries/getDocumentListWithinComment.xml index 866c85e55..23e00c77b 100644 --- a/modules/document/queries/getDocumentListWithinComment.xml +++ b/modules/document/queries/getDocumentListWithinComment.xml @@ -4,7 +4,7 @@
{$lang->no}
+
{$no}isCarted())-->checked="checked"/> + {$no}{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}-
{$oDocument->getNickName()}
{$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")} {$oDocument->getRegdate("H:i:s")}
+ isCarted())-->checked="checked"/> {$lang->cmd_save} - [{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}]
{$oDocument->getTitle()} @@ -73,10 +78,6 @@ [{$oDocument->getTrackbackCount()}]
{$oDocument->getNickName()}
{$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")}
{htmlspecialchars($val->user_name)}
{htmlspecialchars($val->nick_name)}
{zdate($val->regdate,"Y-m-d")}{zdate($val->regdate,"Y-m-d H:i:s")}
{$lang->cmd_delete}{$lang->is_admin}
- + diff --git a/modules/document/queries/getDocumentListWithinTag.xml b/modules/document/queries/getDocumentListWithinTag.xml index 48dee7639..8e34b0a7b 100644 --- a/modules/document/queries/getDocumentListWithinTag.xml +++ b/modules/document/queries/getDocumentListWithinTag.xml @@ -4,7 +4,7 @@
- + diff --git a/modules/document/queries/getDocuments.xml b/modules/document/queries/getDocuments.xml index 17bc6e47d..e4e73f82f 100644 --- a/modules/document/queries/getDocuments.xml +++ b/modules/document/queries/getDocuments.xml @@ -10,5 +10,8 @@ + + + From 4858c14c17e1bdc8e495ca507158c27110d467a0 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 3 Apr 2008 03:27:09 +0000 Subject: [PATCH 24/49] =?UTF-8?q?#439=20php=EC=9D=98=20=EA=B2=B0=EA=B3=BC?= =?UTF-8?q?=EB=AC=BC=EA=B3=BC=20javascript=EC=9D=98=20setQuery=ED=95=A8?= =?UTF-8?q?=EC=88=98=EC=97=90=20index.php=20=ED=8C=8C=EC=9D=BC=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95=20=EC=97=86=EC=9D=B4=20/=3F...=20=EB=93=B1=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A7=80=EC=A0=95=EB=90=A0=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?index.php=EB=A5=BC=20=EB=AA=85=EC=8B=9C=EC=A0=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EA=B0=80=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=98=EC=97=AC=20index.html=ED=8C=8C=EC=9D=BC=EB=93=B1?= =?UTF-8?q?=EC=9D=B4=20=EC=9E=88=EB=8D=94=EB=9D=BC=EB=8F=84=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EC=97=86=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@4065 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 3 +++ common/js/common.js | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index a536543dd..7a736aea3 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -892,6 +892,9 @@ // 코드 변환 $content = preg_replace('/<(img|br)([^>\/]*)(\/>|>)/i','<$1$2 />', $content); + // 주소/?mid등과 같은 index.php가 명시되지 않은 파일의 target 변경 + $content = str_replace(Context::getRequestUri().'?',Context::getRequestUri().'index.php?',$content); + return $content; } diff --git a/common/js/common.js b/common/js/common.js index 8126e8c6e..afc5eb369 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -27,6 +27,7 @@ String.prototype.setQuery = function(key, val) { var idx = this.indexOf('?'); var uri = this; uri = uri.replace(/#$/,''); + if(idx != -1) { uri = this.substr(0, idx); var query_string = this.substr(idx+1, this.length); @@ -43,11 +44,12 @@ String.prototype.setQuery = function(key, val) { q_list[q_list.length] = i+'='+arg; } - return uri+"?"+q_list.join("&"); + uri = uri+"?"+q_list.join("&"); } else { - if(val.toString().trim()) return uri+"?"+key+"="+val; - else return uri; + if(val.toString().trim()) uri = uri+"?"+key+"="+val; } + uri = uri.replace(request_uri+'?',request_uri+'index.php?'); + return uri; } /** From ea550c627e78daabd0e161459703418e9ed82cea Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 3 Apr 2008 03:57:22 +0000 Subject: [PATCH 25/49] =?UTF-8?q?r4065=20rollback.=20index.html=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=B4=20=EC=9E=88=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?=EC=83=9D=EA=B8=B0=EB=8A=94=20=EB=AC=B8=EC=A0=9C=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94=20=EB=B3=B4=EB=8B=A4=20?= =?UTF-8?q?=EA=B9=8A=EC=9D=80=20=EA=B3=A0=EB=AF=BC=EC=9D=B4=20=ED=95=84?= =?UTF-8?q?=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@4066 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 2 +- common/js/common.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 7a736aea3..68670940e 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -893,7 +893,7 @@ $content = preg_replace('/<(img|br)([^>\/]*)(\/>|>)/i','<$1$2 />', $content); // 주소/?mid등과 같은 index.php가 명시되지 않은 파일의 target 변경 - $content = str_replace(Context::getRequestUri().'?',Context::getRequestUri().'index.php?',$content); + //$content = str_replace(Context::getRequestUri().'?',Context::getRequestUri().'index.php?',$content); return $content; } diff --git a/common/js/common.js b/common/js/common.js index afc5eb369..7aac19292 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -48,7 +48,7 @@ String.prototype.setQuery = function(key, val) { } else { if(val.toString().trim()) uri = uri+"?"+key+"="+val; } - uri = uri.replace(request_uri+'?',request_uri+'index.php?'); + //uri = uri.replace(request_uri+'?',request_uri+'index.php?'); return uri; } From 33ba53114e8b8a17b5c84acbd371ddabb6bc1470 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Apr 2008 01:54:44 +0000 Subject: [PATCH 26/49] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=EC=8B=9C?= =?UTF-8?q?=EC=97=90=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EB=94=94=EB=A5=BC=20=EC=86=8C=EB=AC=B8=EC=9E=90=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@4067 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index b68870db2..8996fcd69 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -1251,6 +1251,8 @@ * @brief 로그인 시킴 **/ function doLogin($user_id, $password = '', $keep_signed = false) { + $user_id = strtolower($user_id); + // 로그인 이전에 trigger 호출 (before) $trigger_obj->user_id = $user_id; $trigger_obj->password = $password; From c420d3191fba22221e6aa33a487c057f3c5ef268 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Apr 2008 02:50:44 +0000 Subject: [PATCH 27/49] =?UTF-8?q?=EC=84=9C=EB=AA=85=20=EB=82=B4=EC=9A=A9?= =?UTF-8?q?=EC=9D=B4=20=EC=97=86=EC=9D=84=20=EA=B2=BD=EC=9A=B0=20=EB=B8=8C?= =?UTF-8?q?=EB=9D=BC=EC=9A=B0=EC=A0=80=EC=97=90=EC=84=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=EC=9C=BC=EB=A1=9C=20=EC=A0=95=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=EB=82=98=20=EB=82=B4=EC=9A=A9=EC=97=90=20?= =?UTF-8?q?=EC=9D=98=ED=95=B4=20=EA=B3=84=EC=86=8D=20=EC=84=9C=EB=AA=85?= =?UTF-8?q?=EC=9D=B4=20=EC=9E=88=EB=8A=94=EA=B2=83=EC=B2=98=EB=9F=BC=20?= =?UTF-8?q?=EB=B3=B4=EC=9D=B4=EB=8A=94=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EA=B8=B0=EB=B3=B8=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=20=EC=8A=A4=ED=82=A8=EC=97=90=EC=84=9C=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EB=B3=B4=EA=B8=B0=EC=8B=9C=EC=97=90=20?= =?UTF-8?q?=EC=84=9C=EB=AA=85=EB=82=B4=EC=9A=A9=EC=9D=B4=20=EB=B3=B4?= =?UTF-8?q?=EC=9D=B4=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@4068 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 4 +++- modules/member/member.model.php | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 8996fcd69..6a9726116 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -1184,10 +1184,12 @@ **/ function putSignature($member_srl, $signature) { $signature = trim(removeHackTag($signature)); + + $check_signature = trim(str_replace(array(' ',"\n","\r"),'',strip_tags($signature))); $path = sprintf('files/member_extra_info/signature/%s/', getNumberingPath($member_srl)); $filename = sprintf('%s%d.signature.php', $path, $member_srl); - if(!$signature || !strip_tags($signature)) return @unlink($filename); + if(!$check_signature) return @unlink($filename); $buff = sprintf('%s', $signature); FileHandler::makeDir($path); diff --git a/modules/member/member.model.php b/modules/member/member.model.php index cf2ff5022..e107e1a28 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -141,6 +141,7 @@ $info->profile_image = $this->getProfileImage($info->member_srl); $info->image_name = $this->getImageName($info->member_srl); $info->image_mark = $this->getImageMark($info->member_srl); + $info->signature = $this->getSignature($info->member_srl); $extra_vars = unserialize($info->extra_vars); unset($info->extra_vars); From 29f9b4ce49d9b0a4f123c960f2780c440b008d40 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Apr 2008 03:16:24 +0000 Subject: [PATCH 28/49] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=EC=9D=98=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=EC=97=90=20&=20=EB=93=B1=EC=9D=98=20?= =?UTF-8?q?=EB=AC=B8=EC=9E=90=EA=B0=80=20=EC=9E=88=EC=9D=84=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20RSS=20=EB=AC=B8=EC=84=9C=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EA=B0=80=20=EC=83=9D=EA=B8=B0=EB=8A=94=20=EB=AC=B8=EC=A0=9C?= =?UTF-8?q?=EB=A5=BC=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@4069 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 9eb934917..0e0dde531 100644 --- a/modules/rss/tpl/rss20.html +++ b/modules/rss/tpl/rss20.html @@ -20,7 +20,7 @@ {$oDocument->getRegdateGM()} - {$tag} + From 95a74eaadefd9045575039aab0b23c3b55c874ef Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Apr 2008 03:58:01 +0000 Subject: [PATCH 29/49] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EC=97=90=EC=84=9C=20=EA=B8=B0=EC=A1=B4=EC=9D=98=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A8=EC=97=90=EC=84=9C=20=EC=9E=84=EC=8B=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=95=98=EB=8D=98=20=EC=A0=95=EB=A0=AC=20?= =?UTF-8?q?=EC=98=B5=EC=85=98=EC=9D=84=20=EA=B2=8C=EC=8B=9C=ED=8C=90=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EC=9E=90=EC=B2=B4=20=EC=84=A4=EC=A0=95?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD.=20=EA=B8=B0=EB=B3=B8/?= =?UTF-8?q?=EC=88=98=EC=A0=95/=EB=93=B1=EB=A1=9D=EC=9D=BC/=EC=B6=94?= =?UTF-8?q?=EC=B2=9C/=EC=A1=B0=ED=9A=8C/=EB=8C=93=EA=B8=80=EC=88=98/?= =?UTF-8?q?=EC=A0=9C=EB=AA=A9=EC=88=9C=20=EC=A0=95=EB=A0=AC=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@4070 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 5 + common/lang/es.lang.php | 5 + common/lang/fr.lang.php | 489 +++++++++++----------- common/lang/jp.lang.php | 5 + common/lang/ko.lang.php | 5 + common/lang/ru.lang.php | 5 + common/lang/zh-CN.lang.php | 5 + modules/board/board.admin.controller.php | 3 + modules/board/board.admin.view.php | 6 + modules/board/board.class.php | 2 + modules/board/board.view.php | 5 +- modules/board/skins/xe_board/skin.xml | 28 -- modules/board/tpl/board_info.html | 8 + modules/board/tpl/board_insert.html | 20 + modules/board/tpl/filter/insert_board.xml | 2 + 15 files changed, 321 insertions(+), 272 deletions(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 1a134e2b6..a8966edb7 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -109,6 +109,10 @@ $lang->cart = 'Selected Item'; $lang->friend = 'Friends'; $lang->notify = 'Notification'; + $lang->order_target = 'Align Target'; + $lang->order_type = 'Sorting Type'; + $lang->order_asc = 'ascend'; + $lang->order_desc = 'descend'; $lang->mid = 'Module Name'; $lang->layout = 'Layout'; @@ -129,6 +133,7 @@ $lang->search_list_count = 'Search List Count'; $lang->readed_count = 'Views'; $lang->voted_count = 'Votes'; + $lang->comment_count = 'Comments'; $lang->member_count = 'Member Count'; $lang->date = 'Date'; $lang->regdate = 'Registered Date'; diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index e966c0909..2985acbc3 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -108,6 +108,10 @@ $lang->cart = 'Artículo Seleccionado'; $lang->friend = 'Amigos'; $lang->notify = 'Notificación'; + $lang->order_target = 'Alinear Meta'; + $lang->order_type = 'Tipo de ordenamiento'; + $lang->order_asc = 'acendente'; + $lang->order_desc = 'descendente'; $lang->mid = 'Nombre del Módulo'; $lang->layout = 'Diseño'; @@ -128,6 +132,7 @@ $lang->search_list_count = 'Buscar lista Conde'; $lang->readed_count = 'Leídos'; $lang->voted_count = 'Recomendados'; + $lang->comment_count = 'Commentarios'; $lang->member_count = 'Cantidad de usuarios'; $lang->date = 'Fecha'; $lang->regdate = 'Fecha publicada'; diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index 4812f0cf4..169945966 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -1,242 +1,247 @@ -cmd_write = 'Ecrire'; - $lang->cmd_reply = 'Répondre'; - $lang->cmd_delete = 'Supprimer'; - $lang->cmd_modify = 'Modifier'; - $lang->cmd_edit = 'Editer'; - $lang->cmd_view = 'Voir'; - $lang->cmd_view_all = 'Voir Tous'; - $lang->cmd_list = 'Liste'; - $lang->cmd_prev = 'Précédent'; - $lang->cmd_next = 'Suivant'; - $lang->cmd_send_trackback = 'Envoyer Rétrolien'; - $lang->cmd_registration = $lang->cmd_submit = 'Enrégistrer'; - $lang->cmd_comment_registration = 'Ajouter un Commentaire'; - $lang->cmd_insert = 'Insérer'; - $lang->cmd_save = 'Conserver'; - $lang->cmd_load = 'Charger'; - $lang->cmd_input = 'Entrer'; - $lang->cmd_search = 'Rechercher'; - $lang->cmd_cancel = 'Annuler'; - $lang->cmd_back = 'Retourner'; - $lang->cmd_vote = 'Recommander'; - $lang->cmd_vote_down = 'Critiquer'; - $lang->cmd_declare = 'Accuser'; - $lang->cmd_cancel_declare = 'Annuler l\'Accusation'; - $lang->cmd_declared_list = 'Liste de l\'Accusation'; - $lang->cmd_copy = 'Copier'; - $lang->cmd_move = 'Bouger'; - $lang->cmd_move_up = 'En haut'; - $lang->cmd_move_down = 'En bas'; - $lang->cmd_add_indent = 'Ajouter un Rentré'; - $lang->cmd_remove_indent = 'Enlever un Rentré'; - $lang->cmd_management = 'Gérer'; - $lang->cmd_make = 'Créer'; - $lang->cmd_select = 'Choisir'; - $lang->cmd_select_all = 'Choisir Tous'; - $lang->cmd_unselect_all = 'Annuler Tous'; - $lang->cmd_reverse_all = 'Renverser la Sélection'; - $lang->cmd_close_all = 'Fermer Tous'; - $lang->cmd_open_all = 'Ouvrir Tous'; - $lang->cmd_reload = 'Recharger'; - $lang->cmd_close = 'Fermer'; - $lang->cmd_open = 'Ouvrir'; - $lang->cmd_setup = 'Configuration'; - $lang->cmd_addition_setup = 'Configuration Additionnelle'; - $lang->cmd_option = 'Option'; - $lang->cmd_apply = 'Appliquer'; - $lang->cmd_open_calendar = 'Choisir un Jour'; - $lang->cmd_send = 'Envoyer'; - $lang->cmd_print = 'Imprimer'; - $lang->cmd_scrap = 'Coupure'; - $lang->cmd_preview = 'Avant-première'; - $lang->cmd_reset = 'Restaurer'; - $lang->cmd_remake_cache = "Recréer la Cachette du Fichier"; - $lang->cmd_publish = "Publier"; - $lang->cmd_layout_setup = 'Configurer la Mise en page'; - $lang->cmd_layout_edit = 'Editer la Mise en page'; - - $lang->enable = 'Valide'; - $lang->disable = 'Invalide'; - - // Mots essentiels - $lang->no = 'No'; - $lang->notice = 'Notice'; - $lang->secret = 'Secret'; - $lang->category = $lang->category_srl = 'Catégorie'; - $lang->document_srl = 'Numéro de série du Document'; - $lang->user_id = 'Compte'; - $lang->author = 'Auteur'; - $lang->password = 'Mot de Passe'; - $lang->password1 = 'Mot de Passe'; - $lang->password2 = 'Confirmer du Mot de Passe'; - $lang->admin_id = 'Compte d\'Administrateur'; - $lang->writer = 'Auteur'; - $lang->user_name = 'Nom d\'utilisateur'; - $lang->nick_name = 'Surnom'; - $lang->email_address = 'Courriel'; - $lang->homepage = 'Page d\'accueil'; - $lang->blog = 'Blogue'; - $lang->birthday = 'Anniversaire'; - $lang->browser_title = 'Titre de Navigateur'; - $lang->title = 'Titre'; - $lang->title_content = 'Titre + Contenu'; - $lang->topic = 'Sujet'; - $lang->replies = 'Répondse'; - $lang->content = 'Contenu'; - $lang->document = 'Document'; - $lang->comment = 'Commentaire'; - $lang->description = 'Description'; - $lang->trackback = 'Rétrolien'; - $lang->tag = 'Tag'; - $lang->allow_comment = 'Permettre Commentaires'; - $lang->lock_comment = 'Bloquer Commentaires'; - $lang->allow_trackback = 'Permettre Rétrolien'; - $lang->uploaded_file = 'Fichier Attaché'; - $lang->grant = 'Permission'; - $lang->target = 'Cible'; - $lang->total = 'Total'; - $lang->total_count = 'Somme'; - $lang->ipaddress = 'Addresse IP'; - $lang->path = 'Chemin'; - $lang->cart = 'Article Choisi'; - $lang->friend = 'Les Amis'; - $lang->notify = 'Annoncer'; - - $lang->mid = 'Nom'; - $lang->layout = 'Mise en Page'; - $lang->widget = 'Widget'; - $lang->module = 'Module'; - $lang->skin = 'Thème'; - $lang->colorset = 'Arrangement de couleur'; - $lang->extra_vars = 'Variables Supplémentaires'; - - $lang->document_url = 'Document URL'; - $lang->trackback_url = 'Rétrolien URL'; - $lang->blog_name = 'Nom du Blogue'; - $lang->excerpt = 'Extrait'; - - $lang->document_count = ' Documents'; - $lang->page_count = 'Pages'; - $lang->list_count = 'Items'; - $lang->search_list_count = 'Trouvés'; - $lang->readed_count = ' Vues'; - $lang->voted_count = 'Recommandés'; - $lang->member_count = 'Membres'; - $lang->date = 'Jour'; - $lang->regdate = 'Enrégistré'; - $lang->last_update = 'Dernière Mise à Jour'; - $lang->last_post = 'Dernière Affichage'; - $lang->signup_date = 'Jour de s\'inscrire'; - $lang->last_login = 'Dernière connexion'; - $lang->first_page = 'Première Page'; - $lang->last_page = 'Dernière Page'; - $lang->search_target = 'Cible à Rechercher'; - $lang->search_keyword = 'Mot-clé à Recherche'; - $lang->is_default = 'Par Défaut'; - - $lang->no_documents = 'Aucun Document'; - - $lang->board_manager = 'Arrangements des Panneau'; - $lang->member_manager = 'Arrangements des Membres'; - $lang->layout_manager = 'Arrangements de Mise en Page'; - - $lang->use = 'Utiliser'; - $lang->notuse = 'Pas Utilisé'; - $lang->not_exists = 'Rien'; - - $lang->public = 'public'; - $lang->private = 'privé'; - - $lang->unit_sec = 'seconde'; - $lang->unit_min = 'minute'; - $lang->unit_hour = 'heure'; - $lang->unit_day = 'jour'; - $lang->unit_week = 'semaine'; - $lang->unit_month = 'mois'; - $lang->unit_year = 'année';; - - // Descriptions et information - $lang->about_tag = 'Vous pouvez enrégistrer plusieurs tags en utilisant ,(virgule) entre chaque tag'; - $lang->about_layout = 'Le Mise en Page décore l\'apparence des modules. Vous pouvez les configurer avec le menu de Mise en Page en haut'; - - // Messages et alertes - $lang->msg_call_server = 'En demandant sur le serveur, attendez svp.'; - $lang->msg_db_not_setted = 'La configuration de DB n\'est pas été établie.'; - $lang->msg_invalid_queryid = 'La valeur spécifiée de query ID est invalide.'; - $lang->msg_not_permitted = 'Vous n\'avez pas le droit d\'accès.'; - $lang->msg_input_password = 'Veuillez entrer votre mot de passe.'; - $lang->msg_invalid_document = 'Nombre de Document invalide'; - $lang->msg_invalid_request = 'Requête invalide'; - $lang->msg_invalid_password = 'Mot de passe invalide'; - $lang->msg_error_occured = 'Une erreur a lieu'; - $lang->msg_not_founded = 'La cible n\'est pas trouvée.'; - $lang->msg_no_result = 'Aucun Résultat'; - - $lang->msg_not_permitted_act = 'Vous n\'êtes pas autorisés à exécuter l\'action que vous demandez.'; - $lang->msg_module_is_not_exists = 'Le module demandé n\'a pas été trouvé.'; - $lang->msg_module_is_not_standalone = 'Le module demandé ne peut pas être exécuté indépendamment.'; - - $lang->success_registed = 'Enregistré avec succès'; - $lang->success_declared = 'Accusé avec succès'; - $lang->success_updated = 'Mise à jour avec succès'; - $lang->success_deleted = 'Supprimé avec succès'; - $lang->success_voted = 'Voté avec succès'; - $lang->success_moved = 'Bougé avec succès'; - $lang->success_sended = 'Envoyé avec succès'; - $lang->success_reset = 'Restauré avec succès'; - $lang->success_leaved = 'Toutes vos informations sont complètement supprimés'; - $lang->success_saved = 'Conservé avec succès'; - - $lang->fail_to_delete = 'N\'a pas pu être supprimé.'; - $lang->fail_to_move = 'N\'a pas pu être bougé'; - - $lang->failed_voted = 'N\'a pas pu recommander'; - $lang->failed_declared = 'N\'a pas pu accuser'; - $lang->fail_to_delete_have_children = 'Essayez encore après avoir suprimé les reponses, SVP'; - - $lang->confirm_submit = 'Vous voulez sûrement valider?'; - $lang->confirm_logout = 'Vous voulez sûrement fermer la session?'; - $lang->confirm_vote = 'Vous voulez recommander?'; - $lang->confirm_delete = 'Vous voulez sûrement supprimer?'; - $lang->confirm_move = 'Vous voulez sûrement bouger?'; - $lang->confirm_reset = 'Vous voulez sûrement restaurer?'; - $lang->confirm_leave = 'Vous voulez sûrement supprimer votre compte?'; - - $lang->column_type = 'Types des colonnes'; - $lang->column_type_list['text'] = 'Texte en une seul ligne'; - $lang->column_type_list['homepage'] = 'URL'; - $lang->column_type_list['email_address'] = 'Courriel'; - $lang->column_type_list['tel'] = 'Numéro de Telephone'; - $lang->column_type_list['textarea'] = 'Texte en plusieurs lignes'; - $lang->column_type_list['checkbox'] = 'Case à cocher (multichoix)'; - $lang->column_type_list['select'] = 'Case d\'option (seul choix)'; - $lang->column_type_list['kr_zip'] = 'Code postal (coréen)'; - $lang->column_type_list['date'] = 'Jour (yyyy/mm/dd)'; - //$lang->column_type_list['jp_zip'] = 'code postal (japonais)'; - $lang->column_name = 'Nom de la colonne'; - $lang->column_title = 'Titre de la colonne'; - $lang->default_value = 'Valeur par défaut'; - $lang->is_active = 'Actif'; - $lang->is_required = 'Champ obligatoire'; - - // Messages d\'alerte de le Javascript qui est utilisé dans les filtres en XML - $lang->filter->isnull = 'Entrez une valeur pour %s'; - $lang->filter->outofrange = 'Aligner la longueur du texte de %s'; - $lang->filter->equalto = "La valeur de %s est invalide."; - $lang->filter->invalid_email = "Le format de %s est invalide. ex) zbxe@zeroboard.com"; - $lang->filter->invalid_user_id = $lang->filter->invalid_userid = "La format de %s n\'est pas convenable.\\nToutes les lettres devraient se composer des alphabets, des nombres ou du soulignage(_) Et la première lettre doit être un des alphabet."; - $lang->filter->invalid_homepage = "La format de %s n\'est pas convenable. ex) http://www.zeroboard.com"; - $lang->filter->invalid_korean = "La format de %s n\'est pas convenable. Entrez seulement en coréen, SVP"; - $lang->filter->invalid_korean_number = "La format de %s n\'est pas convenable. Entrez seulement en alphabet coréen ou en nombres, SVP."; - $lang->filter->invalid_alpha = "La format de %s n\'est pas convenable. Entrez seulement en alphabet, SVP."; - $lang->filter->invalid_alpha_number = "La format de %s n\'est pas convenable. Entrez seulement en alphabet ou en nombres."; - $lang->filter->invalid_number = "La format de %s n\'est pas convenable. Entrez seulement en numéros."; -?> +cmd_write = 'Ecrire'; + $lang->cmd_reply = 'Répondre'; + $lang->cmd_delete = 'Supprimer'; + $lang->cmd_modify = 'Modifier'; + $lang->cmd_edit = 'Editer'; + $lang->cmd_view = 'Voir'; + $lang->cmd_view_all = 'Voir Tous'; + $lang->cmd_list = 'Liste'; + $lang->cmd_prev = 'Précédent'; + $lang->cmd_next = 'Suivant'; + $lang->cmd_send_trackback = 'Envoyer Rétrolien'; + $lang->cmd_registration = $lang->cmd_submit = 'Enrégistrer'; + $lang->cmd_comment_registration = 'Ajouter un Commentaire'; + $lang->cmd_insert = 'Insérer'; + $lang->cmd_save = 'Conserver'; + $lang->cmd_load = 'Charger'; + $lang->cmd_input = 'Entrer'; + $lang->cmd_search = 'Rechercher'; + $lang->cmd_cancel = 'Annuler'; + $lang->cmd_back = 'Retourner'; + $lang->cmd_vote = 'Recommander'; + $lang->cmd_vote_down = 'Critiquer'; + $lang->cmd_declare = 'Accuser'; + $lang->cmd_cancel_declare = 'Annuler l\'Accusation'; + $lang->cmd_declared_list = 'Liste de l\'Accusation'; + $lang->cmd_copy = 'Copier'; + $lang->cmd_move = 'Bouger'; + $lang->cmd_move_up = 'En haut'; + $lang->cmd_move_down = 'En bas'; + $lang->cmd_add_indent = 'Ajouter un Rentré'; + $lang->cmd_remove_indent = 'Enlever un Rentré'; + $lang->cmd_management = 'Gérer'; + $lang->cmd_make = 'Créer'; + $lang->cmd_select = 'Choisir'; + $lang->cmd_select_all = 'Choisir Tous'; + $lang->cmd_unselect_all = 'Annuler Tous'; + $lang->cmd_reverse_all = 'Renverser la Sélection'; + $lang->cmd_close_all = 'Fermer Tous'; + $lang->cmd_open_all = 'Ouvrir Tous'; + $lang->cmd_reload = 'Recharger'; + $lang->cmd_close = 'Fermer'; + $lang->cmd_open = 'Ouvrir'; + $lang->cmd_setup = 'Configuration'; + $lang->cmd_addition_setup = 'Configuration Additionnelle'; + $lang->cmd_option = 'Option'; + $lang->cmd_apply = 'Appliquer'; + $lang->cmd_open_calendar = 'Choisir un Jour'; + $lang->cmd_send = 'Envoyer'; + $lang->cmd_print = 'Imprimer'; + $lang->cmd_scrap = 'Coupure'; + $lang->cmd_preview = 'Avant-première'; + $lang->cmd_reset = 'Restaurer'; + $lang->cmd_remake_cache = "Recréer la Cachette du Fichier"; + $lang->cmd_publish = "Publier"; + $lang->cmd_layout_setup = 'Configurer la Mise en page'; + $lang->cmd_layout_edit = 'Editer la Mise en page'; + + $lang->enable = 'Valide'; + $lang->disable = 'Invalide'; + + // Mots essentiels + $lang->no = 'No'; + $lang->notice = 'Notice'; + $lang->secret = 'Secret'; + $lang->category = $lang->category_srl = 'Catégorie'; + $lang->document_srl = 'Numéro de série du Document'; + $lang->user_id = 'Compte'; + $lang->author = 'Auteur'; + $lang->password = 'Mot de Passe'; + $lang->password1 = 'Mot de Passe'; + $lang->password2 = 'Confirmer du Mot de Passe'; + $lang->admin_id = 'Compte d\'Administrateur'; + $lang->writer = 'Auteur'; + $lang->user_name = 'Nom d\'utilisateur'; + $lang->nick_name = 'Surnom'; + $lang->email_address = 'Courriel'; + $lang->homepage = 'Page d\'accueil'; + $lang->blog = 'Blogue'; + $lang->birthday = 'Anniversaire'; + $lang->browser_title = 'Titre de Navigateur'; + $lang->title = 'Titre'; + $lang->title_content = 'Titre + Contenu'; + $lang->topic = 'Sujet'; + $lang->replies = 'Répondse'; + $lang->content = 'Contenu'; + $lang->document = 'Document'; + $lang->comment = 'Commentaire'; + $lang->description = 'Description'; + $lang->trackback = 'Rétrolien'; + $lang->tag = 'Tag'; + $lang->allow_comment = 'Permettre Commentaires'; + $lang->lock_comment = 'Bloquer Commentaires'; + $lang->allow_trackback = 'Permettre Rétrolien'; + $lang->uploaded_file = 'Fichier Attaché'; + $lang->grant = 'Permission'; + $lang->target = 'Cible'; + $lang->total = 'Total'; + $lang->total_count = 'Somme'; + $lang->ipaddress = 'Addresse IP'; + $lang->path = 'Chemin'; + $lang->cart = 'Article Choisi'; + $lang->friend = 'Les Amis'; + $lang->notify = 'Annoncer'; + $lang->order_target = 'Align Target'; + $lang->order_type = 'Sorting Type'; + $lang->order_asc = 'Ascend'; + $lang->order_desc = 'Descendre'; + + $lang->mid = 'Nom'; + $lang->layout = 'Mise en Page'; + $lang->widget = 'Widget'; + $lang->module = 'Module'; + $lang->skin = 'Thème'; + $lang->colorset = 'Arrangement de couleur'; + $lang->extra_vars = 'Variables Supplémentaires'; + + $lang->document_url = 'Document URL'; + $lang->trackback_url = 'Rétrolien URL'; + $lang->blog_name = 'Nom du Blogue'; + $lang->excerpt = 'Extrait'; + + $lang->document_count = ' Documents'; + $lang->page_count = 'Pages'; + $lang->list_count = 'Items'; + $lang->search_list_count = 'Trouvés'; + $lang->readed_count = ' Vues'; + $lang->voted_count = 'Recommandés'; + $lang->comment_count = 'Commentairesés'; + $lang->member_count = 'Membres'; + $lang->date = 'Jour'; + $lang->regdate = 'Enrégistré'; + $lang->last_update = 'Dernière Mise à Jour'; + $lang->last_post = 'Dernière Affichage'; + $lang->signup_date = 'Jour de s\'inscrire'; + $lang->last_login = 'Dernière connexion'; + $lang->first_page = 'Première Page'; + $lang->last_page = 'Dernière Page'; + $lang->search_target = 'Cible à Rechercher'; + $lang->search_keyword = 'Mot-clé à Recherche'; + $lang->is_default = 'Par Défaut'; + + $lang->no_documents = 'Aucun Document'; + + $lang->board_manager = 'Arrangements des Panneau'; + $lang->member_manager = 'Arrangements des Membres'; + $lang->layout_manager = 'Arrangements de Mise en Page'; + + $lang->use = 'Utiliser'; + $lang->notuse = 'Pas Utilisé'; + $lang->not_exists = 'Rien'; + + $lang->public = 'public'; + $lang->private = 'privé'; + + $lang->unit_sec = 'seconde'; + $lang->unit_min = 'minute'; + $lang->unit_hour = 'heure'; + $lang->unit_day = 'jour'; + $lang->unit_week = 'semaine'; + $lang->unit_month = 'mois'; + $lang->unit_year = 'année';; + + // Descriptions et information + $lang->about_tag = 'Vous pouvez enrégistrer plusieurs tags en utilisant ,(virgule) entre chaque tag'; + $lang->about_layout = 'Le Mise en Page décore l\'apparence des modules. Vous pouvez les configurer avec le menu de Mise en Page en haut'; + + // Messages et alertes + $lang->msg_call_server = 'En demandant sur le serveur, attendez svp.'; + $lang->msg_db_not_setted = 'La configuration de DB n\'est pas été établie.'; + $lang->msg_invalid_queryid = 'La valeur spécifiée de query ID est invalide.'; + $lang->msg_not_permitted = 'Vous n\'avez pas le droit d\'accès.'; + $lang->msg_input_password = 'Veuillez entrer votre mot de passe.'; + $lang->msg_invalid_document = 'Nombre de Document invalide'; + $lang->msg_invalid_request = 'Requête invalide'; + $lang->msg_invalid_password = 'Mot de passe invalide'; + $lang->msg_error_occured = 'Une erreur a lieu'; + $lang->msg_not_founded = 'La cible n\'est pas trouvée.'; + $lang->msg_no_result = 'Aucun Résultat'; + + $lang->msg_not_permitted_act = 'Vous n\'êtes pas autorisés à exécuter l\'action que vous demandez.'; + $lang->msg_module_is_not_exists = 'Le module demandé n\'a pas été trouvé.'; + $lang->msg_module_is_not_standalone = 'Le module demandé ne peut pas être exécuté indépendamment.'; + + $lang->success_registed = 'Enregistré avec succès'; + $lang->success_declared = 'Accusé avec succès'; + $lang->success_updated = 'Mise à jour avec succès'; + $lang->success_deleted = 'Supprimé avec succès'; + $lang->success_voted = 'Voté avec succès'; + $lang->success_moved = 'Bougé avec succès'; + $lang->success_sended = 'Envoyé avec succès'; + $lang->success_reset = 'Restauré avec succès'; + $lang->success_leaved = 'Toutes vos informations sont complètement supprimés'; + $lang->success_saved = 'Conservé avec succès'; + + $lang->fail_to_delete = 'N\'a pas pu être supprimé.'; + $lang->fail_to_move = 'N\'a pas pu être bougé'; + + $lang->failed_voted = 'N\'a pas pu recommander'; + $lang->failed_declared = 'N\'a pas pu accuser'; + $lang->fail_to_delete_have_children = 'Essayez encore après avoir suprimé les reponses, SVP'; + + $lang->confirm_submit = 'Vous voulez sûrement valider?'; + $lang->confirm_logout = 'Vous voulez sûrement fermer la session?'; + $lang->confirm_vote = 'Vous voulez recommander?'; + $lang->confirm_delete = 'Vous voulez sûrement supprimer?'; + $lang->confirm_move = 'Vous voulez sûrement bouger?'; + $lang->confirm_reset = 'Vous voulez sûrement restaurer?'; + $lang->confirm_leave = 'Vous voulez sûrement supprimer votre compte?'; + + $lang->column_type = 'Types des colonnes'; + $lang->column_type_list['text'] = 'Texte en une seul ligne'; + $lang->column_type_list['homepage'] = 'URL'; + $lang->column_type_list['email_address'] = 'Courriel'; + $lang->column_type_list['tel'] = 'Numéro de Telephone'; + $lang->column_type_list['textarea'] = 'Texte en plusieurs lignes'; + $lang->column_type_list['checkbox'] = 'Case à cocher (multichoix)'; + $lang->column_type_list['select'] = 'Case d\'option (seul choix)'; + $lang->column_type_list['kr_zip'] = 'Code postal (coréen)'; + $lang->column_type_list['date'] = 'Jour (yyyy/mm/dd)'; + //$lang->column_type_list['jp_zip'] = 'code postal (japonais)'; + $lang->column_name = 'Nom de la colonne'; + $lang->column_title = 'Titre de la colonne'; + $lang->default_value = 'Valeur par défaut'; + $lang->is_active = 'Actif'; + $lang->is_required = 'Champ obligatoire'; + + // Messages d\'alerte de le Javascript qui est utilisé dans les filtres en XML + $lang->filter->isnull = 'Entrez une valeur pour %s'; + $lang->filter->outofrange = 'Aligner la longueur du texte de %s'; + $lang->filter->equalto = "La valeur de %s est invalide."; + $lang->filter->invalid_email = "Le format de %s est invalide. ex) zbxe@zeroboard.com"; + $lang->filter->invalid_user_id = $lang->filter->invalid_userid = "La format de %s n\'est pas convenable.\\nToutes les lettres devraient se composer des alphabets, des nombres ou du soulignage(_) Et la première lettre doit être un des alphabet."; + $lang->filter->invalid_homepage = "La format de %s n\'est pas convenable. ex) http://www.zeroboard.com"; + $lang->filter->invalid_korean = "La format de %s n\'est pas convenable. Entrez seulement en coréen, SVP"; + $lang->filter->invalid_korean_number = "La format de %s n\'est pas convenable. Entrez seulement en alphabet coréen ou en nombres, SVP."; + $lang->filter->invalid_alpha = "La format de %s n\'est pas convenable. Entrez seulement en alphabet, SVP."; + $lang->filter->invalid_alpha_number = "La format de %s n\'est pas convenable. Entrez seulement en alphabet ou en nombres."; + $lang->filter->invalid_number = "La format de %s n\'est pas convenable. Entrez seulement en numéros."; +?> diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php index 26b482ac1..cb12987ce 100644 --- a/common/lang/jp.lang.php +++ b/common/lang/jp.lang.php @@ -109,6 +109,10 @@ $lang->cart = '選択項目'; $lang->friend = '友達'; $lang->notify = 'アラート'; + $lang->order_target = 'ソート対象'; + $lang->order_type = 'ソート方法'; + $lang->order_asc = '昇る'; + $lang->order_desc = '降下'; $lang->mid = 'モジュール名'; $lang->layout = 'レイアウト'; @@ -129,6 +133,7 @@ $lang->search_list_count = '検索リスト数'; $lang->readed_count = '照合数'; $lang->voted_count = '推薦数'; + $lang->comment_count = 'コメント数'; $lang->member_count = '会員数'; $lang->date = '日付'; $lang->regdate = '登録日'; diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index 94088631c..241db6e65 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -109,6 +109,10 @@ $lang->cart = '선택항목'; $lang->friend = '친구'; $lang->notify = '알림'; + $lang->order_target = '정렬대상'; + $lang->order_type = '정렬방법'; + $lang->order_asc = '올림차순'; + $lang->order_desc = '내림차순'; $lang->mid = '모듈이름'; $lang->layout = '레이아웃'; @@ -129,6 +133,7 @@ $lang->search_list_count = '검색 목록 수'; $lang->readed_count = '조회수'; $lang->voted_count = '추천수'; + $lang->comment_count = '댓글수'; $lang->member_count = '회원수'; $lang->date = '날짜'; $lang->regdate = '등록일'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index 35061a733..b0ecc74c2 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -109,6 +109,10 @@ $lang->cart = 'Выбранный объект'; $lang->friend = 'Друзья'; $lang->notify = 'Уведомление'; + $lang->order_target = 'согласовать цели'; + $lang->order_type = 'сортировки типа'; + $lang->order_asc = 'взойти'; + $lang->order_desc = 'спустится'; $lang->mid = 'Имя Модуля'; $lang->layout = 'Лейаут'; @@ -129,6 +133,7 @@ $lang->search_list_count = 'Поиск Список кол'; $lang->readed_count = 'Хиты'; $lang->voted_count = 'Голоса'; + $lang->comment_count = 'комментарии'; $lang->member_count = 'Кол-во пользователей'; $lang->date = 'Дата'; $lang->regdate = 'Дата регистрации'; diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index c94bb05bd..c428f03fa 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -109,6 +109,10 @@ $lang->cart = '选择项目'; $lang->friend = '好友'; $lang->notify = '通告'; + $lang->order_target = '排序对象'; + $lang->order_type = '排序方式'; + $lang->order_asc = '继承皇位'; + $lang->order_desc = '降临'; $lang->mid = '模块名称'; $lang->layout = '布局'; @@ -129,6 +133,7 @@ $lang->search_list_count = '搜索目录数'; $lang->readed_count = '查看'; $lang->voted_count = '推荐'; + $lang->comment_count = '评论'; $lang->member_count = '会员数'; $lang->date = '日期'; $lang->regdate = '登录日期'; diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index 52bb285e2..874b0eab8 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -181,6 +181,9 @@ 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'; + if($extra_var->order_target) $extra_var->consultation = 'N'; + if(!in_array($extra_var->order_target,$this->order_target)) $extra_var->order_target = 'list_order'; + if(!in_array($extra_var->order_type,array('asc','desc'))) $extra_var->order_type = 'asc'; unset($extra_var->act); unset($extra_var->page); unset($extra_var->board_name); diff --git a/modules/board/board.admin.view.php b/modules/board/board.admin.view.php index e95d0ae1d..bbf983516 100644 --- a/modules/board/board.admin.view.php +++ b/modules/board/board.admin.view.php @@ -42,6 +42,12 @@ // 템플릿 경로 지정 (board의 경우 tpl에 관리자용 템플릿 모아놓음) $template_path = sprintf("%stpl/",$this->module_path); $this->setTemplatePath($template_path); + + // 정렬 옵션을 세팅 + foreach($this->order_target as $key) $order_target[$key] = Context::getLang($key); + $order_target['list_order'] = Context::getLang('document_srl'); + $order_target['update_order'] = Context::getLang('last_update'); + Context::set('order_target', $order_target); } /** diff --git a/modules/board/board.class.php b/modules/board/board.class.php index 72c9a1e7c..89ece2e65 100644 --- a/modules/board/board.class.php +++ b/modules/board/board.class.php @@ -9,6 +9,8 @@ var $search_option = array('title','content','title_content','comment','user_name','nick_name','user_id','tag'); ///< 검색 옵션 + var $order_target = array('list_order', 'update_order', 'regdate', 'voted_count', 'readed_count', 'comment_count', 'title'); // 정렬 옵션 + var $skin = "default"; ///< 스킨 이름 var $list_count = 20; ///< 한 페이지에 나타날 글의 수 var $page_count = 10; ///< 페이지의 수 diff --git a/modules/board/board.view.php b/modules/board/board.view.php index 4aaae7a11..eb3e21ca6 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -164,12 +164,13 @@ $args->search_target = Context::get('search_target'); ///< 검색 대상 (title, contents...) $args->search_keyword = Context::get('search_keyword'); ///< 검색어 if($this->module_info->use_category=='Y') $args->category_srl = Context::get('category'); ///< 카테고리 사용시 선택된 카테고리 + $args->sort_index = Context::get('sort_index'); $args->order_type = Context::get('order_type'); // 지정된 정렬값이 없다면 스킨에서 설정한 정렬 값을 이용함 - if(!$args->sort_index) $args->sort_index = $this->module_info->order_target?$this->module_info->order_target:'list_order'; - if(!$args->order_type) $args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc'; + if(!in_array($args->sort_index, $this->order_target)) $args->sort_index = $this->module_info->order_target?$this->module_info->order_target:'list_order'; + if(!in_array($args->order_type, array('asc','desc'))) $args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc'; // 특정 문서의 permalink로 직접 접속할 경우 page값을 직접 구함 if(count($_GET)==1 && isset($_GET['document_srl']) && $oDocument->isExists() && !$oDocument->isNotice()) { diff --git a/modules/board/skins/xe_board/skin.xml b/modules/board/skins/xe_board/skin.xml index a41bf3338..adc325fb8 100644 --- a/modules/board/skins/xe_board/skin.xml +++ b/modules/board/skins/xe_board/skin.xml @@ -115,34 +115,6 @@ blog forum - - 정렬 대상 - ソート対象 - 排序对象 - Align Target - Alinear Meta - 등록된 순서 또는 변경된 순서로 정렬을 할 수 있습니다. - 登録順、変更順にソートできます。 - 可对主题按发表顺或最后更新顺进行排序。 - It can align articles as registered order or modified order. - Puede alinear los artículos registrados como fin o modificar el orden. - list_order - update_order - - - 정렬 방법 - ソート方法 - 排序方式 - Sorting Type - Tipo de ordenamiento - 정렬대상을 내림차순 또는 올림차순으로 정렬할 수 있습니다. - ソート方法を、降順、昇順にできます。 - 对其排序对象可进行升序/降序方式排序。 - You can sort target articles by asending or desending order. - Usted puede ordenar los documentos en orden acendente o en orden descendente. - asc - desc - 로그인 정보 출력 显示会员信息组 diff --git a/modules/board/tpl/board_info.html b/modules/board/tpl/board_info.html index 1ea2fef2e..7f9d6c5ad 100644 --- a/modules/board/tpl/board_info.html +++ b/modules/board/tpl/board_info.html @@ -35,6 +35,14 @@ + + + + + + + + diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index 711005765..0bd8190cb 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -84,6 +84,26 @@ + + + + + + + + @@ -226,8 +237,11 @@ -
{zdate($val->value,"Y-m-d")}
- {$lang->cmd_open_calendar} +
{zdate($val->value,"Y-m-d")}
+ + diff --git a/modules/member/skins/default/signup_form.html b/modules/member/skins/default/signup_form.html index 00937ca31..e5751eadd 100644 --- a/modules/member/skins/default/signup_form.html +++ b/modules/member/skins/default/signup_form.html @@ -1,8 +1,18 @@ - + - + + + + + + + + + + +

{$lang->msg_new_member}

@@ -78,8 +88,7 @@
@@ -89,6 +98,9 @@
{$lang->use_category} {$lang->use}{$lang->notuse}
{$lang->order_target}{$order_target[$module_info->order_target]}
{$lang->order_type}{$lang->order_asc}{$lang->order_desc}
{$lang->list_count} {$module_info->list_count?$module_info->list_count:20}
{$lang->order_target} + + +
{$lang->order_type} + +
{$lang->list_count} diff --git a/modules/board/tpl/filter/insert_board.xml b/modules/board/tpl/filter/insert_board.xml index 6863a4cf1..7a2dca8e3 100644 --- a/modules/board/tpl/filter/insert_board.xml +++ b/modules/board/tpl/filter/insert_board.xml @@ -14,6 +14,8 @@ + + From 456bdc70e53f439155f4b625c0c71766ca18a5e6 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Apr 2008 09:36:23 +0000 Subject: [PATCH 30/49] =?UTF-8?q?#404=20=EB=82=A0=EC=A7=9C=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EC=8B=9C=20=ED=8C=9D=EC=97=85=EC=B0=BD=EC=9D=B4=20?= =?UTF-8?q?=EC=95=84=EB=8B=8C=20layer=EB=A1=9C=20=EC=B6=9C=EB=A0=A5?= =?UTF-8?q?=EB=90=98=EB=8A=94=20=EA=B3=B5=EA=B0=9C=20=EC=86=8C=EC=8A=A4=20?= =?UTF-8?q?=EC=9D=B4=EC=9A=A9=ED=95=98=EC=97=AC=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85/=EC=A0=95=EB=B3=B4=EC=88=98=EC=A0=95,=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=20=ED=99=95=EC=9E=A5=ED=95=84?= =?UTF-8?q?=EB=93=9C=EB=93=B1=EC=97=90=EC=84=9C=20=EB=82=A0=EC=A7=9C=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=ED=98=95=ED=83=9C=EB=A5=BC=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@4071 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/calendar-en.js | 127 ++ common/js/calendar-ko.js | 124 ++ common/js/calendar-setup.js | 202 ++ common/js/calendar.js | 1806 +++++++++++++++++ modules/board/skins/xe_board/css/common.css | 2 + .../board/skins/xe_board/extra_var_form.html | 17 +- .../board/skins/xe_guestbook/css/common.css | 2 + .../skins/xe_guestbook/extra_var_form.html | 17 +- modules/counter/tpl/index.html | 33 +- modules/member/skins/default/css/common.css | 5 +- modules/member/skins/default/modify_info.html | 26 +- modules/member/skins/default/signup_form.html | 26 +- modules/member/tpl/css/member_admin.css | 1 + modules/member/tpl/insert_member.html | 34 +- 14 files changed, 2395 insertions(+), 27 deletions(-) create mode 100644 common/js/calendar-en.js create mode 100644 common/js/calendar-ko.js create mode 100644 common/js/calendar-setup.js create mode 100644 common/js/calendar.js diff --git a/common/js/calendar-en.js b/common/js/calendar-en.js new file mode 100644 index 000000000..0dbde793d --- /dev/null +++ b/common/js/calendar-en.js @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar EN language +// Author: Mihai Bazon, +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December"); + +// short month names +Calendar._SMN = new Array +("Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "About the calendar"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; +Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; +Calendar._TT["GO_TODAY"] = "Go Today"; +Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; +Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; +Calendar._TT["SEL_DATE"] = "Select date"; +Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; +Calendar._TT["PART_TODAY"] = " (today)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "Display %s first"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "0,6"; + +Calendar._TT["CLOSE"] = "Close"; +Calendar._TT["TODAY"] = "Today"; +Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "wk"; +Calendar._TT["TIME"] = "Time:"; diff --git a/common/js/calendar-ko.js b/common/js/calendar-ko.js new file mode 100644 index 000000000..6023b743a --- /dev/null +++ b/common/js/calendar-ko.js @@ -0,0 +1,124 @@ +// ** I18N + +// Calendar KO language +// Author: Mihai Bazon, +// Translation: Yourim Yi +// Encoding: UTF-8 +// lang : ko +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names + +Calendar._DN = new Array +("일요일", + "월요일", + "화요일", + "수요일", + "목요일", + "금요일", + "토요일", + "일요일"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("일", + "월", + "화", + "수", + "목", + "금", + "토", + "일"); + +// full month names +Calendar._MN = new Array +("1월", + "2월", + "3월", + "4월", + "5월", + "6월", + "7월", + "8월", + "9월", + "10월", + "11월", + "12월"); + +// short month names +Calendar._SMN = new Array +("1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "calendar 소개"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"\n"+ +"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" + +"\n"+ +"GNU LGPL 라이센스로 배포됩니다. \n"+ +"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." + +"\n\n" + +"날짜 선택:\n" + +"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" + +"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\n" + +"- 계속 누르고 있으면 위 값들을 빠르게 선택하실 수 있습니다."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"시간 선택:\n" + +"- 마우스로 누르면 시간이 증가합니다\n" + +"- Shift 키와 함께 누르면 감소합니다\n" + +"- 누른 상태에서 마우스를 움직이면 좀 더 빠르게 값이 변합니다.\n"; + +Calendar._TT["PREV_YEAR"] = "지난 해 (길게 누르면 목록)"; +Calendar._TT["PREV_MONTH"] = "지난 달 (길게 누르면 목록)"; +Calendar._TT["GO_TODAY"] = "오늘 날짜로"; +Calendar._TT["NEXT_MONTH"] = "다음 달 (길게 누르면 목록)"; +Calendar._TT["NEXT_YEAR"] = "다음 해 (길게 누르면 목록)"; +Calendar._TT["SEL_DATE"] = "날짜를 선택하세요"; +Calendar._TT["DRAG_TO_MOVE"] = "마우스 드래그로 이동 하세요"; +Calendar._TT["PART_TODAY"] = " (오늘)"; + +Calendar._TT["DAY_FIRST"] = "%s 먼저 표시"; + +Calendar._TT["WEEKEND"] = "0,6"; + +Calendar._TT["CLOSE"] = "닫기"; +Calendar._TT["TODAY"] = "오늘"; +Calendar._TT["TIME_PART"] = "(Shift-)클릭 또는 드래그 하세요"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]"; + +Calendar._TT["WK"] = "주"; +Calendar._TT["TIME"] = "시:"; diff --git a/common/js/calendar-setup.js b/common/js/calendar-setup.js new file mode 100644 index 000000000..78e69564b --- /dev/null +++ b/common/js/calendar-setup.js @@ -0,0 +1,202 @@ +/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ + * --------------------------------------------------------------------------- + * + * The DHTML Calendar + * + * Details and latest version at: + * http://dynarch.com/mishoo/calendar.epl + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + * + * This file defines helper functions for setting up the calendar. They are + * intended to help non-programmers get a working calendar on their site + * quickly. This script should not be seen as part of the calendar. It just + * shows you what one can do with the calendar, while in the same time + * providing a quick and simple method for setting it up. If you need + * exhaustive customization of the calendar creation process feel free to + * modify this code to suit your needs (this is recommended and much better + * than modifying calendar.js itself). + */ + +// $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $ + +/** + * This function "patches" an input field (or other element) to use a calendar + * widget for date selection. + * + * The "params" is a single object that can have the following properties: + * + * prop. name | description + * ------------------------------------------------------------------------------------------------- + * inputField | the ID of an input field to store the date + * displayArea | the ID of a DIV or other element to show the date + * button | ID of a button or other element that will trigger the calendar + * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") + * ifFormat | date format that will be stored in the input field + * daFormat | the date format that will be used to display the date in displayArea + * singleClick | (true/false) wether the calendar is in single click mode or not (default: true) + * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. + * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation + * range | array with 2 elements. Default: [1900, 2999] -- the range of years available + * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers + * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID + * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) + * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar + * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) + * onClose | function that gets called when the calendar is closed. [default] + * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. + * date | the date that the calendar will be initially displayed to + * showsTime | default: false; if true the calendar will include a time selector + * timeFormat | the time format; can be "12" or "24", default is "12" + * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close + * step | configures the step of the years in drop-down boxes; default: 2 + * position | configures the calendar absolute position; default: null + * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible + * showOthers | if "true" (but default: "false") it will show days from other months too + * + * None of them is required, they all have default values. However, if you + * pass none of "inputField", "displayArea" or "button" you'll get a warning + * saying "nothing to setup". + */ +Calendar.setup = function (params) { + function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; + + param_default("inputField", null); + param_default("displayArea", null); + param_default("button", null); + param_default("eventName", "click"); + param_default("ifFormat", "%Y/%m/%d"); + param_default("daFormat", "%Y/%m/%d"); + param_default("singleClick", true); + param_default("disableFunc", null); + param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined + param_default("dateText", null); + param_default("firstDay", null); + param_default("align", "Br"); + param_default("range", [1900, 2999]); + param_default("weekNumbers", true); + param_default("flat", null); + param_default("flatCallback", null); + param_default("onSelect", null); + param_default("onClose", null); + param_default("onUpdate", null); + param_default("date", null); + param_default("showsTime", false); + param_default("timeFormat", "24"); + param_default("electric", true); + param_default("step", 2); + param_default("position", null); + param_default("cache", false); + param_default("showOthers", false); + param_default("multiple", null); + + var tmp = ["inputField", "displayArea", "button"]; + for (var i in tmp) { + if (typeof params[tmp[i]] == "string") { + params[tmp[i]] = document.getElementById(params[tmp[i]]); + } + } + if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) { + alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code"); + return false; + } + + function onSelect(cal) { + var p = cal.params; + var update = (cal.dateClicked || p.electric); + if (update && p.inputField) { + p.inputField.value = cal.date.print(p.ifFormat); + if (typeof p.inputField.onchange == "function") + p.inputField.onchange(); + } + if (update && p.displayArea) + p.displayArea.innerHTML = cal.date.print(p.daFormat); + if (update && typeof p.onUpdate == "function") + p.onUpdate(cal); + if (update && p.flat) { + if (typeof p.flatCallback == "function") + p.flatCallback(cal); + } + if (update && p.singleClick && cal.dateClicked) + cal.callCloseHandler(); + }; + + if (params.flat != null) { + if (typeof params.flat == "string") + params.flat = document.getElementById(params.flat); + if (!params.flat) { + alert("Calendar.setup:\n Flat specified but can't find parent."); + return false; + } + var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); + cal.showsOtherMonths = params.showOthers; + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.params = params; + cal.weekNumbers = params.weekNumbers; + cal.setRange(params.range[0], params.range[1]); + cal.setDateStatusHandler(params.dateStatusFunc); + cal.getDateText = params.dateText; + if (params.ifFormat) { + cal.setDateFormat(params.ifFormat); + } + if (params.inputField && typeof params.inputField.value == "string") { + cal.parseDate(params.inputField.value); + } + cal.create(params.flat); + cal.show(); + return false; + } + + var triggerEl = params.button || params.displayArea || params.inputField; + triggerEl["on" + params.eventName] = function() { + var dateEl = null; + if(params.displayArea) dateEl = params.displayArea; + else dateEl = params.inputField; + var dateFmt = params.inputField ? params.ifFormat : params.daFormat; + var mustCreate = false; + var cal = window.calendar; + if (dateEl) + params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt); + if (!(cal && params.cache)) { + window.calendar = cal = new Calendar(params.firstDay, + params.date, + params.onSelect || onSelect, + params.onClose || function(cal) { cal.hide(); }); + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.weekNumbers = params.weekNumbers; + mustCreate = true; + } else { + if (params.date) + cal.setDate(params.date); + cal.hide(); + } + if (params.multiple) { + cal.multiple = {}; + for (var i = params.multiple.length; --i >= 0;) { + var d = params.multiple[i]; + var ds = d.print("%Y%m%d"); + cal.multiple[ds] = d; + } + } + cal.showsOtherMonths = params.showOthers; + cal.yearStep = params.step; + cal.setRange(params.range[0], params.range[1]); + cal.params = params; + cal.setDateStatusHandler(params.dateStatusFunc); + cal.getDateText = params.dateText; + cal.setDateFormat(dateFmt); + if (mustCreate) + cal.create(); + cal.refresh(); + if (!params.position) + cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); + else + cal.showAt(params.position[0], params.position[1]); + return false; + }; + + return cal; +}; diff --git a/common/js/calendar.js b/common/js/calendar.js new file mode 100644 index 000000000..9088e0e89 --- /dev/null +++ b/common/js/calendar.js @@ -0,0 +1,1806 @@ +/* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo + * ----------------------------------------------------------- + * + * The DHTML Calendar, version 1.0 "It is happening again" + * + * Details and latest version at: + * www.dynarch.com/projects/calendar + * + * This script is developed by Dynarch.com. Visit us at www.dynarch.com. + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + */ + +// $Id: calendar.js,v 1.51 2005/03/07 16:44:31 mishoo Exp $ + +/** The Calendar object constructor. */ +Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) { + // member variables + this.activeDiv = null; + this.currentDateEl = null; + this.getDateStatus = null; + this.getDateToolTip = null; + this.getDateText = null; + this.timeout = null; + this.onSelected = onSelected || null; + this.onClose = onClose || null; + this.dragging = false; + this.hidden = false; + this.minYear = 1970; + this.maxYear = 2050; + this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; + this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; + this.isPopup = true; + this.weekNumbers = true; + this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc. + this.showsOtherMonths = false; + this.dateStr = dateStr; + this.ar_days = null; + this.showsTime = false; + this.time24 = true; + this.yearStep = 2; + this.hiliteToday = true; + this.multiple = null; + // HTML elements + this.table = null; + this.element = null; + this.tbody = null; + this.firstdayname = null; + // Combo boxes + this.monthsCombo = null; + this.yearsCombo = null; + this.hilitedMonth = null; + this.activeMonth = null; + this.hilitedYear = null; + this.activeYear = null; + // Information + this.dateClicked = false; + + // one-time initializations + if (typeof Calendar._SDN == "undefined") { + // table of short day names + if (typeof Calendar._SDN_len == "undefined") + Calendar._SDN_len = 3; + var ar = new Array(); + for (var i = 8; i > 0;) { + ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len); + } + Calendar._SDN = ar; + // table of short month names + if (typeof Calendar._SMN_len == "undefined") + Calendar._SMN_len = 3; + ar = new Array(); + for (var i = 12; i > 0;) { + ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len); + } + Calendar._SMN = ar; + } +}; + +// ** constants + +/// "static", needed for event handlers. +Calendar._C = null; + +/// detect a special case of "web browser" +Calendar.is_ie = ( /msie/i.test(navigator.userAgent) && + !/opera/i.test(navigator.userAgent) ); + +Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); + +/// detect Opera browser +Calendar.is_opera = /opera/i.test(navigator.userAgent); + +/// detect KHTML-based browsers +Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); + +// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate +// library, at some point. + +Calendar.getAbsolutePos = function(el) { + var SL = 0, ST = 0; + var is_div = /^div$/i.test(el.tagName); + if (is_div && el.scrollLeft) + SL = el.scrollLeft; + if (is_div && el.scrollTop) + ST = el.scrollTop; + var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; + if (el.offsetParent) { + var tmp = this.getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +Calendar.isRelated = function (el, evt) { + var related = evt.relatedTarget; + if (!related) { + var type = evt.type; + if (type == "mouseover") { + related = evt.fromElement; + } else if (type == "mouseout") { + related = evt.toElement; + } + } + while (related) { + if (related == el) { + return true; + } + related = related.parentNode; + } + return false; +}; + +Calendar.removeClass = function(el, className) { + if (!(el && el.className)) { + return; + } + var cls = el.className.split(" "); + var ar = new Array(); + for (var i = cls.length; i > 0;) { + if (cls[--i] != className) { + ar[ar.length] = cls[i]; + } + } + el.className = ar.join(" "); +}; + +Calendar.addClass = function(el, className) { + Calendar.removeClass(el, className); + el.className += " " + className; +}; + +// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately. +Calendar.getElement = function(ev) { + var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget; + while (f.nodeType != 1 || /^div$/i.test(f.tagName)) + f = f.parentNode; + return f; +}; + +Calendar.getTargetElement = function(ev) { + var f = Calendar.is_ie ? window.event.srcElement : ev.target; + while (f.nodeType != 1) + f = f.parentNode; + return f; +}; + +Calendar.stopEvent = function(ev) { + ev || (ev = window.event); + if (Calendar.is_ie) { + ev.cancelBubble = true; + ev.returnValue = false; + } else { + ev.preventDefault(); + ev.stopPropagation(); + } + return false; +}; + +Calendar.addEvent = function(el, evname, func) { + if (el.attachEvent) { // IE + el.attachEvent("on" + evname, func); + } else if (el.addEventListener) { // Gecko / W3C + el.addEventListener(evname, func, true); + } else { + el["on" + evname] = func; + } +}; + +Calendar.removeEvent = function(el, evname, func) { + if (el.detachEvent) { // IE + el.detachEvent("on" + evname, func); + } else if (el.removeEventListener) { // Gecko / W3C + el.removeEventListener(evname, func, true); + } else { + el["on" + evname] = null; + } +}; + +Calendar.createElement = function(type, parent) { + var el = null; + if (document.createElementNS) { + // use the XHTML namespace; IE won't normally get here unless + // _they_ "fix" the DOM2 implementation. + el = document.createElementNS("http://www.w3.org/1999/xhtml", type); + } else { + el = document.createElement(type); + } + if (typeof parent != "undefined") { + parent.appendChild(el); + } + return el; +}; + +// END: UTILITY FUNCTIONS + +// BEGIN: CALENDAR STATIC FUNCTIONS + +/** Internal -- adds a set of events to make some element behave like a button. */ +Calendar._add_evs = function(el) { + with (Calendar) { + addEvent(el, "mouseover", dayMouseOver); + addEvent(el, "mousedown", dayMouseDown); + addEvent(el, "mouseout", dayMouseOut); + if (is_ie) { + addEvent(el, "dblclick", dayMouseDblClick); + el.setAttribute("unselectable", true); + } + } +}; + +Calendar.findMonth = function(el) { + if (typeof el.month != "undefined") { + return el; + } else if (typeof el.parentNode.month != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.findYear = function(el) { + if (typeof el.year != "undefined") { + return el; + } else if (typeof el.parentNode.year != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.showMonthsCombo = function () { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var mc = cal.monthsCombo; + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + if (cal.activeMonth) { + Calendar.removeClass(cal.activeMonth, "active"); + } + var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; + Calendar.addClass(mon, "active"); + cal.activeMonth = mon; + var s = mc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var mcw = mc.offsetWidth; + if (typeof mcw == "undefined") + // Konqueror brain-dead techniques + mcw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; +}; + +Calendar.showYearsCombo = function (fwd) { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var yc = cal.yearsCombo; + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + if (cal.activeYear) { + Calendar.removeClass(cal.activeYear, "active"); + } + cal.activeYear = null; + var Y = cal.date.getFullYear() + (fwd ? 1 : -1); + var yr = yc.firstChild; + var show = false; + for (var i = 12; i > 0; --i) { + if (Y >= cal.minYear && Y <= cal.maxYear) { + yr.innerHTML = Y; + yr.year = Y; + yr.style.display = "block"; + show = true; + } else { + yr.style.display = "none"; + } + yr = yr.nextSibling; + Y += fwd ? cal.yearStep : -cal.yearStep; + } + if (show) { + var s = yc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var ycw = yc.offsetWidth; + if (typeof ycw == "undefined") + // Konqueror brain-dead techniques + ycw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; + } +}; + +// event handlers + +Calendar.tableMouseUp = function(ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + if (cal.timeout) { + clearTimeout(cal.timeout); + } + var el = cal.activeDiv; + if (!el) { + return false; + } + var target = Calendar.getTargetElement(ev); + ev || (ev = window.event); + Calendar.removeClass(el, "active"); + if (target == el || target.parentNode == el) { + Calendar.cellClick(el, ev); + } + var mon = Calendar.findMonth(target); + var date = null; + if (mon) { + date = new Date(cal.date); + if (mon.month != date.getMonth()) { + date.setMonth(mon.month); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } else { + var year = Calendar.findYear(target); + if (year) { + date = new Date(cal.date); + if (year.year != date.getFullYear()) { + date.setFullYear(year.year); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } + } + with (Calendar) { + removeEvent(document, "mouseup", tableMouseUp); + removeEvent(document, "mouseover", tableMouseOver); + removeEvent(document, "mousemove", tableMouseOver); + cal._hideCombos(); + _C = null; + return stopEvent(ev); + } +}; + +Calendar.tableMouseOver = function (ev) { + var cal = Calendar._C; + if (!cal) { + return; + } + var el = cal.activeDiv; + var target = Calendar.getTargetElement(ev); + if (target == el || target.parentNode == el) { + Calendar.addClass(el, "hilite active"); + Calendar.addClass(el.parentNode, "rowhilite"); + } else { + if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2))) + Calendar.removeClass(el, "active"); + Calendar.removeClass(el, "hilite"); + Calendar.removeClass(el.parentNode, "rowhilite"); + } + ev || (ev = window.event); + if (el.navtype == 50 && target != el) { + var pos = Calendar.getAbsolutePos(el); + var w = el.offsetWidth; + var x = ev.clientX; + var dx; + var decrease = true; + if (x > pos.x + w) { + dx = x - pos.x - w; + decrease = false; + } else + dx = pos.x - x; + + if (dx < 0) dx = 0; + var range = el._range; + var current = el._current; + var count = Math.floor(dx / 10) % range.length; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + while (count-- > 0) + if (decrease) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.innerHTML = newval; + + cal.onUpdateTime(); + } + var mon = Calendar.findMonth(target); + if (mon) { + if (mon.month != cal.date.getMonth()) { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + Calendar.addClass(mon, "hilite"); + cal.hilitedMonth = mon; + } else if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + } else { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + var year = Calendar.findYear(target); + if (year) { + if (year.year != cal.date.getFullYear()) { + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + Calendar.addClass(year, "hilite"); + cal.hilitedYear = year; + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.tableMouseDown = function (ev) { + if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { + return Calendar.stopEvent(ev); + } +}; + +Calendar.calDragIt = function (ev) { + var cal = Calendar._C; + if (!(cal && cal.dragging)) { + return false; + } + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posX = ev.pageX; + posY = ev.pageY; + } + cal.hideShowCovered(); + var st = cal.element.style; + st.left = (posX - cal.xOffs) + "px"; + st.top = (posY - cal.yOffs) + "px"; + return Calendar.stopEvent(ev); +}; + +Calendar.calDragEnd = function (ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + cal.dragging = false; + with (Calendar) { + removeEvent(document, "mousemove", calDragIt); + removeEvent(document, "mouseup", calDragEnd); + tableMouseUp(ev); + } + cal.hideShowCovered(); +}; + +Calendar.dayMouseDown = function(ev) { + var el = Calendar.getElement(ev); + if (el.disabled) { + return false; + } + var cal = el.calendar; + cal.activeDiv = el; + Calendar._C = cal; + if (el.navtype != 300) with (Calendar) { + if (el.navtype == 50) { + el._current = el.innerHTML; + addEvent(document, "mousemove", tableMouseOver); + } else + addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver); + addClass(el, "hilite active"); + addEvent(document, "mouseup", tableMouseUp); + } else if (cal.isPopup) { + cal._dragStart(ev); + } + if (el.navtype == -1 || el.navtype == 1) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); + } else if (el.navtype == -2 || el.navtype == 2) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); + } else { + cal.timeout = null; + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseDblClick = function(ev) { + Calendar.cellClick(Calendar.getElement(ev), ev || window.event); + if (Calendar.is_ie) { + document.selection.empty(); + } +}; + +Calendar.dayMouseOver = function(ev) { + var el = Calendar.getElement(ev); + if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { + return false; + } + if (el.ttip) { + if (el.ttip.substr(0, 1) == "_") { + el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1); + } + el.calendar.tooltips.innerHTML = el.ttip; + } + if (el.navtype != 300) { + Calendar.addClass(el, "hilite"); + if (el.caldate) { + Calendar.addClass(el.parentNode, "rowhilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseOut = function(ev) { + with (Calendar) { + var el = getElement(ev); + if (isRelated(el, ev) || _C || el.disabled) + return false; + removeClass(el, "hilite"); + if (el.caldate) + removeClass(el.parentNode, "rowhilite"); + if (el.calendar) + el.calendar.tooltips.innerHTML = _TT["SEL_DATE"]; + return stopEvent(ev); + } +}; + +/** + * A generic "click" handler :) handles all types of buttons defined in this + * calendar. + */ +Calendar.cellClick = function(el, ev) { + var cal = el.calendar; + var closing = false; + var newdate = false; + var date = null; + if (typeof el.navtype == "undefined") { + if (cal.currentDateEl) { + Calendar.removeClass(cal.currentDateEl, "selected"); + Calendar.addClass(el, "selected"); + closing = (cal.currentDateEl == el); + if (!closing) { + cal.currentDateEl = el; + } + } + cal.date.setDateOnly(el.caldate); + date = cal.date; + var other_month = !(cal.dateClicked = !el.otherMonth); + if (!other_month && !cal.currentDateEl) + cal._toggleMultipleDate(new Date(date)); + else + newdate = !el.disabled; + // a date was clicked + if (other_month) + cal._init(cal.firstDayOfWeek, date); + } else { + if (el.navtype == 200) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + return; + } + date = new Date(cal.date); + if (el.navtype == 0) + date.setDateOnly(new Date()); // TODAY + // unless "today" was clicked, we assume no date was clicked so + // the selected handler will know not to close the calenar when + // in single-click mode. + // cal.dateClicked = (el.navtype == 0); + cal.dateClicked = false; + var year = date.getFullYear(); + var mon = date.getMonth(); + function setMonth(m) { + var day = date.getDate(); + var max = date.getMonthDays(m); + if (day > max) { + date.setDate(max); + } + date.setMonth(m); + }; + switch (el.navtype) { + case 400: + Calendar.removeClass(el, "hilite"); + var text = Calendar._TT["ABOUT"]; + if (typeof text != "undefined") { + text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : ""; + } else { + // FIXME: this should be removed as soon as lang files get updated! + text = "Help and about box text is not translated into this language.\n" + + "If you know this language and you feel generous please update\n" + + "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + + "and send it back to to get it into the distribution ;-)\n\n" + + "Thank you!\n" + + "http://dynarch.com/mishoo/calendar.epl\n"; + } + alert(text); + return; + case -2: + if (year > cal.minYear) { + date.setFullYear(year - 1); + } + break; + case -1: + if (mon > 0) { + setMonth(mon - 1); + } else if (year-- > cal.minYear) { + date.setFullYear(year); + setMonth(11); + } + break; + case 1: + if (mon < 11) { + setMonth(mon + 1); + } else if (year < cal.maxYear) { + date.setFullYear(year + 1); + setMonth(0); + } + break; + case 2: + if (year < cal.maxYear) { + date.setFullYear(year + 1); + } + break; + case 100: + cal.setFirstDayOfWeek(el.fdow); + return; + case 50: + var range = el._range; + var current = el.innerHTML; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + if (ev && ev.shiftKey) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.innerHTML = newval; + cal.onUpdateTime(); + return; + case 0: + // TODAY will bring us here + if ((typeof cal.getDateStatus == "function") && + cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) { + return false; + } + break; + } + if (!date.equalsTo(cal.date)) { + cal.setDate(date); + newdate = true; + } else if (el.navtype == 0) + newdate = closing = true; + } + if (newdate) { + ev && cal.callHandler(); + } + if (closing) { + Calendar.removeClass(el, "hilite"); + ev && cal.callCloseHandler(); + } +}; + +// END: CALENDAR STATIC FUNCTIONS + +// BEGIN: CALENDAR OBJECT FUNCTIONS + +/** + * This function creates the calendar inside the given parent. If _par is + * null than it creates a popup calendar inside the BODY element. If _par is + * an element, be it BODY, then it creates a non-popup calendar (still + * hidden). Some properties need to be set before calling this function. + */ +Calendar.prototype.create = function (_par) { + var parent = null; + if (! _par) { + // default parent is the document body, in which case we create + // a popup calendar. + parent = document.getElementsByTagName("body")[0]; + this.isPopup = true; + } else { + parent = _par; + this.isPopup = false; + } + this.date = this.dateStr ? new Date(this.dateStr) : new Date(); + + var table = Calendar.createElement("table"); + this.table = table; + table.cellSpacing = 0; + table.cellPadding = 0; + table.calendar = this; + Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); + + var div = Calendar.createElement("div"); + this.element = div; + div.className = "calendar"; + if (this.isPopup) { + div.style.position = "absolute"; + div.style.display = "none"; + } + div.appendChild(table); + + var thead = Calendar.createElement("thead", table); + var cell = null; + var row = null; + + var cal = this; + var hh = function (text, cs, navtype) { + cell = Calendar.createElement("td", row); + cell.colSpan = cs; + cell.className = "button"; + if (navtype != 0 && Math.abs(navtype) <= 2) + cell.className += " nav"; + Calendar._add_evs(cell); + cell.calendar = cal; + cell.navtype = navtype; + cell.innerHTML = "
" + text + "
"; + return cell; + }; + + row = Calendar.createElement("tr", thead); + var title_length = 6; + (this.isPopup) && --title_length; + (this.weekNumbers) && ++title_length; + + hh("?", 1, 400).ttip = Calendar._TT["INFO"]; + this.title = hh("", title_length, 300); + this.title.className = "title"; + if (this.isPopup) { + this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; + this.title.style.cursor = "move"; + hh("×", 1, 200).ttip = Calendar._TT["CLOSE"]; + } + + row = Calendar.createElement("tr", thead); + row.className = "headrow"; + + this._nav_py = hh("«", 1, -2); + this._nav_py.ttip = Calendar._TT["PREV_YEAR"]; + + this._nav_pm = hh("‹", 1, -1); + this._nav_pm.ttip = Calendar._TT["PREV_MONTH"]; + + this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0); + this._nav_now.ttip = Calendar._TT["GO_TODAY"]; + + this._nav_nm = hh("›", 1, 1); + this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"]; + + this._nav_ny = hh("»", 1, 2); + this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"]; + + // day names + row = Calendar.createElement("tr", thead); + row.className = "daynames"; + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + cell.className = "name wn"; + cell.innerHTML = Calendar._TT["WK"]; + } + for (var i = 7; i > 0; --i) { + cell = Calendar.createElement("td", row); + if (!i) { + cell.navtype = 100; + cell.calendar = this; + Calendar._add_evs(cell); + } + } + this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild; + this._displayWeekdays(); + + var tbody = Calendar.createElement("tbody", table); + this.tbody = tbody; + + for (i = 6; i > 0; --i) { + row = Calendar.createElement("tr", tbody); + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + } + for (var j = 7; j > 0; --j) { + cell = Calendar.createElement("td", row); + cell.calendar = this; + Calendar._add_evs(cell); + } + } + + if (this.showsTime) { + row = Calendar.createElement("tr", tbody); + row.className = "time"; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + cell.innerHTML = Calendar._TT["TIME"] || " "; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = this.weekNumbers ? 4 : 3; + + (function(){ + function makeTimePart(className, init, range_start, range_end) { + var part = Calendar.createElement("span", cell); + part.className = className; + part.innerHTML = init; + part.calendar = cal; + part.ttip = Calendar._TT["TIME_PART"]; + part.navtype = 50; + part._range = []; + if (typeof range_start != "number") + part._range = range_start; + else { + for (var i = range_start; i <= range_end; ++i) { + var txt; + if (i < 10 && range_end >= 10) txt = '0' + i; + else txt = '' + i; + part._range[part._range.length] = txt; + } + } + Calendar._add_evs(part); + return part; + }; + var hrs = cal.date.getHours(); + var mins = cal.date.getMinutes(); + var t12 = !cal.time24; + var pm = (hrs > 12); + if (t12 && pm) hrs -= 12; + var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23); + var span = Calendar.createElement("span", cell); + span.innerHTML = ":"; + span.className = "colon"; + var M = makeTimePart("minute", mins, 0, 59); + var AP = null; + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + if (t12) + AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); + else + cell.innerHTML = " "; + + cal.onSetTime = function() { + var pm, hrs = this.date.getHours(), + mins = this.date.getMinutes(); + if (t12) { + pm = (hrs >= 12); + if (pm) hrs -= 12; + if (hrs == 0) hrs = 12; + AP.innerHTML = pm ? "pm" : "am"; + } + H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs; + M.innerHTML = (mins < 10) ? ("0" + mins) : mins; + }; + + cal.onUpdateTime = function() { + var date = this.date; + var h = parseInt(H.innerHTML, 10); + if (t12) { + if (/pm/i.test(AP.innerHTML) && h < 12) + h += 12; + else if (/am/i.test(AP.innerHTML) && h == 12) + h = 0; + } + var d = date.getDate(); + var m = date.getMonth(); + var y = date.getFullYear(); + date.setHours(h); + date.setMinutes(parseInt(M.innerHTML, 10)); + date.setFullYear(y); + date.setMonth(m); + date.setDate(d); + this.dateClicked = false; + this.callHandler(); + }; + })(); + } else { + this.onSetTime = this.onUpdateTime = function() {}; + } + + var tfoot = Calendar.createElement("tfoot", table); + + row = Calendar.createElement("tr", tfoot); + row.className = "footrow"; + + cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300); + cell.className = "ttip"; + if (this.isPopup) { + cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; + cell.style.cursor = "move"; + } + this.tooltips = cell; + + div = Calendar.createElement("div", this.element); + this.monthsCombo = div; + div.className = "combo"; + for (i = 0; i < Calendar._MN.length; ++i) { + var mn = Calendar.createElement("div"); + mn.className = Calendar.is_ie ? "label-IEfix" : "label"; + mn.month = i; + mn.innerHTML = Calendar._SMN[i]; + div.appendChild(mn); + } + + div = Calendar.createElement("div", this.element); + this.yearsCombo = div; + div.className = "combo"; + for (i = 12; i > 0; --i) { + var yr = Calendar.createElement("div"); + yr.className = Calendar.is_ie ? "label-IEfix" : "label"; + div.appendChild(yr); + } + + this._init(this.firstDayOfWeek, this.date); + parent.appendChild(this.element); +}; + +/** keyboard navigation, only for popup calendars */ +Calendar._keyEvent = function(ev) { + var cal = window._dynarch_popupCalendar; + if (!cal || cal.multiple) + return false; + (Calendar.is_ie) && (ev = window.event); + var act = (Calendar.is_ie || ev.type == "keypress"), + K = ev.keyCode; + if (ev.ctrlKey) { + switch (K) { + case 37: // KEY left + act && Calendar.cellClick(cal._nav_pm); + break; + case 38: // KEY up + act && Calendar.cellClick(cal._nav_py); + break; + case 39: // KEY right + act && Calendar.cellClick(cal._nav_nm); + break; + case 40: // KEY down + act && Calendar.cellClick(cal._nav_ny); + break; + default: + return false; + } + } else switch (K) { + case 32: // KEY space (now) + Calendar.cellClick(cal._nav_now); + break; + case 27: // KEY esc + act && cal.callCloseHandler(); + break; + case 37: // KEY left + case 38: // KEY up + case 39: // KEY right + case 40: // KEY down + if (act) { + var prev, x, y, ne, el, step; + prev = K == 37 || K == 38; + step = (K == 37 || K == 39) ? 1 : 7; + function setVars() { + el = cal.currentDateEl; + var p = el.pos; + x = p & 15; + y = p >> 4; + ne = cal.ar_days[y][x]; + };setVars(); + function prevMonth() { + var date = new Date(cal.date); + date.setDate(date.getDate() - step); + cal.setDate(date); + }; + function nextMonth() { + var date = new Date(cal.date); + date.setDate(date.getDate() + step); + cal.setDate(date); + }; + while (1) { + switch (K) { + case 37: // KEY left + if (--x >= 0) + ne = cal.ar_days[y][x]; + else { + x = 6; + K = 38; + continue; + } + break; + case 38: // KEY up + if (--y >= 0) + ne = cal.ar_days[y][x]; + else { + prevMonth(); + setVars(); + } + break; + case 39: // KEY right + if (++x < 7) + ne = cal.ar_days[y][x]; + else { + x = 0; + K = 40; + continue; + } + break; + case 40: // KEY down + if (++y < cal.ar_days.length) + ne = cal.ar_days[y][x]; + else { + nextMonth(); + setVars(); + } + break; + } + break; + } + if (ne) { + if (!ne.disabled) + Calendar.cellClick(ne); + else if (prev) + prevMonth(); + else + nextMonth(); + } + } + break; + case 13: // KEY enter + if (act) + Calendar.cellClick(cal.currentDateEl, ev); + break; + default: + return false; + } + return Calendar.stopEvent(ev); +}; + +/** + * (RE)Initializes the calendar to the given date and firstDayOfWeek + */ +Calendar.prototype._init = function (firstDayOfWeek, date) { + var today = new Date(), + TY = today.getFullYear(), + TM = today.getMonth(), + TD = today.getDate(); + this.table.style.visibility = "hidden"; + var year = date.getFullYear(); + if (year < this.minYear) { + year = this.minYear; + date.setFullYear(year); + } else if (year > this.maxYear) { + year = this.maxYear; + date.setFullYear(year); + } + this.firstDayOfWeek = firstDayOfWeek; + this.date = new Date(date); + var month = date.getMonth(); + var mday = date.getDate(); + var no_days = date.getMonthDays(); + + // calendar voodoo for computing the first day that would actually be + // displayed in the calendar, even if it's from the previous month. + // WARNING: this is magic. ;-) + date.setDate(1); + var day1 = (date.getDay() - this.firstDayOfWeek) % 7; + if (day1 < 0) + day1 += 7; + date.setDate(-day1); + date.setDate(date.getDate() + 1); + + var row = this.tbody.firstChild; + var MN = Calendar._SMN[month]; + var ar_days = this.ar_days = new Array(); + var weekend = Calendar._TT["WEEKEND"]; + var dates = this.multiple ? (this.datesCells = {}) : null; + for (var i = 0; i < 6; ++i, row = row.nextSibling) { + var cell = row.firstChild; + if (this.weekNumbers) { + cell.className = "day wn"; + cell.innerHTML = date.getWeekNumber(); + cell = cell.nextSibling; + } + row.className = "daysrow"; + var hasdays = false, iday, dpos = ar_days[i] = []; + for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) { + iday = date.getDate(); + var wday = date.getDay(); + cell.className = "day"; + cell.pos = i << 4 | j; + dpos[j] = cell; + var current_month = (date.getMonth() == month); + if (!current_month) { + if (this.showsOtherMonths) { + cell.className += " othermonth"; + cell.otherMonth = true; + } else { + cell.className = "emptycell"; + cell.innerHTML = " "; + cell.disabled = true; + continue; + } + } else { + cell.otherMonth = false; + hasdays = true; + } + cell.disabled = false; + cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday; + if (dates) + dates[date.print("%Y%m%d")] = cell; + if (this.getDateStatus) { + var status = this.getDateStatus(date, year, month, iday); + if (this.getDateToolTip) { + var toolTip = this.getDateToolTip(date, year, month, iday); + if (toolTip) + cell.title = toolTip; + } + if (status === true) { + cell.className += " disabled"; + cell.disabled = true; + } else { + if (/disabled/i.test(status)) + cell.disabled = true; + cell.className += " " + status; + } + } + if (!cell.disabled) { + cell.caldate = new Date(date); + cell.ttip = "_"; + if (!this.multiple && current_month + && iday == mday && this.hiliteToday) { + cell.className += " selected"; + this.currentDateEl = cell; + } + if (date.getFullYear() == TY && + date.getMonth() == TM && + iday == TD) { + cell.className += " today"; + cell.ttip += Calendar._TT["PART_TODAY"]; + } + if (weekend.indexOf(wday.toString()) != -1) + cell.className += cell.otherMonth ? " oweekend" : " weekend"; + } + } + if (!(hasdays || this.showsOtherMonths)) + row.className = "emptyrow"; + } + this.title.innerHTML = Calendar._MN[month] + ", " + year; + this.onSetTime(); + this.table.style.visibility = "visible"; + this._initMultipleDates(); + // PROFILE + // this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms"; +}; + +Calendar.prototype._initMultipleDates = function() { + if (this.multiple) { + for (var i in this.multiple) { + var cell = this.datesCells[i]; + var d = this.multiple[i]; + if (!d) + continue; + if (cell) + cell.className += " selected"; + } + } +}; + +Calendar.prototype._toggleMultipleDate = function(date) { + if (this.multiple) { + var ds = date.print("%Y%m%d"); + var cell = this.datesCells[ds]; + if (cell) { + var d = this.multiple[ds]; + if (!d) { + Calendar.addClass(cell, "selected"); + this.multiple[ds] = date; + } else { + Calendar.removeClass(cell, "selected"); + delete this.multiple[ds]; + } + } + } +}; + +Calendar.prototype.setDateToolTipHandler = function (unaryFunction) { + this.getDateToolTip = unaryFunction; +}; + +/** + * Calls _init function above for going to a certain date (but only if the + * date is different than the currently selected one). + */ +Calendar.prototype.setDate = function (date) { + if (!date.equalsTo(this.date)) { + this._init(this.firstDayOfWeek, date); + } +}; + +/** + * Refreshes the calendar. Useful if the "disabledHandler" function is + * dynamic, meaning that the list of disabled date can change at runtime. + * Just * call this function if you think that the list of disabled dates + * should * change. + */ +Calendar.prototype.refresh = function () { + this._init(this.firstDayOfWeek, this.date); +}; + +/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */ +Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) { + this._init(firstDayOfWeek, this.date); + this._displayWeekdays(); +}; + +/** + * Allows customization of what dates are enabled. The "unaryFunction" + * parameter must be a function object that receives the date (as a JS Date + * object) and returns a boolean value. If the returned value is true then + * the passed date will be marked as disabled. + */ +Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) { + this.getDateStatus = unaryFunction; +}; + +/** Customization of allowed year range for the calendar. */ +Calendar.prototype.setRange = function (a, z) { + this.minYear = a; + this.maxYear = z; +}; + +/** Calls the first user handler (selectedHandler). */ +Calendar.prototype.callHandler = function () { + if (this.onSelected) { + this.onSelected(this, this.date.print(this.dateFormat)); + } +}; + +/** Calls the second user handler (closeHandler). */ +Calendar.prototype.callCloseHandler = function () { + if (this.onClose) { + this.onClose(this); + } + this.hideShowCovered(); +}; + +/** Removes the calendar object from the DOM tree and destroys it. */ +Calendar.prototype.destroy = function () { + var el = this.element.parentNode; + el.removeChild(this.element); + Calendar._C = null; + window._dynarch_popupCalendar = null; +}; + +/** + * Moves the calendar element to a different section in the DOM tree (changes + * its parent). + */ +Calendar.prototype.reparent = function (new_parent) { + var el = this.element; + el.parentNode.removeChild(el); + new_parent.appendChild(el); +}; + +// This gets called when the user presses a mouse button anywhere in the +// document, if the calendar is shown. If the click was outside the open +// calendar this function closes it. +Calendar._checkCalendar = function(ev) { + var calendar = window._dynarch_popupCalendar; + if (!calendar) { + return false; + } + var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); + for (; el != null && el != calendar.element; el = el.parentNode); + if (el == null) { + // calls closeHandler which should hide the calendar. + window._dynarch_popupCalendar.callCloseHandler(); + return Calendar.stopEvent(ev); + } +}; + +/** Shows the calendar. */ +Calendar.prototype.show = function () { + var rows = this.table.getElementsByTagName("tr"); + for (var i = rows.length; i > 0;) { + var row = rows[--i]; + Calendar.removeClass(row, "rowhilite"); + var cells = row.getElementsByTagName("td"); + for (var j = cells.length; j > 0;) { + var cell = cells[--j]; + Calendar.removeClass(cell, "hilite"); + Calendar.removeClass(cell, "active"); + } + } + this.element.style.display = "block"; + this.hidden = false; + if (this.isPopup) { + window._dynarch_popupCalendar = this; + Calendar.addEvent(document, "keydown", Calendar._keyEvent); + Calendar.addEvent(document, "keypress", Calendar._keyEvent); + Calendar.addEvent(document, "mousedown", Calendar._checkCalendar); + } + this.hideShowCovered(); +}; + +/** + * Hides the calendar. Also removes any "hilite" from the class of any TD + * element. + */ +Calendar.prototype.hide = function () { + if (this.isPopup) { + Calendar.removeEvent(document, "keydown", Calendar._keyEvent); + Calendar.removeEvent(document, "keypress", Calendar._keyEvent); + Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar); + } + this.element.style.display = "none"; + this.hidden = true; + this.hideShowCovered(); +}; + +/** + * Shows the calendar at a given absolute position (beware that, depending on + * the calendar element style -- position property -- this might be relative + * to the parent's containing rectangle). + */ +Calendar.prototype.showAt = function (x, y) { + var s = this.element.style; + s.left = x + "px"; + s.top = y + "px"; + this.show(); +}; + +/** Shows the calendar near a given element. */ +Calendar.prototype.showAtElement = function (el, opts) { + var self = this; + var p = Calendar.getAbsolutePos(el); + if (!opts || typeof opts != "string") { + this.showAt(p.x, p.y + el.offsetHeight); + return true; + } + function fixPosition(box) { + if (box.x < 0) + box.x = 0; + if (box.y < 0) + box.y = 0; + var cp = document.createElement("div"); + var s = cp.style; + s.position = "absolute"; + s.right = s.bottom = s.width = s.height = "0px"; + document.body.appendChild(cp); + var br = Calendar.getAbsolutePos(cp); + document.body.removeChild(cp); + if (Calendar.is_ie) { + br.y += document.body.scrollTop; + br.x += document.body.scrollLeft; + } else { + br.y += window.scrollY; + br.x += window.scrollX; + } + var tmp = box.x + box.width - br.x; + if (tmp > 0) box.x -= tmp; + tmp = box.y + box.height - br.y; + if (tmp > 0) box.y -= tmp; + }; + this.element.style.display = "block"; + Calendar.continuation_for_the_fucking_khtml_browser = function() { + var w = self.element.offsetWidth; + var h = self.element.offsetHeight; + self.element.style.display = "none"; + var valign = opts.substr(0, 1); + var halign = "l"; + if (opts.length > 1) { + halign = opts.substr(1, 1); + } + // vertical alignment + switch (valign) { + case "T": p.y -= h; break; + case "B": p.y += el.offsetHeight; break; + case "C": p.y += (el.offsetHeight - h) / 2; break; + case "t": p.y += el.offsetHeight - h; break; + case "b": break; // already there + } + // horizontal alignment + switch (halign) { + case "L": p.x -= w; break; + case "R": p.x += el.offsetWidth; break; + case "C": p.x += (el.offsetWidth - w) / 2; break; + case "l": p.x += el.offsetWidth - w; break; + case "r": break; // already there + } + p.width = w; + p.height = h + 40; + self.monthsCombo.style.display = "none"; + fixPosition(p); + self.showAt(p.x, p.y); + }; + if (Calendar.is_khtml) + setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); + else + Calendar.continuation_for_the_fucking_khtml_browser(); +}; + +/** Customizes the date format. */ +Calendar.prototype.setDateFormat = function (str) { + this.dateFormat = str; +}; + +/** Customizes the tooltip date format. */ +Calendar.prototype.setTtDateFormat = function (str) { + this.ttDateFormat = str; +}; + +/** + * Tries to identify the date represented in a string. If successful it also + * calls this.setDate which moves the calendar to the given date. + */ +Calendar.prototype.parseDate = function(str, fmt) { + if (!fmt) + fmt = this.dateFormat; + this.setDate(Date.parseDate(str, fmt)); +}; + +Calendar.prototype.hideShowCovered = function () { + if (!Calendar.is_ie && !Calendar.is_opera) + return; + function getVisib(obj){ + var value = obj.style.visibility; + if (!value) { + if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C + if (!Calendar.is_khtml) + value = document.defaultView. + getComputedStyle(obj, "").getPropertyValue("visibility"); + else + value = ''; + } else if (obj.currentStyle) { // IE + value = obj.currentStyle.visibility; + } else + value = ''; + } + return value; + }; + + var tags = new Array("applet", "iframe", "select"); + var el = this.element; + + var p = Calendar.getAbsolutePos(el); + var EX1 = p.x; + var EX2 = el.offsetWidth + EX1; + var EY1 = p.y; + var EY2 = el.offsetHeight + EY1; + + for (var k = tags.length; k > 0; ) { + var ar = document.getElementsByTagName(tags[--k]); + var cc = null; + + for (var i = ar.length; i > 0;) { + cc = ar[--i]; + + p = Calendar.getAbsolutePos(cc); + var CX1 = p.x; + var CX2 = cc.offsetWidth + CX1; + var CY1 = p.y; + var CY2 = cc.offsetHeight + CY1; + + if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = cc.__msh_save_visibility; + } else { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = "hidden"; + } + } + } +}; + +/** Internal function; it displays the bar with the names of the weekday. */ +Calendar.prototype._displayWeekdays = function () { + var fdow = this.firstDayOfWeek; + var cell = this.firstdayname; + var weekend = Calendar._TT["WEEKEND"]; + for (var i = 0; i < 7; ++i) { + cell.className = "day name"; + var realday = (i + fdow) % 7; + if (i) { + cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]); + cell.navtype = 100; + cell.calendar = this; + cell.fdow = realday; + Calendar._add_evs(cell); + } + if (weekend.indexOf(realday.toString()) != -1) { + Calendar.addClass(cell, "weekend"); + } + cell.innerHTML = Calendar._SDN[(i + fdow) % 7]; + cell = cell.nextSibling; + } +}; + +/** Internal function. Hides all combo boxes that might be displayed. */ +Calendar.prototype._hideCombos = function () { + this.monthsCombo.style.display = "none"; + this.yearsCombo.style.display = "none"; +}; + +/** Internal function. Starts dragging the element. */ +Calendar.prototype._dragStart = function (ev) { + if (this.dragging) { + return; + } + this.dragging = true; + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posY = ev.clientY + window.scrollY; + posX = ev.clientX + window.scrollX; + } + var st = this.element.style; + this.xOffs = posX - parseInt(st.left); + this.yOffs = posY - parseInt(st.top); + with (Calendar) { + addEvent(document, "mousemove", calDragIt); + addEvent(document, "mouseup", calDragEnd); + } +}; + +// BEGIN: DATE OBJECT PATCHES + +/** Adds the number of days array to the Date object. */ +Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); + +/** Constants used for time computations */ +Date.SECOND = 1000 /* milliseconds */; +Date.MINUTE = 60 * Date.SECOND; +Date.HOUR = 60 * Date.MINUTE; +Date.DAY = 24 * Date.HOUR; +Date.WEEK = 7 * Date.DAY; + +Date.parseDate = function(str, fmt) { + var today = new Date(); + var y = 0; + var m = -1; + var d = 0; + var a = str.split(/\W+/); + var b = fmt.match(/%./g); + var i = 0, j = 0; + var hr = 0; + var min = 0; + for (i = 0; i < a.length; ++i) { + if (!a[i]) + continue; + switch (b[i]) { + case "%d": + case "%e": + d = parseInt(a[i], 10); + break; + + case "%m": + m = parseInt(a[i], 10) - 1; + break; + + case "%Y": + case "%y": + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + break; + + case "%b": + case "%B": + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } + } + break; + + case "%H": + case "%I": + case "%k": + case "%l": + hr = parseInt(a[i], 10); + break; + + case "%P": + case "%p": + if (/pm/i.test(a[i]) && hr < 12) + hr += 12; + else if (/am/i.test(a[i]) && hr >= 12) + hr -= 12; + break; + + case "%M": + min = parseInt(a[i], 10); + break; + } + } + if (isNaN(y)) y = today.getFullYear(); + if (isNaN(m)) m = today.getMonth(); + if (isNaN(d)) d = today.getDate(); + if (isNaN(hr)) hr = today.getHours(); + if (isNaN(min)) min = today.getMinutes(); + if (y != 0 && m != -1 && d != 0) + return new Date(y, m, d, hr, min, 0); + y = 0; m = -1; d = 0; + for (i = 0; i < a.length; ++i) { + if (a[i].search(/[a-zA-Z]+/) != -1) { + var t = -1; + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } + } + if (t != -1) { + if (m != -1) { + d = m+1; + } + m = t; + } + } else if (parseInt(a[i], 10) <= 12 && m == -1) { + m = a[i]-1; + } else if (parseInt(a[i], 10) > 31 && y == 0) { + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + } else if (d == 0) { + d = a[i]; + } + } + if (y == 0) + y = today.getFullYear(); + if (m != -1 && d != 0) + return new Date(y, m, d, hr, min, 0); + return today; +}; + +/** Returns the number of days in the current month */ +Date.prototype.getMonthDays = function(month) { + var year = this.getFullYear(); + if (typeof month == "undefined") { + month = this.getMonth(); + } + if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { + return 29; + } else { + return Date._MD[month]; + } +}; + +/** Returns the number of day in the year. */ +Date.prototype.getDayOfYear = function() { + var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); + var time = now - then; + return Math.floor(time / Date.DAY); +}; + +/** Returns the number of the week in year, as defined in ISO 8601. */ +Date.prototype.getWeekNumber = function() { + var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var DoW = d.getDay(); + d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu + var ms = d.valueOf(); // GMT + d.setMonth(0); + d.setDate(4); // Thu in Week 1 + return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; +}; + +/** Checks date and time equality */ +Date.prototype.equalsTo = function(date) { + return ((this.getFullYear() == date.getFullYear()) && + (this.getMonth() == date.getMonth()) && + (this.getDate() == date.getDate()) && + (this.getHours() == date.getHours()) && + (this.getMinutes() == date.getMinutes())); +}; + +/** Set only the year, month, date parts (keep existing time) */ +Date.prototype.setDateOnly = function(date) { + var tmp = new Date(date); + this.setDate(1); + this.setFullYear(tmp.getFullYear()); + this.setMonth(tmp.getMonth()); + this.setDate(tmp.getDate()); +}; + +/** Prints the date in a string according to the given format. */ +Date.prototype.print = function (str) { + var m = this.getMonth(); + var d = this.getDate(); + var y = this.getFullYear(); + var wn = this.getWeekNumber(); + var w = this.getDay(); + var s = {}; + var hr = this.getHours(); + var pm = (hr >= 12); + var ir = (pm) ? (hr - 12) : hr; + var dy = this.getDayOfYear(); + if (ir == 0) + ir = 12; + var min = this.getMinutes(); + var sec = this.getSeconds(); + s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N] + s["%A"] = Calendar._DN[w]; // full weekday name + s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N] + s["%B"] = Calendar._MN[m]; // full month name + // FIXME: %c : preferred date and time representation for the current locale + s["%C"] = 1 + Math.floor(y / 100); // the century number + s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) + s["%e"] = d; // the day of the month (range 1 to 31) + // FIXME: %D : american date style: %m/%d/%y + // FIXME: %E, %F, %G, %g, %h (man strftime) + s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) + s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) + s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) + s["%k"] = hr; // hour, range 0 to 23 (24h format) + s["%l"] = ir; // hour, range 1 to 12 (12h format) + s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 + s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 + s["%n"] = "\n"; // a newline character + s["%p"] = pm ? "PM" : "AM"; + s["%P"] = pm ? "pm" : "am"; + // FIXME: %r : the time in am/pm notation %I:%M:%S %p + // FIXME: %R : the time in 24-hour notation %H:%M + s["%s"] = Math.floor(this.getTime() / 1000); + s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 + s["%t"] = "\t"; // a tab character + // FIXME: %T : the time in 24-hour notation (%H:%M:%S) + s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; + s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) + s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) + // FIXME: %x : preferred date representation for the current locale without the time + // FIXME: %X : preferred time representation for the current locale without the date + s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) + s["%Y"] = y; // year with the century + s["%%"] = "%"; // a literal '%' character + + var re = /%./g; + if (!Calendar.is_ie5 && !Calendar.is_khtml) + return str.replace(re, function (par) { return s[par] || par; }); + + var a = str.match(re); + for (var i = 0; i < a.length; i++) { + var tmp = s[a[i]]; + if (tmp) { + re = new RegExp(a[i], 'g'); + str = str.replace(re, tmp); + } + } + + return str; +}; + +Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; +Date.prototype.setFullYear = function(y) { + var d = new Date(this); + d.__msh_oldSetFullYear(y); + if (d.getMonth() != this.getMonth()) + this.setDate(28); + this.__msh_oldSetFullYear(y); +}; + +// END: DATE OBJECT PATCHES + + +// global object that remembers the calendar +window._dynarch_popupCalendar = null; diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index d24e1e46c..5d7aedd87 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -319,3 +319,5 @@ html:not([lang*=""]) .boardList th { height:33px; } .memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px;} .memberSignature .profile { float:left; margin-right:20px; } .commentProfileImage { margin:0 0 10px 0; } + +.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} diff --git a/modules/board/skins/xe_board/extra_var_form.html b/modules/board/skins/xe_board/extra_var_form.html index a62342adc..5e559b9d7 100644 --- a/modules/board/skins/xe_board/extra_var_form.html +++ b/modules/board/skins/xe_board/extra_var_form.html @@ -1,5 +1,15 @@ + + + + + + + + + + {@ $val->default = explode(',',$val->default) } @@ -56,8 +66,11 @@ -
{zdate($val->value,"Y-m-d")}
- {$lang->cmd_open_calendar} +
{zdate($val->value,"Y-m-d")}
+ + diff --git a/modules/board/skins/xe_guestbook/css/common.css b/modules/board/skins/xe_guestbook/css/common.css index 8eea8d471..3c56295b6 100644 --- a/modules/board/skins/xe_guestbook/css/common.css +++ b/modules/board/skins/xe_guestbook/css/common.css @@ -277,3 +277,5 @@ h5 { padding:2px; } .listWrite { margin-bottom:20px; } + +.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} diff --git a/modules/board/skins/xe_guestbook/extra_var_form.html b/modules/board/skins/xe_guestbook/extra_var_form.html index f7d800816..c2139bcd4 100644 --- a/modules/board/skins/xe_guestbook/extra_var_form.html +++ b/modules/board/skins/xe_guestbook/extra_var_form.html @@ -1,5 +1,15 @@ + + + + + + + + + + {@ $val->default = explode(',',$val->default) } @@ -56,8 +66,11 @@ -
{zdate($val->value,"Y-m-d")}
- {$lang->cmd_open_calendar} +
{zdate($val->value,"Y-m-d")}
+ + diff --git a/modules/counter/tpl/index.html b/modules/counter/tpl/index.html index 8671330cc..7934e27e6 100644 --- a/modules/counter/tpl/index.html +++ b/modules/counter/tpl/index.html @@ -1,9 +1,32 @@ + + + + + + + + + + + + +

{$lang->counter} {$lang->cmd_management}

+
+ + + + @@ -12,11 +35,19 @@ - +
{$lang->total_counter} Visitor {number_format($total_counter->unique_visitor)}  /  Pageview : {number_format($total_counter->pageview)}{zdate($selected_date, "Y-m-d")} | calendar + {zdate($selected_date, "Y-m-d")} | + calendar + + Visitor : {number_format($selected_day_counter->unique_visitor)}  /  Pageview : {number_format($selected_day_counter->pageview)}
+
+
  • class="on">{$val}
  • diff --git a/modules/member/skins/default/css/common.css b/modules/member/skins/default/css/common.css index 3ec1dc2c2..511cc5c06 100644 --- a/modules/member/skins/default/css/common.css +++ b/modules/member/skins/default/css/common.css @@ -108,7 +108,7 @@ .memberInfoTable td checkbox { border:0; } .memberInfoTable td .fl { margin-right:.5em;} .memberInfoTable td br { clear:both;} -.memberInfoTable td p { margin:0; padding:0; font-size:.9em; color:#999999; padding-top:.5em; margin-right:.5em;} +.memberInfoTable td p { clear:both; margin:0; padding:0; 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; } @@ -125,7 +125,8 @@ .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;} +.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; } + .krZip .address2 { clear:both; margin-top:10px;} .extendDesc { clear:both; margin-top:0; font-size:.9em; color:#999999; } diff --git a/modules/member/skins/default/modify_info.html b/modules/member/skins/default/modify_info.html index 08ff8ed41..ef3e07843 100644 --- a/modules/member/skins/default/modify_info.html +++ b/modules/member/skins/default/modify_info.html @@ -1,9 +1,9 @@ {@ $member_title = $lang->msg_update_member} + - @@ -16,7 +16,15 @@ - + + + + + + + + +
    profile_image == 'Y' || $member_config->image_name=='Y' || $member_config->image_mark=='Y')-->enctype="multipart/form-data"> @@ -112,9 +120,12 @@
{$lang->birthday} -
{zdate($member_info->birthday,"Y-m-d")}
- {$lang->cmd_open_calendar} +
{zdate($member_info->birthday,"Y-m-d")}

{$lang->about_birthday}

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

{$lang->about_birthday}

+ @@ -178,9 +190,11 @@ -
{zdate($val->value,"Y-m-d")}
- {$lang->cmd_open_calendar} +
{zdate($val->value,"Y-m-d")}
+
{$val->description}
diff --git a/modules/member/tpl/css/member_admin.css b/modules/member/tpl/css/member_admin.css index b99be882e..d58a3fcce 100644 --- a/modules/member/tpl/css/member_admin.css +++ b/modules/member/tpl/css/member_admin.css @@ -5,3 +5,4 @@ .publicItem label { font-weight:normal; margin:0; padding:0; color:#666666;} span.publicItem { display:inline; margin:0; font-weight:normal; color:#666666; } +.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; } diff --git a/modules/member/tpl/insert_member.html b/modules/member/tpl/insert_member.html index 7c7439fa4..f27dc624e 100644 --- a/modules/member/tpl/insert_member.html +++ b/modules/member/tpl/insert_member.html @@ -2,6 +2,16 @@ + + + + + + + + + + @@ -69,10 +79,12 @@ @@ -110,8 +122,10 @@ @@ -225,9 +239,13 @@ - -
{zdate($val->value,"Y-m-d")}
- {$lang->cmd_open_calendar} + +
{zdate($val->value,"Y-m-d")}
+ + +

{htmlspecialchars($val->description)}

From b514953161bcfbbadc51bec25b5efc468b92c18d Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 4 Apr 2008 09:38:17 +0000 Subject: [PATCH 31/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4072 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/css/calendar-system.css | 251 +++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 common/css/calendar-system.css diff --git a/common/css/calendar-system.css b/common/css/calendar-system.css new file mode 100644 index 000000000..b22488572 --- /dev/null +++ b/common/css/calendar-system.css @@ -0,0 +1,251 @@ +/* The main calendar widget. DIV containing a table. */ + +.calendar { + position: relative; + display: none; + border: 1px solid; + border-color: #fff #000 #000 #fff; + font-size: 11px; + cursor: default; + background: Window; + color: WindowText; + font-family: tahoma,verdana,sans-serif; +} + +.calendar table { + border: 1px solid; + border-color: #fff #000 #000 #fff; + font-size: 11px; + cursor: default; + background: Window; + color: WindowText; + font-family: tahoma,verdana,sans-serif; +} + +/* Header part -- contains navigation buttons and day names. */ + +.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ + text-align: center; + padding: 1px; + border: 1px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; + background: ButtonFace; +} + +.calendar .nav { + background: ButtonFace url(menuarrow.gif) no-repeat 100% 100%; +} + +.calendar thead .title { /* This holds the current "month, year" */ + font-weight: bold; + padding: 1px; + border: 1px solid #000; + background: ActiveCaption; + color: CaptionText; + text-align: center; +} + +.calendar thead .headrow { /* Row containing navigation buttons */ +} + +.calendar thead .daynames { /* Row containing the day names */ +} + +.calendar thead .name { /* Cells in footer (only one right now) */ +} + +.calendar tfoot .ttip { /* Tooltip (status bar) cell
{$lang->birthday} +
{zdate($member_info->birthday,"Y-m-d")}
+

{$lang->about_birthday}

-
{zdate($member_info->birthday,"Y-m-d")}
- {$lang->cmd_open_calendar} -

{$lang->about_birthday}

+
{$lang->limit_date} -
{zdate($member_info->limit_date,"Y-m-d")}
- {$lang->cmd_open_calendar} +
{zdate($member_info->limit_date,"Y-m-d")}
+

{$lang->about_limit_date}

containing the day names */ + border-bottom: 1px solid ButtonShadow; + padding: 2px; + text-align: center; + background: ButtonFace; + color: ButtonText; +} + +.calendar thead .weekend { /* How a weekend day name shows in header */ + color: #f00; +} + +.calendar thead .hilite { /* How do the buttons in header appear when hover */ + border: 2px solid; + padding: 0px; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; +} + +.calendar thead .active { /* Active (pressed) buttons in header */ + border-width: 1px; + padding: 2px 0px 0px 2px; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; +} + +/* The body part -- contains all the days in month. */ + +.calendar tbody .day { /* Cells containing month days dates */ + width: 2em; + text-align: right; + padding: 2px 4px 2px 2px; +} +.calendar tbody .day.othermonth { + font-size: 80%; + color: #aaa; +} +.calendar tbody .day.othermonth.oweekend { + color: #faa; +} + +.calendar table .wn { + padding: 2px 3px 2px 2px; + border-right: 1px solid ButtonShadow; + background: ButtonFace; + color: ButtonText; +} + +.calendar tbody .rowhilite td { + background: Highlight; + color: HighlightText; +} + +.calendar tbody td.hilite { /* Hovered cells */ + padding: 1px 3px 1px 1px; + border-top: 1px solid #fff; + border-right: 1px solid #000; + border-bottom: 1px solid #000; + border-left: 1px solid #fff; +} + +.calendar tbody td.active { /* Active (pressed) cells */ + padding: 2px 2px 0px 2px; + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; +} + +.calendar tbody td.selected { /* Cell showing selected date */ + font-weight: bold; + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; + padding: 2px 2px 0px 2px; + background: ButtonFace; + color: ButtonText; +} + +.calendar tbody td.weekend { /* Cells showing weekend days */ + color: #f00; +} + +.calendar tbody td.today { /* Cell showing today date */ + font-weight: bold; + color: #00f; +} + +.calendar tbody td.disabled { color: GrayText; } + +.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ + visibility: hidden; +} + +.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ + display: none; +} + +/* The footer part -- status bar and "Close" button */ + +.calendar tfoot .footrow { /* The
*/ + background: ButtonFace; + padding: 1px; + border: 1px solid; + border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; + color: ButtonText; + text-align: center; +} + +.calendar tfoot .hilite { /* Hover style for buttons in footer */ + border-top: 1px solid #fff; + border-right: 1px solid #000; + border-bottom: 1px solid #000; + border-left: 1px solid #fff; + padding: 1px; + background: #e4e0d8; +} + +.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ + padding: 2px 0px 0px 2px; + border-top: 1px solid #000; + border-right: 1px solid #fff; + border-bottom: 1px solid #fff; + border-left: 1px solid #000; +} + +/* Combo boxes (menus that display months/years for direct selection) */ + +.calendar .combo { + position: absolute; + display: none; + width: 4em; + top: 0px; + left: 0px; + cursor: default; + border: 1px solid; + border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; + background: Menu; + color: MenuText; + font-size: 90%; + padding: 1px; + z-index: 100; +} + +.calendar .combo .label, +.calendar .combo .label-IEfix { + text-align: center; + padding: 1px; +} + +.calendar .combo .label-IEfix { + width: 4em; +} + +.calendar .combo .active { + padding: 0px; + border: 1px solid #000; +} + +.calendar .combo .hilite { + background: Highlight; + color: HighlightText; +} + +.calendar td.time { + border-top: 1px solid ButtonShadow; + padding: 1px 0px; + text-align: center; + background-color: ButtonFace; +} + +.calendar td.time .hour, +.calendar td.time .minute, +.calendar td.time .ampm { + padding: 0px 3px 0px 4px; + border: 1px solid #889; + font-weight: bold; + background-color: Menu; +} + +.calendar td.time .ampm { + text-align: center; +} + +.calendar td.time .colon { + padding: 0px 2px 0px 3px; + font-weight: bold; +} + +.calendar td.time span.hilite { + border-color: #000; + background-color: Highlight; + color: HighlightText; +} + +.calendar td.time span.active { + border-color: #f00; + background-color: #000; + color: #0f0; +} From 8974765953e06c5ca8b506df8fabc9f7bc3564c2 Mon Sep 17 00:00:00 2001 From: haneul Date: Sun, 6 Apr 2008 11:15:34 +0000 Subject: [PATCH 32/49] =?UTF-8?q?ticket:418=20=EB=A6=AC=ED=8D=BC=EB=9F=AC?= =?UTF-8?q?=20=EC=8A=A4=ED=8C=B8=EC=9D=84=20=EC=A7=80=EC=9A=B0=EA=B8=B0=20?= =?UTF-8?q?=EC=9C=84=ED=95=B4=20=ED=86=B5=EA=B3=84=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=95=B4=EB=8B=B9=20=ED=98=B8=EC=8A=A4=ED=8A=B8=EB=A5=BC=20?= =?UTF-8?q?=EC=A7=80=EC=9A=B0=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80.=20Added=20a=20feature=20deleting=20host=20from=20sta?= =?UTF-8?q?tistics=20to=20remove=20referer=20spams.?= 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@4073 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/referer/conf/info.xml | 6 ++--- modules/referer/conf/module.xml | 2 ++ modules/referer/queries/deleteRefererStat.xml | 8 ++++++ modules/referer/referer.admin.controller.php | 25 +++++++++++++++++++ modules/referer/referer.admin.view.php | 5 ++++ modules/referer/referer.class.php | 14 ++++++++++- modules/referer/tpl/css/referer.css | 4 +-- modules/referer/tpl/delete_stat.html | 24 ++++++++++++++++++ modules/referer/tpl/filter/delete_stat.xml | 10 ++++++++ modules/referer/tpl/js/referer_admin.js | 16 ++++++++++++ modules/referer/tpl/referer_list.html | 4 ++- 11 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 modules/referer/queries/deleteRefererStat.xml create mode 100644 modules/referer/referer.admin.controller.php create mode 100644 modules/referer/tpl/delete_stat.html create mode 100644 modules/referer/tpl/filter/delete_stat.xml create mode 100644 modules/referer/tpl/js/referer_admin.js diff --git a/modules/referer/conf/info.xml b/modules/referer/conf/info.xml index 75c576f55..da4ee8c5b 100644 --- a/modules/referer/conf/info.xml +++ b/modules/referer/conf/info.xml @@ -1,13 +1,13 @@ - + 리퍼러 통계 リファラー統計 反向链接统计 Referer Statistics Статистика рефералов - + haneul - Haneul + haneul haneul haneul haneul diff --git a/modules/referer/conf/module.xml b/modules/referer/conf/module.xml index b2b1b9b6e..c5e8458ae 100644 --- a/modules/referer/conf/module.xml +++ b/modules/referer/conf/module.xml @@ -4,5 +4,7 @@ + + diff --git a/modules/referer/queries/deleteRefererStat.xml b/modules/referer/queries/deleteRefererStat.xml new file mode 100644 index 000000000..26a38b184 --- /dev/null +++ b/modules/referer/queries/deleteRefererStat.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/referer/referer.admin.controller.php b/modules/referer/referer.admin.controller.php new file mode 100644 index 000000000..31d36cf45 --- /dev/null +++ b/modules/referer/referer.admin.controller.php @@ -0,0 +1,25 @@ +host = Context::get('host'); + $output = executeQuery('referer.deleteRefererStat', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_deleted'); + } + } +?> diff --git a/modules/referer/referer.admin.view.php b/modules/referer/referer.admin.view.php index 3bdd39f43..d66b5de53 100644 --- a/modules/referer/referer.admin.view.php +++ b/modules/referer/referer.admin.view.php @@ -22,6 +22,11 @@ $this->dispRefererAdminList(); } + function dispRefererAdminDeleteStat () { + if(!Context::get('host')) return $this->dispRefererAdminIndex(); + $this->setTemplateFile('delete_stat'); + } + function dispRefererAdminList() { // 목록을 구하기 위한 옵션 diff --git a/modules/referer/referer.class.php b/modules/referer/referer.class.php index 5915c1076..4a1bc03e1 100644 --- a/modules/referer/referer.class.php +++ b/modules/referer/referer.class.php @@ -14,6 +14,9 @@ // action forward에 등록 (관리자 모드에서 사용하기 위함) $oModuleController = &getController('module'); $oModuleController->insertActionForward('referer', 'view', 'dispRefererAdminIndex'); + + // 2008. 04. 06 To remove referer spams + $oModuleController->insertActionForward('referer', 'view', 'dispRefererAdminDeleteStat'); return new Object(); } @@ -22,6 +25,9 @@ * @brief 설치가 이상이 없는지 체크하는 method **/ function checkUpdate() { + $oModuleModel = &getModel('module'); + + if(!$oModuleModel->getActionForward('dispRefererAdminDeleteStat')) return true; return false; } @@ -29,7 +35,13 @@ * @brief 업데이트 실행 **/ function moduleUpdate() { - return new Object(); + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + + if(!$oModuleModel->getActionForward('dispRefererAdminDeleteStat')) + $oModuleController->insertActionForward('referer', 'view', 'dispRefererAdminDeleteStat'); + + return new Object(0, 'success_updated'); } /** diff --git a/modules/referer/tpl/css/referer.css b/modules/referer/tpl/css/referer.css index be09fc9e9..f5d4f1510 100644 --- a/modules/referer/tpl/css/referer.css +++ b/modules/referer/tpl/css/referer.css @@ -1,5 +1,5 @@ -.refererLeft { width:230px; float:left; margin-top:10px;} +.refererLeft { width:260px; float:left; margin-top:10px;} -.refererRight { width:530px; float:left; margin-left:20px;margin-top:10px; } +.refererRight { width:500px; float:left; margin-left:20px;margin-top:10px; } .refererRight .refererList { table-layout:fixed; } .refererRight .refererList .refererUrl { white-space:nowrap; overflow:hidden; } diff --git a/modules/referer/tpl/delete_stat.html b/modules/referer/tpl/delete_stat.html new file mode 100644 index 000000000..a6ae5c399 --- /dev/null +++ b/modules/referer/tpl/delete_stat.html @@ -0,0 +1,24 @@ + + + + +

{$lang->referer} {$lang->cmd_management}

+ + + +
+ + + + + + + +
{$lang->confirm_delete}
Host Name{$host}
+ + + + diff --git a/modules/referer/tpl/filter/delete_stat.xml b/modules/referer/tpl/filter/delete_stat.xml new file mode 100644 index 000000000..376b913bb --- /dev/null +++ b/modules/referer/tpl/filter/delete_stat.xml @@ -0,0 +1,10 @@ + +
+ + + + + + + +
diff --git a/modules/referer/tpl/js/referer_admin.js b/modules/referer/tpl/js/referer_admin.js new file mode 100644 index 000000000..003ccef96 --- /dev/null +++ b/modules/referer/tpl/js/referer_admin.js @@ -0,0 +1,16 @@ +/** + * @file modules/referer/js/referer_admin.js + * @author haneul + * @brief referer 모듈의 관리자용 javascript + **/ + +/* stat 삭제 후 */ +function completeDeleteStat(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','dispRefererAdminIndex').setQuery('host',''); + location.href = url; +} diff --git a/modules/referer/tpl/referer_list.html b/modules/referer/tpl/referer_list.html index 7b49be72c..7cbfac68b 100644 --- a/modules/referer/tpl/referer_list.html +++ b/modules/referer/tpl/referer_list.html @@ -7,9 +7,10 @@
- + + @@ -17,6 +18,7 @@ + From 2914feee89e7b7a24dfc66758a734b9ed7f52875 Mon Sep 17 00:00:00 2001 From: FruitsHake Date: Sun, 6 Apr 2008 16:14:46 +0000 Subject: [PATCH 33/49] fixed little error git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4074 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/opage/lang/en.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/opage/lang/en.lang.php b/modules/opage/lang/en.lang.php index affa5bfdf..a1aae74a7 100644 --- a/modules/opage/lang/en.lang.php +++ b/modules/opage/lang/en.lang.php @@ -1,6 +1,6 @@ Date: Mon, 7 Apr 2008 00:22:04 +0000 Subject: [PATCH 34/49] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=ED=8C=90,=20=EB=B0=A9=EB=AA=85=EB=A1=9D=20=EC=8A=A4=ED=82=A8?= =?UTF-8?q?=EC=9D=98=20=EC=B6=94=EA=B0=80=EC=84=A4=EC=A0=95=ED=8F=BC?= =?UTF-8?q?=EC=9D=98=20=EB=82=A0=EC=A7=9C=20=EC=9E=85=EB=A0=A5=ED=95=AD?= =?UTF-8?q?=EB=AA=A9=EC=9D=98=20float=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@4075 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 2 +- modules/board/skins/xe_guestbook/css/common.css | 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 5d7aedd87..22d146c4e 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -320,4 +320,4 @@ html:not([lang*=""]) .boardList th { height:33px; } .memberSignature .profile { float:left; margin-right:20px; } .commentProfileImage { margin:0 0 10px 0; } -.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} +.display_date { cursor:pointer; width:80px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} diff --git a/modules/board/skins/xe_guestbook/css/common.css b/modules/board/skins/xe_guestbook/css/common.css index 3c56295b6..1522def10 100644 --- a/modules/board/skins/xe_guestbook/css/common.css +++ b/modules/board/skins/xe_guestbook/css/common.css @@ -278,4 +278,4 @@ h5 { padding:2px; } .listWrite { margin-bottom:20px; } -.display_date { cursor:pointer; width:80px; float:left; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} +.display_date { cursor:pointer; width:80px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} From 7cb05f63015f3ec882838ead7ebb4136ec0db212 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 7 Apr 2008 07:22:56 +0000 Subject: [PATCH 35/49] =?UTF-8?q?debugOutput=EC=8B=9C=20XMLPRC=20request?= =?UTF-8?q?=EC=9D=98=20=EB=A1=9C=EA=B7=B8=EA=B0=80=20=EC=8C=93=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=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@4076 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/display/DisplayHandler.class.php | 6 +++--- config/func.inc.php | 18 ++++++------------ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index ff14ce5c7..dbcae7c14 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -144,7 +144,7 @@ * tail -f ./files/_debug_message.php로 하여 console로 확인하면 편리함\n **/ function _debugOutput() { - if(!__DEBUG__ || Context::getResponseMethod()!='HTML' ) return; + if(!__DEBUG__) return; $end = getMicroTime(); @@ -189,9 +189,9 @@ // 전체 실행 시간 작성 $buff .= sprintf("\tTotal elapsed time \t\t: %0.5f sec", $end-__StartTime__); - if(__DEBUG_OUTPUT__==1) return $buff; + if(__DEBUG_OUTPUT__==1 && Context::getResponseMethod()=='HTML') return ""; - debugPrint($buff, false); + if(__DEBUG_OUTPUT__==0) debugPrint($buff, false); } /** diff --git a/config/func.inc.php b/config/func.inc.php index d42b91f42..f6cfa740e 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -310,20 +310,14 @@ * tail -f ./files/_debug_message.php 하여 계속 살펴 볼 수 있다 **/ function debugPrint($buff = null, $display_line = true) { - //if(!$buff) return; + $debug_file = "./files/_debug_message.php"; + $buff = sprintf("%s\n",print_r($buff,true)); - if(__DEBUG_OUTPUT__ == 1) { - print sprintf("", print_r($buff,true)); - } else { - $debug_file = "./files/_debug_message.php"; - $buff = sprintf("%s\n",print_r($buff,true)); + if($display_line) $buff = "\n====================================\n".$buff."------------------------------------\n"; - if($display_line) $buff = "\n====================================\n".$buff."------------------------------------\n"; - - if(@!$fp = fopen($debug_file,"a")) return; - fwrite($fp, $buff); - fclose($fp); - } + if(@!$fp = fopen($debug_file,"a")) return; + fwrite($fp, $buff); + fclose($fp); } /** From ebfa5ee64cf4252300ed75ade5995aebacb3a726 Mon Sep 17 00:00:00 2001 From: bnu Date: Mon, 7 Apr 2008 07:45:04 +0000 Subject: [PATCH 36/49] =?UTF-8?q?zdate()=ED=95=A8=EC=88=98=EC=9D=98=20?= =?UTF-8?q?=EC=96=B8=EC=96=B4=EC=97=90=20=EB=94=B0=EB=9D=BC=20=EB=82=A0?= =?UTF-8?q?=EC=A7=9C=ED=8F=AC=EB=A7=B7=EC=9D=84=20=EA=B0=95=EC=A0=9C?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EB=8A=94=20=EA=B2=83=EC=9D=84,=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=B3=80=ED=99=98=EC=9D=84=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D=ED=95=A0=20=EC=88=98=20=EC=9E=88=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@4077 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/config/func.inc.php b/config/func.inc.php index f6cfa740e..6e22fb351 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -266,19 +266,21 @@ * @param format php date()함수의 시간 포맷 * @return string **/ - function zdate($str, $format = "Y-m-d H:i:s") { + function zdate($str, $format = "Y-m-d H:i:s", $conversion=true) { // 대상 시간이 없으면 null return if(!$str) return; // 언어권에 따라서 지정된 날짜 포맷을 변경 - switch(Context::getLangType()) { - case "en" : - case "es" : - if($format == "Y-m-d") $format = "M d, Y"; - elseif($format == "Y-m-d H:i:s") $format = "M d, Y H:i:s"; - elseif($format == "Y-m-d H:i") $format = "M d, Y H:i"; - break; + if($conversion == true) { + switch(Context::getLangType()) { + case "en" : + case "es" : + if($format == "Y-m-d") $format = "M d, Y"; + elseif($format == "Y-m-d H:i:s") $format = "M d, Y H:i:s"; + elseif($format == "Y-m-d H:i") $format = "M d, Y H:i"; + break; + } } // 년도가 1970년 이전이면 별도 처리 From cb4002b2baac1c8921b8d8a8ab4762529eadd9a9 Mon Sep 17 00:00:00 2001 From: bnu Date: Mon, 7 Apr 2008 08:06:21 +0000 Subject: [PATCH 37/49] =?UTF-8?q?=EA=B0=84=EB=8B=A8=ED=95=9C=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=95=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@4078 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/config/func.inc.php b/config/func.inc.php index 6e22fb351..a3e9aaafa 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -262,22 +262,23 @@ /** * @brief YYYYMMDDHHIISS 형식의 시간값을 원하는 시간 포맷으로 변형 - * @param str YYYYMMDDHHIISS 형식의 시간값 - * @param format php date()함수의 시간 포맷 + * @param string|int str YYYYMMDDHHIISS 형식의 시간 값 + * @param string format php date()함수의 시간 포맷 + * @param bool conversion 언어에 따라 날짜 포맷의 자동변환 여부 * @return string **/ - function zdate($str, $format = "Y-m-d H:i:s", $conversion=true) { + function zdate($str, $format = 'Y-m-d H:i:s', $conversion=true) { // 대상 시간이 없으면 null return if(!$str) return; // 언어권에 따라서 지정된 날짜 포맷을 변경 if($conversion == true) { switch(Context::getLangType()) { - case "en" : - case "es" : - if($format == "Y-m-d") $format = "M d, Y"; - elseif($format == "Y-m-d H:i:s") $format = "M d, Y H:i:s"; - elseif($format == "Y-m-d H:i") $format = "M d, Y H:i"; + case 'en' : + case 'es' : + if($format == 'Y-m-d') $format = 'M d, Y'; + elseif($format == 'Y-m-d H:i:s') $format = 'M d, Y H:i:s'; + elseif($format == 'Y-m-d H:i') $format = 'M d, Y H:i'; break; } @@ -293,7 +294,7 @@ $day = (int)substr($str,6,2); return str_replace( array('Y','m','d','H','h','i','s','a','M', 'F'), - array($year,$month,$day,$hour,$hour/12,$min,$sec,$hour<=12?'am':'pm',getMonthName($month), getMonthName($month,false)), + array($year,$month,$day,$hour,$hour/12,$min,$sec,($hour <= 12) ? 'am' : 'pm',getMonthName($month), getMonthName($month,false)), $format ); } From a1d34e813e2e13c1c7efee12eee5befc23196034 Mon Sep 17 00:00:00 2001 From: bnu Date: Mon, 7 Apr 2008 08:09:24 +0000 Subject: [PATCH 38/49] =?UTF-8?q?=EA=B0=84=EB=8B=A8=ED=95=9C=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=A0=95=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@4079 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/config/config.inc.php b/config/config.inc.php index 837a051a4..93203379d 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -6,7 +6,7 @@ * @author zero (zero@nzeo.com) * @brief 기본적으로 사용하는 class파일의 include 및 환경 설정을 함 **/ - + if(!defined('__ZBXE__')) exit(); /** @@ -26,7 +26,7 @@ define('__DEBUG__', 0); /** - * @brief 디버그 메세지의 출력 장소 + * @brief 디버그 메세지의 출력 장소 * 0 : files/_debug_message.php 에 연결하여 출력 * 1 : Response Method 가 XML 형식이 아닐 경우 브라우저에 최상단에 주석으로 표시 **/ @@ -58,7 +58,7 @@ /** * @brief 간단하게 사용하기 위한 함수 정의한 파일 require **/ - require_once("./config/func.inc.php"); + require_once('./config/func.inc.php'); if(__DEBUG__) define('__StartTime__', getMicroTime()); @@ -69,19 +69,19 @@ * php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상 **/ if(__DEBUG__) define('__ClassLosdStartTime__', getMicroTime()); - require_once("./classes/object/Object.class.php"); - require_once("./classes/handler/Handler.class.php"); - require_once("./classes/xml/XmlParser.class.php"); - require_once("./classes/context/Context.class.php"); - require_once("./classes/db/DB.class.php"); - require_once("./classes/file/FileHandler.class.php"); - require_once("./classes/widget/WidgetHandler.class.php"); - require_once("./classes/editor/EditorHandler.class.php"); - require_once("./classes/module/ModuleObject.class.php"); - require_once("./classes/module/ModuleHandler.class.php"); - require_once("./classes/display/DisplayHandler.class.php"); - require_once("./classes/template/TemplateHandler.class.php"); - require_once("./classes/mail/Mail.class.php"); + require_once('./classes/object/Object.class.php'); + require_once('./classes/handler/Handler.class.php'); + require_once('./classes/xml/XmlParser.class.php'); + require_once('./classes/context/Context.class.php'); + require_once('./classes/db/DB.class.php'); + require_once('./classes/file/FileHandler.class.php'); + require_once('./classes/widget/WidgetHandler.class.php'); + require_once('./classes/editor/EditorHandler.class.php'); + require_once('./classes/module/ModuleObject.class.php'); + require_once('./classes/module/ModuleHandler.class.php'); + require_once('./classes/display/DisplayHandler.class.php'); + require_once('./classes/template/TemplateHandler.class.php'); + require_once('./classes/mail/Mail.class.php'); if(__DEBUG__) $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLosdStartTime__; /** @@ -90,12 +90,12 @@ **/ if(!ini_get('session.auto_start')) { session_cache_limiter('no-cache, must-revalidate'); - ini_set("session.gc_maxlifetime", "18000"); - if(!is_dir("./files/sessions")) { - FileHandler::makeDir("./files/sessions"); - @chmod("./files/sessions", 0777); + ini_set('session.gc_maxlifetime', '18000'); + if(!is_dir('./files/sessions')) { + FileHandler::makeDir('./files/sessions'); + @chmod('./files/sessions', 0777); } - if(is_dir("./files/sessions")) session_save_path(realpath('.')."/files/sessions/"); + if(is_dir('./files/sessions')) session_save_path(realpath('.').'/files/sessions/'); session_start(); } -?> +?> \ No newline at end of file From dbb40b37c792811e128bcaad0d43f885b19bca7e Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Apr 2008 04:56:38 +0000 Subject: [PATCH 39/49] =?UTF-8?q?=EA=B8=80/=EB=8C=93=EA=B8=80=EC=9D=B4=20?= =?UTF-8?q?=EC=8B=A0=EA=B7=9C=20=EB=93=B1=EB=A1=9D=EB=90=A0=EB=95=8C=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EB=A9=94=EC=9D=BC=EC=9D=B4=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EB=90=98=EC=96=B4=20=EC=9E=88=EC=9C=BC?= =?UTF-8?q?=EB=A9=B4=20=ED=95=B4=EB=8B=B9=20=EA=B4=80=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=EC=9D=98=20=EB=A9=94=EC=9D=BC=20=EC=A3=BC=EC=86=8C=EB=A1=9C=20?= =?UTF-8?q?=EB=A9=94=EC=9D=BC=EB=A1=9C=20=EC=95=8C=EB=A0=A4=EC=A3=BC?= =?UTF-8?q?=EB=8A=94=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@4080 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.admin.controller.php | 1 + modules/board/board.controller.php | 37 +++++++++++++++++++++++ modules/board/lang/en.lang.php | 2 ++ modules/board/lang/es.lang.php | 2 ++ modules/board/lang/fr.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 + 12 files changed, 64 insertions(+) diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index 874b0eab8..23978e3b3 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -155,6 +155,7 @@ $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->admin_mail = $args->admin_mail; $extra_vars->page_count = $args->page_count; $obj->extra_vars = serialize($extra_vars); diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index 8cae944ed..7fb6bd73a 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -52,6 +52,22 @@ $output = $oDocumentController->insertDocument($obj); $msg_code = 'success_registed'; $obj->document_srl = $output->get('document_srl'); + + // 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송 + if($output->toBool() && $this->module_info->admin_mail) { + $oMail = new Mail(); + $oMail->setTitle($obj->title); + $oMail->setContent( sprintf("From : %s
\r\n%s", getUrl('','document_srl',$obj->document_srl), getUrl('','document_srl',$obj->document_srl), $obj->content)); + $oMail->setSender($obj->user_name, $obj->email_address); + + $target_mail = explode(',',$this->module_info->admin_mail); + for($i=0;$isetReceiptor($email_address, $email_address); + $oMail->send(); + } + } } // 오류 발생시 멈춤 @@ -110,6 +126,11 @@ $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; + // 원글이 존재하는지 체크 + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($obj->document_srl); + if(!$oDocument->isExists()) return new Object(-1,'msg_not_permitted'); + // comment 모듈의 model 객체 생성 $oCommentModel = &getModel('comment'); @@ -139,6 +160,22 @@ $output = $oCommentController->insertComment($obj); } + // 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송 + if($output->toBool() && $this->module_info->admin_mail) { + $oMail = new Mail(); + $oMail->setTitle($oDocument->getTitleText()); + $oMail->setContent( sprintf("From : %s#comment_%d
\r\n%s", $oDocument->getPermanentUrl(), $obj->comment_srl, $oDocument->getPermanentUrl(), $obj->comment_srl, $obj->content)); + $oMail->setSender($obj->user_name, $obj->email_address); + + $target_mail = explode(',',$this->module_info->admin_mail); + for($i=0;$isetReceiptor($email_address, $email_address); + $oMail->send(); + } + } + // comment_srl이 있으면 수정으로 } else { $obj->parent_srl = $comment->parent_srl; diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index 6d057cb21..c762262b2 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -20,6 +20,7 @@ $lang->category_group_srls = 'Accessable Group'; $lang->search_result = 'Search Result'; $lang->consultation = 'Consultation'; + $lang->admin_mail = '관리자 메일'; // words used in button $lang->cmd_board_list = 'Boards List'; @@ -35,4 +36,5 @@ $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 = "Non-administrator members would see their own articles.\nNon-members would not be able to write articles when using consultation."; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/lang/es.lang.php b/modules/board/lang/es.lang.php index df7e6e59e..46e815af1 100644 --- a/modules/board/lang/es.lang.php +++ b/modules/board/lang/es.lang.php @@ -22,6 +22,7 @@ $lang->category_group_srls = 'Limitar el grupo'; $lang->search_result = 'Resultado de la búsqueda'; $lang->consultation = '상담 기능'; + $lang->admin_mail = '관리자 메일'; // Palabras utilizadas en los botones $lang->cmd_board_list = 'Lista del tableros'; @@ -37,4 +38,5 @@ $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 = "No administrador de los miembros que consideran que su propia artocles. \ NNon miembros no serían capaces de escribir artículos al utilizar la consulta."; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/lang/fr.lang.php b/modules/board/lang/fr.lang.php index 6ad216060..7b467871c 100644 --- a/modules/board/lang/fr.lang.php +++ b/modules/board/lang/fr.lang.php @@ -20,6 +20,7 @@ $lang->category_group_srls = 'Groupe Accessible'; $lang->search_result = 'Résultat de la Recherche'; $lang->consultation = 'Consultation'; + $lang->admin_mail = '관리자 메일'; // Mots utiliss en bouton $lang->cmd_board_list = 'Liste des Panneaux'; @@ -35,4 +36,5 @@ $lang->about_except_notice = "L'Article de Notice ne sera exposé sur la liste normale."; $lang->about_board = "Ce module se sert à créer et arranger des Panneaux.\nAprés avoir créé un module, si vous cliquez le nom sur le liste, vous pouvez configurer spécifiquement.\nFaites attention quand vous nomer un module du Panneau, car ce sera URL. (ex : http://domain/zb/?mid=nom_de_module)"; $lang->about_consultation = "Les membres non-administratifs verront seulement les ariticles d\'eux-même.\nNon-membres ne pourraient pas écrire des articles quand la Consultation est appliqué."; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/lang/jp.lang.php b/modules/board/lang/jp.lang.php index e9f5a23fe..87bf60a74 100644 --- a/modules/board/lang/jp.lang.php +++ b/modules/board/lang/jp.lang.php @@ -23,6 +23,7 @@ $lang->category_group_srls = 'グループ制限'; $lang->search_result = '検索結果'; $lang->consultation = '相談機能'; + $lang->admin_mail = '관리자 메일'; // ボタンに使用する用語 $lang->cmd_board_list = '掲示板リスト'; @@ -38,4 +39,5 @@ $lang->about_except_notice = "リストの上段に常に表示されるお知らせの書き込みを一般リストからお知らせの書き込みが表示されないようにします。"; $lang->about_board = "掲示板の生成、および管理する掲示板モジュールです。\n生成後、リストからモジュール名を選択すると詳細設定ができます。\n掲示板のモジュール名はURLの一部となりますので注意してください。 (ex : http://ドメイン/zb/?mid=モジュール名)"; $lang->about_consultation = "相談機能とは、管理権限のない会員には本人の書き込みだけを表示する機能です。\n但し、相談機能を使用する際は、非会員の書き込みは自動的に禁止されます。"; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/lang/ko.lang.php b/modules/board/lang/ko.lang.php index 3781467e7..697be8542 100644 --- a/modules/board/lang/ko.lang.php +++ b/modules/board/lang/ko.lang.php @@ -20,6 +20,7 @@ $lang->category_group_srls = '그룹제한'; $lang->search_result = '검색결과'; $lang->consultation = '상담 기능'; + $lang->admin_mail = '관리자 메일'; // 버튼에 사용되는 언어 $lang->cmd_board_list = '게시판 목록'; @@ -35,4 +36,5 @@ $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "게시판을 생성하고 관리할 수 있는 게시판 모듈입니다.\n생성하신 후 목록에서 모듈이름을 선택하시면 자세한 설정이 가능합니다.\n게시판의 모듈이름은 접속 url이 되므로 신중하게 입력해주세요. (ex : http://도메인/zb/?mid=모듈이름)"; $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/lang/ru.lang.php b/modules/board/lang/ru.lang.php index 461c9ac65..9cc8ae4c2 100644 --- a/modules/board/lang/ru.lang.php +++ b/modules/board/lang/ru.lang.php @@ -23,6 +23,7 @@ $lang->category_group_srls = 'Доступные группы'; $lang->search_result = 'Результат поиска'; $lang->consultation = '상담 기능'; + $lang->admin_mail = '관리자 메일'; // слова, использованные в кнопке $lang->cmd_board_list = 'Список форумов'; @@ -38,4 +39,5 @@ $lang->about_except_notice = "목록 상단에 늘 나타나는 공지사항을 일반 목록에서 공지사항을 출력하지 않도록 합니다."; $lang->about_board = "Этот модуль служит для создания и управления форумами.\nВы можете выбрать имя модуля из списка после создания для дополнительного конифигурирования.\nПожалуйста, будте осторожны с именем модуля форума, поскольку оно будет URL. (например : http://domain/zb/?mid=имя_модуля)"; $lang->about_consultation = "상담 기능은 관리권한이 없는 회원은 자신이 쓴 글만 보이도록 하는 기능입니다\n단 상담기능 사용시 비회원 글쓰기는 자동으로 금지됩니다."; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/lang/zh-CN.lang.php b/modules/board/lang/zh-CN.lang.php index 89d28e8f3..8742aa143 100644 --- a/modules/board/lang/zh-CN.lang.php +++ b/modules/board/lang/zh-CN.lang.php @@ -23,6 +23,7 @@ $lang->category_group_srls = '用户组'; $lang->search_result = '搜索结果'; $lang->consultation = '咨询功能'; + $lang->admin_mail = '관리자 메일'; // 按钮语言 $lang->cmd_board_list = '版面目录'; @@ -39,4 +40,5 @@ $lang->about_except_notice = "设置公告目录项不再重复显示到普通目录当中。"; $lang->about_board = "可生成,管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。"; $lang->about_consultation = "咨询功能是指除有管理权限的会员以外,其他会员只能浏览自己发表的主题。\n使用咨询功能时系统将自动禁止非会员的发表主题权限。"; + $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; ?> diff --git a/modules/board/tpl/board_info.html b/modules/board/tpl/board_info.html index 7f9d6c5ad..ab1148680 100644 --- a/modules/board/tpl/board_info.html +++ b/modules/board/tpl/board_info.html @@ -63,6 +63,10 @@
+ + + + diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index 0bd8190cb..9963a358d 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -139,6 +139,13 @@

{nl2br($lang->about_consultation)}

+ + + +
{$rank} {$val->host} {$val->count}{$lang->cmd_delete} {$lang->consultation} {$module_info->consultation=='Y'?$lang->use:$lang->notuse}
{$lang->admin_mail}{$module_info->admin_mail}
{$lang->description} {nl2br(htmlspecialchars($module_info->description))} 
{$lang->admin_mail} + +

{$lang->about_admin_mail}

+
{$lang->description} diff --git a/modules/board/tpl/filter/insert_board.xml b/modules/board/tpl/filter/insert_board.xml index 7a2dca8e3..71d5a806a 100644 --- a/modules/board/tpl/filter/insert_board.xml +++ b/modules/board/tpl/filter/insert_board.xml @@ -20,6 +20,7 @@ + From b95fe512662542d630475552dfbe01dfbc932608 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Apr 2008 05:05:44 +0000 Subject: [PATCH 40/49] =?UTF-8?q?=EB=B9=84=EB=B0=80=EA=B8=80=EC=9D=BC=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20=EC=97=86?= =?UTF-8?q?=EC=9C=BC=EB=A9=B4=20=EC=A1=B0=ED=9A=8C=EC=88=98=EA=B0=80=20?= =?UTF-8?q?=EC=98=AC=EB=9D=BC=EA=B0=80=EC=A7=80=20=EC=95=8A=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@4081 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/board.view.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/board/board.view.php b/modules/board/board.view.php index eb3e21ca6..d10e7e26f 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -140,8 +140,8 @@ // 브라우저 타이틀에 글의 제목을 추가 Context::addBrowserTitle($oDocument->getTitleText()); - // 조회수 증가 - $oDocument->updateReadedCount(); + // 조회수 증가 (비밀글일 경우 권한 체크) + if(!$oDocument->isSecret() || $oDocument->isGranted()) $oDocument->updateReadedCount(); } } } From 0524c74a3a842014c831e7daaf1335971d0e9d02 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Apr 2008 09:06:54 +0000 Subject: [PATCH 41/49] =?UTF-8?q?=EC=97=AE=EC=9D=B8=EA=B8=80=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EC=9D=98=20=EC=97=AE=EC=9D=B8=EA=B8=80=20=ED=97=88?= =?UTF-8?q?=EC=9A=A9=20-=20=EB=AA=A8=EB=93=88=EC=9D=98=20=EC=97=AE?= =?UTF-8?q?=EC=9D=B8=EA=B8=80=20=ED=97=88=EC=9A=A9=EC=9D=BC=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=9E=91=EC=84=B1?= =?UTF-8?q?=EC=8B=9C=20=EC=97=AE=EC=9D=B8=EA=B8=80=20=ED=97=88=EC=9A=A9=20?= =?UTF-8?q?=EC=B2=B4=ED=81=AC=EA=B0=80=20=EB=90=98=EC=96=B4=20=EC=9E=88?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=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@4082 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 605305586..6245fc6c1 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -80,27 +80,25 @@ } function allowTrackback() { - if(!$this->isExists()) return false; - // allowTrackback()의 경우 여러번 호출됨으로 자체 변수 설정후 사용 if(!isset($this->allow_trackback_status)) { - // 글쓴이가 허용하였으면 사용으로 체크 - if($this->get('allow_trackback')=='Y') $this->allow_trackback_status = true; + // 엮인글 관리 모듈의 사용금지 설정 상태이면 무조건 금지, 그렇지 않으면 개별 체크 + $oModuleModel = &getModel('module'); + $trackback_config = $oModuleModel->getModuleConfig('trackback'); - // 글쓴이가 허용하였더라도 모듈 설정에서 허용이 아니라면 금지로 설정 - if($this->allow_trackback_status) { - $oModuleModel = &getModel('module'); - $trackback_config = $oModuleModel->getModuleConfig('trackback'); + if($trackback_config->enable_trackback != 'Y') $this->allow_trackback_status = false; + else { + $module_srl = $this->get('module_srl'); + if(!$module_srl) $module_srl = Context::get('module_srl'); - // 전체 설정에서 엮인글 사용금지이면 모든 엮인글의 사용을 금지함 - if($trackback_config->enable_trackback != 'Y') $this->allow_trackback_status = false; + // 모듈별 설정을 체크 + $module_config = $trackback_config->module_config[$module_srl]; - // 전체 설정에서 허용시 모듈별 설정을 체크 + if($module_config->enable_trackback == 'N') $this->allow_trackback_status = false; else { - $module_config = $trackback_config->module_config[$this->get('module_srl')]; - if(!$module_config || $module_config->enable_trackback != 'N') $this->allow_trackback_status = true; - else $this->allow_trackback_status = false; + // 글쓴이가 허용하였거나 원본 글이 없으면 허용 + if($this->get('allow_trackback')=='Y' || !$this->isExists()) $this->allow_trackback_status = true; } } } From 34afa378002748d4fbb94515cbdfdc4f4d0c24c0 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Apr 2008 09:25:32 +0000 Subject: [PATCH 42/49] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20xe=5Fboard=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=EC=8A=A4=ED=82=A8=EC=9D=98=20?= =?UTF-8?q?=EB=8C=93=EA=B8=80=EC=97=90=20=EB=82=98=EC=98=A4=EB=8A=94=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EB=A5=BC=20=EB=8C=93=EA=B8=80=EB=82=B4=EC=9A=A9=20=EC=99=BC?= =?UTF-8?q?=EC=AA=BD=EC=9C=BC=EB=A1=9C=20=ED=91=9C=EC=8B=9C=EB=90=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@4083 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/comment.html | 2 +- modules/board/skins/xe_board/css/common.css | 11 ++++++----- modules/comment/comment.item.php | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/board/skins/xe_board/comment.html b/modules/board/skins/xe_board/comment.html index 6d139fd14..58b734212 100644 --- a/modules/board/skins/xe_board/comment.html +++ b/modules/board/skins/xe_board/comment.html @@ -64,7 +64,7 @@ -
profile
+ 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 22d146c4e..49ba8a80e 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 { 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 ul { padding:0; margin:0; } -.boardRead .fileAttached li { padding-left:15px; display:block; float:left; white-space:nowrap; list-style:none; margin-right:10px; height:18px;} +.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;} @@ -125,9 +125,9 @@ Jeong, Chan Myeong 070601~070630 .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; overflow:hidden;} -.replyBox .fileAttached ul { border:0; margin:0; } -.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; height:18px;} +.replyBox .fileAttached ul { border:0; margin:0; padding:0;} +.replyBox .fileAttached h5 { font-weight:normal; color:#999999; float:left; font-size:1em; } +.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;} @@ -318,6 +318,7 @@ html:not([lang*=""]) .boardList th { height:33px; } /* 회원 서명 및 프로필 이미지 출력 */ .memberSignature { border:1px solid #e0e1db; padding:10px; margin-top:20px;} .memberSignature .profile { float:left; margin-right:20px; } -.commentProfileImage { margin:0 0 10px 0; } +.commentProfileImage { margin:0 10px 10px 0; float:left; } +.replyBox .xe_content { display:inline; } .display_date { cursor:pointer; width:80px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; height:1em; padding:3px; margin-right:10px;} diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 121497409..b1229de0d 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -174,7 +174,7 @@ $content = preg_replace('!([^>^"^\'^=])(http|https|ftp|mms):\/\/([^ ^<^"^\']*)!is','$1$2://$3',' '.$content); // 이 댓글을... 팝업메뉴를 출력할 경우 - if($add_popup_menu) { + if($add_popup_menu && Context::get('is_logged') ) { $content = sprintf( '%s
%s
', $content, From 868f4d7f9492278e676d8933e1fe2b3cb5709153 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Apr 2008 09:37:46 +0000 Subject: [PATCH 43/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4084 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 49ba8a80e..f0d518f99 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -99,7 +99,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; height:18px;} +.trackbackBox .trackbackUrl { color:#1F3DAE; font-size:.9em; background:url("../images/common/iconTrackback.gif") no-repeat left top; padding-left:18px; margin:0; } .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;} From 6495300592a6cebec0f4fe96dbadf98fd3145e7c Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Apr 2008 09:43:32 +0000 Subject: [PATCH 44/49] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4085 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/trackback.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xe_board/trackback.html b/modules/board/skins/xe_board/trackback.html index 3e82e3d52..766e149c4 100644 --- a/modules/board/skins/xe_board/trackback.html +++ b/modules/board/skins/xe_board/trackback.html @@ -2,7 +2,7 @@
- + From c7b12d80b03c93a54caf5637d6d48d03b19b4352 Mon Sep 17 00:00:00 2001 From: supershop Date: Tue, 8 Apr 2008 14:39:05 +0000 Subject: [PATCH 45/49] =?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@4086 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/lang/en.lang.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/board/lang/en.lang.php b/modules/board/lang/en.lang.php index c762262b2..1a72829c7 100644 --- a/modules/board/lang/en.lang.php +++ b/modules/board/lang/en.lang.php @@ -20,7 +20,7 @@ $lang->category_group_srls = 'Accessable Group'; $lang->search_result = 'Search Result'; $lang->consultation = 'Consultation'; - $lang->admin_mail = '관리자 메일'; + $lang->admin_mail = "Administrator's Mail"; // words used in button $lang->cmd_board_list = 'Boards List'; @@ -36,5 +36,5 @@ $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 = "Non-administrator members would see their own articles.\nNon-members would not be able to write articles when using consultation."; - $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; + $lang->about_admin_mail = 'A mail will be sent when an article or comment is submitted.
Multiple mails can be sent with commas(,).'; ?> From 12d606ef13873809d83a9ff7329ae01350f97ace Mon Sep 17 00:00:00 2001 From: wdlee91 Date: Wed, 9 Apr 2008 04:39:22 +0000 Subject: [PATCH 46/49] =?UTF-8?q?,=20=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=B4=20IE=20conditional=20comment=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20%import=20=EA=B5=AC=EB=AC=B8=EC=97=90=20targetie=20?= =?UTF-8?q?=EC=9D=B8=EC=9E=90=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@4087 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 16 ++++---- classes/template/TemplateHandler.class.php | 12 ++++-- common/tpl/common_layout.html | 44 +++++++++++++++++----- 3 files changed, 51 insertions(+), 21 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 68670940e..0498cb5ac 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -714,18 +714,18 @@ /** * @brief js file을 추가 **/ - function addJsFile($file, $optimized = true) { + function addJsFile($file, $optimized = true, $targetie = '') { $oContext = &Context::getInstance(); - return $oContext->_addJsFile($file, $optimized); + return $oContext->_addJsFile($file, $optimized, $targetie); } /** * @brief js file을 추가 **/ - function _addJsFile($file, $optimized) { + function _addJsFile($file, $optimized, $targetie) { if(in_array($file, $this->js_files)) return; //if(!preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file)); - $this->js_files[] = array('file' => $file, 'optimized' => $optimized); + $this->js_files[] = array('file' => $file, 'optimized' => $optimized, 'targetie' => $targetie); } /** @@ -763,19 +763,19 @@ /** * @brief CSS file 추가 **/ - function addCSSFile($file, $optimized = true, $media = 'all') { + function addCSSFile($file, $optimized = true, $media = 'all', $targetie = '') { $oContext = &Context::getInstance(); - return $oContext->_addCSSFile($file, $optimized, $media); + return $oContext->_addCSSFile($file, $optimized, $media, $targetie); } /** * @brief CSS file 추가 **/ - function _addCSSFile($file, $optimized, $media) { + function _addCSSFile($file, $optimized, $media, $targetie) { if(in_array($file, $this->css_files)) return; //if(preg_match('/^http:\/\//i',$file)) $file = str_replace(realpath("."), ".", realpath($file)); - $this->css_files[] = array('file' => $file, 'optimized' => $optimized, 'media' => $media); + $this->css_files[] = array('file' => $file, 'optimized' => $optimized, 'media' => $media, 'targetie' => $targetie); } /** diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index c4c81f7cc..3a69da858 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -115,8 +115,8 @@ // 의 변경 $buff = preg_replace_callback('!<\!--@(.*?)-->!is', array($this, '_compileFuncToCode'), $buff); - // import xml filter/ css/ js/ 언어파일 (media는 css에만 적용) - $buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"(,optimized\=(true|false)(,media\=\"([^\"]*)\")?)?\)-->!is', array($this, '_compileImportCode'), $buff); + // import xml filter/ css/ js/ 언어파일 (media는 css에만 적용) + $buff = preg_replace_callback('!<\!--%import\(\"([^\"]*?)\"(,optimized\=(true|false))?(,media\=\"([^\"]*)\")?(,targetie=\"([^\"]*)\")?\)-->!is', array($this, '_compileImportCode'), $buff); // 파일에 쓰기 전에 직접 호출되는 것을 방지 $buff = sprintf('%s%s%s','',"\n",$buff); @@ -265,6 +265,10 @@ if(isset($matches[5])) $media = trim($matches[5]); if(!$media) $media = 'all'; + if(isset($matches[7])) + $targetie = trim($matches[7]); + if(!$targetie) $targetie = ''; + else $optimized = 'false'; // given_file이 lang으로 끝나게 되면 언어팩을 읽도록 함 if(substr($given_file, -4)=='lang') { @@ -309,12 +313,12 @@ // css file case 'css' : $meta_file = sprintf('%s%s', $base_path, $filename); - $output = sprintf('', $base_path, $filename, $optimized, $media); + $output = sprintf('', $base_path, $filename, $optimized, $media, $targetie); break; // js file case 'js' : $meta_file = sprintf('%s%s', $base_path, $filename); - $output = sprintf('', $base_path, $filename, $optimized); + $output = sprintf('', $base_path, $filename, $optimized, $targetie); break; } } diff --git a/common/tpl/common_layout.html b/common/tpl/common_layout.html index e85616e68..6f339a186 100644 --- a/common/tpl/common_layout.html +++ b/common/tpl/common_layout.html @@ -3,16 +3,42 @@ - - - - - + + + + + + + + + + + + + {Context::getBrowserTitle()} - - - - + + + + + + + + + + + + + + + +