diff --git a/modules/module/module.model.php b/modules/module/module.model.php index b7d2d3009..8a66931e6 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -73,6 +73,7 @@ * @brief 여러개의 module_srl에 해당하는 모듈의 정보를 구함 **/ function getModulesInfo($module_srls) { + if(is_array($module_srls)) $module_srls = implode(',',$module_srls); $args->module_srls = $module_srls; $output = executeQueryArray('module.getModulesInfo', $args); if(!$output->toBool()) return; diff --git a/widgets/forum/conf/info.xml b/widgets/forum/conf/info.xml new file mode 100644 index 000000000..c15cbf9bd --- /dev/null +++ b/widgets/forum/conf/info.xml @@ -0,0 +1,91 @@ + + + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + 포럼형 최근 게시물 + + 제로 + zero + zero + zero + zero + zero + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + 한개 또는 여러개의 게시판을 포럼형식으로 정리하여 노출하는 위젯입니다. + 대상 게시판에 설정되어 있는 제목과 설명을 이용하여 설명을 출력합니다. + + + + + 제목 + 栏目名 + タイトル + Title + Título + Заголовок + text + + + new 표시 시간 (hours) + new图标显示时间(hours) + Newの表示時間 (Hours) + Duration of indication for new item + Длительность индикации для новых объектов + text + 새로 등록된 게시물의 new 표시시간을 정할 수 있습니다. (시간 단위) + 可以设置最新更新主题的new图标显示时间。 + 新しく登録された書き込みに対して「New」の表示時間を指定します(時間単位)。 + You may set the duration of indication for fresh item. (unit is hour) + Вы можете установить длительность индикации для нового объекта. (единица - час) + + + 제목 글자수 + タイトルの文字数 + 标题字数 + Length of Subject + Número de letras del título + Длина темы + text + 제목 글자수를 지정할 수 있습니다. (0또는 비워주시면 자르지 않습니다) + タイトルの文字数が指定できます(「0」または空欄の場合は、文字数を制限しません)。 + 可以设置标题的字数。(0或留空为不限) + Length of Subject can be assigned. (0 or blank value will not restrict the length) + El largo del título puede ser asignado. (valor 0 o en blanco no restringe el largo) + Длина темы может быть присвоена. (0 или пустое значение не будут ограничивать длину) + + + 대상 모듈 + 模块对象 + モジュール + Target Module + Módulo Objetivo + Модуль назначения + mid_list + 선택하신 모듈에 등록된 글을 대상으로 합니다. + 将把被选模块当中的主题作为对象。 + チェックされたモジュールに登録されたコンテンツ(書き込み)を対象とします。 + The target articles to be sorted will be the ones submitted in the selected module. + El objetivo de los documentos agregados serán los del módulo selccionado. + Статьи назначения для сортировки будут теми, что были размещены в выбранном модуле. + + + diff --git a/widgets/forum/forum.class.php b/widgets/forum/forum.class.php new file mode 100644 index 000000000..04eb99218 --- /dev/null +++ b/widgets/forum/forum.class.php @@ -0,0 +1,95 @@ +title; + + // 최근 글 표시 시간 + $duration_new = $args->duration_new; + if(!$duration_new) $duration_new = 12; + + // 제목 길이 자르기 + $subject_cut_size = $args->subject_cut_size; + if(!$subject_cut_size) $subject_cut_size = 0; + + // 대상 모듈 + if($args->mid_list) $mid_list = explode(",",$args->mid_list); + else return; + + // module_srl 대신 mid가 넘어왔을 경우는 직접 module_srl을 구해줌 + $oModuleModel = &getModel('module'); + $module_srls = $oModuleModel->getModuleSrlByMid($mid_list); + + // 대상 모듈의 정보를 구함 + $module_list = $oModuleModel->getModulesInfo($module_srls); + + // 각 모듈별로 먼저 정리 시작 + foreach($module_list as $module) { + $modules[$module->module_srl]->title = $module->browser_title; + $modules[$module->module_srl]->mid = $module->mid; + $modules[$module->module_srl]->description = $module->description; + $modules[$module->module_srl]->document_count = 0; + $modules[$module->module_srl]->comment_count = 0; + + // 최근 수정된 댓글의 정보 + $last_args = null; + $last_args->module_srl = $module->module_srl; + $output = executeQuery('widgets.forum.getLatestComments', $last_args); + + if(is_array($output->data)) $modules[$module->module_srl]->last_comment = array_pop($output->data); + else $modules[$module->module_srl]->last_comment = null; + } + + // 각 모듈별 전체글을 구함 + $total_documents_args->module_srl = $module->module_srl; + $total_documents_args->module_srls = implode(',',$module_srls); + + $total_documents_output = executeQueryArray('widgets.forum.getTotalDocuments',$total_documents_args); + foreach($total_documents_output->data as $val) { + $modules[$val->module_srl]->document_count = $val->count; + } + + // 각 모듈별 댓글 수를 구함 + $total_comments_args->module_srl = $module->module_srl; + $total_comments_args->module_srls = implode(',',$module_srls); + + $total_comments_output = executeQueryArray('widgets.forum.getTotalComments',$total_comments_args); + foreach($total_comments_output->data as $val) { + $modules[$val->module_srl]->comment_count = $val->count; + } + + $widget_info->title = $title; + $widget_info->modules = $modules; + $widget_info->subject_cut_size = $subject_cut_size; + $widget_info->duration_new = $duration_new * 60*60; + + Context::set('widget_info', $widget_info); + + // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정) + $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); + Context::set('colorset', $args->colorset); + + // 템플릿 파일을 지정 + $tpl_file = 'list'; + + // 템플릿 컴파일 + $oTemplate = &TemplateHandler::getInstance(); + $output = $oTemplate->compile($tpl_path, $tpl_file); + return $output; + } + } +?> diff --git a/widgets/forum/queries/getLatestComments.xml b/widgets/forum/queries/getLatestComments.xml new file mode 100644 index 000000000..d036ad8aa --- /dev/null +++ b/widgets/forum/queries/getLatestComments.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/widgets/forum/queries/getTotalComments.xml b/widgets/forum/queries/getTotalComments.xml new file mode 100644 index 000000000..76c845ba0 --- /dev/null +++ b/widgets/forum/queries/getTotalComments.xml @@ -0,0 +1,15 @@ + + +
+ + + + + + + + + + + + diff --git a/widgets/forum/queries/getTotalDocuments.xml b/widgets/forum/queries/getTotalDocuments.xml new file mode 100644 index 000000000..2abf501b8 --- /dev/null +++ b/widgets/forum/queries/getTotalDocuments.xml @@ -0,0 +1,15 @@ + + +
+ + + + + + + + + + + + diff --git a/widgets/forum/skins/default/css/.common.css.swp b/widgets/forum/skins/default/css/.common.css.swp new file mode 100644 index 000000000..83de11d52 Binary files /dev/null and b/widgets/forum/skins/default/css/.common.css.swp differ diff --git a/widgets/forum/skins/default/css/common.css b/widgets/forum/skins/default/css/common.css new file mode 100644 index 000000000..bb3b33802 --- /dev/null +++ b/widgets/forum/skins/default/css/common.css @@ -0,0 +1,28 @@ +.xeForum { background:url("../images/back.gif") repeat-x left top; padding:0; } + +.xeForum div.forumTable { padding:0 6px 0 6px; } +.xeForum table { width:100%; border:0; table-layout:fixed; } + +.xeForum table tr.top { height:22px; } +.xeForum table th { vertical-align:bottom; color:#ffffff; font-weight:normal; padding-bottom:5px; } +.xeForum table th.title { font-weight:normal; text-align:left; padding-left:10px; } +.xeForum table th.last_post { text-align:left; padding-left:15px; } + +.xeForum table tr.content { background:#EFEFEF; height:55px; } + +.xeForum table td.topic, .xeForum td.icon, .xeForum td.title, .xeForum td.topic, .xeForum td.replies , .xeForum td.last_post{ padding:5px 0 5px 0; border-top:1px solid #FFFFFF; } +.xeForum table td.topic, .xeForum td.icon, .xeForum td.title, .xeForum td.topic, .xeForum td.replies , .xeForum td.last_post{ padding:5px 0 5px 0; border-bottom:1px solid #6E6E6E; } +.xeForum table td.icon { text-align:center; } + +.xeForum table td.title a { text-decoration:none; color:#3A3947; font-size:9pt;} +.xeForum table td.title p { margin-top:5px; font-weight:normal; text-decoration:none; color:#838383; font-size:9pt;} +.xeForum table td.title p a { font-weight:normal; text-decoration:none; color:#838383; font-size:9pt;} + +.xeForum table td.topic, .xeForum td.replies, .xeForum td.last_post { background:#EFEFEF url("../images/div.gif") no-repeat left 3px; } + +.xeForum table td.topic, .xeForum td.replies { text-align:center; color:#3A3947; font-family:tahoma; font-size:8pt; } + +.xeForum table td.last_post { text-align:left; color:#3A3947; font-family:tahoma; font-size:8pt; padding-left:15px; } +.xeForum table td.last_post div.author img { vertical-align:middle; } +.xeForum table td.last_post div.date { margin-top:5px; text-align:left; color:#3A3947; font-family:tahoma; font-size:8pt; } + diff --git a/widgets/forum/skins/default/images/back.gif b/widgets/forum/skins/default/images/back.gif new file mode 100644 index 000000000..8120d20ef Binary files /dev/null and b/widgets/forum/skins/default/images/back.gif differ diff --git a/widgets/forum/skins/default/images/div.gif b/widgets/forum/skins/default/images/div.gif new file mode 100644 index 000000000..22948e423 Binary files /dev/null and b/widgets/forum/skins/default/images/div.gif differ diff --git a/widgets/forum/skins/default/images/icon.gif b/widgets/forum/skins/default/images/icon.gif new file mode 100644 index 000000000..f9a69477f Binary files /dev/null and b/widgets/forum/skins/default/images/icon.gif differ diff --git a/widgets/forum/skins/default/images/icon_new.gif b/widgets/forum/skins/default/images/icon_new.gif new file mode 100644 index 000000000..454fad1fe Binary files /dev/null and b/widgets/forum/skins/default/images/icon_new.gif differ diff --git a/widgets/forum/skins/default/images/lb.gif b/widgets/forum/skins/default/images/lb.gif new file mode 100644 index 000000000..993f47c8d Binary files /dev/null and b/widgets/forum/skins/default/images/lb.gif differ diff --git a/widgets/forum/skins/default/images/lt.gif b/widgets/forum/skins/default/images/lt.gif new file mode 100644 index 000000000..02fbc3c4c Binary files /dev/null and b/widgets/forum/skins/default/images/lt.gif differ diff --git a/widgets/forum/skins/default/images/rb.gif b/widgets/forum/skins/default/images/rb.gif new file mode 100644 index 000000000..2e41a85d9 Binary files /dev/null and b/widgets/forum/skins/default/images/rb.gif differ diff --git a/widgets/forum/skins/default/images/replies.gif b/widgets/forum/skins/default/images/replies.gif new file mode 100644 index 000000000..78ba5d8d8 Binary files /dev/null and b/widgets/forum/skins/default/images/replies.gif differ diff --git a/widgets/forum/skins/default/images/rt.gif b/widgets/forum/skins/default/images/rt.gif new file mode 100644 index 000000000..6c1ad7fa9 Binary files /dev/null and b/widgets/forum/skins/default/images/rt.gif differ diff --git a/widgets/forum/skins/default/images/top_bg.gif b/widgets/forum/skins/default/images/top_bg.gif new file mode 100644 index 000000000..65e69d535 Binary files /dev/null and b/widgets/forum/skins/default/images/top_bg.gif differ diff --git a/widgets/forum/skins/default/list.html b/widgets/forum/skins/default/list.html new file mode 100644 index 000000000..9d1f8f601 --- /dev/null +++ b/widgets/forum/skins/default/list.html @@ -0,0 +1,47 @@ + + +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + +
{$widget_info->title} {$lang->topic}{$lang->replies}{$lang->last_post}
icon + {$val->title} +

{$val->description}

+
{number_format($val->document_count)}{number_format($val->comment_count)} + +
+ {$val->last_comment->nick_name} + go +
+
{zdate($val->last_comment->regdate,"Y-m-d H:i")}
+ +   + +
+ + + +
+ diff --git a/widgets/forum/skins/default/skin.xml b/widgets/forum/skins/default/skin.xml new file mode 100644 index 000000000..49b25ddb0 --- /dev/null +++ b/widgets/forum/skins/default/skin.xml @@ -0,0 +1,33 @@ + + + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + 기본 포럼형 위젯 스킨 + + 제로 + zero + zero + zero + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + 포럼형 위젯의 기본 스킨입니다. + + + + + 흰색 바탕용 + 白い背景用 + 白色背景 + White Background + + +