From 593741d48aabcc0c780f369c4eeefc165417a554 Mon Sep 17 00:00:00 2001 From: mmx900 Date: Fri, 16 May 2008 06:40:47 +0000 Subject: [PATCH 01/87] =?UTF-8?q?=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=ED=86=B5=EC=9D=BC=20=EC=9E=91=EC=97=85=20-=20?= =?UTF-8?q?=EB=8C=93=EA=B8=80,=20=EB=AC=B8=EC=84=9C,=20=EC=97=AE=EC=9D=B8?= =?UTF-8?q?=EA=B8=80=20=EB=AA=A8=EB=93=88=EC=9D=98=20=EC=A0=84=EC=B2=B4?= =?UTF-8?q?=EC=84=A0=ED=83=9D=20=EC=B2=B4=ED=81=AC=EB=B0=95=EC=8A=A4=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=EB=A5=BC=20=EA=B2=8C=EC=8B=9C=ED=8C=90,=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90,=20=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC,=20?= =?UTF-8?q?=EC=84=A4=EB=AC=B8=EC=A1=B0=EC=82=AC=20=EB=93=B1=20=EB=8B=A4?= =?UTF-8?q?=EB=A5=B8=20=EB=AA=A8=EB=93=88=EB=93=A4=EA=B3=BC=20=EB=8F=99?= =?UTF-8?q?=EC=9D=BC=ED=95=98=EA=B2=8C=20=EB=A7=8C=EB=93=AC.=20=EB=8D=94?= =?UTF-8?q?=EB=B6=88=EC=96=B4=20=EC=96=B8=EC=96=B4=EB=B3=84=20=EC=85=80=20?= =?UTF-8?q?=EA=B0=84=EA=B2=A9=20=EC=84=A4=EC=A0=95=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20=EB=AC=B8=EC=84=9C=20=EB=AA=A8=EB=93=88=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=9D=B4=EB=AF=B8=20=EC=93=B0=EC=9D=B4=EB=8A=94=20?= =?UTF-8?q?=ED=98=95=ED=83=9C=EB=A1=9C=20=EB=8B=A8=EC=88=9C=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EB=B0=94=EA=BF=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@4213 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/tpl/comment_list.html | 74 ++++++-------------- modules/document/tpl/document_list.html | 18 ++--- modules/file/tpl/file_list.html | 83 +++++------------------ modules/trackback/tpl/trackback_list.html | 64 ++++------------- 4 files changed, 59 insertions(+), 180 deletions(-) diff --git a/modules/comment/tpl/comment_list.html b/modules/comment/tpl/comment_list.html index edd05f398..4c0c6470d 100644 --- a/modules/comment/tpl/comment_list.html +++ b/modules/comment/tpl/comment_list.html @@ -11,62 +11,26 @@ - -------- - -------- - -------- - -------- - -------- - -------- + +{@ $col_width = array(50,40,0,150,65,65,90,45)} + +{@ $col_width = array(50,40,0,150,75,75,90,45)} + +{@ $col_width = array(50,40,0,150,70,70,90,45)} + +{@ $col_width = array(50,40,0,150,75,75,90,45)} + +{@ $col_width = array(50,40,0,150,75,75,90,50)} + +{@ $col_width = array(50,40,0,150,75,75,90,95)} + + + +width="{$width}" /> + + + @@ -99,7 +64,6 @@ diff --git a/modules/document/tpl/document_list.html b/modules/document/tpl/document_list.html index 6f13c3678..eff7320c7 100644 --- a/modules/document/tpl/document_list.html +++ b/modules/document/tpl/document_list.html @@ -15,17 +15,17 @@
{$lang->no}
@@ -90,6 +54,7 @@
{$no} {htmlspecialchars($module_list[$val->module_srl]->browser_title)}
{htmlspecialchars($val->nick_name)}
{nl2br(zdate($val->regdate,"Y-m-d\nH:i:s"))}
- {cut_str(htmlspecialchars(strip_tags($val->content)),100,'...')}
-{@ $col_width = array(50,0,150,55,55,65)} +{@ $col_width = array(50,40,0,150,55,55,65)} -{@ $col_width = array(50,0,150,55,55,75)} +{@ $col_width = array(50,40,0,150,55,55,75)} -{@ $col_width = array(50,0,150,50,50,70)} +{@ $col_width = array(50,40,0,150,50,50,70)} -{@ $col_width = array(50,0,150,55,55,75)} +{@ $col_width = array(50,40,0,150,55,55,75)} -{@ $col_width = array(50,0,150,55,110,75)} +{@ $col_width = array(50,40,0,150,55,110,75)} -{@ $col_width = array(50,0,150,50,60,65)} +{@ $col_width = array(50,40,0,150,50,60,65)} @@ -33,9 +33,9 @@ + + @@ -62,8 +63,7 @@ -
{$lang->no}
-
{$no}isCarted())-->checked="checked"/> {htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}-
{$oDocument->getNickName()}
{$oDocument->get('readed_count')}{$oDocument->getRegdate("Y-m-d")} {$oDocument->getRegdate("H:i:s")}
- isCarted())-->checked="checked"/> + {$lang->cmd_save} diff --git a/modules/file/tpl/file_list.html b/modules/file/tpl/file_list.html index 91ff04536..03998ed84 100644 --- a/modules/file/tpl/file_list.html +++ b/modules/file/tpl/file_list.html @@ -12,73 +12,24 @@ - ---------- - ---------- - ---------- - ---------- - ---------- - ---------- + +{@ $col_width = array(50,40,0,70,45,65,65,90,45)} + +{@ $col_width = array(50,40,0,70,70,75,75,90,50)} + +{@ $col_width = array(50,40,0,65,45,45,65,90,45)} + +{@ $col_width = array(50,40,0,65,45,65,65,90,45)} + +{@ $col_width = array(50,40,0,75,75,80,75,90,50)} + +{@ $col_width = array(50,40,0,65,80,65,65,90,95)} + + + +width="{$width}" /> + diff --git a/modules/trackback/tpl/trackback_list.html b/modules/trackback/tpl/trackback_list.html index 7a09f80ff..9b3406495 100644 --- a/modules/trackback/tpl/trackback_list.html +++ b/modules/trackback/tpl/trackback_list.html @@ -32,66 +32,30 @@
{$lang->no}
+ -------- +{@ $col_width = array(50,40,0,0,0,65,90,45)} -------- +{@ $col_width = array(50,40,0,0,0,80,90,45)} -------- +{@ $col_width = array(50,40,0,0,0,65,90,45)} -------- +{@ $col_width = array(50,40,0,0,0,65,90,45)} -------- +{@ $col_width = array(50,40,0,0,0,75,90,50)} -------+{@ $col_width = array(50,40,0,0,0,65,90,95)} + + + +width="{$width}" /> + + @@ -122,8 +87,7 @@ - From f2d86de0bc6cb9c082597aba42bc33cd4b91d6f1 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 16 May 2008 15:42:01 +0000 Subject: [PATCH 02/87] =?UTF-8?q?r4213=20=EC=B6=94=EA=B0=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=20=20*=20Fran=C3=A7ais=20=EC=85=80=20=ED=8F=AD=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=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@4214 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/addon/tpl/addon_list.html | 58 ++++------------- modules/board/tpl/index.html | 65 ++++--------------- modules/comment/tpl/comment_list.html | 6 +- modules/comment/tpl/declared_list.html | 59 ++++------------- modules/document/tpl/declared_list.html | 65 ++++--------------- modules/document/tpl/document_list.html | 4 +- modules/editor/tpl/admin_index.html | 59 ++++------------- modules/file/tpl/file_list.html | 4 +- .../layout/tpl/downloaded_layout_list.html | 59 ++++------------- modules/layout/tpl/index.html | 59 ++++------------- modules/lifepod/tpl/index.html | 53 ++++----------- modules/member/tpl/denied_id_list.html | 47 ++++---------- modules/member/tpl/group_list.html | 53 ++++----------- modules/member/tpl/member_list.html | 53 ++++----------- modules/menu/tpl/index.html | 41 ++++-------- modules/module/tpl/category_list.html | 41 ++++-------- modules/module/tpl/module_list.html | 65 ++++--------------- modules/opage/tpl/index.html | 59 ++++------------- modules/page/tpl/index.html | 59 ++++------------- modules/springnote/tpl/index.html | 53 ++++----------- modules/trackback/tpl/trackback_list.html | 3 +- .../widget/tpl/downloaded_widget_list.html | 4 +- 22 files changed, 218 insertions(+), 751 deletions(-) diff --git a/modules/addon/tpl/addon_list.html b/modules/addon/tpl/addon_list.html index 6dded9721..92915285f 100644 --- a/modules/addon/tpl/addon_list.html +++ b/modules/addon/tpl/addon_list.html @@ -12,60 +12,24 @@
{$lang->no}
-
{$no} {$module_list[$val->module_srl]->browser_title} {htmlspecialchars($val->blog_name)} {htmlspecialchars($val->title)}{$lang->cmd_move}
- + {$val->excerpt}
-------- +{@ $col_width = array(0,45,130,70,150,45,55)} -------- +{@ $col_width = array(0,60,130,75,150,75,65)} -------- +{@ $col_width = array(0,50,130,70,150,45,60)} -------- +{@ $col_width = array(0,80,130,70,150,45,55)} -------- +{@ $col_width = array(0,60,130,75,150,100,65)} -------+{@ $col_width = array(0,60,130,70,150,100,115)} + +{@ $col_width = array(0,60,130,65,150,95,80)} + +width="{$width}" /> + diff --git a/modules/board/tpl/index.html b/modules/board/tpl/index.html index f1bb2552f..5181952f2 100644 --- a/modules/board/tpl/index.html +++ b/modules/board/tpl/index.html @@ -9,64 +9,23 @@
{$lang->addon_name}
--------- +{@ $col_width = array(50,40,130,0,65,45,45,45)} --------- +{@ $col_width = array(50,40,130,0,80,45,50,55)} --------- +{@ $col_width = array(50,40,130,0,65,45,45,45)} --------- +{@ $col_width = array(50,40,130,0,65,45,55,45)} --------- +{@ $col_width = array(50,40,130,0,80,40,55,70)} --------+{@ $col_width = array(50,40,130,0,90,95,85,70)} + +{@ $col_width = array(50,40,130,0,75,40,55,55)} + + + +width="{$width}" /> diff --git a/modules/comment/tpl/comment_list.html b/modules/comment/tpl/comment_list.html index 4c0c6470d..2cde8b817 100644 --- a/modules/comment/tpl/comment_list.html +++ b/modules/comment/tpl/comment_list.html @@ -11,7 +11,6 @@
- {@ $col_width = array(50,40,0,150,65,65,90,45)} @@ -24,11 +23,14 @@ {@ $col_width = array(50,40,0,150,75,75,90,50)} {@ $col_width = array(50,40,0,150,75,75,90,95)} + +{@ $col_width = array(50,40,0,150,65,90,90,60)} width="{$width}" /> + @@ -63,7 +65,7 @@ - diff --git a/modules/comment/tpl/declared_list.html b/modules/comment/tpl/declared_list.html index 79aec6c45..7ba59785a 100644 --- a/modules/comment/tpl/declared_list.html +++ b/modules/comment/tpl/declared_list.html @@ -12,58 +12,23 @@
{$lang->no} {$lang->cmd_move}
+ {cut_str(htmlspecialchars(strip_tags($val->content)),100,'...')}
-------- +{@ $col_width = array(50,0,150,65,50,90,45)} -------- +{@ $col_width = array(50,0,150,80,60,90,50)} -------- +{@ $col_width = array(50,0,150,65,45,90,45)} -------- +{@ $col_width = array(50,0,150,80,60,90,50)} -------- +{@ $col_width = array(80,0,150,80,60,90,50)} -------+{@ $col_width = array(50,0,150,70,75,70,95)} + +{@ $col_width = array(50,0,150,80,60,85,60)} + + + +width="{$width}" /> diff --git a/modules/document/tpl/declared_list.html b/modules/document/tpl/declared_list.html index 3d648fd8c..034112f93 100644 --- a/modules/document/tpl/declared_list.html +++ b/modules/document/tpl/declared_list.html @@ -14,64 +14,23 @@
--------- +{@ $col_width = array(50,40,0,150,55,55,55,65)} --------- +{@ $col_width = array(50,40,0,150,60,55,55,75)} --------- +{@ $col_width = array(50,40,0,150,45,45,45,65)} --------- +{@ $col_width = array(50,40,0,150,55,55,55,75)} --------- +{@ $col_width = array(50,40,0,150,55,55,110,75)} --------+{@ $col_width = array(50,40,0,150,75,50,60,65)} + +{@ $col_width = array(50,40,0,150,65,45,105,75)} + + + +width="{$width}" /> diff --git a/modules/document/tpl/document_list.html b/modules/document/tpl/document_list.html index eff7320c7..dc4580e5d 100644 --- a/modules/document/tpl/document_list.html +++ b/modules/document/tpl/document_list.html @@ -13,7 +13,6 @@
- {@ $col_width = array(50,40,0,150,55,55,65)} @@ -26,11 +25,14 @@ {@ $col_width = array(50,40,0,150,55,110,75)} {@ $col_width = array(50,40,0,150,50,60,65)} + +{@ $col_width = array(50,40,0,150,45,105,65)} width="{$width}" /> + diff --git a/modules/editor/tpl/admin_index.html b/modules/editor/tpl/admin_index.html index 4204e4c51..9aa8ebbdf 100644 --- a/modules/editor/tpl/admin_index.html +++ b/modules/editor/tpl/admin_index.html @@ -4,58 +4,23 @@
{$lang->no}
-------- +{@ $col_width = array(0,60,130,75,50,60,50)} -------- +{@ $col_width = array(0,60,130,75,75,60,50)} -------- +{@ $col_width = array(0,60,130,75,45,55,50)} -------- +{@ $col_width = array(0,80,130,80,50,60,50)} -------- +{@ $col_width = array(0,60,130,75,100,85,50)} -------+{@ $col_width = array(0,60,130,80,100,100,95)} + +{@ $col_width = array(0,60,130,75,95,65,60)} + + + +width="{$width}" /> diff --git a/modules/file/tpl/file_list.html b/modules/file/tpl/file_list.html index 03998ed84..88c53a38f 100644 --- a/modules/file/tpl/file_list.html +++ b/modules/file/tpl/file_list.html @@ -25,6 +25,8 @@ {@ $col_width = array(50,40,0,75,75,80,75,90,50)} {@ $col_width = array(50,40,0,65,80,65,65,90,95)} + +{@ $col_width = array(50,40,0,75,55,65,65,90,60)} @@ -45,7 +47,7 @@ - + diff --git a/modules/layout/tpl/downloaded_layout_list.html b/modules/layout/tpl/downloaded_layout_list.html index 46d985284..563b74cbb 100644 --- a/modules/layout/tpl/downloaded_layout_list.html +++ b/modules/layout/tpl/downloaded_layout_list.html @@ -3,58 +3,23 @@
{$lang->file_size}{$lang->is_valid}{$lang->status} {$lang->cmd_download} {$lang->date} {$lang->ipaddress}
-------- +{@ $col_width = array(0,50,120,60,75,140,80)} -------- +{@ $col_width = array(0,60,130,55,75,140,95)} -------- +{@ $col_width = array(0,50,120,60,75,140,80)} -------- +{@ $col_width = array(0,60,120,70,75,140,90)} -------- +{@ $col_width = array(0,60,120,60,75,140,110)} -------+{@ $col_width = array(0,60,120,60,75,140,110)} + +{@ $col_width = array(0,60,130,55,60,140,90)} + + + +width="{$width}" /> diff --git a/modules/layout/tpl/index.html b/modules/layout/tpl/index.html index 501823e0f..769b0eba0 100644 --- a/modules/layout/tpl/index.html +++ b/modules/layout/tpl/index.html @@ -10,58 +10,23 @@
-------- +{@ $col_width = array(50,0,0,65,95,95,45)} -------- +{@ $col_width = array(50,0,0,80,95,80,55)} -------- +{@ $col_width = array(80,0,0,65,65,65,45)} -------- +{@ $col_width = array(50,0,0,65,105,105,45)} -------- +{@ $col_width = array(80,0,0,75,100,110,70)} -------+{@ $col_width = array(80,0,0,90,130,150,65)} + +{@ $col_width = array(50,0,0,80,110,110,60)} + + + +width="{$width}" /> diff --git a/modules/lifepod/tpl/index.html b/modules/lifepod/tpl/index.html index d2d3f86ba..4d1ea96aa 100644 --- a/modules/lifepod/tpl/index.html +++ b/modules/lifepod/tpl/index.html @@ -8,52 +8,23 @@
------- +{@ $col_width = array(50,130,0,65,45,45)} ------- +{@ $col_width = array(50,130,0,80,50,55)} ------- +{@ $col_width = array(50,130,0,70,45,45)} ------- +{@ $col_width = array(50,130,0,65,45,45)} ------- +{@ $col_width = array(50,130,0,80,40,70)} ------+{@ $col_width = array(50,130,0,90,95,70)} + +{@ $col_width = array(50,130,0,75,40,50)} + + + +width="{$width}" /> diff --git a/modules/member/tpl/denied_id_list.html b/modules/member/tpl/denied_id_list.html index ae6c95ab3..99a597253 100644 --- a/modules/member/tpl/denied_id_list.html +++ b/modules/member/tpl/denied_id_list.html @@ -11,46 +11,23 @@
------ +{@ $col_width = array(50,180,0,65,45)} ------ +{@ $col_width = array(50,180,0,80,55)} ------ +{@ $col_width = array(50,180,0,80,55)} ------ +{@ $col_width = array(50,180,0,65,45)} ------ +{@ $col_width = array(50,180,0,80,70)} -----+{@ $col_width = array(50,180,0,90,65)} + +{@ $col_width = array(50,180,0,75,60)} + + + +width="{$width}" /> diff --git a/modules/member/tpl/group_list.html b/modules/member/tpl/group_list.html index cff2f0fa2..cc8f30af2 100644 --- a/modules/member/tpl/group_list.html +++ b/modules/member/tpl/group_list.html @@ -12,52 +12,23 @@
------- +{@ $col_width = array(0,0,105,45,45,45)} ------- +{@ $col_width = array(0,0,80,65,55,55)} ------- +{@ $col_width = array(0,0,105,45,45,45)} ------- +{@ $col_width = array(0,0,105,80,45,45)} ------- +{@ $col_width = array(0,0,80,80,70,70)} ------+{@ $col_width = array(0,0,105,80,75,65)} + +{@ $col_width = array(0,0,80,75,55,55)} + + + +width="{$width}" /> diff --git a/modules/member/tpl/member_list.html b/modules/member/tpl/member_list.html index 4be6b77f0..b89092bea 100644 --- a/modules/member/tpl/member_list.html +++ b/modules/member/tpl/member_list.html @@ -6,52 +6,23 @@
------- +{@ $col_width = array(50,45,0,0,0,105)} ------- +{@ $col_width = array(50,55,0,160,0,110)} ------- +{@ $col_width = array(50,45,0,0,0,110)} ------- +{@ $col_width = array(50,45,0,0,0,110)} ------- +{@ $col_width = array(50,70,0,0,0,110)} ------+{@ $col_width = array(50,45,0,0,0,110)} + +{@ $col_width = array(50,70,0,0,0,130)} + + + +width="{$width}" /> diff --git a/modules/menu/tpl/index.html b/modules/menu/tpl/index.html index 1063ef243..b06866825 100644 --- a/modules/menu/tpl/index.html +++ b/modules/menu/tpl/index.html @@ -15,40 +15,23 @@
----- +{@ $col_width = array(50,0,65,45)} ----- +{@ $col_width = array(50,0,80,55)} ----- +{@ $col_width = array(50,0,65,45)} ----- +{@ $col_width = array(60,0,65,45)} ----- +{@ $col_width = array(50,0,75,70)} ----+{@ $col_width = array(50,0,90,65)} + +{@ $col_width = array(50,0,80,55)} + + + +width="{$width}" /> diff --git a/modules/module/tpl/category_list.html b/modules/module/tpl/category_list.html index fff18b866..2fbd50483 100644 --- a/modules/module/tpl/category_list.html +++ b/modules/module/tpl/category_list.html @@ -11,40 +11,23 @@
----- +{@ $col_width = array(0,65,45,45)} ----- +{@ $col_width = array(0,80,50,55)} ----- +{@ $col_width = array(0,65,45,45)} ----- +{@ $col_width = array(0,65,45,45)} ----- +{@ $col_width = array(0,75,70,70)} ----+{@ $col_width = array(0,65,45,45)} + +{@ $col_width = array(0,80,60,55)} + + + +width="{$width}" /> diff --git a/modules/module/tpl/module_list.html b/modules/module/tpl/module_list.html index 1abb33cc4..382a30373 100644 --- a/modules/module/tpl/module_list.html +++ b/modules/module/tpl/module_list.html @@ -8,64 +8,23 @@
--------- +{@ $col_width = array(0,40,80,75,70,140,70,100)} --------- +{@ $col_width = array(0,60,80,75,70,140,50,100)} --------- +{@ $col_width = array(0,40,80,75,60,140,65,80)} --------- +{@ $col_width = array(0,80,80,70,80,140,45,100)} --------- +{@ $col_width = array(0,60,80,75,90,140,85,75)} --------+{@ $col_width = array(0,60,90,70,70,140,95,90)} + +{@ $col_width = array(0,60,80,70,75,140,70,90)} + + + +width="{$width}" /> diff --git a/modules/opage/tpl/index.html b/modules/opage/tpl/index.html index 4b233d268..9b2375ecd 100644 --- a/modules/opage/tpl/index.html +++ b/modules/opage/tpl/index.html @@ -9,58 +9,23 @@
-------- +{@ $col_width = array(50,130,0,65,45,45,45)} -------- +{@ $col_width = array(50,130,0,80,50,50,55)} -------- +{@ $col_width = array(50,130,0,80,50,60,70)} -------- +{@ $col_width = array(50,130,0,65,45,55,45)} -------- +{@ $col_width = array(50,130,0,80,40,55,70)} -------+{@ $col_width = array(50,130,0,90,95,85,70)} + +{@ $col_width = array(50,130,0,80,40,50,55)} + + + +width="{$width}" /> diff --git a/modules/page/tpl/index.html b/modules/page/tpl/index.html index a2e947ede..2ea3243b5 100644 --- a/modules/page/tpl/index.html +++ b/modules/page/tpl/index.html @@ -9,58 +9,23 @@
-------- +{@ $col_width = array(50,130,0,65,45,45,45)} -------- +{@ $col_width = array(50,130,0,80,50,50,55)} -------- +{@ $col_width = array(50,130,0,65,45,45,45)} -------- +{@ $col_width = array(50,130,0,65,45,55,45)} -------- +{@ $col_width = array(50,130,0,80,40,55,70)} -------+{@ $col_width = array(50,130,0,90,95,85,70)} + +{@ $col_width = array(50,130,0,80,40,50,55)} + + + +width="{$width}" /> diff --git a/modules/springnote/tpl/index.html b/modules/springnote/tpl/index.html index 0cc9f270f..cb384411b 100644 --- a/modules/springnote/tpl/index.html +++ b/modules/springnote/tpl/index.html @@ -8,52 +8,23 @@
------- +{@ $col_width = array(50,130,0,65,45,45)} ------- +{@ $col_width = array(50,130,0,80,50,55)} ------- +{@ $col_width = array(50,130,0,65,45,45)} ------- +{@ $col_width = array(50,130,0,65,45,45)} ------- +{@ $col_width = array(50,130,0,80,40,70)} ------+{@ $col_width = array(50,130,0,90,95,70)} + +{@ $col_width = array(50,130,0,80,40,55)} + + + +width="{$width}" /> diff --git a/modules/trackback/tpl/trackback_list.html b/modules/trackback/tpl/trackback_list.html index 9b3406495..39faf7f0d 100644 --- a/modules/trackback/tpl/trackback_list.html +++ b/modules/trackback/tpl/trackback_list.html @@ -32,7 +32,6 @@
- {@ $col_width = array(50,40,0,0,0,65,90,45)} @@ -45,6 +44,8 @@ {@ $col_width = array(50,40,0,0,0,75,90,50)} {@ $col_width = array(50,40,0,0,0,65,90,95)} + +{@ $col_width = array(50,40,0,0,0,65,85,60)} diff --git a/modules/widget/tpl/downloaded_widget_list.html b/modules/widget/tpl/downloaded_widget_list.html index 488d9cd0c..ec207dcdd 100644 --- a/modules/widget/tpl/downloaded_widget_list.html +++ b/modules/widget/tpl/downloaded_widget_list.html @@ -6,7 +6,7 @@
-{@ $col_width = array(0,80,120,80,140,80)} +{@ $col_width = array(0,80,120,80,140,70)} {@ $col_width = array(0,80,120,80,140,80)} @@ -17,6 +17,8 @@ {@ $col_width = array(0,60,120,75,140,110)} {@ $col_width = array(0,60,120,80,140,125)} + +{@ $col_width = array(0,60,120,65,140,70)} From d4fb006d02c0ac1e1f25179bc07446c9b44f42f2 Mon Sep 17 00:00:00 2001 From: bnu Date: Fri, 16 May 2008 15:43:20 +0000 Subject: [PATCH 03/87] =?UTF-8?q?Fran=C3=A7ais=20=EC=96=B8=EC=96=B4?= =?UTF-8?q?=ED=8C=A9=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20=20=20*?= =?UTF-8?q?=20=EA=B3=B5=EB=B0=B1=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4215 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/addon/lang/fr.lang.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/addon/lang/fr.lang.php b/modules/addon/lang/fr.lang.php index f5d25fe5c..148b4a59d 100644 --- a/modules/addon/lang/fr.lang.php +++ b/modules/addon/lang/fr.lang.php @@ -13,6 +13,4 @@ $lang->about_addon_mid = "On peut choisir des objets dans lesquels la Compagnon soit utilisé.
(Tout sera choisi quand rien n'est choisi.)"; $lang->about_addon = 'La Compagnon, c\'est pour contrôler les actions plutôt d\'imprimer des résultats de HTML.
Par la Touche à Bascule des compagnons que vous voulez faire marcher ou arrêter, vous pouvez appliquer les fonctions très utiles à administrer votre site web.'; -?> - - +?> \ No newline at end of file From adcd527bfdd363d09daeac0285ed1a78edbaeb0a Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 17 May 2008 15:13:11 +0000 Subject: [PATCH 05/87] =?UTF-8?q?#405=20RSS=EC=97=90=20=EB=B9=84=EB=B0=80?= =?UTF-8?q?=EA=B8=80=EC=9D=B4=20=EC=B6=9C=EB=A0=A5=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4219 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.model.php | 3 ++- modules/rss/rss.view.php | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 14e9c2ed8..39c44f9b5 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -191,7 +191,8 @@ break; case 'is_notice' : case 'is_secret' : - if($search_keyword=='Y') $args->{"s_".$search_target} = 'Y'; + if($search_keyword=='N') $args->{"s_".$search_target} = 'N'; + elseif($search_keyword=='Y') $args->{"s_".$search_target} = 'Y'; else $args->{"s_".$search_target} = ''; break; case 'member_srl' : diff --git a/modules/rss/rss.view.php b/modules/rss/rss.view.php index 681b76d70..6c285fc0c 100644 --- a/modules/rss/rss.view.php +++ b/modules/rss/rss.view.php @@ -90,6 +90,8 @@ * 출력할 컨텐츠 추출을 위한 인자 정리 **/ $args->module_srl = $module_srl; + $args->search_target = 'is_secret'; + $args->search_keyword = 'N'; $args->page = 1; $args->list_count = 15; if($start_date) $args->start_date = $start_date; From 7f32d6ef6d2b5290a70fc4e708abe44648c58b99 Mon Sep 17 00:00:00 2001 From: mmx900 Date: Mon, 19 May 2008 07:51:17 +0000 Subject: [PATCH 06/87] =?UTF-8?q?calender.js=20=EB=9F=AC=EC=8B=9C=EC=95=84?= =?UTF-8?q?=20=EB=B2=88=EC=97=AD=20=EC=88=98=EC=A0=95=EB=B3=B8=20by=20brad?= =?UTF-8?q?ly1?= 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@4221 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/calendar-ru.js | 116 +++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/common/js/calendar-ru.js b/common/js/calendar-ru.js index 6de06b2a8..2a866250e 100644 --- a/common/js/calendar-ru.js +++ b/common/js/calendar-ru.js @@ -11,14 +11,14 @@ // full day names DyCalendar._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 @@ -34,14 +34,14 @@ DyCalendar._DN = new Array // short day names DyCalendar._SDN = new Array -("Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat", - "Sun"); +("Sun", + "", + "", + "Wed", + "Thu", + "", + "", + "ݬ߬"); // First day of the week. "0" means display Sunday first, "1" means display // Monday first, etc. @@ -49,37 +49,37 @@ DyCalendar._FD = 0; // full month names DyCalendar._MN = new Array -("January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December"); +("߬ӬѬ", + "֬ӬѬݬ", + "Ѭ", + "֬ݬ", + "Ѭ", + "߬", + "ݬ", + "ӬԬ", + "֬߬Ҭ", + "ܬҬ", + "Ҭ", + "֬ܬѬҬ"); // short month names DyCalendar._SMN = new Array -("Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec"); +("߬ӬѬ", + "֬ӬѬݬ", + "Ѭ", + "֬ݬ", + "Ѭ", + "߬", + "ݬ", + "ӬԬ", + "֬߬Ҭ", + "ܬҬ", + "Ҭ", + "֬ܬѬҬ"); // tooltips DyCalendar._TT = {}; -DyCalendar._TT["INFO"] = "About the calendar"; +DyCalendar._TT["INFO"] = " ܬѬݬ֬߬լѬ"; DyCalendar._TT["ABOUT"] = "DHTML Date/Time Selector\n" + @@ -97,31 +97,31 @@ DyCalendar._TT["ABOUT_TIME"] = "\n\n" + "- or Shift-click to decrease it\n" + "- or click and drag for faster selection."; -DyCalendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; -DyCalendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; -DyCalendar._TT["GO_TODAY"] = "Go Today"; -DyCalendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; -DyCalendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; -DyCalendar._TT["SEL_DATE"] = "Select date"; -DyCalendar._TT["DRAG_TO_MOVE"] = "Drag to move"; -DyCalendar._TT["PART_TODAY"] = " (today)"; +DyCalendar._TT [ "PREV_YEAR"] = "֬. (լ֬جڬӬѬ լݬ ެ֬߬)"; +DyCalendar._TT [ "PREV_MONTH"] = "֬. ֬ (լ֬جڬӬѬ լݬ ެ֬߬)"; +DyCalendar._TT [ "GO_TODAY"] = "֬֬۬ ֬Ԭլ߬"; +DyCalendar._TT [ "NEXT_MONTH"] = " ݬ֬լ֬ ެ֬ (լ֬جڬӬѬ լݬ ެ֬߬)"; +DyCalendar._TT [ "NEXT_YEAR"] = " ݬ֬լ֬ Ԭլ (լ֬جڬӬѬ լݬ ެ֬߬)"; +DyCalendar._TT [ "SEL_DATE"] = "Ҭ֬ڬ լѬ"; +DyCalendar._TT [ "DRAG_TO_MOVE"] = "֬֬ѬܬڬӬѬ۬ լӬڬԬѬ"; +DyCalendar._TT [ "PART_TODAY"] = "(֬Ԭլ߬)"; // the following is to inform that "%s" is to be the first day of week // %s will be replaced with the day name. -DyCalendar._TT["DAY_FIRST"] = "Display %s first"; +DyCalendar._TT [ "DAY_FIRST"] = "display% ֬Ӭ"; // 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. -DyCalendar._TT["WEEKEND"] = "0,6"; +DyCalendar._TT [ "WEEKEND"] = "0,6"; -DyCalendar._TT["CLOSE"] = "Close"; -DyCalendar._TT["TODAY"] = "Today"; -DyCalendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; +DyCalendar._TT [ "CLOSE"] = "Ѭܬ"; +DyCalendar._TT [ "Today"] = "֬Ԭլ߬"; +DyCalendar._TT [ "TIME_PART"] = "(Shift-) ܬݬڬ ڬݬ ֬֬Ѭڬ լݬ ڬ٬ެ֬߬֬߬ڬ ڬެ"; // date formats -DyCalendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; -DyCalendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; +DyCalendar._TT [ "DEF_DATE_FORMAT"] = "% Y-% -% "; +DyCalendar._TT [ "TT_DATE_FORMAT"] = "%,%% "; -DyCalendar._TT["WK"] = "wk"; -DyCalendar._TT["TIME"] = "Time:"; +DyCalendar._TT [ "WK"] = "֬"; +DyCalendar._TT [ "TIME"] = "֬ެ:"; From a1788b901c3cdf2c6012bb22f2abd93c8250b425 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 21 May 2008 12:00:55 +0000 Subject: [PATCH 07/87] =?UTF-8?q?DyCalendar=20=EB=B2=88=EC=97=AD=EB=B3=B8?= =?UTF-8?q?=20=EC=BB=A4=EB=B0=8B=20(bradly1=EB=8B=98=20=EC=9E=91=EC=84=B1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4222 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/calendar-es.js | 25 ++++----- common/js/calendar-ge.js | 2 +- common/js/calendar-ru.js | 114 ++++++++++++++++++++------------------- common/lang/ge.lang.php | 36 ++++++------- 4 files changed, 88 insertions(+), 89 deletions(-) diff --git a/common/js/calendar-es.js b/common/js/calendar-es.js index 6290b6092..f02916a3d 100644 --- a/common/js/calendar-es.js +++ b/common/js/calendar-es.js @@ -1,6 +1,6 @@ // ** I18N -// DyCalendar KO language +// DyCalendar ES language // Author: Mihai Bazon, // Translation: Bradly1, // Encoding: UTF-8 @@ -87,21 +87,18 @@ DyCalendar._TT["INFO"] = "Sobre el calendario"; DyCalendar._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 을 읽으세요." + +"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" + -"날짜 선택:\n" + -"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" + -"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\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."; DyCalendar._TT["ABOUT_TIME"] = "\n\n" + -"시간 선택:\n" + -"- 마우스로 누르면 시간이 증가합니다\n" + -"- Shift 키와 함께 누르면 감소합니다\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."; DyCalendar._TT["PREV_YEAR"] = "Prev. año (mantener para menu)"; DyCalendar._TT["PREV_MONTH"] = "Prev. mes (mantener para menu)"; diff --git a/common/js/calendar-ge.js b/common/js/calendar-ge.js index 392d1c240..aa59d2dd9 100644 --- a/common/js/calendar-ge.js +++ b/common/js/calendar-ge.js @@ -1,6 +1,6 @@ // ** I18N -// DyCalendar KO language +// DyCalendar GE language // Author: Mihai Bazon, // Translation: bradly1, // Encoding: UTF-8 diff --git a/common/js/calendar-ru.js b/common/js/calendar-ru.js index 2a866250e..d9937313b 100644 --- a/common/js/calendar-ru.js +++ b/common/js/calendar-ru.js @@ -1,8 +1,10 @@ // ** I18N -// DyCalendar EN language +// DyCalendar RU language // Author: Mihai Bazon, -// Encoding: any +// Translation: bradly1, +// Encoding: UTF-8 +// lang : RU // Distributed under the same terms as the calendar itself. // For translators: please use UTF-8 if possible. We strongly believe that @@ -11,14 +13,14 @@ // full day names DyCalendar._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 @@ -35,13 +37,13 @@ DyCalendar._DN = new Array // short day names DyCalendar._SDN = new Array ("Sun", - "", - "", + "ПН", + "ВТ", "Wed", "Thu", - "", - "", - "ݬ߬"); + "Пят", + "СБ", + "Солнце"); // First day of the week. "0" means display Sunday first, "1" means display // Monday first, etc. @@ -49,37 +51,37 @@ DyCalendar._FD = 0; // full month names DyCalendar._MN = new Array -("߬ӬѬ", - "֬ӬѬݬ", - "Ѭ", - "֬ݬ", - "Ѭ", - "߬", - "ݬ", - "ӬԬ", - "֬߬Ҭ", - "ܬҬ", - "Ҭ", - "֬ܬѬҬ"); +("Январь", + "Февраль", + "Марта", + "Апрель", + "Мая", + "Июнь", + "Июль", + "Август", + "Сентябрь", + "Октябрь", + "Ноябрь", + "Декабрь"); // short month names DyCalendar._SMN = new Array -("߬ӬѬ", - "֬ӬѬݬ", - "Ѭ", - "֬ݬ", - "Ѭ", - "߬", - "ݬ", - "ӬԬ", - "֬߬Ҭ", - "ܬҬ", - "Ҭ", - "֬ܬѬҬ"); +("Январь", + "Февраль", + "Марта", + "Апрель", + "Мая", + "Июнь", + "Июль", + "Август", + "Сентябрь", + "Октябрь", + "Ноябрь", + "Декабрь"); // tooltips DyCalendar._TT = {}; -DyCalendar._TT["INFO"] = " ܬѬݬ֬߬լѬ"; +DyCalendar._TT["INFO"] = "О календаре"; DyCalendar._TT["ABOUT"] = "DHTML Date/Time Selector\n" + @@ -97,31 +99,31 @@ DyCalendar._TT["ABOUT_TIME"] = "\n\n" + "- or Shift-click to decrease it\n" + "- or click and drag for faster selection."; -DyCalendar._TT [ "PREV_YEAR"] = "֬. (լ֬جڬӬѬ լݬ ެ֬߬)"; -DyCalendar._TT [ "PREV_MONTH"] = "֬. ֬ (լ֬جڬӬѬ լݬ ެ֬߬)"; -DyCalendar._TT [ "GO_TODAY"] = "֬֬۬ ֬Ԭլ߬"; -DyCalendar._TT [ "NEXT_MONTH"] = " ݬ֬լ֬ ެ֬ (լ֬جڬӬѬ լݬ ެ֬߬)"; -DyCalendar._TT [ "NEXT_YEAR"] = " ݬ֬լ֬ Ԭլ (լ֬جڬӬѬ լݬ ެ֬߬)"; -DyCalendar._TT [ "SEL_DATE"] = "Ҭ֬ڬ լѬ"; -DyCalendar._TT [ "DRAG_TO_MOVE"] = "֬֬ѬܬڬӬѬ۬ լӬڬԬѬ"; -DyCalendar._TT [ "PART_TODAY"] = "(֬Ԭլ߬)"; +DyCalendar._TT [ "PREV_YEAR"] = "Пред. Год (удерживать для меню)"; +DyCalendar._TT [ "PREV_MONTH"] = "Пред. Месяце (удерживать для меню)"; +DyCalendar._TT [ "GO_TODAY"] = "Перейти Сегодня"; +DyCalendar._TT [ "NEXT_MONTH"] = "В следующем месяце (удерживать для меню)"; +DyCalendar._TT [ "NEXT_YEAR"] = "В следующем году (удерживать для меню)"; +DyCalendar._TT [ "SEL_DATE"] = "Выберите дату"; +DyCalendar._TT [ "DRAG_TO_MOVE"] = "Перетаскивайте двигаться"; +DyCalendar._TT [ "PART_TODAY"] = "(сегодня)"; // the following is to inform that "%s" is to be the first day of week // %s will be replaced with the day name. -DyCalendar._TT [ "DAY_FIRST"] = "display% ֬Ӭ"; +DyCalendar._TT [ "DAY_FIRST"] = "display% с первой"; // 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. DyCalendar._TT [ "WEEKEND"] = "0,6"; -DyCalendar._TT [ "CLOSE"] = "Ѭܬ"; -DyCalendar._TT [ "Today"] = "֬Ԭլ߬"; -DyCalendar._TT [ "TIME_PART"] = "(Shift-) ܬݬڬ ڬݬ ֬֬Ѭڬ լݬ ڬ٬ެ֬߬֬߬ڬ ڬެ"; +DyCalendar._TT [ "CLOSE"] = "Закрыть"; +DyCalendar._TT [ "Today"] = "Сегодня"; +DyCalendar._TT [ "TIME_PART"] = "(Shift-) клик или перетащите для изменения стоимости"; // date formats -DyCalendar._TT [ "DEF_DATE_FORMAT"] = "% Y-% -% "; -DyCalendar._TT [ "TT_DATE_FORMAT"] = "%,%% "; +DyCalendar._TT [ "DEF_DATE_FORMAT"] = "% Y-% м-% г"; +DyCalendar._TT [ "TT_DATE_FORMAT"] = "%,%% е б"; -DyCalendar._TT [ "WK"] = "֬"; -DyCalendar._TT [ "TIME"] = "֬ެ:"; +DyCalendar._TT [ "WK"] = "Нед"; +DyCalendar._TT [ "TIME"] = "Время:"; diff --git a/common/lang/ge.lang.php b/common/lang/ge.lang.php index baa9790ca..48f0b36db 100644 --- a/common/lang/ge.lang.php +++ b/common/lang/ge.lang.php @@ -1,15 +1,15 @@ cmd_write = 'Schreiben'; $lang->cmd_reply = 'Antworten'; $lang->cmd_delete = 'Löschen'; - $lang->cmd_modify = 'Change'; + $lang->cmd_modify = 'Ändern'; $lang->cmd_edit = 'Bearbeiten'; $lang->cmd_view = 'Anzeigen'; $lang->cmd_view_all = 'Alle anzeigen'; @@ -41,11 +41,11 @@ $lang->cmd_make = 'Erstellen'; $lang->cmd_select = 'Select'; $lang->cmd_select_all = 'Alle auswählen'; - $lang->cmd_unselect_all = "Alle abwählen"; + $lang->cmd_unselect_all = 'Alle abwählen'; $lang->cmd_reverse_all = 'Reverse'; $lang->cmd_close_all = 'Schließen Sie alle'; $lang->cmd_open_all = 'Open All'; - $lang->cmd_reload = "Reload"; + $lang->cmd_reload = 'Reload'; $lang->cmd_close = 'Schließen'; $lang->cmd_open = 'Open'; $lang->cmd_setup = 'Konfiguration'; @@ -58,18 +58,18 @@ $lang->cmd_scrap = 'Schrott'; $lang->cmd_preview = 'Vorschau'; $lang->cmd_reset = 'Reset'; - $lang->cmd_remake_cache = "Re-Cache-Datei erstellen"; - $lang->cmd_publish = "Veröffentlichen"; + $lang->cmd_remake_cache = 'Re-Cache-Datei erstellen'; + $lang->cmd_publish = 'Veröffentlichen'; $lang->cmd_layout_setup = 'Konfiguration Layout'; $lang->cmd_layout_edit = 'Layout bearbeiten'; - $lang->enable = "Aktivieren"; + $lang->enable = 'Aktivieren'; $lang->deaktivieren = 'Deaktivieren'; // Essential Words $lang->no = 'Nein'; $lang->notice = 'Hinweis'; - $lang->secret = "Geheim"; + $lang->secret = 'Geheim'; $lang->category = $lang->category_srl = 'Kategorie'; $lang->none_category = '분류없음'; $lang->document_srl = 'Doc. No '; @@ -91,7 +91,7 @@ $lang->title_content = 'Betreff + Inhalt'; $lang->topic = 'Thema'; $lang->replies = 'Antwort'; - $lang->content = "Inhalt"; + $lang->content = 'Inhalt'; $lang->document = 'Artikel'; $lang->comment = 'Kommentar'; $lang->description = 'Beschreibung'; @@ -117,7 +117,7 @@ $lang->mid = 'Module Name'; $lang->layout = 'Layout'; - $lang->widget = "Widget"; + $lang->widget = 'Widget'; $lang->module = 'Modul'; $lang->skin = 'Thema'; $lang->colorset = 'Colorset'; @@ -141,7 +141,7 @@ $lang->last_update = 'Letzte Aktualisierung'; $lang->last_post = 'Letzter Beitrag'; $lang->signup_date = 'Join Date'; - $lang->last_login = "Letzter Login"; + $lang->last_login = 'Letzter Login'; $lang->first_page = 'Erste Seite'; $lang->last_page = 'Letzte Seite'; $lang->search_target = 'Target für die Google-Suche'; @@ -156,7 +156,7 @@ $lang->use = 'Use'; $lang->notuse = 'nicht verwenden'; - $lang->not_exists = "nicht vorhanden"; + $lang->not_exists = 'nicht vorhanden'; $lang->public = 'öffentlich'; $lang->private = 'private'; @@ -166,7 +166,7 @@ $lang->unit_hour = 'h'; $lang->unit_day = 'th'; $lang->unit_week = 'Woche'; - $lang->unit_month = "Monat"; + $lang->unit_month = 'Monat'; $lang->unit_year = 'Jahr'; // Beschreibungen @@ -225,15 +225,15 @@ $lang->column_type_list['tel'] = 'Telefonnummer'; $lang->column_type_list['textarea'] = 'Multi-line textarea'; $lang->column_type_list['checkbox'] = 'Checkbox (multiple Auswahl)'; - $lang->column_type_list['select'] = "select box (Einzel-Auswahl) '; - $lang->column_type_list['kr_zip'] = 'Postleitzahl (Koreanisch) "; + $lang->column_type_list['select'] = 'select box (Einzel-Auswahl) '; + $lang->column_type_list['kr_zip'] = 'Postleitzahl (Koreanisch) '; $lang->column_type_list['date'] = 'Datum (jjjj / mm / dd)'; // $lang->column_type_list [ 'jp_zip'] = 'Postleitzahl (Japanisch)'; $lang->column_name = 'Spaltenname'; $lang->column_title = 'Spaltentitel'; $lang->default_value = 'Standardwert'; $lang->is_active = 'Aktiv'; - $lang->is_required = "Pflichtfeld"; + $lang->is_required = 'Pflichtfeld'; // Alert Nachrichten für JavaScript unter Verwendung von XML-Filter $lang->filter->isnull = 'Bitte geben Sie einen Wert für% s'; @@ -247,4 +247,4 @@ $lang->filter->invalid_alpha = "Das Format von% s ist ungültig. Bitte geben Sie nur Alphabete"; $lang->filter->invalid_alpha_number = "Das Format von% s ist ungültig. Bitte geben Sie Ihre Alphabete oder Zahlen"; $lang->filter->invalid_number = "Das Format von% s ist ungültig. Bitte geben Sie nur Zahlen"; -?> +?> \ No newline at end of file From a408970da33ca5524a26fb5670133e26142dc107 Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 24 May 2008 09:29:49 +0000 Subject: [PATCH 08/87] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=B4=20=ED=95=9C=20=EA=B0=9C=20=EC=9D=B4=EC=83=81=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=EB=90=98=EC=96=B4=20=EC=9E=88=EC=9D=84=20?= =?UTF-8?q?=EB=95=8C=EC=9D=98=20=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4223 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/module.model.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/module/module.model.php b/modules/module/module.model.php index aab2816fe..98f78247f 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -37,6 +37,9 @@ // 모듈의 정보가 없다면($mid가 잘못이거나 없었을 경우) 기본 모듈을 가져옴 if(!$output->data) $output = executeQuery('module.getDefaultMidInfo'); + // 기본 모듈이 한 개 이상 지정되어 있을 때의 예외 처리 + if(!$output->data->module_srl && $output->data[0]) $output->data = $output->data[0]; + return $this->arrangeModuleInfo($output->data); } From 0b7cfa80a114cdbbcf106f5f357b387fd0e502e8 Mon Sep 17 00:00:00 2001 From: haneul Date: Sun, 25 May 2008 16:59:15 +0000 Subject: [PATCH 09/87] =?UTF-8?q?#413=20=EC=9D=BC=EA=B4=84=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= 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@4224 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/conf/module.xml | 2 ++ modules/member/member.admin.controller.php | 21 +++++++++++ modules/member/member.admin.view.php | 14 +++++++- modules/member/tpl/delete_members.html | 37 ++++++++++++++++++++ modules/member/tpl/filter/delete_members.xml | 8 +++++ modules/member/tpl/js/member_admin.js | 28 +++++++++++++++ modules/member/tpl/member_list.html | 1 + 7 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 modules/member/tpl/delete_members.html create mode 100644 modules/member/tpl/filter/delete_members.xml diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index 3a828bc44..39bb3bd74 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -33,6 +33,7 @@ + @@ -82,6 +83,7 @@ + diff --git a/modules/member/member.admin.controller.php b/modules/member/member.admin.controller.php index 1920e245c..57e55bceb 100644 --- a/modules/member/member.admin.controller.php +++ b/modules/member/member.admin.controller.php @@ -202,6 +202,27 @@ $this->setMessage($msg_code); } + /** + * @brief 선택된 회원들을 일괄 삭제 + */ + function procMemberAdminDeleteMembers() { + $member_srl = Context::get('member_srl'); + if(!$member_srl) return new Object(-1,'msg_invalid_request'); + $member_srls = explode(',',$member_srl); + $oMemberController = &getController('member'); + foreach($member_srls as $member) + { + $output = $oMemberController->deleteMember($member); + if(!$output->toBool()) + { + $this->setMessage('failed_deleted'); + return $output; + } + } + + $this->setMessage('success_deleted'); + } + /** * @brief 선택된 회원들의 그룹을 일괄 변경 **/ diff --git a/modules/member/member.admin.view.php b/modules/member/member.admin.view.php index 453d23cc4..bf03a1cd9 100644 --- a/modules/member/member.admin.view.php +++ b/modules/member/member.admin.view.php @@ -155,7 +155,7 @@ * @brief 회원 삭제 화면 출력 **/ function dispMemberAdminDeleteForm() { - if(!Context::get('member_srl')) return $this->dispContent(); + if(!Context::get('member_srl')) return $this->dispMemberAdminList(); $this->setTemplateFile('delete_form'); } @@ -238,5 +238,17 @@ $this->setTemplateFile('manage_member_group'); } + /** + * @brief 회원 일괄 삭제 + **/ + function dispMemberAdminDeleteMembers() { + // 선택된 회원 목록을 구함 + $args->member_srl = trim(Context::get('member_srls')); + $output = executeQueryArray('member.getMembers', $args); + Context::set('member_list', $output->data); + + $this->setLayoutFile('popup_layout'); + $this->setTemplateFile('delete_members'); + } } ?> diff --git a/modules/member/tpl/delete_members.html b/modules/member/tpl/delete_members.html new file mode 100644 index 000000000..8b3e26c2a --- /dev/null +++ b/modules/member/tpl/delete_members.html @@ -0,0 +1,37 @@ + + + +
+

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

+
+ + + + +
+
+ + + + + + + + + + + + +
{$lang->user_id}{$lang->nick_name}{$lang->signup_date}
{$val->user_id}
{$val->nick_name}
{zdate($val->regdate, "Y-m-d H:i")}
+ + +
+
+ + + + {$lang->cmd_close} +
+
+ + diff --git a/modules/member/tpl/filter/delete_members.xml b/modules/member/tpl/filter/delete_members.xml new file mode 100644 index 000000000..7b8f69a67 --- /dev/null +++ b/modules/member/tpl/filter/delete_members.xml @@ -0,0 +1,8 @@ + +
+ + + + + + diff --git a/modules/member/tpl/js/member_admin.js b/modules/member/tpl/js/member_admin.js index ca2824af7..d21c133c6 100644 --- a/modules/member/tpl/js/member_admin.js +++ b/modules/member/tpl/js/member_admin.js @@ -308,3 +308,31 @@ function completeUpdateMemberGroup(ret_obj) { alert(ret_obj['message']); window.close(); } + + +/* 일괄 삭제 */ +function doDeleteMembers() { + var fo_obj = xGetElementById("member_fo"); + var member_srl = new Array(); + + if(typeof(fo_obj.cart.length)=='undefined') { + if(fo_obj.cart.checked) member_srl[member_srl.length] = fo_obj.cart.value; + } else { + var length = fo_obj.cart.length; + for(var i=0;i
{$lang->cmd_make} From f7968229e6e57872271f5ba2828c69ac2c56129a Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 26 May 2008 02:16:41 +0000 Subject: [PATCH 10/87] =?UTF-8?q?manage=20group,=20delete=20members=20?= =?UTF-8?q?=EC=9D=B4=ED=9B=84=EC=97=90=20=EB=B6=80=EB=AA=A8=EC=B0=BD?= =?UTF-8?q?=EC=97=90=20=EB=82=B4=EC=9A=A9=20=EB=B0=98=EC=98=81?= 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@4225 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/tpl/js/member_admin.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/member/tpl/js/member_admin.js b/modules/member/tpl/js/member_admin.js index d21c133c6..dd2cfe88c 100644 --- a/modules/member/tpl/js/member_admin.js +++ b/modules/member/tpl/js/member_admin.js @@ -306,6 +306,7 @@ function doManageMemberGroup() { /* 그룹 일괄 변경 후 */ function completeUpdateMemberGroup(ret_obj) { alert(ret_obj['message']); + opener.location.href = opener.current_url; window.close(); } @@ -333,6 +334,7 @@ function doDeleteMembers() { /* 일괄 삭제 후 */ function completeDeleteMembers(ret_obj) { alert(ret_obj['message']); + opener.location.href = opener.current_url; window.close(); } From 08cee6952c194fd2e2f9b81ab54ee71ccf4333b1 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 30 May 2008 09:33:04 +0000 Subject: [PATCH 11/87] =?UTF-8?q?member=EB=AA=A8=EB=93=88=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=AA=BD=EC=A7=80/=EC=B9=9C=EA=B5=AC=EB=93=B1?= =?UTF-8?q?=EC=9D=98=20=EC=BB=A4=EB=AE=A4=EB=8B=88=EC=BC=80=EC=9D=B4?= =?UTF-8?q?=EC=85=98=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20communication=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EB=A1=9C=20=EB=B6=84=EB=A6=AC.=20member=5Fex?= =?UTF-8?q?tra=5Finfo=20=EC=95=A0=EB=93=9C=EC=98=A8=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=AA=BD=EC=A7=80/=EC=B9=9C=EA=B5=AC=EC=99=80=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=EB=90=9C=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20member=5Fcom?= =?UTF-8?q?munication=20=EC=95=A0=EB=93=9C=EC=98=A8=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B6=84=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@4226 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/conf/info.xml | 84 +--- addons/member_extra_info/lang/en.lang.php | 3 - addons/member_extra_info/lang/es.lang.php | 3 - addons/member_extra_info/lang/ge.lang.php | 3 - addons/member_extra_info/lang/jp.lang.php | 3 - addons/member_extra_info/lang/ko.lang.php | 3 - addons/member_extra_info/lang/ru.lang.php | 9 - addons/member_extra_info/lang/zh-CN.lang.php | 3 - .../member_extra_info.addon.php | 99 +---- modules/comment/comment.item.php | 4 +- .../communication.admin.controller.php | 35 ++ .../communication.admin.model.php | 40 ++ .../communication.admin.view.php | 40 ++ modules/communication/communication.class.php | 71 +++ .../communication.controller.php | 413 ++++++++++++++++++ modules/communication/communication.model.php | 189 ++++++++ modules/communication/communication.view.php | 221 ++++++++++ modules/communication/conf/info.xml | 8 + modules/communication/conf/module.xml | 31 ++ modules/communication/lang/en.lang.php | 48 ++ modules/communication/lang/es.lang.php | 49 +++ modules/communication/lang/jp.lang.php | 49 +++ modules/communication/lang/ko.lang.php | 48 ++ modules/communication/lang/ru.lang.php | 50 +++ modules/communication/lang/zh-CN.lang.php | 49 +++ .../queries/addFriend.xml | 0 .../queries/addFriendGroup.xml | 0 .../queries/deleteFriend.xml | 0 .../queries/deleteFriendGroup.xml | 0 .../queries/deleteMessage.xml | 0 .../queries/deleteMessages.xml | 0 .../queries/getFriendGroup.xml | 0 .../queries/getFriendGroups.xml | 0 .../queries/getFriends.xml | 0 .../queries/getMessage.xml | 0 .../queries/getNewMessage.xml | 0 .../queries/getReceivedMessages.xml | 0 .../queries/getSendedMessages.xml | 0 .../queries/getStoredMessages.xml | 0 .../queries/isAddedFriend.xml | 0 .../queries/moveFriend.xml | 0 .../queries/renameFriendGroup.xml | 0 .../queries/sendMessage.xml | 0 .../queries/setMessageReaded.xml | 0 .../queries/setMessageStored.xml | 0 .../queries/updateAllowMessage.xml | 0 .../schemas/member_friend.xml | 0 .../schemas/member_friend_group.xml | 0 .../schemas/member_message.xml | 0 .../skins/default/add_friend.html | 2 +- .../skins/default/add_friend_group.html | 0 .../skins/default/common_footer.html | 1 + .../skins/default/common_header.html | 36 ++ .../communication/skins/default/css/black.css | 54 +++ .../skins/default/css/common.css | 175 ++++++++ .../communication/skins/default/css/cyan.css | 4 + .../communication/skins/default/css/green.css | 4 + .../skins/default/css/purple.css | 4 + .../communication/skins/default/css/red.css | 4 + .../communication/skins/default/css/white.css | 5 + .../skins/default/filter/add_friend.xml | 2 +- .../skins/default/filter/add_friend_group.xml | 2 +- .../default/filter/delete_checked_friend.xml | 1 + .../default/filter/delete_checked_message.xml | 1 + .../default/filter/delete_friend_group.xml | 1 + .../skins/default/filter/move_friend.xml | 1 + .../skins/default/filter/send_message.xml | 2 +- .../default/filter/update_allow_message.xml | 5 + .../skins/default/friends.html} | 4 +- .../skins/default/images/black/bgH3.gif | Bin 0 -> 1248 bytes .../default/images/black/form_buttons.gif | Bin 0 -> 4049 bytes .../default/images/black/form_buttons.png | Bin 0 -> 7796 bytes .../default/images/black/lineBoardListTh.gif | Bin 0 -> 2755 bytes .../skins/default/images/black/lineH3.gif | Bin 0 -> 37 bytes .../default/images/black/openid_input_bg.gif | Bin 0 -> 220 bytes .../skins/default/images/blank.gif | Bin 0 -> 43 bytes .../skins/default/images/bottomGotoFirst.gif | Bin 0 -> 51 bytes .../skins/default/images/bottomGotoLast.gif | Bin 0 -> 51 bytes .../skins/default/images/button_go.gif | Bin 0 -> 316 bytes .../skins/default/images/common/bgH3.gif | Bin 0 -> 2778 bytes .../default/images/common/bottomGotoFirst.gif | Bin 0 -> 51 bytes .../default/images/common/bottomGotoLast.gif | Bin 0 -> 51 bytes .../images/common/buttonTypeInput24.gif | Bin 0 -> 419 bytes .../skins/default/images/common/iconAdd.gif | Bin 0 -> 51 bytes .../default/images/common/iconArrow99.gif | Bin 0 -> 46 bytes .../skins/default/images/common/iconCheck.gif | Bin 0 -> 306 bytes .../default/images/common/iconFriend.gif | Bin 0 -> 145 bytes .../skins/default/images/common/iconH3.gif | Bin 0 -> 58 bytes .../images/common/iconInstantMessage.gif | Bin 0 -> 254 bytes .../images/common/iconInstantMessage2.gif | Bin 0 -> 535 bytes .../default/images/common/lineBoardListTh.gif | Bin 0 -> 2763 bytes .../skins/default/images/common/lineH3.gif | Bin 0 -> 45 bytes .../images/common/line_1x10_e0e0e0.gif | Bin 0 -> 44 bytes .../skins/default/images/openid_input_bg.gif | Bin 0 -> 237 bytes .../skins/default/js/communication.js | 101 +++++ .../skins/default/messages.html} | 2 + .../skins/default/new_message.html} | 0 .../skins/default/screenshot/black.gif | Bin 0 -> 6159 bytes .../skins/default/screenshot/cyan.gif | Bin 0 -> 5459 bytes .../skins/default/screenshot/green.gif | Bin 0 -> 5342 bytes .../skins/default/screenshot/purple.gif | Bin 0 -> 7180 bytes .../skins/default/screenshot/red.gif | Bin 0 -> 6267 bytes .../skins/default/screenshot/white.gif | Bin 0 -> 6267 bytes .../skins/default/send_message.html | 0 modules/communication/skins/default/skin.xml | 91 ++++ modules/communication/tpl/colorset_list.html | 16 + .../tpl/filter/insert_config.xml | 7 + .../tpl/images/icon_add_friend.gif | Bin .../tpl/images/icon_friend_box.gif | Bin .../tpl/images/icon_message_box.gif | Bin .../tpl/images/icon_write_message.gif | Bin modules/communication/tpl/index.html | 52 +++ .../tpl/js/communication_admin.js | 16 + .../document/document.admin.controller.php | 6 +- modules/document/document.item.php | 4 +- modules/editor/editor.model.php | 7 + .../importer/importer.admin.controller.php | 4 +- modules/member/conf/module.xml | 22 - modules/member/lang/en.lang.php | 34 -- modules/member/lang/es.lang.php | 35 +- modules/member/lang/jp.lang.php | 34 -- modules/member/lang/ko.lang.php | 36 +- modules/member/lang/ru.lang.php | 32 -- modules/member/lang/zh-CN.lang.php | 33 -- modules/member/member.admin.view.php | 12 +- modules/member/member.class.php | 10 - modules/member/member.controller.php | 396 ----------------- modules/member/member.model.php | 157 ------- modules/member/member.view.php | 194 -------- .../default/filter/delete_checked_friend.xml | 1 - .../default/filter/delete_checked_message.xml | 1 - .../default/filter/delete_friend_group.xml | 1 - .../skins/default/filter/move_friend.xml | 1 - modules/member/skins/default/js/member.js | 103 ----- modules/module/module.model.php | 2 + 135 files changed, 1980 insertions(+), 1293 deletions(-) delete mode 100644 addons/member_extra_info/lang/en.lang.php delete mode 100644 addons/member_extra_info/lang/es.lang.php delete mode 100644 addons/member_extra_info/lang/ge.lang.php delete mode 100644 addons/member_extra_info/lang/jp.lang.php delete mode 100644 addons/member_extra_info/lang/ko.lang.php delete mode 100644 addons/member_extra_info/lang/ru.lang.php delete mode 100644 addons/member_extra_info/lang/zh-CN.lang.php create mode 100644 modules/communication/communication.admin.controller.php create mode 100644 modules/communication/communication.admin.model.php create mode 100644 modules/communication/communication.admin.view.php create mode 100644 modules/communication/communication.class.php create mode 100644 modules/communication/communication.controller.php create mode 100644 modules/communication/communication.model.php create mode 100644 modules/communication/communication.view.php create mode 100644 modules/communication/conf/info.xml create mode 100644 modules/communication/conf/module.xml create mode 100644 modules/communication/lang/en.lang.php create mode 100644 modules/communication/lang/es.lang.php create mode 100644 modules/communication/lang/jp.lang.php create mode 100644 modules/communication/lang/ko.lang.php create mode 100644 modules/communication/lang/ru.lang.php create mode 100644 modules/communication/lang/zh-CN.lang.php rename modules/{member => communication}/queries/addFriend.xml (100%) rename modules/{member => communication}/queries/addFriendGroup.xml (100%) rename modules/{member => communication}/queries/deleteFriend.xml (100%) rename modules/{member => communication}/queries/deleteFriendGroup.xml (100%) rename modules/{member => communication}/queries/deleteMessage.xml (100%) rename modules/{member => communication}/queries/deleteMessages.xml (100%) rename modules/{member => communication}/queries/getFriendGroup.xml (100%) rename modules/{member => communication}/queries/getFriendGroups.xml (100%) rename modules/{member => communication}/queries/getFriends.xml (100%) rename modules/{member => communication}/queries/getMessage.xml (100%) rename modules/{member => communication}/queries/getNewMessage.xml (100%) rename modules/{member => communication}/queries/getReceivedMessages.xml (100%) rename modules/{member => communication}/queries/getSendedMessages.xml (100%) rename modules/{member => communication}/queries/getStoredMessages.xml (100%) rename modules/{member => communication}/queries/isAddedFriend.xml (100%) rename modules/{member => communication}/queries/moveFriend.xml (100%) rename modules/{member => communication}/queries/renameFriendGroup.xml (100%) rename modules/{member => communication}/queries/sendMessage.xml (100%) rename modules/{member => communication}/queries/setMessageReaded.xml (100%) rename modules/{member => communication}/queries/setMessageStored.xml (100%) rename modules/{member => communication}/queries/updateAllowMessage.xml (100%) rename modules/{member => communication}/schemas/member_friend.xml (100%) rename modules/{member => communication}/schemas/member_friend_group.xml (100%) rename modules/{member => communication}/schemas/member_message.xml (100%) rename modules/{member => communication}/skins/default/add_friend.html (89%) rename modules/{member => communication}/skins/default/add_friend_group.html (100%) create mode 100644 modules/communication/skins/default/common_footer.html create mode 100644 modules/communication/skins/default/common_header.html create mode 100644 modules/communication/skins/default/css/black.css create mode 100644 modules/communication/skins/default/css/common.css create mode 100644 modules/communication/skins/default/css/cyan.css create mode 100644 modules/communication/skins/default/css/green.css create mode 100644 modules/communication/skins/default/css/purple.css create mode 100644 modules/communication/skins/default/css/red.css create mode 100644 modules/communication/skins/default/css/white.css rename modules/{member => communication}/skins/default/filter/add_friend.xml (63%) rename modules/{member => communication}/skins/default/filter/add_friend_group.xml (66%) create mode 100644 modules/communication/skins/default/filter/delete_checked_friend.xml create mode 100644 modules/communication/skins/default/filter/delete_checked_message.xml create mode 100644 modules/communication/skins/default/filter/delete_friend_group.xml create mode 100644 modules/communication/skins/default/filter/move_friend.xml rename modules/{member => communication}/skins/default/filter/send_message.xml (74%) create mode 100644 modules/communication/skins/default/filter/update_allow_message.xml rename modules/{member/skins/default/friends_list.html => communication/skins/default/friends.html} (95%) create mode 100755 modules/communication/skins/default/images/black/bgH3.gif create mode 100755 modules/communication/skins/default/images/black/form_buttons.gif create mode 100755 modules/communication/skins/default/images/black/form_buttons.png create mode 100755 modules/communication/skins/default/images/black/lineBoardListTh.gif create mode 100755 modules/communication/skins/default/images/black/lineH3.gif create mode 100755 modules/communication/skins/default/images/black/openid_input_bg.gif create mode 100644 modules/communication/skins/default/images/blank.gif create mode 100644 modules/communication/skins/default/images/bottomGotoFirst.gif create mode 100644 modules/communication/skins/default/images/bottomGotoLast.gif create mode 100755 modules/communication/skins/default/images/button_go.gif create mode 100644 modules/communication/skins/default/images/common/bgH3.gif create mode 100644 modules/communication/skins/default/images/common/bottomGotoFirst.gif create mode 100644 modules/communication/skins/default/images/common/bottomGotoLast.gif create mode 100644 modules/communication/skins/default/images/common/buttonTypeInput24.gif create mode 100644 modules/communication/skins/default/images/common/iconAdd.gif create mode 100644 modules/communication/skins/default/images/common/iconArrow99.gif create mode 100644 modules/communication/skins/default/images/common/iconCheck.gif create mode 100644 modules/communication/skins/default/images/common/iconFriend.gif create mode 100644 modules/communication/skins/default/images/common/iconH3.gif create mode 100644 modules/communication/skins/default/images/common/iconInstantMessage.gif create mode 100644 modules/communication/skins/default/images/common/iconInstantMessage2.gif create mode 100644 modules/communication/skins/default/images/common/lineBoardListTh.gif create mode 100644 modules/communication/skins/default/images/common/lineH3.gif create mode 100644 modules/communication/skins/default/images/common/line_1x10_e0e0e0.gif create mode 100644 modules/communication/skins/default/images/openid_input_bg.gif create mode 100644 modules/communication/skins/default/js/communication.js rename modules/{member/skins/default/member_messages.html => communication/skins/default/messages.html} (99%) rename modules/{member/skins/default/member_new_message.html => communication/skins/default/new_message.html} (100%) create mode 100755 modules/communication/skins/default/screenshot/black.gif create mode 100644 modules/communication/skins/default/screenshot/cyan.gif create mode 100644 modules/communication/skins/default/screenshot/green.gif create mode 100644 modules/communication/skins/default/screenshot/purple.gif create mode 100644 modules/communication/skins/default/screenshot/red.gif create mode 100644 modules/communication/skins/default/screenshot/white.gif rename modules/{member => communication}/skins/default/send_message.html (100%) create mode 100644 modules/communication/skins/default/skin.xml create mode 100644 modules/communication/tpl/colorset_list.html create mode 100644 modules/communication/tpl/filter/insert_config.xml rename modules/{member => communication}/tpl/images/icon_add_friend.gif (100%) rename modules/{member => communication}/tpl/images/icon_friend_box.gif (100%) rename modules/{member => communication}/tpl/images/icon_message_box.gif (100%) rename modules/{member => communication}/tpl/images/icon_write_message.gif (100%) create mode 100644 modules/communication/tpl/index.html create mode 100644 modules/communication/tpl/js/communication_admin.js delete mode 100644 modules/member/skins/default/filter/delete_checked_friend.xml delete mode 100644 modules/member/skins/default/filter/delete_checked_message.xml delete mode 100644 modules/member/skins/default/filter/delete_friend_group.xml delete mode 100644 modules/member/skins/default/filter/move_friend.xml diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 6a41019fc..784126d93 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -1,12 +1,12 @@ - - 사용자 추가 정보 및 커뮤니케이션 기능 활성화 - 会員情報・コミュニティアドオン - 用户扩展信息 - Activation of Member's Additional Information and Communication Function. - Die Aktivierung der Mitglied's weitere Informations-und Kommunikations-Funktion. - Addon para activar la función de la Información addcional del usuario y de la comunicación. - Аддон для предоставления дополнительной информации о пользователях и коммуникации + + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 회원 확장 정보 출력 제로 Zero @@ -16,74 +16,32 @@ zero zero - 사용자의 정보중 이미지이름, 이미지마크, 서명등을 화면에 출력해주는 애드온입니다. - 이런 정보들을 사용하지 않을 경우를 대비하여 별도의 애드온으로 빼어서 실행시간을 줄여줍니다. + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - 1. 출력되기 직전 &lt;div class="member_회원번호"&gt;....&lt;/div&gt; 로 정의가 된 부분을 찾아 회원번호를 구해서 이미지이름, 이미지마크가 있는지를 확인하여 있으면 내용을 변경해버립니다. - 2. 출력되기 직전 &lt;div class="document_번호"&gt;...&lt;/div&gt;로 정의된 곳을 찾아 글의 내용이라 판단, 하단에 서명을 추가합니다. - 3. 새로운 쪽지가 왔을 경우 팝업으로 띄움 - 4. MemberModel::getMemberMenu 호출시 대상이 회원일 경우 쪽지 보내기 기능 추가합니다. - 5. MemberModel::getMemberMenu 호출시 친구 등록 메뉴를 추가합니다. - 会員情報のイメージ名、イメージマーク、署名などを画面に表示するアドオンです。 - このような情報を使用しない場合、アドオンを「使用」に設定すれば、実行時間を少なくします。 - イメージ名、イメージマーク、署名などを表示させたい時は、このアドオンを「使用」に設定して下さい。 - 1. 出力の直前 <div class="member_会員番号">....</div> に定義された部分を探し、会員番号をチェックしてイメージ名、イメージマークがあるかを確認します。あった場合は内容を変更します。 - 2. 出力の直前 <div class="document_番号">...</div>に定義された部分を探し、書込みの内容だと判断して、下段に署名を追加します。 - 3. 新しいメッセージが来た場合ポップアップで表示します。 - 4. MemberModel::getMemberMenu を呼出す時、相手が会員の場合はメッセージ送信の機能を追加します。 - 5. MemberModel::getMemberMenu を呼出す時、友達登録メニュを追加します。 + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - 此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。 - 因部分用户不使用此项功能或为了考虑页面载入速度,以插件形式提供此项功能。 - 要想使用会员扩展信息请激活此插件。 - 1. 显示之前先查找定义为 &lt;div class="member_会员编号"&gt;....&lt;/div&gt; 的部分获得会员编号后,再以会员编号确认有没有昵称图片/用户图标,有的话即可更新相关内容。 - 2. 显示之前先查找定义为 &lt;div class="document_编号"&gt;...&lt;/div&gt;的部分判断此处为主题内容后,在此处下方添加个人签名。 - 3. 收到新消息时,用弹出窗口显示。 - 4. 呼出MemberModel::getMemberMenu时,如对方是会员,就添加[发送短消息]功能。 - 5. 呼出MemberModel::getMemberMenu时,添加[加为好友]菜单。 + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - Among other information about users, this addon displays image name, image mark, and signature. - This addon is normally turned off to reduce loading time. - To display image name, image mark, and the signature, please turn on this addon. - 1. Right before displaying, this addon will seek for the unique key of the member from &lt;div class="member_{unique key of member}"&gt;....&lt;/div&gt; and will replace the content with the image name and/or image mark if they exist. - 2. Right before displaying, this addon will search for &lt;div class="document_{unique key of document}"&gt;...&lt;/div&gt; and will display the signature in the bottom of the article. - 3. When a new msessage is arrived, this will display the message in the popup window. - 4. This makes available to send a message if the target is a member when MemberModel::getMemberMenu is called. - 5. This adds a menu for registering as a friend when MemberModel::getMemberMenu is called. + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - Unter anderem Informationen über Benutzer, dieses Addon zeigt Bild Name, Bild-Marke, und Unterschrift. -Dieses Addon ist normalerweise ausgeschaltet zu verringern Ladezeit. -So zeigen Sie Image-Namen-, Bild-Marke, und die Unterschrift, wenden Sie sich bitte in diesem Addon. - 1. Recht vor Anzeigen, dieses Addon wird sich für den eindeutigen Schlüssel des Mitglieds aus < div class = "member_ (eindeutigen Schlüssel zu den Mitgliedern)" > ....< / div > und ersetzen wird der Inhalt mit den Image-Namen und / oder Bild-Marke, wenn sie vorhanden sind. - 2. Recht vor Anzeigen, dieses Addon wird nach < div class = "document_ (eindeutigen Schlüssel des Dokuments)" ... > < / div > und die Anzeige der Signatur in der unteren der Artikel. - 3. Wenn eine neue msessage ist angekommen, dieser wird die Nachricht in einem Popup-Fenster. - 4. Dies stellt eine Nachricht zu senden, wenn das Ziel ist Mitglied bei MemberModel:: getMemberMenu aufgerufen. - 5. Dadurch wird ein Menü für die Eintragung als Freund, wenn MemberModel:: getMemberMenu aufgerufen. + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - Addon que permite mostrar en la pantalla las informaciones del usuario, la imagen del nombre, Imagen de marca y la firma . - En caso de no usar estas informaciones, esta forma de usar separadamente en addon permite reducir el tiempo de ejecución. - Deberá activar este addon si desea mostrar informaciones adicionales. - 1. Justo antes de mostrar la información del usuario, este addon buscará la definición "<div class="member_Número del usuario">....</div>", si la encuentra, reemplazará la imagen del nombre y/o la imagen de marca. - 2. Justo antes de mostrar, este addon va a localizar la definición "<div class="document_Número de documento">...</div> e insertará la firma en la parte final del documento. - 3. Si ha llegado un nuevo mensaje, aprarecerá una ventana popup. - 4. Se activa la función "Enviar Mensajes" si la persona que envió la nota es usuario al comprobar en MemberModel::getMemberMenu. - 5. Agrega el menú "Ägregar Amigo" al llamar MemberModel::getMemberMenu. + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - Среди другой информации о пользователях, этот аддон показывает имя изображения, марку изображения и подпись. - В случае, если Вы не используете эту информацию, это стоит в стороне от базовой информации, так что время выполнения будет снижено. - Чтобы отображать имя изображения, марку изображения и подпись, пожалуйста, включите этот аддон. - 1. Прямо перед отображением информации пользователя, это создаст уникальный ключ члена из определения "&lt;div class="член_{уникальный ключ члена}"&gt;....&lt;/div&gt;" и заменит имя изображения и/или марку изображения, если они существуют. - 2. Прямо перед отображением, это должно найти определение "&lt;div class="документ_{уникальный ключ документа}"&gt;...&lt;/div&gt;" и вставить подпись внизу. - 3. Когда будет получено новое сообщение, оно всплывет. - 4. Это позволяет отправить сообщение, если назначение является членом, когда MemberModel::getMemberMenu вызывается. - 5. Это добавляет меню для регистрации как друга, когда MemberModel::getMemberMenu вызывается. + 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. + 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. diff --git a/addons/member_extra_info/lang/en.lang.php b/addons/member_extra_info/lang/en.lang.php deleted file mode 100644 index cc9cce249..000000000 --- a/addons/member_extra_info/lang/en.lang.php +++ /dev/null @@ -1,3 +0,0 @@ -alert_new_message_arrived = 'You have a new message. Do you want to check now?'; -?> diff --git a/addons/member_extra_info/lang/es.lang.php b/addons/member_extra_info/lang/es.lang.php deleted file mode 100644 index 51933d3f8..000000000 --- a/addons/member_extra_info/lang/es.lang.php +++ /dev/null @@ -1,3 +0,0 @@ -alert_new_message_arrived = 'Usted tiene un nuevo mensaje. Quiere comprobar ahora?'; -?> diff --git a/addons/member_extra_info/lang/ge.lang.php b/addons/member_extra_info/lang/ge.lang.php deleted file mode 100644 index d9b9dcb81..000000000 --- a/addons/member_extra_info/lang/ge.lang.php +++ /dev/null @@ -1,3 +0,0 @@ -alert_new_message_arrived = 'Sie haben eine neue Nachricht. Wollen Sie jetzt prüfen, ob?'; -?> diff --git a/addons/member_extra_info/lang/jp.lang.php b/addons/member_extra_info/lang/jp.lang.php deleted file mode 100644 index 3a5dfc9c6..000000000 --- a/addons/member_extra_info/lang/jp.lang.php +++ /dev/null @@ -1,3 +0,0 @@ -alert_new_message_arrived = '新しいメッセージが届きました。確認しますか。'; -?> diff --git a/addons/member_extra_info/lang/ko.lang.php b/addons/member_extra_info/lang/ko.lang.php deleted file mode 100644 index 5dc594d0d..000000000 --- a/addons/member_extra_info/lang/ko.lang.php +++ /dev/null @@ -1,3 +0,0 @@ -alert_new_message_arrived = '새로운 메세지가 도착하였습니다. 확인하시겠습니까?'; -?> diff --git a/addons/member_extra_info/lang/ru.lang.php b/addons/member_extra_info/lang/ru.lang.php deleted file mode 100644 index e181b5e69..000000000 --- a/addons/member_extra_info/lang/ru.lang.php +++ /dev/null @@ -1,9 +0,0 @@ - | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467; - * @brief Russian basic language pack for Zeroboard XE - **/ - - $lang->alert_new_message_arrived = 'У Вас есть новые сообщения. Хотите проверить сейчас?'; -?> diff --git a/addons/member_extra_info/lang/zh-CN.lang.php b/addons/member_extra_info/lang/zh-CN.lang.php deleted file mode 100644 index 497b4ef68..000000000 --- a/addons/member_extra_info/lang/zh-CN.lang.php +++ /dev/null @@ -1,3 +0,0 @@ -alert_new_message_arrived = '您有新消息。要确认吗?'; -?> diff --git a/addons/member_extra_info/member_extra_info.addon.php b/addons/member_extra_info/member_extra_info.addon.php index 42dc88cc6..59c4fd797 100644 --- a/addons/member_extra_info/member_extra_info.addon.php +++ b/addons/member_extra_info/member_extra_info.addon.php @@ -4,22 +4,14 @@ /** * @file image_name.addon.php * @author zero (zero@nzeo.com) - * @brief 사용자의 이미지이름/ 이미지마크나 커뮤니케이션 기능을 추가시킴 - * - * 1. 출력되기 직전
....
로 정의가 된 부분을 찾아 회원번호를 구해서 - * 이미지이름, 이미지마크가 있는지를 확인하여 있으면 내용을 변경해버립니다. - * - * 3. 새로운 쪽지가 왔을 경우 팝업으로 띄움 - * - * 4. MemberModel::getMemberMenu 호출시 대상이 회원일 경우 쪽지 보내기 기능 추가합니다. - * - * 5. MemberModel::getMemberMenu 호출시 친구 등록 메뉴를 추가합니다. + * @brief 사용자의 이미지이름/ 이미지마크등을 출력 * + *
....
로 정의가 된 부분을 찾아 회원번호를 구해서 + * 이미지이름, 이미지마크가 있는지를 확인하여 있으면 내용을 변경해버립니다. **/ /** - * 1,2 기능 수행 : 출력되기 바로 직전일 경우에 이미지이름/이미지마크등을 변경 - * 조건 : called_position == 'before_display_content' + * 출력되기 바로 직전일 경우에 이미지이름/이미지마크등을 변경 **/ if($called_position == "before_display_content") { @@ -29,88 +21,5 @@ // 1. 출력문서중에서
content
를 찾아 MemberController::transImageName() 를 이용하여 이미지이름/마크로 변경 $output = preg_replace_callback('!<(div|span)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span)\>!is', 'memberTransImageName', $output); - - /** - * 3 기능 수행 : 시작할때 새쪽지가 왔는지 검사 - * 조건 : called_position = 'before_module_init', module != 'member' - **/ - } elseif($called_position == 'before_module_init' && $this->module != 'member' && Context::get('is_logged') ) { - - // 로그인된 사용자 정보를 구함 - $logged_info = Context::get('logged_info'); - - // 회원 로그인 정보중에서 쪽지등의 메뉴를 추가 - $logged_info->menu_list['dispMemberFriend'] = 'cmd_view_friend'; - $logged_info->menu_list['dispMemberMessages'] = 'cmd_view_message_box'; - Context::set('logged_info', $logged_info); - $_SESSION['logged_info'] = $logged_info; - - $flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl); - $flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl); - - // 새로운 쪽지에 대한 플래그가 있으면 쪽지 보기 팝업 띄움 - if(file_exists($flag_file)) { - @unlink($flag_file); - Context::loadLang('./addons/member_extra_info/lang'); - $script = sprintf('', Context::getLang('alert_new_message_arrived'), Context::getRequestUri().'?module=member&act=dispMemberNewMessage'); - Context::addHtmlHeader( $script ); - } - - /** - * 4,5 기능 수행 : 사용자 이름을 클릭시 요청되는 MemberModel::getMemberMenu 후에 $menu_list에 쪽지 발송, 친구추가등의 링크 추가 - * 조건 : called_position == 'after_module_proc', module = 'member', act = 'getMemberMenu' - **/ - } elseif($called_position == 'after_module_proc' && $this->module == 'member' && $this->act == 'getMemberMenu') { - // 비로그인 사용자라면 패스 - if(!Context::get('is_logged')) return; - - // 로그인된 사용자 정보를 구함 - $logged_info = Context::get('logged_info'); - $member_srl = Context::get('target_srl'); - - // 템플릿에서 사용되기 전의 menu_list를 가져옴 - $menu_list = $this->get('menu_list'); - - // 자신이라면 쪽지함 보기 기능 추가 - if($logged_info->member_srl == $member_srl) { - - // 4. 자신의 쪽지함 보기 기능 추가 - $menu_str = Context::getLang('cmd_view_message_box'); - $menu_link = "current_url.setQuery('act','dispMemberMessages').setQuery('message_type','')"; - $menu_list .= sprintf("\n%s,%s,move_url(%s,'Y')", Context::getRequestUri().'/modules/member/tpl/images/icon_message_box.gif', $menu_str, $menu_link); - - // 5. 친구 목록 보기 - $menu_str = Context::getLang('cmd_view_friend'); - $menu_link = "current_url.setQuery('act','dispMemberFriend')"; - $menu_list .= sprintf("\n%s,%s,move_url(%s,'Y')", Context::getRequestUri().'/modules/member/tpl/images/icon_friend_box.gif',$menu_str, $menu_link); - - - // 아니라면 쪽지 발송, 친구 등록 추가 - } else { - - // 대상 회원의 정보를 가져옴 - $target_member_info = $this->getMemberInfoByMemberSrl($member_srl); - if(!$target_member_info->member_srl) return; - - // 로그인된 사용자 정보를 구함 - $logged_info = Context::get('logged_info'); - - // 4. 쪽지 발송 메뉴를 만듬 - if( $logged_info->is_admin == 'Y' || $target_member_info->allow_message =='Y' || ($target_member_info->allow_message == 'F' && $this->isFriend($member_srl))) { - $menu_str = Context::getLang('cmd_send_message'); - $menu_link = sprintf('%s?module=member&act=dispMemberSendMessage&receiver_srl=%s',Context::getRequestUri(),$member_srl); - $menu_list .= sprintf("\n%s,%s,popopen('%s','sendMessage')", Context::getRequestUri().'/modules/member/tpl/images/icon_write_message.gif', $menu_str, $menu_link); - } - - // 5. 친구 등록 메뉴를 만듬 (이미 등록된 친구가 아닐 경우) - if(!$this->isAddedFriend($member_srl)) { - $menu_str = Context::getLang('cmd_add_friend'); - $menu_link = sprintf('%s?module=member&act=dispMemberAddFriend&target_srl=%s',Context::getRequestUri(),$member_srl); - $menu_list .= sprintf("\n%s,%s,popopen('%s','addFriend')", Context::getRequestUri().'/modules/member/tpl/images/icon_add_friend.gif', $menu_str, $menu_link); - } - } - - // 템플릿에 적용되게 하기 위해 module의 variables에 재등록 - $this->add('menu_list', $menu_list); } ?> diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index 01e6260f4..afd245246 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -121,8 +121,8 @@ $sender_member_srl = $logged_info->member_srl; // 쪽지 발송 - $oMemberController = &getController('member'); - $oMemberController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false); + $oCommunicationController = &getController('communication'); + $oCommunicationController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false); } function isExistsHomepage() { diff --git a/modules/communication/communication.admin.controller.php b/modules/communication/communication.admin.controller.php new file mode 100644 index 000000000..4ef9c0c43 --- /dev/null +++ b/modules/communication/communication.admin.controller.php @@ -0,0 +1,35 @@ +skin) $args->skin = "default"; + if(!$args->colorset) $args->colorset = "white"; + if(!$args->editor_skin) $args->editor_skin = "default"; + + // module Controller 객체 생성하여 입력 + $oModuleController = &getController('module'); + $output = $oModuleController->insertModuleConfig('communication',$args); + + return $output; + } + + } +?> diff --git a/modules/communication/communication.admin.model.php b/modules/communication/communication.admin.model.php new file mode 100644 index 000000000..d0bd06ffe --- /dev/null +++ b/modules/communication/communication.admin.model.php @@ -0,0 +1,40 @@ +loadSkinInfo($this->module_path, $skin); + Context::set('skin_info', $skin_info); + + $oModuleModel = &getModel('module'); + $communication_config = $oModuleModel->getModuleConfig('communication'); + if(!$communication_config->colorset) $communication_config->colorset = "white"; + Context::set('communication_config', $communication_config); + + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($this->module_path.'tpl', 'colorset_list'); + } + + $this->add('tpl', $tpl); + } + + } +?> diff --git a/modules/communication/communication.admin.view.php b/modules/communication/communication.admin.view.php new file mode 100644 index 000000000..315a6efd7 --- /dev/null +++ b/modules/communication/communication.admin.view.php @@ -0,0 +1,40 @@ +getConfig() ); + + // 에디터 스킨 목록을 구함 + Context::set('editor_skin_list', $oEditorModel->getEditorSkinList() ); + + // 커뮤니케이션 스킨 목록을 구함 + Context::set('communication_skin_list', $oModuleModel->getSkins($this->module_path) ); + + // template 지정 + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('index'); + } + + } +?> diff --git a/modules/communication/communication.class.php b/modules/communication/communication.class.php new file mode 100644 index 000000000..73d8d6a99 --- /dev/null +++ b/modules/communication/communication.class.php @@ -0,0 +1,71 @@ +insertActionForward('communication', 'view', 'dispCommunicationAdminConfig'); + + $oModuleController->insertActionForward('communication', 'view', 'dispCommunicationMessages'); + $oModuleController->insertActionForward('communication', 'view', 'dispCommunicationFriend'); + + return new Object(); + } + + /** + * @brief 설치가 이상이 없는지 체크하는 method + **/ + function checkUpdate() { + if(!is_dir("./files/member_extra_info/new_message_flags")) return true; + + $oModuleModel = &getModel('module'); + + if(!$oModuleModel->getActionForward('dispCommunicationAdminConfig')) return true; + + if(!$oModuleModel->getActionForward('dispCommunicationMessages')) return true; + if(!$oModuleModel->getActionForward('dispCommunicationFriend')) return true; + + return false; + } + + /** + * @brief 업데이트 실행 + **/ + function moduleUpdate() { + if(!is_dir("./files/member_extra_info/new_message_flags")) + FileHandler::makeDir('./files/member_extra_info/new_message_flags'); + + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + + if(!$oModuleModel->getActionForward('dispCommunicationAdminConfig')) + $oModuleController->insertActionForward('communication', 'view', 'dispCommunicationAdminConfig'); + + if(!$oModuleModel->getActionForward('dispCommunicationMessages')) + $oModuleController->insertActionForward('communication', 'view', 'dispCommunicationMessages'); + + if(!$oModuleModel->getActionForward('dispCommunicationFriend')) + $oModuleController->insertActionForward('communication', 'view', 'dispCommunicationFriend'); + + return new Object(0, 'success_updated'); + } + + /** + * @brief 캐시 파일 재생성 + **/ + function recompileCache() { + } + } +?> diff --git a/modules/communication/communication.controller.php b/modules/communication/communication.controller.php new file mode 100644 index 000000000..a2f4ce821 --- /dev/null +++ b/modules/communication/communication.controller.php @@ -0,0 +1,413 @@ +allow_message = Context::get('allow_message'); + if(!in_array($args->allow_message, array('Y','N','F'))) $args->allow_message = 'Y'; + + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + + $output = executeQuery('communication.updateAllowMessage', $args); + + return $output; + } + + /** + * @brief 쪽지 발송 + **/ + function procCommunicationSendMessage() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 검사 + $receiver_srl = Context::get('receiver_srl'); + if(!$receiver_srl) return new Object(-1, 'msg_not_exists_member'); + + $title = trim(Context::get('title')); + if(!$title) return new Object(-1, 'msg_title_is_null'); + + $content = trim(Context::get('content')); + if(!$content) return new Object(-1, 'msg_content_is_null'); + + $send_mail = Context::get('send_mail'); + if($send_mail != 'Y') $send_mail = 'N'; + + // 받을 회원이 있는지에 대한 검사 + $oMemberModel = &getModel('member'); + $receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); + if($receiver_member_info->member_srl != $receiver_srl) return new Object(-1, 'msg_not_exists_member'); + + // 받을 회원의 쪽지 수신여부 검사 (최고관리자이면 패스) + if($logged_info->is_admin != 'Y') { + if($receiver_member_info->allow_message == 'F') { + if(!$oCommunicationModel->isFriend($receiver_member_info->member_srl)) return new object(-1, 'msg_allow_message_to_friend'); + } elseif($receiver_member_info->allow_messge == 'N') { + return new object(-1, 'msg_disallow_message'); + } + } + + // 쪽지 발송 + $output = $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content); + + // 메일로도 발송 + if($output->toBool() && $send_mail == 'Y') { + $view_url = Context::getRequestUri(); + $content = sprintf("%s

From : %s",$content, $view_url, $view_url); + $oMail = new Mail(); + $oMail->setTitle($title); + $oMail->setContent($content); + $oMail->setSender($logged_info->user_name, $logged_info->email_address); + $oMail->setReceiptor($receiver_member_info->user_name, $receiver_member_info->email_address); + $oMail->send(); + } + + return $output; + } + + function sendMessage($sender_srl, $receiver_srl, $title, $content, $sender_log = true) { + $content = removeHackTag($content); + + // 보내는 사용자의 쪽지함에 넣을 쪽지 + $sender_args->sender_srl = $sender_srl; + $sender_args->receiver_srl = $receiver_srl; + $sender_args->message_type = 'S'; + $sender_args->title = $title; + $sender_args->content = $content; + $sender_args->readed = 'N'; + $sender_args->regdate = date("YmdHis"); + $sender_args->related_srl = getNextSequence(); + $sender_args->message_srl = getNextSequence(); + $sender_args->list_order = getNextSequence()*-1; + + // 받는 회원의 쪽지함에 넣을 쪽지 + $receiver_args->message_srl = $sender_args->related_srl; + $receiver_args->related_srl = 0; + $receiver_args->list_order = $sender_args->related_srl*-1; + $receiver_args->sender_srl = $sender_srl; + if(!$receiver_args->sender_srl) $receiver_args->sender_srl = $receiver_srl; + $receiver_args->receiver_srl = $receiver_srl; + $receiver_args->message_type = 'R'; + $receiver_args->title = $title; + $receiver_args->content = $content; + $receiver_args->readed = 'N'; + $receiver_args->regdate = date("YmdHis"); + + $oDB = &DB::getInstance(); + $oDB->begin(); + + // 발송하는 회원의 쪽지함에 넣을 쪽지 + if($sender_srl && $sender_log) { + $output = executeQuery('communication.sendMessage', $sender_args); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + } + + // 받을 회원의 쪽지함에 넣을 쪽지 + $output = executeQuery('communication.sendMessage', $receiver_args); + if(!$output->toBool()) { + $oDB->rollback(); + return $output; + } + + // 받는 회원의 쪽지 발송 플래그 생성 (파일로 생성) + $flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($receiver_srl); + FileHandler::makeDir($flag_path); + $flag_file = sprintf('%s%s', $flag_path, $receiver_srl); + FileHandler::writeFile($flag_file,'1'); + + $oDB->commit(); + + return new Object(0,'success_sended'); + } + + /** + * @brief 특정 쪽지를 보관함으로 보냄 + **/ + function procCommunicationStoreMessage() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 체크 + $message_srl = Context::get('message_srl'); + if(!$message_srl) return new Object(-1,'msg_invalid_request'); + + // 쪽지를 가져옴 + $oCommunicationModel = &getModel('communication'); + $message = $oCommunicationModel->getSelectedMessage($message_srl); + if(!$message || $message->message_type != 'R') return new Object(-1,'msg_invalid_request'); + + $args->message_srl = $message_srl; + $args->receiver_srl = $logged_info->member_srl; + $output = executeQuery('communication.setMessageStored', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_registed'); + } + + /** + * @brief 쪽지 삭제 + **/ + function procCommunicationDeleteMessage() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + + // 변수 체크 + $message_srl = Context::get('message_srl'); + if(!$message_srl) return new Object(-1,'msg_invalid_request'); + + // 쪽지를 가져옴 + $oCommunicationModel = &getModel('communication'); + $message = $oCommunicationModel->getSelectedMessage($message_srl); + if(!$message) return new Object(-1,'msg_invalid_request'); + + // 발송인+type=S or 수신인+type=R 검사 + if($message->sender_srl == $member_srl && $message->message_type == 'S') { + if(!$message_srl) return new Object(-1, 'msg_invalid_request'); + } elseif($message->receiver_srl == $member_srl && $message->message_type == 'R') { + if(!$message_srl) return new Object(-1, 'msg_invalid_request'); + } + + // 삭제 + $args->message_srl = $message_srl; + $output = executeQuery('communication.deleteMessage', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_deleted'); + } + + /** + * @brief 선택된 다수의 쪽지 삭제 + **/ + function procCommunicationDeleteMessages() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + + // 변수 체크 + $message_srl_list = trim(Context::get('message_srl_list')); + if(!$message_srl_list) return new Object(-1, 'msg_cart_is_null'); + + $message_srl_list = explode('|@|', $message_srl_list); + if(!count($message_srl_list)) return new Object(-1, 'msg_cart_is_null'); + + $message_type = Context::get('message_type'); + if(!$message_type || !in_array($message_type, array('R','S','T'))) return new Object(-1, 'msg_invalid_request'); + + $message_count = count($message_srl_list); + $target = array(); + for($i=0;$i<$message_count;$i++) { + $message_srl = (int)trim($message_srl_list[$i]); + if(!$message_srl) continue; + $target[] = $message_srl; + } + if(!count($target)) return new Object(-1,'msg_cart_is_null'); + + // 삭제 + $args->message_srls = implode(',',$target); + $args->message_type = $message_type; + + if($message_type == 'S') $args->sender_srl = $member_srl; + else $args->receiver_srl = $member_srl; + + $output = executeQuery('communication.deleteMessages', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_deleted'); + } + + /** + * @brief 친구 추가 + **/ + function procCommunicationAddFriend() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + $target_srl = (int)trim(Context::get('target_srl')); + if(!$target_srl) return new Object(-1,'msg_invalid_request'); + + // 변수 정리 + $args->friend_srl = getNextSequence(); + $args->list_order = $args->friend_srl * -1; + $args->friend_group_srl = Context::get('friend_group_srl'); + $args->member_srl = $logged_info->member_srl; + $args->target_srl = $target_srl; + $output = executeQuery('communication.addFriend', $args); + if(!$output->toBool()) return $output; + + $this->add('member_srl', $target_srl); + $this->setMessage('success_registed'); + } + + /** + * @brief 등록된 친구의 그룹 이동 + **/ + function procCommunicationMoveFriend() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 체크 + $friend_srl_list = trim(Context::get('friend_srl_list')); + if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null'); + + $friend_srl_list = explode('|@|', $friend_srl_list); + if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null'); + + $friend_count = count($friend_srl_list); + $target = array(); + for($i=0;$i<$friend_count;$i++) { + $friend_srl = (int)trim($friend_srl_list[$i]); + if(!$friend_srl) continue; + $target[] = $friend_srl; + } + if(!count($target)) return new Object(-1,'msg_cart_is_null'); + + // 변수 정리 + $args->friend_srls = implode(',',$target); + $args->member_srl = $logged_info->member_srl; + $args->friend_group_srl = Context::get('target_friend_group_srl'); + + $output = executeQuery('communication.moveFriend', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_moved'); + } + + /** + * @brief 친구 삭제 + **/ + function procCommunicationDeleteFriend() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + + // 변수 체크 + $friend_srl_list = trim(Context::get('friend_srl_list')); + if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null'); + + $friend_srl_list = explode('|@|', $friend_srl_list); + if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null'); + + $friend_count = count($friend_srl_list); + $target = array(); + for($i=0;$i<$friend_count;$i++) { + $friend_srl = (int)trim($friend_srl_list[$i]); + if(!$friend_srl) continue; + $target[] = $friend_srl; + } + if(!count($target)) return new Object(-1,'msg_cart_is_null'); + + // 삭제 + $args->friend_srls = implode(',',$target); + $args->member_srl = $logged_info->member_srl; + $output = executeQuery('communication.deleteFriend', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_deleted'); + } + + /** + * @brief 친구 그룹 추가 + **/ + function procCommunicationAddFriendGroup() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 정리 + $args->friend_group_srl = trim(Context::get('friend_group_srl')); + $args->member_srl = $logged_info->member_srl; + $args->title = Context::get('title'); + if(!$args->title) return new Object(-1, 'msg_invalid_request'); + + // friend_group_srl이 있으면 수정 + if($args->friend_group_srl) { + $output = executeQuery('communication.renameFriendGroup', $args); + $msg_code = 'success_updated'; + + // 아니면 입력 + } else { + $output = executeQuery('communication.addFriendGroup', $args); + $msg_code = 'success_registed'; + } + + if(!$output->toBool()) return $output; + + $this->setMessage($msg_code); + } + + /** + * @brief 친구 그룹 이름 변경 + **/ + function procCommunicationRenameFriendGroup() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 정리 + $args->friend_group_srl= Context::get('friend_group_srl'); + $args->member_srl = $logged_info->member_srl; + $args->title = Context::get('title'); + if(!$args->title) return new Object(-1, 'msg_invalid_request'); + + $output = executeQuery('communication.renameFriendGroup', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_updated'); + } + + /** + * @brief 친구 그룹 삭제 + **/ + function procCommunicationDeleteFriendGroup() { + // 로그인 정보 체크 + if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 정리 + $args->friend_group_srl = Context::get('friend_group_srl'); + $args->member_srl = $logged_info->member_srl; + $output = executeQuery('communication.deleteFriendGroup', $args); + if(!$output->toBool()) return $output; + + $this->setMessage('success_deleted'); + } + + /** + * @brief 특정 쪽지의 상태를 읽은 상태로 변경 + **/ + function setMessageReaded($message_srl) { + $args->message_srl = $message_srl; + $args->related_srl = $message_srl; + return executeQuery('communication.setMessageReaded', $args); + } + + } +?> diff --git a/modules/communication/communication.model.php b/modules/communication/communication.model.php new file mode 100644 index 000000000..f79e6b113 --- /dev/null +++ b/modules/communication/communication.model.php @@ -0,0 +1,189 @@ +getModuleConfig('communication'); + + if(!$communication_config->skin) $communication_config->skin = 'default'; + if(!$communication_config->colorset) $communication_config->colorset = 'white'; + if(!$communication_config->editor_skin) $communication_config->editor_skin = 'default'; + + return $communication_config; + } + + /** + * @brief 쪽지 내용을 가져옴 + **/ + function getSelectedMessage($message_srl) { + $logged_info = Context::get('logged_info'); + + $args->message_srl = $message_srl; + $output = executeQuery('communication.getMessage',$args); + $message = $output->data; + if(!$message) return ; + + // 보낸 쪽지일 경우 받는 사람 정보를 구함 + $oMemberModel = &getModel('member'); + if($message->sender_srl == $logged_info->member_srl && $message->message_type == 'S') $member_info = $oMemberModel->getMemberInfoByMemberSrl($message->receiver_srl); + + // 보관/받은 쪽지일 경우 보낸 사람 정보를 구함 + else $member_info = $oMemberModel->getMemberInfoByMemberSrl($message->sender_srl); + + if($member_info) { + foreach($member_info as $key => $val) { + if($key != 'regdate') $message->{$key} = $val; + } + } + + // 받은 쪽지이고 아직 읽지 않았을 경우 읽은 상태로 변경 + if($message->message_type == 'R' && $message->readed != 'Y') { + $oCommunicationController = &getController('communication'); + $oCommunicationController->setMessageReaded($message_srl); + } + + + return $message; + } + + /** + * @brief 새 쪽지를 가져옴 + **/ + function getNewMessage() { + $logged_info = Context::get('logged_info'); + $args->receiver_srl = $logged_info->member_srl; + $args->readed = 'N'; + + $output = executeQuery('communication.getNewMessage', $args); + if(!count($output->data)) return; + $message = array_pop($output->data); + + $oCommunicationController = &getController('communication'); + $oCommunicationController->setMessageReaded($message->message_srl); + + return $message; + } + + /** + * @brief 쪽지 목록 가져오기 + * type = R : 받은 쪽지 + * type = S : 보낸 쪽지 + * type = T : 보관함 + **/ + function getMessages($message_type = "R") { + $logged_info = Context::get('logged_info'); + + switch($message_type) { + case 'R' : + $args->member_srl = $logged_info->member_srl; + $args->message_type = 'R'; + $query_id = 'communication.getReceivedMessages'; + break; + case 'T' : + $args->member_srl = $logged_info->member_srl; + $args->message_type = 'T'; + $query_id = 'communication.getStoredMessages'; + break; + default : + $args->member_srl = $logged_info->member_srl; + $args->message_type = 'S'; + $query_id = 'communication.getSendedMessages'; + break; + + } + + // 기타 변수들 정리 + $args->sort_index = 'message.list_order'; + $args->page = Context::get('page'); + $args->list_count = 20; + $args->page_count = 10; + return executeQuery($query_id, $args); + } + + /** + * @brief 친구 목록 가져오기 + **/ + function getFriends($friend_group_srl = 0) { + $logged_info = Context::get('logged_info'); + + $args->friend_group_srl = $friend_group_srl; + $args->member_srl = $logged_info->member_srl; + + // 기타 변수들 정리 + $args->page = Context::get('page'); + $args->sort_index = 'friend.list_order'; + $args->list_count = 10; + $args->page_count = 10; + $output = executeQuery('communication.getFriends', $args); + return $output; + } + + /** + * @brief 이미 친구로 등록되었는지 검사 + **/ + function isAddedFriend($member_srl) { + $logged_info = Context::get('logged_info'); + + $args->member_srl = $logged_info->member_srl; + $args->target_srl = $member_srl; + $output = executeQuery('communication.isAddedFriend', $args); + return $output->data->count; + } + + /** + * @brief 특정 친구 그룹 가져오기 + **/ + function getFriendGroupInfo($friend_group_srl) { + $logged_info = Context::get('logged_info'); + + $args->member_srl = $logged_info->member_srl; + $args->friend_group_srl = $friend_group_srl; + + $output = executeQuery('communication.getFriendGroup', $args); + return $output->data; + } + + /** + * @brief 그룹 목록 가져오기 + **/ + function getFriendGroups() { + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + + $output = executeQuery('communication.getFriendGroups', $args); + $group_list = $output->data; + if(!$group_list) return; + + if(!is_array($group_list)) $group_list = array($group_list); + return $group_list; + } + + /** + * @brief 특정 회원의 친구 목록에 포함되어 있는지를 확인 + **/ + function isFriend($target_srl) { + $logged_info = Context::get('logged_info'); + + $args->member_srl = $target_srl; + $args->target_srl = $logged_info->member_srl; + $output = executeQuery('communication.isAddedFriend', $args); + if($output->data->count) return true; + return false; + } + } +?> diff --git a/modules/communication/communication.view.php b/modules/communication/communication.view.php new file mode 100644 index 000000000..bfb8a0d9b --- /dev/null +++ b/modules/communication/communication.view.php @@ -0,0 +1,221 @@ +communication_config = $oCommunicationModel->getConfig(); + $skin = $this->communication_config->skin; + + Context::set('communication_config', $this->communication_config); + + $tpl_path = sprintf('%sskins/%s', $this->module_path, $skin); + $this->setTemplatePath($tpl_path); + } + + /** + * @brief 쪽지함 출력 + **/ + function dispCommunicationMessages() { + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 변수 설정 + $message_srl = Context::get('message_srl'); + $message_type = Context::get('message_type'); + if(!in_array($message_type, array('R','S','T'))) { + $message_type = 'R'; + Context::set('message_type', $message_type); + } + + $oCommunicationModel = &getModel('communication'); + + // message_srl이 있으면 내용 추출 + if($message_srl) { + $message = $oCommunicationModel->getSelectedMessage($message_srl); + if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl || $message->sender_srl == $logged_info->member_srl) ) Context::set('message', $message); + } + + // 목록 추출 + $output = $oCommunicationModel->getMessages($message_type); + + // 템플릿에 쓰기 위해서 context::set + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('message_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + + $this->setTemplateFile('messages'); + } + + /** + * @brief 새 쪽지 보여줌 + **/ + function dispCommunicationNewMessage() { + $this->setLayoutFile('popup_layout'); + + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + $oCommunicationModel = &getModel('communication'); + + // 새 쪽지를 가져옴 + $message = $oCommunicationModel->getNewMessage(); + if($message) Context::set('message', $message); + + // 플래그 삭제 + $flag_path = './files/communication_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl); + $flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl); + @unlink($flag_file); + + $this->setTemplateFile('new_message'); + } + + /** + * @brief 쪽지 발송 출력 + **/ + function dispCommunicationSendMessage() { + $this->setLayoutFile("popup_layout"); + $oCommunicationModel = &getModel('communication'); + $oMemberModel = &getModel('member'); + + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 쪽지 받을 사용자 정보 구함 + $receiver_srl = Context::get('receiver_srl'); + if(!$receiver_srl || $logged_info->member_srl == $receiver_srl) return $this->stop('msg_not_logged'); + + // 답글 쪽지일 경우 원본 메세지의 글번호를 구함 + $message_srl = Context::get('message_srl'); + if($message_srl) { + $source_message = $oCommunicationModel->getSelectedMessage($message_srl); + if($source_message->message_srl == $message_srl && $source_message->sender_srl == $receiver_srl) { + $source_message->title = "[re] ".$source_message->title; + $source_message->content = "\r\n
\r\n
".trim($source_message->content)."
"; + Context::set('source_message', $source_message); + } + } + + $receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); + Context::set('receiver_info', $receiver_info); + + // 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅 + $oEditorModel = &getModel('editor'); + $option->primary_key_name = 'receiver_srl'; + $option->content_key_name = 'content'; + $option->allow_fileupload = false; + $option->enable_autosave = false; + $option->enable_default_component = false; + $option->enable_component = false; + $option->resizable = false; + $option->disable_html = true; + $option->height = 300; + $option->skin = $this->communication_config->editor_skin; + $editor = $oEditorModel->getEditor($logged_info->member_srl, $option); + Context::set('editor', $editor); + + $this->setTemplateFile('send_message'); + } + + /** + * @brief 친구 목록 보기 + **/ + function dispCommunicationFriend() { + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + + $oCommunicationModel = &getModel('communication'); + + // 그룹 목록을 가져옴 + $tmp_group_list = $oCommunicationModel->getFriendGroups(); + $group_count = count($tmp_group_list); + for($i=0;$i<$group_count;$i++) $friend_group_list[$tmp_group_list[$i]->friend_group_srl] = $tmp_group_list[$i]; + Context::set('friend_group_list', $friend_group_list); + + // 친구 목록을 가져옴 + $friend_group_srl = Context::get('friend_group_srl'); + $output = $oCommunicationModel->getFriends($friend_group_srl); + $friend_count = count($output->data); + if($friend_count) { + foreach($output->data as $key => $val) { + $group_srl = $val->friend_group_srl; + $group_title = $friend_group_list[$group_srl]->title; + if(!$group_title) $group_title = Context::get('default_friend_group'); + $output->data[$key]->group_title = $group_title; + } + } + + // 템플릿에 쓰기 위해서 context::set + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('friend_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + + $this->setTemplateFile('friends'); + } + + /** + * @brief 친구 추가 + **/ + function dispCommunicationAddFriend() { + $this->setLayoutFile("popup_layout"); + + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + $target_srl = Context::get('target_srl'); + if(!$target_srl) return $this->stop('msg_invalid_request'); + + // 대상 회원의 정보를 구함 + $oMemberModel = &getModel('member'); + $oCommunicationModel = &getModel('communication'); + $communication_info = $oMemberModel->getMemberInfoByMemberSrl($target_srl); + if($communication_info->member_srl != $target_srl) return $this->stop('msg_invalid_request'); + Context::set('target_info', $communication_info); + + // 그룹의 목록을 구함 + $friend_group_list = $oCommunicationModel->getFriendGroups(); + Context::set('friend_group_list', $friend_group_list); + + $this->setTemplateFile('add_friend'); + } + + /** + * @brief 친구 그룹 추가 + **/ + function dispCommunicationAddFriendGroup() { + $this->setLayoutFile("popup_layout"); + + // 로그인이 되어 있지 않으면 오류 표시 + if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); + $logged_info = Context::get('logged_info'); + + // 그룹 번호가 넘어오면 수정모드로.. + $friend_group_srl = Context::get('friend_group_srl'); + if($friend_group_srl) { + $oCommunicationModel = &getModel('communication'); + $friend_group = $oCommunicationModel->getFriendGroupInfo($friend_group_srl); + if($friend_group->friend_group_srl == $friend_group_srl) Context::set('friend_group', $friend_group); + } + + $this->setTemplateFile('add_friend_group'); + } + + } +?> diff --git a/modules/communication/conf/info.xml b/modules/communication/conf/info.xml new file mode 100644 index 000000000..d2c888b3c --- /dev/null +++ b/modules/communication/conf/info.xml @@ -0,0 +1,8 @@ + + + 커뮤니케이션 + + 제로 + 회원들간의 쪽지, 친구기능을 담당하는 모듈입니다. + + diff --git a/modules/communication/conf/module.xml b/modules/communication/conf/module.xml new file mode 100644 index 000000000..8f6a0b3a1 --- /dev/null +++ b/modules/communication/conf/module.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/communication/lang/en.lang.php b/modules/communication/lang/en.lang.php new file mode 100644 index 000000000..8048c384e --- /dev/null +++ b/modules/communication/lang/en.lang.php @@ -0,0 +1,48 @@ +communication = 'Communication'; + $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + + $lang->allow_message = 'Receive Messages'; + $lang->allow_message_type = array( + 'Y' => 'Receive All', + 'N' => 'Reject All', + 'F' => 'Only Friends', + ); + + $lang->message_box = array( + 'R' => 'Received', + 'S' => 'Sent', + 'T' => 'Mailbox', + ); + $lang->readed_date = "Read Date"; + + $lang->sender = 'Sender'; + $lang->receiver = 'Receiver'; + $lang->friend_group = 'Friend Group'; + $lang->default_friend_group = 'Unassigned Group'; + + $lang->cmd_send_message = 'Send Message'; + $lang->cmd_reply_message = 'Reply Message'; + $lang->cmd_view_friend = 'Friends'; + $lang->cmd_add_friend = 'Add to Friends'; + $lang->cmd_view_message_box = 'Message Box'; + $lang->cmd_store = "Save"; + $lang->cmd_add_friend_group = 'Add Friend Group'; + $lang->cmd_rename_friend_group = 'Modify Friend Group Name'; + + $lang->msg_no_message = 'There is no message'; + $lang->message_received = 'You have a new message'; + + $lang->msg_title_is_null = 'Please input the title of message'; + $lang->msg_content_is_null = 'Please input the content'; + $lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages"; + $lang->msg_disallow_message = 'Failed to send because receiver rejects message reception'; + + $lang->about_allow_message = 'You can decide message reception'; +?> diff --git a/modules/communication/lang/es.lang.php b/modules/communication/lang/es.lang.php new file mode 100644 index 000000000..e67c51aa8 --- /dev/null +++ b/modules/communication/lang/es.lang.php @@ -0,0 +1,49 @@ +communication = 'Communication'; + $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + + $lang->allow_message = 'Permitir la recepción del mensaje'; + $lang->allow_message_type = array( + 'Y' => 'Recibir todo', + 'N' => 'Rechazar', + 'F' => 'Sólo amigos', + ); + + $lang->message_box = array( + 'R' => 'Recibido', + 'S' => 'Enviado', + 'T' => 'Buzon de Email', + ); + + $lang->readed_date = "Fecha Leído"; + + $lang->sender = 'Remitente'; + $lang->receiver = 'Receptor'; + $lang->friend_group = 'Grupo de amigos'; + $lang->default_friend_group = 'Grupo desasignado'; + + $lang->cmd_send_message = 'Enviar Mensaje'; + $lang->cmd_reply_message = 'Responder el mensaje'; + $lang->cmd_view_friend = 'Amigos'; + $lang->cmd_add_friend = 'Registrar como Amigo'; + $lang->cmd_view_message_box = 'Buzón de mensajes'; + $lang->cmd_store = "Guardar"; + $lang->cmd_add_friend_group = 'agregar grupo de amigos'; + $lang->cmd_rename_friend_group = 'Cambiar el nombre del grupo de amigos'; + + $lang->msg_no_message = 'No hay mensajes'; + $lang->message_received = 'Usted ha recibido un mensaje'; + + $lang->msg_title_is_null = 'Por favor ingresar el título de la nota'; + $lang->msg_content_is_null = 'Por favor ingresar el contenido'; + $lang->msg_allow_message_to_friend = "Falló el envío por permitir sólo mensajes de sus amigos"; + $lang->msg_disallow_message = 'Falló el envío por ser usuario rechazado para recibir mensajes'; + + $lang->about_allow_message = 'Usted puede decidir la recepción del mensaje'; +?> diff --git a/modules/communication/lang/jp.lang.php b/modules/communication/lang/jp.lang.php new file mode 100644 index 000000000..0ee50758a --- /dev/null +++ b/modules/communication/lang/jp.lang.php @@ -0,0 +1,49 @@ +communication = '커뮤니케이션'; + $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + + $lang->allow_message = 'メッセージの受信'; + $lang->allow_message_type = array( + 'Y' => '全て受信', + 'N' => '全て受信しない', + 'F' => '友達からのみ受信する', + ); + + $lang->message_box = array( + 'R' => 'メッセージ受信ボックス', + 'S' => 'メッセージ送信ボックス', + 'T' => '保存ボックス', + ); + + $lang->readed_date = "開封時間"; + + $lang->sender = '送信者'; + $lang->receiver = '受信者'; + $lang->friend_group = '友達グループ'; + $lang->default_friend_group = 'グループ未指定'; + + $lang->cmd_send_message = 'メッセージ送信'; + $lang->cmd_reply_message = 'メッセージ返信'; + $lang->cmd_view_friend = '友達表示'; + $lang->cmd_add_friend = '友達登録'; + $lang->cmd_view_message_box = 'メッセージ表示'; + $lang->cmd_store = "保存"; + $lang->cmd_add_friend_group = '友達グループ追加'; + $lang->cmd_rename_friend_group = '友達グループ名変更'; + + $lang->msg_no_message = 'メッセージがありません。'; + $lang->message_received = 'メッセージが届きました。'; + + $lang->msg_title_is_null = 'メッセージのタイトルを入力してください。'; + $lang->msg_content_is_null = '内容を入力してください。'; + $lang->msg_allow_message_to_friend = '友達からのみメッセージを受信できるように設定したユーザであるため、送信できませんでした。'; + $lang->msg_disallow_message = 'メッセージの受信を拒否している受信者であるため、送信できませんでした。'; + + $lang->about_allow_message = 'メッセージを受信するかを設定します。'; +?> diff --git a/modules/communication/lang/ko.lang.php b/modules/communication/lang/ko.lang.php new file mode 100644 index 000000000..387580adc --- /dev/null +++ b/modules/communication/lang/ko.lang.php @@ -0,0 +1,48 @@ +communication = '커뮤니케이션'; + $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + + $lang->allow_message = '쪽지 수신 허용'; + $lang->allow_message_type = array( + 'Y' => '전체 수신', + 'N' => '거부', + 'F' => '친구만 허용', + ); + + $lang->message_box = array( + 'R' => '받은 쪽지함', + 'S' => '보낸 쪽지함', + 'T' => '보관함', + ); + + $lang->readed_date = "읽은 시간"; + + $lang->sender = '보낸이'; + $lang->receiver = '받는이'; + $lang->friend_group = '친구 그룹'; + $lang->default_friend_group = '그룹 미지정'; + + $lang->cmd_send_message = '쪽지 보내기'; + $lang->cmd_reply_message = '쪽지 답장'; + $lang->cmd_view_friend = '친구 보기'; + $lang->cmd_add_friend = '친구 등록'; + $lang->cmd_view_message_box = '쪽지함 보기'; + $lang->cmd_store = "보관"; + $lang->cmd_add_friend_group = '친구 그룹 추가'; + $lang->cmd_rename_friend_group = '친구 그룹 이름 변경'; + + $lang->msg_no_message = '쪽지가 없습니다'; + $lang->message_received = '쪽지가 왔습니다'; + + $lang->msg_title_is_null = '쪽지 제목을 입력해주세요'; + $lang->msg_content_is_null = '내용을 입력해주세요'; + $lang->msg_allow_message_to_friend = '친구에게만 쪽지 수신을 허용한 사용자라서 쪽지 발송을 하지 못했습니다'; + $lang->msg_disallow_message = '쪽지 수신을 거부한 사용자라서 쪽지 발송을 하지 못했습니다'; + $lang->about_allow_message = '쪽지 수신 여부를 결정할 수 있습니다'; +?> diff --git a/modules/communication/lang/ru.lang.php b/modules/communication/lang/ru.lang.php new file mode 100644 index 000000000..275cad728 --- /dev/null +++ b/modules/communication/lang/ru.lang.php @@ -0,0 +1,50 @@ + | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467; + * @brief Russian basic language pack for Zeroboard XE + **/ + + $lang->communication = 'Communication'; + $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + + $lang->allow_message = 'Разрешить прием сообщений'; + $lang->allow_message_type = array( + 'Y' => 'Принимать все', + 'N' => 'Отклонять все', + 'F' => 'Только друзья', + ); + + + $lang->message_box = array( + 'R' => 'Принятые', + 'S' => 'Отправленные', + 'T' => 'Почтовый ящик', + ); + + $lang->readed_date = "Дата прочтения"; + + $lang->sender = 'Отправитель'; + $lang->receiver = 'Получатель'; + $lang->friend_group = 'Группа друзей'; + $lang->default_friend_group = 'Неприсвоенная группа'; + + $lang->cmd_send_message = 'Отправить сообщение'; + $lang->cmd_reply_message = 'Ответить'; + $lang->cmd_view_friend = 'Дзузья'; + $lang->cmd_add_friend = 'Сделать другом'; + $lang->cmd_view_message_box = 'Ящик сообщений'; + $lang->cmd_store = "Сохранить"; + $lang->cmd_add_friend_group = 'Добавить группу друзей'; + $lang->cmd_rename_friend_group = 'Изменить имя группы друзей'; + + $lang->msg_no_message = 'Нет сообщений'; + $lang->message_received = 'Новое сообщение'; + + $lang->msg_title_is_null = 'Пожалуйста, введите тему сообщения'; + $lang->msg_content_is_null = 'Пожалуйста, введите содержание'; + $lang->msg_allow_message_to_friend = "Отправка провалена, поскольку получатель принимает сообщения только от друзей"; + $lang->msg_disallow_message = 'Отправка провалена, поскольку получатель отклоняет прием сообщений'; + + $lang->about_allow_message = 'Вы можете определить политику принятия сообщений'; +?> diff --git a/modules/communication/lang/zh-CN.lang.php b/modules/communication/lang/zh-CN.lang.php new file mode 100644 index 000000000..4cd6b4b72 --- /dev/null +++ b/modules/communication/lang/zh-CN.lang.php @@ -0,0 +1,49 @@ +communication = '커뮤니케이션'; + $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + + $lang->allow_message = '允许接收短消息'; + $lang->allow_message_type = array( + 'Y' => '全部接收', + 'N' => '拒收', + 'F' => '只允许好友', + ); + + $lang->message_box = array( + 'R' => '收件箱', + 'S' => '发件箱', + 'T' => '保管箱', + ); + + $lang->readed_date = "阅读日期"; + + $lang->sender = '寄件人'; + $lang->receiver = '收件人'; + $lang->friend_group = '好友组'; + $lang->default_friend_group = '组未指定'; + + $lang->cmd_send_message = '发送短消息'; + $lang->cmd_reply_message = '回复短消息'; + $lang->cmd_view_friend = '查看好友'; + $lang->cmd_add_friend = '加为好友'; + $lang->cmd_view_message_box = '查看短信箱'; + $lang->cmd_store = "保管"; + $lang->cmd_add_friend_group = '添加好友组'; + $lang->cmd_rename_friend_group = '修改好友组名称'; + + $lang->msg_no_message = '没有短消息。'; + $lang->message_received = '您有新消息。'; + + $lang->msg_title_is_null = '请输入短消息标题。'; + $lang->msg_content_is_null = '请输入内容。'; + $lang->msg_allow_message_to_friend = '因其为只允许接收好友短消息的用户,所以不能发送短消息。'; + $lang->msg_disallow_message = '因其为拒绝接收短消息的用户,所以不能发送短消息。'; + + $lang->about_allow_message = '可以选择短消息接收与否。'; +?> diff --git a/modules/member/queries/addFriend.xml b/modules/communication/queries/addFriend.xml similarity index 100% rename from modules/member/queries/addFriend.xml rename to modules/communication/queries/addFriend.xml diff --git a/modules/member/queries/addFriendGroup.xml b/modules/communication/queries/addFriendGroup.xml similarity index 100% rename from modules/member/queries/addFriendGroup.xml rename to modules/communication/queries/addFriendGroup.xml diff --git a/modules/member/queries/deleteFriend.xml b/modules/communication/queries/deleteFriend.xml similarity index 100% rename from modules/member/queries/deleteFriend.xml rename to modules/communication/queries/deleteFriend.xml diff --git a/modules/member/queries/deleteFriendGroup.xml b/modules/communication/queries/deleteFriendGroup.xml similarity index 100% rename from modules/member/queries/deleteFriendGroup.xml rename to modules/communication/queries/deleteFriendGroup.xml diff --git a/modules/member/queries/deleteMessage.xml b/modules/communication/queries/deleteMessage.xml similarity index 100% rename from modules/member/queries/deleteMessage.xml rename to modules/communication/queries/deleteMessage.xml diff --git a/modules/member/queries/deleteMessages.xml b/modules/communication/queries/deleteMessages.xml similarity index 100% rename from modules/member/queries/deleteMessages.xml rename to modules/communication/queries/deleteMessages.xml diff --git a/modules/member/queries/getFriendGroup.xml b/modules/communication/queries/getFriendGroup.xml similarity index 100% rename from modules/member/queries/getFriendGroup.xml rename to modules/communication/queries/getFriendGroup.xml diff --git a/modules/member/queries/getFriendGroups.xml b/modules/communication/queries/getFriendGroups.xml similarity index 100% rename from modules/member/queries/getFriendGroups.xml rename to modules/communication/queries/getFriendGroups.xml diff --git a/modules/member/queries/getFriends.xml b/modules/communication/queries/getFriends.xml similarity index 100% rename from modules/member/queries/getFriends.xml rename to modules/communication/queries/getFriends.xml diff --git a/modules/member/queries/getMessage.xml b/modules/communication/queries/getMessage.xml similarity index 100% rename from modules/member/queries/getMessage.xml rename to modules/communication/queries/getMessage.xml diff --git a/modules/member/queries/getNewMessage.xml b/modules/communication/queries/getNewMessage.xml similarity index 100% rename from modules/member/queries/getNewMessage.xml rename to modules/communication/queries/getNewMessage.xml diff --git a/modules/member/queries/getReceivedMessages.xml b/modules/communication/queries/getReceivedMessages.xml similarity index 100% rename from modules/member/queries/getReceivedMessages.xml rename to modules/communication/queries/getReceivedMessages.xml diff --git a/modules/member/queries/getSendedMessages.xml b/modules/communication/queries/getSendedMessages.xml similarity index 100% rename from modules/member/queries/getSendedMessages.xml rename to modules/communication/queries/getSendedMessages.xml diff --git a/modules/member/queries/getStoredMessages.xml b/modules/communication/queries/getStoredMessages.xml similarity index 100% rename from modules/member/queries/getStoredMessages.xml rename to modules/communication/queries/getStoredMessages.xml diff --git a/modules/member/queries/isAddedFriend.xml b/modules/communication/queries/isAddedFriend.xml similarity index 100% rename from modules/member/queries/isAddedFriend.xml rename to modules/communication/queries/isAddedFriend.xml diff --git a/modules/member/queries/moveFriend.xml b/modules/communication/queries/moveFriend.xml similarity index 100% rename from modules/member/queries/moveFriend.xml rename to modules/communication/queries/moveFriend.xml diff --git a/modules/member/queries/renameFriendGroup.xml b/modules/communication/queries/renameFriendGroup.xml similarity index 100% rename from modules/member/queries/renameFriendGroup.xml rename to modules/communication/queries/renameFriendGroup.xml diff --git a/modules/member/queries/sendMessage.xml b/modules/communication/queries/sendMessage.xml similarity index 100% rename from modules/member/queries/sendMessage.xml rename to modules/communication/queries/sendMessage.xml diff --git a/modules/member/queries/setMessageReaded.xml b/modules/communication/queries/setMessageReaded.xml similarity index 100% rename from modules/member/queries/setMessageReaded.xml rename to modules/communication/queries/setMessageReaded.xml diff --git a/modules/member/queries/setMessageStored.xml b/modules/communication/queries/setMessageStored.xml similarity index 100% rename from modules/member/queries/setMessageStored.xml rename to modules/communication/queries/setMessageStored.xml diff --git a/modules/member/queries/updateAllowMessage.xml b/modules/communication/queries/updateAllowMessage.xml similarity index 100% rename from modules/member/queries/updateAllowMessage.xml rename to modules/communication/queries/updateAllowMessage.xml diff --git a/modules/member/schemas/member_friend.xml b/modules/communication/schemas/member_friend.xml similarity index 100% rename from modules/member/schemas/member_friend.xml rename to modules/communication/schemas/member_friend.xml diff --git a/modules/member/schemas/member_friend_group.xml b/modules/communication/schemas/member_friend_group.xml similarity index 100% rename from modules/member/schemas/member_friend_group.xml rename to modules/communication/schemas/member_friend_group.xml diff --git a/modules/member/schemas/member_message.xml b/modules/communication/schemas/member_message.xml similarity index 100% rename from modules/member/schemas/member_message.xml rename to modules/communication/schemas/member_message.xml diff --git a/modules/member/skins/default/add_friend.html b/modules/communication/skins/default/add_friend.html similarity index 89% rename from modules/member/skins/default/add_friend.html rename to modules/communication/skins/default/add_friend.html index e9344dc4a..385054afa 100644 --- a/modules/member/skins/default/add_friend.html +++ b/modules/communication/skins/default/add_friend.html @@ -34,7 +34,7 @@ - {$lang->cmd_add_friend_group} + {$lang->cmd_add_friend_group}
diff --git a/modules/member/skins/default/add_friend_group.html b/modules/communication/skins/default/add_friend_group.html similarity index 100% rename from modules/member/skins/default/add_friend_group.html rename to modules/communication/skins/default/add_friend_group.html diff --git a/modules/communication/skins/default/common_footer.html b/modules/communication/skins/default/common_footer.html new file mode 100644 index 000000000..04f5b8449 --- /dev/null +++ b/modules/communication/skins/default/common_footer.html @@ -0,0 +1 @@ + diff --git a/modules/communication/skins/default/common_header.html b/modules/communication/skins/default/common_header.html new file mode 100644 index 000000000..e00686ee9 --- /dev/null +++ b/modules/communication/skins/default/common_header.html @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + +
+ + +
+

{$member_title}

+ + + + + + + + +
+ diff --git a/modules/communication/skins/default/css/black.css b/modules/communication/skins/default/css/black.css new file mode 100644 index 000000000..554df1971 --- /dev/null +++ b/modules/communication/skins/default/css/black.css @@ -0,0 +1,54 @@ +@charset "utf-8"; +.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border:none; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border:none; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +/* button */ +a.button, span.button, del.button, +a.button span, span.button button, span.button input, del.button span{ + background-image:url(../images/black/form_buttons.png); + _background-image:url(../images/black/form_buttons.gif); +} + + +del.button span, +a.button, span.button, del.button, +a.button span, span.button button, span.button input, del.button span{ + color:#FFFFFF; +} + +.inputTypeText { background-color:transparent !important; color:#AAAAAA !important; } +.inputTypeText:hover, .inputTypeText:focus { background-color:transparent; color:#AAAAAA; } + +/* replace color */ +.memberSmallBox { border:1px solid #888888; } +.memberSmallBox .header { background:transparent url("../images/black/bgH3.gif) no-repeat left bottom; } +.memberSmallBox .header h3 { background:transparent url("../images/black/lineH3.gif") no-repeat right bottom; color:#888888; border-bottom:3px solid #888888; } +.memberSmallBox .openid_user_id { color:#AAAAAA; background:transparent url("../images/black/openid_input_bg.gif") no-repeat left 50% !important; } +.memberSmallBox .help { background-color:transparent; } + +.memberInfoTable tr.first-child th, .memberInfoTable tr.first-child td { background-color:transparent; color:#AAAAAA; } +.memberInfoTable tr th, .memberInfoTable tr td { background-color:transparent; color:#AAAAAA; } +.memberInfoTable td input { background-color:transparent; color:#AAAAAA; } +.memberInfoTable caption { color:#AAAAAA; } +div.checkValue { color:#BBBBBB !important; } + +.boardHeader { border:1px solid #888888; } +.boardHeader { background:transparent url("../images/black/bgH3.gif) no-repeat left bottom; } +.boardHeader h3 { border:none; background:transparent url("../images/black/lineH3.gif") no-repeat right bottom; color:#888888; border-bottom:3px solid #888888; } + +table.list { border:1px solid #000000 !important; } +table.list th { background:#282829 url("../images/black/lineBoardListTh.gif") no-repeat left bottom; border:1px solid #444444 !important; color:#AAAAAA; } +table.list tr { background-color:transparent !important; } +table.list tr td.title { color:#BBBBBB !important; } +table.list tr td.title a { color:#BBBBBB !important; } +table.list tr td { border-top:1px solid #888888 !important; } +table .list tr td, table.list tr td * { color:#BBBBBB; } + +.pageNavigation a { border:none !important; } +.pageNavigation .current { border:none !important; color:#EEEEEE; } + +.memberSmallBox .leftHeaderType th { background:transparent; color:#AAAAAA; } +.memberSmallBox .leftHeaderType td { color:#AAAAAA; } + +#popup_content { background-color:#000000; } diff --git a/modules/communication/skins/default/css/common.css b/modules/communication/skins/default/css/common.css new file mode 100644 index 000000000..d683fe0c1 --- /dev/null +++ b/modules/communication/skins/default/css/common.css @@ -0,0 +1,175 @@ +@charset "utf-8"; + +/* common */ +.memberSmallBox { border:1px solid #e0e1db; margin:5em auto 1em auto;} +.memberSmallBox fieldset { border:0; margin:0; } + +.memberSmallBox.w400 { width:400px;} +.memberSmallBox.w500 { width:500px;} + +.memberSmallBox.w400pop { width:400px; margin:0; padding:0;} +.memberSmallBox.w500pop { width:500px; margin:0; padding:0;} +.memberSmallBox.w600pop { width:600px; margin:0; padding:0;} + +.memberSmallBox .header { position:relative; _width:100%; background:#ffffff url(../images/common/bgH3.gif) no-repeat left bottom; overflow:hidden;} + +.boardInformation { font:normal 11px Tahoma; width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666; height:28px;} +.boardInformation strong { font:bold 11px Tahoma; color:#ff6600;} + +.boardHeader { position:relative; _width:100%; border-top:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} +.boardHeader .member_option { float:right; position:relative; top:1em; right:1em; } +.boardHeader select { vertical-align:bottom; } +.boardHeader input { vertical-align:bottom; _padding-bottom:1px;} +.boardHeader .essential { position:absolute; top:1.5em; right:1em; color:#54564b; font-size:.9em;} +.boardHeader .essential:first-letter { color:#ff0000;} + +/* list */ +.list { width:100%; border:1px solid #e0e1db; table-layout:fixed;} +.list tr:first-child td, .list tr.first-child td { border-top:1px solid #e0e1db; white-space:nowrap;} +.list tr.bg1 { background:#ffffff} +.list tr.bg2 { background:#fbfbfb;} +.list th { color:#3e3f3e; font-weight:white; border-bottom:1px solid #ffffff; padding:.5em .2em .5em .2em; background:#ffffff url(../images/common/lineBoardListTh.gif) no-repeat left bottom; white-space:nowrap;} +.list th a { color:#3e3f3e;} +.list th:first-child, .list th.first-child { background-position:-3px bottom; border-left:1px solid #ffffff;} +.list th.check { padding:0;} +.list th select, .list th input { vertical-align:middle;} +.list td { border-top:1px solid #eff0ed; padding:.5em; text-align:center; height:35px;} +.list td.registDate { font:.8em Tahoma; color:#999999; text-align:center;} +.list td.num { font:.8em Tahoma; color:#999999; text-align:center;} +.list td.check { text-align:center;} +.list td.user { color:#333333; font-size:.9em; text-align:left;} +.list td.user a { color:#333333;} +.list td.userId { font:.9em Tahoma;} +.list td.userNick { font-size:.9em; color:#999999;} +.list td.sendMessage { text-align:center; padding:0;} +.list td.sendMessage .buttonFixedLeft { float:left; position:relative; margin-left:1em;} +.list td input { _margin:-3px;} +.list td.title { text-align:left; } +.list td.title.bold { font-size:1.2em; font-weight:bold;} +.list td.title.bold a { position:relative; top:.3em;} +.list td.title * { vertical-align:middle;} +.list td.title, .list td.title a { color:#444444; text-decoration:none;} +.list td.title a:visited { color:#777777; text-decoration:none;} +.list td.checkDate { font:.8em Tahoma; color:#333333; text-align:center;} +.list td.subject { font-size:1em; text-align:left; color:#555555; } +.list td.subject a { text-decoration:none; color:#555555; } +.memberSelect { margin-top:2px; } + +.saved_content { margin-top:1em; padding-top:1em; border-top:1px dotted #DDDDDD; } + +/* login */ +.memberSmallBox .login { border:none; padding:2em 0 1.5em 2em;} +.memberSmallBox .login legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;} +.memberSmallBox .login dl { margin:0; padding:0; overflow:hidden; float:left; margin-right:10px; width:250px;} +.memberSmallBox .login dl dt { margin:0; padding:0; width:100px; clear:left; float:left; color:#54564b; height:24px; padding-top:3px;} +.memberSmallBox .login dl dd { margin:0; padding:0; float:left; height:27px; width:150px; } +.memberSmallBox .login .keep { clear:both; white-space:nowrap; margin-left:100px;} +.memberSmallBox .login .keep input { vertical-align:middle;} +.memberSmallBox .login .keep label { margin:0; padding:0; font-size:11px; color:#999999;} +.memberSmallBox .openid_user_id { background: url(../images/openid_input_bg.gif) left no-repeat; background-color: #ffffff; background-position: 0 50%; padding:3px 3px 3px 18px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; line-height:1em; vertical-align:middle; color:#666666; width:120px;} +.memberSmallBox .help { background:#f5f5f3; color:#666666; border-top:1px solid #eaebe7; overflow:hidden; padding:1.1em; } + +/* logout */ +.memberSmallBox .text { color:#54564b; text-align:center; padding:4em 2em 5em 2em;} +.memberSmallBox .text p { margin:0; padding:0; margin-bottom:.5em;} + +/* friend */ +.friendNum { float:left; background:url(../images/common/iconFriend.gif) no-repeat .5em .4em; padding:.4em 0 0 2em;} +.friendNum strong { font:bold 11px Tahoma; color:#ff6600;} + +/* message */ +.readMessage { border:1px solid #e0e1db; border-top:none; margin-bottom:2em;} +.readMessage .messageHeader { padding:1.5em; height:1em; overflow:hidden;} +.readMessage .messageHeader h4 { margin:0; padding:0; float:left; padding-left:.5em; font-size:1em; background:url(../images/common/iconArrow99.gif) no-repeat left .3em;} +.readMessage .messageHeader address { float:right; white-space:nowrap;} +.readMessage .messageHeader address em { font-size:1em; font-style:white; color:#333333; margin-right:.3em; float:left;} +.readMessage .messageHeader address em a { color:#333333;} +.readMessage .messageHeader address .date { font:.8em Tahoma; color:#999999; margin-left:10px;} +.readMessage .messageBody { border:1px solid #e0e1db; margin:0 1.5em 1.5em 1.5em; padding:1em; color:#666666;} +.readMessage .deleteOrKeep { padding:.5em 0; overflow:hidden; background:#f5f5f3; border-top:1px solid #eaebe7; _width:100%;} +.messageSetup { float:left; overflow:hidden; } +.instantMessage { float:right; overflow:hidden;} +.instantMessage li { float:left; padding:0 .8em 0 .8em; margin-left:-1px; background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left center; list-style:none; } +.instantMessage li a { text-decoration:none; display:block; float:left; height:1em; height:1.1em; overflow:hidden; font-size:1em; white-space:nowrap; color:#666666; padding-left:1.8em; background:url(../images/common/iconInstantMessage.gif) no-repeat left top;} +.instantMessage li.on a { background-position:left -14px; font-weight:bold;} +.instantMessage li a strong { color:#ff6600;} + +/* member info */ +.memberInfoTable { width:100%; border:1px solid #e0e1db; margin-bottom:10px;} +.memberInfoTable caption { padding:2em 0 .5em 1.5em; font-weight:bold; text-align:left; background:url(../images/common/iconH3.gif) no-repeat .5em 2em;} +.memberInfoTable tr.first-child th, .memberInfoTable tr.first-child td { border-top:none;} +.memberInfoTable th, .memberInfoTable td { border-top:1px solid #eaebe7; padding:.5em;} +.memberInfoTable th { background:#f5f5f3; text-align:left; padding:.5em 1em;} +.memberInfoTable td { border-left:1px solid #eaebe7;} +.memberInfoTable td input { border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; height:1em; line-height:1em; background:#fbfbfb; vertical-align:middle; margin-right:.5em; margin-bottom:.5em; color:#666666;} +.memberInfoTable td input.radio, .memberInfoTable td input.check { border:none; padding:0; margin:0; background:none; margin-top:.4em;} +.memberInfoTable td input.w4em { width:4em;} +.memberInfoTable td input.w2em { width:2em;} +.memberInfoTable td select { margin-right:.5em;} +.memberInfoTable td checkbox { border:0; } +.memberInfoTable td .fl { margin-right:.5em;} +.memberInfoTable td br { clear:both;} +.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; } + +/* 아이디, 이름, 이메일 주소 중복 체크후 중복되면 출력되는 메세지의 className */ +.memberInfoTable td .checkValue { margin-top:5px; font-weight:bold; color:#444444; } + +/* modify/ insert member info */ +.memberImage { clear:both; } +.memberImage .info { margin-bottom:1.5em; float:left; margin-right:1em;} +.memberImage .form { float:left; } +.memberImage .form input { height:1.5em; margin:0 .3em 0 0; padding:0;} + +.checkbox li { float:left; margin-right:2em; } +.checkbox li input { border:none; } + +.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; } + +.extendPublic { clear:both; margin-top:5px; padding:0; font-size:.9em; color:#999999; } +.extendPublic input { padding:0; margin:0; } + +.publicItem { display:block; margin-top:5px;} +.publicItem input { margin:0; padding:0;} +.publicItem label { font-weight:normal; margin:0; padding:0; color:#666666;} +span.publicItem { display:inline; margin:0; font-weight:normal; color:#666666; } +span.privateItem { display:inline; margin:0; font-weight:normal; color:#666666; } + +.agreementBox { border:1px solid #AAAAAA; margin:.5em 0 0 0; padding:1em; border-bottom:none; height:200px; overflow-y:scroll;} +.agreementButton { background-color:#EEEEEE; padding:1em; border:1px solid #AAAAAA; border-top:none;} + +/* popup common */ +.memberSmallBox .complex { padding:1.5em 2em 2em 2em;} +.memberSmallBox .leftHeaderType { border-top:1px solid #e0e1db; border-left:1px solid #e0e1db; width:100%;} +.memberSmallBox .leftHeaderType th, .memberSmallBox .leftHeaderType td { border-right:1px solid #e0e1db; border-bottom:1px solid #e0e1db; padding:.8em 1em .6em 1em;} +.memberSmallBox .leftHeaderType th { color:#333333; text-align:left; background:#f5f5f3;} +.memberSmallBox .leftHeaderType td { color:#444444;} +.memberSmallBox .group { border:1px solid #e0e1db; border-width:1px 0; overflow:hidden; padding:.5em 0; margin-top:.7em; height:23px;} +.memberSmallBox .group select { width:11em; margin-top:1px;} +.memberSmallBox .editor { margin:10px 0 0 0; _height:400px; } + +/* password change */ +.memberSmallBox .pwModify { border:none;} +.memberSmallBox .pwModify legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;} +.memberSmallBox .pwModify input { width:9em;} +.memberSmallBox .pwModify br { display:block; margin-bottom:.2em} +.memberSmallBox .pwModify p { margin:0; padding:0; text-align:center; margin-top:1em; color:#54564b;} + +/* pageNavigation */ +.pageNavigation { position:relative; display:block; padding:1.5em 0 2em 0; text-align:center; font:bold .8em Tahoma; } +.pageNavigation a { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#666666; display:inline-block; padding:1px 7px 2px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; } +.pageNavigation a:hover { background:#F7F7F7; text-decoration:none; } +.pageNavigation a:visited { color:#999999;} +.pageNavigation a.goToFirst { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;} +.pageNavigation a.goToLast { border:none; border-right:1px solid #ffffff; border-left:1px solid #ffffff; z-index:99; vertical-align:top; padding:0px 7px 4px 6px;} +.pageNavigation a.goToFirst img, .pageNavigation a.goToLast img { display:inline-block; padding:2px 0; position:relative; top:2px; _top:1px;} +.pageNavigation .current { position:relative; margin-left:-4px; font:bold 1em Tahoma; color:#ff6600; display:inline-block; padding:1px 7px 1px 6px; border-left:1px solid #dedfde; border-right:1px solid #CCCCCC; text-decoration:none; line-height:1em; } + +/* Own Document */ +img.button_go { position:relative; bottom:-4px; } diff --git a/modules/communication/skins/default/css/cyan.css b/modules/communication/skins/default/css/cyan.css new file mode 100644 index 000000000..b7a0567ae --- /dev/null +++ b/modules/communication/skins/default/css/cyan.css @@ -0,0 +1,4 @@ +@charset "utf-8"; +.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #2895c0; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/communication/skins/default/css/green.css b/modules/communication/skins/default/css/green.css new file mode 100644 index 000000000..68325b48a --- /dev/null +++ b/modules/communication/skins/default/css/green.css @@ -0,0 +1,4 @@ +@charset "utf-8"; +.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d0dbd1; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #38b549; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/communication/skins/default/css/purple.css b/modules/communication/skins/default/css/purple.css new file mode 100644 index 000000000..79dd2e074 --- /dev/null +++ b/modules/communication/skins/default/css/purple.css @@ -0,0 +1,4 @@ +@charset "utf-8"; +.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #d1d9db; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #ac19a9; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/communication/skins/default/css/red.css b/modules/communication/skins/default/css/red.css new file mode 100644 index 000000000..12c08b486 --- /dev/null +++ b/modules/communication/skins/default/css/red.css @@ -0,0 +1,4 @@ +@charset "utf-8"; +.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} diff --git a/modules/communication/skins/default/css/white.css b/modules/communication/skins/default/css/white.css new file mode 100644 index 000000000..a78b5fbdc --- /dev/null +++ b/modules/communication/skins/default/css/white.css @@ -0,0 +1,5 @@ +@charset "utf-8"; +.boardHeader h3 { margin:0; padding:0; float:left; clear:both; font-size:1.2em; padding:1em 2em .7em 1.2em; border:none; border-left:1px solid #e1e1dd; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + +.memberSmallBox .header h3 { margin:0; border:none; float:left; clear:both; font-size:1.2em; padding:.8em 2em .6em 1.2em; border:none; border-bottom:3px solid #fe3614; background:url(../images/common/lineH3.gif) no-repeat right bottom;} + diff --git a/modules/member/skins/default/filter/add_friend.xml b/modules/communication/skins/default/filter/add_friend.xml similarity index 63% rename from modules/member/skins/default/filter/add_friend.xml rename to modules/communication/skins/default/filter/add_friend.xml index 9f48f408d..b1ec11d0d 100644 --- a/modules/member/skins/default/filter/add_friend.xml +++ b/modules/communication/skins/default/filter/add_friend.xml @@ -1,4 +1,4 @@ - +
diff --git a/modules/member/skins/default/filter/add_friend_group.xml b/modules/communication/skins/default/filter/add_friend_group.xml similarity index 66% rename from modules/member/skins/default/filter/add_friend_group.xml rename to modules/communication/skins/default/filter/add_friend_group.xml index 2db9891e2..cadf2644f 100644 --- a/modules/member/skins/default/filter/add_friend_group.xml +++ b/modules/communication/skins/default/filter/add_friend_group.xml @@ -1,4 +1,4 @@ - + diff --git a/modules/communication/skins/default/filter/delete_checked_friend.xml b/modules/communication/skins/default/filter/delete_checked_friend.xml new file mode 100644 index 000000000..4d1466994 --- /dev/null +++ b/modules/communication/skins/default/filter/delete_checked_friend.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/skins/default/filter/delete_checked_message.xml b/modules/communication/skins/default/filter/delete_checked_message.xml new file mode 100644 index 000000000..1d21f33c8 --- /dev/null +++ b/modules/communication/skins/default/filter/delete_checked_message.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/skins/default/filter/delete_friend_group.xml b/modules/communication/skins/default/filter/delete_friend_group.xml new file mode 100644 index 000000000..5d269abaa --- /dev/null +++ b/modules/communication/skins/default/filter/delete_friend_group.xml @@ -0,0 +1 @@ + diff --git a/modules/communication/skins/default/filter/move_friend.xml b/modules/communication/skins/default/filter/move_friend.xml new file mode 100644 index 000000000..8b1eef8cd --- /dev/null +++ b/modules/communication/skins/default/filter/move_friend.xml @@ -0,0 +1 @@ + diff --git a/modules/member/skins/default/filter/send_message.xml b/modules/communication/skins/default/filter/send_message.xml similarity index 74% rename from modules/member/skins/default/filter/send_message.xml rename to modules/communication/skins/default/filter/send_message.xml index 2756c3398..418965112 100644 --- a/modules/member/skins/default/filter/send_message.xml +++ b/modules/communication/skins/default/filter/send_message.xml @@ -1,4 +1,4 @@ - +
diff --git a/modules/communication/skins/default/filter/update_allow_message.xml b/modules/communication/skins/default/filter/update_allow_message.xml new file mode 100644 index 000000000..d005b43f5 --- /dev/null +++ b/modules/communication/skins/default/filter/update_allow_message.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/modules/member/skins/default/friends_list.html b/modules/communication/skins/default/friends.html similarity index 95% rename from modules/member/skins/default/friends_list.html rename to modules/communication/skins/default/friends.html index 15e8326d3..adbde9474 100644 --- a/modules/member/skins/default/friends_list.html +++ b/modules/communication/skins/default/friends.html @@ -1,5 +1,7 @@ {@ $member_title = $lang->cmd_view_friend } + + @@ -16,7 +18,7 @@ {$lang->cmd_modify} {$lang->cmd_delete} - {$lang->cmd_add_friend_group} + {$lang->cmd_add_friend_group}
diff --git a/modules/communication/skins/default/images/black/bgH3.gif b/modules/communication/skins/default/images/black/bgH3.gif new file mode 100755 index 0000000000000000000000000000000000000000..4e85c1b683cd191689004139cd39dbcbdd224d3d GIT binary patch literal 1248 zcmV<61RwiHNk%w1VYmxq0FeR!9v&jAskHz9{{R30A^8LW00062EC2ui0JsZe00092 zl#i*)?GK}zwAzca-n{z{hT=$;=82~2%C_zc$MQ_q_KoNI&iDQg3<`(DqVb4KDwoWr z^9gMNqSUJOip^@b+^+Wv4vWX+viXcotJmzd`wfrFSJS!uj?e4&{J#GW7$`VMSZH{N zn5ekO2v^q#87VnQS!sERnW?$S+3EQS8YO-|znqFrdJJ1PdNxXE33{g$x@yd)O4GH?Q8k zRq68m3plXg!GsGN^lLb=;>C;`JAUj7G33dVD_g#dIrAOKnmc>`3_7&v(K0xbK8-rH z>eZ|*n{Ev|w(QxoYh!(FJGbuLynFlRi2Jwj;lzs@KRzxv^5x8%JAV#+mGbD+t6RU0 zJ^P&L+Pi!I4nDm2AKb^AKaW1W`t=RUvwsgizWn*W-P6C1KfnI{knQvT{|{h*0uDHq ze*_+gV1f!RXp?~qJ_uoi5>B{~gA`tfVTKxR7>nX!dwW}0fQ$>w8dwh3pPa?bhIn{?iZXP$aKW#^uL{t0NH zG4&~Ep@trcXhei2%4nmGK1$D`kWNZzrIuPF>7|-(%4w&%Wa??CqK--`C!m&!YO1QP z3dpIfz6xusvXbHIthU~YYpzJts%x*l{tB!Myar2bvBn-t!LZ2xF3W7Qz$)u(w9-zS zDzwyIi*2@$TB~ih-hP`Wx8ROTZn3%OSn^?#pk# z2kPr@zyc2pAHW13jBvu)8LV)_4nIsB!w^qQamB4kY;ndKZ;Tnn9DfXQ$b)$-a>*v2 z>=wx=ugr4GS*h%D%rehR6wEZ=jC0O|>dbS`KI>)k&q5DPv_e4_jdapV+jI2NPCpHG za#2rBb=532ZFSaKZyg!eUVjbtVPTI=cG>k{ZFbsfuYCyGY`+b6+;+Gvcind1JqF!) z@6C7LQ0VP<;DQg{BjJW0jyNKKC(d}|j(f29ns3f|=bnEKdg!8$ zPI~F4pN@L!s;|y^>#n~Jd+f5$PJ8XP-;R6ky6?_=@4o*IeDJ~#PkiylACG+U$}i7+ z^UgmHee}{#Pkr^)UyptE+HcQ&_uhXGe)!%4Ab$DgpO1d}>aWj!`|iIFfBf>#Pk;UP z-;aO(`tQ$w|Nj3EzyJzxfV?9g0S}141S)WW3~ZnS9|*w+N^pV{te^!ih`|hMaDyD| KU;qJ70029~go)e$ literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/black/form_buttons.gif b/modules/communication/skins/default/images/black/form_buttons.gif new file mode 100755 index 0000000000000000000000000000000000000000..965325573b6cc7b998c85f7b5fef0342f1dba26d GIT binary patch literal 4049 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 A_y7O^ literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/blank.gif b/modules/communication/skins/default/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/bottomGotoFirst.gif b/modules/communication/skins/default/images/bottomGotoFirst.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0297fecbe6666e8076cf1c4bd48571dc826c5f3 GIT binary patch literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmd@Ll<#=3_e}661_o;Y DN%IX& literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/bottomGotoLast.gif b/modules/communication/skins/default/images/bottomGotoLast.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a7141d0d51a0dcece12d04038c8f846f0ae56c0 GIT binary patch literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmbu$G48y@J<;=(2!k~M DKokru literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/button_go.gif b/modules/communication/skins/default/images/button_go.gif new file mode 100755 index 0000000000000000000000000000000000000000..895d1a0780039ea61f1da136e380a36e9258c7bc GIT binary patch literal 316 zcmV-C0mJ@BNk%w1VH5xq0K^{v^z`w&ytMxQ{>sb7dU|@n!o4agDpONa#Kpg*rKOyl zoVK>IV`F2})6qjiLzI-1zQ4V?y1I^zj`#QW_xJbj@ay^c_wDZJ)YZ_lw66E}_3-fS z`1tnj?(F~n|NsC0A^8LW0018VEC2ui02BZe000HK;MZVeX`Wc~VVB^#UM$OkcVUBI z?R@WBg2BM^;~0;|ok!?FI-i{7P(#&Bt`mxOOO<-I6zrs0rD&E24|%PDkO3Y<8bGhx zBZ>MMQSj6w5D*0r5eo?t1a%$-eRT;6kPi=t3T+}$1x O86Vl>Efdy-+>jEMI<2sN5)(rs( zVhB_zAXsh_ju66`kU&5{awmvLVz|PYaOXb0FUPihKi)BK=KXx(5n<48f1-bU2ht0H zSglrz#R32(yWM89{hpSW7k+a$Vxj=R41$2g0-DXgwRXrK_{@Cx5B2|@f8T%{wo|zg z9mCLVA=94dOSp5lE~TB4w#~})7eBnegr@B0?b}BiGGYFnWt^4=+_aGTsn&;)o$*~# zau#3c$&gdg@PJyevM)!N&RkN_^N?M0`=+5s;(ajV$Nymq3Lh8Yil3A`#g`Jw%71?L zyyBP2s_MM_7cYOUt8Zv*YHoQ&B(=7+caS?NZM9uJy?y-yH2NTeIW)`~8GSu=uX}uw z&EfL+0-;De^>+H*OyisP(hst^`Gv(L`SQx@+Io^?V{>bJXLoO3rPgS5`go%_bP^VQ{dIxkCw@0M)W&h#vCom?KHW`ko_c(fI?w5DW|w_!_r;!!=xO0T_r2bJ zlRNzjr!w$gyq6KZL}4xTKMZtRFG*YrGwYeed_4k~m)SY19DuL$8+A^aFpObB>m|${TLUqAW1c+N}jXEu)TOkGkPM*t5>B{^s5y8Gl|OZurO3QwWC6TTHy(aZAYP-XLY5#BS$rI>_yq!)__^{FfgU%dyTuN_j!X zmyXMYCt^~TA76^+axh~JJsi@E0{YcqR=$5LC!JcYY zHsOP0*P94oew!^7S%>ews!nR(Btm}RZIT*_{Mw;)gw(CJR$?l=t$ko?tApA!mP+oM zP2KLq3re;rLx!!hCmA-s9qNQz)OXa$GaWlUf-Ov%y>}|?>~5d;rKsJ0X%e5@FU#8A zrS(7fc#pnT$#0`?5Igo5kDK^=Ox5Hzk*S%zw?F*-^wWKo#Q-+5Y)AZ6qrL~>s@IM_ zml|I?1@EZFEnhpUCr-rPtebF4CaWi>eiEqJ-nf^w2M$%FX}G>5vWDkR+tKg?+5TF= z1xcD#2vv}^qD#gdtvJ--oNnr>`+eP8m`|r}8Xml>dlwykPCs)a_P+joTym#=_Gb33 zUXqAAXOP~hx^MW9Lh3Zg(rCMexiqiL(fNmx`^E*dqSLsTXWTU|VH^TX@k>($8=vwh=b_MTbMfC~VWEmi5jW-EyTY>{buz&4c~0Pgfj z(!pK2f&%Uh87a(pmcv&T)r5P7Ma}W)vSU8s@Y2t;VWD zM{TCHstlW1N$RozJG6ZpsA7L*x9B7pcB@Gt9zJkbxBuHOIX6HYV50{;RTxKj!$Eh> z=#dar{xN*RVISCQr+5|CL(p&}nDg2-M^)hM+~^n%8#`X3D)fanI>mCv+!(6If%rz} zWZ1Z;OjQIGG`ePU#!mq%T&Q!?F&u2-w5PiG>IDd-k~488MExWh-*kcmd*c_cE{PK~ zxzRXp0_-{Jr-{zZ9&Fg;`5HAo1>Wo_;Y84%gB?k0DTw6g`DURB^~oLP>T`d+wOenWQd`=yp(*$ zC+Y()-q2GmBqs&)KZtS+y$vp%$(??(=^8^{E21+smM@!S82YKDooUHYb26D>fG+Gz z&*sl90tVWs3ndfBjGaDiq;n9I2UYy}jS%DDl)aSlkQBAB6>nrng_JBBe_`*S1mfh_ zg=R-BYHEx_N<>$VguiHD7>8A*U3rSAB|v6mnS@=BjQk}VU>t$CQZWv2`9Uw!s3Ve! zbr;BwTr|BtMxYk@z?Yp8Ok*A*YEiIY*)`WR?(N!L91dSOUTd20MRu3O;%}>ZOm6}S z-S}kqs^^?(5-RE@WD8bLfhKmSYfm{2zINKn%z+_$o>d9f&bUk8APGGcB>1{tf|(a5 z>Zzm&)&p|Q{6yE@YBqf1e63j!85DYOR{Vv{^oH=mO zB%-m5!u>}exCA*$A9X;guwE9qBZ@xeE>aa;v@9PhqfhuC)g=j*6%R3eGFYT0l$w+O@oMi(l9u#GZv~{3GaVZ#bsK}1gHF;T; zFcf3DN~9xRv~EV1F=j|eeS3m+D^ARqrHS;ETDq>(Xa-9w9+i$;-=1zPtpM~CDNDASmiO;wBNn?<=cZNt%FWjG3$uC?h}QNvrYVqlhO(*__Ql7Z2}ci@`syWWqhtN0*Z>nY(4*iywBSNq zK@hqCT3w(f<%dWME}IHMJqoWt3$Ml%hM@~#)rFDtLb$XLX)28Nczg}|I4A}3CkW)? F{{iBWh`Rs) literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/bottomGotoFirst.gif b/modules/communication/skins/default/images/common/bottomGotoFirst.gif new file mode 100644 index 0000000000000000000000000000000000000000..e0297fecbe6666e8076cf1c4bd48571dc826c5f3 GIT binary patch literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmd@Ll<#=3_e}661_o;Y DN%IX& literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/bottomGotoLast.gif b/modules/communication/skins/default/images/common/bottomGotoLast.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a7141d0d51a0dcece12d04038c8f846f0ae56c0 GIT binary patch literal 51 zcmZ?wbhEHbWM^PyXkcVWOH2Fz|G(l-7DfgJMg|=QAOOiQFmbu$G48y@J<;=(2!k~M DKokru literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/buttonTypeInput24.gif b/modules/communication/skins/default/images/common/buttonTypeInput24.gif new file mode 100644 index 0000000000000000000000000000000000000000..0dcfc0e3df9a4ec01b31e4d88cb7fa54dbf2e012 GIT binary patch literal 419 zcmZ?wbhEHblwc5HxT?*wAuirlZ z{Q3RU=MUe$efjk1{jXm?K7aZ6{rlHHe|~@X@b>rbpS$;NyK(dCe=uO65>Wif!pOj& z&Y%M_59B8XwgU%(Gd*;q`j-YDO~|sEAFyJflR@jc8*9R{l`MQ_Y^d;2n=K=7Ipb{J z?z?Ipho7vx{k~$)%83S<{~8*bn$$SC)fhXwx_f%mxcSu-CQq3)FG-~Rpk`}>d23l`4#{P|-~e_L;V z%hv5{w(VHk+t>CV3>ZiRia%Kx85r~#bU^w*eqvzrcVIqh6u}eLaXR~HR+rtn0}Brn zxdtq8S+TTogI$-vD(8Tu)09HHLju>wF@-Oi`e}<#Q@ALrm#>2wUzLoi03(m8w2nTn Qx`ev2G6RE?Gb@#>VJCC1Se*Nz8gU6Tu{rlI`-}e9ie+CSo z_>+Z^fq|1j2P6YBgMr1);AE%PtSj@9^-QDHW#+ZyC{IdSK7mg*o5w&Xx$~~9Yv8ll i_f|T5P~eh|n^@q?!_deeY-nn`IJmnkdZr5lgEasX!Zm#W literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/iconH3.gif b/modules/communication/skins/default/images/common/iconH3.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ea0cec82bd3a1c190ea2e15cfb02bee0cb107ed GIT binary patch literal 58 zcmZ?wbhEHbWM|-JXkcXcXD0Ih|9{1wEQ|~cj0`#qKmd|qU=rkM;+TDEFJFyjSk_#V KkgWj>4AuaqBo2ZA literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/iconInstantMessage.gif b/modules/communication/skins/default/images/common/iconInstantMessage.gif new file mode 100644 index 0000000000000000000000000000000000000000..d63a69506ec8284e7ed827fe185f951097d4425d GIT binary patch literal 254 zcmV9=Zqp2iFdI4aJt$7VZ;GuY%1{o$}xPKw|&Xm+TL7U+ckp;zBmwVa5YKZ@_;bL(H$g*{*108vW-loQ}F`@AvmNEQK^p%Vh4b7?f#<^Y9lB{|c+7BLFzCSF5W} zz_52@fK|rGFwRG##Nc}B*#_Buyvy|Jll#xvw}nVETA&my~4rz1Dk4K0lpmXs!DWtZ1&@0&82dOHU? JtmDVv_yxI%o_GKN literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/lineBoardListTh.gif b/modules/communication/skins/default/images/common/lineBoardListTh.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d891d82c48cdbf1cad8f7a3e672e472afe1ec55 GIT binary patch literal 2763 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 WxCjO=Qi_WLanS+gX95nv;{OY`JD*tq literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/lineH3.gif b/modules/communication/skins/default/images/common/lineH3.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe42fe3781237403eca94635261e9596fd922c1f GIT binary patch literal 45 ucmZ?wbhEHbWMmLwXkcJ?`0y?R1B2pE79h#MpaUX6G7L;CE&VfD8LR=-2na3! literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/images/common/line_1x10_e0e0e0.gif b/modules/communication/skins/default/images/common/line_1x10_e0e0e0.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a848dd581e9ecdf86112d9e89d590c2a18c3296 GIT binary patch literal 44 tcmZ?wbhEHbWMtrCXkcJ?@ZbRh1B2pE79h#MpaUX6G7L=2E&Z$v)&R+u2Y~

b{bmUKcqz}))c5uC(7v?)v4a2P)ZNa- z@$&T2)z|&~{r~^}A^8LV00000EC2ui01yBW000GQ;3tk`X`bk)Wk@<6#nZYULKH{p zEx|?+kif!I0vIL|#ZMubBmjWH2OtmxIFVa~6JQ7!1CK!f5W#StOTv&C3=E8h2vI1s n+#cd5;2fT3B_0kF0v!+!GARoV78n&7dMN`JIW(4+BOw4gP{MS* literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/js/communication.js b/modules/communication/skins/default/js/communication.js new file mode 100644 index 000000000..b69db7182 --- /dev/null +++ b/modules/communication/skins/default/js/communication.js @@ -0,0 +1,101 @@ +/* 쪽지 발송 */ +function completeSendMessage(ret_obj) { + alert(ret_obj['message']); + window.close(); +} + +function doSendMessage(member_srl, message_srl) { + if(typeof(message_srl)=='undefined') message_srl = 0; + var url = current_url.setQuery('module','communication').setQuery('act','dispCommunicationSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl); + popopen(url, 'sendMessage'); +} + +/* 쪽지 모두 선택 */ +function doCheckAll(obj, fo_id) { + var fo_obj = xGetElementById(fo_id); + for(var i=0; i + + diff --git a/modules/member/skins/default/member_new_message.html b/modules/communication/skins/default/new_message.html similarity index 100% rename from modules/member/skins/default/member_new_message.html rename to modules/communication/skins/default/new_message.html diff --git a/modules/communication/skins/default/screenshot/black.gif b/modules/communication/skins/default/screenshot/black.gif new file mode 100755 index 0000000000000000000000000000000000000000..06ccb4a3264cdecf3f4587228dd96670e419f8b0 GIT binary patch literal 6159 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 aBp-}Y3myN|CCQdM77)7sWJ_aUNB;*X_6%(R literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/screenshot/cyan.gif b/modules/communication/skins/default/screenshot/cyan.gif new file mode 100644 index 0000000000000000000000000000000000000000..bae2fa162a7ce6225dd53b0b55221d0b3ddbeea4 GIT binary patch literal 5459 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 literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/screenshot/green.gif b/modules/communication/skins/default/screenshot/green.gif new file mode 100644 index 0000000000000000000000000000000000000000..126923f6834345e1b9e1dd5d7dce8b07f059d1d1 GIT binary patch literal 5342 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 literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/screenshot/purple.gif b/modules/communication/skins/default/screenshot/purple.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b5e0d717195d488e386534df818b77d63ed0be4 GIT binary patch literal 7180 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 literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/screenshot/red.gif b/modules/communication/skins/default/screenshot/red.gif new file mode 100644 index 0000000000000000000000000000000000000000..c9fd68653d94167effc757f2ccbe1d1576ddc675 GIT binary patch literal 6267 zcmcIli9geg<6jKh=d(}GDp#bYR8p~&XpJH=zR-2b-CM{k021@BVAo9`ybL3I{Oz zPo2h|KBKOobw*QL<2>%1?j>D4gDVDx`bO7`uA5vlHob0g!}zAzjaz0nZ!}(d~gyOV*v}Ehw#?(Ox+)7!(x`>~ggr-!fG6CYRaCtki! z+^J#!r;8X8_K>uffK2M(o1d^Txk$gjf{enVBp&|ZZp#kAx zPb0zuBO{)LM}|d3k|LtQ$x%U(q5FeeGK#5O$k(Bs6At^pNDJC&FAtgCBDJAh`3N`g*Tw3aj)U=fJ zwD?!)32CohX1q#F&q#Znk@V_yI_-6G2JKZQEhQ`KB`xc9c6MrJHZ3P7Eh{H8H#a>y zH!CMEJ3sFgJwGFlp39)W&S&HmFlh9Gd}cu=gGn!BW)&1NiVCxtMFqu0Ifcc{lH%N= zl0sHVUNNhvltnKqWw6SM%gYK%%S$TCnPnBF<&|YsRYet5<(1VHRW+5hH6_)xRqR?; z4ZFIwuI5c$8T(CbT|N6vLtTC2n}()(PIE(3OJj3uQ%hTOYkN!E+t&7uwzr+_9bIob zyF0qxb$0i5^}O%y<-U9Wp_lvd{fAH7k9{9L^?#i0ZR;EO)IZoa!0YD?4-9=C93C0^ z{AGA#^z)aokx~AavGGy<#Mt;({^Zp7*XhaMBmGk|U#DlMX6B}6=V#^?X6F~@7MA9} zeP37-eEYt3@t`KRE=%JR=&KUUU$uCA}FZLF?uu5E0sZ*FgF{odUEvnBkq{pbG& zibAPN9u5RAhx?c(551f)W=;+meZ%XfuoJNV@P8wLA%w6tFpnzrZsNarWZ zs*v}lfP#_aq^1ilTIFt+q@q@ic&^4PqeLf7x@c1nXjRD^r0Rpgdyf8M4wcKkmKz~g z6qhV9+p7z> zIQq(-vW&QTK5~`619m8=?=sUI#!0Jj!N>++NfPOyfK>HkO;FWspuV>PIA9#GUhN2z zlo~7$$7vB;;1rRyX3{sHyIjUCufA^WJHJI3eZVBJR(q_mRy_ev6A=S;%cfuCjc8zD znXNsnz`CsRFZY5z4OvWR|Lh4u9Eqf90lu_Etx=LE-{V)%p6g=!B{Ol-qa#N$gE7JM z+ou(ioF<}_^XL=g6IHTV=3_K{?&CuW{Y!7nQtpDyQ>fm#X^<{9Qq zC+EJ#o9fl(P(;s_XN7)230k9CVYE)I(SY)3xlym5*R@dinS;UN#dFhX#P(wkC>9Qt zC^CP9(XVcm;R`7#1vA27d&ob56U3^&XR;`oK)$B;LGhl5!@;+%iB%KWlQB4Y=3HKy z)yM0e`RR6D$Le^y^U}yV^Yct0OBHd<^xuoJb{k zE9_A1MT>=^-U;Ugt(x;LMHPd3%##%(j-O9f@m&|b)rUD`%bm5 zPm{0L-4EI*>6o83`cW?QNOLKI;uk$qYBfcFcAt6w$g@X#tkARfpYMyF?{O{Z$Ls7K z-!5bCNFFII794s0y<7jlNzXpBJCA?$TRbTGHE?*($vYWeLQk%Gc88uE;n^o!Iu5U7 zTvr<=wm_Q0J*|(|zWB}*tqDg1*1oOrJQvO~Ex3hHjk&wT_S%Hwq0#3P-ltVJz9!sh zcw$HJob=Z1Ju$g4LyJ(|oXtsg^_#0Z@#&pw93k&aJ^vG?>_I{ql8MfW#S$hzy-0{v$T% zFE9SuZrLWl7#%E=Koe6oXoB_=CBEtKE`^5dp4cYaB6deK?#yYv{WLr5n9VrofVd?6 zQ4p?LIF9m+Y?1vTh!CDfWkD_XOYZGb#)`$YKOrAEEWnmVnNqSOlh@^gy!394T6Rm8 zPohO`FGpv5h?Z@tktt1arx28~Wj=MZt7m<94%ANAz%IYdUCA?UzG0%U=Cqr0**PWv zm19_3BXbV;K|K&R`2gM75i@c_jr=f2>Ewj|>79-*Qqns}z{^f!=O3}rD>=%0e{_sp z_DG>45gNrb=h4a_5oS=!4dK;~u@?Vlbb=UF0tIxTO9}|DxP3_xVM)x}K*Z z2N8CMqp2N&V-8pWkb_+T!5`Jp-p~+1r zyFK}t1*d&jQSH4u5T3UUG=1C$yZri9Pb4DZD2mina<+6O7qYJ3Va4?krQ81&R}N1+ zgQ%3ouLcW?ifpfb<_-8%RrM70nUSS)j9R1f*G;65JM@D%%^A8+cfQeSADPk_wCxF7 z@_hBnCShp4>{;9mi$l%UvDf17Yl3RNZ;zk(5mWeP_MBQuk|Xm?R$Fr8-0_R-g*dkP zKq|k!Sf_Gt_Y?Iid0d1*oxTh2gsS04NMnPfD10$_UK28q7;@Bxk38VZ+OEvCq{lsf zL_8$Vny+O-T0m5DU~Qnh|=Uc zC*yKq>fk%aGxsJB3LK^^7ya+Wdt~nwf7qV(_XK25`E<~9>C~%*N2absb5-@U398U0 z?%3J;@}JNV8lx1%{m4ns(DdS8@T@SAU*qMu=!m1fr>N%2y2wiH4jS@t@7d_XADTD9 zR2_?=5$+)aY*@H?VVnzcuf4Xf!^-8t69b{77MW%F5}9LDE~M)p!(3= zZKsMWiGT8B!x!37&Ek1A*T2Z0=C@<3IMBYF$0Mo-$}R=o7$_%)>|BMvm1a@JPCAY6 z0`G>6EK_a=-51^E`Z|==)8%z`azm>{(B80qdxxTIAhKC*yTOj7b`efM)^&tKl4H*a zxbPRlQ>S#Fx`*4YWa>Y~xt?^=^|MkUsP%DYY|T$m)cr!_Zmv64Zv~p>?}5v14$BnN zKLk4!S_?wl#3fg!D0s7M`5{EeM7=Jh`<7BK^c1lRh8sgyMph0NUBzUvLsjt2?ga zfqoW9qWLC7_!Ax&VV|I*GNt?pPlw*Z^Yh>&mP{@TE<=ZhNI`9;s16+JV2YPzX`oa* zRz>!%(qQm$?YnBS)~$ACR?FalRYD71sTvPfV^D3uAfpVd<)Q{?z)EjJL^WQejOMJJld>I;2=Tb#gIoga z6G7#O9ft!Elm5MC3W9uYH!K(Pg2*`QN^xAX<`*w#{M&4F-_l>ZpVZYoD$ zR`)%riN32F7MgkUyt&Q$e7EI(dt*HZxm`}^IYU$JxcJMD9%M>%mBn?v5SyEU`dJSO z-a`E}lQEh+#uDnMs=?zR6-(&vRiT_(Csc6MfU6&6yF>gA3Hi@Zd_Km%iVKubQ4=iW z1P9VZf?cz~1P+zL1&TQ21{}Hx3sAX06B?kpgDHGu5f`P`X|Q`p3Xii93xbj*cBa90 z@>qZ~a%UeG;NwxXIH(x5vy}@r>!KtNhxOt?t6jkIN07ojPQjW)n8lghND>c95+x)I z@}H7Pko&*;*l6h5%Vg10s9SS;8(`pwDa!BdEjDatp}_4g#$MTn(v)K|F|{%-dtdVL zh=!xdEi}+4D!HB{8*oe}4F>jbKnhwhy)Eej-`3kJJ~JWS(GXo?nNTwR)Ws6=7(yk# zd|7u4oh~#)4^n|IScPDQR6PfoPD6Io>f2jN6}^-yLGCQWgH<$R7t0e>FtC@J)`|vb zVPJifY!3H0n~TaoEAmJ{^RA@GoRnLo8KTSSPm-=@Vifzis6JRSi!>7Q0K3VtJV zLI8a*1&WuUTCPQ!sk>%W#9uX%&UiqWlH_l(&wp3Ynnl=}a&}}+`j1MCQ1@zQ{ z0(L3=s>(x^TvQ~0io*g!BtT)h zERGKhQGqCMo+?29{*gXW?d24Mc5if z#o>?&0~PgXq_#X%hKFqBk>Rv|PNYG3Xk;T5vT|W;JEL3Y8QnDTGCneoi?YXB24lc* zQ;^|JRXL9)Zrfdc7YCHlM29$H zNdY>f&m@)Kp`IKDs(}X(!{$lh;j~NKgd*Qw@VyG5vULgQ+d_5VhDp|aexFO6o&@4 zo1tLzzxxLuKNkEbT8z#SHT+EIA=MTgw+r!oqals-!UH&5c^MVD$98oayzKDb&kXw_CvXuG>5HhsMEr~sTl zj;tdA-NHoydbko**gB1A)FTUfFB+J|M@Ebg zID8~+uKLwyfI$-N5rEEoF%k|6H3iKA+SrTi`W>u;<`kD5_KJG0`=t-H2E1!5W2#s; zl;RQHEU`Xf#UKY!$Zr@zH)=Q{ARBvEfkdAvn8OOy@DXeEgHM2V#`}}gP5zr8Z>Z6JCZS3{0Ld*WWef-wDT(A-+;kt-2 zB*Kq!MB*^LL#8NaQ>ezJV@IlAD-3G0`PdQAt1K;SYjI|b2?$R{P*x{u+HvA~AaV$c z?AvPKjS#|FV1~_qnIoSGBw|eM%Si}@@Qyz!5l_tuHuL+ zq(TKaq@pG~gvh(ht%-GhtFc+hrw5KBNq#A`hQB!0hb^~=&5Z%ZlT*JdP_r1@jl?=g9 z>84_rSis}}a21Ba=pjmlRC+HSQgKA+{bwx+Udd&r;($6d)QkR?O@x1X1@(U>=uto4 zrSXyqpdl6XJ1d4Kf|Jg*Q|$p+reo*8FB*E#ZSCI*v{qw4E$a z`FhZ{s9fc%r@<8E3th_?{j-Pub`hfb^`?{U+KZ;hwI*46>c{**86`GV{QA1{b5` z>^i-FdT!?3T|c8hP`hNxiwSwaiOn)_px`;a%s^pe)0Lq z#i-FmCD*wh=h~v3rdKX5EHo@Bfb&%ug&C@IuL??-qtk`^4i$DzmW@OC{~Lxev9GfmtLfP0~+Z8quo;9YbJ$L)R=(Lugg(#a}lmfzJWr9 zQ?VV)?cH8AyG`Q-<>{pg;q-FgLKN^5b#EcsN)S(;`+j~Vhh6yA3DP~V0-apxHie+4 zZ}gr;89k%)qgNKoPy@u3uG!DJCckc8Skb>gx$@f2;2C71mT#?AcdKN@+GORn$qJ9V zV)^=4tL!g_3#+ad@;S;BmuD+CU#}V5TkE8+4QQ`i`u@xJ8D!BeG}+COx>($;AKTH3!zW;(R_^k12jMB@=Wx_2xt@j(ruQ#)v zZ3N3~YOOD+Uf+1RXX}>D)~k}4l(DV-j++U8Hd0=*42mIP!If3tFirO5FQ>96ZA!N- zzixl{>vzwyu+9THha~lQ7qai2340it)2pU8YGT@!n2KQh)-0f2*0~2VgiA`oYturb tT|shjsc6J5f7vkauf;{9^cohzRWL{{V#uQbhm& literal 0 HcmV?d00001 diff --git a/modules/communication/skins/default/screenshot/white.gif b/modules/communication/skins/default/screenshot/white.gif new file mode 100644 index 0000000000000000000000000000000000000000..c9fd68653d94167effc757f2ccbe1d1576ddc675 GIT binary patch literal 6267 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 tT|shjsc6J5f7vkauf;{9^cohzRWL{{V#uQbhm& literal 0 HcmV?d00001 diff --git a/modules/member/skins/default/send_message.html b/modules/communication/skins/default/send_message.html similarity index 100% rename from modules/member/skins/default/send_message.html rename to modules/communication/skins/default/send_message.html diff --git a/modules/communication/skins/default/skin.xml b/modules/communication/skins/default/skin.xml new file mode 100644 index 000000000..a3ad1b760 --- /dev/null +++ b/modules/communication/skins/default/skin.xml @@ -0,0 +1,91 @@ + + + 기본 스킨 + 기본 스킨 + 기본 스킨 + Default Skin + Por defecto piel + 기본 스킨 + + (주)NHN + (株)NHN + (株)NHN + NHN Corp + NHN Corp + NHN Корп + + 디자인 : 서기정 (http://blog.naver.com/addcozy) + HTML/CSS : 정찬명 (http://naradesign.net) + + + 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + デザイン:ソギジョン (http://blog.naver.com/addcozy) + HTML/CSS:ジョンチャンミョン (http://naradesign.net) + + + Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Chan-Myung Jeong (http://naradesign.net) + + + Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML / CSS: Jeong Chan-Myung (http://naradesign.net) + + + Дизайн: Ги Чен Се (http://blog.naver.com/addcozy) + HTML / CSS: Чен-Чен Мен (http://naradesign.net) + + + + + 기본 + 默认 + デフォルト + default + Por defecto + умолчанию + + + 청록색 + 青緑 + 青绿色 + cyan + Cian + бирюзовый + + + 초록색 + + 绿色 + green + Verde + зеленый + + + 빨간색 + + 红色 + red + Roja + красный + + + 보라색 + + 紫色 + purple + Púrpura + Лиловый + + + 검은색 + + Black + Черного + Negro + 黑色 + + + diff --git a/modules/communication/tpl/colorset_list.html b/modules/communication/tpl/colorset_list.html new file mode 100644 index 000000000..84223d3b7 --- /dev/null +++ b/modules/communication/tpl/colorset_list.html @@ -0,0 +1,16 @@ + + + {@ $_img_info = getImageSize($val->screenshot); $_height = $_img_info[1]+40; $_width = $_img_info[0]+20; $_talign = "center"; } + + {@ $_width = 200; $_height = 20; $_talign = "left"; } + +

+ colorset==$val->name)-->checked="checked"/> + + +
+ {$val->title} + +
+
+ diff --git a/modules/communication/tpl/filter/insert_config.xml b/modules/communication/tpl/filter/insert_config.xml new file mode 100644 index 000000000..7e6539233 --- /dev/null +++ b/modules/communication/tpl/filter/insert_config.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/modules/member/tpl/images/icon_add_friend.gif b/modules/communication/tpl/images/icon_add_friend.gif similarity index 100% rename from modules/member/tpl/images/icon_add_friend.gif rename to modules/communication/tpl/images/icon_add_friend.gif diff --git a/modules/member/tpl/images/icon_friend_box.gif b/modules/communication/tpl/images/icon_friend_box.gif similarity index 100% rename from modules/member/tpl/images/icon_friend_box.gif rename to modules/communication/tpl/images/icon_friend_box.gif diff --git a/modules/member/tpl/images/icon_message_box.gif b/modules/communication/tpl/images/icon_message_box.gif similarity index 100% rename from modules/member/tpl/images/icon_message_box.gif rename to modules/communication/tpl/images/icon_message_box.gif diff --git a/modules/member/tpl/images/icon_write_message.gif b/modules/communication/tpl/images/icon_write_message.gif similarity index 100% rename from modules/member/tpl/images/icon_write_message.gif rename to modules/communication/tpl/images/icon_write_message.gif diff --git a/modules/communication/tpl/index.html b/modules/communication/tpl/index.html new file mode 100644 index 000000000..767a766ae --- /dev/null +++ b/modules/communication/tpl/index.html @@ -0,0 +1,52 @@ + + + +

{$lang->communication} {$lang->cmd_management}

+ +
{nl2br($lang->about_communication)}
+ + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang->editor_skin} + +
{$lang->skin} + +
{$lang->colorset}
+ +
+ + + + diff --git a/modules/communication/tpl/js/communication_admin.js b/modules/communication/tpl/js/communication_admin.js new file mode 100644 index 000000000..7b888cd66 --- /dev/null +++ b/modules/communication/tpl/js/communication_admin.js @@ -0,0 +1,16 @@ +/* 스킨 컬러셋 구해옴 */ +function doGetSkinColorset(skin) { + var params = new Array(); + params['skin'] = skin; + + var response_tags = new Array('error','message','tpl'); + exec_xml('communication', 'getCommunicationAdminColorset', params, doDisplaySkinColorset, response_tags); +} + +function doDisplaySkinColorset(ret_obj) { + var tpl = ret_obj["tpl"]; + var old_height = xHeight("communication_colorset"); + xInnerHtml("communication_colorset", tpl); + var new_height = xHeight("communication_colorset"); +} + diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index 19ef9133b..016250d3d 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -68,7 +68,7 @@ // 쪽지 발송 if($message_content) { - $oMemberController = &getController('member'); + $oCommunicationController = &getController('communication'); $oDocumentModel = &getModel('document'); $logged_info = Context::get('logged_info'); @@ -83,9 +83,9 @@ if($type=='move') $purl = sprintf("%s", $oDocument->getPermanentUrl(), $oDocument->getPermanentUrl()); else $purl = ""; - $content .= sprintf("
%s

%s
%s
%s",$message_content, $purl, $oDocument->getTitleText(), $oDocument->getContent()); + $content .= sprintf("
%s

%s
%s
%s",$message_content, $purl, $oDocument->getTitleText(), $oDocument->getContent(false, false, false)); - $oMemberController->sendMessage($sender_member_srl, $oDocument->get('member_srl'), $title, $content, false); + $oCommunicationController->sendMessage($sender_member_srl, $oDocument->get('member_srl'), $title, $content, false); } } diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 6fb839cee..6f53276d9 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -167,8 +167,8 @@ $sender_member_srl = $logged_info->member_srl; // 쪽지 발송 - $oMemberController = &getController('member'); - $oMemberController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false); + $oCommunicationController = &getController('communication'); + $oCommunicationController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false); } function isExistsHomepage() { diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index 1d6ec60de..9250aa6ab 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -365,6 +365,13 @@ return $this->loaded_component_list[$component][$editor_sequence]; } + /** + * @brief editor skin 목록을 return + **/ + function getEditorSkinList() { + return FileHandler::readDir('./modules/editor/skins'); + } + /** * @brief component 목록을 return (DB정보 보함) **/ diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 24cd0fecd..5789f5563 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -366,7 +366,7 @@ $sender_args->message_srl = getNextSequence(); $sender_args->list_order = $sender_args->message_srl * -1; - $output = executeQuery('member.sendMessage', $sender_args); + $output = executeQuery('communication.sendMessage', $sender_args); if($output->toBool()) { // 받는 회원의 쪽지함에 넣을 쪽지 $receiver_args->message_srl = $sender_args->related_srl; @@ -380,7 +380,7 @@ $receiver_args->readed = $obj->readed; $receiver_args->regdate = $obj->regdate; $receiver_args->readed_date = $obj->readed_date; - $output = executeQuery('member.sendMessage', $receiver_args); + $output = executeQuery('communication.sendMessage', $receiver_args); } } diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index 39bb3bd74..97e757fbd 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -15,14 +15,6 @@ - - - - - - - - @@ -55,12 +47,6 @@ - - - - - - @@ -69,14 +55,6 @@ - - - - - - - - diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index e7cecb738..3c0030f3d 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -21,12 +21,6 @@ $lang->invalid_user_id= "You have entered an invalid ID"; $lang->invalid_password = 'You have entered an invalid password'; $lang->allow_mailing = 'Join Mailing'; - $lang->allow_message = 'Receive Messages'; - $lang->allow_message_type = array( - 'Y' => 'Receive All', - 'N' => 'Reject All', - 'F' => 'Only Friends', - ); $lang->denied = 'Prohibited'; $lang->is_admin = 'Superadmin Permission'; $lang->group = 'Assigned Group'; @@ -55,10 +49,6 @@ $lang->redirect_url = 'URL after Join'; $lang->agreement = 'Member Join Agreement'; $lang->accept_agreement = 'Agree'; - $lang->sender = 'Sender'; - $lang->receiver = 'Receiver'; - $lang->friend_group = 'Friend Group'; - $lang->default_friend_group = 'Unassigned Group'; $lang->member_info = 'Member Info'; $lang->current_password = 'Current Password'; $lang->openid = 'OpenID'; @@ -80,14 +70,6 @@ 'extra_vars' => 'Extra Vars', ); - $lang->message_box = array( - 'R' => 'Received', - 'S' => 'Sent', - 'T' => 'Mailbox', - ); - - $lang->readed_date = "Read Date"; - $lang->cmd_login = 'Login'; $lang->cmd_logout = 'Logout'; $lang->cmd_signup = 'Join'; @@ -107,14 +89,6 @@ $lang->cmd_view_scrapped_document = 'Scraps'; $lang->cmd_view_saved_document = 'Saved Articles'; $lang->cmd_send_email = 'Send Mail'; - $lang->cmd_send_message = 'Send Message'; - $lang->cmd_reply_message = 'Reply Message'; - $lang->cmd_view_friend = 'Friends'; - $lang->cmd_add_friend = 'Add to Friends'; - $lang->cmd_view_message_box = 'Message Box'; - $lang->cmd_store = "Save"; - $lang->cmd_add_friend_group = 'Add Friend Group'; - $lang->cmd_rename_friend_group = 'Modify Friend Group Name'; $lang->msg_email_not_exists = "You have entered an invalid email address"; @@ -135,9 +109,6 @@ $lang->msg_success_authed = 'Your account has been successfully certificated and logged on.\n Please modify the password to your own one with the password in the mail.'; $lang->msg_success_confirmed = 'The autentication completed successfully.'; - $lang->msg_no_message = 'There is no message'; - $lang->message_received = 'You have a new message'; - $lang->msg_new_member = 'Add Member'; $lang->msg_update_member = 'Modify Member Info'; $lang->msg_leave_member = 'Leave'; @@ -151,10 +122,6 @@ $lang->msg_signup_disabled = 'You are not able to sign up'; $lang->msg_already_logged = 'You have already signed up'; $lang->msg_not_logged = 'Please login first'; - $lang->msg_title_is_null = 'Please input the title of message'; - $lang->msg_content_is_null = 'Please input the content'; - $lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages"; - $lang->msg_disallow_message = 'Failed to send because receiver rejects message reception'; $lang->msg_insert_group_name = 'Please input the name of group'; $lang->msg_check_group = 'Please select the group'; @@ -177,7 +144,6 @@ $lang->about_blog_url = 'Please input if you have your blogs'; $lang->about_birthday = 'Please input your birth date'; $lang->about_allow_mailing = "If you don't join mailing, you will not able to receive group mail"; - $lang->about_allow_message = 'You can decide message reception'; $lang->about_denied = 'Check to prohibit the ID'; $lang->about_is_admin = 'Check to give Superadmin permission'; $lang->about_description = "Administrator's memo about members"; diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index 4ce3d9004..aba95e29b 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -2,7 +2,7 @@ /** * @file es.lang.php * @author zero (zero@nzeo.com) - * @brief English Language Pack (Only Basic Things) + * @brief Spanish Language Pack (Only Basic Things) **/ $lang->member = 'Usuario'; @@ -21,12 +21,6 @@ $lang->invalid_user_id= "Este ID no existe"; $lang->invalid_password = 'Contraseña incorrecta'; $lang->allow_mailing = 'Registro del envío de mail'; - $lang->allow_message = 'Permitir la recepción del mensaje'; - $lang->allow_message_type = array( - 'Y' => 'Recibir todo', - 'N' => 'Rechazar', - 'F' => 'Sólo amigos', - ); $lang->denied = 'Prohibido'; $lang->is_admin = 'Atribución del administrador superior'; $lang->group = 'Grupo asignado'; @@ -54,10 +48,6 @@ $lang->redirect_url = 'URL luego del registro'; $lang->agreement = 'Acuerdo del registro del usuario'; $lang->accept_agreement = 'Acepto'; - $lang->sender = 'Remitente'; - $lang->receiver = 'Receptor'; - $lang->friend_group = 'Grupo de amigos'; - $lang->default_friend_group = 'Grupo desasignado'; $lang->member_info = 'Información del Usuario'; $lang->current_password = 'Contraseña actual'; $lang->openid = 'OpenID'; @@ -79,13 +69,6 @@ 'extra_vars' => 'Variables Extra', ); - $lang->message_box = array( - 'R' => 'Recibido', - 'S' => 'Enviado', - 'T' => 'Buzon de Email', - ); - - $lang->readed_date = "Fecha Leído"; $lang->cmd_login = 'Conectar'; $lang->cmd_logout = 'Desconectar'; @@ -106,14 +89,6 @@ $lang->cmd_view_scrapped_document = 'Ver Scraps'; $lang->cmd_view_saved_document = 'Ver artículos guardados'; $lang->cmd_send_email = 'Enviar Email'; - $lang->cmd_send_message = 'Enviar Mensaje'; - $lang->cmd_reply_message = 'Responder el mensaje'; - $lang->cmd_view_friend = 'Amigos'; - $lang->cmd_add_friend = 'Registrar como Amigo'; - $lang->cmd_view_message_box = 'Buzón de mensajes'; - $lang->cmd_store = "Guardar"; - $lang->cmd_add_friend_group = 'agregar grupo de amigos'; - $lang->cmd_rename_friend_group = 'Cambiar el nombre del grupo de amigos'; $lang->msg_email_not_exists = "Email address doesn't exists"; @@ -134,9 +109,6 @@ $lang->msg_success_authed = 'Esto no es válido solicitud de autenticación.
Por favor, inténtelo encontrar información de la cuenta o póngase en contacto con el administrador.'; $lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.'; - $lang->msg_no_message = 'No hay mensajes'; - $lang->message_received = 'Usted ha recibido un mensaje'; - $lang->msg_new_member = 'Agregar usuario'; $lang->msg_update_member = 'Modificar información del usuario'; $lang->msg_leave_member = 'Dejar de ser usuario'; @@ -150,10 +122,6 @@ $lang->msg_signup_disabled = 'Usted no puede ser registrado'; $lang->msg_already_logged = 'Usted ya ha sido registrado'; $lang->msg_not_logged = 'Por favor conectese primero'; - $lang->msg_title_is_null = 'Por favor ingresar el título de la nota'; - $lang->msg_content_is_null = 'Por favor ingresar el contenido'; - $lang->msg_allow_message_to_friend = "Falló el envío por permitir sólo mensajes de sus amigos"; - $lang->msg_disallow_message = 'Falló el envío por ser usuario rechazado para recibir mensajes'; $lang->msg_insert_group_name = 'Por favor ingresar el nombre del grupo'; $lang->msg_check_group = 'Introduce nombre de grupo'; @@ -175,7 +143,6 @@ $lang->about_blog_url = 'Ingresar su blog, si es que lo tiene'; $lang->about_birthday = 'Ingresar su fecha de nacimiento'; $lang->about_allow_mailing = "Si usted no se ha registrado el envío de email, usted no podrá recibir el email del grupo"; - $lang->about_allow_message = 'Usted puede decidir la recepción del mensaje'; $lang->about_denied = 'Si selecciona esta opción prohibirá el uso del ID'; $lang->about_is_admin = 'Si selecciona esta opción para obtener la atribución del administrador superior'; $lang->about_description = "Nota del administrador acerca de los usuarios"; diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index ef542bf92..87bf24b48 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -21,12 +21,6 @@ $lang->invalid_user_id= '存在しないユーザIDです。'; $lang->invalid_password = '無効なパスワードです。'; $lang->allow_mailing = 'メーリングリスト'; - $lang->allow_message = 'メッセージの受信'; - $lang->allow_message_type = array( - 'Y' => '全て受信', - 'N' => '全て受信しない', - 'F' => '友達からのみ受信する', - ); $lang->denied = '使用中止'; $lang->is_admin = '最高管理権限'; $lang->group = '所属グループ'; @@ -55,10 +49,6 @@ $lang->redirect_url = '加入後表示するページ'; $lang->agreement = '会員加入規約'; $lang->accept_agreement = '規約に同意する'; - $lang->sender = '送信者'; - $lang->receiver = '受信者'; - $lang->friend_group = '友達グループ'; - $lang->default_friend_group = 'グループ未指定'; $lang->member_info = '会員情報'; $lang->current_password = '現在のパスワード'; $lang->openid = 'OpenID'; @@ -80,14 +70,6 @@ 'extra_vars' => '拡張変数', ); - $lang->message_box = array( - 'R' => 'メッセージ受信ボックス', - 'S' => 'メッセージ送信ボックス', - 'T' => '保存ボックス', - ); - - $lang->readed_date = "開封時間"; - $lang->cmd_login = 'ログイン'; $lang->cmd_logout = 'ログアウト'; $lang->cmd_signup = '会員加入'; @@ -107,14 +89,6 @@ $lang->cmd_view_scrapped_document = 'スクラップ表示'; $lang->cmd_view_saved_document = '保存ドキュメント表示'; $lang->cmd_send_email = 'メール送信'; - $lang->cmd_send_message = 'メッセージ送信'; - $lang->cmd_reply_message = 'メッセージ返信'; - $lang->cmd_view_friend = '友達表示'; - $lang->cmd_add_friend = '友達登録'; - $lang->cmd_view_message_box = 'メッセージ表示'; - $lang->cmd_store = "保存"; - $lang->cmd_add_friend_group = '友達グループ追加'; - $lang->cmd_rename_friend_group = '友達グループ名変更'; $lang->msg_email_not_exists = "メールアドレスがありません。"; @@ -135,9 +109,6 @@ $lang->msg_success_authed = '認証が正常に行われ、ログインできました。\n必ず認証メールに記載されたパスワードを利用してお好みのパスワードに変更してください。.'; $lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.'; - $lang->msg_no_message = 'メッセージがありません。'; - $lang->message_received = 'メッセージが届きました。'; - $lang->msg_new_member = '会員追加'; $lang->msg_update_member = '会員情報修正'; $lang->msg_leave_member = '会員脱会'; @@ -151,10 +122,6 @@ $lang->msg_signup_disabled = '会員に加入することができません。'; $lang->msg_already_logged = '既に会員に加入されています。'; $lang->msg_not_logged = 'ログインしていません。'; - $lang->msg_title_is_null = 'メッセージのタイトルを入力してください。'; - $lang->msg_content_is_null = '内容を入力してください。'; - $lang->msg_allow_message_to_friend = '友達からのみメッセージを受信できるように設定したユーザであるため、送信できませんでした。'; - $lang->msg_disallow_message = 'メッセージの受信を拒否している受信者であるため、送信できませんでした。'; $lang->msg_insert_group_name = 'グループ名を入力してください。'; $lang->msg_check_group = 'グループを選択してください。'; @@ -177,7 +144,6 @@ $lang->about_blog_url = '運用しているブログがあれば入力してください。'; $lang->about_birthday = '生年月日を入力してください。'; $lang->about_allow_mailing = 'メーリングリストにチェックされていない場合は、全体メールの送信時にメールを受け取りません。'; - $lang->about_allow_message = 'メッセージを受信するかを設定します。'; $lang->about_denied = 'チェックするとユーザIDを使用できないようにします。'; $lang->about_is_admin = 'チェックすると最高管理者権限が取得できます。'; $lang->about_description = '会員に対する管理者のメモ帳です。'; diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 02e3a59b0..0908b9712 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -21,12 +21,6 @@ $lang->invalid_user_id= '존재하지 않는 사용자 아이디입니다'; $lang->invalid_password = '잘못된 비밀번호입니다'; $lang->allow_mailing = '메일링 가입'; - $lang->allow_message = '쪽지 수신 허용'; - $lang->allow_message_type = array( - 'Y' => '전체 수신', - 'N' => '거부', - 'F' => '친구만 허용', - ); $lang->denied = '사용중지'; $lang->is_admin = '최고관리 권한'; $lang->group = '소속 그룹'; @@ -55,10 +49,6 @@ $lang->redirect_url = '회원 가입후 이동할 페이지'; $lang->agreement = '회원 가입 약관'; $lang->accept_agreement = '약관동의'; - $lang->sender = '보낸이'; - $lang->receiver = '받는이'; - $lang->friend_group = '친구 그룹'; - $lang->default_friend_group = '그룹 미지정'; $lang->member_info = '회원 정보'; $lang->current_password = '현재 비밀번호'; $lang->openid = 'OpenID'; @@ -80,14 +70,6 @@ 'extra_vars' => '확장변수', ); - $lang->message_box = array( - 'R' => '받은 쪽지함', - 'S' => '보낸 쪽지함', - 'T' => '보관함', - ); - - $lang->readed_date = "읽은 시간"; - $lang->cmd_login = '로그인'; $lang->cmd_logout = '로그아웃'; $lang->cmd_signup = '회원 가입'; @@ -107,20 +89,12 @@ $lang->cmd_view_scrapped_document = '스크랩 보기'; $lang->cmd_view_saved_document = '저장함 보기'; $lang->cmd_send_email = '메일 보내기'; - $lang->cmd_send_message = '쪽지 보내기'; - $lang->cmd_reply_message = '쪽지 답장'; - $lang->cmd_view_friend = '친구 보기'; - $lang->cmd_add_friend = '친구 등록'; - $lang->cmd_view_message_box = '쪽지함 보기'; - $lang->cmd_store = "보관"; - $lang->cmd_add_friend_group = '친구 그룹 추가'; - $lang->cmd_rename_friend_group = '친구 그룹 이름 변경'; $lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다'; $lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다'; - $lang->msg_cart_is_null = '대상을 선택해주세요'; + $lang->msg_cart_is_null = '대상을 선택해주세요'; $lang->msg_checked_file_is_deleted = '%d개의 첨부파일이 삭제되었습니다'; $lang->msg_find_account_title = '아이디/ 비밀번호 정보입니다'; @@ -135,9 +109,6 @@ $lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다.\n꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.'; $lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.'; - $lang->msg_no_message = '쪽지가 없습니다'; - $lang->message_received = '쪽지가 왔습니다'; - $lang->msg_new_member = '회원 추가'; $lang->msg_update_member = '회원 정보 수정'; $lang->msg_leave_member = '회원 탈퇴'; @@ -151,10 +122,6 @@ $lang->msg_signup_disabled = '회원 가입을 하실 수 없습니다'; $lang->msg_already_logged = '이미 회원 가입을 하신 상태입니다'; $lang->msg_not_logged = '로그인을 하지 않으셨습니다'; - $lang->msg_title_is_null = '쪽지 제목을 입력해주세요'; - $lang->msg_content_is_null = '내용을 입력해주세요'; - $lang->msg_allow_message_to_friend = '친구에게만 쪽지 수신을 허용한 사용자라서 쪽지 발송을 하지 못했습니다'; - $lang->msg_disallow_message = '쪽지 수신을 거부한 사용자라서 쪽지 발송을 하지 못했습니다'; $lang->msg_insert_group_name = '그룹명을 입력해 주세요'; $lang->msg_check_group = '그룹을 선택해 주세요'; @@ -177,7 +144,6 @@ $lang->about_blog_url = '운영하는 블로그가 있을 경우 입력해주세요'; $lang->about_birthday = '생년월일을 입력해주세요'; $lang->about_allow_mailing = '메일링 가입이 체크되지 않으면 단체메일 발송시 메일을 받지 않습니다'; - $lang->about_allow_message = '쪽지 수신 여부를 결정할 수 있습니다'; $lang->about_denied = '체크시 아이디를 사용할 수 없도록 합니다'; $lang->about_is_admin = '체크시 최고 관리자 권한을 가지게 됩니다'; $lang->about_description = '회원에 대한 관리자 메모입니다'; diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index 462969f6f..9f817ef3a 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -21,12 +21,6 @@ $lang->invalid_user_id= "Указанный ID не существует"; $lang->invalid_password = 'Неверный пароль'; $lang->allow_mailing = 'Присоединиться к списку рассылки'; - $lang->allow_message = 'Разрешить прием сообщений'; - $lang->allow_message_type = array( - 'Y' => 'Принимать все', - 'N' => 'Отклонять все', - 'F' => 'Только друзья', - ); $lang->denied = 'Отказано'; $lang->is_admin = 'Суперадминистративные права'; $lang->group = 'Присвоенная группа'; @@ -54,10 +48,6 @@ $lang->redirect_url = 'URL после регистрации'; $lang->agreement = 'Пользовательское соглашение о регистрации'; $lang->accept_agreement = 'Согласен'; - $lang->sender = 'Отправитель'; - $lang->receiver = 'Получатель'; - $lang->friend_group = 'Группа друзей'; - $lang->default_friend_group = 'Неприсвоенная группа'; $lang->member_info = 'Пользовательская информация'; $lang->current_password = 'Текущий пароль'; $lang->openid = 'OpenID'; @@ -78,13 +68,6 @@ 'extra_vars' => 'Экстра перем.', ); - $lang->message_box = array( - 'R' => 'Принятые', - 'S' => 'Отправленные', - 'T' => 'Почтовый ящик', - ); - - $lang->readed_date = "Дата прочтения"; $lang->cmd_login = 'Войти'; $lang->cmd_logout = 'Выйти'; @@ -105,14 +88,6 @@ $lang->cmd_view_scrapped_document = 'Черновики'; $lang->cmd_view_saved_document = 'Просмотреть сохраненные статьи'; $lang->cmd_send_email = 'Отправить почту'; - $lang->cmd_send_message = 'Отправить сообщение'; - $lang->cmd_reply_message = 'Ответить'; - $lang->cmd_view_friend = 'Дзузья'; - $lang->cmd_add_friend = 'Сделать другом'; - $lang->cmd_view_message_box = 'Ящик сообщений'; - $lang->cmd_store = "Сохранить"; - $lang->cmd_add_friend_group = 'Добавить группу друзей'; - $lang->cmd_rename_friend_group = 'Изменить имя группы друзей'; $lang->msg_email_not_exists = "Email адрес не существует"; @@ -133,8 +108,6 @@ $lang->msg_success_authed = 'Ваш аккаунт был успешно аутентифицирован.\nВход произведен. Пожалуйста, измените пароль на Ваш собственный.'; $lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.'; - $lang->msg_no_message = 'Нет сообщений'; - $lang->message_received = 'Новое сообщение'; $lang->msg_new_member = 'Добавить пользователя'; $lang->msg_update_member = 'Изменить информацию пользователя'; @@ -149,10 +122,6 @@ $lang->msg_signup_disabled = 'Вы не можете зарегистрироваться'; $lang->msg_already_logged = 'Вы уже зарегистрированы'; $lang->msg_not_logged = 'Пожалуйста, сначала войдите'; - $lang->msg_title_is_null = 'Пожалуйста, введите тему сообщения'; - $lang->msg_content_is_null = 'Пожалуйста, введите содержание'; - $lang->msg_allow_message_to_friend = "Отправка провалена, поскольку получатель принимает сообщения только от друзей"; - $lang->msg_disallow_message = 'Отправка провалена, поскольку получатель отклоняет прием сообщений'; $lang->msg_insert_group_name = 'Пожалуйста, введите имя группы'; $lang->msg_check_group = 'Введите имя группы'; @@ -174,7 +143,6 @@ $lang->about_blog_url = 'Пожалуйста, введите, если у Вас есть блог'; $lang->about_birthday = 'Пожалуйста, введите Вашу дату рождения'; $lang->about_allow_mailing = "Если Вы не присоединитесь к списку рассылки, Вы не сможете получать почтовые сообщения, направленные Вашей группе"; - $lang->about_allow_message = 'Вы можете определить политику принятия сообщений'; $lang->about_denied = 'Запретить ID'; $lang->about_is_admin = 'Наделить Суперадминистративными правами'; $lang->about_description = "Заметки администратора о пользователях"; diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index 23d3a637e..4814d6673 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -21,12 +21,6 @@ $lang->invalid_user_id= '该用户名不存在,请检查您的输入是否有误!'; $lang->invalid_password = '您的密码不正确!'; $lang->allow_mailing = '接收邮件'; - $lang->allow_message = '允许接收短消息'; - $lang->allow_message_type = array( - 'Y' => '全部接收', - 'N' => '拒收', - 'F' => '只允许好友', - ); $lang->denied = '禁止使用'; $lang->is_admin = '最高管理权限'; $lang->group = '用户组'; @@ -55,10 +49,6 @@ $lang->redirect_url = '注册会员后页面转向'; $lang->agreement = '会员注册条款'; $lang->accept_agreement = '同意条款'; - $lang->sender = '寄件人'; - $lang->receiver = '收件人'; - $lang->friend_group = '好友组'; - $lang->default_friend_group = '组未指定'; $lang->member_info = '会员信息'; $lang->current_password = '当前密码'; $lang->openid = 'OpenID'; @@ -80,13 +70,6 @@ 'extra_vars' => '扩展变数', ); - $lang->message_box = array( - 'R' => '收件箱', - 'S' => '发件箱', - 'T' => '保管箱', - ); - - $lang->readed_date = "阅读日期"; $lang->cmd_login = '登录'; $lang->cmd_logout = '退出'; @@ -107,14 +90,6 @@ $lang->cmd_view_scrapped_document = '查看收藏'; $lang->cmd_view_saved_document = '查看临时保存箱'; $lang->cmd_send_email = '发送邮件'; - $lang->cmd_send_message = '发送短消息'; - $lang->cmd_reply_message = '回复短消息'; - $lang->cmd_view_friend = '查看好友'; - $lang->cmd_add_friend = '加为好友'; - $lang->cmd_view_message_box = '查看短信箱'; - $lang->cmd_store = "保管"; - $lang->cmd_add_friend_group = '添加好友组'; - $lang->cmd_rename_friend_group = '修改好友组名称'; $lang->msg_email_not_exists = "没有找到您输入的Email地址。"; @@ -135,9 +110,6 @@ $lang->msg_success_authed = '新的注册信息已得到认证。请用邮件中的新密码修改您要想使用的密码。'; $lang->msg_success_confirmed = '注册信息已成功激活!'; - $lang->msg_no_message = '没有短消息。'; - $lang->message_received = '您有新消息。'; - $lang->msg_new_member = '会员注册'; $lang->msg_update_member = '修改会员信息'; $lang->msg_leave_member = '注销会员'; @@ -151,10 +123,6 @@ $lang->msg_signup_disabled = '不能注册会员'; $lang->msg_already_logged = '您是注册会员。'; $lang->msg_not_logged = '您还没有登录。'; - $lang->msg_title_is_null = '请输入短消息标题。'; - $lang->msg_content_is_null = '请输入内容。'; - $lang->msg_allow_message_to_friend = '因其为只允许接收好友短消息的用户,所以不能发送短消息。'; - $lang->msg_disallow_message = '因其为拒绝接收短消息的用户,所以不能发送短消息。'; $lang->msg_insert_group_name = '请输入组名称'; $lang->msg_check_group = '请选择组'; @@ -177,7 +145,6 @@ $lang->about_blog_url = '请输入博客地址。'; $lang->about_birthday = '请输入您的出生年月日。'; $lang->about_allow_mailing = '如不选择此项,以后不能接收站内发送的重要信息。'; - $lang->about_allow_message = '可以选择短消息接收与否。'; $lang->about_denied = '选择时不能使用此用户名。'; $lang->about_is_admin = '选择时将具有最高管理权限。'; $lang->about_description = '管理员对会员的笔记。'; diff --git a/modules/member/member.admin.view.php b/modules/member/member.admin.view.php index bf03a1cd9..e84a1d3ee 100644 --- a/modules/member/member.admin.view.php +++ b/modules/member/member.admin.view.php @@ -77,19 +77,19 @@ if(!$config->profile_image_max_height) $config->profile_image_max_height = 80; if(!$config->skin) $config->skin = "default"; if(!$config->editor_skin) $config->editor_skin = "default"; - - // 에디터 스킨 목록을 구함 - $editor_skin_list = FileHandler::readDir('./modules/editor/skins'); - Context::set('editor_skin_list', $editor_skin_list); - Context::set('config',$config); // 회원 관리 모듈의 스킨 목록을 구함 $skin_list = $oModuleModel->getSkins($this->module_path); Context::set('skin_list', $skin_list); - // 에디터를 받음 + // 에디터 모델 객체 생성 $oEditorModel = &getModel('editor'); + + // 에디터 스킨 목록을 구함 + Context::set('editor_skin_list', $oEditorModel->getEditorSkinList()); + + // 에디터를 받음 $option->primary_key_name = 'temp_srl'; $option->content_key_name = 'agreement'; $option->allow_fileupload = false; diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 560882f67..55e1964ae 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -50,14 +50,6 @@ $oModuleController->insertActionForward('member', 'view', 'dispMemberSavedDocument'); $oModuleController->insertActionForward('member', 'view', 'dispMemberFindAccount'); - $oModuleController->insertActionForward('member', 'view', 'dispMemberMessages'); - $oModuleController->insertActionForward('member', 'view', 'dispMemberSendMessage'); - $oModuleController->insertActionForward('member', 'view', 'dispMemberNewMessage'); - - $oModuleController->insertActionForward('member', 'view', 'dispMemberFriend'); - $oModuleController->insertActionForward('member', 'view', 'dispMemberAddFriend'); - $oModuleController->insertActionForward('member', 'view', 'dispMemberAddFriendGroup'); - $oModuleController->insertActionForward('member', 'view', 'dispMemberAdminList'); $oModuleController->insertActionForward('member', 'view', 'dispMemberAdminConfig'); $oModuleController->insertActionForward('member', 'view', 'dispMemberAdminInsert'); @@ -151,7 +143,6 @@ FileHandler::makeDir('./files/member_extra_info/image_mark'); FileHandler::makeDir('./files/member_extra_info/profile_image'); FileHandler::makeDir('./files/member_extra_info/signature'); - FileHandler::makeDir('./files/member_extra_info/new_message_flags'); return new Object(); } @@ -222,7 +213,6 @@ FileHandler::makeDir('./files/member_extra_info/image_name'); FileHandler::makeDir('./files/member_extra_info/image_mark'); FileHandler::makeDir('./files/member_extra_info/signature'); - FileHandler::makeDir('./files/member_extra_info/new_message_flags'); FileHandler::makeDir('./files/member_extra_info/profile_image'); // DB 필드 추가 diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 7a5ccde5a..28a40ce36 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -152,233 +152,6 @@ return $output; } - /** - * @brief 쪽지함 설정 변경 - **/ - function procMemberUpdateAllowMessage() { - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - - $args->allow_message = Context::get('allow_message'); - if(!in_array($args->allow_message, array('Y','N','F'))) $args->allow_message = 'Y'; - - $logged_info = Context::get('logged_info'); - $args->member_srl = $logged_info->member_srl; - - $output = executeQuery('member.updateAllowMessage', $args); - - return $output; - } - - /** - * @brief 쪽지 발송 - **/ - function procMemberSendMessage() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 검사 - $receiver_srl = Context::get('receiver_srl'); - if(!$receiver_srl) return new Object(-1, 'msg_not_exists_member'); - - $title = trim(Context::get('title')); - if(!$title) return new Object(-1, 'msg_title_is_null'); - - $content = trim(Context::get('content')); - if(!$content) return new Object(-1, 'msg_content_is_null'); - - $send_mail = Context::get('send_mail'); - if($send_mail != 'Y') $send_mail = 'N'; - - // 받을 회원이 있는지에 대한 검사 - $oMemberModel = &getModel('member'); - $receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); - if($receiver_member_info->member_srl != $receiver_srl) return new Object(-1, 'msg_not_exists_member'); - - // 받을 회원의 쪽지 수신여부 검사 (최고관리자이면 패스) - if($logged_info->is_admin != 'Y') { - if($receiver_member_info->allow_message == 'F') { - if(!$oMemberModel->isFriend($receiver_member_info->member_srl)) return new object(-1, 'msg_allow_message_to_friend'); - } elseif($receiver_member_info->allow_messge == 'N') { - return new object(-1, 'msg_disallow_message'); - } - } - - // 쪽지 발송 - $output = $this->sendMessage($logged_info->member_srl, $receiver_srl, $title, $content); - - // 메일로도 발송 - if($output->toBool() && $send_mail == 'Y') { - $view_url = Context::getRequestUri(); - $content = sprintf("%s

From : %s",$content, $view_url, $view_url); - $oMail = new Mail(); - $oMail->setTitle($title); - $oMail->setContent($content); - $oMail->setSender($logged_info->user_name, $logged_info->email_address); - $oMail->setReceiptor($receiver_member_info->user_name, $receiver_member_info->email_address); - $oMail->send(); - } - - return $output; - } - - function sendMessage($sender_srl, $receiver_srl, $title, $content, $sender_log = true) { - $content = removeHackTag($content); - - // 보내는 사용자의 쪽지함에 넣을 쪽지 - $sender_args->sender_srl = $sender_srl; - $sender_args->receiver_srl = $receiver_srl; - $sender_args->message_type = 'S'; - $sender_args->title = $title; - $sender_args->content = $content; - $sender_args->readed = 'N'; - $sender_args->regdate = date("YmdHis"); - $sender_args->related_srl = getNextSequence(); - $sender_args->message_srl = getNextSequence(); - $sender_args->list_order = getNextSequence()*-1; - - // 받는 회원의 쪽지함에 넣을 쪽지 - $receiver_args->message_srl = $sender_args->related_srl; - $receiver_args->related_srl = 0; - $receiver_args->list_order = $sender_args->related_srl*-1; - $receiver_args->sender_srl = $sender_srl; - if(!$receiver_args->sender_srl) $receiver_args->sender_srl = $receiver_srl; - $receiver_args->receiver_srl = $receiver_srl; - $receiver_args->message_type = 'R'; - $receiver_args->title = $title; - $receiver_args->content = $content; - $receiver_args->readed = 'N'; - $receiver_args->regdate = date("YmdHis"); - - $oDB = &DB::getInstance(); - $oDB->begin(); - - // 발송하는 회원의 쪽지함에 넣을 쪽지 - if($sender_srl && $sender_log) { - $output = executeQuery('member.sendMessage', $sender_args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - } - - // 받을 회원의 쪽지함에 넣을 쪽지 - $output = executeQuery('member.sendMessage', $receiver_args); - if(!$output->toBool()) { - $oDB->rollback(); - return $output; - } - - // 받는 회원의 쪽지 발송 플래그 생성 (파일로 생성) - $flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($receiver_srl); - FileHandler::makeDir($flag_path); - $flag_file = sprintf('%s%s', $flag_path, $receiver_srl); - FileHandler::writeFile($flag_file,'1'); - - $oDB->commit(); - - return new Object(0,'success_sended'); - } - - /** - * @brief 특정 쪽지를 보관함으로 보냄 - **/ - function procMemberStoreMessage() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 체크 - $message_srl = Context::get('message_srl'); - if(!$message_srl) return new Object(-1,'msg_invalid_request'); - - // 쪽지를 가져옴 - $oMemberModel = &getModel('member'); - $message = $oMemberModel->getSelectedMessage($message_srl); - if(!$message || $message->message_type != 'R') return new Object(-1,'msg_invalid_request'); - - $args->message_srl = $message_srl; - $args->receiver_srl = $logged_info->member_srl; - $output = executeQuery('member.setMessageStored', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_registed'); - } - - /** - * @brief 쪽지 삭제 - **/ - function procMemberDeleteMessage() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - $member_srl = $logged_info->member_srl; - - // 변수 체크 - $message_srl = Context::get('message_srl'); - if(!$message_srl) return new Object(-1,'msg_invalid_request'); - - // 쪽지를 가져옴 - $oMemberModel = &getModel('member'); - $message = $oMemberModel->getSelectedMessage($message_srl); - if(!$message) return new Object(-1,'msg_invalid_request'); - - // 발송인+type=S or 수신인+type=R 검사 - if($message->sender_srl == $member_srl && $message->message_type == 'S') { - if(!$message_srl) return new Object(-1, 'msg_invalid_request'); - } elseif($message->receiver_srl == $member_srl && $message->message_type == 'R') { - if(!$message_srl) return new Object(-1, 'msg_invalid_request'); - } - - // 삭제 - $args->message_srl = $message_srl; - $output = executeQuery('member.deleteMessage', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_deleted'); - } - - /** - * @brief 선택된 다수의 쪽지 삭제 - **/ - function procMemberDeleteMessages() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - $member_srl = $logged_info->member_srl; - - // 변수 체크 - $message_srl_list = trim(Context::get('message_srl_list')); - if(!$message_srl_list) return new Object(-1, 'msg_cart_is_null'); - - $message_srl_list = explode('|@|', $message_srl_list); - if(!count($message_srl_list)) return new Object(-1, 'msg_cart_is_null'); - - $message_type = Context::get('message_type'); - if(!$message_type || !in_array($message_type, array('R','S','T'))) return new Object(-1, 'msg_invalid_request'); - - $message_count = count($message_srl_list); - $target = array(); - for($i=0;$i<$message_count;$i++) { - $message_srl = (int)trim($message_srl_list[$i]); - if(!$message_srl) continue; - $target[] = $message_srl; - } - if(!count($target)) return new Object(-1,'msg_cart_is_null'); - - // 삭제 - $args->message_srls = implode(',',$target); - $args->message_type = $message_type; - - if($message_type == 'S') $args->sender_srl = $member_srl; - else $args->receiver_srl = $member_srl; - - $output = executeQuery('member.deleteMessages', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_deleted'); - } - /** * @brief 스크랩 기능 **/ @@ -493,175 +266,6 @@ $oDocumentController->deleteDocument($document_srl, true); } - /** - * @brief 친구 추가 - **/ - function procMemberAddFriend() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - $target_srl = (int)trim(Context::get('target_srl')); - if(!$target_srl) return new Object(-1,'msg_invalid_request'); - - // 변수 정리 - $args->friend_srl = getNextSequence(); - $args->list_order = $args->friend_srl * -1; - $args->friend_group_srl = Context::get('friend_group_srl'); - $args->member_srl = $logged_info->member_srl; - $args->target_srl = $target_srl; - $output = executeQuery('member.addFriend', $args); - if(!$output->toBool()) return $output; - - $this->add('member_srl', $target_srl); - $this->setMessage('success_registed'); - } - - /** - * @brief 등록된 친구의 그룹 이동 - **/ - function procMemberMoveFriend() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 체크 - $friend_srl_list = trim(Context::get('friend_srl_list')); - if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null'); - - $friend_srl_list = explode('|@|', $friend_srl_list); - if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null'); - - $friend_count = count($friend_srl_list); - $target = array(); - for($i=0;$i<$friend_count;$i++) { - $friend_srl = (int)trim($friend_srl_list[$i]); - if(!$friend_srl) continue; - $target[] = $friend_srl; - } - if(!count($target)) return new Object(-1,'msg_cart_is_null'); - - // 변수 정리 - $args->friend_srls = implode(',',$target); - $args->member_srl = $logged_info->member_srl; - $args->friend_group_srl = Context::get('target_friend_group_srl'); - - $output = executeQuery('member.moveFriend', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_moved'); - } - - /** - * @brief 친구 삭제 - **/ - function procMemberDeleteFriend() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - $member_srl = $logged_info->member_srl; - - // 변수 체크 - $friend_srl_list = trim(Context::get('friend_srl_list')); - if(!$friend_srl_list) return new Object(-1, 'msg_cart_is_null'); - - $friend_srl_list = explode('|@|', $friend_srl_list); - if(!count($friend_srl_list)) return new Object(-1, 'msg_cart_is_null'); - - $friend_count = count($friend_srl_list); - $target = array(); - for($i=0;$i<$friend_count;$i++) { - $friend_srl = (int)trim($friend_srl_list[$i]); - if(!$friend_srl) continue; - $target[] = $friend_srl; - } - if(!count($target)) return new Object(-1,'msg_cart_is_null'); - - // 삭제 - $args->friend_srls = implode(',',$target); - $args->member_srl = $logged_info->member_srl; - $output = executeQuery('member.deleteFriend', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_deleted'); - } - - /** - * @brief 친구 그룹 추가 - **/ - function procMemberAddFriendGroup() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 정리 - $args->friend_group_srl = trim(Context::get('friend_group_srl')); - $args->member_srl = $logged_info->member_srl; - $args->title = Context::get('title'); - if(!$args->title) return new Object(-1, 'msg_invalid_request'); - - // friend_group_srl이 있으면 수정 - if($args->friend_group_srl) { - $output = executeQuery('member.renameFriendGroup', $args); - $msg_code = 'success_updated'; - - // 아니면 입력 - } else { - $output = executeQuery('member.addFriendGroup', $args); - $msg_code = 'success_registed'; - } - - if(!$output->toBool()) return $output; - - $this->setMessage($msg_code); - } - - /** - * @brief 친구 그룹 이름 변경 - **/ - function procMemberRenameFriendGroup() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 정리 - $args->friend_group_srl= Context::get('friend_group_srl'); - $args->member_srl = $logged_info->member_srl; - $args->title = Context::get('title'); - if(!$args->title) return new Object(-1, 'msg_invalid_request'); - - $output = executeQuery('member.renameFriendGroup', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_updated'); - } - - /** - * @brief 친구 그룹 삭제 - **/ - function procMemberDeleteFriendGroup() { - // 로그인 정보 체크 - if(!Context::get('is_logged')) return new Object(-1, 'msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 정리 - $args->friend_group_srl = Context::get('friend_group_srl'); - $args->member_srl = $logged_info->member_srl; - $output = executeQuery('member.deleteFriendGroup', $args); - if(!$output->toBool()) return $output; - - $this->setMessage('success_deleted'); - } - - /** - * @brief 특정 쪽지의 상태를 읽은 상태로 변경 - **/ - function setMessageReaded($message_srl) { - $args->message_srl = $message_srl; - $args->related_srl = $message_srl; - return executeQuery('member.setMessageReaded', $args); - } - /** * @brief 회원 가입시 특정 항목들에 대한 값 체크 **/ diff --git a/modules/member/member.model.php b/modules/member/member.model.php index e107e1a28..006a033d0 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -496,163 +496,6 @@ return $GLOBALS['__member_info__']['signature'][$member_srl]; } - /** - * @brief 쪽지 내용을 가져옴 - **/ - function getSelectedMessage($message_srl) { - $logged_info = Context::get('logged_info'); - - $args->message_srl = $message_srl; - $output = executeQuery('member.getMessage',$args); - $message = $output->data; - if(!$message) return ; - - // 보낸 쪽지일 경우 받는 사람 정보를 구함 - if($message->sender_srl == $logged_info->member_srl && $message->message_type == 'S') $member_info = $this->getMemberInfoByMemberSrl($message->receiver_srl); - - // 보관/받은 쪽지일 경우 보낸 사람 정보를 구함 - else $member_info = $this->getMemberInfoByMemberSrl($message->sender_srl); - - if($member_info) { - foreach($member_info as $key => $val) { - if($key != 'regdate') $message->{$key} = $val; - } - } - - // 받은 쪽지이고 아직 읽지 않았을 경우 읽은 상태로 변경 - if($message->message_type == 'R' && $message->readed != 'Y') { - $oMemberController = &getController('member'); - $oMemberController->setMessageReaded($message_srl); - } - - - return $message; - } - - /** - * @brief 새 쪽지를 가져옴 - **/ - function getNewMessage() { - $logged_info = Context::get('logged_info'); - $args->receiver_srl = $logged_info->member_srl; - $args->readed = 'N'; - - $output = executeQuery('member.getNewMessage', $args); - if(!count($output->data)) return; - $message = array_pop($output->data); - - $oMemberController = &getController('member'); - $oMemberController->setMessageReaded($message->message_srl); - - return $message; - } - - /** - * @brief 쪽지 목록 가져오기 - * type = R : 받은 쪽지 - * type = S : 보낸 쪽지 - * type = T : 보관함 - **/ - function getMessages($message_type = "R") { - $logged_info = Context::get('logged_info'); - - switch($message_type) { - case 'R' : - $args->member_srl = $logged_info->member_srl; - $args->message_type = 'R'; - $query_id = 'member.getReceivedMessages'; - break; - case 'T' : - $args->member_srl = $logged_info->member_srl; - $args->message_type = 'T'; - $query_id = 'member.getStoredMessages'; - break; - default : - $args->member_srl = $logged_info->member_srl; - $args->message_type = 'S'; - $query_id = 'member.getSendedMessages'; - break; - - } - - // 기타 변수들 정리 - $args->sort_index = 'message.list_order'; - $args->page = Context::get('page'); - $args->list_count = 20; - $args->page_count = 10; - return executeQuery($query_id, $args); - } - - /** - * @brief 친구 목록 가져오기 - **/ - function getFriends($friend_group_srl = 0) { - $logged_info = Context::get('logged_info'); - - $args->friend_group_srl = $friend_group_srl; - $args->member_srl = $logged_info->member_srl; - - // 기타 변수들 정리 - $args->page = Context::get('page'); - $args->sort_index = 'friend.list_order'; - $args->list_count = 10; - $args->page_count = 10; - return executeQuery('member.getFriends', $args); - } - - /** - * @brief 이미 친구로 등록되었는지 검사 - **/ - function isAddedFriend($member_srl) { - $logged_info = Context::get('logged_info'); - - $args->member_srl = $logged_info->member_srl; - $args->target_srl = $member_srl; - $output = executeQuery('member.isAddedFriend', $args); - return $output->data->count; - } - - /** - * @brief 특정 친구 그룹 가져오기 - **/ - function getFriendGroupInfo($friend_group_srl) { - $logged_info = Context::get('logged_info'); - - $args->member_srl = $logged_info->member_srl; - $args->friend_group_srl = $friend_group_srl; - - $output = executeQuery('member.getFriendGroup', $args); - return $output->data; - } - - /** - * @brief 그룹 목록 가져오기 - **/ - function getFriendGroups() { - $logged_info = Context::get('logged_info'); - $args->member_srl = $logged_info->member_srl; - - $output = executeQuery('member.getFriendGroups', $args); - $group_list = $output->data; - if(!$group_list) return; - - if(!is_array($group_list)) $group_list = array($group_list); - return $group_list; - } - - /** - * @brief 특정 회원의 친구 목록에 포함되어 있는지를 확인 - **/ - function isFriend($target_srl) { - $logged_info = Context::get('logged_info'); - - $args->member_srl = $target_srl; - $args->target_srl = $logged_info->member_srl; - $output = executeQuery('member.isAddedFriend', $args); - if($output->data->count) return true; - return false; - } - /** * @brief 입력된 plain text 비밀번호와 DB에 저장된 비밀번호와의 비교 **/ diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 09e222014..acb890d87 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -271,43 +271,6 @@ $this->setTemplateFile('logout'); } - /** - * @brief 쪽지함 출력 - **/ - function dispMemberMessages() { - // 로그인이 되어 있지 않으면 오류 표시 - if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 변수 설정 - $message_srl = Context::get('message_srl'); - $message_type = Context::get('message_type'); - if(!in_array($message_type, array('R','S','T'))) { - $message_type = 'R'; - Context::set('message_type', $message_type); - } - - $oMemberModel = &getModel('member'); - - // message_srl이 있으면 내용 추출 - if($message_srl) { - $message = $oMemberModel->getSelectedMessage($message_srl); - if($message->message_srl == $message_srl && ($message->receiver_srl == $logged_info->member_srl || $message->sender_srl == $logged_info->member_srl) ) Context::set('message', $message); - } - - // 목록 추출 - $output = $oMemberModel->getMessages($message_type); - - // 템플릿에 쓰기 위해서 context::set - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('message_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - - $this->setTemplateFile('member_messages'); - } - /** * @brief 저장된 글 목록을 보여줌 **/ @@ -336,163 +299,6 @@ $this->setTemplateFile('saved_list_popup'); } - /** - * @brief 새 쪽지 보여줌 - **/ - function dispMemberNewMessage() { - $this->setLayoutFile('popup_layout'); - - // 로그인이 되어 있지 않으면 오류 표시 - if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); - $logged_info = Context::get('logged_info'); - - $oMemberModel = &getModel('member'); - - // 새 쪽지를 가져옴 - $message = $oMemberModel->getNewMessage(); - if($message) Context::set('message', $message); - - // 플래그 삭제 - $flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl); - $flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl); - @unlink($flag_file); - - $this->setTemplateFile('member_new_message'); - } - - /** - * @brief 쪽지 발송 출력 - **/ - function dispMemberSendMessage() { - $this->setLayoutFile("popup_layout"); - $oMemberModel = &getModel('member'); - - // 로그인이 되어 있지 않으면 오류 표시 - if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 쪽지 받을 사용자 정보 구함 - $receiver_srl = Context::get('receiver_srl'); - if(!$receiver_srl || $logged_info->member_srl == $receiver_srl) return $this->stop('msg_not_logged'); - - // 답글 쪽지일 경우 원본 메세지의 글번호를 구함 - $message_srl = Context::get('message_srl'); - if($message_srl) { - $source_message = $oMemberModel->getSelectedMessage($message_srl); - if($source_message->message_srl == $message_srl && $source_message->sender_srl == $receiver_srl) { - $source_message->title = "[re] ".$source_message->title; - $source_message->content = "\r\n
\r\n
".trim($source_message->content)."
"; - Context::set('source_message', $source_message); - } - } - - $receiver_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); - Context::set('receiver_info', $receiver_info); - - // 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅 - $oEditorModel = &getModel('editor'); - $option->primary_key_name = 'receiver_srl'; - $option->content_key_name = 'content'; - $option->allow_fileupload = false; - $option->enable_autosave = false; - $option->enable_default_component = false; - $option->enable_component = false; - $option->resizable = false; - $option->disable_html = true; - $option->height = 300; - $option->skin = $this->member_config->editor_skin; - $editor = $oEditorModel->getEditor($logged_info->member_srl, $option); - Context::set('editor', $editor); - - $this->setTemplateFile('send_message'); - } - - /** - * @brief 친구 목록 보기 - **/ - function dispMemberFriend() { - // 로그인이 되어 있지 않으면 오류 표시 - if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); - - $oMemberModel = &getModel('member'); - - // 그룹 목록을 가져옴 - $tmp_group_list = $oMemberModel->getFriendGroups(); - $group_count = count($tmp_group_list); - for($i=0;$i<$group_count;$i++) $friend_group_list[$tmp_group_list[$i]->friend_group_srl] = $tmp_group_list[$i]; - Context::set('friend_group_list', $friend_group_list); - - // 친구 목록을 가져옴 - $friend_group_srl = Context::get('friend_group_srl'); - $output = $oMemberModel->getFriends($friend_group_srl); - $friend_count = count($output->data); - if($friend_count) { - foreach($output->data as $key => $val) { - $group_srl = $val->friend_group_srl; - $group_title = $friend_group_list[$group_srl]->title; - if(!$group_title) $group_title = Context::get('default_friend_group'); - $output->data[$key]->group_title = $group_title; - } - } - - // 템플릿에 쓰기 위해서 context::set - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('friend_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - - $this->setTemplateFile('friends_list'); - } - - /** - * @brief 친구 추가 - **/ - function dispMemberAddFriend() { - $this->setLayoutFile("popup_layout"); - - // 로그인이 되어 있지 않으면 오류 표시 - if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); - $logged_info = Context::get('logged_info'); - - $target_srl = Context::get('target_srl'); - if(!$target_srl) return $this->stop('msg_invalid_request'); - - // 대상 회원의 정보를 구함 - $oMemberModel = &getModel('member'); - $member_info = $oMemberModel->getMemberInfoByMemberSrl($target_srl); - if($member_info->member_srl != $target_srl) return $this->stop('msg_invalid_request'); - Context::set('target_info', $member_info); - - // 그룹의 목록을 구함 - $friend_group_list = $oMemberModel->getFriendGroups(); - Context::set('friend_group_list', $friend_group_list); - - $this->setTemplateFile('add_friend'); - } - - /** - * @brief 친구 그룹 추가 - **/ - function dispMemberAddFriendGroup() { - $this->setLayoutFile("popup_layout"); - - // 로그인이 되어 있지 않으면 오류 표시 - if(!Context::get('is_logged')) return $this->stop('msg_not_logged'); - $logged_info = Context::get('logged_info'); - - // 그룹 번호가 넘어오면 수정모드로.. - $friend_group_srl = Context::get('friend_group_srl'); - if($friend_group_srl) { - $oMemberModel = &getModel('member'); - $friend_group = $oMemberModel->getFriendGroupInfo($friend_group_srl); - if($friend_group->friend_group_srl == $friend_group_srl) Context::set('friend_group', $friend_group); - } - - - $this->setTemplateFile('add_friend_group'); - } - /** * @brief 아이디/ 비밀번호 찾기 기능 **/ diff --git a/modules/member/skins/default/filter/delete_checked_friend.xml b/modules/member/skins/default/filter/delete_checked_friend.xml deleted file mode 100644 index 7fda453f2..000000000 --- a/modules/member/skins/default/filter/delete_checked_friend.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/modules/member/skins/default/filter/delete_checked_message.xml b/modules/member/skins/default/filter/delete_checked_message.xml deleted file mode 100644 index 93c79a67c..000000000 --- a/modules/member/skins/default/filter/delete_checked_message.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/modules/member/skins/default/filter/delete_friend_group.xml b/modules/member/skins/default/filter/delete_friend_group.xml deleted file mode 100644 index b6246a07f..000000000 --- a/modules/member/skins/default/filter/delete_friend_group.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/modules/member/skins/default/filter/move_friend.xml b/modules/member/skins/default/filter/move_friend.xml deleted file mode 100644 index de31a8025..000000000 --- a/modules/member/skins/default/filter/move_friend.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/modules/member/skins/default/js/member.js b/modules/member/skins/default/js/member.js index 5ced64d67..4efd8d070 100644 --- a/modules/member/skins/default/js/member.js +++ b/modules/member/skins/default/js/member.js @@ -126,109 +126,6 @@ function doDeleteImageMark(member_srl) { procFilter(fo_obj, delete_image_mark); } - -/* 쪽지 발송 */ -function completeSendMessage(ret_obj) { - alert(ret_obj['message']); - window.close(); -} - -function doSendMessage(member_srl, message_srl) { - if(typeof(message_srl)=='undefined') message_srl = 0; - var url = current_url.setQuery('module','member').setQuery('act','dispMemberSendMessage').setQuery('receiver_srl',member_srl).setQuery('message_srl',message_srl); - popopen(url, 'sendMessage'); -} - -/* 쪽지 모두 선택 */ -function doCheckAll(obj, fo_id) { - var fo_obj = xGetElementById(fo_id); - for(var i=0; i Date: Sun, 1 Jun 2008 08:43:45 +0000 Subject: [PATCH 12/87] =?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@4227 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/communication/lang/en.lang.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/communication/lang/en.lang.php b/modules/communication/lang/en.lang.php index 8048c384e..8d488e1c5 100644 --- a/modules/communication/lang/en.lang.php +++ b/modules/communication/lang/en.lang.php @@ -6,7 +6,7 @@ **/ $lang->communication = 'Communication'; - $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + $lang->about_communication = 'This module performs communication functions such as messages or friends'; $lang->allow_message = 'Receive Messages'; $lang->allow_message_type = array( @@ -30,7 +30,7 @@ $lang->cmd_send_message = 'Send Message'; $lang->cmd_reply_message = 'Reply Message'; $lang->cmd_view_friend = 'Friends'; - $lang->cmd_add_friend = 'Add to Friends'; + $lang->cmd_add_friend = 'Add Friend'; $lang->cmd_view_message_box = 'Message Box'; $lang->cmd_store = "Save"; $lang->cmd_add_friend_group = 'Add Friend Group'; From bc963aa72f9015fdab4c964570c0d5c6685be77d Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 1 Jun 2008 09:11:11 +0000 Subject: [PATCH 13/87] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD=20=EB=B0=8F=20=EA=B8=B0=EC=A1=B4?= =?UTF-8?q?=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4228 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/communication/conf/info.xml | 3 +++ modules/editor/lang/en.lang.php | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/modules/communication/conf/info.xml b/modules/communication/conf/info.xml index d2c888b3c..d9491304f 100644 --- a/modules/communication/conf/info.xml +++ b/modules/communication/conf/info.xml @@ -1,8 +1,11 @@ 커뮤니케이션 + Communication 제로 + Zero 회원들간의 쪽지, 친구기능을 담당하는 모듈입니다. + This module is for managing message, friend functions. diff --git a/modules/editor/lang/en.lang.php b/modules/editor/lang/en.lang.php index a5412c3bc..4b728a488 100644 --- a/modules/editor/lang/en.lang.php +++ b/modules/editor/lang/en.lang.php @@ -16,7 +16,7 @@ $lang->component_grant = "Permission Setting"; $lang->about_component = "About component"; - $lang->about_component_grant = 'You may set the permission of using expanded components of editor.
(Everyone would have permission if nothing checked)'; + $lang->about_component_grant = 'Selected group(s) will be able to use expanded components of editor.
(Leave them blank if you want all groups to have permission)'; $lang->about_component_mid = "Editor components can select targets.
(All targets will be selected when nothing is selected)"; $lang->msg_component_is_not_founded = 'Cannot find editor component %s'; @@ -30,21 +30,21 @@ $lang->cmd_enable = "Active"; $lang->editor_skin = 'Editor Skin'; - $lang->upload_file_grant = 'Permission for uploading'; - $lang->enable_default_component_grant = 'Permission of using default components'; - $lang->enable_component_grant = 'Permission of using components'; - $lang->enable_html_grant = 'Permission of using HTML'; - $lang->enable_autosave = 'Use auto-save'; + $lang->upload_file_grant = 'Permission for Uploading'; + $lang->enable_default_component_grant = 'Permission for Default Components'; + $lang->enable_component_grant = 'Permission for Components'; + $lang->enable_html_grant = 'Permission for HTML'; + $lang->enable_autosave = 'Auto-Save'; $lang->height_resizable = 'Height Resizable'; $lang->editor_height = 'Height of Editor'; $lang->about_editor_skin = 'You may select the skin of editor.'; - $lang->about_upload_file_grant = 'You may set the permission of file attaching. (Everyone would have permission if nothing checked)'; - $lang->about_default_component_grant = 'You may set the permission of using default components of editor. (Everyone would have permission if nothing checked)'; + $lang->about_upload_file_grant = 'Selected group(s) will be able to upload files. (Leave them blank if you want all groups to have permission)'; + $lang->about_default_component_grant = 'Selected group(s) will be able to use default components of editor. (Leave them blank if you want all groups to have permission)'; $lang->about_editor_height = 'You may set the height of editor.'; - $lang->about_editor_height_resizable = 'Permit to resize the height of editor.'; - $lang->about_enable_html_grant = 'You may give the permission of using HTML'; - $lang->about_enable_autosave = 'You may enable the auto-save function while writing articles.'; + $lang->about_editor_height_resizable = 'You may decide whether height of editor can be resized.'; + $lang->about_enable_html_grant = 'Selected group(s) will be able to use HTML'; + $lang->about_enable_autosave = 'You may decide whether auto-save function will be used.'; $lang->edit->fontname = 'Font'; $lang->edit->fontsize = 'Size'; From 4cdce7e4cfde42205b594732989d19d99cf12daf Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 2 Jun 2008 10:50:58 +0000 Subject: [PATCH 14/87] =?UTF-8?q?1.=20=ED=9A=8C=EC=9B=90/=EA=B2=8C?= =?UTF-8?q?=EC=8B=9C=EA=B8=80/=EB=8C=93=EA=B8=80=20=ED=8C=9D=EC=97=85?= =?UTF-8?q?=EB=A9=94=EB=89=B4=EB=A5=BC=20controller=EC=9D=98=20method?= =?UTF-8?q?=EB=A5=BC=20=EC=9D=B4=EC=9A=A9=ED=95=98=EC=97=AC=20=EC=86=90?= =?UTF-8?q?=EC=89=BD=EA=B2=8C=20=EC=B6=94=EA=B0=80=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=202.=20?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80/=20=EB=8C=93=EA=B8=80=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=EB=A9=94=EB=89=B4=EC=97=90=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EC=B6=94=EA=B0=80=203.=20=EC=AA=BD=EC=A7=80=20?= =?UTF-8?q?=EB=B0=9C=EC=86=A1/=20=EC=B9=9C=EA=B5=AC=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=20=EB=A9=94=EB=89=B4=EC=9D=98=20on/off=EB=A5=BC=20member=5Fcom?= =?UTF-8?q?munication=20=EC=95=A0=EB=93=9C=EC=98=A8=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=ED=99=9C=EC=84=B1/=EB=B9=84=ED=99=9C=EC=84=B1=20=ED=95=A0=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?4.=20IE=EC=97=90=EC=84=9C=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EB=A5=BC=20=EC=B0=BE=EC=9D=84=20=EC=88=98=20=EC=97=86=EB=8B=A4?= =?UTF-8?q?=EB=8A=94=20=EC=98=A4=EB=A5=98=EA=B0=80=20=EB=B0=9C=EC=83=9D?= =?UTF-8?q?=ED=95=98=EB=8A=94=20window=20onload=EC=9D=B4=EC=A0=84=EC=97=90?= =?UTF-8?q?=20DOM=EC=9D=84=20=EA=B1=B4=EB=93=9C=EB=A6=AC=EB=8A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=EC=97=90=20=EB=8C=80=ED=95=9C=20=EB=B3=B4?= =?UTF-8?q?=EC=99=84=EC=B1=85=20=EC=A0=81=EC=9A=A9=205.=20XML=20RPC=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=EC=8B=9C=201depth?= =?UTF-8?q?=EC=9D=B4=EC=83=81=EC=9D=98=20=EB=B0=B0=EC=97=B4=20=EB=98=90?= =?UTF-8?q?=EB=8A=94=20=EC=98=A4=EB=B8=8C=EC=A0=9D=ED=8A=B8=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EB=A5=BC=20Simple=20XML=20=ED=98=95=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=B6=9C=EB=A0=A5=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8F=84=EB=A1=9D=20=ED=95=98=EA=B3=A0=20Javascript?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=9D=B4=EB=A5=BC=20=EB=8B=A4=EC=B0=A8?= =?UTF-8?q?=EC=9B=90=20=EB=B0=B0=EC=97=B4=EB=A1=9C=20parsing=ED=95=98?= =?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@4230 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_communication/conf/info.xml | 47 +++++++++ addons/member_communication/lang/en.lang.php | 3 + addons/member_communication/lang/es.lang.php | 3 + addons/member_communication/lang/ge.lang.php | 3 + addons/member_communication/lang/jp.lang.php | 3 + addons/member_communication/lang/ko.lang.php | 3 + addons/member_communication/lang/ru.lang.php | 9 ++ .../member_communication/lang/zh-CN.lang.php | 3 + .../member_communication.addon.php | 89 ++++++++++++++++++ classes/display/DisplayHandler.class.php | 27 ++++-- common/js/common.js | 88 +++++++++-------- common/js/xml_handler.js | 49 ++++++++-- modules/board/board.controller.php | 13 +-- modules/comment/comment.controller.php | 16 ++++ modules/comment/comment.model.php | 29 +++--- modules/document/document.controller.php | 17 ++++ modules/document/document.model.php | 38 ++++---- modules/document/tpl/icons/declare.gif | Bin 0 -> 98 bytes modules/document/tpl/icons/print.gif | Bin 0 -> 1017 bytes modules/document/tpl/icons/scrap.gif | Bin 0 -> 371 bytes modules/document/tpl/icons/send_trackback.gif | Bin 0 -> 118 bytes modules/document/tpl/icons/vote_down.gif | Bin 0 -> 345 bytes modules/document/tpl/icons/vote_up.gif | Bin 0 -> 343 bytes modules/member/member.controller.php | 45 +++++++-- modules/member/member.model.php | 46 +++++---- modules/trackback/trackback.controller.php | 6 +- 26 files changed, 422 insertions(+), 115 deletions(-) create mode 100644 addons/member_communication/conf/info.xml create mode 100644 addons/member_communication/lang/en.lang.php create mode 100644 addons/member_communication/lang/es.lang.php create mode 100644 addons/member_communication/lang/ge.lang.php create mode 100644 addons/member_communication/lang/jp.lang.php create mode 100644 addons/member_communication/lang/ko.lang.php create mode 100644 addons/member_communication/lang/ru.lang.php create mode 100644 addons/member_communication/lang/zh-CN.lang.php create mode 100644 addons/member_communication/member_communication.addon.php create mode 100755 modules/document/tpl/icons/declare.gif create mode 100755 modules/document/tpl/icons/print.gif create mode 100755 modules/document/tpl/icons/scrap.gif create mode 100755 modules/document/tpl/icons/send_trackback.gif create mode 100755 modules/document/tpl/icons/vote_down.gif create mode 100755 modules/document/tpl/icons/vote_up.gif diff --git a/addons/member_communication/conf/info.xml b/addons/member_communication/conf/info.xml new file mode 100644 index 000000000..9ac28a1b4 --- /dev/null +++ b/addons/member_communication/conf/info.xml @@ -0,0 +1,47 @@ + + + 커뮤니케이션 + 커뮤니케이션 + 커뮤니케이션 + 커뮤니케이션 + 커뮤니케이션 + 커뮤니케이션 + 커뮤니케이션 + + 제로 + Zero + zero + zero + zero + zero + zero + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + + + diff --git a/addons/member_communication/lang/en.lang.php b/addons/member_communication/lang/en.lang.php new file mode 100644 index 000000000..cc9cce249 --- /dev/null +++ b/addons/member_communication/lang/en.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = 'You have a new message. Do you want to check now?'; +?> diff --git a/addons/member_communication/lang/es.lang.php b/addons/member_communication/lang/es.lang.php new file mode 100644 index 000000000..51933d3f8 --- /dev/null +++ b/addons/member_communication/lang/es.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = 'Usted tiene un nuevo mensaje. Quiere comprobar ahora?'; +?> diff --git a/addons/member_communication/lang/ge.lang.php b/addons/member_communication/lang/ge.lang.php new file mode 100644 index 000000000..d9b9dcb81 --- /dev/null +++ b/addons/member_communication/lang/ge.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = 'Sie haben eine neue Nachricht. Wollen Sie jetzt prüfen, ob?'; +?> diff --git a/addons/member_communication/lang/jp.lang.php b/addons/member_communication/lang/jp.lang.php new file mode 100644 index 000000000..3a5dfc9c6 --- /dev/null +++ b/addons/member_communication/lang/jp.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = '新しいメッセージが届きました。確認しますか。'; +?> diff --git a/addons/member_communication/lang/ko.lang.php b/addons/member_communication/lang/ko.lang.php new file mode 100644 index 000000000..5dc594d0d --- /dev/null +++ b/addons/member_communication/lang/ko.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = '새로운 메세지가 도착하였습니다. 확인하시겠습니까?'; +?> diff --git a/addons/member_communication/lang/ru.lang.php b/addons/member_communication/lang/ru.lang.php new file mode 100644 index 000000000..e181b5e69 --- /dev/null +++ b/addons/member_communication/lang/ru.lang.php @@ -0,0 +1,9 @@ + | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467; + * @brief Russian basic language pack for Zeroboard XE + **/ + + $lang->alert_new_message_arrived = 'У Вас есть новые сообщения. Хотите проверить сейчас?'; +?> diff --git a/addons/member_communication/lang/zh-CN.lang.php b/addons/member_communication/lang/zh-CN.lang.php new file mode 100644 index 000000000..497b4ef68 --- /dev/null +++ b/addons/member_communication/lang/zh-CN.lang.php @@ -0,0 +1,3 @@ +alert_new_message_arrived = '您有新消息。要确认吗?'; +?> diff --git a/addons/member_communication/member_communication.addon.php b/addons/member_communication/member_communication.addon.php new file mode 100644 index 000000000..ca0bd2c21 --- /dev/null +++ b/addons/member_communication/member_communication.addon.php @@ -0,0 +1,89 @@ +module != 'member' && Context::get('is_logged') ) { + + // 로그인된 사용자 정보를 구함 + $logged_info = Context::get('logged_info'); + + // 커뮤니케이션 모듈의 언어파일을 읽음 + Context::loadLang('./modules/communication/lang'); + + // 회원 로그인 정보중에서 쪽지등의 메뉴를 추가 + $oMemberController = &getController('member'); + $oMemberController->addMemberMenu('dispCommunicationFriend', 'cmd_view_friend'); + $oMemberController->addMemberMenu('dispCommunicationMessages', 'cmd_view_message_box'); + + // 새로운 쪽지에 대한 플래그가 있으면 쪽지 보기 팝업 띄움 + $flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl); + $flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl); + + if(file_exists($flag_file)) { + @unlink($flag_file); + Context::loadLang('./addons/member_communication/lang'); + + $script = sprintf('', Context::getLang('alert_new_message_arrived'), Context::getRequestUri().'?module=communication&act=dispCommunicationNewMessage'); + + Context::addHtmlHeader( $script ); + } + + /** + * 기능 수행 : 사용자 이름을 클릭시 요청되는 팝업메뉴의 메뉴에 쪽지 발송, 친구추가등의 링크 추가 + * 조건 : called_position == 'after_module_proc', module = 'member', act = 'getMemberMenu' + **/ + } elseif($called_position == 'before_module_proc' && $this->module == 'member' && $this->act == 'getMemberMenu') { + // 비로그인 사용자라면 패스 + if(!Context::get('is_logged')) return; + + $oMemberController = &getController('member'); + + // 로그인된 사용자 정보를 구함 + $logged_info = Context::get('logged_info'); + $member_srl = Context::get('target_srl'); + $mid = Context::get('cur_mid'); + + // communication 모델 객체 생성 + $oCommunicationModel = &getModel('communication'); + + // 자신이라면 쪽지함 보기 기능 추가 + if($logged_info->member_srl == $member_srl) { + + // 자신의 쪽지함 보기 기능 추가 + $oMemberController->addMemberPopupMenu(getUrl('','mid',$mid,'act','dispCommunicationMessages'), 'cmd_view_message_box', './modules/communication/tpl/images/icon_message_box.gif', 'self'); + + // 친구 목록 보기 + $oMemberController->addMemberPopupMenu(getUrl('','mid',$mid,'act','dispCommunicationFriend'), 'cmd_view_friend', './modules/communication/tpl/images/icon_friend_box.gif', 'self'); + + // 아니라면 쪽지 발송, 친구 등록 추가 + } else { + // 대상 회원의 정보를 가져옴 + $target_member_info = $this->getMemberInfoByMemberSrl($member_srl); + if(!$target_member_info->member_srl) return; + + // 로그인된 사용자 정보를 구함 + $logged_info = Context::get('logged_info'); + + // 쪽지 발송 메뉴를 만듬 + if( $logged_info->is_admin == 'Y' || $target_member_info->allow_message =='Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl))) + $oMemberController->addMemberPopupMenu(getUrl('','module','communication','act','dispCommunicationSendMessage','receiver_srl',$member_srl), 'cmd_send_message', './modules/communication/tpl/images/icon_write_message.gif', 'popup'); + + // 친구 등록 메뉴를 만듬 (이미 등록된 친구가 아닐 경우) + if(!$oCommunicationModel->isAddedFriend($member_srl)) + $oMemberController->addMemberPopupMenu(getUrl('','module','communication','act','dispCommunicationAddFriend','target_srl',$member_srl), 'cmd_add_friend', './modules/communication/tpl/images/icon_add_friend.gif', 'popup'); + } + } +?> diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 256716f32..d66947cbe 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -97,24 +97,35 @@ * @brief RequestMethod가 XML이면 XML 데이터로 컨텐츠 생성 **/ function _toXmlDoc(&$oModule) { + $variables = $oModule->getVariables(); + $xmlDoc = "\n"; $xmlDoc .= sprintf("%s\n",$oModule->getError()); $xmlDoc .= sprintf("%s\n",str_replace(array('<','>','&'),array('<','>','&'),$oModule->getMessage())); - $variables = $oModule->getVariables(); - - if(count($variables)) { - foreach($variables as $key => $val) { - if(is_string($val)) $val = ''; - $xmlDoc .= "<{$key}>{$val}\n"; - } - } + $xmlDoc .= $this->_makeXmlDoc($variables); $xmlDoc .= ""; return $xmlDoc; } + function _makeXmlDoc($obj) { + if(!count($obj)) return; + + $xmlDoc = ''; + + foreach($obj as $key => $val) { + if(is_numeric($key)) $key = 'item'; + + if(is_string($val)) $xmlDoc .= sprintf('<%s>%s', $key, $val, $key,"\n"); + else if(!is_array($val) && !is_object($val)) $xmlDoc .= sprintf('<%s>%s%s', $key, $val, $key,"\n"); + else $xmlDoc .= sprintf('<%s>%s%s%s',$key, "\n", $this->_makeXmlDoc($val), $key, "\n"); + } + + return $xmlDoc; + } + /** * @brief RequestMethod가 XML이 아니면 html 컨텐츠 생성 **/ diff --git a/common/js/common.js b/common/js/common.js index d92284fcf..0844cf27d 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -309,18 +309,27 @@ function setFixedPopupSize() { /** * @brief 이름, 게시글등을 클릭하였을 경우 팝업 메뉴를 보여주는 함수 **/ +xAddEventListener(window, 'load', createPopupMenu); xAddEventListener(document, 'click', chkPopupMenu); -var loaded_popup_menu_list = new Array(); + +var loaded_popup_menus = new Array(); + +/* 멤버 팝업 메뉴 레이어를 생성하는 함수 (문서 출력이 완료되었을때 동작) */ +function createPopupMenu(evt) { + var area = xGetElementById("popup_menu_area"); + if(area) return; + area = xCreateElement("div"); + area.id = "popup_menu_area"; + area.style.visibility = 'hidden'; + document.body.appendChild(area); +} /* 클릭 이벤트 발생시 이벤트가 일어난 대상을 검사하여 적절한 규칙에 맞으면 처리 */ function chkPopupMenu(evt) { // 이전에 호출되었을지 모르는 팝업메뉴 숨김 var area = xGetElementById("popup_menu_area"); - if(!area) { - area = xCreateElement("div"); - area.id = "popup_menu_area"; - document.body.appendChild(area); - } + if(!area) return; + if(area.style.visibility!="hidden") area.style.visibility="hidden"; // 이벤트 대상이 없으면 무시 @@ -332,9 +341,7 @@ function chkPopupMenu(evt) { if(!obj) return; // obj의 nodeName이 div나 span이 아니면 나올대까지 상위를 찾음 - if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') { - obj = obj.parentNode; - } + if(obj && obj.nodeName != 'DIV' && obj.nodeName != 'SPAN') obj = obj.parentNode; if(!obj || (obj.nodeName != 'DIV' && obj.nodeName != 'SPAN')) return; // 객체의 className값을 구함 @@ -371,10 +378,9 @@ function chkPopupMenu(evt) { params["page_x"] = e.pageX; params["page_y"] = e.pageY; - var response_tags = new Array("error","message","menu_list"); + var response_tags = new Array("error","message","menus"); - if(loaded_popup_menu_list[menu_id]) { - params["menu_list"] = loaded_popup_menu_list[menu_id]; + if(loaded_popup_menus[menu_id]) { displayPopupMenu(params, response_tags, params); return; } @@ -385,44 +391,50 @@ function chkPopupMenu(evt) { } function displayPopupMenu(ret_obj, response_tags, params) { - var area = xGetElementById("popup_menu_area"); - - var menu_list = ret_obj['menu_list']; - var target_srl = params["target_srl"]; var menu_id = params["menu_id"]; - + var menus = ret_obj['menus']; var html = ""; - if(loaded_popup_menu_list[menu_id]) { - html = loaded_popup_menu_list[menu_id]; + if(loaded_popup_menus[menu_id]) { + html = loaded_popup_menus[menu_id]; } else { - var infos = menu_list.split("\n"); - if(infos.length) { - for(var i=0;i"+str+""; - else html += "
"+str+"
"; + html += '
'+str+'
'; } - } - loaded_popup_menu_list[menu_id] = html; + } + loaded_popup_menus[menu_id] = html; } + // 레이어 출력 if(html) { - // 레이어 출력 - xInnerHtml('popup_menu_area', "
"+html+"
"); + var area = xGetElementById("popup_menu_area"); + xInnerHtml(area, "
"+html+"
"); xLeft(area, params["page_x"]); xTop(area, params["page_y"]); if(xWidth(area)+xLeft(area)>xClientWidth()+xScrollLeft()) xLeft(area, xClientWidth()-xWidth(area)+xScrollLeft()); diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js index 7b6572040..bdeeca6c3 100644 --- a/common/js/xml_handler.js +++ b/common/js/xml_handler.js @@ -63,6 +63,7 @@ function xml_handler() { this.addParam = xml_handlerAddParam; this.getResponseXml = xml_handlerGetResponseXML; this.toZMsgObject = xml_handlerToZMsgObject; + this.parseXMLDoc = xml_parseXmlDoc; this.obj_xmlHttp = this.getXmlHttp(); } @@ -157,21 +158,57 @@ function xml_handlerGetResponseXML() { return null; } +function xml_parseXmlDoc(dom) { + if(!dom) return; + + var ret_obj = new Array(); + + var obj = dom.firstChild; + if(!obj) return; + + while(obj) { + if(obj.nodeType == 1) { + + if(obj.firstChild && obj.lastChild && obj.firstChild == obj.lastChild) { + var name = obj.nodeName; + var value = obj.firstChild.nodeValue; + ret_obj[name] = value; + } else { + var name = obj.nodeName; + var value = this.parseXMLDoc(obj); + + if(typeof(ret_obj[name])=='undefined') { + ret_obj[name] = value; + } else { + if(ret_obj[name].length>0) { + ret_obj[name][ret_obj[name].length] = value; + } else { + var tmp_value = ret_obj[name]; + ret_obj[name] = new Array(); + ret_obj[name][ret_obj[name].length] = tmp_value; + ret_obj[name][ret_obj[name].length] = value; + } + } + } + } + obj = obj.nextSibling; + } + return ret_obj; +} + function xml_handlerToZMsgObject(xmlDoc, tags) { if(!xmlDoc) return null; if(!tags) tags = new Array("error","message"); tags[tags.length] = "redirect_url"; tags[tags.length] = "act"; + + var parsed_array = this.parseXMLDoc(xmlDoc.getElementsByTagName('response')[0]); var obj_ret = new Array(); for(var i=0; imodule != 'board') return new Object(); // 자신의 아이디를 클릭한 경우 - if($member_srl == $logged_info->member_srl) $member_info = $logged_info; - else { + if($member_srl == $logged_info->member_srl) { + $member_info = $logged_info; + } else { $oMemberModel = &getModel('member'); $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); } if(!$member_info->user_id) return new Object(); - // 아이디로 검색 - $menu_str = Context::getLang('cmd_view_own_document'); - $menu_url = sprintf('./?mid=%s&search_target=user_id&search_keyword=%s', $mid, $member_info->user_id); - $obj[] = sprintf('%s,%s,move_url(\'%s\')', Context::getRequestUri().'/modules/member/tpl/images/icon_view_written.gif',$menu_str, $menu_url); + // 아이디로 검색기능 추가 + $url = getUrl('','mid',$mid,'search_target','user_id','search_keyword',$member_info->user_id); + $oMemberController = &getController('member'); + $oMemberController->addMemberPopupMenu($url, 'cmd_view_own_document', './modules/member/tpl/images/icon_view_written.gif'); return new Object(); } diff --git a/modules/comment/comment.controller.php b/modules/comment/comment.controller.php index 543746fbf..26b934827 100644 --- a/modules/comment/comment.controller.php +++ b/modules/comment/comment.controller.php @@ -532,5 +532,21 @@ $this->setMessage('success_declared'); } + /** + * @brief 댓글의 이 댓글을.. 클릭시 나타나는 팝업 메뉴를 추가하는 method + **/ + function addCommentPopupMenu($url, $str, $icon = '', $target = 'self') { + $comment_popup_menu_list = Context::get('comment_popup_menu_list'); + if(!is_array($comment_popup_menu_list)) $comment_popup_menu_list = array(); + + $obj->url = $url; + $obj->str = $str; + $obj->icon = $icon; + $obj->target = $target; + $comment_popup_menu_list[] = $obj; + + Context::set('comment_popup_menu_list', $comment_popup_menu_list); + } + } ?> diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index d66c1c5ce..9921223df 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -32,31 +32,36 @@ // trigger 호출 ModuleHandler::triggerCall('comment.getCommentMenu', 'before', $menu_list); + $oCommentController = &getController('comment'); + // 회원이어야만 가능한 기능 if($logged_info->member_srl) { // 추천 버튼 추가 - $menu_str = Context::getLang('cmd_vote'); - $menu_link = sprintf("doCallModuleAction('comment','procCommentVoteUp','%s')", $comment_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); + $url = sprintf("doCallModuleAction('comment','procCommentVoteUp','%s')", $comment_srl); + $oCommentController->addCommentPopupMenu($url,'cmd_vote','./modules/document/tpl/icons/vote_up.gif','javascript'); // 비추천 버튼 추가 - $menu_str = Context::getLang('cmd_vote_down'); - $menu_link = sprintf("doCallModuleAction('comment','procCommentVoteDown','%s')", $comment_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); + $url = sprintf("doCallModuleAction('comment','procCommentVoteDown','%s')", $comment_srl); + $oCommentController->addCommentPopupMenu($url,'cmd_vote_down','./modules/document/tpl/icons/vote_down.gif','javascript'); // 신고 기능 추가 - $menu_str = Context::getLang('cmd_declare'); - $menu_link = sprintf("doCallModuleAction('comment','procCommentDeclare','%s')", $comment_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); - + $url = sprintf("doCallModuleAction('comment','procCommentDeclare','%s')", $comment_srl); + $oCommentController->addCommentPopupMenu($url,'cmd_declare','./modules/document/tpl/icons/declare.gif','javascript'); } // trigger 호출 (after) ModuleHandler::triggerCall('comment.getCommentMenu', 'after', $menu_list); - // 정보를 저장 - $this->add("menu_list", implode("\n",$menu_list)); + // 팝업메뉴의 언어 변경 + $menus = Context::get('comment_popup_menu_list'); + $menus_count = count($menus); + for($i=0;$i<$menus_count;$i++) { + $menus[$i]->str = Context::getLang($menus[$i]->str); + } + + // 최종적으로 정리된 팝업메뉴 목록을 구함 + $this->add('menus', $menus); } diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index caa34884d..af002f7fc 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -917,5 +917,22 @@ return $output; } + /** + * @brief 게시물의 이 게시물을.. 클릭시 나타나는 팝업 메뉴를 추가하는 method + **/ + function addDocumentPopupMenu($url, $str, $icon = '', $target = 'self') { + $document_popup_menu_list = Context::get('document_popup_menu_list'); + if(!is_array($document_popup_menu_list)) $document_popup_menu_list = array(); + + $obj->url = $url; + $obj->str = $str; + $obj->icon = $icon; + $obj->target = $target; + $document_popup_menu_list[] = $obj; + + Context::set('document_popup_menu_list', $document_popup_menu_list); + } + + } ?> diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 39c44f9b5..53a7d6027 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -54,40 +54,44 @@ // trigger 호출 ModuleHandler::triggerCall('document.getDocumentMenu', 'before', $menu_list); + $oDocumentController = &getController('document'); + // 인쇄 버튼 추가 - $menu_str = Context::getLang('cmd_print'); - $menu_link = sprintf("%s?document_srl=%s&act=dispDocumentPrint",Context::getRequestUri(),$document_srl); - $menu_list[] = sprintf("\n%s,%s,winopen('%s','MemberModifyInfo')", '' ,$menu_str, $menu_link); + $url = getUrl('','module','document','act','dispDocumentPrint','document_srl',$document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_print','./modules/document/tpl/icons/print.gif','printDocument'); // 회원이어야만 가능한 기능 if($logged_info->member_srl) { // 추천 버튼 추가 - $menu_str = Context::getLang('cmd_vote'); - $menu_link = sprintf("doCallModuleAction('document','procDocumentVoteUp','%s')", $document_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); + $url = sprintf("doCallModuleAction('document','procDocumentVoteUp','%s')", $document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_vote','./modules/document/tpl/icons/vote_up.gif','javascript'); // 비추천 버튼 추가 - $menu_str = Context::getLang('cmd_vote_down'); - $menu_link = sprintf("doCallModuleAction('document','procDocumentVoteDown','%s')", $document_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); + $url= sprintf("doCallModuleAction('document','procDocumentVoteDown','%s')", $document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_vote_down','./modules/document/tpl/icons/vote_down.gif','javascript'); // 신고 기능 추가 - $menu_str = Context::getLang('cmd_declare'); - $menu_link = sprintf("doCallModuleAction('document','procDocumentDeclare','%s')", $document_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); + $url = sprintf("doCallModuleAction('document','procDocumentDeclare','%s')", $document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_declare','./modules/document/tpl/icons/declare.gif','javascript'); // 스크랩 버튼 추가 - $menu_str = Context::getLang('cmd_scrap'); - $menu_link = sprintf("doCallModuleAction('member','procMemberScrapDocument','%s')", $document_srl); - $menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link); + $url = sprintf("doCallModuleAction('member','procMemberScrapDocument','%s')", $document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_scrap','./modules/document/tpl/icons/scrap.gif','javascript'); } // trigger 호출 (after) ModuleHandler::triggerCall('document.getDocumentMenu', 'after', $menu_list); - // 정보를 저장 - $this->add("menu_list", implode("\n",$menu_list)); + // 팝업메뉴의 언어 변경 + $menus = Context::get('document_popup_menu_list'); + $menus_count = count($menus); + for($i=0;$i<$menus_count;$i++) { + $menus[$i]->str = Context::getLang($menus[$i]->str); + } + + // 최종적으로 정리된 팝업메뉴 목록을 구함 + $this->add('menus', $menus); } /** diff --git a/modules/document/tpl/icons/declare.gif b/modules/document/tpl/icons/declare.gif new file mode 100755 index 0000000000000000000000000000000000000000..5cb534fcbb70ff62b31b872ad3c4f4128c9dcb89 GIT binary patch literal 98 zcmZ?wbhEHb6krfwSj5Kg{mjw-fhPYo`2R2J-?(7Xe=uNRU{L(Y!pOkD#-Iaa162wz yFfglU?7H*M;M7S6j)Yr=8$_G~c@CKurLq*Ixa|4BEtnK5P|Oot^Zq+0gEas$qa-c> literal 0 HcmV?d00001 diff --git a/modules/document/tpl/icons/print.gif b/modules/document/tpl/icons/print.gif new file mode 100755 index 0000000000000000000000000000000000000000..e36c6b2cb44761447e13c37c58c35f6eca0452e3 GIT binary patch literal 1017 zcmZ?wbhEHb6krfw_}<3w?)(2eC!d^t`v1<`|2yvdKY8-xrcIkVJ3EgYy>aHunSJ~A z{l0&5|Ni}Z_wGG^{`}ReS3iFIc<9ifn>TMRTehrgRaHn#O?6}6ym|B1ty|aKJ@3PZ z4|C_veem$fwr$%c%~;gX(D3~E^Q(8>&z?Q|+_`h{@$oL+5up+Bd-flF_wL=r%QsiA zUY%RgwEgh?$&)9ywJp;#bB#_ZS-f~@PfyQ+#VgNU|NZpY%MBa1Or5@I`t<2VrPUiZ zZVHP^YU}JPs_L?F@R&Yp?%~5n`~t)8KYUu)lD=!#t_>SDO_?%f>C&Zd-n@xSDth_y z<->;$A3S)ldGqEOGiM*a^ndQcRkp4nTeoh1_3G73BC%lR zlB1h9Z+rUmX>)V)ix)4xe*J3e9&O_oR8ZXT`t>LOpz!>{(%#+qY}h ztjRB}pFe+oU0q#nZtm8t`$MA3`ll@T`t{q9yFV8%U2)^ajsO4uGmHXyg@EEu7Dfh! zHU=G#g`hmaz;TU%SJJ6Lq2VAyF^g7A1#^RQdvuUa3`g71hHmC{UuNtG=xyj{Vq<)? zVggs=b$ot|Jq55^LAY zNMo3v%RW1k`QPQdpMU#o?U@B1;*vgQ52azpL{sG?C-~?|DK(CduHDMXQx*cng0L(pMgq1@h1x- z1A{t)4#+%^pBUK64ooia(2?qQZFW;Iu$+H>VbX+?Gnj5LFefC=Xu0fm*hOP1SI2Y5 z7m^k-Pfjm&(3~Q7KRDH3<_rTNA>~ZJ>?$?^0X69~K~;HGhDt9VH5pD$kruT!S2b>K kC0PZD3J*1gNr4{fDKV96)(R?aSd*f%b=%I3u8s`W0K<%q@&Et; literal 0 HcmV?d00001 diff --git a/modules/document/tpl/icons/vote_up.gif b/modules/document/tpl/icons/vote_up.gif new file mode 100755 index 0000000000000000000000000000000000000000..60d1aa9a71055c45bb6d81b53ad765f4e4886aa8 GIT binary patch literal 343 zcmZ?wbhEHb6krfwxT?nR{>R^3?z5CtrVj`4*_<^rE+C7EIgO{rmHaKQE5|dv<2w!5RNPJ^B6V z@$b*i{(gM=_rvr5PfvU}yX@_mdH7|PiN)1y^Cw6{pberAK@il^pVbaOel|c`4+$1?o0tGm{ zq`IFLGAOqQlr6lXI8j1HP9?sAnVVZxl8;ZZ)U#YoiCIFzS6rNppG_spiImenu_list['dispMemberInfo'] = 'cmd_view_member_info'; - $member_info->menu_list['dispMemberScrappedDocument'] = 'cmd_view_scrapped_document'; - $member_info->menu_list['dispMemberSavedDocument'] = 'cmd_view_saved_document'; - $member_info->menu_list['dispMemberOwnDocument'] = 'cmd_view_own_document'; + // 사용중지 아이디이면 세션 파기 + if($member_info->denied=='Y') { + $this->destroySessionInfo(); + return; + } // 오픈아이디인지 체크 (일단 아이디 형식으로만 결정) if(preg_match("/^([0-9a-z]+)$/is", $member_info->user_id)) $member_info->is_openid = false; @@ -997,11 +997,44 @@ // 세션에 로그인 사용자 정보 저장 $_SESSION['logged_info'] = $member_info; - Context::set('is_logged', true); Context::set('logged_info', $member_info); + + // 사용자의 전용 메뉴 구성 (이 메뉴는 애드온등으로 변경될 수 있음) + $this->addMemberMenu( 'dispMemberInfo', 'cmd_view_member_info'); + $this->addMemberMenu( 'dispMemberScrappedDocument', 'cmd_view_scrapped_document'); + $this->addMemberMenu( 'dispMemberSavedDocument', 'cmd_view_saved_document'); + $this->addMemberMenu( 'dispMemberOwnDocument', 'cmd_view_own_document'); } + /** + * @brief 로그인한 사용자의 개인화된 메뉴 제공을 위한 method + * 로그인 정보 출력 위젯 또는 개인화 페이지에서 사용됨 + **/ + function addMemberMenu($act, $str) { + $logged_info = Context::get('logged_info'); + + $logged_info->menu_list[$act] = Context::getLang($str); + + Context::set('logged_info', $logged_info); + $_SESSION['logged_info'] = $logged_info; + } + + /** + * @brief 로그인 회원의 닉네임등을 클릭할때 나타나는 팝업 메뉴를 추가하는 method + **/ + function addMemberPopupMenu($url, $str, $icon = '', $target = 'self') { + $member_popup_menu_list = Context::get('member_popup_menu_list'); + if(!is_array($member_popup_menu_list)) $member_popup_menu_list = array(); + + $obj->url = $url; + $obj->str = $str; + $obj->icon = $icon; + $obj->target = $target; + $member_popup_menu_list[] = $obj; + + Context::set('member_popup_menu_list', $member_popup_menu_list); + } /** * @brief member 테이블에 사용자 추가 diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 006a033d0..381da0d71 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -41,48 +41,56 @@ // 변수 정리 $user_id = $member_info->user_id; $user_name = $member_info->user_name; - $email_address = $member_info->email_address; - // menu_list 에 "표시할글,target,url" 을 배열로 넣는다 - $menu_list = array(); + ModuleHandler::triggerCall('member.getMemberMenu', 'before', $null); - ModuleHandler::triggerCall('member.getMemberMenu', 'before', $menu_list); + $oMemberController = &getController('member'); // 최고 관리자라면 회원정보 수정 메뉴 만듬 if($logged_info->is_admin == 'Y') { - $menu_str = Context::getLang('cmd_management'); - $menu_link = sprintf("%s?module=admin&act=dispMemberAdminInsert&member_srl=%s",Context::getRequestUri(),$member_srl); - $menu_list[] = sprintf("\n%s,%s,winopen('%s','MemberModifyInfo')", Context::getRequestUri().'/modules/member/tpl/images/icon_management.gif',$menu_str, $menu_link); + $url = getUrl('','module','admin','act','dispMemberAdminInsert','member_srl',$member_srl); + $icon_path = './modules/member/tpl/images/icon_management.gif'; + $oMemberController->addMemberPopupMenu($url,'cmd_management',$icon_path,'MemberModifyInfo'); } // 회원 정보 보기 (비회원일 경우 볼 수 없도록 수정) if($logged_info->member_srl) { - $menu_str = Context::getLang('cmd_view_member_info'); - $menu_url = sprintf('./?mid=%s&act=dispMemberInfo&member_srl=%s', $mid, $member_srl); - $menu_list[] = sprintf('%s,%s,move_url(\'%s\')', Context::getRequestUri().'/modules/member/tpl/images/icon_view_info.gif', $menu_str, $menu_url); + $url = getUrl('','mid',$mid,'act','dispMemberInfo','member_srl',$member_srl); + $icon_path = './modules/member/tpl/images/icon_view_info.gif'; + $oMemberController->addMemberPopupMenu($url,'cmd_view_member_info',$icon_path,'self'); } // 다른 사람의 아이디를 클릭한 경우 if($member_srl != $logged_info->member_srl) { // 메일 보내기 - $menu_str = Context::getLang('cmd_send_email'); - //$menu_url = sprintf('%s <%s>', $email_address, $user_name); - $menu_url = sprintf('%s', $email_address); - $menu_list[] = sprintf('%s,%s,sendMailTo(\'%s\')', Context::getRequestUri().'/modules/member/tpl/images/icon_sendmail.gif', $menu_str, $menu_url); + if($member_info->email_address) { + $url = 'mailto:'.$member_info->email_address; + $icon_path = './modules/member/tpl/images/icon_sendmail.gif'; + $oMemberController->addMemberPopupMenu($url,'cmd_send_email',$icon_path); + } } // 홈페이지 보기 - if($member_info->homepage) $menu_list[] = sprintf("%s,%s,winopen('%s')", Context::getRequestUri().'/modules/member/tpl/images/icon_homepage.gif',Context::getLang('homepage'), $member_info->homepage); + if($member_info->homepage) + $oMemberController->addMemberPopupMenu($member_info->homepage, 'homepage', './modules/member/tpl/images/icon_homepage.gif','blank'); // 블로그 보기 - if($member_info->blog) $menu_list[] = sprintf("%s,%s,winopen('%s')", Context::getRequestUri().'/modules/member/tpl/images/icon_blog.gif', Context::getLang('blog'), $member_info->blog); + if($member_info->blog) + $oMemberController->addMemberPopupMenu($member_info->blog, 'blog', './modules/member/tpl/images/icon_blog.gif','blank'); // trigger 호출 (after) - ModuleHandler::triggerCall('member.getMemberMenu', 'after', $menu_list); + ModuleHandler::triggerCall('member.getMemberMenu', 'after', $null); - // 정보를 저장 - $this->add("menu_list", implode("\n",$menu_list)); + // 팝업메뉴의 언어 변경 + $menus = Context::get('member_popup_menu_list'); + $menus_count = count($menus); + for($i=0;$i<$menus_count;$i++) { + $menus[$i]->str = Context::getLang($menus[$i]->str); + } + + // 최종적으로 정리된 팝업메뉴 목록을 구함 + $this->add('menus', $menus); } /** diff --git a/modules/trackback/trackback.controller.php b/modules/trackback/trackback.controller.php index 4649d5b04..8f03dfff4 100644 --- a/modules/trackback/trackback.controller.php +++ b/modules/trackback/trackback.controller.php @@ -57,9 +57,9 @@ if($oDocument->getMemberSrl() != $logged_info->member_srl) return new Object(); // 엮인글 발송 링크 추가 - $menu_str = Context::getLang('cmd_send_trackback'); - $menu_link = sprintf("%s?module=trackback&act=dispTrackbackSend&document_srl=%s",Context::getRequestUri(),$document_srl); - $menu_list[] = sprintf("\n%s,%s,popopen('%s','SendTrackback')", '', $menu_str, $menu_link); + $oDocumentController = &getController('document'); + $url = getUrl('module','trackback','act','dispTrackbackSend','document_srl', $document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_send_trackback','./modules/document/tpl/icons/send_trackback.gif','popup'); return new Object(); } From c80b2deaf0a0a8906ac24e4f98a038f82e5da4c1 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 4 Jun 2008 05:48:39 +0000 Subject: [PATCH 15/87] =?UTF-8?q?=EB=B3=B8=EB=AC=B8=EB=82=B4=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=A1=B0=EC=A0=88=20=EC=95=A0=EB=93=9C?= =?UTF-8?q?=EC=98=A8=EC=9D=84=20=EA=BC=88=EC=9D=84=EB=95=8C=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=EA=B0=A4=EB=9F=AC=EB=A6=AC=20=EC=97=90?= =?UTF-8?q?=EB=94=94=ED=84=B0=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8?= =?UTF-8?q?=EC=9D=98=20=EA=B2=B0=EA=B3=BC=EB=AC=BC=EC=97=90=EC=84=9C=20Jav?= =?UTF-8?q?ascript=EC=98=A4=EB=A5=98=EA=B0=80=20=EC=83=9D=EA=B8=B0?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4231 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../image_gallery/tpl/slide_gallery.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/editor/components/image_gallery/tpl/slide_gallery.js b/modules/editor/components/image_gallery/tpl/slide_gallery.js index b56cfa3ac..3cab52970 100644 --- a/modules/editor/components/image_gallery/tpl/slide_gallery.js +++ b/modules/editor/components/image_gallery/tpl/slide_gallery.js @@ -113,7 +113,6 @@ function display_gallery_image(obj, is_first_display) { target_image.style.marginLeft = x+"px"; - target_image.src = obj.image.src; target_image.srl = obj.srl; target_image.idx = obj.idx; target_image.style.opacity = 1; @@ -121,6 +120,7 @@ function display_gallery_image(obj, is_first_display) { target_image.start_opacity = 0; xWidth(target_image, image_width); xHeight(target_image, image_height); + target_image.src = obj.image.src; if(image_height<200) { target_image.style.marginTop = (100-image_height/2)+"px"; @@ -130,12 +130,14 @@ function display_gallery_image(obj, is_first_display) { target_image.style.marginBottom = "10px"; } - if(resize_scale!=1) { - xAddEventListener(target_image, 'click', showOriginalImage); - target_image.style.cursor = 'pointer'; - } else { - xRemoveEventListener(target_image, 'click', showOriginalImage); - target_image.style.cursor = 'default'; + if(typeof(showOriginalImage)=='function') { + if(resize_scale!=1) { + xAddEventListener(target_image, 'click', showOriginalImage); + target_image.style.cursor = 'pointer'; + } else { + xRemoveEventListener(target_image, 'click', showOriginalImage); + target_image.style.cursor = 'default'; + } } // resize_scale이 1이 아니면, 즉 리사이즈 되었다면 해당 이미지 클릭시 원본을 새창으로 띄워줌 From a961ecadfe60255338a7673b19d92f1575577c96 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 4 Jun 2008 07:09:58 +0000 Subject: [PATCH 16/87] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=95=A0=EB=93=9C=EC=98=A8=EC=9D=98=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=EC=9D=84=20=ED=95=9C=EA=B8=80=EC=9D=B4=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=EB=90=9C=20=EA=B3=B5=EB=B0=B1=EC=9D=84=20?= =?UTF-8?q?=EB=A7=8C=EB=82=98=EA=B8=B0=20=EC=A0=84=EA=B9=8C=EC=A7=80?= =?UTF-8?q?=EC=9D=98=20text=EB=A1=9C=20=EB=8C=80=EC=83=81=EC=9D=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EA=B3=A0=20=EC=83=88=EC=B0=BD|?= =?UTF-8?q?=ED=98=84=EC=9E=AC=EC=B0=BD=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4232 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index b264eed53..caac9e803 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -15,7 +15,7 @@ From fbfd975aae816c02bff8ec59e2b0199a16814f02 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 4 Jun 2008 07:10:21 +0000 Subject: [PATCH 17/87] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=95=A0=EB=93=9C=EC=98=A8=EC=9D=98=20=EC=96=B8=EC=96=B4?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4233 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/lang/es.lang.php | 9 --------- addons/autolink/lang/ge.lang.php | 9 --------- addons/autolink/lang/ko.lang.php | 9 --------- addons/autolink/lang/ru.lang.php | 9 --------- addons/autolink/lang/zh-CN.lang.php | 9 --------- 5 files changed, 45 deletions(-) delete mode 100644 addons/autolink/lang/es.lang.php delete mode 100644 addons/autolink/lang/ge.lang.php delete mode 100644 addons/autolink/lang/ko.lang.php delete mode 100644 addons/autolink/lang/ru.lang.php delete mode 100644 addons/autolink/lang/zh-CN.lang.php diff --git a/addons/autolink/lang/es.lang.php b/addons/autolink/lang/es.lang.php deleted file mode 100644 index 1547de58c..000000000 --- a/addons/autolink/lang/es.lang.php +++ /dev/null @@ -1,9 +0,0 @@ -open_cur_window = "ventana actual"; - $lang->open_new_window = "una nueva ventana"; -?> diff --git a/addons/autolink/lang/ge.lang.php b/addons/autolink/lang/ge.lang.php deleted file mode 100644 index 4d66a5258..000000000 --- a/addons/autolink/lang/ge.lang.php +++ /dev/null @@ -1,9 +0,0 @@ -open_cur_window = "aktuelle Fenster"; - $lang->open_new_window = "neues Fenster"; -?> diff --git a/addons/autolink/lang/ko.lang.php b/addons/autolink/lang/ko.lang.php deleted file mode 100644 index 8ede9189e..000000000 --- a/addons/autolink/lang/ko.lang.php +++ /dev/null @@ -1,9 +0,0 @@ -open_cur_window = "현재창"; - $lang->open_new_window = "새창"; -?> diff --git a/addons/autolink/lang/ru.lang.php b/addons/autolink/lang/ru.lang.php deleted file mode 100644 index 01a30764c..000000000 --- a/addons/autolink/lang/ru.lang.php +++ /dev/null @@ -1,9 +0,0 @@ -open_cur_window = "текущем окне"; - $lang->open_new_window = "Новое окно"; -?> diff --git a/addons/autolink/lang/zh-CN.lang.php b/addons/autolink/lang/zh-CN.lang.php deleted file mode 100644 index ba405a6ed..000000000 --- a/addons/autolink/lang/zh-CN.lang.php +++ /dev/null @@ -1,9 +0,0 @@ -open_cur_window = "本页面"; - $lang->open_new_window = "新窗口"; -?> From 638152da5ab2caba4a70cfe36a19592a2ad06557 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 4 Jun 2008 07:10:45 +0000 Subject: [PATCH 18/87] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=95=A0=EB=93=9C=EC=98=A8=EC=97=90=EC=84=9C=20=EC=96=B8?= =?UTF-8?q?=EC=96=B4=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EB=A1=9C=EB=93=9C?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4234 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index caac9e803..c48ec481b 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -7,10 +7,6 @@ * @brief 자동 링크 애드온 **/ if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC") { - Context::loadLang("./addons/autolink/lang"); - $open_cur_window = Context::getLang('open_cur_window'); - $open_new_window = Context::getLang('open_new_window'); - $script_code = << From cf44f348774969bf6fea32bbbb33781f713c3009 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 4 Jun 2008 07:11:49 +0000 Subject: [PATCH 19/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4235 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/components/image_gallery/tpl/list_gallery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/editor/components/image_gallery/tpl/list_gallery.js b/modules/editor/components/image_gallery/tpl/list_gallery.js index d92ab8c14..b2ca84b53 100644 --- a/modules/editor/components/image_gallery/tpl/list_gallery.js +++ b/modules/editor/components/image_gallery/tpl/list_gallery.js @@ -73,7 +73,7 @@ function start_list_gallery() { obj.image.style.display = "block"; // resize_scale이 1이 아니면, 즉 리사이즈 되었다면 해당 이미지 클릭시 원본을 새창으로 띄워줌 - if(resize_scale!=1) { + if(resize_scale!=1 && typeof(showOriginalImage)=='function') { obj.image.style.cursor = 'pointer'; xAddEventListener(obj.image, 'click', showOriginalImage); } From e4a6c7be64917f7d46a6f787a749da1b5f232e9a Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 4 Jun 2008 08:12:33 +0000 Subject: [PATCH 20/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4236 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index c48ec481b..b696c036b 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -11,7 +11,7 @@ From 8186d18331d7ae7fd4ec83bbe9029900396f75b1 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 5 Jun 2008 05:34:26 +0000 Subject: [PATCH 21/87] =?UTF-8?q?admin.css=20=EC=B6=94=EA=B0=80=EC=8B=9C?= =?UTF-8?q?=20optimizer=EC=97=90=20=ED=8F=AC=ED=95=A8=EB=90=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4237 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index d6e68f614..91de219c3 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -139,7 +139,9 @@ $this->addJsFile("./common/js/xml_js_filter.js"); $this->addCSSFile("./common/css/default.css"); $this->addCSSFile("./common/css/button.css"); - if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0) $this->addCssFile("./modules/admin/tpl/css/admin.css"); + + // 관리자 페이지일 경우 관리자 공용 CSS 추가 + if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0) $this->addCssFile("./modules/admin/tpl/css/admin.css", false); // rewrite module때문에 javascript에서 location.href 문제 해결을 위해 직접 실제 경로 설정 if($_SERVER['REQUEST_METHOD'] == 'GET') { @@ -177,15 +179,15 @@ $db_config_file = $this->getConfigFile(); if(file_exists($db_config_file)) @include($db_config_file); - if(!$db_info->time_zone) $db_info->time_zone = date("O"); - if(!$db_info->use_optimizer || $db_info->use_optimizer != 'N') $db_info->use_optimizer = 'Y'; - else $db_info->use_optimizer = 'N'; - if(!$db_info->qmail_compatibility || $db_info->qmail_compatibility != 'Y') $db_info->qmail_compatibility = 'N'; + if(!$db_info->time_zone) $db_info->time_zone = date("O"); + if(!$db_info->use_optimizer || $db_info->use_optimizer != 'N') $db_info->use_optimizer = 'Y'; + else $db_info->use_optimizer = 'N'; + if(!$db_info->qmail_compatibility || $db_info->qmail_compatibility != 'Y') $db_info->qmail_compatibility = 'N'; else $db_info->qmail_compatibility = 'Y'; $this->_setDBInfo($db_info); - - $GLOBALS['_time_zone'] = $db_info->time_zone; + + $GLOBALS['_time_zone'] = $db_info->time_zone; $GLOBALS['_qmail_compatibility'] = $db_info->qmail_compatibility; } From a403232ec3263bb1067b6f5bfb192ca06c425d84 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 5 Jun 2008 10:02:51 +0000 Subject: [PATCH 22/87] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=95=A0=EB=93=9C=EC=98=A8=20=EC=98=A4=EB=8F=99=EC=9E=91=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@4238 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index b696c036b..d212c59f6 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -11,7 +11,7 @@ From 035ac4797f2b3043fa1ea3f8c42d47b8ad5adfee Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 5 Jun 2008 10:04:55 +0000 Subject: [PATCH 23/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4239 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 50 +++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index 0844cf27d..e28d382f0 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -399,33 +399,35 @@ function displayPopupMenu(ret_obj, response_tags, params) { if(loaded_popup_menus[menu_id]) { html = loaded_popup_menus[menu_id]; } else { - var item = menus['item']; - if(item.length) { - for(var i=0;i'+str+' '; } - - html += '
'+str+'
'; } } loaded_popup_menus[menu_id] = html; From 58c1bec1a0fb61ce2d9cc72584f121faf043c40a Mon Sep 17 00:00:00 2001 From: k10206 Date: Fri, 6 Jun 2008 06:42:24 +0000 Subject: [PATCH 24/87] =?UTF-8?q?=EC=84=A4=EC=A0=95=ED=95=9C=20=EC=B5=9C?= =?UTF-8?q?=EA=B7=BC=EA=B8=80=20=EB=82=B4=EC=97=90=EC=84=9C=20=EB=9E=9C?= =?UTF-8?q?=EB=8D=A4=20=EC=B6=94=EC=B6=9C=ED=95=98=EC=97=AC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=EB=B0=98=EB=B3=B5=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=EC=98=B5=EC=85=98=20*=20XE=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=ED=8C=9D=EC=97=85=20=EA=B8=B0=EB=8A=A5=EC=9D=B4=20?= =?UTF-8?q?=EC=9E=91=EB=8F=99=ED=95=98=EC=A7=80=20=EC=95=8A=EC=9C=BC?= =?UTF-8?q?=EB=A9=B4=20cloud=5Fpreview=EB=8A=94=20=ED=95=84=EC=9A=94=20?= =?UTF-8?q?=EC=97=86=EC=9C=BC=EB=AF=80=EB=A1=9C=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=ED=95=B4=EC=95=BC=ED=95=A9=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4240 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../newest_images/skins/cloud/css/normal.css | 2 +- widgets/newest_images/skins/cloud/list.html | 42 ++++++++++++------- widgets/newest_images/skins/cloud/skin.xml | 4 +- .../skins/cloud_preview/list.html | 41 +++++++++++------- 4 files changed, 56 insertions(+), 33 deletions(-) diff --git a/widgets/newest_images/skins/cloud/css/normal.css b/widgets/newest_images/skins/cloud/css/normal.css index 03e964fc1..821bb17f5 100644 --- a/widgets/newest_images/skins/cloud/css/normal.css +++ b/widgets/newest_images/skins/cloud/css/normal.css @@ -7,7 +7,7 @@ .imgcloudoutline a.more:hover { text-decoration:underline;} .imgcloudoutline table { - margin: 0px auto; + margin: 1px auto; border:1px solid #ddd; } diff --git a/widgets/newest_images/skins/cloud/list.html b/widgets/newest_images/skins/cloud/list.html index b96c75573..42d29fbe9 100644 --- a/widgets/newest_images/skins/cloud/list.html +++ b/widgets/newest_images/skins/cloud/list.html @@ -16,7 +16,7 @@ {@ shuffle($widget_info->document_list)} - + {@ $width = $widget_info->thumbnail_width ? $widget_info->thumbnail_width : "40"; $height = $widget_info->thumbnail_height ? $widget_info->thumbnail_height : "40"; @@ -24,63 +24,75 @@ $url[$i] = ($widget_info->document_list[$i]->document_srl) ? "href=\"".getUrl('','document_srl',$widget_info->document_list[$i]->document_srl)."\"" : ""; } + + + + + {@ $colsrows = $widget_info->cols_list_count * $j}
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+ diff --git a/widgets/newest_images/skins/cloud/skin.xml b/widgets/newest_images/skins/cloud/skin.xml index 2dd44bc35..d73b9ae37 100644 --- a/widgets/newest_images/skins/cloud/skin.xml +++ b/widgets/newest_images/skins/cloud/skin.xml @@ -1,9 +1,9 @@ - + 이미지 클라우드 イメージクラウド 相册型最新图片列表皮肤 - + Simulz Simulz Simulz diff --git a/widgets/newest_images/skins/cloud_preview/list.html b/widgets/newest_images/skins/cloud_preview/list.html index e82f6e303..897f27361 100644 --- a/widgets/newest_images/skins/cloud_preview/list.html +++ b/widgets/newest_images/skins/cloud_preview/list.html @@ -16,7 +16,7 @@ {@ shuffle($widget_info->document_list)} - + {@ $width = $widget_info->thumbnail_width ? $widget_info->thumbnail_width : "40"; $height = $widget_info->thumbnail_height ? $widget_info->thumbnail_height : "40"; @@ -25,59 +25,70 @@ $image[$i] = ($widget_info->document_list[$i]->document_srl) ? $widget_info->document_list[$i]->getThumbnail(200*$ratio,200,$widget_info->thumbnail_type) : $tpl_path."/images/blank.gif"; } + + + + + {@ $colsrows = $widget_info->cols_list_count * $j} From 44b9df4fb8f7c7499f8b61ffc217460cf7eaa317 Mon Sep 17 00:00:00 2001 From: k10206 Date: Fri, 6 Jun 2008 07:30:50 +0000 Subject: [PATCH 25/87] =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=ED=81=B4?= =?UTF-8?q?=EB=9D=BC=EC=9A=B0=EB=93=9C=20hover=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EB=B3=80=EA=B2=BD=EB=90=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4241 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../newest_images/skins/cloud/css/normal.css | 43 +++++++++---------- widgets/newest_images/skins/cloud/list.html | 28 ++++++------ 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/widgets/newest_images/skins/cloud/css/normal.css b/widgets/newest_images/skins/cloud/css/normal.css index 821bb17f5..dd2842c81 100644 --- a/widgets/newest_images/skins/cloud/css/normal.css +++ b/widgets/newest_images/skins/cloud/css/normal.css @@ -8,34 +8,33 @@ .imgcloudoutline table { margin: 1px auto; - border:1px solid #ddd; + border: 0px solid #ddd; } - .imgcloudoutline .imgcloud { - border:1px solid #ddd; - padding: 1px; + .imgcloudoutline img.imgcloud { + border: 1px solid #e0e1db; + padding: 2px; overflow: hidden; + display:block; } - .imgcloudoutline .imgcloud:hover { + .imgcloudoutline img.imgcloud:hover { border: 2px solid #7899AF; - padding: 0px; - overflow: hidden; - } - - .imgcloudoutline .imgcloudbig { - border:1px solid #ddd; padding: 1px; overflow: hidden; - } - - .imgcloudoutline .imgcloudbig:hover { - border: 2px solid #7899AF; - padding: 0px; - overflow: hidden; - } - - .imgcloudoutline .cloudimg { - border: 0px; + display:block; cursor: pointer; - } \ No newline at end of file + } + + .imgcloudoutline img.imgcloudbig { + border: 1px solid #e0e1db; + padding: 2px; + overflow: hidden; + } + + .imgcloudoutline img.imgcloudbig:hover { + border: 2px solid #7899AF; + padding: 1px; + overflow: hidden; + cursor: pointer; + } diff --git a/widgets/newest_images/skins/cloud/list.html b/widgets/newest_images/skins/cloud/list.html index 42d29fbe9..749fdce81 100644 --- a/widgets/newest_images/skins/cloud/list.html +++ b/widgets/newest_images/skins/cloud/list.html @@ -39,55 +39,55 @@ From 5b726c48e6ea9add9b3454c1e1a83cc180aea866 Mon Sep 17 00:00:00 2001 From: k10206 Date: Fri, 6 Jun 2008 07:35:03 +0000 Subject: [PATCH 26/87] #3 git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4242 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/newest_images/skins/cloud/list.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/widgets/newest_images/skins/cloud/list.html b/widgets/newest_images/skins/cloud/list.html index 749fdce81..bee690fac 100644 --- a/widgets/newest_images/skins/cloud/list.html +++ b/widgets/newest_images/skins/cloud/list.html @@ -39,7 +39,7 @@ From 3db55019490ea047e2738ff384cd544cc6fbdae1 Mon Sep 17 00:00:00 2001 From: supershop Date: Fri, 6 Jun 2008 10:55:46 +0000 Subject: [PATCH 27/87] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4243 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/lang/en.lang.php | 4 ++-- modules/editor/lang/en.lang.php | 4 ++++ modules/springnote/lang/en.lang.php | 4 ++-- modules/widget/lang/en.lang.php | 6 +++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/admin/lang/en.lang.php b/modules/admin/lang/en.lang.php index e1c35079e..1bccb5f71 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 = "New version of Zerboard XE is now available. To download the latest version, click the download link."; + $lang->about_download_link = "New version of Zerboard XE is now available. Click the download link to get the latest version."; $lang->item_module = "Module List"; $lang->item_addon = "Addon List"; @@ -46,7 +46,7 @@ $lang->welcome_to_zeroboard_xe = 'Welcome to the admin page of Zeroboard XE'; $lang->about_admin_page = "Admin page is still being developing,\nWe will add essential contents by accepting many good suggestions during Closebeta."; - $lang->about_lang_env = "To apply selected language set to users as default, click the [Save] button after changing it."; + $lang->about_lang_env = "To apply selected language as default language, click the [Save] button."; $lang->zeroboard_xe_user_links = 'Links for Users'; $lang->zeroboard_xe_developer_links = 'Links for Developers'; diff --git a/modules/editor/lang/en.lang.php b/modules/editor/lang/en.lang.php index 4b728a488..b068b1ef7 100644 --- a/modules/editor/lang/en.lang.php +++ b/modules/editor/lang/en.lang.php @@ -72,6 +72,10 @@ $lang->edit->submit = 'Submit'; + $lang->edit->help_remove_format = "Tags in selected area will be removed"; + $lang->edit->help_strike_through = "Strike will be on the words"; + $lang->edit->help_align_full = "Align left and right"; + $lang->edit->help_fontcolor = "Select font color"; $lang->edit->help_fontbgcolor = "Select background color of font"; $lang->edit->help_bold = "Make font bold"; diff --git a/modules/springnote/lang/en.lang.php b/modules/springnote/lang/en.lang.php index 0fc350c66..72fe28449 100644 --- a/modules/springnote/lang/en.lang.php +++ b/modules/springnote/lang/en.lang.php @@ -21,9 +21,9 @@ $lang->cmd_springnote_list = 'Springnote List'; $lang->cmd_view_info = 'Springnote Info'; - $lang->about_springnote = "Springnote is a Wiki Service that Openmaru provides.
Springnote ZeroboardXE module displays specific springnote pages as internal documents."; + $lang->about_springnote = "Springnote is a Wiki Service which is provided by Openmaru.
Springnote module displays specific springnote pages as internal documents."; $lang->about_springnote_openid = "Please input your OpenID that created Springnote"; - $lang->about_springnote_userkey = 'User Key is needed to enable Springnote module.
Please input generated User Key after entering your OpenID at [Get User Key] .'; + $lang->about_springnote_userkey = 'User Key is necessary to enable Springnote module.
Please input generated User Key after entering your OpenID at [Get User Key] .'; $lang->about_springnote_pageid = 'Please input pageid if you want to display specific page first.'; $lang->about_springnote_pageid_setup = "You can set 'Show only Selected Pages (hide list)', 'Show from Selected Pages (show list)' etc when you set page number."; $lang->about_springnote_domain = "You may set other domain's springnote. (Please input only domain from the form of 'http://domain.springnote.com' )"; diff --git a/modules/widget/lang/en.lang.php b/modules/widget/lang/en.lang.php index 4ae9b9bb3..3c5b7a7c9 100644 --- a/modules/widget/lang/en.lang.php +++ b/modules/widget/lang/en.lang.php @@ -33,9 +33,9 @@ $lang->generated_code = 'Generated Code'; - $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->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 cf8e2ac16c6e7b5a1a409e66daf84a2f3f841bbd Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 8 Jun 2008 07:13:11 +0000 Subject: [PATCH 28/87] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B6=94=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4244 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/conf/info.xml | 5 +++++ modules/integration_search/conf/info.xml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/autolink/conf/info.xml b/addons/autolink/conf/info.xml index 1673cc894..1c03a00c8 100644 --- a/addons/autolink/conf/info.xml +++ b/addons/autolink/conf/info.xml @@ -1,18 +1,23 @@ 자동 링크 애드온 + Auto Link 自动链接插件 auto vínculo addon авто ссылка аддон Auto-Link Addon zero + zero zero zero zero zero 게시글과 댓글의 내용중 http로 시작되는 일반 문자열에 자동으로 링크를 걸고 각 링크에 마우스 오버시 새창과 현재창 메뉴가 나타나도록 꾸미는 애드온입니다. + + + This addon makes a link to string that starts with http, and displays 主题及评论中以http开始的字符串,自动转换为链接。并且鼠标移到链接上方时,将出现可选(新窗/本页面)提示框。 diff --git a/modules/integration_search/conf/info.xml b/modules/integration_search/conf/info.xml index ec05d5f93..c265ab9f3 100644 --- a/modules/integration_search/conf/info.xml +++ b/modules/integration_search/conf/info.xml @@ -3,7 +3,7 @@ 통합검색 搜索 統合検索 - Integration Search + Integrated Search Búsqueda Integrada Интегрируемый поиск From d140fe1b4b534d2f97e01b0148d089570ab7b33d Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 8 Jun 2008 07:19:05 +0000 Subject: [PATCH 29/87] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4245 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/autolink/conf/info.xml b/addons/autolink/conf/info.xml index 1c03a00c8..e800c35cc 100644 --- a/addons/autolink/conf/info.xml +++ b/addons/autolink/conf/info.xml @@ -17,7 +17,7 @@ 게시글과 댓글의 내용중 http로 시작되는 일반 문자열에 자동으로 링크를 걸고 각 링크에 마우스 오버시 새창과 현재창 메뉴가 나타나도록 꾸미는 애드온입니다. - This addon makes a link to string that starts with http, and displays + This addon makes a link to a string that starts with http. 主题及评论中以http开始的字符串,自动转换为链接。并且鼠标移到链接上方时,将出现可选(新窗/本页面)提示框。 From f0591114932e8e639a251539e33f3e2199724d59 Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 8 Jun 2008 08:06:10 +0000 Subject: [PATCH 30/87] =?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@4246 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_communication/conf/info.xml | 6 +++--- addons/member_extra_info/conf/info.xml | 6 +++--- addons/resize_image/conf/info.xml | 10 +++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/addons/member_communication/conf/info.xml b/addons/member_communication/conf/info.xml index 9ac28a1b4..803e8782b 100644 --- a/addons/member_communication/conf/info.xml +++ b/addons/member_communication/conf/info.xml @@ -3,7 +3,7 @@ 커뮤니케이션 커뮤니케이션 커뮤니케이션 - 커뮤니케이션 + Communication 커뮤니케이션 커뮤니케이션 커뮤니케이션 @@ -28,8 +28,8 @@ 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. - 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. - 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + This addon enables communication module in order to use message or friend function. + Please enable this addon in case you want to use those functions. 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 784126d93..273fdcc83 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -3,7 +3,7 @@ 회원 확장 정보 출력 회원 확장 정보 출력 회원 확장 정보 출력 - 회원 확장 정보 출력 + Extra Member Info 회원 확장 정보 출력 회원 확장 정보 출력 회원 확장 정보 출력 @@ -28,8 +28,8 @@ 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + This addon displays a member's image name, image mark, signature. + Please enable this addon in case you want to display them. 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. diff --git a/addons/resize_image/conf/info.xml b/addons/resize_image/conf/info.xml index 570315e22..e95475111 100644 --- a/addons/resize_image/conf/info.xml +++ b/addons/resize_image/conf/info.xml @@ -2,6 +2,7 @@ 본문내 이미지 조절 애드온 内容区图片缩放插件 + Image Resizer Imagen de control add-on bonmunnae Image контроля добавить-на bonmunnae Image-Add-on bonmunnae @@ -20,13 +21,16 @@ 自动调整主题内容区内的图片大小,点击将显示原始大小的插件。 - + + This addon resizes images inserted in the article, and shows original image when you click on them. + + La imagen corporal se inserta dentro del cuerpo para que se adapte al tamaño de la muestra original cuando hago clic en los add-ons. - + Орган изображение вставляется внутрь тела с учетом размера первоначального шоу, когда я нажимаю на надстройки. - + Body Bild eingefügt im Inneren des Körpers zu passen die Größe des Originals zeigen, wenn ich darauf klicke auf das Add-ons. From 45db9367500b9dcb6c02d294732de477155967b9 Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 8 Jun 2008 08:15:24 +0000 Subject: [PATCH 31/87] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=98=A4?= =?UTF-8?q?=ED=83=80=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@4247 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/conf/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/resize_image/conf/info.xml b/addons/resize_image/conf/info.xml index e95475111..1ee0462ba 100644 --- a/addons/resize_image/conf/info.xml +++ b/addons/resize_image/conf/info.xml @@ -21,7 +21,7 @@ 自动调整主题内容区内的图片大小,点击将显示原始大小的插件。 - + This addon resizes images inserted in the article, and shows original image when you click on them. From b05cc853c692ed080cd1633cd50a61fb277d84d1 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 03:18:06 +0000 Subject: [PATCH 32/87] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A7=81=ED=81=AC?= =?UTF-8?q?=EC=8B=9C=20=EB=A7=81=ED=81=AC=EA=B0=80=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4248 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index d212c59f6..38180ea10 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -11,7 +11,7 @@ From 46f570bed2ce54760dcde2976ededf8662dffbf4 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 03:44:54 +0000 Subject: [PATCH 33/87] =?UTF-8?q?AJAX=20call=EC=8B=9C=EC=97=90=20return=20?= =?UTF-8?q?=EB=B0=9B=EC=9D=80=20xmlDoc=EC=9D=84=20parsing=ED=95=98?= =?UTF-8?q?=EB=8A=94=20javascript=EB=A5=BC=20=EC=A0=95=EC=83=81=EB=8F=99?= =?UTF-8?q?=EC=9E=91=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=A7=88=EB=AC=B4?= =?UTF-8?q?=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4249 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 1 + common/js/xml_handler.js | 35 ++++++++++++++++++----------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index e28d382f0..c942c1519 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -401,6 +401,7 @@ function displayPopupMenu(ret_obj, response_tags, params) { } else { if(menus) { var item = menus['item']; + if(item.length<1) item = new Array(item); if(item.length) { for(var i=0;i0) { + ret_obj[name][ret_obj[name].length] = value; } else { - if(ret_obj[name].length>0) { - ret_obj[name][ret_obj[name].length] = value; - } else { - var tmp_value = ret_obj[name]; - ret_obj[name] = new Array(); - ret_obj[name][ret_obj[name].length] = tmp_value; - ret_obj[name][ret_obj[name].length] = value; - } + var tmp_value = ret_obj[name]; + ret_obj[name] = new Array(); + ret_obj[name][ret_obj[name].length] = tmp_value; + ret_obj[name][ret_obj[name].length] = value; } } + } obj = obj.nextSibling; } @@ -203,7 +204,7 @@ function xml_handlerToZMsgObject(xmlDoc, tags) { tags[tags.length] = "act"; var parsed_array = this.parseXMLDoc(xmlDoc.getElementsByTagName('response')[0]); - + var obj_ret = new Array(); for(var i=0; i Date: Mon, 9 Jun 2008 03:50:07 +0000 Subject: [PATCH 34/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4250 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_extra_info/conf/info.xml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index 273fdcc83..f1a3cd272 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -16,32 +16,25 @@ zero zero - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - This addon displays a member's image name, image mark, signature. - Please enable this addon in case you want to display them. + This addon displays a member's image name, image mark. - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - 회원이 등록한 이미지이름, 이미지마크, 서명등을 화면에 출력하는 애드온입니다. - 이미지이름, 이미지마크, 서명등을 노출하고 싶다면 이 애드온을 활성화 시키세요. + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. From 198b531aaef5b82fcf35b9eb18a204355116b14d Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 04:17:27 +0000 Subject: [PATCH 35/87] =?UTF-8?q?=ED=9A=8C=EC=9B=90/=EB=AC=B8=EC=84=9C/?= =?UTF-8?q?=EB=8C=93=EA=B8=80=EC=9D=98=20=ED=8C=9D=EC=97=85=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=EC=97=90=20=EC=B6=94=EC=A0=81=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4251 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 1 + common/lang/es.lang.php | 1 + common/lang/fr.lang.php | 1 + common/lang/ge.lang.php | 3 ++- common/lang/jp.lang.php | 1 + common/lang/ko.lang.php | 1 + common/lang/ru.lang.php | 1 + common/lang/zh-CN.lang.php | 1 + modules/comment/comment.model.php | 16 +++++++++++++ modules/comment/lang/en.lang.php | 1 + modules/comment/lang/es.lang.php | 1 + modules/comment/lang/fr.lang.php | 1 + modules/comment/lang/jp.lang.php | 1 + modules/comment/lang/ko.lang.php | 1 + modules/comment/lang/ru.lang.php | 1 + modules/comment/lang/zh-CN.lang.php | 1 + .../comment/queries/getTotalCommentList.xml | 1 + modules/document/document.model.php | 21 +++++++++++++---- modules/member/lang/en.lang.php | 2 ++ modules/member/lang/es.lang.php | 2 ++ modules/member/lang/jp.lang.php | 2 ++ modules/member/lang/ko.lang.php | 4 +++- modules/member/lang/ru.lang.php | 2 ++ modules/member/lang/zh-CN.lang.php | 2 ++ modules/member/member.model.php | 22 ++++++++++++------ .../member/tpl/images/icon_trace_comment.gif | Bin 0 -> 169 bytes .../member/tpl/images/icon_trace_document.gif | Bin 0 -> 363 bytes 27 files changed, 78 insertions(+), 13 deletions(-) create mode 100755 modules/member/tpl/images/icon_trace_comment.gif create mode 100755 modules/member/tpl/images/icon_trace_document.gif diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 8a5934b90..28a84ee85 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = "Publish"; $lang->cmd_layout_setup = 'Configure layout'; $lang->cmd_layout_edit = 'Edit layout'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = 'Enable'; $lang->disable = 'Disable'; diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 11864cf1c..0deb7f450 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -61,6 +61,7 @@ $lang->cmd_publish = "Publicar"; $lang->cmd_layout_setup = 'Configuración del diseño'; $lang->cmd_layout_edit = 'Editar el diseño'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = 'Activar'; $lang->disable = 'Desactivar'; diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index 1cae84b4e..c04fc4626 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = "Publier"; $lang->cmd_layout_setup = 'Configurer la Mise en page'; $lang->cmd_layout_edit = 'Editer la Mise en page'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = 'Valide'; $lang->disable = 'Invalide'; diff --git a/common/lang/ge.lang.php b/common/lang/ge.lang.php index 48f0b36db..0fe60928d 100644 --- a/common/lang/ge.lang.php +++ b/common/lang/ge.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = 'Veröffentlichen'; $lang->cmd_layout_setup = 'Konfiguration Layout'; $lang->cmd_layout_edit = 'Layout bearbeiten'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = 'Aktivieren'; $lang->deaktivieren = 'Deaktivieren'; @@ -247,4 +248,4 @@ $lang->filter->invalid_alpha = "Das Format von% s ist ungültig. Bitte geben Sie nur Alphabete"; $lang->filter->invalid_alpha_number = "Das Format von% s ist ungültig. Bitte geben Sie Ihre Alphabete oder Zahlen"; $lang->filter->invalid_number = "Das Format von% s ist ungültig. Bitte geben Sie nur Zahlen"; -?> \ No newline at end of file +?> diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php index 1d320aa23..bb2e6cb03 100644 --- a/common/lang/jp.lang.php +++ b/common/lang/jp.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = "発行"; $lang->cmd_layout_setup = 'レイアウト設定'; $lang->cmd_layout_edit = 'レイアウト編集'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = '可能'; $lang->disable = '不可'; diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index e6e289b5c..06143758a 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = "발행"; $lang->cmd_layout_setup = '레이아웃 설정'; $lang->cmd_layout_edit = '레이아웃 편집'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = '가능'; $lang->disable = '불가능'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index 83e0b4c25..f92d72f08 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = "Опубликовать"; $lang->cmd_layout_setup = 'Конфигурировать лейаут'; $lang->cmd_layout_edit = 'Редактировать лейаут'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = 'Включено'; $lang->disable = 'Выключено'; diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index 56e32c792..7e1e81a5d 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -62,6 +62,7 @@ $lang->cmd_publish = "发表"; $lang->cmd_layout_setup = '布局设置'; $lang->cmd_layout_edit = '编辑布局'; + $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; $lang->enable = '可用'; $lang->disable = '禁用'; diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index 9921223df..13cf50051 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -53,6 +53,19 @@ // trigger 호출 (after) ModuleHandler::triggerCall('comment.getCommentMenu', 'after', $menu_list); + // 관리자일 경우 ip로 글 찾기 + if($logged_info->is_admin == 'Y') { + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($comment_srl); + + if($oComment->isExists()) { + // ip주소에 해당하는 글 찾기 + $url = getUrl('','module','admin','act','dispCommentAdminList','search_target','ipaddress','search_keyword',$oComment->get('ipaddress')); + $icon_path = './modules/member/tpl/images/icon_management.gif'; + $oCommentController->addCommentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress'); + } + } + // 팝업메뉴의 언어 변경 $menus = Context::get('comment_popup_menu_list'); $menus_count = count($menus); @@ -351,6 +364,9 @@ case 'ipaddress' : $args->s_ipaddress= $search_keyword; break; + case 'member_srl' : + $args->{"s_".$search_target} = (int)$search_keyword; + break; } } diff --git a/modules/comment/lang/en.lang.php b/modules/comment/lang/en.lang.php index 9c917770c..ee2036214 100644 --- a/modules/comment/lang/en.lang.php +++ b/modules/comment/lang/en.lang.php @@ -21,6 +21,7 @@ 'user_id' => 'ID', 'user_name' => 'Name', 'nick_name' => 'Nickname', + 'member_srl' => 'Member Serial', 'email_address' => 'Email', 'homepage' => 'Homepage', 'regdate' => 'Date', diff --git a/modules/comment/lang/es.lang.php b/modules/comment/lang/es.lang.php index 17b0bc84b..699a80c36 100644 --- a/modules/comment/lang/es.lang.php +++ b/modules/comment/lang/es.lang.php @@ -21,6 +21,7 @@ 'user_id' => 'ID', 'user_name' => 'Nombre', 'nick_name' => 'Apodo', + 'member_srl' => 'Member Serial', 'email_address' => 'Correo Electrónico', 'homepage' => 'Página web', 'regdate' => 'Fecha del registro', diff --git a/modules/comment/lang/fr.lang.php b/modules/comment/lang/fr.lang.php index 7b80aa6f2..351105280 100644 --- a/modules/comment/lang/fr.lang.php +++ b/modules/comment/lang/fr.lang.php @@ -22,6 +22,7 @@ 'user_id' => 'ID', 'user_name' => 'Nom', 'nick_name' => 'Surnom', + 'member_srl' => 'Member Serial', 'email_address' => 'Courriel', 'homepage' => 'Page d\'Accueil', 'regdate' => 'Jour', diff --git a/modules/comment/lang/jp.lang.php b/modules/comment/lang/jp.lang.php index 339d4b964..325b17b79 100644 --- a/modules/comment/lang/jp.lang.php +++ b/modules/comment/lang/jp.lang.php @@ -22,6 +22,7 @@ 'user_id' => 'ユーザID', 'user_name' => '名前', 'nick_name' => 'ニックネーム', + 'member_srl' => 'Member Serial', 'email_address' => 'メールアドレス', 'homepage' => 'ホームページURL', 'regdate' => '登録日', diff --git a/modules/comment/lang/ko.lang.php b/modules/comment/lang/ko.lang.php index c8692772a..5adccd71b 100644 --- a/modules/comment/lang/ko.lang.php +++ b/modules/comment/lang/ko.lang.php @@ -22,6 +22,7 @@ 'user_id' => '아이디', 'user_name' => '이름', 'nick_name' => '닉네임', + 'member_srl' => '회원번호', 'email_address' => '이메일주소', 'homepage' => '홈페이지', 'regdate' => '등록일', diff --git a/modules/comment/lang/ru.lang.php b/modules/comment/lang/ru.lang.php index 01eeaaa09..cdbbde467 100644 --- a/modules/comment/lang/ru.lang.php +++ b/modules/comment/lang/ru.lang.php @@ -21,6 +21,7 @@ 'user_id' => 'ID', 'user_name' => 'Имя', 'nick_name' => 'Ник', + 'member_srl' => 'Member Serial', 'email_address' => 'Email', 'homepage' => 'Домашняя страница', 'regdate' => 'Дата', diff --git a/modules/comment/lang/zh-CN.lang.php b/modules/comment/lang/zh-CN.lang.php index f3b1e7aea..4d7a6f415 100644 --- a/modules/comment/lang/zh-CN.lang.php +++ b/modules/comment/lang/zh-CN.lang.php @@ -22,6 +22,7 @@ 'user_id' => 'I D', 'user_name' => '姓名', 'nick_name' => '昵称', + 'member_srl' => 'Member Serial', 'email_address' => '电子信箱', 'homepage' => '主页', 'regdate' => '日期', diff --git a/modules/comment/queries/getTotalCommentList.xml b/modules/comment/queries/getTotalCommentList.xml index f3daff1a5..555311ba2 100644 --- a/modules/comment/queries/getTotalCommentList.xml +++ b/modules/comment/queries/getTotalCommentList.xml @@ -13,6 +13,7 @@ + diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 53a7d6027..ee67ce346 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -56,10 +56,6 @@ $oDocumentController = &getController('document'); - // 인쇄 버튼 추가 - $url = getUrl('','module','document','act','dispDocumentPrint','document_srl',$document_srl); - $oDocumentController->addDocumentPopupMenu($url,'cmd_print','./modules/document/tpl/icons/print.gif','printDocument'); - // 회원이어야만 가능한 기능 if($logged_info->member_srl) { @@ -80,9 +76,26 @@ $oDocumentController->addDocumentPopupMenu($url,'cmd_scrap','./modules/document/tpl/icons/scrap.gif','javascript'); } + // 인쇄 버튼 추가 + $url = getUrl('','module','document','act','dispDocumentPrint','document_srl',$document_srl); + $oDocumentController->addDocumentPopupMenu($url,'cmd_print','./modules/document/tpl/icons/print.gif','printDocument'); + // trigger 호출 (after) ModuleHandler::triggerCall('document.getDocumentMenu', 'after', $menu_list); + // 관리자일 경우 ip로 글 찾기 + if($logged_info->is_admin == 'Y') { + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + + if($oDocument->isExists()) { + // ip주소에 해당하는 글 찾기 + $url = getUrl('','module','admin','act','dispDocumentAdminList','search_target','ipaddress','search_keyword',$oDocument->get('ipaddress')); + $icon_path = './modules/member/tpl/images/icon_management.gif'; + $oDocumentController->addDocumentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress'); + } + } + // 팝업메뉴의 언어 변경 $menus = Context::get('document_popup_menu_list'); $menus_count = count($menus); diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 3c0030f3d..6f2bda070 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -86,6 +86,8 @@ $lang->cmd_manage_id = 'Manage Prohibited IDs'; $lang->cmd_manage_form = 'Manage Join Form'; $lang->cmd_view_own_document = 'Written Articles'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; $lang->cmd_view_scrapped_document = 'Scraps'; $lang->cmd_view_saved_document = 'Saved Articles'; $lang->cmd_send_email = 'Send Mail'; diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index aba95e29b..d1104b259 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -86,6 +86,8 @@ $lang->cmd_manage_id = 'Manejo de ID prohibidos'; $lang->cmd_manage_form = 'Manejo de forma del registro'; $lang->cmd_view_own_document = 'Ver documentos escritos'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; $lang->cmd_view_scrapped_document = 'Ver Scraps'; $lang->cmd_view_saved_document = 'Ver artículos guardados'; $lang->cmd_send_email = 'Enviar Email'; diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index 87bf24b48..b30290379 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -86,6 +86,8 @@ $lang->cmd_manage_id = '禁止ID管理'; $lang->cmd_manage_form = '加入フォーム管理'; $lang->cmd_view_own_document = '書き込み表示'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; $lang->cmd_view_scrapped_document = 'スクラップ表示'; $lang->cmd_view_saved_document = '保存ドキュメント表示'; $lang->cmd_send_email = 'メール送信'; diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 0908b9712..a423a554e 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -85,7 +85,9 @@ $lang->cmd_send_mail = '메일발송'; $lang->cmd_manage_id = '금지아이디관리'; $lang->cmd_manage_form = '가입폼관리'; - $lang->cmd_view_own_document = '작성글 보기'; + $lang->cmd_view_own_document = '작성 글 보기'; + $lang->cmd_trace_document = '작성글 추적'; + $lang->cmd_trace_comment = '작성 댓글 추적'; $lang->cmd_view_scrapped_document = '스크랩 보기'; $lang->cmd_view_saved_document = '저장함 보기'; $lang->cmd_send_email = '메일 보내기'; diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index 9f817ef3a..189c0c18f 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -85,6 +85,8 @@ $lang->cmd_manage_id = 'Управление запрещенными ID'; $lang->cmd_manage_form = 'Управление формой регистрации'; $lang->cmd_view_own_document = 'Просмотреть написанные статьи'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; $lang->cmd_view_scrapped_document = 'Черновики'; $lang->cmd_view_saved_document = 'Просмотреть сохраненные статьи'; $lang->cmd_send_email = 'Отправить почту'; diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index 4814d6673..dd832fac1 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -87,6 +87,8 @@ $lang->cmd_manage_id = '禁止用户名管理'; $lang->cmd_manage_form = '注册表单管理'; $lang->cmd_view_own_document = '查看发表主题'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; $lang->cmd_view_scrapped_document = '查看收藏'; $lang->cmd_view_saved_document = '查看临时保存箱'; $lang->cmd_send_email = '发送邮件'; diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 381da0d71..583c93c52 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -46,13 +46,6 @@ $oMemberController = &getController('member'); - // 최고 관리자라면 회원정보 수정 메뉴 만듬 - if($logged_info->is_admin == 'Y') { - $url = getUrl('','module','admin','act','dispMemberAdminInsert','member_srl',$member_srl); - $icon_path = './modules/member/tpl/images/icon_management.gif'; - $oMemberController->addMemberPopupMenu($url,'cmd_management',$icon_path,'MemberModifyInfo'); - } - // 회원 정보 보기 (비회원일 경우 볼 수 없도록 수정) if($logged_info->member_srl) { $url = getUrl('','mid',$mid,'act','dispMemberInfo','member_srl',$member_srl); @@ -82,6 +75,21 @@ // trigger 호출 (after) ModuleHandler::triggerCall('member.getMemberMenu', 'after', $null); + // 최고 관리자라면 회원정보 수정 메뉴 만듬 + if($logged_info->is_admin == 'Y') { + $url = getUrl('','module','admin','act','dispMemberAdminInsert','member_srl',$member_srl); + $icon_path = './modules/member/tpl/images/icon_management.gif'; + $oMemberController->addMemberPopupMenu($url,'cmd_management',$icon_path,'MemberModifyInfo'); + + $url = getUrl('','module','admin','act','dispDocumentAdminList','search_target','member_srl','search_keyword',$member_srl); + $icon_path = './modules/member/tpl/images/icon_trace_document.gif'; + $oMemberController->addMemberPopupMenu($url,'cmd_trace_document',$icon_path,'TraceMemberDocument'); + + $url = getUrl('','module','admin','act','dispCommentAdminList','search_target','member_srl','search_keyword',$member_srl); + $icon_path = './modules/member/tpl/images/icon_trace_comment.gif'; + $oMemberController->addMemberPopupMenu($url,'cmd_trace_comment',$icon_path,'TraceMemberComment'); + } + // 팝업메뉴의 언어 변경 $menus = Context::get('member_popup_menu_list'); $menus_count = count($menus); diff --git a/modules/member/tpl/images/icon_trace_comment.gif b/modules/member/tpl/images/icon_trace_comment.gif new file mode 100755 index 0000000000000000000000000000000000000000..b234dec94186734bc754c1a3b51518a546f6cb6e GIT binary patch literal 169 zcmZ?wbhEHb6krfw*v!q))!p`N^XAiMPW=D(@9TpH50@_8vv=E~#dAM=_%PYf@IM$Z zAOXdnEQ|~c+zdJ(F_0MyEMWyFJ+)0OW+zV%OyDRI@0jz#(@VZ+&xRmp(@R4mRR!#o&@x%Xr|DJ8$ z{Nu;hgE%O&FYXAD+ z!Na9X-@bjFUl8{5$M?yGhX28Ufo4GQCkrD3gCc_t$Oe#~7}z=vOepZs5i_3KQ)Kx- zgna>D2G^$wt8)(-1XwE=Cuf^YSy(2((NiTTS$;3SF~;Ge!!h;?sr$dz{EKj|6whLl zkeA|=l27L0XPr>T)h)#(@5~|^7A7w(UpH?Cqnt!r{qp)nv*o)Kq}Fvii7_(rG0Lx7 eF11jRS%^1(uJqv})172a$gDW+cGks_!5RR$&Vx7r literal 0 HcmV?d00001 From 971e8f78ba57adee88cbacf20c35e1856571b0d7 Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 9 Jun 2008 05:00:36 +0000 Subject: [PATCH 36/87] =?UTF-8?q?#480=20=20-=20insertDocument,=20insertCom?= =?UTF-8?q?ment=20=EC=97=90=20blamed=5Fcount=ED=95=AD=EB=AA=A9=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4252 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/queries/insertComment.xml | 1 + modules/document/queries/insertDocument.xml | 1 + modules/document/queries/insertDocumentVotedLog.xml | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/comment/queries/insertComment.xml b/modules/comment/queries/insertComment.xml index fbfb2e8a2..995466458 100644 --- a/modules/comment/queries/insertComment.xml +++ b/modules/comment/queries/insertComment.xml @@ -11,6 +11,7 @@ + diff --git a/modules/document/queries/insertDocument.xml b/modules/document/queries/insertDocument.xml index 18ffff75c..9aae18a41 100644 --- a/modules/document/queries/insertDocument.xml +++ b/modules/document/queries/insertDocument.xml @@ -13,6 +13,7 @@ + diff --git a/modules/document/queries/insertDocumentVotedLog.xml b/modules/document/queries/insertDocumentVotedLog.xml index 3cd661462..d9cf6e471 100644 --- a/modules/document/queries/insertDocumentVotedLog.xml +++ b/modules/document/queries/insertDocumentVotedLog.xml @@ -7,6 +7,6 @@ - + From dc941805d4d09d83a753891d205dc54cdc9180a7 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 05:18:19 +0000 Subject: [PATCH 37/87] =?UTF-8?q?#445=20=EC=9C=84=EC=A0=AF=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=83=9D=EC=84=B1=EC=8B=9C=20mid=5Flist=EA=B0=80?= =?UTF-8?q?=20=EC=95=84=EB=8B=8C=20mid=EB=9D=BC=EB=8A=94=20=EC=A7=80?= =?UTF-8?q?=EC=8B=9C=EC=96=B4=EB=A1=9C=20=EB=8B=A8=EC=9D=BC=20mid=EB=A5=BC?= =?UTF-8?q?=20=EC=84=A0=ED=83=9D=ED=95=98=EA=B2=8C=20=ED=95=98=EA=B3=A0=20?= =?UTF-8?q?archive=5Flist,=20tag=5Flist=EC=9D=98=20mid=5Flist=EB=A5=BC=20m?= =?UTF-8?q?id=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@4253 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 2 +- modules/widget/tpl/widget_generate_code.html | 18 ++++++++++++++++++ .../tpl/widget_generate_code_in_page.html | 15 +++++++++++++++ widgets/archive_list/archive_list.class.php | 16 ++++++++++------ widgets/archive_list/conf/info.xml | 4 ++-- .../skins/blog_archive_list/archive_list.html | 2 +- widgets/tag_list/conf/info.xml | 4 ++-- widgets/tag_list/skins/blog_tag_list/tags.html | 2 +- widgets/tag_list/tag_list.class.php | 12 +++++++++--- 9 files changed, 59 insertions(+), 16 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index c942c1519..d3ff24680 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -795,7 +795,7 @@ if(xIE4Up) { else if(this.selectedIndex < this.options.length - 1) this.selectedIndex++; else this.selectedIndex--; } else { - this.oldonchange(); + if(this.oldonchange) this.oldonchange(); } } diff --git a/modules/widget/tpl/widget_generate_code.html b/modules/widget/tpl/widget_generate_code.html index 1b0899769..815bf69b4 100644 --- a/modules/widget/tpl/widget_generate_code.html +++ b/modules/widget/tpl/widget_generate_code.html @@ -95,6 +95,24 @@ + + + + + +

{nl2br($var->description)}

diff --git a/modules/widget/tpl/widget_generate_code_in_page.html b/modules/widget/tpl/widget_generate_code_in_page.html index c105d5bc4..28a2d981f 100644 --- a/modules/widget/tpl/widget_generate_code_in_page.html +++ b/modules/widget/tpl/widget_generate_code_in_page.html @@ -108,6 +108,21 @@ + + +

{nl2br($var->description)}

diff --git a/widgets/archive_list/archive_list.class.php b/widgets/archive_list/archive_list.class.php index 542073b49..932d17c47 100644 --- a/widgets/archive_list/archive_list.class.php +++ b/widgets/archive_list/archive_list.class.php @@ -15,21 +15,25 @@ * 결과를 만든후 print가 아니라 return 해주어야 한다 **/ function proc($args) { - // 위젯 자체적으로 설정한 변수들을 체크 - $title = $args->title; - $mid_list = explode(",",$args->mid_list); + if($args->mid_list) { + $tmp_mid = explode(",",$args->mid_list); + $mid = $tmp_mid[0]; + } else { + $mid = $args->mid; + } // DocumentModel::getMonthlyArchivedList()를 이용하기 위한 변수 정리 - $obj->mid = $mid_list; + $obj->mid = $mid; // document 모듈의 model 객체를 받아서 getMonthlyArchivedList() method를 실행 $oDocumentModel = &getModel('document'); $output = $oDocumentModel->getMonthlyArchivedList($obj); // 템플릿 파일에서 사용할 변수들을 세팅 - if(count($mid_list)==1) $widget_info->module_name = $mid_list[0]; + $widget_info->module_name = $mid; + $widget_info->mid = $mid; - $widget_info->title = $title; + $widget_info->title = $args->title; $widget_info->archive_list = $output->data; Context::set('widget_info', $widget_info); diff --git a/widgets/archive_list/conf/info.xml b/widgets/archive_list/conf/info.xml index 10571f870..93125b133 100644 --- a/widgets/archive_list/conf/info.xml +++ b/widgets/archive_list/conf/info.xml @@ -54,14 +54,14 @@ Este será el título del reporte. Это будет заголовком отчета. - + 대상 모듈 对象模块 モジュール Target Module Módulo objetivo Модуль назначения - mid_list + mid 선택하신 모듈에 등록된 글을 대상으로 합니다. 把被选模块作为统计对象。 チェックされたモジュールに登録されたコンテンツ(書き込み)を対象とします。 diff --git a/widgets/archive_list/skins/blog_archive_list/archive_list.html b/widgets/archive_list/skins/blog_archive_list/archive_list.html index 94d41ee45..e8b347dfa 100644 --- a/widgets/archive_list/skins/blog_archive_list/archive_list.html +++ b/widgets/archive_list/skins/blog_archive_list/archive_list.html @@ -29,7 +29,7 @@
  • {zdate($val->month,'Y. m')} ({$val->count})
  • -
  • {zdate($val->month,'Y. m')} ({$val->count})
  • +
  • {zdate($val->month,'Y. m')} ({$val->count})
  • diff --git a/widgets/tag_list/conf/info.xml b/widgets/tag_list/conf/info.xml index eae4f07a3..07111dce4 100644 --- a/widgets/tag_list/conf/info.xml +++ b/widgets/tag_list/conf/info.xml @@ -51,14 +51,14 @@ Usted puede definir el número de etiquetas a mostrar. (predefinido: 20) Вы можете сконфигурировать число тегов для показа. (стандарт: 20)
    - + 대상 모듈 模块对象 モジュール Target Module Módulo Objetivo Модуль назначения - mid_list + mid 선택하신 모듈에 등록된 꼬리표를 대상으로 합니다. 将把被选模块当中的标签作为对象。 チェックされたモジュールに登録されたタグを対象とします。 diff --git a/widgets/tag_list/skins/blog_tag_list/tags.html b/widgets/tag_list/skins/blog_tag_list/tags.html index 2f10930b2..8b1e1a6c6 100644 --- a/widgets/tag_list/skins/blog_tag_list/tags.html +++ b/widgets/tag_list/skins/blog_tag_list/tags.html @@ -45,7 +45,7 @@ {htmlspecialchars($val->tag)} - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} diff --git a/widgets/tag_list/tag_list.class.php b/widgets/tag_list/tag_list.class.php index 0f9a5bd7a..a06b5d0f7 100644 --- a/widgets/tag_list/tag_list.class.php +++ b/widgets/tag_list/tag_list.class.php @@ -19,10 +19,15 @@ $title = $args->title; $list_count = (int)$args->list_count; if(!$list_count) $list_count = 20; - $mid_list = explode(",",$args->mid_list); + if($args->mid_list) { + $tmp_mid = explode(",",$args->mid_list); + $mid = $tmp_mid[0]; + } else { + $mid = $args->mid; + } // TagModel::getTagList()를 이용하기 위한 변수 정리 - $obj->mid = $mid_list; + $obj->mid = $mid; $obj->list_count = $list_count; // tag 모듈의 model 객체를 받아서 getTagList() method를 실행 @@ -30,9 +35,10 @@ $output = $oTagModel->getTagList($obj); // 템플릿 파일에서 사용할 변수들을 세팅 - if(count($mid_list)==1) $widget_info->module_name = $mid_list[0]; + $widget_info->module_name = $mid; $widget_info->title = $title; + $widget_info->mid = $mid; if(count($output->data)) { From ecb696276be20ce3678850b8ab4bd157fc530de5 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 05:28:25 +0000 Subject: [PATCH 38/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4254 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/calendar/calendar.class.php | 12 +++++++++--- widgets/calendar/conf/info.xml | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/widgets/calendar/calendar.class.php b/widgets/calendar/calendar.class.php index 56558731e..b0eaf035a 100644 --- a/widgets/calendar/calendar.class.php +++ b/widgets/calendar/calendar.class.php @@ -15,12 +15,18 @@ * 결과를 만든후 print가 아니라 return 해주어야 한다 **/ function proc($args) { + if($args->mid_list) { + $tmp_mid = explode(",",$args->mid_list); + $mid = $tmp_mid[0]; + } else { + $mid = $args->mid; + } + // 위젯 자체적으로 설정한 변수들을 체크 $title = $args->title; - $mid_list = explode(",",$args->mid_list); // DocumentModel::getDailyArchivedList()를 이용하기 위한 변수 정리 - $obj->mid = $mid_list; + $obj->mid = $mid; if(Context::get('search_target')=='regdate') { $regdate = Context::get('search_keyword'); @@ -41,7 +47,7 @@ $widget_info->prev_month = date('Ym', mktime(1,0,0,zdate($obj->regdate,'m'),1,zdate($obj->regdate,'Y'))-60*60*24); $widget_info->next_month = date('Ym', mktime(1,0,0,zdate($obj->regdate,'m'),$widget_info->last_day,zdate($obj->regdate,'Y'))+60*60*24); - if(count($mid_list)==1) $widget_info->module_name = $mid_list[0]; + $widget_info->mid = $widget_info->module_name = $mid; $widget_info->title = $title; if(count($output->data)) { diff --git a/widgets/calendar/conf/info.xml b/widgets/calendar/conf/info.xml index a7ab54cb4..4bdfc205e 100644 --- a/widgets/calendar/conf/info.xml +++ b/widgets/calendar/conf/info.xml @@ -21,14 +21,14 @@ Этот виджет отображает календарь, и если отправляется статья, данные будут выделены их ссылкой. - + 대상 모듈 模块对象 モジュール Target Module Módulo objetivo Модуль назначения - mid_list + mid 선택하신 모듈에 등록된 글을 대상으로 합니다. 将把被选模块作为关联对象。 チェックされたモジュールに登録されたコンテンツ(書き込み)を対象とします。 From db4845b1468e4a719f1a186d10cb8b180baaf022 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 07:36:00 +0000 Subject: [PATCH 39/87] =?UTF-8?q?blogapi=20=ED=8C=8C=EC=9D=BC=EC=B2=A8?= =?UTF-8?q?=EB=B6=80=20=EB=B6=80=EB=B6=84=EC=9D=98=20path=EC=99=80=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=EB=90=9C=20=EC=9D=98=EC=8B=AC=20=EB=B6=80?= =?UTF-8?q?=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4255 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/blogapi/blogapi.addon.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/blogapi/blogapi.addon.php b/addons/blogapi/blogapi.addon.php index d5fc3879a..cfee777fa 100644 --- a/addons/blogapi/blogapi.addon.php +++ b/addons/blogapi/blogapi.addon.php @@ -263,7 +263,8 @@ $obj->uploaded_count = $file_count; } } - $obj->content = str_replace($uploaded_target_path,sprintf('/files/attach/images/%s/%s/%s', $this->module_srl, $document_srl, $filename), $obj->content); + + $obj->content = str_replace($uploaded_target_path,sprintf('/files/attach/images/%s/%s%s', $this->module_srl, getNumberingPath($document_srl,3), $filename), $obj->content); $oDocumentController = &getController('document'); $obj->allow_comment = 'Y'; @@ -354,7 +355,7 @@ $obj->uploaded_count += $file_count; } } - $obj->content = str_replace($uploaded_target_path,sprintf('/files/attach/images/%s/%s/%s', $this->module_srl, $document_srl, $filename), $obj->content); + $obj->content = str_replace($uploaded_target_path,sprintf('/files/attach/images/%s/%s%s', $this->module_srl, getNumberingPath($document_srl,3), $filename), $obj->content); $oDocumentController = &getController('document'); $output = $oDocumentController->updateDocument($oDocument,$obj); From e2b3f664d55d32d3a1f3a36b006cf489f7e5d555 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 10:08:00 +0000 Subject: [PATCH 40/87] =?UTF-8?q?=EB=B3=B8=EB=AC=B8=EB=82=B4=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=ED=81=AC=EA=B8=B0=20=EC=A1=B0=EC=A0=88=20?= =?UTF-8?q?=EC=95=A0=EB=93=9C=EC=98=A8=EC=9D=98=20=EB=8F=99=EC=9E=91=20?= =?UTF-8?q?=EB=B0=A9=EC=8B=9D=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EC=9B=90?= =?UTF-8?q?=EB=B3=B8=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B3=B4=EA=B8=B0=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=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@4256 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/css/resize_image.css | 5 - addons/resize_image/iconClose.png | Bin 0 -> 1899 bytes addons/resize_image/iconLeft.png | Bin 0 -> 1218 bytes addons/resize_image/iconRight.png | Bin 0 -> 1266 bytes addons/resize_image/js/resize_image.js | 312 +++++++++++++++------ addons/resize_image/resize_image.addon.php | 1 - 6 files changed, 226 insertions(+), 92 deletions(-) delete mode 100644 addons/resize_image/css/resize_image.css create mode 100755 addons/resize_image/iconClose.png create mode 100755 addons/resize_image/iconLeft.png create mode 100755 addons/resize_image/iconRight.png diff --git a/addons/resize_image/css/resize_image.css b/addons/resize_image/css/resize_image.css deleted file mode 100644 index 2706e2f9b..000000000 --- a/addons/resize_image/css/resize_image.css +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8"; - -#forOriginalImageAreaBackground { z-index:1001; background-color:#AAAAAA; top:0px; left:0px; position:relative; padding:0; border:8px solid #444444; white-space:nowrap; } -#forOriginalImageArea { visibility:hidden; padding:0px; margin:0px; width:100%; height:100%; top:0px; left:0px; position:absolute; z-index:1000; text-align:left; overflow:hidden; background-color:#000000;} -#fororiginalimage { z-index:1002; margin:0; padding:0; } diff --git a/addons/resize_image/iconClose.png b/addons/resize_image/iconClose.png new file mode 100755 index 0000000000000000000000000000000000000000..85621771311fdfb923a1c592a617e85b7f9e845a GIT binary patch literal 1899 zcmXX{dsGuw9=@57kw+#31PnytAcC+WLI?^PWdc&(7z0F%yGmjLh*UI!KoAH-QJ`vw zigsHi77#?LytG+#DK%ijf{@n85u`v6%4$&%UtL7q$)5dV=AOCtcYo)8kNZt2H#Q8h zbg~2hAQ9nPdHBdSJ?1d}-ncj<#Rsz#P7DWto4O68vS;|WV`gY#W?V*cX0}i&0UU9L zNP@BtmiSp&kj|0sa`Vl@p&cEL!~hIf%%7+@5tEQntV%SM+uY?eF6#wTd`V zJvusSt#kv>Nt+=pHUJZ^p(sCv#u#^}-XzLoYoh@wA7{X_^`!7xg6~r89Q0Y9>{(jD=TE1i9Cc>~0ijDH>8z7;#1gYw>eWgPpl(6HYZJb=EA;BP+WdJhMf zhMc;-<0f;YJ*(XKux?xYYagAL@@us98VO%46-NB#%zxLvpB+4k7eDU1md;C}tj8AX>SQc@*xaiD^pyKNn zX2*Wqt1Iflq^N%lq}+uaSV_XGdVI;xH&+lbMti}>joRsfDx(NpAO6+y0o5N4xSw1? zed%<%qPQ5+9Ok4KgdFfMQW^1nw9Kq5W5VzW>lNWgSerI&Qm9n6nnH?nsV9yyG5i); zOwcivOAd_Qjo?R*b>!3g-IvHA=Sf(K3)<|Xw7{-dl^OBvDnkQw&8=1+lCh$OS8 z58(vl(F|jT!9jTSI=zRsDyT4Z_ya-WDv?N9dZ{$r)@9#RN~KaVkH=%pzATynL!qAd ztV1LMruJoJW%(d!3l)MG>fSB7>aw!3Rm-?08~JYU-QLj95D@0*K|uXD$#L3N6i_iQ zgOrx42l3Kk%UT?M+_!a{TnCoGl6iK7V3BS@Q}0M085tqVWU}$*^u!AlDglW1;L&mN zVy^NrZLQ`Dr1X0NmaK)CZ=7 zkvyx7_=y|3ed?Q_+;^Woe)#kE?2|C+hb0&F)rgOho$*!)?8W!9dk*d|A8|=I3dHWZ zbfvQa0K(QoD%hWeT_QwANsd;#t79!sUi~7UOvUVe_DR(ocgn52$d2i2vUM?`J9ms- zUuX8Ol(v@va-gH=b>6_S*qM4diR|(L` zNg8~7?&;5Gdiq=0Z1#9R+~^d-n0ImLoT)s2p0w?Z3c~LaUWBL=_pdY|I-9bcHa0eM zbCjTdV{fB;KGy&>xhRc%|6d%F61jeXBZf7xzgbmrM1AMGD-GlR!Fxi@qu^ zF*=&O#XQUltgQkGp6Y(mZOW2xN==C!kP>xkYarbB*Uy!lVpIM8K@!9yB_(xs_Vkqc zT~qMsa*-qJcyQmU<+|3%(*-zpL$xejurkaXAqpzl7>-SMms^ zD=o_+wkUW5#ki}s*S-c$*-$sRkp)lrN}~=ZKC@yH`7%Y{)xjJ`QzSZ7t*mlK;P)Ddx35+JLw(56HT3)-`8){q&sUJt$a)Y+a#YHNTE`9yznjAZK{6_o~Y9n9Q> z)cf|W+=CQUjxn}acI_qy@VgZYjp_=7%9sGGyh1xX$kZQXgTC02Lh=qUPfy)6K$HV$ znLwYvxwYh4o$yIcXWj(>rFMO3fXvbR6}RoJ(N1vU*3gHM_6ybc-x5TG#%{e4oK*Z@ DXH)ij literal 0 HcmV?d00001 diff --git a/addons/resize_image/iconLeft.png b/addons/resize_image/iconLeft.png new file mode 100755 index 0000000000000000000000000000000000000000..8709013bf1d68b0e51717bce65a7f4fc26d1540d GIT binary patch literal 1218 zcmXX`eNYou5Pz41Kp_`Su;~RQoT3gLl!j;#slbKeNI)bZF;cZP7YQg%3RRFK6KOOW zL9}31rb9;vcF>5lTE7N?Vx7QX_aS~%5dUBE?(^*uv+@S zPyPMFgSQjU5rmkJrW&kbiPXA5ZY%A>Fhe&)z!sH zN=jk{1qHDL0)eq-@h9usvNdmCer#_}(!%sN%=O7a=B1HQQ3=^;5n?&x@RGZL1eE7= zUEM5tczAgF%+ZOlt<9P>X=wo`W4#`JaIm`JQATY-bYDwxMS=(W&X4X#aGDnty_=+8 z89wq^G2W&h6PT}t5{9P(&Wf-^L0_x(pmY573wq5ZgjRZt$2@Nr7R^4r+v<9Br9vn% zBMdA(o|T7u*{V6HoO^q((UNc@O2yp9P{q#=zzRSY*T}87+gk!7MF#rZ!Roz-Z{12*xdU8M#@Az zW*tXHqT9N6!cHYKt=%>88=4?vQN8>2&ucgRH7h?qzZFgE*Grk>vrS9|`hHX8bgN8)Rm>-I4fv^XrTg?~TV#|NIaVDYG z^KNqd^Lu9rfRV`^e9N4YmrtizAuFya4iY`8#ATB#-}jWJ4N_{gnkf`srkoV4e9dZp z##y-VEalt;t!5hy{WH)vgU-N29#?^D5iHi{!iQ>@e#Du$Kq6ypRu)U-b@%=@*EZZP zehDKaH^WTYx9w%YtQQY29bZ#>xC*uq!E@tz(I^}VcYvGf&2K>M><_)EtFF}V*?Al` zHAHtCAK2k64qmLkJPhj}?ajWY@Ic5Lg(sW}FZK<+dQdUyRaBDeiV>(#9`1rF&W-!_ zrm8R+1Cs|DIe9$-t)1Sg^Z5V&h&G-MeMn1BjZfbULJAoB>)t=qTia|w>ulG4tczu$ z)vsw6L+?aHl3>SDJ+_+HRN$nE9<=RXny=DqHy6~**J6Z$oTP031U9y;Cev_oa|{`f z-qGIvyM|8_a~N|eY#zU)gbky33I6S0v0~*NM$Vyl{TpoGo>=g_V2M9QuCQ&7{~IS- z5>1g{3_W+`2||Ks;huHmxGo2kW>_z{4X>jRhOP9z#Rntzg{vcZqyYif^yOLSmiIk| PpAZl&TbcYzl49q-JE`qV literal 0 HcmV?d00001 diff --git a/addons/resize_image/iconRight.png b/addons/resize_image/iconRight.png new file mode 100755 index 0000000000000000000000000000000000000000..62807eb9554ca5a2a963bc7544363066d6acd97c GIT binary patch literal 1266 zcmbu9Sx{3~7{|}OHwjlF5^RBp8ZV<#Dj-W;r~+sA-47y z>&V`sa7kSH_~zlcx6Pw|7=yH}-xe#84Bo4&3sbAr!Rg)&FLXK`g7y{d6}u(OjQ0jb zM*$T7-m>k{qeta(Ik7LtW~!)_#dj^hB;$q?ZEm>nM{Tq9X}z% zaN;&AFeoTLEid}L^^XOS{GASYZPk~dbAiTRph%No>_vBek5-ZN$EAeeUJ5Qp#1Zj} zvsYijIHFsA&E3%S?bmd`ATN{(Ka6!4w~Lg;)$z*?CFibpw63p%bj4<)ObGoYFbdo~h)_<}=05kYN*AZ`C05vKtH6*CL+}-1E!%kWW z+g8zl;&T2NKPF}>sivkzvE~M>O2z2&V*vpJ$9;S*HbDSr1$Y6KV>Q)f#cPjf=dWYf`wNx^?#_v^g+A#?`?6Q z2SjmxZc4?Qn}jK--pQuuSxTIL_u_Dzq#)3d{&SsD{TM;0 z^>~LW5|^n(oAgvVM68)=O*hsqQSIuPf)O@DkACl;Vr?Q{W`GmYbmQlq>$NeO#`($a ze0yzrrbq#K8Jik@s7wJtc`i7El&?5M%o#ixwh?O@k%hT#V-pjTP)kco7J{U39*lfC z(JmHio0r#mx7Q2Io-EV!R6>V6^r9sZ*~Dcl)>+4YgyMhZF|6HKq)5;h0r-Cl(+ykm#-Ae%^Q89e!HC N>mb+TuKS79e*s@z9?bv% literal 0 HcmV?d00001 diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index 754297b78..1de134e96 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -1,52 +1,67 @@ /** * @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경 **/ +var imageGalleryIndex = new Array(); function resizeImageContents() { - // 일단 모든 이미지에 대한 체크를 시작 - var objs = xGetElementsByTagName("IMG"); - for(var i in objs) { - var obj = objs[i]; - if(!obj.parentNode) continue; + // 이미지 태그 정규 표현식 + var img_regx = new RegExp(" parent_width - 2) { - obj.style.cursor = "pointer"; - var new_w = parent_width - 2; - var new_h = Math.round(obj_height * new_w/obj_width); - xWidth(obj, new_w); - xHeight(obj, new_h); - xAddEventListener(obj,"click", showOriginalImage); - // 선택된 이미지가 부모보다 작을 경우 일단 원본 이미지를 불러와서 비교 - } else { - var orig_img = new Image(); - orig_img.src = obj.src; - if(orig_img.width > parent_width - 2 || orig_img.width != obj_width) { - obj.style.cursor = "pointer"; - xAddEventListener(obj,"click", showOriginalImage); + // files 디렉토리 또는 http로 시작하는 이미지들이 아니면 패스 + if(/^(http|https):\/\//i.test(obj.src) || /\/files\/attach\/images/i.test(obj.src)) { + + var parent = obj.parentNode; + while(parent) { + if(/(document|comment)_([0-9]+)_([0-9]+)/i.test(parent.className) ) break; + parent = parent.parentNode; + } + + var dummy = xCreateElement("div"); + dummy.style.visibility = "hidden"; + dummy.style.border = "1px solid red"; + parent.parentNode.insertBefore(dummy, parent); + + var parent_width = xWidth(dummy); + parent.parentNode.removeChild(dummy); + dummy = null; + + var obj_width = xWidth(obj); + var obj_height = xHeight(obj); + + // 만약 선택된 이미지의 가로 크기가 부모의 가로크기보다 크면 리사이즈 (이때 부모의 가로크기 - 2 정도로 지정해줌) + if(obj_width > parent_width - 2) { + obj.style.cursor = "pointer"; + var new_w = parent_width - 2; + var new_h = Math.round(obj_height * new_w/obj_width); + xWidth(obj, new_w); + xHeight(obj, new_h); + xAddEventListener(obj,"click", showOriginalImage); + // 선택된 이미지가 부모보다 작을 경우 일단 원본 이미지를 불러와서 비교 + } else { + var orig_img = new Image(); + orig_img.src = obj.src; + if(orig_img.width > parent_width - 2 || orig_img.width != obj_width) { + obj.style.cursor = "pointer"; + xAddEventListener(obj,"click", showOriginalImage); + } + } + + imageGalleryIndex[j][i] = obj.src; + obj.setAttribute("rel", j+','+i); } } } @@ -60,73 +75,198 @@ function showOriginalImage(evt) { var e = new xEvent(evt); var obj = e.target; var src = obj.src; + var rel = obj.getAttribute('rel'); + displayOriginalImage(src, rel); +} + +function displayOriginalImage(src, rel) { + // 투명 배경을 지정 + var bgObj = xGetElementById("forOriginalImageBGArea"); + if(!bgObj) { + bgObj = xCreateElement("div"); + bgObj.id = "forOriginalImageBGArea"; + bgObj.style.visibility = "hidden"; + bgObj.style.backgroundColor = "#000000"; + bgObj.style.zIndex = 500; + bgObj.style.position = "absolute"; + document.body.appendChild(bgObj); + } + xWidth(bgObj, xClientWidth()); + xHeight(bgObj, xClientHeight()); + xLeft(bgObj, xScrollLeft()); + xTop(bgObj, xScrollTop()); + bgObj.style.opacity = .5; + bgObj.style.filter = "alpha(opacity=50);"; + bgObj.style.visibility = "visible"; + + // 원본 이미지 노출을 위한 준비 + var foreObj = xGetElementById("forOriginalImageArea"); + if(!foreObj) { + foreObj = xCreateElement("div"); + foreObj.id = "forOriginalImageArea"; + foreObj.style.visibility = "hidden"; + foreObj.style.overflow = "hidden"; + foreObj.style.position = "absolute"; + foreObj.style.zIndex = 510; + document.body.appendChild(foreObj); + } + xWidth(foreObj, xClientWidth()); + xHeight(foreObj, xClientHeight()); + xLeft(foreObj, xScrollLeft()); + xTop(foreObj, xScrollTop()); + foreObj.style.visibility = "visible"; + + var foreWidth = xWidth(foreObj); + var foreHeight = xHeight(foreObj); + + // 버튼 + var iconClose = xGetElementById("forOriginalImageIconClose"); + if(!iconClose) { + iconClose = xCreateElement("img"); + iconClose.id = "forOriginalImageIconClose"; + iconClose.style.position = "absolute"; + iconClose.src = request_uri+"addons/resize_image/iconClose.png"; + iconClose.style.width = iconClose.style.height = "60px"; + iconClose.className = 'iePngFix'; + iconClose.style.zIndex = 530; + iconClose.style.cursor = "pointer"; + foreObj.appendChild(iconClose); + } + iconClose.style.visibility = 'visible'; + xLeft(iconClose, (foreWidth-60)/2); + xTop(iconClose, 10); + + var iconLeft = xGetElementById("forOriginalImageIconLeft"); + if(!iconLeft) { + iconLeft = xCreateElement("img"); + iconLeft.id = "forOriginalImageIconLeft"; + iconLeft.style.position = "absolute"; + iconLeft.src = request_uri+"addons/resize_image/iconLeft.png"; + iconLeft.style.width = iconLeft.style.height = "60px"; + iconLeft.style.zIndex = 530; + iconLeft.className = 'iePngFix'; + iconLeft.style.cursor = "pointer"; + foreObj.appendChild(iconLeft); + } + iconLeft.onclick = null; + xLeft(iconLeft, 10); + xTop(iconLeft, (foreHeight-60)/2); + iconLeft.style.visibility = 'hidden'; + + var iconRight = xGetElementById("forOriginalImageIconRight"); + if(!iconRight) { + iconRight = xCreateElement("img"); + iconRight.id = "forOriginalImageIconRight"; + iconRight.style.position = "absolute"; + iconRight.src = request_uri+"addons/resize_image/iconRight.png"; + iconRight.style.width = iconRight.style.height = "60px"; + iconRight.className = 'iePngFix'; + iconRight.style.zIndex = 530; + iconRight.style.cursor = "pointer"; + foreObj.appendChild(iconRight); + } + iconRight.onclick = null; + xLeft(iconRight, foreWidth - 10 - 60); + xTop(iconRight, (foreHeight-60)/2); + iconRight.style.visibility = 'hidden'; + + + if(rel) { + var tmp = rel.split(','); + var j = parseInt(tmp[0],10); + var i = parseInt(tmp[1],10); + var length = imageGalleryIndex[j].length; + + if(length>1) { + + var prev = i-1; + var next = i+1; + if(prev>=0) { + iconLeft.style.visibility = 'visible'; + iconLeft.onclick = function() { displayOriginalImage(imageGalleryIndex[j][prev], j+','+prev); } + } else { + iconLeft.style.visibility = 'hidden'; + } + + if(next\"original"); - document.body.appendChild(dummy); } - var orig_image = xGetElementById("fororiginalimage"); - var tmp_image = new Image(); - tmp_image.src = src; - var image_width = tmp_image.width; - var image_height = tmp_image.height; + // 원본 이미지를 추가 + var origObj = xGetElementById("forOriginalImage"); + if(origObj) foreObj.removeChild(origObj); - orig_image.style.margin = "0px 0px 0px 0px"; - orig_image.style.cursor = "move"; - orig_image.src = src; + origObj = null; + origObj = xCreateElement("img"); + origObj.id = "forOriginalImage"; + origObj.style.border = "7px solid #ffffff"; + origObj.style.visibility = "hidden"; + origObj.style.cursor = "move"; + origObj.style.zIndex = 520; + foreObj.appendChild(origObj); - var areabg = xGetElementById("forOriginalImageAreaBackground"); - xWidth(areabg, image_width+16); - xHeight(areabg, image_height+16); + origObj.style.position = "relative"; + origObj.src = src; - var area = xGetElementById("forOriginalImageArea"); - xLeft(area, xScrollLeft()); - xTop(area, xScrollTop()); - xWidth(area, xWidth(document)); - xHeight(area, xHeight(document)); - area.style.visibility = "visible"; - var area_width = xWidth(area); - var area_height = xHeight(area); + var objWidth = xWidth(origObj); + var objHeight = xHeight(origObj); - var x = parseInt((area_width-image_width)/2,10); - var y = parseInt((area_height-image_height)/2,10); - if(x<0) x = 0; - if(y<0) y = 0; - xLeft(areabg, x); - xTop(areabg, y); + var posX = 0; + var posY = 0; + + if(objWidth < foreWidth) posX = parseInt( (foreWidth - objWidth) / 2, 10); + if(objHeight < foreHeight) posY = parseInt( (foreHeight - objHeight) / 2, 10); + + xLeft(origObj, posX); + xTop(origObj, posY); + + origObj.style.visibility = "visible"; var sel_list = xGetElementsByTagName("select"); for (var i = 0; i < sel_list.length; ++i) sel_list[i].style.visibility = "hidden"; - xAddEventListener(orig_image, "mousedown", origImageDragEnable); - xAddEventListener(orig_image, "dblclick", closeOriginalImage); + xAddEventListener(origObj, "mousedown", origImageDragEnable); + xAddEventListener(origObj, "dblclick", closeOriginalImage); + xAddEventListener(iconClose, "mousedown", closeOriginalImage); xAddEventListener(window, "scroll", closeOriginalImage); xAddEventListener(window, "resize", closeOriginalImage); xAddEventListener(document, 'keydown',closeOriginalImage); - - areabg.style.visibility = 'visible'; } /** * @brief 원본 이미지 보여준 후 닫는 함수 **/ function closeOriginalImage(evt) { - var area = xGetElementById("forOriginalImageArea"); - if(area.style.visibility != "visible") return; - area.style.visibility = "hidden"; - xGetElementById("forOriginalImageAreaBackground").style.visibility = "hidden"; + var bgObj = xGetElementById("forOriginalImageBGArea"); + var foreObj = xGetElementById("forOriginalImageArea"); + var origObj = xGetElementById("forOriginalImage"); + var iconClose = xGetElementById("forOriginalImageIconClose"); + var iconLeft = xGetElementById("forOriginalImageIconLeft"); + var iconRight = xGetElementById("forOriginalImageIconRight"); var sel_list = xGetElementsByTagName("select"); for (var i = 0; i < sel_list.length; ++i) sel_list[i].style.visibility = "visible"; - xRemoveEventListener(area, "mousedown", closeOriginalImage); + xRemoveEventListener(origObj, "mousedown", origImageDragEnable); + xRemoveEventListener(origObj, "dblclick", closeOriginalImage); + xRemoveEventListener(iconClose, "mousedown", closeOriginalImage); xRemoveEventListener(window, "scroll", closeOriginalImage); xRemoveEventListener(window, "resize", closeOriginalImage); xRemoveEventListener(document, 'keydown',closeOriginalImage); + + bgObj.style.visibility = "hidden"; + foreObj.style.visibility = "hidden"; + origObj.style.visibility = "hidden"; + iconClose.style.visibility = 'hidden'; + iconLeft.style.visibility = 'hidden'; + iconRight.style.visibility = 'hidden'; } /** @@ -136,7 +276,7 @@ var origDragManager = {obj:null, isDrag:false} function origImageDragEnable(evt) { var e = new xEvent(evt); var obj = e.target; - if(obj.id != "fororiginalimage") return; + if(obj.id != "forOriginalImage") return; obj.draggable = true; obj.startX = e.pageX; @@ -154,9 +294,9 @@ function origImageDrag(obj, px, py) { var x = px - obj.startX; var y = py - obj.startY; - var areabg = xGetElementById("forOriginalImageAreaBackground"); - xLeft(areabg, xLeft(areabg)+x); - xTop(areabg, xTop(areabg)+y); + var origObj = xGetElementById("forOriginalImage"); + xLeft(origObj, xLeft(origObj)+x); + xTop(origObj, xTop(origObj)+y); obj.startX = px; obj.startY = py; @@ -165,7 +305,7 @@ function origImageDrag(obj, px, py) { function origImageDragMouseDown(evt) { var e = new xEvent(evt); var obj = e.target; - if(obj.id != "fororiginalimage" || !obj.draggable) return; + if(obj.id != "forOriginalImage" || !obj.draggable) return; if(obj) { xPreventDefault(evt); @@ -193,7 +333,7 @@ function origImageDragMouseMove(evt) { var e = new xEvent(evt); var obj = e.target; if(!obj) return; - if(obj.id != "fororiginalimage") { + if(obj.id != "forOriginalImage") { xPreventDefault(evt); xRemoveEventListener(document, 'mouseup', origImageDragMouseUp, false); xRemoveEventListener(document, 'mousemove', origImageDragMouseMove, false); diff --git a/addons/resize_image/resize_image.addon.php b/addons/resize_image/resize_image.addon.php index 3791925ae..dc8099fc6 100644 --- a/addons/resize_image/resize_image.addon.php +++ b/addons/resize_image/resize_image.addon.php @@ -9,6 +9,5 @@ if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC") { Context::addJsFile('./addons/resize_image/js/resize_image.js'); - Context::addCSSFile('./addons/resize_image/css/resize_image.css'); } ?> From e7e163b6e97acfa08ed6c5a7f58502c62f144d1d Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 10:10:47 +0000 Subject: [PATCH 41/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4257 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/js/resize_image.js | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index 1de134e96..ae5055bba 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -49,16 +49,10 @@ function resizeImageContents() { var new_h = Math.round(obj_height * new_w/obj_width); xWidth(obj, new_w); xHeight(obj, new_h); - xAddEventListener(obj,"click", showOriginalImage); - // 선택된 이미지가 부모보다 작을 경우 일단 원본 이미지를 불러와서 비교 - } else { - var orig_img = new Image(); - orig_img.src = obj.src; - if(orig_img.width > parent_width - 2 || orig_img.width != obj_width) { - obj.style.cursor = "pointer"; - xAddEventListener(obj,"click", showOriginalImage); - } - } + } + + obj.style.cursor = "pointer"; + xAddEventListener(obj,"click", showOriginalImage); imageGalleryIndex[j][i] = obj.src; obj.setAttribute("rel", j+','+i); From 165b8a7117cdb1aaed5bb766d18f4246ca09e37c Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 9 Jun 2008 10:24:28 +0000 Subject: [PATCH 42/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4258 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/js/resize_image.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index ae5055bba..f4e491ced 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -5,6 +5,7 @@ var imageGalleryIndex = new Array(); function resizeImageContents() { // 이미지 태그 정규 표현식 var img_regx = new RegExp(" Date: Mon, 9 Jun 2008 12:11:06 +0000 Subject: [PATCH 43/87] =?UTF-8?q?Context::getInstance=EA=B0=80=20=EC=A0=84?= =?UTF-8?q?=EC=97=AD=20=EB=B3=80=EC=88=98=20=EB=8C=80=EC=8B=A0=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20static=20=EB=B3=80=EC=88=98=EB=A5=BC=20=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=ED=95=98=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@4260 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 91de219c3..50098e25f 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -48,14 +48,15 @@ var $is_uploaded = false; ///< @brief 첨부파일이 업로드 된 요청이였는지에 대한 체크 플래그 /** - * @brief Context 객체를 GLOBALS 변수에 생성 + * @brief 유일한 Context 객체를 반환 (Singleton) * - * Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용\n - * php5라면 GLOBALS가 아닌 static으로 처리 가능 + * Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용 **/ function &getInstance() { - if(!$GLOBALS['__ContextInstance__']) $GLOBALS['__ContextInstance__'] = new Context(); - return $GLOBALS['__ContextInstance__']; + static $theInstance = null; + if(!$theInstance) + $theInstance = new Context(); + return $theInstance; } /** From ef0c5cb063f52697a67ef23818bc65d51c53f275 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 00:22:57 +0000 Subject: [PATCH 44/87] =?UTF-8?q?php4=EC=97=90=EC=84=9C=EC=9D=98=20?= =?UTF-8?q?=ED=98=B8=ED=99=98=EC=9D=84=20=EC=9C=84=ED=95=B4=EC=84=9C=20sta?= =?UTF-8?q?tic=20=EC=A7=80=EC=8B=9C=EC=9E=90=20rollback?= 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@4261 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 50098e25f..1789dd95b 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -50,13 +50,11 @@ /** * @brief 유일한 Context 객체를 반환 (Singleton) * - * Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용 + * Context는 어디서든 객체 선언없이 사용하기 위해서 GLOBALS 변수에 저장후 재사용 (php4 호환 때문에) **/ function &getInstance() { - static $theInstance = null; - if(!$theInstance) - $theInstance = new Context(); - return $theInstance; + if(!$GLOBALS['__ContextInstance__']) $GLOBALS['__ContextInstance__'] = new Context(); + return $GLOBALS['__ContextInstance__']; } /** From 759900068045a6ebbb6ee2b256a0fc98a586c47c Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 00:29:20 +0000 Subject: [PATCH 45/87] =?UTF-8?q?php4=EC=97=90=EC=84=9C=20function?= =?UTF-8?q?=EB=82=B4=EC=97=90=20static=20=EC=A7=80=EC=8B=9C=EC=9E=90=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EA=B0=80=EB=8A=A5=ED=95=A8=EC=9D=84=20?= =?UTF-8?q?=EC=9E=AC=ED=99=95=EC=9D=B8=ED=95=98=EC=97=AC=20r4260=20rollbac?= =?UTF-8?q?k?= 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@4262 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 1789dd95b..a95499c36 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -50,11 +50,12 @@ /** * @brief 유일한 Context 객체를 반환 (Singleton) * - * Context는 어디서든 객체 선언없이 사용하기 위해서 GLOBALS 변수에 저장후 재사용 (php4 호환 때문에) + * Context는 어디서든 객체 선언없이 사용하기 위해서 GLOBALS 변수에 저장후 재사용 **/ function &getInstance() { - if(!$GLOBALS['__ContextInstance__']) $GLOBALS['__ContextInstance__'] = new Context(); - return $GLOBALS['__ContextInstance__']; + static $theInstance; + if(!isset($theInstance)) $theInstance = new Context(); + return $theInstance; } /** From 6db03a0e804f9780d2268762ddda053d304e9d0e Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 02:38:48 +0000 Subject: [PATCH 46/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4263 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../skins/default/screenshot/black.gif | Bin 6159 -> 0 bytes .../skins/default/screenshot/cyan.gif | Bin 5459 -> 0 bytes .../skins/default/screenshot/green.gif | Bin 5342 -> 0 bytes .../skins/default/screenshot/purple.gif | Bin 7180 -> 0 bytes .../skins/default/screenshot/red.gif | Bin 6267 -> 0 bytes .../skins/default/screenshot/white.gif | Bin 6267 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100755 modules/communication/skins/default/screenshot/black.gif delete mode 100644 modules/communication/skins/default/screenshot/cyan.gif delete mode 100644 modules/communication/skins/default/screenshot/green.gif delete mode 100644 modules/communication/skins/default/screenshot/purple.gif delete mode 100644 modules/communication/skins/default/screenshot/red.gif delete mode 100644 modules/communication/skins/default/screenshot/white.gif diff --git a/modules/communication/skins/default/screenshot/black.gif b/modules/communication/skins/default/screenshot/black.gif deleted file mode 100755 index 06ccb4a3264cdecf3f4587228dd96670e419f8b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6159 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 aBp-}Y3myN|CCQdM77)7sWJ_aUNB;*X_6%(R diff --git a/modules/communication/skins/default/screenshot/cyan.gif b/modules/communication/skins/default/screenshot/cyan.gif deleted file mode 100644 index bae2fa162a7ce6225dd53b0b55221d0b3ddbeea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5459 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 diff --git a/modules/communication/skins/default/screenshot/green.gif b/modules/communication/skins/default/screenshot/green.gif deleted file mode 100644 index 126923f6834345e1b9e1dd5d7dce8b07f059d1d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5342 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 diff --git a/modules/communication/skins/default/screenshot/purple.gif b/modules/communication/skins/default/screenshot/purple.gif deleted file mode 100644 index 1b5e0d717195d488e386534df818b77d63ed0be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7180 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 diff --git a/modules/communication/skins/default/screenshot/red.gif b/modules/communication/skins/default/screenshot/red.gif deleted file mode 100644 index c9fd68653d94167effc757f2ccbe1d1576ddc675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6267 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 tT|shjsc6J5f7vkauf;{9^cohzRWL{{V#uQbhm& diff --git a/modules/communication/skins/default/screenshot/white.gif b/modules/communication/skins/default/screenshot/white.gif deleted file mode 100644 index c9fd68653d94167effc757f2ccbe1d1576ddc675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6267 zcmcIli9geg<6jKh=d(}GDp#bYR8p~&XpJH=zR-2b-CM{k021@BVAo9`ybL3I{Oz zPo2h|KBKOobw*QL<2>%1?j>D4gDVDx`bO7`uA5vlHob0g!}zAzjaz0nZ!}(d~gyOV*v}Ehw#?(Ox+)7!(x`>~ggr-!fG6CYRaCtki! z+^J#!r;8X8_K>uffK2M(o1d^Txk$gjf{enVBp&|ZZp#kAx zPb0zuBO{)LM}|d3k|LtQ$x%U(q5FeeGK#5O$k(Bs6At^pNDJC&FAtgCBDJAh`3N`g*Tw3aj)U=fJ zwD?!)32CohX1q#F&q#Znk@V_yI_-6G2JKZQEhQ`KB`xc9c6MrJHZ3P7Eh{H8H#a>y zH!CMEJ3sFgJwGFlp39)W&S&HmFlh9Gd}cu=gGn!BW)&1NiVCxtMFqu0Ifcc{lH%N= zl0sHVUNNhvltnKqWw6SM%gYK%%S$TCnPnBF<&|YsRYet5<(1VHRW+5hH6_)xRqR?; z4ZFIwuI5c$8T(CbT|N6vLtTC2n}()(PIE(3OJj3uQ%hTOYkN!E+t&7uwzr+_9bIob zyF0qxb$0i5^}O%y<-U9Wp_lvd{fAH7k9{9L^?#i0ZR;EO)IZoa!0YD?4-9=C93C0^ z{AGA#^z)aokx~AavGGy<#Mt;({^Zp7*XhaMBmGk|U#DlMX6B}6=V#^?X6F~@7MA9} zeP37-eEYt3@t`KRE=%JR=&KUUU$uCA}FZLF?uu5E0sZ*FgF{odUEvnBkq{pbG& zibAPN9u5RAhx?c(551f)W=;+meZ%XfuoJNV@P8wLA%w6tFpnzrZsNarWZ zs*v}lfP#_aq^1ilTIFt+q@q@ic&^4PqeLf7x@c1nXjRD^r0Rpgdyf8M4wcKkmKz~g z6qhV9+p7z> zIQq(-vW&QTK5~`619m8=?=sUI#!0Jj!N>++NfPOyfK>HkO;FWspuV>PIA9#GUhN2z zlo~7$$7vB;;1rRyX3{sHyIjUCufA^WJHJI3eZVBJR(q_mRy_ev6A=S;%cfuCjc8zD znXNsnz`CsRFZY5z4OvWR|Lh4u9Eqf90lu_Etx=LE-{V)%p6g=!B{Ol-qa#N$gE7JM z+ou(ioF<}_^XL=g6IHTV=3_K{?&CuW{Y!7nQtpDyQ>fm#X^<{9Qq zC+EJ#o9fl(P(;s_XN7)230k9CVYE)I(SY)3xlym5*R@dinS;UN#dFhX#P(wkC>9Qt zC^CP9(XVcm;R`7#1vA27d&ob56U3^&XR;`oK)$B;LGhl5!@;+%iB%KWlQB4Y=3HKy z)yM0e`RR6D$Le^y^U}yV^Yct0OBHd<^xuoJb{k zE9_A1MT>=^-U;Ugt(x;LMHPd3%##%(j-O9f@m&|b)rUD`%bm5 zPm{0L-4EI*>6o83`cW?QNOLKI;uk$qYBfcFcAt6w$g@X#tkARfpYMyF?{O{Z$Ls7K z-!5bCNFFII794s0y<7jlNzXpBJCA?$TRbTGHE?*($vYWeLQk%Gc88uE;n^o!Iu5U7 zTvr<=wm_Q0J*|(|zWB}*tqDg1*1oOrJQvO~Ex3hHjk&wT_S%Hwq0#3P-ltVJz9!sh zcw$HJob=Z1Ju$g4LyJ(|oXtsg^_#0Z@#&pw93k&aJ^vG?>_I{ql8MfW#S$hzy-0{v$T% zFE9SuZrLWl7#%E=Koe6oXoB_=CBEtKE`^5dp4cYaB6deK?#yYv{WLr5n9VrofVd?6 zQ4p?LIF9m+Y?1vTh!CDfWkD_XOYZGb#)`$YKOrAEEWnmVnNqSOlh@^gy!394T6Rm8 zPohO`FGpv5h?Z@tktt1arx28~Wj=MZt7m<94%ANAz%IYdUCA?UzG0%U=Cqr0**PWv zm19_3BXbV;K|K&R`2gM75i@c_jr=f2>Ewj|>79-*Qqns}z{^f!=O3}rD>=%0e{_sp z_DG>45gNrb=h4a_5oS=!4dK;~u@?Vlbb=UF0tIxTO9}|DxP3_xVM)x}K*Z z2N8CMqp2N&V-8pWkb_+T!5`Jp-p~+1r zyFK}t1*d&jQSH4u5T3UUG=1C$yZri9Pb4DZD2mina<+6O7qYJ3Va4?krQ81&R}N1+ zgQ%3ouLcW?ifpfb<_-8%RrM70nUSS)j9R1f*G;65JM@D%%^A8+cfQeSADPk_wCxF7 z@_hBnCShp4>{;9mi$l%UvDf17Yl3RNZ;zk(5mWeP_MBQuk|Xm?R$Fr8-0_R-g*dkP zKq|k!Sf_Gt_Y?Iid0d1*oxTh2gsS04NMnPfD10$_UK28q7;@Bxk38VZ+OEvCq{lsf zL_8$Vny+O-T0m5DU~Qnh|=Uc zC*yKq>fk%aGxsJB3LK^^7ya+Wdt~nwf7qV(_XK25`E<~9>C~%*N2absb5-@U398U0 z?%3J;@}JNV8lx1%{m4ns(DdS8@T@SAU*qMu=!m1fr>N%2y2wiH4jS@t@7d_XADTD9 zR2_?=5$+)aY*@H?VVnzcuf4Xf!^-8t69b{77MW%F5}9LDE~M)p!(3= zZKsMWiGT8B!x!37&Ek1A*T2Z0=C@<3IMBYF$0Mo-$}R=o7$_%)>|BMvm1a@JPCAY6 z0`G>6EK_a=-51^E`Z|==)8%z`azm>{(B80qdxxTIAhKC*yTOj7b`efM)^&tKl4H*a zxbPRlQ>S#Fx`*4YWa>Y~xt?^=^|MkUsP%DYY|T$m)cr!_Zmv64Zv~p>?}5v14$BnN zKLk4!S_?wl#3fg!D0s7M`5{EeM7=Jh`<7BK^c1lRh8sgyMph0NUBzUvLsjt2?ga zfqoW9qWLC7_!Ax&VV|I*GNt?pPlw*Z^Yh>&mP{@TE<=ZhNI`9;s16+JV2YPzX`oa* zRz>!%(qQm$?YnBS)~$ACR?FalRYD71sTvPfV^D3uAfpVd<)Q{?z)EjJL^WQejOMJJld>I;2=Tb#gIoga z6G7#O9ft!Elm5MC3W9uYH!K(Pg2*`QN^xAX<`*w#{M&4F-_l>ZpVZYoD$ zR`)%riN32F7MgkUyt&Q$e7EI(dt*HZxm`}^IYU$JxcJMD9%M>%mBn?v5SyEU`dJSO z-a`E}lQEh+#uDnMs=?zR6-(&vRiT_(Csc6MfU6&6yF>gA3Hi@Zd_Km%iVKubQ4=iW z1P9VZf?cz~1P+zL1&TQ21{}Hx3sAX06B?kpgDHGu5f`P`X|Q`p3Xii93xbj*cBa90 z@>qZ~a%UeG;NwxXIH(x5vy}@r>!KtNhxOt?t6jkIN07ojPQjW)n8lghND>c95+x)I z@}H7Pko&*;*l6h5%Vg10s9SS;8(`pwDa!BdEjDatp}_4g#$MTn(v)K|F|{%-dtdVL zh=!xdEi}+4D!HB{8*oe}4F>jbKnhwhy)Eej-`3kJJ~JWS(GXo?nNTwR)Ws6=7(yk# zd|7u4oh~#)4^n|IScPDQR6PfoPD6Io>f2jN6}^-yLGCQWgH<$R7t0e>FtC@J)`|vb zVPJifY!3H0n~TaoEAmJ{^RA@GoRnLo8KTSSPm-=@Vifzis6JRSi!>7Q0K3VtJV zLI8a*1&WuUTCPQ!sk>%W#9uX%&UiqWlH_l(&wp3Ynnl=}a&}}+`j1MCQ1@zQ{ z0(L3=s>(x^TvQ~0io*g!BtT)h zERGKhQGqCMo+?29{*gXW?d24Mc5if z#o>?&0~PgXq_#X%hKFqBk>Rv|PNYG3Xk;T5vT|W;JEL3Y8QnDTGCneoi?YXB24lc* zQ;^|JRXL9)Zrfdc7YCHlM29$H zNdY>f&m@)Kp`IKDs(}X(!{$lh;j~NKgd*Qw@VyG5vULgQ+d_5VhDp|aexFO6o&@4 zo1tLzzxxLuKNkEbT8z#SHT+EIA=MTgw+r!oqals-!UH&5c^MVD$98oayzKDb&kXw_CvXuG>5HhsMEr~sTl zj;tdA-NHoydbko**gB1A)FTUfFB+J|M@Ebg zID8~+uKLwyfI$-N5rEEoF%k|6H3iKA+SrTi`W>u;<`kD5_KJG0`=t-H2E1!5W2#s; zl;RQHEU`Xf#UKY!$Zr@zH)=Q{ARBvEfkdAvn8OOy@DXeEgHM2V#`}}gP5zr8Z>Z6JCZS3{0Ld*WWef-wDT(A-+;kt-2 zB*Kq!MB*^LL#8NaQ>ezJV@IlAD-3G0`PdQAt1K;SYjI|b2?$R{P*x{u+HvA~AaV$c z?AvPKjS#|FV1~_qnIoSGBw|eM%Si}@@Qyz!5l_tuHuL+ zq(TKaq@pG~gvh(ht%-GhtFc+hrw5KBNq#A`hQB!0hb^~=&5Z%ZlT*JdP_r1@jl?=g9 z>84_rSis}}a21Ba=pjmlRC+HSQgKA+{bwx+Udd&r;($6d)QkR?O@x1X1@(U>=uto4 zrSXyqpdl6XJ1d4Kf|Jg*Q|$p+reo*8FB*E#ZSCI*v{qw4E$a z`FhZ{s9fc%r@<8E3th_?{j-Pub`hfb^`?{U+KZ;hwI*46>c{**86`GV{QA1{b5` z>^i-FdT!?3T|c8hP`hNxiwSwaiOn)_px`;a%s^pe)0Lq z#i-FmCD*wh=h~v3rdKX5EHo@Bfb&%ug&C@IuL??-qtk`^4i$DzmW@OC{~Lxev9GfmtLfP0~+Z8quo;9YbJ$L)R=(Lugg(#a}lmfzJWr9 zQ?VV)?cH8AyG`Q-<>{pg;q-FgLKN^5b#EcsN)S(;`+j~Vhh6yA3DP~V0-apxHie+4 zZ}gr;89k%)qgNKoPy@u3uG!DJCckc8Skb>gx$@f2;2C71mT#?AcdKN@+GORn$qJ9V zV)^=4tL!g_3#+ad@;S;BmuD+CU#}V5TkE8+4QQ`i`u@xJ8D!BeG}+COx>($;AKTH3!zW;(R_^k12jMB@=Wx_2xt@j(ruQ#)v zZ3N3~YOOD+Uf+1RXX}>D)~k}4l(DV-j++U8Hd0=*42mIP!If3tFirO5FQ>96ZA!N- zzixl{>vzwyu+9THha~lQ7qai2340it)2pU8YGT@!n2KQh)-0f2*0~2VgiA`oYturb tT|shjsc6J5f7vkauf;{9^cohzRWL{{V#uQbhm& From f6537987f511c40bde3c428862e9b4f79282b4f0 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 03:52:30 +0000 Subject: [PATCH 47/87] =?UTF-8?q?#429=20=ED=8C=8C=EC=9D=BC=20=EB=8B=A4?= =?UTF-8?q?=EC=9A=B4=EB=A1=9C=EB=93=9C=20=EC=BD=94=EB=93=9C=EB=A5=BC=20r33?= =?UTF-8?q?61=20=EC=9D=B4=EC=A0=84=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EC=97=AC=20IE6=EC=97=90=EC=84=9C=20=ED=95=9C=EA=B8=80?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=93=B1=EC=9D=98=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=9D=84=20=EC=82=AC=EC=9A=A9=EC=8B=9C=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=97=86=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@4264 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/file.controller.php | 88 +++----------------------------- 1 file changed, 8 insertions(+), 80 deletions(-) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 51f9ec62a..902411888 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -91,88 +91,16 @@ $fp = fopen($uploaded_filename, 'rb'); if(!$fp) return $this->stop('msg_not_permitted_download'); - // Support for broken downloads resuming via parsing 'Range' header value. Made by X-[Vr]bL1s5. - // This addition will ONLY work if PHP is run as Apache module and PHP >= 4.3.0 - if (function_exists('apache_request_headers')) { // check if we run as Apache module. - $fr_buffer_size = 8192; - - $fr_headers = apache_request_headers(); - if (isset($fr_headers['Range'])) { - $fr_range_header = trim($fr_headers['Range']); - $fr_range_header = str_replace('bytes=', '', $fr_range_header); - $fr_range = explode ('-', $fr_range_header); - if (isset($fr_range[0]) && ($fr_range[0] != NULL)) { - if (!is_numeric($fr_range[0])) return $this->stop('msg_not_permitted_download'); // invalid header values - $fr_range_begin = $fr_range[0]; - if ((int) ($fr_range_begin) < 0) $fr_range_begin = 0; - } else { - $fr_range_begin = 0; - } - if (isset($fr_range[1]) && ($fr_range[1] != NULL)) { - if (!is_numeric($fr_range[1])) return $this->stop('msg_not_permitted_download'); // invalid header values - $fr_range_end = $fr_range[1]; - if ((int) ($fr_range_end) > ($file_obj->file_size - 1)) $fr_range_end = $file_obj->file_size - 1; - } else { - $fr_range_end = $file_obj->file_size - 1; - } - - $fr_content_length = $fr_range_end - $fr_range_begin + 1; - - header("HTTP/1.1 206 Partial Content"); // oh... maybe HTTP proto version will change... ^^; - header("Cache-Control: no-cache"); - header("Pragma: no-cache"); - - header("Accept-Ranges: bytes"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - header("Content-Type: application/octet-stream"); - header('Content-Disposition: attachment; filename="'.$filename.'"'); - - header("Content-Length: $fr_content_length"); - header("Content-Range: bytes $fr_range_begin-$fr_range_end/" .(string)($file_obj->file_size)); - header("Content-Transfer-Encoding: binary"); - - $fr_bytes_read = 0; + header("Cache-Control: "); + header("Pragma: "); + header("Content-Type: application/octet-stream"); + header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - if (fseek($fp, $fr_range_begin) != 0) return $this->stop('msg_not_permitted_download'); // unable to seek file. + header("Content-Length: " .(string)($file_obj->file_size)); + header('Content-Disposition: attachment; filename="'.$filename.'"'); + header("Content-Transfer-Encoding: binary\n"); - while (!feof($fp)) { - $fr_buffer = fread($fp, $fr_buffer_size); - $fr_bytes_read += strlen($fr_buffer); - if ($fr_content_length > $fr_bytes_read) { - echo $fr_buffer; - } else { - $fr_buffer = substr($fr_buffer, 0, strlen($fr_buffer) - ($fr_bytes_read - $fr_content_length)); - echo $fr_buffer; - break; - } - } - } else { - header("HTTP/1.1 200 OK"); // oh... maybe HTTP proto version will change... ^^; - header("Cache-Control: no-cache"); - header("Pragma: no-cache"); - header("Accept-Ranges: bytes"); // we should claim that we accept ranges! - header("Content-Type: application/octet-stream"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - - header("Content-Length: " .(string)($file_obj->file_size)); - header('Content-Disposition: attachment; filename="'.$filename.'"'); - header("Content-Transfer-Encoding: binary"); - - fpassthru($fp); - } - } else { // end of the support... - - header("Cache-Control: no-cache"); - header("Pragma: no-cache"); - header("Content-Type: application/octet-stream"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - - header("Content-Length: " .(string)($file_obj->file_size)); - header('Content-Disposition: attachment; filename="'.$filename.'"'); - header("Content-Transfer-Encoding: binary"); - - fpassthru($fp); - } + fpassthru($fp); // 이상이 없으면 download_count 증가 $args->file_srl = $file_srl; From 526025228285f9ea20dd91bd9294b40d54f1b6e7 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 04:14:52 +0000 Subject: [PATCH 48/87] =?UTF-8?q?#471=20rss=EC=B6=9C=EB=A0=A5=EC=8B=9C=20C?= =?UTF-8?q?ontext::transContent()=EB=A5=BC=20=EA=B1=B0=EC=B9=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=ED=95=98=EA=B3=A0=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=EA=B0=A4=EB=9F=AC=EB=A6=AC/=EC=9D=B8=EC=9A=A9=EA=B5=AC?= =?UTF-8?q?=EC=9D=98=20=EA=B2=B0=EA=B3=BC=EB=AC=BC=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EA=B2=B0=EA=B3=BC=EB=AC=BC=20?= =?UTF-8?q?=ED=98=95=ED=83=9C=EB=A5=BC=20=EB=8B=A4=EB=A5=B4=EA=B2=8C=20?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=BD=94=EB=93=9C=EB=A5=BC=20=EC=82=BD?= =?UTF-8?q?=EC=9E=85?= 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@4265 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../image_gallery/image_gallery.class.php | 10 ++++++++++ .../components/quotation/quotation.class.php | 4 ++++ modules/rss/rss.view.php | 18 ++++++++++++++---- modules/rss/tpl/display.html | 1 + 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 modules/rss/tpl/display.html diff --git a/modules/editor/components/image_gallery/image_gallery.class.php b/modules/editor/components/image_gallery/image_gallery.class.php index 2a7bd8495..a686dcb39 100644 --- a/modules/editor/components/image_gallery/image_gallery.class.php +++ b/modules/editor/components/image_gallery/image_gallery.class.php @@ -51,6 +51,16 @@ $images_list = preg_replace('/\.(gif|jpg|jpeg|png) /i',".\\1\n",$images_list); $gallery_info->images_list = explode("\n",trim($images_list)); + // 만약 출력설정이 XML일 경우 이미지 목록만 출력하도록 코드 생성 + if(Context::getResponseMethod() == 'XMLRPC') { + $output = ''; + for($i=0;$iimages_list);$i++) { + $output .= sprintf('
    ', $gallery_info->images_list[$i]); + } + return $output; + } + + // HTML 출력일 경우 템플릿 변환을 거쳐서 갤러리 출력 설정에 맞는 html코드를 생성하도록 함 preg_match_all('/(width|height)([^[:digit:]]+)([0-9]+)/i',$xml_obj->attrs->style,$matches); $gallery_info->width = trim($matches[3][0]); if(!$gallery_info->width) $gallery_info->width = 400; diff --git a/modules/editor/components/quotation/quotation.class.php b/modules/editor/components/quotation/quotation.class.php index 00857a86c..5ecca1f41 100644 --- a/modules/editor/components/quotation/quotation.class.php +++ b/modules/editor/components/quotation/quotation.class.php @@ -55,6 +55,10 @@ $bg_color = $xml_obj->attrs->bg_color; $body = $xml_obj->body; + if(Context::getResponseMethod() == 'XMLRPC') { + return $body; + } + $output = ""; $style = sprintf('margin:%spx;padding:%spx;background-color:#%s;', $margin, $padding, $bg_color); switch($border_style) { diff --git a/modules/rss/rss.view.php b/modules/rss/rss.view.php index 6c285fc0c..dfd6aa71f 100644 --- a/modules/rss/rss.view.php +++ b/modules/rss/rss.view.php @@ -126,11 +126,21 @@ // 결과 출력을 XMLRPC로 강제 지정 Context::setResponseMethod("XMLRPC"); - // 템플릿 파일 지정 - $this->setTemplatePath($this->module_path.'tpl/'); + // 결과물을 얻어와서 에디터 컴포넌트등의 전처리 기능을 수행시킴 + $path = $this->module_path.'tpl/'; + if($args->start_date || $args->end_date) $file = 'xe_rss'; + else $file = 'rss20'; - if($args->start_date || $args->end_date) $this->setTemplateFile('xe_rss'); - else $this->setTemplateFile('rss20'); + $oTemplate = new TemplateHandler(); + $oContext = &Context::getInstance(); + + $content = $oTemplate->compile($path, $file); + $content = $oContext->transContent($content); + Context::set('content', $content); + + // 템플릿 파일 지정 + $this->setTemplatePath($path); + $this->setTemplateFile('display'); } /** diff --git a/modules/rss/tpl/display.html b/modules/rss/tpl/display.html new file mode 100644 index 000000000..d9f1e44a0 --- /dev/null +++ b/modules/rss/tpl/display.html @@ -0,0 +1 @@ +{$content} From 196367218edea5a16c08540a7c6430250ee17893 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 05:03:52 +0000 Subject: [PATCH 49/87] =?UTF-8?q?=EA=B8=80=20=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=EC=9D=B4=EC=A0=84=EC=97=90=20trigger=EB=A5=BC=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EC=96=B4=20=ED=95=B4=EB=8B=B9=20=EA=B8=80=EC=97=90=20?= =?UTF-8?q?=EB=8B=AC=EB=A6=B0=20=EB=8C=93=EA=B8=80=EC=9D=98=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=EB=B3=84=20=EA=B0=9C=EC=88=98=EB=A5=BC=20?= =?UTF-8?q?=ED=8C=8C=EC=95=85=ED=95=98=EC=97=AC=20=ED=8F=AC=EC=9D=B8?= =?UTF-8?q?=ED=8A=B8=20=EA=B0=90=EC=86=8C=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95.=20=EC=9E=90=EC=8B=A0?= =?UTF-8?q?=EC=9D=98=20=EA=B8=80=EC=97=90=20=EB=8C=93=EA=B8=80=EC=9D=84=20?= =?UTF-8?q?=EB=8B=AC=20=EA=B2=BD=EC=9A=B0=20=ED=8F=AC=EC=9D=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=A6=9D=EA=B0=80=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?= 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@4266 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/point/point.class.php | 4 ++ modules/point/point.controller.php | 67 +++++++++++++++++++++-- modules/point/queries/getCommentUsers.xml | 16 ++++++ 3 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 modules/point/queries/getCommentUsers.xml diff --git a/modules/point/point.class.php b/modules/point/point.class.php index 02a6c36e4..26252dd33 100644 --- a/modules/point/point.class.php +++ b/modules/point/point.class.php @@ -89,6 +89,7 @@ // 가입/글작성/댓글작성/파일업로드/다운로드에 대한 트리거 추가 $oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after'); $oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'); + $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'); $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'); $oModuleController->insertTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after'); $oModuleController->insertTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after'); @@ -117,6 +118,7 @@ // 가입/글작성/댓글작성/파일업로드/다운로드에 대한 트리거 추가 if(!$oModuleModel->getTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after')) return true; if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) return true; + if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) return true; if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) return true; if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) return true; if(!$oModuleModel->getTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after')) return true; @@ -149,6 +151,8 @@ $oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after'); if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) $oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'); + if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) + $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'); if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'); if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index 1f39bfc74..7ba55e0b3 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -101,26 +101,79 @@ return new Object(); } + /** + * @brief 게시글 삭제 이전에 게시글의 댓글에 대한 포인트 감소 처리를 하는 trigger + **/ + function triggerBeforeDeleteDocument(&$obj) { + $document_srl = $obj->document_srl; + $member_srl = $obj->member_srl; + + // point 모듈 정보 가져옴 + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + + // 지울 대상 글의 댓글에 대한 처리 + $comment_point = $config->module_point[$module_srl]['insert_comment']; + if(!isset($comment_point)) $comment_point = $config->insert_comment; + + // 댓글 포인트가 있으면 처리 + if(!$comment_point) return new Object(); + + // 해당 글에 포함된 모든 댓글을 추출 + $cp_args->document_srl = $document_srl; + $output = executeQueryArray('point.getCommentUsers', $cp_args); + + // 대상이 없으면 return + if(!$output->data) return new Object(); + + // 대상 회원 번호를 정리 + $member_srls = array(); + $cnt = count($output->data); + for($i=0;$i<$cnt;$i++) { + if($output->data[$i]->member_srl<1) continue; + $member_srls[$output->data[$i]->member_srl] = $output->data[$i]->count; + } + + // 원글 작성 회원의 번호는 제거 + if($member_srl) unset($member_srls[$member_srl]); + if(!count($member_srls)) return new Object(); + + // 각 회원들을 모두 돌면서 포인트 감소 + $oPointModel = &getModel('point'); + + // 포인트를 구해옴 + $point = $config->module_point[$module_srl]['download_file']; + foreach($member_srls as $member_srl => $cnt) { + $cur_point = $oPointModel->getPoint($member_srl, true); + $cur_point -= $cnt * $comment_point; + $this->setPoint($member_srl,$cur_point); + } + + return new Object(); + } + /** * @brief 게시글 삭제 포인트 적용 trigger **/ function triggerDeleteDocument(&$obj) { $module_srl = $obj->module_srl; $member_srl = $obj->member_srl; + + // 지울 대상 글에 대한 처리 if(!$module_srl || !$member_srl) return new Object(); // 로그인 상태일때만 실행 $logged_info = Context::get('logged_info'); if(!$logged_info->member_srl) return new Object(); - // point 모듈 정보 가져옴 - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - // 대상 회원의 포인트를 구함 $oPointModel = &getModel('point'); $cur_point = $oPointModel->getPoint($member_srl, true); + // point 모듈 정보 가져옴 + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $point = $config->module_point[$module_srl]['insert_document']; if(!isset($point)) $point = $config->insert_document; $cur_point -= $point; @@ -144,6 +197,12 @@ $member_srl = $obj->member_srl; if(!$module_srl || !$member_srl) return new Object(); + // 원글이 본인의 글이라면 포인트를 올리지 않음 + $document_srl = $obj->document_srl; + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + if(!$oDocument->isExists() || $oDocument->get('member_srl')==$member_srl) return new Object(); + // point 모듈 정보 가져옴 $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); diff --git a/modules/point/queries/getCommentUsers.xml b/modules/point/queries/getCommentUsers.xml new file mode 100644 index 000000000..5ff50aecc --- /dev/null +++ b/modules/point/queries/getCommentUsers.xml @@ -0,0 +1,16 @@ + + +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    -
    +
    @@ -72,10 +72,10 @@
    -
    +
    -
    +
    + + + + + + + + + + + + + From 44f7426c55a5d122c953b56e09fe05a441c98aa2 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 10 Jun 2008 05:23:56 +0000 Subject: [PATCH 50/87] =?UTF-8?q?#477=20=EB=B8=8C=EB=9D=BC=EC=9A=B0?= =?UTF-8?q?=EC=A0=80=EB=B3=84=EB=A1=9C=20=EB=AA=85=EC=8B=9C=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EA=B8=B8=EC=9D=B4=EA=B0=80=20=EC=A0=95?= =?UTF-8?q?=ED=95=B4=EC=A7=80=EC=A7=80=20=EC=95=8A=EC=9D=80=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=EC=9D=98=20=EA=B8=B8=EC=9D=B4=EB=A5=BC=20=EA=B5=AC?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=98=EB=8A=94=20=EA=B4=80?= =?UTF-8?q?=EA=B3=84=EB=A1=9C=20textarea=EC=9D=98=20=EA=B0=80=EB=A1=9C=20?= =?UTF-8?q?=EA=B8=B8=EC=9D=B4=EB=A5=BC=20=EB=B6=80=EB=AA=A8=20=EA=B0=9D?= =?UTF-8?q?=EC=B2=B4=EC=9D=98=2099%=EB=A1=9C=20=EC=A1=B0=EC=A0=88=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4267 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/textarea/css/editor.css | 4 ++-- modules/editor/skins/textarea/editor.html | 2 +- modules/editor/skins/textarea/js/xe_interface.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/editor/skins/textarea/css/editor.css b/modules/editor/skins/textarea/css/editor.css index e29fa20c8..31a89edd8 100644 --- a/modules/editor/skins/textarea/css/editor.css +++ b/modules/editor/skins/textarea/css/editor.css @@ -1,4 +1,4 @@ @charset "utf-8"; -.xeTextareaEditor {width:100%; } -.xeTextareaEditor textarea { display:block; margin:10px 10px 0 10px; width:90%;} +.xeTextareaEditor {padding:10px; overflow:hidden; } +.xeTextareaEditor textarea { display:block; margin:0; padding:2px; } diff --git a/modules/editor/skins/textarea/editor.html b/modules/editor/skins/textarea/editor.html index 697011c71..ff2f9d35a 100644 --- a/modules/editor/skins/textarea/editor.html +++ b/modules/editor/skins/textarea/editor.html @@ -8,7 +8,7 @@
    - +
    diff --git a/modules/editor/skins/textarea/js/xe_interface.js b/modules/editor/skins/textarea/js/xe_interface.js index 8c3b9fc21..a006e002e 100644 --- a/modules/editor/skins/textarea/js/xe_interface.js +++ b/modules/editor/skins/textarea/js/xe_interface.js @@ -2,7 +2,7 @@ function editorStartTextarea(editor_sequence, content_key, primary_key) { var obj = xGetElementById('editor_'+editor_sequence); obj.form.setAttribute('editor_sequence', editor_sequence); - xWidth(obj,xWidth(obj.parentNode)-24); + obj.style.width = '99%'; editorRelKeys[editor_sequence] = new Array(); editorRelKeys[editor_sequence]["primary"] = obj.form[primary_key]; From 0efec9bd334ad87071dfdbd7a59c1083bbc71826 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 11 Jun 2008 01:55:11 +0000 Subject: [PATCH 51/87] =?UTF-8?q?resize=5Fimage=EC=95=A0=EB=93=9C=EC=98=A8?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=82=B4=EC=9A=A9=EB=82=B4=EC=9D=98=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EC=A4=91=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=EA=B0=80=20=EC=95=84=EB=8B=8C=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=EB=A1=9C=20=EB=8C=80=EC=83=81=EC=9D=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EA=B3=A0=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=EC=97=90=20=EB=A7=81=ED=81=AC=EA=B0=80=20onclick=20?= =?UTF-8?q?=EC=86=8D=EC=84=B1=EC=9D=B4=20=EB=B6=80=EC=97=AC=EB=90=98?= =?UTF-8?q?=EC=96=B4=20=EC=9E=88=EC=9C=BC=EB=A9=B4=20=EC=9B=90=EB=B3=B8=20?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4268 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/js/resize_image.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index f4e491ced..3e1953932 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -22,9 +22,8 @@ function resizeImageContents() { for(var i=0;i Date: Wed, 11 Jun 2008 03:25:58 +0000 Subject: [PATCH 52/87] =?UTF-8?q?1.=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=EA=B3=BC?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=EB=90=9C=20html=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20id=EB=A5=BC=20=EC=A0=9C=EA=B1=B0=202.=20?= =?UTF-8?q?=EC=97=AC=EB=9F=AC=EA=B0=9C=EC=9D=98=20=EA=B2=8C=EC=8B=9C?= =?UTF-8?q?=EA=B8=80=EC=9D=84=20=ED=98=B8=EC=B6=9C=ED=95=A0=EB=95=8C=2020?= =?UTF-8?q?=EA=B0=9C=EA=B9=8C=EC=A7=80=EB=A1=9C=20=EC=A0=9C=ED=95=9C?= =?UTF-8?q?=EC=9D=B4=20=EB=90=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=EC=A0=90=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=203.=20ModuleHandler=EB=82=B4=EC=9D=98=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EB=B3=80=EC=88=98=20=EA=B8=B0?= =?UTF-8?q?=EC=9E=85=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@4269 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/module/ModuleHandler.class.php | 2 +- layouts/xe_official/css/default.css | 2 +- modules/document/queries/getDocumentListWithinTag.xml | 2 +- modules/document/queries/getDocuments.xml | 3 --- modules/member/skins/default/login_form.html | 4 ++-- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 0c3867eac..6c8cd72b4 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -104,7 +104,7 @@ // 모듈정보에 module과 mid를 강제로 지정 $this->module_info->module = $this->module; - $this->mid = $this->mid; + $this->module_info->mid = $this->mid; // 여기까지도 모듈 정보를 찾지 못했다면 깔끔하게 시스템 오류 표시 if(!$this->module) $this->error = 'msg_module_is_not_exists'; diff --git a/layouts/xe_official/css/default.css b/layouts/xe_official/css/default.css index 6cd945c96..304f991a7 100644 --- a/layouts/xe_official/css/default.css +++ b/layouts/xe_official/css/default.css @@ -69,7 +69,7 @@ body { background:#FFFFFF url(../images/default/bgBody.gif) repeat-x left top; } #lnb li.on a { color:#ffffff; background:#de4332; border:1px solid #de4332;} #lnb li.on a:hover, #lnb li.on a:focus { font-weight:bold;} -#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; position:relative; border-top:1px solid #ffffff; overflow:hidden;} +#lnb li ul { display:block; position:relative; width:184px; padding:0 3px; border-top:1px solid #ffffff; overflow:hidden;} #lnb li.on ul { display:block;} #lnb li ul li { padding:0; border-top:1px solid #f2f2f2; position:relative; top:-1px;} #lnb li ul li a { padding:6px 5px 6px 10px; width:169px; color:#818181 !important; border:none; background:none !important; border:none !important;} diff --git a/modules/document/queries/getDocumentListWithinTag.xml b/modules/document/queries/getDocumentListWithinTag.xml index 771a6bcb4..2f747c613 100644 --- a/modules/document/queries/getDocumentListWithinTag.xml +++ b/modules/document/queries/getDocumentListWithinTag.xml @@ -1,4 +1,4 @@ - +
    diff --git a/modules/document/queries/getDocuments.xml b/modules/document/queries/getDocuments.xml index e4e73f82f..17bc6e47d 100644 --- a/modules/document/queries/getDocuments.xml +++ b/modules/document/queries/getDocuments.xml @@ -10,8 +10,5 @@ - - - diff --git a/modules/member/skins/default/login_form.html b/modules/member/skins/default/login_form.html index 37951b9a5..785ec2c68 100644 --- a/modules/member/skins/default/login_form.html +++ b/modules/member/skins/default/login_form.html @@ -26,8 +26,8 @@

    - - + +

    From 6e46b68c7010ab857eb1bc7cfe78e03eabce9243 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 11 Jun 2008 03:44:32 +0000 Subject: [PATCH 53/87] =?UTF-8?q?=EC=9E=90=EB=8F=99=EB=A7=81=ED=81=AC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=98=EC=97=AC=20=EC=83=9D=EA=B8=B0?= =?UTF-8?q?=EB=8A=94=20=EC=9E=90=EB=B0=94=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EB=AC=B4=ED=95=9C=20=EB=A3=A8=ED=94=84=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4270 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 35 +++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index 38180ea10..dd15bed03 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -11,7 +11,40 @@ From c0ab270e76c01f8aa7baf3d74c0288611c509e76 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 11 Jun 2008 04:02:23 +0000 Subject: [PATCH 54/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4271 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.addon.php | 35 +----------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index dd15bed03..04a15e7b8 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -11,40 +11,7 @@ From d1c6d03c4ee52f90180adc09035337f00278821d Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 11 Jun 2008 07:37:44 +0000 Subject: [PATCH 55/87] =?UTF-8?q?=EB=8C=80=EC=83=81=20=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=EB=93=A4=EC=9D=84=20=EA=B0=80=EC=A0=B8=EC=98=AC=EB=95=8C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94=20document.getDocuments?= =?UTF-8?q?=EC=97=90=20navigation=20=EC=84=A4=EC=A0=95=EC=9D=B4=20?= =?UTF-8?q?=EB=B9=A0=EC=A0=B8=EC=84=9C=20=ED=83=9C=EA=B7=B8=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=EB=93=B1=20table=20join=20=EA=B2=B0=EA=B3=BC=EB=A5=BC?= =?UTF-8?q?=20=EC=9D=B4=EC=9A=A9=ED=95=A0=EB=95=8C=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EA=B0=80=20=EB=B0=9C=EC=83=9D=ED=95=98=EB=8A=94=20=EA=B2=83?= =?UTF-8?q?=EC=9D=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4272 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.model.php | 11 ++++++++--- modules/document/queries/getDocuments.xml | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index ee67ce346..2ffabf7ae 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -111,10 +111,15 @@ * @brief 여러개의 문서들을 가져옴 (페이징 아님) **/ function getDocuments($document_srls, $is_admin = false) { - if(is_array($document_srls)) $document_srls = implode(',',$document_srls); - - // DB에서 가져옴 + if(is_array($document_srls)) { + $list_count = count($document_srls); + $document_srls = implode(',',$document_srls); + } else { + $list_count = 1; + } $args->document_srls = $document_srls; + $args->list_count = $list_count; + $output = executeQuery('document.getDocuments', $args); $document_list = $output->data; if(!$document_list) return; 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 cf8d8c720ab98dc99c0dd5f6fa7e2396d473f4f8 Mon Sep 17 00:00:00 2001 From: wdlee91 Date: Wed, 11 Jun 2008 11:50:01 +0000 Subject: [PATCH 56/87] =?UTF-8?q?Context::getInstance=20=EC=84=A4=EB=AA=85?= =?UTF-8?q?=20=EB=B0=94=EB=A1=9C=EC=9E=A1=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4274 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index a95499c36..dee1341b4 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -50,12 +50,12 @@ /** * @brief 유일한 Context 객체를 반환 (Singleton) * - * Context는 어디서든 객체 선언없이 사용하기 위해서 GLOBALS 변수에 저장후 재사용 + * Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용 **/ function &getInstance() { - static $theInstance; - if(!isset($theInstance)) $theInstance = new Context(); - return $theInstance; + static $theInstance; + if(!isset($theInstance)) $theInstance = new Context(); + return $theInstance; } /** From 4496358bad385e70e5a52aba0ef10e52531cccf8 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 12 Jun 2008 04:27:01 +0000 Subject: [PATCH 57/87] =?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=EC=A1=B0=ED=9A=8C/=EC=B6=94?= =?UTF-8?q?=EC=B2=9C/=EC=A0=9C=EB=AA=A9/=EB=8C=93=EA=B8=80=EC=88=98=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC=EC=99=B8=EC=9D=98=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=EB=8C=80=EC=83=81=EC=97=90=EC=84=9C=20=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=EB=B2=88=ED=98=B8=EB=A7=8C=EC=9C=BC=EB=A1=9C=20=EC=A0=91?= =?UTF-8?q?=EC=86=8D=EC=8B=9C=20=ED=95=B4=EB=8B=B9=20=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=EC=9D=98=20=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A5=BC=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=EC=9C=BC=EB=A1=9C=20=EA=B5=AC=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=A3=A8=ED=8B=B4=EC=9D=84=20=EB=B3=B4=EB=8B=A4=20=EC=A0=95?= =?UTF-8?q?=EA=B5=90=ED=95=98=EA=B2=8C=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@4276 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 13 +++++---- modules/board/board.view.php | 2 +- modules/document/document.model.php | 30 ++++++++++++++++---- modules/document/queries/getDocumentPage.xml | 18 +++++++++++- 4 files changed, 51 insertions(+), 12 deletions(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index c5c0ac5d9..0ce072ecd 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -35,6 +35,7 @@ var $errno = 0; ///< 에러 발생시 에러 코드 (0이면 에러가 없다고 정의) var $errstr = ''; ///< 에러 발생시 에러 메세지 var $query = ''; ///< 가장 최근에 수행된 query string + var $elapsed_time = 0; ///< 가장 최근에 수행된 query 의 실행시간 var $transaction_started = false; ///< 트랙잭션 처리 flag @@ -126,12 +127,14 @@ $this->setError(0,'success'); $this->query = $query; $this->act_start = getMicroTime(); + $this->elapsed_time = 0; } function actFinish() { if(!$this->query ) return; $this->act_finish = getMicroTime(); $elapsed_time = $this->act_finish - $this->act_start; + $this->elapsed_time = $elapsed_time; $GLOBALS['__db_elapsed_time__'] += $elapsed_time; $str = sprintf("\t%02d. %s (%0.6f sec)\n", ++$GLOBALS['__dbcnt'], $this->query, $elapsed_time); @@ -169,8 +172,6 @@ } } - - $this->query = null; } /** @@ -270,9 +271,11 @@ break; } - if($this->errno !=0 ) return new Object($this->errno, $this->errstr); - if(is_a($output, 'Object') || is_subclass_of($output, 'Object')) return $output; - return new Object(); + if($this->errno != 0 ) $output = new Object($this->errno, $this->errstr); + else if(!is_a($output, 'Object') && !is_subclass_of($output, 'Object')) $output = new Object(); + $output->add('_query', $this->query); + $output->add('_elapsed_time', sprintf("%0.5f",$this->elapsed_time)); + return $output; } /** diff --git a/modules/board/board.view.php b/modules/board/board.view.php index e4c55e76b..bcab62b3f 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -177,7 +177,7 @@ // 특정 문서의 permalink로 직접 접속할 경우 page값을 직접 구함 if(count($_GET)==1 && isset($_GET['document_srl']) && $oDocument->isExists() && !$oDocument->isNotice()) { - $page = $oDocumentModel->getDocumentPage($oDocument->document_srl, $this->module_srl, $this->list_count); + $page = $oDocumentModel->getDocumentPage($oDocument, $args); Context::set('page', $page); $args->page = $page; } diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 2ffabf7ae..6ed2bcc69 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -412,15 +412,35 @@ /** * @brief 해당 document의 page 가져오기, module_srl이 없으면 전체에서.. **/ - function getDocumentPage($document_srl, $module_srl=0, $list_count) { - // 변수 설정 - $args->document_srl = $document_srl; - $args->module_srl = $module_srl; + function getDocumentPage($oDocument, $opt) { + // 정렬 형식에 따라서 query args 변경 + switch($opt->sort_index) { + case 'update_order' : + if($opt->order_type == 'desc') $args->rev_update_order = $oDocument->get('update_order'); + else $args->update_order = $oDocument->get('update_order'); + break; + case 'regdate' : + if($opt->order_type == 'desc') $args->rev_regdate = $oDocument->get('regdate'); + else $args->regdate = $oDocument->get('regdate'); + break; + case 'voted_count' : + case 'readed_count' : + case 'comment_count' : + case 'title' : + return 1; + break; + default : + if($opt->order_type == 'desc') $args->rev_list_order = $oDocument->get('list_order'); + else $args->list_order = $oDocument->get('list_order'); + break; + } + $args->sort_index = $opt->sort_index; + $args->order_type = $opt->order_type; // 전체 갯수를 구한후 해당 글의 페이지를 검색 $output = executeQuery('document.getDocumentPage', $args); $count = $output->data->count; - $page = (int)(($count-1)/$list_count)+1; + $page = (int)(($count-1)/$opt->list_count)+1; return $page; } diff --git a/modules/document/queries/getDocumentPage.xml b/modules/document/queries/getDocumentPage.xml index 7c843a971..fe91910f3 100644 --- a/modules/document/queries/getDocumentPage.xml +++ b/modules/document/queries/getDocumentPage.xml @@ -7,6 +7,22 @@ - + + + + + + + + + + + + + + + + + From 9d7a4ccaeaa7785f6f20d64ed04f16ea7597ad86 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 12 Jun 2008 04:29:56 +0000 Subject: [PATCH 58/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4277 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.model.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/document/document.model.php b/modules/document/document.model.php index 6ed2bcc69..549edc0ab 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -434,6 +434,7 @@ else $args->list_order = $oDocument->get('list_order'); break; } + $args->module_srl = $oDocument->get('module_srl'); $args->sort_index = $opt->sort_index; $args->order_type = $opt->order_type; From c8a119b01bc1179152a90ab0ffcccc62509a8cb3 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 12 Jun 2008 05:37:22 +0000 Subject: [PATCH 59/87] =?UTF-8?q?rewrite=20module=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=8B=9C=20=EB=AA=87=EA=B0=80=EC=A7=80=20=EC=83=81=ED=99=A9?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=B4=20url=EC=9D=84=20=EB=94=94?= =?UTF-8?q?=EB=A0=89=ED=86=A0=EB=A6=AC=20=ED=98=95=EC=8B=9D=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EA=B0=80=20=EB=B3=80=EA=B2=BD=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4278 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 9 ++++ classes/context/Context.class.php | 70 +++++++++++++++++++------------ 2 files changed, 53 insertions(+), 26 deletions(-) diff --git a/.htaccess b/.htaccess index e7cb32774..3b31f0629 100644 --- a/.htaccess +++ b/.htaccess @@ -48,6 +48,12 @@ RewriteRule ^([a-zA-Z0-9_]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&page=$2 [L] # mid + category link RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)$ ./index.php?mid=$1&category=$2 [L] +# mid + act + document_Srl +RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$3&act=$2 [L] + +# mid + document_Srl + page +RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$2&page=$3 [L] + # mid + category + page RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&category=$2&page=$3 [L] @@ -63,5 +69,8 @@ RewriteRule ^([a-zA-Z0-9_]+)/tag/(.*)$ ./index.php?mid=$1&search_target=tag&sear # mid + search target writer RewriteRule ^([a-zA-Z0-9_]+)/writer/(.*)$ ./index.php?mid=$1&search_target=nick_name&search_keyword=$2 [L] +# mid + document_Srl + page + act +RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$3&page=$4&act=$2 [L] + # module link RewriteRule ^([a-zA-Z0-9_]+)(/){0,1}$ ./index.php?mid=$1 [L] diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index dee1341b4..d7f224f11 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -584,34 +584,49 @@ if($get_vars['act'] && $this->isExistsSSLAction($get_vars['act'])) $path = $this->getRequestUri(ENFORCE_SSL); else $path = $this->getRequestUri(RELEASE_SSL); - // rewrite모듈을 사용하고 인자의 값이 4개 이하일 경우 - if($this->allow_rewrite && $var_count < 4) { - $var_keys = array_keys($get_vars); + // rewrite모듈을 사용할때 getUrl()을 이용한 url 생성 + if($this->allow_rewrite) { + if(count($get_vars)) foreach($get_vars as $key => $value) if($value !== 0 && !$value) unset($get_vars[$key]); - if($var_count == 1) { - if($var_keys[0]=='mid') return $path.$get_vars['mid']; - elseif($var_keys[0]=='document_srl') return $path.$get_vars['document_srl']; - } elseif($var_count == 2) { - asort($var_keys); - $target = implode('.',$var_keys); - if($target=='act.mid' && !preg_match('/([A-Z]+)/',$get_vars['act'])) return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['act']); - elseif($target=='document_srl.mid') return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['document_srl']); - elseif($target=='act.document_srl') return sprintf('%s%s/%s',$path,$get_vars['document_srl'],$get_vars['act']); - elseif($target=='mid.page') return sprintf('%s%s/page/%s',$path,$get_vars['mid'],$get_vars['page']); - elseif($target=='category.mid') return sprintf('%s%s/category/%s',$path,$get_vars['mid'],$get_vars['category']); - } elseif($var_count == 3) { - asort($var_keys); - $target = implode('.',$var_keys); - if($target=='act.document_srl.key') { + $var_keys = array_keys($get_vars); + asort($var_keys); + $target = implode('.',$var_keys); + + switch($target) { + case 'mid' : + return $path.$get_vars['mid']; + case 'document_srl' : + return $path.$get_vars['document_srl']; + case 'act.mid' : + return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['act']); + case 'document_srl.mid' : + return sprintf('%s%s/%s',$path,$get_vars['mid'],$get_vars['document_srl']); + case 'act.document_srl' : + return sprintf('%s%s/%s',$path,$get_vars['document_srl'],$get_vars['act']); + case 'mid.page' : + return sprintf('%s%s/page/%s',$path,$get_vars['mid'],$get_vars['page']); + case 'category.mid' : + return sprintf('%s%s/category/%s',$path,$get_vars['mid'],$get_vars['category']); + case 'act.document_srl.key' : return sprintf('%s%s/%s/%s',$path,$get_vars['document_srl'],$get_vars['key'],$get_vars['act']); - } elseif($target=='category.mid.page') { + case 'document_srl.mid.page' : + return sprintf('%s%s/%s/page/%s',$path,$get_vars['mid'],$get_vars['document_srl'],$get_vars['page']); + case 'category.mid.page' : return sprintf('%s%s/category/%s/page/%s',$path,$get_vars['mid'],$get_vars['category'],$get_vars['page']); - } elseif($target=='mid.search_keyword.search_target' && $get_vars['search_target']=='tag') { - return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); - } elseif($target=='mid.search_keyword.search_target' && $get_vars['search_target']=='regdate') { - if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2)); - elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2)); - } + case 'mid.search_keyword.search_target' : + switch($get_vars['search_target']) { + case 'tag' : + return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); + case 'nick_name' : + return sprintf('%s%s/writer/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); + case 'regdate' : + if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2)); + elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2)); + } + case 'act.document_srl.mid' : + return sprintf('%s%s/%s/%s',$path,$get_vars['mid'], $get_vars['act'],$get_vars['document_srl']); + case 'act.document_srl.mid.page' : + return sprintf('%s%s/%s/%s/page/%s',$path,$get_vars['mid'], $get_vars['act'], $get_vars['document_srl'],$get_vars['page']); } } @@ -640,7 +655,10 @@ $use_ssl = false; break; } - return sprintf("%s://%s%s",$use_ssl?'https':'http',$_SERVER['HTTP_HOST'], getScriptPath()); + + if($use_ssl) return sprintf("%s://%s%s",'https',$_SERVER['HTTP_HOST'], getScriptPath()); + + return getScriptPath(); } /** From 3977e71a5a7b4f154c8e6331cac3a48534c87779 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 12 Jun 2008 07:10:57 +0000 Subject: [PATCH 60/87] =?UTF-8?q?url=EC=9D=84=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=EC=97=90=EC=84=9C=20hos?= =?UTF-8?q?tname=EC=9D=84=20=EB=B9=BC=EB=8F=84=EB=A1=9D=20=ED=95=9C=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=EC=9D=98=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4279 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index d7f224f11..efd7a6d21 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -656,9 +656,7 @@ break; } - if($use_ssl) return sprintf("%s://%s%s",'https',$_SERVER['HTTP_HOST'], getScriptPath()); - - return getScriptPath(); + return sprintf("%s://%s%s",$use_ssl?'https':'http',$_SERVER['HTTP_HOST'], getScriptPath()); } /** From 8c7391e9152dd9d4c465737c4bbbe942303c47a7 Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 14 Jun 2008 10:26:45 +0000 Subject: [PATCH 61/87] =?UTF-8?q?r4226=20=EB=B3=80=EA=B2=BD=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=AA=BD=EC=A7=80=ED=95=A8/?= =?UTF-8?q?=EC=B9=9C=EA=B5=AC=EB=B3=B4=EA=B8=B0=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4280 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/login_info/skins/default/login_info.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/widgets/login_info/skins/default/login_info.html b/widgets/login_info/skins/default/login_info.html index 03ed20991..d37cd7c85 100644 --- a/widgets/login_info/skins/default/login_info.html +++ b/widgets/login_info/skins/default/login_info.html @@ -17,8 +17,8 @@
    - - + + From 65a0355a457a8da759618472ffaa94aea270d1b4 Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 15 Jun 2008 08:29:33 +0000 Subject: [PATCH 62/87] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=AC=B8=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B6=94=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4281 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 2 +- modules/comment/lang/en.lang.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 28a84ee85..79c05b700 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -62,7 +62,7 @@ $lang->cmd_publish = "Publish"; $lang->cmd_layout_setup = 'Configure layout'; $lang->cmd_layout_edit = 'Edit layout'; - $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; + $lang->cmd_search_by_ipaddress = 'Search by IP Address'; $lang->enable = 'Enable'; $lang->disable = 'Disable'; diff --git a/modules/comment/lang/en.lang.php b/modules/comment/lang/en.lang.php index ee2036214..82d5344c0 100644 --- a/modules/comment/lang/en.lang.php +++ b/modules/comment/lang/en.lang.php @@ -5,7 +5,7 @@ * @brief comment module's basic language pack **/ - $lang->cmd_comment_do = 'You would...'; + $lang->cmd_comment_do = 'I want to'; $lang->comment_list = 'Comments List'; $lang->cmd_delete_checked_comment = 'Delete selected item'; From 889742d283f67b764bdbf1ae8b67c3de60742e6e Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 16 Jun 2008 01:57:37 +0000 Subject: [PATCH 63/87] =?UTF-8?q?=EC=9E=91=EC=84=B1=EA=B8=80=20=EB=B3=B4?= =?UTF-8?q?=EA=B8=B0=20=ED=8C=9D=EC=97=85=20=EB=A9=94=EB=89=B4=20=EC=98=A4?= =?UTF-8?q?=EB=8F=99=EC=9E=91=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@4282 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index efd7a6d21..2c74f2d7d 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -614,15 +614,16 @@ case 'category.mid.page' : return sprintf('%s%s/category/%s/page/%s',$path,$get_vars['mid'],$get_vars['category'],$get_vars['page']); case 'mid.search_keyword.search_target' : - switch($get_vars['search_target']) { - case 'tag' : - return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); - case 'nick_name' : - return sprintf('%s%s/writer/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); - case 'regdate' : - if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2)); - elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2)); - } + switch($get_vars['search_target']) { + case 'tag' : + return sprintf('%s%s/tag/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); + case 'nick_name' : + return sprintf('%s%s/writer/%s',$path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); + case 'regdate' : + if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2)); + elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2)); + } + break; case 'act.document_srl.mid' : return sprintf('%s%s/%s/%s',$path,$get_vars['mid'], $get_vars['act'],$get_vars['document_srl']); case 'act.document_srl.mid.page' : From b090d9cf0c4b17f638cdcb791c6d5defb5b44a58 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 16 Jun 2008 05:37:05 +0000 Subject: [PATCH 64/87] =?UTF-8?q?#440=20=EC=9C=84=EC=A0=AF=20=EC=BA=90?= =?UTF-8?q?=EC=8B=9C=20=EC=9E=AC=EC=83=9D=EC=84=B1=EC=8B=9C=20lock?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EC=9D=B4=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=97=AC=20=ED=95=98=EB=82=98=EC=9D=98=20=EC=9C=84=EC=A0=AF?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=B4=EC=84=A0=201=EB=B2=88=EC=9D=98?= =?UTF-8?q?=20=EC=BA=90=EC=8B=9C=20=EC=9E=AC=EC=83=9D=EC=84=B1=EC=9D=B4=20?= =?UTF-8?q?=EC=9D=B4=EB=A3=A8=EC=96=B4=EC=A7=80=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=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@4283 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 38 +++++++++++++------------ modules/page/page.admin.controller.php | 19 ++----------- modules/widget/widget.controller.php | 39 ++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 34 deletions(-) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index ccbc26345..bf05bd2f7 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -12,7 +12,9 @@ /** * @brief 위젯 캐시 처리 **/ - function getCache($widget, $args) { + function getCache($widget, $args, $lang_type = null, $ignore_cache = false) { + // 지정된 언어가 없으면 현재 언어 지정 + if(!$lang_type) $lang_type = Context::getLangType(); // widget, 캐시 번호와 캐시값이 설정되어 있는지 확인 $widget_sequence = $args->widget_sequence; @@ -21,7 +23,7 @@ /** * 캐시 번호와 캐시 값이 아예 없으면 바로 데이터를 추출해서 리턴 **/ - if(!$widget_cache || !$widget_sequence) { + if(!$ignore_cache && (!$widget_cache || !$widget_sequence)) { $oWidget = WidgetHandler::getObject($widget); if(!$oWidget) return; @@ -37,39 +39,39 @@ if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); // 캐시파일명을 구함 - $cache_file = sprintf('%s%d.%s.cache', $cache_path, $widget_sequence, Context::getLangType()); + $cache_file = sprintf('%s%d.%s.cache', $cache_path, $widget_sequence, $lang_type); - // 캐시 파일이 존재하면 해당 파일의 유효성 검사 - if(file_exists($cache_file)) { + // 캐시 Lock 파일을 구함 + $lock_file = sprintf('%s%d.%s.lock', $cache_path, $widget_sequence, $lang_type); + + // 캐시 파일이 존재하면 해당 파일의 유효성 검사 (lock파일이 있을 경우 유효성 검사하지 않음) + if(!$ignore_cache && file_exists($cache_file)) { $filemtime = filemtime($cache_file); // 수정 시간을 비교해서 캐싱중이어야 하거나 WidgetHandler.class.php 파일보다 나중에 만들어 졌다면 캐시값을 return - if($filemtime + $widget_cache*60 > time() && $filemtime > filemtime('./classes/widget/WidgetHandler.class.php')) { + if(file_exists($lock_file) || ($filemtime + $widget_cache*60 > time() && $filemtime > filemtime('./classes/widget/WidgetHandler.class.php'))) { return FileHandler::readFile($cache_file); } } - // 캐시를 새로 해야 할 경우임 + // lock 파일 생성 + FileHandler::writeFile($lock_file, ''); + + // 캐시 파일을 갱신하여야 할 경우 lock파일을 만들고 캐시 생성 $oWidget = WidgetHandler::getObject($widget); if(!$oWidget) return; $widget_content = $oWidget->proc($args); - WidgetHandler::writeCache($widget_sequence, $widget_content); + FileHandler::writeFile($cache_file, $widget_content); + + // lock 파일 제거 + @unlink($lock_file); return $widget_content; } /** - * @brief 캐시 파일 생성 - **/ - function writeCache($widget_sequence, $output) { - $cache_path = './files/cache/widget_cache/'; - $cache_file = sprintf('%s%d.%s.cache', $cache_path, $widget_sequence, Context::getLangType()); - FileHandler::writeFile($cache_file, $output); - } - - /** - * @brief 위젯을 찾아서 실행하고 결과를 출력 + * @brief 위젯이름과 인자를 받아서 결과를 생성하고 결과 리턴 * 태그 사용 templateHandler에서 WidgetHandler::execute()를 실행하는 코드로 대체하게 된다 * * $include_info가 true일 경우 페이지 수정시 위젯 핸들링을 위한 코드까지 포함함 diff --git a/modules/page/page.admin.controller.php b/modules/page/page.admin.controller.php index bfd2fb5a9..6bc96dd09 100644 --- a/modules/page/page.admin.controller.php +++ b/modules/page/page.admin.controller.php @@ -180,22 +180,9 @@ $content = $module_info->content; - // 언어 종류 가져옴 - $lang_list = Context::get('lang_supported'); - - // 위젯 캐시 sequence 를 가져옴 - preg_match_all('/widget_sequence="([0-9]+)"/i',$content, $matches); - - $cache_path = './files/cache/widget_cache/'; - - for($i=0;$i $val) { - $cache_file = sprintf('%s%d.%s.cache', $cache_path, $sequence, $lang_type); - @unlink($cache_file); - } - } + // widget controller 의 캐시파일 재생성 실행 + $oWidgetController = &getController('widget'); + $oWidgetController->recompileWidget($content); $this->setMessage('success_updated'); } diff --git a/modules/widget/widget.controller.php b/modules/widget/widget.controller.php index a6a0f728b..44a41888c 100644 --- a/modules/widget/widget.controller.php +++ b/modules/widget/widget.controller.php @@ -175,5 +175,44 @@ return WidgetHandler::execute($widget, $vars, $this->include_info); } + /** + * @brief 특정 content내의 위젯을 다시 생성 + **/ + function recompileWidget($content) { + // 언어 종류 가져옴 + $lang_list = Context::get('lang_supported'); + + // 위젯 캐시 sequence 를 가져옴 + preg_match_all('!]*)widget=([^\>]*?)\>!is', $content, $matches); + + $cache_path = './files/cache/widget_cache/'; + + $oWidget = new WidgetHandler(); + $oXmlParser = new XmlParser(); + + for($i=0;$iparse(trim($buff)); + + $args = $xml_doc->img->attrs; + if(!$args) continue; + + // 캐싱하지 않을 경우 패스 + $widget = $args->widget; + $sequence = $args->widget_sequence; + $cache = $args->widget_cache; + if(!$sequence || !$cache) continue; + + // 언어별로 위젯 캐시 파일이 있을 경우 재생성 + foreach($lang_list as $lang_type => $val) { + $cache_file = sprintf('%s%d.%s.cache', $cache_path, $sequence, $lang_type); + if(!file_exists($cache_file)) continue; + + $oWidget->getCache($widget, $args, $lang_type, true); + } + } + + } + } ?> From 8e86b49c4c4376366ed718a2ba3b5790a43dae6f Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 16 Jun 2008 05:41:16 +0000 Subject: [PATCH 65/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4284 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/widget/widget.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/widget/widget.controller.php b/modules/widget/widget.controller.php index 44a41888c..3b843971e 100644 --- a/modules/widget/widget.controller.php +++ b/modules/widget/widget.controller.php @@ -191,7 +191,7 @@ $oXmlParser = new XmlParser(); for($i=0;$iparse(trim($buff)); $args = $xml_doc->img->attrs; From dd7ad77fbddaf2d187488fa3db6de5a974c6c911 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 16 Jun 2008 05:57:07 +0000 Subject: [PATCH 66/87] =?UTF-8?q?=EC=BB=A8=ED=85=90=EC=B8=A0=20=EC=9C=84?= =?UTF-8?q?=EC=A0=AF=20=EC=B6=94=EA=B0=80/=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EC=95=88=EB=90=98=EB=8A=94=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4285 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/widget/tpl/js/widget.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/widget/tpl/js/widget.js b/modules/widget/tpl/js/widget.js index 22033d177..7c8c9b789 100644 --- a/modules/widget/tpl/js/widget.js +++ b/modules/widget/tpl/js/widget.js @@ -166,7 +166,8 @@ function getWidgetCode(childObj, widget) { **/ // 팝업 띄움 function doAddContent() { - popopen("./?module=widget&act=dispWidgetAdminAddContent&module_srl="+zoneModuleSrl, "addContent"); + var url = request_uri.setQuery('module','widget').setQuery('act','dispWidgetAdminAddContent').setQuery('module_srl',zoneModuleSrl); + popopen(url, "addContent"); } // 직접 내용을 입력하기 위한 에디터 활성화 작업 및 form 데이터 입력 @@ -324,7 +325,7 @@ function doCheckWidget(e) { var widget = p_obj.getAttribute("widget"); if(!widget) return; selectedWidget = p_obj; - if(widget == 'widgetContent') popopen("./?module=widget&act=dispWidgetAdminAddContent&module_srl="+zoneModuleSrl, "addContent"); + if(widget == 'widgetContent') popopen(request_uri+"?module=widget&act=dispWidgetAdminAddContent&module_srl="+zoneModuleSrl, "addContent"); else popopen(request_uri+"?module=widget&act=dispWidgetGenerateCodeInPage&selected_widget="+widget,'GenerateCodeInPage'); return; // 위젯 복사 From ad1bd7cae277e10a9fffbf1e7f0f46e8440979e8 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 16 Jun 2008 08:07:15 +0000 Subject: [PATCH 67/87] =?UTF-8?q?member=EB=AA=A8=EB=93=88=EC=A4=91=20?= =?UTF-8?q?=EC=AA=BD=EC=A7=80/=EC=B9=9C=EA=B5=AC=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EB=A5=BC=20communication=20=EB=AA=A8=EB=93=88=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99=ED=95=A8=EC=97=90=20=EB=94=B0=EB=9D=BC=20?= =?UTF-8?q?=EA=B8=B0=EC=A1=B4=EC=9D=98=20action=EC=A4=91=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9D=B4=20=EB=B3=80=EA=B2=BD=EB=90=9C=20=EA=B2=83?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=B4=20=ED=95=98=EC=9C=84=ED=98=B8?= =?UTF-8?q?=ED=99=98=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=B4=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=A3=A8=ED=8B=B4=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@4286 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 2c74f2d7d..37fb01e20 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -578,6 +578,10 @@ $get_vars[$key] = $val; } + /* member module중의 쪽지함/친구 관리 기능이 communication 모듈로 이전하여 하위 호환성을 위한 act값 변경 */ + if($get_vars['act'] == 'dispMemberFriend') $get_vars['act'] = 'dispCommunicationFriend'; + elseif($get_vars['act'] == 'dispMemberMessages') $get_vars['act'] = 'dispCommunicationMessages'; + $var_count = count($get_vars); if(!$var_count) return ''; From 5f95069972919f4fa792ee4b60b457b3da03d020 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 16 Jun 2008 08:43:43 +0000 Subject: [PATCH 68/87] =?UTF-8?q?=ED=9A=8C=EC=9B=90=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EC=9D=98=20=EA=B8=B0=EB=B3=B8=20=EC=8A=A4=ED=82=A8=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=82=AC=EC=9A=A9=EC=9E=90=EB=AA=85/=EB=8B=89?= =?UTF-8?q?=EB=84=A4=EC=9E=84/=EC=9D=B4=EB=A9=94=EC=9D=BC=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=EC=9D=98=20=ED=95=84=EC=88=98=20=ED=95=AD=EB=AA=A9=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C=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@4287 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/skins/default/modify_info.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/member/skins/default/modify_info.html b/modules/member/skins/default/modify_info.html index 18aa61e78..a371b09fe 100644 --- a/modules/member/skins/default/modify_info.html +++ b/modules/member/skins/default/modify_info.html @@ -50,7 +50,7 @@
    - + @@ -58,7 +58,7 @@ - + From 3d6ee68a1586c8071518ebb6d90c2c5478f2865c Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 17 Jun 2008 01:05:20 +0000 Subject: [PATCH 69/87] =?UTF-8?q?resize=5Fimage=20=EC=95=A0=EB=93=9C?= =?UTF-8?q?=EC=98=A8=EC=9D=B4=20=EC=8A=A4=ED=94=84=EB=A7=81=EB=85=B8?= =?UTF-8?q?=ED=8A=B8=20=EB=AA=A8=EB=93=88=EC=9D=98=20=EB=82=B4=EC=9A=A9?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=8F=99=EC=9E=91=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20?= =?UTF-8?q?=EB=B0=8F=20js=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@4288 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/js/resize_image.js | 3 ++- modules/springnote/skins/xe_official/list.html | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index 3e1953932..1c1ebd942 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -26,9 +26,10 @@ function resizeImageContents() { if(!/\/(modules|addons|classes|common|layouts|libs|widgets)\//i.test(obj.src)) { var parent = obj.parentNode; while(parent) { - if(/(document|comment)_([0-9]+)_([0-9]+)/i.test(parent.className) ) break; + if(/(document|comment)_([0-9]*)_([0-9]*)/i.test(parent.className) ) break; parent = parent.parentNode; } + if(!parent) continue; var dummy = xCreateElement("div"); dummy.style.visibility = "hidden"; diff --git a/modules/springnote/skins/xe_official/list.html b/modules/springnote/skins/xe_official/list.html index 1117135c0..e5ca5f051 100644 --- a/modules/springnote/skins/xe_official/list.html +++ b/modules/springnote/skins/xe_official/list.html @@ -105,7 +105,7 @@
    -
    +
    {$page->source}
    From 474ca4df06554e2933095aebfb087d2748273c3d Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 17 Jun 2008 02:16:49 +0000 Subject: [PATCH 70/87] =?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=EC=99=BC=EC=AA=BD=20=EB=A9=94?= =?UTF-8?q?=EB=89=B4=EC=9D=98=20=EC=84=A0=ED=83=9D=EB=90=9C=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=ED=91=9C=EC=8B=9C=20=EB=B0=A9=EC=8B=9D=EC=9D=84=20?= =?UTF-8?q?=EA=B0=81=20=EB=AA=A8=EB=93=88=EB=B3=84=20action=EA=B0=92?= =?UTF-8?q?=EA=B3=BC=20=EC=A0=95=ED=99=95=ED=9E=88=20=EB=A7=A4=EC=B9=98?= =?UTF-8?q?=EB=90=98=EB=8A=94=20=EA=B2=83=EC=9D=84=20=EB=8C=80=EC=83=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=ED=95=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@4289 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/admin.admin.view.php | 18 +++++++++++------- modules/admin/tpl/layout.html | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 0d6c53373..90dea6c00 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -27,16 +27,20 @@ // 설치된 모듈 목록 가져오기 $oModuleModel = &getModel('module'); $installed_module_list = $oModuleModel->getModulesXmlInfo(); + foreach($installed_module_list as $key => $val) { + $action_spec = $oModuleModel->getModuleActionXml($val->module); + $actions = array(); + if($action_spec->default_index_act) $actions[] = $action_spec->default_index_act; + if($action_spec->admin_index_act) $actions[] = $action_spec->admin_index_act; + if($action_spec->action) foreach($action_spec->action as $k => $v) $actions[] = $k; + $installed_module_list[$key]->actions = $actions; + } Context::set('installed_module_list', $installed_module_list); - // 현재 실행중인 모듈을 구해 놓음 - $running_module = strtolower(preg_replace('/([a-z]+)([A-Z]+)([a-z0-9]+)(.*)/', '\\2\\3', $this->act)); - Context::set('running_module', $running_module); - $db_info = Context::getDBInfo(); - - Context::set('time_zone_list', $GLOBALS['time_zone']); - Context::set('time_zone', $GLOBALS['_time_zone']); + + Context::set('time_zone_list', $GLOBALS['time_zone']); + Context::set('time_zone', $GLOBALS['_time_zone']); Context::set('use_rewrite', $db_info->use_rewrite=='Y'?'Y':'N'); Context::set('use_optimizer', $db_info->use_optimizer!='N'?'Y':'N'); Context::set('qmail_compatibility', $db_info->qmail_compatibility=='Y'?'Y':'N'); diff --git a/modules/admin/tpl/layout.html b/modules/admin/tpl/layout.html index 7a380b402..e919d609f 100644 --- a/modules/admin/tpl/layout.html +++ b/modules/admin/tpl/layout.html @@ -32,7 +32,7 @@ -
  • module)-->class="on" onclick="location.href='{getUrl('','module','admin','act',$v->admin_index_act)}'; return false;"> +
  • actions))-->class="on" onclick="location.href='{getUrl('','module','admin','act',$v->admin_index_act)}'; return false;"> {$v->title}
  • From ea2fede30ef598a8f1cf3fadb21d15ea3d46b63f Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 06:56:29 +0000 Subject: [PATCH 71/87] =?UTF-8?q?#472=20=EC=84=B8=EC=85=98=EC=9D=84=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EA=B8=B0=EB=B0=98=EC=9D=B4=20=EC=95=84?= =?UTF-8?q?=EB=8B=8C=20DB=EA=B8=B0=EB=B0=98=EC=9C=BC=EB=A1=9C=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EA=B3=A0=20=EC=A0=91=EC=86=8D=EC=9E=90=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=20=EC=9C=84=EC=A0=AF=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4290 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 28 ++++-- classes/db/DB.class.php | 34 ++++--- classes/db/DBCubrid.class.php | 2 +- classes/db/DBFirebird.class.php | 2 +- classes/db/DBMysql.class.php | 2 +- classes/db/DBMysql_innodb.class.php | 2 +- classes/db/DBPostgresql.class.php | 2 +- classes/db/DBSqlite2.class.php | 2 +- classes/db/DBSqlite3_pdo.class.php | 2 +- classes/file/FileHandler.class.php | 2 + classes/module/ModuleHandler.class.php | 27 +++--- classes/module/ModuleObject.class.php | 8 +- classes/xml/XmlQueryParser.class.php | 6 +- common/js/tree_menu.js | 3 + config/config.inc.php | 48 ++++------ config/func.inc.php | 2 +- modules/document/document.controller.php | 59 +++++++++--- modules/menu/menu.admin.controller.php | 65 +++++++++---- modules/session/conf/info.xml | 11 +++ modules/session/conf/module.xml | 9 ++ modules/session/lang/ko.lang.php | 13 +++ modules/session/queries/deleteSession.xml | 8 ++ modules/session/queries/gcSession.xml | 8 ++ modules/session/queries/getLoggedMembers.xml | 19 ++++ .../session/queries/getLoogedMemberList.xml | 14 +++ modules/session/queries/getSession.xml | 11 +++ modules/session/queries/insertSession.xml | 13 +++ modules/session/queries/updateSession.xml | 15 +++ modules/session/schemas/session.xml | 8 ++ modules/session/session.admin.controller.php | 26 ++++++ modules/session/session.admin.view.php | 26 ++++++ modules/session/session.class.php | 87 ++++++++++++++++++ modules/session/session.controller.php | 65 +++++++++++++ modules/session/session.model.php | 63 +++++++++++++ modules/session/tpl/index.html | 8 ++ modules/session/tpl/js/session.js | 9 ++ widgets/logged_members/conf/info.xml | 17 ++++ .../logged_members/logged_members.class.php | 42 +++++++++ .../skins/default/css/normal.css | 4 + .../default/images/normal/lineNotice.gif | Bin 0 -> 139 bytes .../logged_members/skins/default/list.html | 16 ++++ widgets/logged_members/skins/default/skin.xml | 25 +++++ 42 files changed, 702 insertions(+), 111 deletions(-) create mode 100644 modules/session/conf/info.xml create mode 100644 modules/session/conf/module.xml create mode 100644 modules/session/lang/ko.lang.php create mode 100644 modules/session/queries/deleteSession.xml create mode 100644 modules/session/queries/gcSession.xml create mode 100644 modules/session/queries/getLoggedMembers.xml create mode 100644 modules/session/queries/getLoogedMemberList.xml create mode 100644 modules/session/queries/getSession.xml create mode 100644 modules/session/queries/insertSession.xml create mode 100644 modules/session/queries/updateSession.xml create mode 100644 modules/session/schemas/session.xml create mode 100644 modules/session/session.admin.controller.php create mode 100644 modules/session/session.admin.view.php create mode 100644 modules/session/session.class.php create mode 100644 modules/session/session.controller.php create mode 100644 modules/session/session.model.php create mode 100644 modules/session/tpl/index.html create mode 100644 modules/session/tpl/js/session.js create mode 100644 widgets/logged_members/conf/info.xml create mode 100644 widgets/logged_members/logged_members.class.php create mode 100644 widgets/logged_members/skins/default/css/normal.css create mode 100644 widgets/logged_members/skins/default/images/normal/lineNotice.gif create mode 100644 widgets/logged_members/skins/default/list.html create mode 100644 widgets/logged_members/skins/default/skin.xml diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 37fb01e20..8acfff40c 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -73,12 +73,25 @@ // 기본적인 DB정보 세팅 $this->_loadDBInfo(); + // 세션 핸들러 지정 + $oSessionModel = &getModel('session'); + $oSessionController = &getController('session'); + session_set_save_handler( + array(&$oSessionController,"open"), + array(&$oSessionController,"close"), + array(&$oSessionModel,"read"), + array(&$oSessionController,"write"), + array(&$oSessionController,"destroy"), + array(&$oSessionController,"gc") + ); + session_start(); + // 쿠키로 설정된 언어타입 가져오기 if($_COOKIE['lang_type']) $this->lang_type = $_COOKIE['lang_type']; else $this->lang_type = $this->db_info->lang_type; // 등록된 기본 언어파일 찾기 - $langs = file('./common/lang/lang.info'); + $langs = file(_XE_PATH_.'common/lang/lang.info'); $accept_lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); foreach($langs as $val) { list($lang_prefix, $lang_text) = explode(',',$val); @@ -99,7 +112,7 @@ // 기본 언어파일 로드 $this->lang = &$GLOBALS['lang']; - $this->_loadLang("./common/lang/"); + $this->_loadLang(_XE_PATH_."common/lang/"); // Request Method 설정 $this->_setRequestMethod(); @@ -129,7 +142,7 @@ } // rewrite 모듈사용 상태 체크 - if(file_exists('./.htaccess')&&$this->db_info->use_rewrite == 'Y') $this->allow_rewrite = true; + if(file_exists(_XE_PATH_.'.htaccess')&&$this->db_info->use_rewrite == 'Y') $this->allow_rewrite = true; else $this->allow_rewrite = false; // 기본 JS/CSS 등록 @@ -164,6 +177,9 @@ * @brief DB및 기타 자원들의 close **/ function close() { + // Session Close + if(function_exists('session_write_close')) session_write_close(); + // DB close $oDB = &DB::getInstance(); if(is_object($oDB)&&method_exists($oDB, 'close')) $oDB->close(); @@ -828,7 +844,7 @@ * @brief js file 목록을 return **/ function _getJsFile() { - require_once("./classes/optimizer/Optimizer.class.php"); + require_once(_XE_PATH_."classes/optimizer/Optimizer.class.php"); $oOptimizer = new Optimizer(); return $oOptimizer->getOptimizedFiles($this->_getUniqueFileList($this->js_files), "js"); } @@ -863,7 +879,7 @@ * @brief CSS file 목록 return **/ function _getCSSFile() { - require_once("./classes/optimizer/Optimizer.class.php"); + require_once(_XE_PATH_."classes/optimizer/Optimizer.class.php"); $oOptimizer = new Optimizer(); return $oOptimizer->getOptimizedFiles($this->_getUniqueFileList($this->css_files), "css"); } @@ -932,7 +948,7 @@ * @brief db설정내용이 저장되어 있는 config file의 path를 return **/ function getConfigFile() { - return "./files/config/db.config.php"; + return _XE_PATH_."files/config/db.config.php"; } /** diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 0ce072ecd..e7cdb0e10 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -15,7 +15,7 @@ class DB { - var $count_cache_path = './files/cache/db'; + var $count_cache_path = 'files/cache/db'; var $cond_operation = array( ///< 조건문에서 조건을 등호로 표시하는 변수 'equal' => '=', @@ -43,7 +43,7 @@ var $supported_list = array(); ///< 지원하는 DB의 종류, classes/DB/DB***.class.php 를 이용하여 동적으로 작성됨 - var $cache_file = './files/cache/queries/'; ///< query cache파일의 위치 + var $cache_file = 'files/cache/queries/'; ///< query cache파일의 위치 /** * @brief DB를 상속받는 특정 db type의 instance를 생성 후 return @@ -54,15 +54,23 @@ if(!$GLOBALS['__DB__']) { $class_name = sprintf("DB%s%s", strtoupper(substr($db_type,0,1)), strtolower(substr($db_type,1))); - $class_file = sprintf("./classes/db/%s.class.php", $class_name); + $class_file = sprintf("%sclasses/db/%s.class.php", _XE_PATH_, $class_name); if(!file_exists($class_file)) new Object(-1, 'msg_db_not_setted'); require_once($class_file); - $eval_str = sprintf('$GLOBALS[\'__DB__\'] = new %s();', $class_name); + $eval_str = sprintf('$GLOBALS[\'__DB__\'][\''.$db_type.'\'] = new %s();', $class_name); eval($eval_str); } - return $GLOBALS['__DB__']; + return $GLOBALS['__DB__'][$db_type]; + } + + /** + * @brief constructor + **/ + function DB() { + $this->count_cache_path = _XE_PATH_.$this->count_cache_path; + $this->cache_file = _XE_PATH_.$this->cache_file; } /** @@ -77,7 +85,7 @@ * @brief 지원 가능한 DB 목록을 return **/ function _getSupportedList() { - $db_classes_path = "./classes/db/"; + $db_classes_path = _XE_PATH_."classes/db/"; $filter = "/^DB([^\.]+)\.class\.php/i"; $supported_list = FileHandler::readDir($db_classes_path, $filter, true); sort($supported_list); @@ -89,7 +97,7 @@ if(version_compare(phpversion(), '5.0') < 0 && preg_match('/pdo/i',$db_type)) continue; $class_name = sprintf("DB%s%s", strtoupper(substr($db_type,0,1)), strtolower(substr($db_type,1))); - $class_file = sprintf("./classes/db/%s.class.php", $class_name); + $class_file = sprintf(_XE_PATH_."classes/db/%s.class.php", $class_name); if(!file_exists($class_file)) continue; unset($oDB); @@ -144,7 +152,7 @@ $str .= sprintf("\t Query Failed : %d\n\t\t\t %s\n", $this->errno, $this->errstr); if(__DEBUG_DB_OUTPUT__==1) { - $debug_file = "./files/_debug_db_query.php"; + $debug_file = _XE_PATH_."files/_debug_db_query.php"; $buff = sprintf("%s\n",print_r($str,true)); if($display_line) $buff = "\n====================================\n".$buff."------------------------------------\n"; @@ -161,7 +169,7 @@ // __LOG_SLOW_QUERY__ 가 정해져 있다면 시간 체크후 쿼리 로그 남김 if(__LOG_SLOW_QUERY__>0 && $elapsed_time > __LOG_SLOW_QUERY__) { $buff = ''; - $log_file = './files/_db_slow_query.php'; + $log_file = _XE_PATH_.'files/_db_slow_query.php'; if(!file_exists($log_file)) { $buff = ''."\n"; } @@ -218,17 +226,17 @@ } if(!$target || !$module || !$id) return new Object(-1, 'msg_invalid_queryid'); - $xml_file = sprintf('./%s/%s/queries/%s.xml', $target, $module, $id); + $xml_file = sprintf('%s%s/%s/queries/%s.xml', _XE_PATH_, $target, $module, $id); if(!file_exists($xml_file)) return new Object(-1, 'msg_invalid_queryid'); // 일단 cache 파일을 찾아본다 - $cache_file = sprintf('%s%s.cache.php', $this->cache_file, $query_id); + $cache_file = sprintf('%s%s%s.cache.php', _XE_PATH_, $this->cache_file, $query_id); if(file_exists($cache_file)) $cache_time = filemtime($cache_file); else $cache_time = -1; // 캐시 파일이 없거나 시간 비교하여 최근것이 아니면 원본 쿼리 xml파일을 찾아서 파싱을 한다 - if($cache_timeparse($query_id, $xml_file, $cache_file); } diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 2a94d2c4e..e8ddca98d 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -668,7 +668,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf('select count(*) as "count" from %s %s', implode(',',$table_list), $condition); diff --git a/classes/db/DBFirebird.class.php b/classes/db/DBFirebird.class.php index 12b5ef476..aa00106b9 100644 --- a/classes/db/DBFirebird.class.php +++ b/classes/db/DBFirebird.class.php @@ -814,7 +814,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf('select count(*) as "count" from %s %s;', implode(',',$table_list), $condition); diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index 6c6573486..a0875db52 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -546,7 +546,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index a3a982eed..aebf7a07d 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -556,7 +556,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); diff --git a/classes/db/DBPostgresql.class.php b/classes/db/DBPostgresql.class.php index 70c6d5f5e..545527fb4 100644 --- a/classes/db/DBPostgresql.class.php +++ b/classes/db/DBPostgresql.class.php @@ -545,7 +545,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); diff --git a/classes/db/DBSqlite2.class.php b/classes/db/DBSqlite2.class.php index ef3e6fb2f..6a993b2eb 100644 --- a/classes/db/DBSqlite2.class.php +++ b/classes/db/DBSqlite2.class.php @@ -564,7 +564,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); diff --git a/classes/db/DBSqlite3_pdo.class.php b/classes/db/DBSqlite3_pdo.class.php index 3256e90e6..03de0920f 100644 --- a/classes/db/DBSqlite3_pdo.class.php +++ b/classes/db/DBSqlite3_pdo.class.php @@ -605,7 +605,7 @@ * 그닥 좋지는 않은 구조이지만 편리하다.. -_-; **/ function _getNavigationData($table_list, $columns, $condition, $output) { - require_once('./classes/page/PageHandler.class.php'); + require_once(_XE_PATH_.'classes/page/PageHandler.class.php'); // 전체 개수를 구함 $count_query = sprintf("select count(*) as count from %s %s", implode(',',$table_list), $condition); diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 2cd29f1d5..5742b9963 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -88,8 +88,10 @@ * 주어진 경로를 단계별로 접근하여 recursive하게 디렉토리 생성 **/ function makeDir($path_string) { + $path_string = str_replace(_XE_PATH_,'',$path_string); $path_list = explode('/', $path_string); + $path = _XE_PATH_; for($i=0;$itemplate_path = $path; } @@ -274,8 +274,8 @@ * @brief layout 경로 지정 **/ function setLayoutPath($path) { + if(substr($path,0,1)!='/' && substr($path,0,2)!='./') $path = './'.$path; if(substr($path,-1)!='/') $path .= '/'; - if(substr($path,0,2)!='./') $path = './'.$path; $this->layout_path = $path; } @@ -297,7 +297,7 @@ // addon 실행(called_position 를 before_module_proc로 하여 호출) $called_position = 'before_module_proc'; - @include("./files/cache/activated_addons.cache.php"); + @include(_XE_PATH_."files/cache/activated_addons.cache.php"); // 지금까지 이상이 없었다면 action 실행 if(!$this->stop_proc) { @@ -347,7 +347,7 @@ // addon 실행(called_position 를 after_module_proc로 하여 호출) $called_position = 'after_module_proc'; - @include("./files/cache/activated_addons.cache.php"); + @include(_XE_PATH_."files/cache/activated_addons.cache.php"); if(is_a($output, 'Object') || is_subclass_of($output, 'Object')) { $this->setError($output->getError()); diff --git a/classes/xml/XmlQueryParser.class.php b/classes/xml/XmlQueryParser.class.php index e08dffab4..fbbd06181 100644 --- a/classes/xml/XmlQueryParser.class.php +++ b/classes/xml/XmlQueryParser.class.php @@ -49,12 +49,12 @@ $output->tables[$alias] = $table_name; // 테이블을 찾아서 컬럼의 속성을 구함 - $table_file = sprintf('./%s/%s/schemas/%s.xml', 'modules', $module, $table_name); + $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $module, $table_name); if(!file_exists($table_file)) { - $searched_list = FileHandler::readDir('./modules'); + $searched_list = FileHandler::readDir(_XE_PATH_.'modules'); $searched_count = count($searched_list); for($i=0;$i<$searched_count;$i++) { - $table_file = sprintf('./%s/%s/schemas/%s.xml', 'modules', $searched_list[$i], $table_name); + $table_file = sprintf('%s%s/%s/schemas/%s.xml', _XE_PATH_, 'modules', $searched_list[$i], $table_name); if(file_exists($table_file)) break; } } diff --git a/common/js/tree_menu.js b/common/js/tree_menu.js index 7b2d6b39d..0e9e0ae27 100644 --- a/common/js/tree_menu.js +++ b/common/js/tree_menu.js @@ -126,6 +126,9 @@ function drawTreeMenu(oXml, callback_func, resopnse_tags, null_func, param) { if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl); } + var waiting_obj = xGetElementById("waitingforserverresponse"); + if(waiting_obj) waiting_obj.style.visibility = "hidden"; + return null; } diff --git a/config/config.inc.php b/config/config.inc.php index a8e15edfe..983c473fe 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -55,10 +55,15 @@ **/ define('__OB_GZHANDLER_ENABLE__', 1); + /** + * @brief zbXE가 설치된 장소의 base path를 구함 + **/ + define('_XE_PATH_', str_replace('config/config.inc.php','',__FILE__)); + /** * @brief 간단하게 사용하기 위한 함수 정의한 파일 require **/ - require_once('./config/func.inc.php'); + require_once(_XE_PATH_.'config/func.inc.php'); if(__DEBUG__) define('__StartTime__', getMicroTime()); @@ -69,33 +74,18 @@ * php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상 **/ if(__DEBUG__) define('__ClassLoadStartTime__', 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(_XE_PATH_.'classes/object/Object.class.php'); + require_once(_XE_PATH_.'classes/handler/Handler.class.php'); + require_once(_XE_PATH_.'classes/xml/XmlParser.class.php'); + require_once(_XE_PATH_.'classes/context/Context.class.php'); + require_once(_XE_PATH_.'classes/db/DB.class.php'); + require_once(_XE_PATH_.'classes/file/FileHandler.class.php'); + require_once(_XE_PATH_.'classes/widget/WidgetHandler.class.php'); + require_once(_XE_PATH_.'classes/editor/EditorHandler.class.php'); + require_once(_XE_PATH_.'classes/module/ModuleObject.class.php'); + require_once(_XE_PATH_.'classes/module/ModuleHandler.class.php'); + require_once(_XE_PATH_.'classes/display/DisplayHandler.class.php'); + require_once(_XE_PATH_.'classes/template/TemplateHandler.class.php'); + require_once(_XE_PATH_.'classes/mail/Mail.class.php'); if(__DEBUG__) $GLOBALS['__elapsed_class_load__'] = getMicroTime() - __ClassLoadStartTime__; - - /** - * @brief 세션 설정 - * 세션의 파기 시간을 5시간으로 하고 세션 저장 경로를 files/session 으로 변경 - **/ - 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); - } - if(is_dir('./files/sessions')) session_save_path(realpath('.').'/files/sessions/'); - session_start(); - } ?> diff --git a/config/func.inc.php b/config/func.inc.php index a3e9aaafa..571cceb74 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -313,7 +313,7 @@ * tail -f ./files/_debug_message.php 하여 계속 살펴 볼 수 있다 **/ function debugPrint($buff = null, $display_line = true) { - $debug_file = "./files/_debug_message.php"; + $debug_file = _XE_PATH_."files/_debug_message.php"; $buff = sprintf("%s\n",print_r($buff,true)); if($display_line) $buff = "\n====================================\n".$buff."------------------------------------\n"; diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index af002f7fc..eac846243 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -793,23 +793,52 @@ $tree[$parent_srl][$category_srl] = $node; } - // 세션 디렉토리 변경 구문 - $php_script = ""; - if(!ini_get('session.auto_start')) { - if(!is_dir("./files/sessions")) { - FileHandler::makeDir("./files/sessions"); - @chmod("./files/sessions", 0777); - } + // 캐시 파일의 권한과 그룹 설정을 위한 공통 헤더 + $header_script = + '$lang_type = Context::getLangType(); '. + '$is_logged = Context::get(\'is_logged\'); '. + '$logged_info = Context::get(\'logged_info\'); '. + 'if($is_logged && $logged_info->is_admin=="Y") { '. + '$is_admin = true; '. + '$group_srls = array_keys($logged_info->group_list); '. + '} else { '. + '$is_admin = false; '. + '$group_srsl = array(); '. + '} '; - $php_script = 'session_cache_limiter("no-cache, must-revalidate"); ini_set("session.gc_maxlifetime", "18000"); if(is_dir("../../sessions")) session_save_path("../../sessions/"); session_start();'; - } - - // xml 캐시 파일 생성 - $xml_buff = sprintf('%s', $php_script, $this->getXmlTree($tree[0], $tree)); + // xml 캐시 파일 생성 (xml캐시는 따로 동작하기에 session 지정을 해주어야 함) + $xml_buff = sprintf( + 'init(); '. + 'header("Content-Type: text/xml; charset=UTF-8"); '. + 'header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); '. + 'header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); '. + 'header("Cache-Control: no-store, no-cache, must-revalidate"); '. + 'header("Cache-Control: post-check=0, pre-check=0", false); '. + 'header("Pragma: no-cache"); '. + '%s'. + '?>'. + '%s', + $header_script, + $this->getXmlTree($tree[0], $tree) + ); // php 캐시 파일 생성 $php_output = $this->getPhpCacheCode($tree[0], $tree, 0); - $php_buff = sprintf('list = array(%s); ?>', $php_output['category_title_str'], $php_output['buff']); + $php_buff = sprintf( + 'list = array(%s); '. + '?>', + $header_script, + $php_output['category_title_str'], + $php_output['buff'] + ); // 파일 저장 FileHandler::writeFile($xml_file, $xml_buff); @@ -839,7 +868,7 @@ $module_srl = $node->module_srl; // node->group_srls값이 있으면 - if($group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); + if($group_srls) $group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( @@ -886,7 +915,7 @@ $output['category_srl_list'] = array_merge($output['category_srl_list'], $child_output['category_srl_list']); // node->group_srls값이 있으면 - if($node->group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$node->group_srls); + if($node->group_srls) $group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s)))))',$node->group_srls); else $group_check_code = "true"; // 변수 정리 diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 0d928b989..2d80c4cd7 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -349,23 +349,52 @@ $tree[$parent_srl][$menu_item_srl] = $node; } - // 세션 디렉토리 변경 구문 - $php_script = ""; - if(!ini_get('session.auto_start')) { - if(!is_dir("./files/sessions")) { - FileHandler::makeDir("./files/sessions"); - @chmod("./files/sessions", 0777); - } + // 캐시 파일의 권한과 그룹 설정을 위한 공통 헤더 + $header_script = + '$lang_type = Context::getLangType(); '. + '$is_logged = Context::get(\'is_logged\'); '. + '$logged_info = Context::get(\'logged_info\'); '. + 'if($is_logged && $logged_info->is_admin=="Y") { '. + '$is_admin = true; '. + '$group_srls = array_keys($logged_info->group_list); '. + '} else { '. + '$is_admin = false; '. + '$group_srsl = array(); '. + '} '; - $php_script = 'session_cache_limiter("no-cache, must-revalidate"); ini_set("session.gc_maxlifetime", "18000"); if(is_dir("../../sessions")) session_save_path("../../sessions/"); session_start();'; - } - - // xml 캐시 파일 생성 - $xml_buff = sprintf('is_admin=="Y") $_is_admin = true; ?>%s', $php_script, $this->getXmlTree($tree[0], $tree)); + // xml 캐시 파일 생성 (xml캐시는 따로 동작하기에 session 지정을 해주어야 함) + $xml_buff = sprintf( + 'init(); '. + 'header("Content-Type: text/xml; charset=UTF-8"); '. + 'header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); '. + 'header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); '. + 'header("Cache-Control: no-store, no-cache, must-revalidate"); '. + 'header("Cache-Control: post-check=0, pre-check=0", false); '. + 'header("Pragma: no-cache"); '. + '%s'. + '?>'. + '%s', + $header_script, + $this->getXmlTree($tree[0], $tree) + ); // php 캐시 파일 생성 $php_output = $this->getPhpCacheCode($tree[0], $tree); - $php_buff = sprintf('is_admin=="Y") $_is_admin = true; $lang_type = Context::getLangType(); %s; $menu->list = array(%s); ?>', $php_output['name'], $php_output['buff']); + $php_buff = sprintf( + 'list = array(%s); '. + '?>', + $header_script, + $php_output['name'], + $php_output['buff'] + ); // 파일 저장 FileHandler::writeFile($xml_file, $xml_buff); @@ -394,7 +423,7 @@ foreach($names as $key => $val) { $name_arr_str .= sprintf('"%s"=>"%s",',$key, htmlspecialchars($val)); } - $name_str = sprintf('$_names = array(%s); print $_names[$_SESSION["lang_type"]];', $name_arr_str); + $name_str = sprintf('$_names = array(%s); print $_names[$lang_type];', $name_arr_str); $url = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->url); if(preg_match('/^([0-9a-zA-Z\_\-]+)$/', $node->url)) { @@ -422,13 +451,13 @@ else $classname = ''; if($hover_btn) $hover_str = sprintf('onmouseover="this.src=\'%s\'"', $hover_btn); else $hover_str = ''; if($active_btn) $active_str = sprintf('onmousedown="this.src=\'%s\'"', $active_btn); else $active_str = ''; - $link = sprintf('<img src="%s" onmouseout="this.src=\'%s\'" alt="" %s %s %s />', $normal_btn, $normal_btn, $hover_str, $active_str, $classname); + $link = sprintf('<img src="%s" onmouseout="this.src=\'%s\'" alt="" %s %s %s />', $normal_btn, $normal_btn, $hover_str, $active_str, $classname); } else { - $link = ''; + $link = ''; } // node->group_srls값이 있으면 - if($group_srls) $group_check_code = sprintf('($_is_admin==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); + if($group_srls) $group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" link="%s"', @@ -484,7 +513,7 @@ $output['url_list'] = array_merge($output['url_list'], $child_output['url_list']); // node->group_srls값이 있으면 - if($node->group_srls) $group_check_code = sprintf('($_is_admin==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$node->group_srls); + if($node->group_srls) $group_check_code = sprintf('($is_admin==true||(is_array($group_srls)&&count(array_intersect($group_srls, array(%s)))))',$node->group_srls); else $group_check_code = "true"; // 변수 정리 diff --git a/modules/session/conf/info.xml b/modules/session/conf/info.xml new file mode 100644 index 000000000..8c8b56301 --- /dev/null +++ b/modules/session/conf/info.xml @@ -0,0 +1,11 @@ + + + Session관리자 + + zero + + 접속자의 session을 관리하는 모듈입니다. + 기본적인 세션 설정과 사용뿐 아니라 세션 정보를 이용하여 접속자등의 세션 기반의 정보를 제공하는 기능도 있습니다. + + + diff --git a/modules/session/conf/module.xml b/modules/session/conf/module.xml new file mode 100644 index 000000000..b0f68feb6 --- /dev/null +++ b/modules/session/conf/module.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/modules/session/lang/ko.lang.php b/modules/session/lang/ko.lang.php new file mode 100644 index 000000000..f125d39b1 --- /dev/null +++ b/modules/session/lang/ko.lang.php @@ -0,0 +1,13 @@ + + * @brief 한국어 언어팩 (기본적인 내용만 수록) + **/ + + $lang->session = '세션'; + $lang->about_session = "세션 관리를 하는 모듈입니다\n틈틈히 세션 정리를 하시면 사이트 운영시 보다 좋은 효과를 낼 수 있습니다."; + + $lang->cmd_clear_session = '세션 정리'; + $lang->session_cleared = '쓸모 없는 세션 정보가 정리되었습니다'; +?> diff --git a/modules/session/queries/deleteSession.xml b/modules/session/queries/deleteSession.xml new file mode 100644 index 000000000..bb6165f19 --- /dev/null +++ b/modules/session/queries/deleteSession.xml @@ -0,0 +1,8 @@ + + +
    {htmlspecialchars($member_info->user_id)}
    {$lang->user_name}{$lang->user_name} *

    {$lang->about_user_name}

    {$lang->about_nick_name}

    {$lang->email_address}{$lang->email_address} *

    {$lang->about_email_address}

    + + + + + diff --git a/modules/session/queries/gcSession.xml b/modules/session/queries/gcSession.xml new file mode 100644 index 000000000..5acdb4674 --- /dev/null +++ b/modules/session/queries/gcSession.xml @@ -0,0 +1,8 @@ + + +
    + + + + + diff --git a/modules/session/queries/getLoggedMembers.xml b/modules/session/queries/getLoggedMembers.xml new file mode 100644 index 000000000..a7c1f338f --- /dev/null +++ b/modules/session/queries/getLoggedMembers.xml @@ -0,0 +1,19 @@ + + +
    + + + + + + + + + + + + + + + + diff --git a/modules/session/queries/getLoogedMemberList.xml b/modules/session/queries/getLoogedMemberList.xml new file mode 100644 index 000000000..4a6705354 --- /dev/null +++ b/modules/session/queries/getLoogedMemberList.xml @@ -0,0 +1,14 @@ + + +
    + + + + + + + + + + + diff --git a/modules/session/queries/getSession.xml b/modules/session/queries/getSession.xml new file mode 100644 index 000000000..d7ae83a0c --- /dev/null +++ b/modules/session/queries/getSession.xml @@ -0,0 +1,11 @@ + + +
    + + + + + + + + diff --git a/modules/session/queries/insertSession.xml b/modules/session/queries/insertSession.xml new file mode 100644 index 000000000..c47ecae20 --- /dev/null +++ b/modules/session/queries/insertSession.xml @@ -0,0 +1,13 @@ + + +
    + + + + + + + + + + diff --git a/modules/session/queries/updateSession.xml b/modules/session/queries/updateSession.xml new file mode 100644 index 000000000..f0f718e88 --- /dev/null +++ b/modules/session/queries/updateSession.xml @@ -0,0 +1,15 @@ + + +
    + + + + + + + + + + + + diff --git a/modules/session/schemas/session.xml b/modules/session/schemas/session.xml new file mode 100644 index 000000000..6550fa48e --- /dev/null +++ b/modules/session/schemas/session.xml @@ -0,0 +1,8 @@ +
    + + + + + + +
    diff --git a/modules/session/session.admin.controller.php b/modules/session/session.admin.controller.php new file mode 100644 index 000000000..3e61a24f4 --- /dev/null +++ b/modules/session/session.admin.controller.php @@ -0,0 +1,26 @@ +gc(0); + + $this->add('result',Context::getLang('session_cleared')); + } + } +?> diff --git a/modules/session/session.admin.view.php b/modules/session/session.admin.view.php new file mode 100644 index 000000000..56e1b6f07 --- /dev/null +++ b/modules/session/session.admin.view.php @@ -0,0 +1,26 @@ +setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('index'); + } + + } +?> diff --git a/modules/session/session.class.php b/modules/session/session.class.php new file mode 100644 index 000000000..594c65551 --- /dev/null +++ b/modules/session/session.class.php @@ -0,0 +1,87 @@ +session_started= true; + } + + /** + * @brief 설치시 추가 작업이 필요할시 구현 + **/ + function moduleInstall() { + // action forward에 등록 (관리자 모드에서 사용하기 위함) + $oModuleController = &getController('module'); + $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); + + return new Object(); + } + + /** + * @brief 설치가 이상이 없는지 체크하는 method + **/ + function checkUpdate() { + $oDB = &DB::getInstance(); + $oModuleModel = &getModel('module'); + + if(!$oModuleModel->getActionForward('dispSessionAdminIndex')) return true; + + if(!$oDB->isTableExists('session')) return true; + + return false; + } + + /** + * @brief 업데이트 실행 + **/ + function moduleUpdate() { + $oDB = &DB::getInstance(); + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + + if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); + + if(!$oModuleModel->getActionForward('dispSessionAdminIndex')) + $oModuleController->insertActionForward('document', 'view', 'dispSessionAdminIndex'); + } + + /** + * @brief session string decode + **/ + function unSerializeSession($val) { + $vars = preg_split('/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff^|]*)\|/', $val,-1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); + for($i=0; $vars[$i]; $i++) $result[$vars[$i++]] = unserialize($vars[$i]); + return $result; + } + + /** + * @brief session string encode + **/ + function serializeSession($data) { + if(!count($data)) return; + + $str = ''; + foreach($data as $key => $val) $str .= $key.'|'.serialize($val); + return substr($str, 0, strlen($str)-1).'}'; + } + + /** + * @brief 캐시 파일 재생성 + **/ + function recompileCache() { + // 기존 파일 기반의 세션 삭제 + FileHandler::removeDir(_XE_PATH_."files/sessions"); + } + } +?> diff --git a/modules/session/session.controller.php b/modules/session/session.controller.php new file mode 100644 index 000000000..0108e0d7f --- /dev/null +++ b/modules/session/session.controller.php @@ -0,0 +1,65 @@ +session_started) return; + + $args->session_key = $session_key; + $output = executeQuery('session.getSession', $args); + $session_info = $output->data; + if($session_info->session_key == $session_key && $session_info->ipaddress != $_SERVER['REMOTE_ADDR']) { + executeQuery('session.deleteSession', $args); + return true; + } + + $args->expired = date("YmdHis", time()+$this->lifetime); + $args->val = $val; + + if(Context::get('is_logged')) { + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + } else { + $args->member_srl = 0; + } + + if($session_info->session_key) $output = executeQuery('session.updateSession', $args); + else $output = executeQuery('session.insertSession', $args); + + return true; + } + + function destroy($session_key) { + if(!$session_key || !$this->session_started) return; + + $args->session_key = $session_key; + executeQuery('session.deleteSession', $args); + return true; + } + + function gc($maxlifetime) { + if(!$this->session_started) return; + executeQuery('session.gcSession'); + return true; + } + } +?> diff --git a/modules/session/session.model.php b/modules/session/session.model.php new file mode 100644 index 000000000..ecc0d2d79 --- /dev/null +++ b/modules/session/session.model.php @@ -0,0 +1,63 @@ +lifetime; + } + + function read($session_key) { + if(!$session_key || !$this->session_started) return; + + $args->session_key = $session_key; + $output = executeQuery('session.getSession', $args); + + // 읽기 오류 발생시 테이블 생성 유무 확인 + if(!$output->toBool()) { + $oDB = &DB::getInstance(); + if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); + } + + return $output->data->val; + } + + /** + * @brief 현재 접속중인 사용자의 목록을 구함 + * period_time 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 + **/ + function getLoggedMembers($limit_count = 20, $page = 1, $period_time = 3) { + $args->last_update = date("YmdHis", time() - $period_time*60); + $args->page = $page; + + $output = executeQueryArray('session.getLoggedMembers', $args); + if(!$output->toBool() || !$output->data) return $output; + + $member_srls = array(); + foreach($output->data as $key => $val) { + $member_srls[$key] = $val->member_srl; + $member_keys[$val->member_srl] = $key; + } + + $member_args->member_srl = implode(',',$member_srls); + $member_output = executeQueryArray('member.getMembers', $member_args); + if($member_output->data) { + foreach($member_output->data as $key => $val) { + $output->data[$member_keys[$val->member_srl]] = $val; + } + } + + return $output; + } + } +?> diff --git a/modules/session/tpl/index.html b/modules/session/tpl/index.html new file mode 100644 index 000000000..017505390 --- /dev/null +++ b/modules/session/tpl/index.html @@ -0,0 +1,8 @@ + + +

    {$lang->session} {$lang->cmd_management}

    +
    {nl2br($lang->about_session)}
    + +
    + +
    diff --git a/modules/session/tpl/js/session.js b/modules/session/tpl/js/session.js new file mode 100644 index 000000000..53c740e6a --- /dev/null +++ b/modules/session/tpl/js/session.js @@ -0,0 +1,9 @@ +function doClearSession() { + var response_tags = new Array('error','message','result'); + var params = new Array(); + exec_xml('session','procSessionAdminClear', params, completeClearSession, response_tags); +} + +function completeClearSession(ret_obj, response_tags) { + alert(ret_obj['result']); +} diff --git a/widgets/logged_members/conf/info.xml b/widgets/logged_members/conf/info.xml new file mode 100644 index 000000000..a88c176c8 --- /dev/null +++ b/widgets/logged_members/conf/info.xml @@ -0,0 +1,17 @@ + + + 로그인 사용자 출력 위젯 + + zero + + 로그인 사용자를 출력하는 위젯입니다. + + + + + 목록수 + text + 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) + + + diff --git a/widgets/logged_members/logged_members.class.php b/widgets/logged_members/logged_members.class.php new file mode 100644 index 000000000..0551c6971 --- /dev/null +++ b/widgets/logged_members/logged_members.class.php @@ -0,0 +1,42 @@ +list_count; + if(!$list_count) $list_count = 5; + + // session model 객체 생성 + $oSessionModel = &getModel('session'); + $output = $oSessionModel->getLoggedMembers($list_count); + $widget_info->member_list = $output->data; + Context::set('widget_info', $widget_info); + + // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정) + $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); + Context::set('colorset', $args->colorset); + + // 템플릿 파일을 지정 + $tpl_file = 'list'; + + // 템플릿 컴파일 + $oTemplate = &TemplateHandler::getInstance(); + $output = $oTemplate->compile($tpl_path, $tpl_file); + return $output; + } + } +?> diff --git a/widgets/logged_members/skins/default/css/normal.css b/widgets/logged_members/skins/default/css/normal.css new file mode 100644 index 000000000..5e5f3d3c0 --- /dev/null +++ b/widgets/logged_members/skins/default/css/normal.css @@ -0,0 +1,4 @@ +.mg { padding-bottom:15px; overflow:hidden; position:relative;} +.mg h2 { font-size:1em; display:block; height:21px; padding:9px 0 0 9px; margin-bottom:4px; color:#000000; background:url(../images/normal/lineNotice.gif) no-repeat left bottom;} +.mg ul { margin:0; padding:0; overflow:hidden; width:100%;} +.mg ul li { white-space:nowrap; padding:3px 0 3px 10px; overflow:hidden; border-bottom:1px dashed #EEEEEE; color:#54564b;} diff --git a/widgets/logged_members/skins/default/images/normal/lineNotice.gif b/widgets/logged_members/skins/default/images/normal/lineNotice.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbf2c8220a7eb9d2b007167e9e0efe70cec5b33c GIT binary patch literal 139 zcmV;60CfLHNk%w1VF(8T0DuAj{x%eRe0(AP6+?1mVRU6=Aa`kWXdqN*WgtgMO;7+V z000002nPZH00L2jkEzS;52Ku++KaQ^y!#J^;z*X}iKgnxw(bkZ@=VwEjpzE#_x=wI t3Wvm^@rX<+mrU2>35`mpl&1BH&1$#YuJ;QLi^t@$`HW7h*KAJ#06We2KUn|( literal 0 HcmV?d00001 diff --git a/widgets/logged_members/skins/default/list.html b/widgets/logged_members/skins/default/list.html new file mode 100644 index 000000000..b071d42aa --- /dev/null +++ b/widgets/logged_members/skins/default/list.html @@ -0,0 +1,16 @@ + + + + + + +
    + +
      + +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    • + +
    +
    diff --git a/widgets/logged_members/skins/default/skin.xml b/widgets/logged_members/skins/default/skin.xml new file mode 100644 index 000000000..ac3fc8464 --- /dev/null +++ b/widgets/logged_members/skins/default/skin.xml @@ -0,0 +1,25 @@ + + + 그룹회원 출력 위젯 기본 스킨 + グループ会員表示ウィジェットのデフォルトスキン + Basic Skin of Group Member Display Widget + 会员列表默认皮肤 + + 제로 + Zero + zero + Zero + 그룹회원 출력 위젯의 기본 스킨 + グループ会員表示ウィジェットのデフォルトスキン + Basic skin of group member display widget + 显示特定用户组会员列表的默认皮肤。 + + + + 기본 컬러 + デフォルトカラー + Default Color + 默认颜色 + + + From befe944a1e07d990404b8f9e3566711c0311254c Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 07:00:35 +0000 Subject: [PATCH 72/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4291 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/session.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/session/session.class.php b/modules/session/session.class.php index 594c65551..ffb458ba3 100644 --- a/modules/session/session.class.php +++ b/modules/session/session.class.php @@ -53,7 +53,7 @@ if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); if(!$oModuleModel->getActionForward('dispSessionAdminIndex')) - $oModuleController->insertActionForward('document', 'view', 'dispSessionAdminIndex'); + $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); } /** From d5126c29255214ca52b95e3f17fe71326e162995 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 08:48:10 +0000 Subject: [PATCH 73/87] =?UTF-8?q?=EC=84=B8=EC=85=98=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=EC=97=90=20=ED=95=B4=EB=8B=B9=20=EC=84=B8=EC=85=98=EC=9D=B4=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=ED=95=98=EB=8A=94=20mid=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EA=B8=B0=EC=9E=85=ED=95=98=EB=8F=84=EB=A1=9D=20=ED=95=98?= =?UTF-8?q?=EC=98=80=EA=B3=A0=20=ED=98=84=EC=9E=AC=20=EC=A0=91=EC=86=8D?= =?UTF-8?q?=EC=9E=90=20=EC=B6=9C=EB=A0=A5=20=EC=9C=84=EC=A0=AF=EC=97=90?= =?UTF-8?q?=EC=84=9C=20mid=EA=B0=92=EC=9D=84=20=EB=B0=98=EC=98=81=ED=95=A0?= =?UTF-8?q?=20=EC=88=98=20=EC=9E=88=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@4292 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/queries/getLoggedMembers.xml | 1 + .../session/queries/getLoogedMemberList.xml | 14 ------------ modules/session/queries/insertSession.xml | 1 + modules/session/queries/updateSession.xml | 1 + modules/session/schemas/session.xml | 1 + modules/session/session.class.php | 15 +++++++++++++ modules/session/session.controller.php | 5 +++++ modules/session/session.model.php | 22 +++++++++++++++---- widgets/logged_members/conf/info.xml | 13 +++++++++++ .../logged_members/logged_members.class.php | 10 +++++++-- 10 files changed, 63 insertions(+), 20 deletions(-) delete mode 100644 modules/session/queries/getLoogedMemberList.xml diff --git a/modules/session/queries/getLoggedMembers.xml b/modules/session/queries/getLoggedMembers.xml index a7c1f338f..b0a0f84a8 100644 --- a/modules/session/queries/getLoggedMembers.xml +++ b/modules/session/queries/getLoggedMembers.xml @@ -7,6 +7,7 @@ + diff --git a/modules/session/queries/getLoogedMemberList.xml b/modules/session/queries/getLoogedMemberList.xml deleted file mode 100644 index 4a6705354..000000000 --- a/modules/session/queries/getLoogedMemberList.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/modules/session/queries/insertSession.xml b/modules/session/queries/insertSession.xml index c47ecae20..c5bfae94d 100644 --- a/modules/session/queries/insertSession.xml +++ b/modules/session/queries/insertSession.xml @@ -9,5 +9,6 @@ + diff --git a/modules/session/queries/updateSession.xml b/modules/session/queries/updateSession.xml index f0f718e88..a04ead9f7 100644 --- a/modules/session/queries/updateSession.xml +++ b/modules/session/queries/updateSession.xml @@ -8,6 +8,7 @@ + diff --git a/modules/session/schemas/session.xml b/modules/session/schemas/session.xml index 6550fa48e..43f18af9d 100644 --- a/modules/session/schemas/session.xml +++ b/modules/session/schemas/session.xml @@ -5,4 +5,5 @@ +
    diff --git a/modules/session/session.class.php b/modules/session/session.class.php index ffb458ba3..1e34f363c 100644 --- a/modules/session/session.class.php +++ b/modules/session/session.class.php @@ -25,6 +25,9 @@ $oModuleController = &getController('module'); $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); + $oDB = &DB::getInstance(); + $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); + return new Object(); } @@ -39,6 +42,10 @@ if(!$oDB->isTableExists('session')) return true; + if(!$oDB->isColumnExists("session","cur_mid")) return true; + + if(!$oDB->isIndexExists("session","idx_session_update_mid")) return true; + return false; } @@ -54,6 +61,14 @@ if(!$oModuleModel->getActionForward('dispSessionAdminIndex')) $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); + + if(!$oDB->isColumnExists("session","cur_mid")) { + $oDB->addColumn('session',"cur_mid","varchar",128); + } + + if(!$oDB->isIndexExists("session","idx_session_update_mid")) + $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); + } /** diff --git a/modules/session/session.controller.php b/modules/session/session.controller.php index 0108e0d7f..927f0a80f 100644 --- a/modules/session/session.controller.php +++ b/modules/session/session.controller.php @@ -34,6 +34,11 @@ $args->expired = date("YmdHis", time()+$this->lifetime); $args->val = $val; + $args->cur_mid = Context::get('mid'); + if(!$args->cur_mid) { + $module_info = Context::get('current_module_info'); + $args->cur_mid = $module_info->mid; + } if(Context::get('is_logged')) { $logged_info = Context::get('logged_info'); diff --git a/modules/session/session.model.php b/modules/session/session.model.php index ecc0d2d79..ca1a71a3d 100644 --- a/modules/session/session.model.php +++ b/modules/session/session.model.php @@ -27,6 +27,14 @@ if(!$output->toBool()) { $oDB = &DB::getInstance(); if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); + if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); + $output = executeQuery('session.getSession', $args); + } + + // 세션 정보에서 cur_mid값이 없을 경우 테이블 생성 체크 + if(!isset($output->data->cur_mid)) { + $oDB = &DB::getInstance(); + if(!$oDB->isColumnExists("session","cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); } return $output->data->val; @@ -34,11 +42,17 @@ /** * @brief 현재 접속중인 사용자의 목록을 구함 - * period_time 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 + * 여러개의 인자값을 필요로 해서 object를 인자로 받음 + * limit_count : 대상 수 + * page : 페이지 번호 + * period_time : 인자의 값을 n으로 하여 최근 n분 이내에 세션을 갱신한 대상을 추출함 + * mid : 특정 mid에 속한 사용자 **/ - function getLoggedMembers($limit_count = 20, $page = 1, $period_time = 3) { - $args->last_update = date("YmdHis", time() - $period_time*60); - $args->page = $page; + function getLoggedMembers($args) { + if(!$args->limit_count) $args->limit_count = 20; + if(!$args->page) $args->page = 1; + if(!$args->period_time) $args->period_time = 3; + $args->last_update = date("YmdHis", time() - $args->period_time*60); $output = executeQueryArray('session.getLoggedMembers', $args); if(!$output->toBool() || !$output->data) return $output; diff --git a/widgets/logged_members/conf/info.xml b/widgets/logged_members/conf/info.xml index a88c176c8..092d7dd12 100644 --- a/widgets/logged_members/conf/info.xml +++ b/widgets/logged_members/conf/info.xml @@ -13,5 +13,18 @@ text 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) + + 대상 지정 + select + 대상을 전체로 하면 홈페이지 접속자 모두가 출력되고 Mid 구분으로 하게 되면 접속한 Mid에 같이 접속한 회원만 출력이 됩니다. + + 전체 + total + + + Mid 구분 + mid + + diff --git a/widgets/logged_members/logged_members.class.php b/widgets/logged_members/logged_members.class.php index 0551c6971..75196833f 100644 --- a/widgets/logged_members/logged_members.class.php +++ b/widgets/logged_members/logged_members.class.php @@ -16,13 +16,19 @@ **/ function proc($args) { - // 위젯 자체적으로 설정한 변수들을 체크 $list_count = (int)$args->list_count; if(!$list_count) $list_count = 5; + $use_mid = $args->use_mid; + if($use_mid == 'mid') $mid = Context::get('mid'); + else $mid = null; + + $obj->list_count = $list_count; + $obj->mid = $mid; + // session model 객체 생성 $oSessionModel = &getModel('session'); - $output = $oSessionModel->getLoggedMembers($list_count); + $output = $oSessionModel->getLoggedMembers($obj); $widget_info->member_list = $output->data; Context::set('widget_info', $widget_info); From b42d75e6500de0e545e90bf9e9c26e18a1e42558 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 08:57:17 +0000 Subject: [PATCH 74/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4293 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/session.model.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/session/session.model.php b/modules/session/session.model.php index ca1a71a3d..e19d39909 100644 --- a/modules/session/session.model.php +++ b/modules/session/session.model.php @@ -63,6 +63,8 @@ $member_keys[$val->member_srl] = $key; } + if(!count($member_srls)) return $output; + $member_args->member_srl = implode(',',$member_srls); $member_output = executeQueryArray('member.getMembers', $member_args); if($member_output->data) { From 5c741cde1b000d9d54a13289d3f12f201e826d99 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 09:14:05 +0000 Subject: [PATCH 75/87] =?UTF-8?q?=ED=98=84=EC=9E=AC=20=EC=A0=91=EC=86=8D?= =?UTF-8?q?=EC=9E=90=20=EC=B6=94=EC=B6=9C=EC=8B=9C=20=EC=BF=BC=EB=A6=AC?= =?UTF-8?q?=EA=B0=80=20=EC=9E=98=EB=AA=BB=20=EC=9E=91=EC=84=B1=EB=90=98?= =?UTF-8?q?=EB=8A=94=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@4294 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/queries/getLoggedMembers.xml | 3 ++- modules/session/session.class.php | 4 ++-- modules/session/session.model.php | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/session/queries/getLoggedMembers.xml b/modules/session/queries/getLoggedMembers.xml index b0a0f84a8..da3a72f24 100644 --- a/modules/session/queries/getLoggedMembers.xml +++ b/modules/session/queries/getLoggedMembers.xml @@ -6,7 +6,8 @@ - + + diff --git a/modules/session/session.class.php b/modules/session/session.class.php index 1e34f363c..5296bfd8a 100644 --- a/modules/session/session.class.php +++ b/modules/session/session.class.php @@ -26,7 +26,7 @@ $oModuleController->insertActionForward('session', 'view', 'dispSessionAdminIndex'); $oDB = &DB::getInstance(); - $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); + $oDB->addIndex("session","idx_session_update_mid", array("member_srl","last_update","cur_mid")); return new Object(); } @@ -67,7 +67,7 @@ } if(!$oDB->isIndexExists("session","idx_session_update_mid")) - $oDB->addIndex("session","idx_session_update_mid", array("last_update","cur_mid")); + $oDB->addIndex("session","idx_session_update_mid", array("member_srl","last_update","cur_mid")); } diff --git a/modules/session/session.model.php b/modules/session/session.model.php index e19d39909..59fd74532 100644 --- a/modules/session/session.model.php +++ b/modules/session/session.model.php @@ -49,7 +49,7 @@ * mid : 특정 mid에 속한 사용자 **/ function getLoggedMembers($args) { - if(!$args->limit_count) $args->limit_count = 20; + if(!$args->list_count) $args->list_count = 20; if(!$args->page) $args->page = 1; if(!$args->period_time) $args->period_time = 3; $args->last_update = date("YmdHis", time() - $args->period_time*60); From 3e16c60b14066d3c52880e29dc133969a4c65a7d Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 18 Jun 2008 09:20:32 +0000 Subject: [PATCH 76/87] =?UTF-8?q?=ED=98=84=EC=9E=AC=20=EC=A0=91=EC=86=8D?= =?UTF-8?q?=EC=9E=90=20=EC=B2=B4=ED=81=AC=20=EB=A3=A8=ED=8B=B4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=B3=B8=EC=9D=B8=EC=9D=B4=20=EB=B9=A0=EC=A7=80?= =?UTF-8?q?=EB=8A=94=20=EC=8B=9C=EC=A0=90=EC=83=81=EC=9D=98=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=EB=A5=BC=20=EC=BD=94=EB=93=9C=EB=A1=9C=20=EB=B3=B4?= =?UTF-8?q?=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4295 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/session.model.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/modules/session/session.model.php b/modules/session/session.model.php index 59fd74532..df303ae3d 100644 --- a/modules/session/session.model.php +++ b/modules/session/session.model.php @@ -55,12 +55,22 @@ $args->last_update = date("YmdHis", time() - $args->period_time*60); $output = executeQueryArray('session.getLoggedMembers', $args); - if(!$output->toBool() || !$output->data) return $output; + if(!$output->toBool()) return $output; $member_srls = array(); - foreach($output->data as $key => $val) { - $member_srls[$key] = $val->member_srl; - $member_keys[$val->member_srl] = $key; + if(count($output->data)) { + foreach($output->data as $key => $val) { + $member_srls[$key] = $val->member_srl; + $member_keys[$val->member_srl] = $key; + } + } + + if(Context::get('is_logged')) { + $logged_info = Context::get('logged_info'); + if(!in_array($logged_info->member_srl, $member_srls)) { + $member_srls[0] = $logged_info->member_srl; + $member_keys[$logged_info->member_srl] = 0; + } } if(!count($member_srls)) return $output; From fdd83f5691001bac7a9c36eb8a49b417f8995b69 Mon Sep 17 00:00:00 2001 From: wdlee91 Date: Wed, 18 Jun 2008 11:50:02 +0000 Subject: [PATCH 77/87] =?UTF-8?q?Windows=20=EC=84=9C=EB=B2=84=EC=97=90?= =?UTF-8?q?=EC=84=9C=EB=8F=84=20=EC=A0=95=EC=83=81=20=EC=9E=91=EB=8F=99?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4296 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 983c473fe..b0792ab07 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -58,7 +58,7 @@ /** * @brief zbXE가 설치된 장소의 base path를 구함 **/ - define('_XE_PATH_', str_replace('config/config.inc.php','',__FILE__)); + define('_XE_PATH_', str_replace('config/config.inc.php', '', str_replace('\\', '/', __FILE__))); /** * @brief 간단하게 사용하기 위한 함수 정의한 파일 require From 85f0dabdd54217b78e092564ee2345197e2c9c55 Mon Sep 17 00:00:00 2001 From: wdlee91 Date: Wed, 18 Jun 2008 11:54:32 +0000 Subject: [PATCH 78/87] =?UTF-8?q?=E2=80=9CSession=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=9E=90=E2=80=9D=20->=20=E2=80=9C=EC=84=B8=EC=85=98=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4298 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/conf/info.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/session/conf/info.xml b/modules/session/conf/info.xml index 8c8b56301..d684332cd 100644 --- a/modules/session/conf/info.xml +++ b/modules/session/conf/info.xml @@ -1,10 +1,10 @@ - Session관리자 + 세션 관리자 zero - 접속자의 session을 관리하는 모듈입니다. + 접속자의 세션을 관리하는 모듈입니다. 기본적인 세션 설정과 사용뿐 아니라 세션 정보를 이용하여 접속자등의 세션 기반의 정보를 제공하는 기능도 있습니다. From 8b49f6fc57e53839ba4182c26377373f061316fd Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 04:01:16 +0000 Subject: [PATCH 79/87] =?UTF-8?q?=EC=9D=91=EB=8B=B5=ED=98=95=20=EB=8C=93?= =?UTF-8?q?=EA=B8=80=EC=9D=98=20=EC=9E=98=EB=AA=BB=EB=90=9C=20=EB=B0=98?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=A1=9C=EC=A7=81=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@4299 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/comment.controller.php | 25 +++++++++++++++---- .../comment/queries/getCommentListItem.xml | 7 ++++-- .../comment/queries/getCommentPageList.xml | 7 +++--- .../queries/getCommentParentNextSibling.xml | 13 ++++++++++ .../queries/updateCommentListArrange.xml | 2 +- 5 files changed, 42 insertions(+), 12 deletions(-) create mode 100644 modules/comment/queries/getCommentParentNextSibling.xml diff --git a/modules/comment/comment.controller.php b/modules/comment/comment.controller.php index 26b934827..b8fc647fe 100644 --- a/modules/comment/comment.controller.php +++ b/modules/comment/comment.controller.php @@ -159,11 +159,26 @@ $list_args->head = $parent->head; $list_args->depth = $parent->depth+1; - if($list_args->depth<2) $list_args->arrange = $obj->comment_srl; - else { - $list_args->arrange = $parent->arrange; - $output = executeQuery('comment.updateCommentListArrange', $list_args); - if(!$output->toBool()) return $output; + + // depth가 2단계 미만이면 별도의 update문 없이 insert만으로 쓰레드 정리 + if($list_args->depth<2) { + $list_args->arrange = $obj->comment_srl; + + // depth가 2단계 이상이면 반업데이트 실행 + } else { + // 부모 댓글과 같은 head를 가지고 depth가 같거나 작은 댓글중 제일 위 댓글을 구함 + $p_args->head = $parent->head; + $p_args->arrange = $parent->arrange; + $p_args->depth = $parent->depth; + $output = executeQuery('comment.getCommentParentNextSibling', $p_args); + + if($output->data->arrange) { + $list_args->arrange = $output->data->arrange; + $output = executeQuery('comment.updateCommentListArrange', $list_args); + } else { + $list_args->arrange = $obj->comment_srl; + } + } } diff --git a/modules/comment/queries/getCommentListItem.xml b/modules/comment/queries/getCommentListItem.xml index e964057c2..c46b514cc 100644 --- a/modules/comment/queries/getCommentListItem.xml +++ b/modules/comment/queries/getCommentListItem.xml @@ -1,11 +1,14 @@ +
    - + + - + + diff --git a/modules/comment/queries/getCommentPageList.xml b/modules/comment/queries/getCommentPageList.xml index de7020db8..496a4905e 100644 --- a/modules/comment/queries/getCommentPageList.xml +++ b/modules/comment/queries/getCommentPageList.xml @@ -5,16 +5,15 @@ - + + + - - - diff --git a/modules/comment/queries/getCommentParentNextSibling.xml b/modules/comment/queries/getCommentParentNextSibling.xml new file mode 100644 index 000000000..5347bd7e5 --- /dev/null +++ b/modules/comment/queries/getCommentParentNextSibling.xml @@ -0,0 +1,13 @@ + + +
    + + + + + + + + + + diff --git a/modules/comment/queries/updateCommentListArrange.xml b/modules/comment/queries/updateCommentListArrange.xml index 53d40f71a..0e5f0bdb6 100644 --- a/modules/comment/queries/updateCommentListArrange.xml +++ b/modules/comment/queries/updateCommentListArrange.xml @@ -8,6 +8,6 @@ - + From 629e077e8e6636f9b1be36ee920a47261ac387a4 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 04:10:38 +0000 Subject: [PATCH 80/87] =?UTF-8?q?=EB=A9=94=EB=89=B4/=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=20php/xml=20=EC=BA=90=EC=8B=9C=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=97=90=EC=84=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EC=9D=98=20group=5Fsrl=EC=9D=84=20=EB=86=93?= =?UTF-8?q?=EC=B9=98=EB=8A=94=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@4300 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.controller.php | 5 +++-- modules/menu/menu.admin.controller.php | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index eac846243..089f3757c 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -798,8 +798,9 @@ '$lang_type = Context::getLangType(); '. '$is_logged = Context::get(\'is_logged\'); '. '$logged_info = Context::get(\'logged_info\'); '. - 'if($is_logged && $logged_info->is_admin=="Y") { '. - '$is_admin = true; '. + 'if($is_logged) {'. + 'if($logged_info->is_admin=="Y") $is_admin = true; '. + 'else $is_admin = false; '. '$group_srls = array_keys($logged_info->group_list); '. '} else { '. '$is_admin = false; '. diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 2d80c4cd7..0d215d10e 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -354,8 +354,9 @@ '$lang_type = Context::getLangType(); '. '$is_logged = Context::get(\'is_logged\'); '. '$logged_info = Context::get(\'logged_info\'); '. - 'if($is_logged && $logged_info->is_admin=="Y") { '. - '$is_admin = true; '. + 'if($is_logged) {'. + 'if($logged_info->is_admin=="Y") $is_admin = true; '. + 'else $is_admin = false; '. '$group_srls = array_keys($logged_info->group_list); '. '} else { '. '$is_admin = false; '. From 7f153ad654e10d89fa919749b3e5c9a29c72277f Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 04:23:03 +0000 Subject: [PATCH 81/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4301 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/queries/getNoticeList.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/document/queries/getNoticeList.xml b/modules/document/queries/getNoticeList.xml index 500d59ca9..7fb8b1b5f 100644 --- a/modules/document/queries/getNoticeList.xml +++ b/modules/document/queries/getNoticeList.xml @@ -10,7 +10,4 @@ - - - From 87fc21be8c05456b302007a4420c0794531fd2a0 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 05:40:20 +0000 Subject: [PATCH 82/87] =?UTF-8?q?XSS=20=EC=8B=9C=EB=8F=84=EB=A5=BC=20?= =?UTF-8?q?=EC=B0=A8=EB=8B=A8=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EA=B8=80=20=EB=82=B4=EC=9A=A9=EC=9D=98=20event=20handling=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=EB=A5=BC=20=EB=AC=B4=ED=9A=A8=ED=99=94=20?= =?UTF-8?q?=EC=8B=9C=ED=82=A4=EB=8F=84=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4302 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/func.inc.php b/config/func.inc.php index 571cceb74..3044ac8d4 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -416,9 +416,18 @@ // style 태그 제거 $content = preg_replace("!!is", '', $content); + // XSS 사용을 위한 이벤트 제거 + $content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeJSEvent, $content); + return $content; } + function removeJSEvent($matches) { + $tag = strtolower($matches[1]); + if($tag == "a" && preg_match('/href=("|\'?)javascript:/i',$matches[2])) $matches[0] = preg_replace('/href=("|\'?)javascript:/i','href=$1_javascript:', $matches[0]); + return preg_replace('/on([a-z]+)=/i','_on$1=',$matches[0]); + } + // hexa값을 RGB로 변환 if(!function_exists('hexrgb')) { function hexrgb($hexstr) { From 3c7fa167db3cca25126fef6a5cbf30f084427204 Mon Sep 17 00:00:00 2001 From: guny Date: Thu, 19 Jun 2008 06:44:47 +0000 Subject: [PATCH 83/87] =?UTF-8?q?=EC=A4=91=EA=B5=AD=EC=96=B4=20-=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=B6=84=20=EB=B2=88=EC=97=AD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4303 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/member_communication/conf/info.xml | 5 ++--- addons/member_extra_info/conf/info.xml | 4 ++-- common/lang/zh-CN.lang.php | 2 +- modules/board/lang/zh-CN.lang.php | 2 +- modules/comment/lang/zh-CN.lang.php | 2 +- modules/communication/conf/info.xml | 3 +++ modules/communication/lang/zh-CN.lang.php | 4 ++-- modules/communication/skins/default/skin.xml | 2 +- modules/member/lang/zh-CN.lang.php | 4 ++-- modules/session/conf/info.xml | 6 ++++++ modules/session/lang/zh-CN.lang.php | 13 +++++++++++++ widgets/logged_members/conf/info.xml | 11 +++++++++++ 12 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 modules/session/lang/zh-CN.lang.php diff --git a/addons/member_communication/conf/info.xml b/addons/member_communication/conf/info.xml index 803e8782b..a6b50a3c3 100644 --- a/addons/member_communication/conf/info.xml +++ b/addons/member_communication/conf/info.xml @@ -2,7 +2,7 @@ 커뮤니케이션 커뮤니케이션 - 커뮤니케이션 + 会员交流 Communication 커뮤니케이션 커뮤니케이션 @@ -24,8 +24,7 @@ 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. - 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. - 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + 此插件可激活短信箱及添加好友功能。 This addon enables communication module in order to use message or friend function. diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index f1a3cd272..dc19e20db 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -2,7 +2,7 @@ 회원 확장 정보 출력 회원 확장 정보 출력 - 회원 확장 정보 출력 + 用户扩展信息 Extra Member Info 회원 확장 정보 출력 회원 확장 정보 출력 @@ -22,7 +22,7 @@ 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. + 此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。 This addon displays a member's image name, image mark. diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index 7e1e81a5d..ca9042767 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -62,7 +62,7 @@ $lang->cmd_publish = "发表"; $lang->cmd_layout_setup = '布局设置'; $lang->cmd_layout_edit = '编辑布局'; - $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; + $lang->cmd_search_by_ipaddress = '以IP地址搜索'; $lang->enable = '可用'; $lang->disable = '禁用'; diff --git a/modules/board/lang/zh-CN.lang.php b/modules/board/lang/zh-CN.lang.php index eabfa0bf8..6f62e301e 100644 --- a/modules/board/lang/zh-CN.lang.php +++ b/modules/board/lang/zh-CN.lang.php @@ -38,7 +38,7 @@ $lang->about_layout_setup = '可直接编辑博客布局代码。可以把控件代码插入到您喜欢的位置。'; $lang->about_board_category = '可以添加/删除分类项
    分类有异常情况时,可以尝试重新生成缓冲文件。'; $lang->about_except_notice = "设置公告目录项不再重复显示到普通目录当中。"; - $lang->about_board = "可生成/管理版面的模块。\n生成版面后点击模块名即可对其详细设置。"; + $lang->about_board = "可生成及管理版面的模块。\n生成版面后,点击模块名即可对其详细设置。"; $lang->about_consultation = "咨询功能是指除有管理权限的会员以外,其他会员只能浏览自己发表的主题。\n使用咨询功能时系统将自动禁止非会员的发表主题权限。"; $lang->about_admin_mail = '有新的主题或评论时,将自动发电子邮件来通知管理员。
    多数电子邮件由逗号(,)来分隔。'; ?> diff --git a/modules/comment/lang/zh-CN.lang.php b/modules/comment/lang/zh-CN.lang.php index 4d7a6f415..122bb6016 100644 --- a/modules/comment/lang/zh-CN.lang.php +++ b/modules/comment/lang/zh-CN.lang.php @@ -22,7 +22,7 @@ 'user_id' => 'I D', 'user_name' => '姓名', 'nick_name' => '昵称', - 'member_srl' => 'Member Serial', + 'member_srl' => '会员编号', 'email_address' => '电子信箱', 'homepage' => '主页', 'regdate' => '日期', diff --git a/modules/communication/conf/info.xml b/modules/communication/conf/info.xml index d9491304f..868621ed2 100644 --- a/modules/communication/conf/info.xml +++ b/modules/communication/conf/info.xml @@ -1,11 +1,14 @@ 커뮤니케이션 + 会员交流 Communication 제로 + Zero Zero 회원들간의 쪽지, 친구기능을 담당하는 모듈입니다. + 管理在线会员间短信息及好友功能的模块。 This module is for managing message, friend functions. diff --git a/modules/communication/lang/zh-CN.lang.php b/modules/communication/lang/zh-CN.lang.php index 4cd6b4b72..4336e4fc1 100644 --- a/modules/communication/lang/zh-CN.lang.php +++ b/modules/communication/lang/zh-CN.lang.php @@ -5,8 +5,8 @@ * @brief 简体中文语言包 (只收录基本内容) **/ - $lang->communication = '커뮤니케이션'; - $lang->about_communication = '회원간의 쪽지나 친구 관리등 커뮤니케이션 기능을 수행하는 모듈입니다'; + $lang->communication = '会员交流'; + $lang->about_communication = '管理在线会员间短信息及好友功能的模块。'; $lang->allow_message = '允许接收短消息'; $lang->allow_message_type = array( diff --git a/modules/communication/skins/default/skin.xml b/modules/communication/skins/default/skin.xml index a3ad1b760..a8412ddf1 100644 --- a/modules/communication/skins/default/skin.xml +++ b/modules/communication/skins/default/skin.xml @@ -1,7 +1,7 @@ 기본 스킨 - 기본 스킨 + 默认皮肤 기본 스킨 Default Skin Por defecto piel diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index dd832fac1..0c472a9bd 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -87,8 +87,8 @@ $lang->cmd_manage_id = '禁止用户名管理'; $lang->cmd_manage_form = '注册表单管理'; $lang->cmd_view_own_document = '查看发表主题'; - $lang->cmd_trace_document = 'Trace Written Articles'; - $lang->cmd_trace_comment = 'Trace Written Comments'; + $lang->cmd_trace_document = '主题追踪'; + $lang->cmd_trace_comment = '评论追踪'; $lang->cmd_view_scrapped_document = '查看收藏'; $lang->cmd_view_saved_document = '查看临时保存箱'; $lang->cmd_send_email = '发送邮件'; diff --git a/modules/session/conf/info.xml b/modules/session/conf/info.xml index d684332cd..40dd67cbe 100644 --- a/modules/session/conf/info.xml +++ b/modules/session/conf/info.xml @@ -1,11 +1,17 @@ 세션 관리자 + 会话管理 zero + zero 접속자의 세션을 관리하는 모듈입니다. 기본적인 세션 설정과 사용뿐 아니라 세션 정보를 이용하여 접속자등의 세션 기반의 정보를 제공하는 기능도 있습니다. + + 管理在线会员会话(session)功能的模块。 + 提供最基本的会话设置及使用,并且还可以获得基于会话功能的在线会员信息。 + diff --git a/modules/session/lang/zh-CN.lang.php b/modules/session/lang/zh-CN.lang.php new file mode 100644 index 000000000..20b0045a1 --- /dev/null +++ b/modules/session/lang/zh-CN.lang.php @@ -0,0 +1,13 @@ + + * @brief 中文语言包 + **/ + + $lang->session = '会话'; + $lang->about_session = "管理会话的模块。\n有时间清理无用会话,可提高网站效率。"; + + $lang->cmd_clear_session = '清理会话'; + $lang->session_cleared = '无用会话已清理完毕。'; +?> diff --git a/widgets/logged_members/conf/info.xml b/widgets/logged_members/conf/info.xml index 092d7dd12..472731158 100644 --- a/widgets/logged_members/conf/info.xml +++ b/widgets/logged_members/conf/info.xml @@ -1,28 +1,39 @@ 로그인 사용자 출력 위젯 + 在线会员列表 zero + zero 로그인 사용자를 출력하는 위젯입니다. + + 显示在线会员列表的控件。 + 목록수 + 目录数 text 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) + 可设置要显示的目录数。 (默认为5个) 대상 지정 + 模块对象 select 대상을 전체로 하면 홈페이지 접속자 모두가 출력되고 Mid 구분으로 하게 되면 접속한 Mid에 같이 접속한 회원만 출력이 됩니다. + 选择“全部”将显示全部在线会员,“区分Mid”为显示各模块中的在线会员。 전체 + 全部 total Mid 구분 + 区分Mid mid From 24bab32a3b447d6051509bc5090fb54849d2f324 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 06:55:57 +0000 Subject: [PATCH 84/87] =?UTF-8?q?xe=5Fboard=20=EC=8A=A4=ED=82=A8=EC=9D=98?= =?UTF-8?q?=20=EA=B8=80/=EB=8C=93=EA=B8=80=EC=97=90=20ipaddress=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=EB=A5=BC=20=EA=B4=80=EB=A6=AC=EC=9E=90=EC=9D=98=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=98=A8=EC=A0=84=ED=9E=88,=20=EB=B9=84?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=EC=9D=98=20=EA=B2=BD=EC=9A=B0=20A?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=EB=A5=BC=20=EC=A7=80=EC=9B=8C?= =?UTF-8?q?=EC=84=9C=20=EB=85=B8=EC=B6=9C=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4304 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/comment.html | 5 +---- modules/board/skins/xe_board/css/common.css | 9 +++++---- modules/board/skins/xe_board/view_document.html | 10 +++------- modules/comment/comment.item.php | 5 +++++ modules/document/document.item.php | 6 ++++++ 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/modules/board/skins/xe_board/comment.html b/modules/board/skins/xe_board/comment.html index bbce49468..ec2cef9ed 100644 --- a/modules/board/skins/xe_board/comment.html +++ b/modules/board/skins/xe_board/comment.html @@ -22,10 +22,7 @@
    {$comment->getRegdate('Y.m.d')} {$comment->getRegdate('H:i:s')} - - - ({$comment->get('ipaddress')}) - + ({$comment->getIpaddress()})
    diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 795147bf3..6eca0b181 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -58,7 +58,11 @@ Jeong, Chan Myeong 070601~070630 .boardRead .titleAndUser .userInfo .author { color:#3074a5; } .boardRead .titleAndUser .userInfo .author a { font-size:.9em; color:#3074a5; text-decoration:none; } -.boardRead .dateAndCount { clear:both; white-space:nowrap; color:#444444; margin:5px 0 0 0; float:left; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; } +.boardRead .dateAndCount { clear:both; white-space:nowrap; color:#444444; margin:5px 0 0 0; font-size:.9em; font-family:tahoma; line-height:17px; padding-bottom:10px; } + +.boardRead .dateAndCount .uri { float:left; } +.boardRead .dateAndCount .uri a { text-decoration:none; margin-left:4px; color:#BBBBBB; } + .boardRead .dateAndCount .date { float:right; background:url("../images/common/calendar.gif") no-repeat left top; padding-left:18px; margin-left:10px; } .boardRead .dateAndCount .readedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/read.gif") no-repeat left top; padding-left:18px; color:#4A3FD7;} .boardRead .dateAndCount .votedCount { float:right; color:#AAAAAA; margin-left:10px; background:url("../images/common/vote.gif") no-repeat left top; padding-left:18px; color:#D76A3F;} @@ -70,8 +74,6 @@ Jeong, Chan Myeong 070601~070630 .boardRead .dateAndCount .category { float:left; margin-right:10px; } .boardRead .dateAndCount .category a { color:#555555; text-decoration:none; background:url("../images/common/category.gif") no-repeat left -1px; padding-left:18px; font-weight:bold;} .boardRead .dateAndCount .category a:hover { text-decoration:underline; } -.boardRead .dateAndCount .uri { float:left; } -.boardRead .dateAndCount .uri a { text-decoration:none; margin-left:4px; color:#BBBBBB; } /* extraVars list */ .boardRead .extraVarsList { width:100%; border:1px solid #e0e1db; border-bottom:none; margin:0 0 30px 0; table-layout:fixed;} @@ -80,7 +82,6 @@ Jeong, Chan Myeong 070601~070630 .boardRead .extraVarsList td a { color:#555555; } .boardRead .readBody { color:#555555; margin-top:20px; } -.boardRead .readBody .contentBody .ipaddress { text-align:right; margin-top:10px; color:#bbbbbb; font-family:tahoma;} .boardRead .tag { background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 3px 2px; padding-left:25px; margin:10px 0 0 0; } diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 479e83dee..925f45fb5 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -29,8 +29,10 @@
    + +
    - {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} + {$oDocument->getRegdate('Y.m.d')} {$oDocument->getRegdate('H:i:s')} ({$oDocument->getIpaddress()})
    {$oDocument->get('readed_count')}
    @@ -54,8 +56,6 @@ - -
    @@ -102,10 +102,6 @@ {$oDocument->getContent()} - -
    ipaddress : {$oDocument->get('ipaddress')}
    - -
    diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index afd245246..bd7389ff8 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -125,6 +125,11 @@ $oCommunicationController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false); } + function getIpaddress() { + if($this->isGranted()) return $this->get('ipaddress'); + return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$1.$2.$3', $this->get('ipaddress')); + } + function isExistsHomepage() { if(trim($this->get('homepage'))) return true; return false; diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 6f53276d9..d572e2dcf 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -171,6 +171,12 @@ $oCommunicationController->sendMessage($sender_member_srl, $receiver_srl, $title, $content, false); } + function getIpaddress() { + if($this->isGranted()) return $this->get('ipaddress'); + return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$1.$2.$3', $this->get('ipaddress')); + + } + function isExistsHomepage() { if(trim($this->get('homepage'))) return true; return false; From b06417f38249a365f3d96bd529754ed4b4e37456 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 07:09:44 +0000 Subject: [PATCH 85/87] =?UTF-8?q?=ED=98=84=EC=9E=AC=20=EC=A0=91=EC=86=8D?= =?UTF-8?q?=EC=9E=90=20=EA=B8=B0=EB=B3=B8=20=EC=9C=84=EC=A0=AF=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@4305 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../logged_members/logged_members.class.php | 1 + .../skins/default/css/normal.css | 7 +++---- .../logged_members/skins/default/list.html | 20 ++++++++++++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/widgets/logged_members/logged_members.class.php b/widgets/logged_members/logged_members.class.php index 75196833f..1dd0382f8 100644 --- a/widgets/logged_members/logged_members.class.php +++ b/widgets/logged_members/logged_members.class.php @@ -30,6 +30,7 @@ $oSessionModel = &getModel('session'); $output = $oSessionModel->getLoggedMembers($obj); $widget_info->member_list = $output->data; + $widget_info->logged_member_count = $output->total_count; Context::set('widget_info', $widget_info); // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정) diff --git a/widgets/logged_members/skins/default/css/normal.css b/widgets/logged_members/skins/default/css/normal.css index 5e5f3d3c0..04b6f56b3 100644 --- a/widgets/logged_members/skins/default/css/normal.css +++ b/widgets/logged_members/skins/default/css/normal.css @@ -1,4 +1,3 @@ -.mg { padding-bottom:15px; overflow:hidden; position:relative;} -.mg h2 { font-size:1em; display:block; height:21px; padding:9px 0 0 9px; margin-bottom:4px; color:#000000; background:url(../images/normal/lineNotice.gif) no-repeat left bottom;} -.mg ul { margin:0; padding:0; overflow:hidden; width:100%;} -.mg ul li { white-space:nowrap; padding:3px 0 3px 10px; overflow:hidden; border-bottom:1px dashed #EEEEEE; color:#54564b;} +.logged_members { overflow:hidden; } +.logged_members ul { margin:0; padding:0; overflow:hidden; width:100%;} +.logged_members ul li { white-space:nowrap; padding:2px; overflow:hidden; color:#54564b;} diff --git a/widgets/logged_members/skins/default/list.html b/widgets/logged_members/skins/default/list.html index b071d42aa..7fbbf3216 100644 --- a/widgets/logged_members/skins/default/list.html +++ b/widgets/logged_members/skins/default/list.html @@ -4,13 +4,31 @@ -
    +
    • {htmlspecialchars($val->nick_name)}
    • +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    • +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    • +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    • +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    • +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    • +
    • +
      {htmlspecialchars($val->nick_name)}
      +
    From b467a257cc2ede687f4f757418035846cac047e5 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 07:10:06 +0000 Subject: [PATCH 86/87] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4306 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/logged_members/skins/default/list.html | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/widgets/logged_members/skins/default/list.html b/widgets/logged_members/skins/default/list.html index 7fbbf3216..f82e26acf 100644 --- a/widgets/logged_members/skins/default/list.html +++ b/widgets/logged_members/skins/default/list.html @@ -11,24 +11,6 @@
  • {htmlspecialchars($val->nick_name)}
  • -
  • -
    {htmlspecialchars($val->nick_name)}
    -
  • -
  • -
    {htmlspecialchars($val->nick_name)}
    -
  • -
  • -
    {htmlspecialchars($val->nick_name)}
    -
  • -
  • -
    {htmlspecialchars($val->nick_name)}
    -
  • -
  • -
    {htmlspecialchars($val->nick_name)}
    -
  • -
  • -
    {htmlspecialchars($val->nick_name)}
    -
  • From 49183381cbf1b613c8a0491d418c97f03a1bdeac Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 19 Jun 2008 07:14:41 +0000 Subject: [PATCH 87/87] =?UTF-8?q?zbXE=201.0.4=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=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@4307 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index b0792ab07..357bbdd34 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -14,7 +14,7 @@ * 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며 * config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함 **/ - define('__ZBXE_VERSION__', '1.0.3'); + define('__ZBXE_VERSION__', '1.0.4'); /** * @brief 디버깅 메세지 출력