diff --git a/addons/blogapi/blogapi.func.php b/addons/blogapi/blogapi.func.php index c1334dfd7..b3e2503c2 100644 --- a/addons/blogapi/blogapi.func.php +++ b/addons/blogapi/blogapi.func.php @@ -62,6 +62,7 @@ header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); print $content; + Context::close(); exit(); } ?> diff --git a/addons/blogapi/conf/info.xml b/addons/blogapi/conf/info.xml index 46cc42f4b..17f8edb91 100644 --- a/addons/blogapi/conf/info.xml +++ b/addons/blogapi/conf/info.xml @@ -1,7 +1,7 @@ BlogAPI 애드온 - BlogAPI + BlogAPI アドオン BlogAPI Addon for BlogAPI Addon para BlogAPI diff --git a/addons/counter/conf/info.xml b/addons/counter/conf/info.xml index fb3e042bd..54ff175d1 100644 --- a/addons/counter/conf/info.xml +++ b/addons/counter/conf/info.xml @@ -1,7 +1,7 @@ 기본 카운터 애드온 - 接続カウンター + 接続カウンターアドオン 网站访问统计 Addon for basic counter Addon contador básico @@ -18,8 +18,8 @@ 이 애드온을 켜셔야 접속 정보 수집이 됩니다. - セロボードXEの接続カウンターモジュールは、接続情報を記録します。 - このアドオンを「使用」に設定しておくと接続情報が記録されます。 + セロボードXEの接続カウンターモジュールで接続(アクセス)情報を記録します。 + このアドオンを「使用」に設定しておくと接続(アクセス)情報が記録されます。 利用ZeroboardXE的网站访问统计模块记录网站访问信息。 diff --git a/addons/google_analytics/conf/info.xml b/addons/google_analytics/conf/info.xml index 4de6b10cb..3cea23912 100644 --- a/addons/google_analytics/conf/info.xml +++ b/addons/google_analytics/conf/info.xml @@ -1,11 +1,10 @@ Google Analytics - Google Analytics Google Analytics Google Analytics Google Analytics - Google Analytics + Google Analyticsアドオン 제로 Zero @@ -36,9 +35,9 @@ uacct uacct Google Analytics 코드의 _uacct 값을 입력해주세요. - 请输入Google Analytics代码的_uacct值。 - Google Analytics _uacct - Google Analytics _uacct + 请输入Google Analytics代码的_uacct值。 + Google Analytics _uacct + Google Analytics _uacct Google Analyticsコードの「_uacct」の値を入力してください。 diff --git a/addons/google_analytics/google_analytics.addon.php b/addons/google_analytics/google_analytics.addon.php index 387b3891e..733ed9400 100644 --- a/addons/google_analytics/google_analytics.addon.php +++ b/addons/google_analytics/google_analytics.addon.php @@ -8,20 +8,23 @@ **/ // 관리자 모듈이면 패스~ - if(Context::get('module')=='admin') return; + if(Context::get('module')=='admin') return; // 한번만 출력시키기 위해 전역변수에 호출되었음을 체크해 놓음 (called position과 상관없음) - if($GLOBALS['_called_ga_']) return; - $GLOBALS['_called_ga_'] = true; + if($GLOBALS['_called_addon_google_analytics_']) return; + $GLOBALS['_called_addon_google_analytics_'] = true; - $js_code = << + $js_code = << +var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); +document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); -EndOfCss; +EndOfGA; Context::addHtmlFooter($js_code); -?> +?> \ No newline at end of file diff --git a/addons/lemonpen/conf/info.xml b/addons/lemonpen/conf/info.xml index bf2b1888d..a344a091e 100644 --- a/addons/lemonpen/conf/info.xml +++ b/addons/lemonpen/conf/info.xml @@ -1,14 +1,19 @@ LemonPen XE 애드온 + LemonPen XE アドオン zero + zero 활성화 하시면 레몬펜을 사이트에 달 수 있습니다. + 機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供) sid + sid 레몬펜에에서 사이트 등록시 발급받은 sid값을 입력해주세요. + レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index ebdbc9765..413b804eb 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -1,7 +1,7 @@ 사용자 추가 정보 및 커뮤니케이션 기능 활성화 - 会員情報・コミュニティ + 会員情報・コミュニティアドオン 用户扩展信息 Addon for enabling facilities for providing additional information about users and communicating Addon para activar la función de la Información addcional del usuario y de la comunicación. diff --git a/addons/openid_delegation_id/conf/info.xml b/addons/openid_delegation_id/conf/info.xml index 43be02af2..abe71577c 100644 --- a/addons/openid_delegation_id/conf/info.xml +++ b/addons/openid_delegation_id/conf/info.xml @@ -4,7 +4,7 @@ OpenID Addon for delegating domain name to OpenID Delegación ID para OpenID - OpenID + OpenIDアドオン Аддон для делигирования доменного имени к OpenID 제로 diff --git a/addons/point/conf/info.xml b/addons/point/conf/info.xml index 27889b721..a5e124361 100644 --- a/addons/point/conf/info.xml +++ b/addons/point/conf/info.xml @@ -2,7 +2,7 @@ 포인트 활성화 애드온 积分插件 - ポイントシステム + ポイントシステム用アドオン Addon for activating point Addon para activar los puntos Аддон для активации поинтов @@ -20,7 +20,7 @@ 以积分系统模块中设置的内容为基础,对发表/删除新帖,发表/删除评论,上传/下载/删除/文件等动作记录为积分。 - ポイントシステムモジュールで設定された内容を基に、書き込み作成・削除/コメント作成・削除/ファイルアップロード・削除/ダウンロードなどのユーザの活動に対してポイントを記録します。 + ポイントシステムモジュールで設定された内容を基に、書き込み作成・削除/コメント作成・削除/ファイルアップロード・削除/ダウンロードなどのユーザの活動に対してそれぞれのポイント付与ができます。 This addon records point on writing/deleting/adding comments/deleting comments/uploading/downloading following to point system module. diff --git a/addons/point_level_icon/conf/info.xml b/addons/point_level_icon/conf/info.xml index cd3926128..154c5493e 100644 --- a/addons/point_level_icon/conf/info.xml +++ b/addons/point_level_icon/conf/info.xml @@ -2,7 +2,7 @@ 포인트 레벨 아이콘 표시 애드온 积分级别图标 - ポイントレベルアイコン + ポイントレベルアイコン表示アドオン Addon for displaying level icon Addon para mostar el nivel del ícono Аддон для отображения иконки уровня diff --git a/addons/rainbow_link/conf/info.xml b/addons/rainbow_link/conf/info.xml index 2134040d3..b2fc0b23a 100644 --- a/addons/rainbow_link/conf/info.xml +++ b/addons/rainbow_link/conf/info.xml @@ -4,13 +4,15 @@ Rainbow 链接 Addon for rainbow links Adición Enlace Arco Iris - レインボーリンク + レインボーリンクアドオン + Аддон для радужных ссылок dynamicdrive.com dynamicdrive.com dynamicdrive.com dynamicdrive.com dynamicdrive.com + dynamicdrive.com rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다. 이 애드온의 rainbow.js는 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>에 저작권이 있습니다. @@ -30,5 +32,9 @@ 「rainbow.js」をヘッダーに追加し、リンクされている文字列の色を虹色で表示します。この機能拡張の「 rainbow.js」は「<a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>」に著作権があります。 + + Этот аддон добавляет файл с именем "rainbow.js" в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону. + "rainbow.js" Copyrightⓒ2007 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>. + diff --git a/addons/spamfilter/conf/info.xml b/addons/spamfilter/conf/info.xml index 67041ca54..51043b615 100644 --- a/addons/spamfilter/conf/info.xml +++ b/addons/spamfilter/conf/info.xml @@ -4,7 +4,7 @@ 垃圾过滤 Addon for filtering spam Addon para filtrar los Spam - スパムフィルター + スパムフィルター(SpamFilter)アドオン Аддон для фильтрации спама 제로 @@ -31,7 +31,7 @@ SpamFilterモジュールを利用して書き込み・コメント・トラックバックが登録される前にフィルタリングを行います。 - 更に連続書き込みやロボットによる自動書き込みなどを防ぐことができます。 + 更に悪質な連続書き込みやロボットによる自動書き込みなどを防ぐことができます。 詳細な設定は " スパムフィルターモジュール " で行ってください。 diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 8e3d6117d..a91a673f6 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -221,6 +221,23 @@ return $this->db_info; } + /** + * @brief 사이트 title adding + **/ + function addBrowserTitle($site_title) { + if(!$site_title) return; + $oContext = &Context::getInstance(); + $oContext->_addBrowserTitle($site_title); + } + + /** + * @brief 사이트 title adding + **/ + function _addBrowserTitle($site_title) { + if($this->site_title) $this->site_title .= ' - '.htmlspecialchars($site_title); + else $this->site_title .= htmlspecialchars($site_title); + } + /** * @brief 사이트 title setting **/ diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 6191596d1..7e8c79af1 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -324,7 +324,7 @@ } if(strpos($name,'.')!==false&&strpos($value,'.')!==false) { - list($column_name) = explode('.',$value); + list($table_name, $column_name) = explode('.',$value); if($column_type[$column_name]) return $value; } diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 8a0946267..201e6c50c 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -220,10 +220,9 @@ * @brief RequestMethod에 맞춰 헤더 출력 ***/ function _printHeader() { + if($this->gz_enabled) header("Content-Encoding: gzip"); if(Context::getResponseMethod() != 'HTML') return $this->_printXMLHeader(); else return $this->_printHTMLHeader(); - - if($this->gz_enabled) header("Content-Encoding: gzip"); } /** diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 87d65803a..5a4abfbf2 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -148,7 +148,7 @@ if(!eregi("^([a-z0-9\_\.])",$path)) return $str1; $path = preg_replace('/^(\.\/|\/)/','',$path); - $path = 'tpl_path?>'.$path; + $path = 'tpl_path?>'.$path; $output = str_replace($str2, $path, $str1); return $output; } diff --git a/modules/lifepod/me2dayXmlParser.class.php b/classes/xml/GeneralXmlParser.class.php similarity index 87% rename from modules/lifepod/me2dayXmlParser.class.php rename to classes/xml/GeneralXmlParser.class.php index b836701fe..7bcd41a1e 100644 --- a/modules/lifepod/me2dayXmlParser.class.php +++ b/classes/xml/GeneralXmlParser.class.php @@ -1,5 +1,11 @@ lang); } - $this->oParser = xml_parser_create(); + $this->oParser = xml_parser_create('UTF-8'); xml_set_object($this->oParser, $this); xml_set_element_handler($this->oParser, "_tagOpen", "_tagClosed"); diff --git a/common/js/common.js b/common/js/common.js index d6044a5b6..9ff690d7d 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -197,7 +197,7 @@ function displayMultimedia(src, width, height, auto_start) { ""+ "<\/object>"; } else if(/\.flv/i.test(src)) { - html = ""; + html = ""; } else { html = ""; } @@ -605,7 +605,6 @@ function displayPopupMenu(ret_obj, response_tags, params) { if(html) { // 레이어 출력 xInnerHtml('popup_menu_area', "
"+html+"
"); - xWidth(area, xWidth(area)); 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/tpl/calendar.php b/common/tpl/calendar.php index 9d9d1035a..a53070883 100644 --- a/common/tpl/calendar.php +++ b/common/tpl/calendar.php @@ -172,14 +172,14 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo


@@ -188,15 +188,15 @@ $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $mo - + - + - + - - + diff --git a/common/tpl/images/flvplayer.swf b/common/tpl/images/flvplayer.swf index 5b5412a52..59b6083c2 100644 Binary files a/common/tpl/images/flvplayer.swf and b/common/tpl/images/flvplayer.swf differ diff --git a/config/config.inc.php b/config/config.inc.php index 8d3ff21e5..33c7fe0f8 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -14,7 +14,7 @@ * 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며 * config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함 **/ - define('__ZBXE_VERSION__', '0.2.7'); + define('__ZBXE_VERSION__', '0.2.8'); /** * @brief 디버깅 메세지 출력 diff --git a/config/func.inc.php b/config/func.inc.php index 7e9e6c76e..e0100c5fa 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -211,6 +211,25 @@ return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0].$tail : $string; } + function zgap() + { + $time_zone = $GLOBALS['_time_zone']; + if($time_zone<0) $to = -1; else $to = 1; + $t_hour = substr($time_zone,1,2)*$to; + $t_min = substr($time_zone,3,2)*$to; + + $server_time_zone = date("O"); + if($server_time_zone<0) $so = -1; else $so = 1; + $c_hour = substr($server_time_zone,1,2)*$so; + $c_min = substr($server_time_zone,3,2)*$so; + + $g_min = $t_min - $c_min; + $g_hour = $t_hour - $c_hour; + + $gap = $g_min*60 + $g_hour*60*60; + return $gap; + } + /** * @brief YYYYMMDDHHIISS 형식의 시간값을 unix time으로 변경 * @param str YYYYMMDDHHIISS 형식의 시간값 @@ -227,20 +246,7 @@ if(strlen($str) <= 8) { $gap = 0; } else { - $time_zone = $GLOBALS['_time_zone']; - if($time_zone<0) $to = -1; else $to = 1; - $t_hour = substr($time_zone,1,2)*$to; - $t_min = substr($time_zone,3,2)*$to; - - $server_time_zone = date("O"); - if($server_time_zone<0) $so = -1; else $so = 1; - $c_hour = substr($server_time_zone,1,2)*$so; - $c_min = substr($server_time_zone,3,2)*$so; - - $g_min = $t_min - $c_min; - $g_hour = $t_hour - $c_hour; - - $gap = $g_min*60 + $g_hour*60*60; + $gap = zgap(); } return mktime($hour, $min, $sec, $month?$month:1, $day?$day:1, $year)+$gap; @@ -411,6 +417,9 @@ // meta 태그 제거 $content = preg_replace("!!is","",$content); + // style 태그 제거 + $content = preg_replace("!!is","",$content); + return $content; } diff --git a/layouts/xe_official/conf/info.xml b/layouts/xe_official/conf/info.xml index 52f681050..bd0898b99 100644 --- a/layouts/xe_official/conf/info.xml +++ b/layouts/xe_official/conf/info.xml @@ -3,13 +3,13 @@ ZBXE 공식 사이트 레이아웃 ZBXEオフィシャルレイアウト ZBXE Official website layout - Diseño oficial de la página web de ZBXE + Diseño oficial de la página web de ZBXE ZBXE 官方网站布局 zero Zero zero - zero + zero zero 제로보드XE 공식 사이트 레이아웃입니다. @@ -29,7 +29,7 @@ HTML/CSS : Chan-Myung Jeong Layout producer : zero - + Este diseño is el diseño oficial de la página web de Zerobard XE. Deseñador : So-Ra Lee HTML/CSS : Chan-Myung Jeong @@ -58,7 +58,7 @@ 기본 デフォルト Basic - Básico + Básico 默认 default @@ -66,7 +66,7 @@ 검은색 Black - Negro + Negro 黑色 black @@ -74,7 +74,7 @@ 하얀색 white - Blanco + Blanco 白色 white @@ -101,19 +101,19 @@ ロゴをクリックした時に移動するホームページのURLを入力してください。 点击网站LOGO时要移动的页面URL。 Please input the URL to redirect when user clicks the logo - Ingresar el URL de la página web para redireccionar al pulsar el logotipo + Ingresar el URL de la página web para redireccionar al pulsar el logotipo 배경 이미지 背景イメージ 背景图片 Background Image - Imagen de fondo + Imagen de fondo 배경 이미지를 사용하시려면 등록해주세요. 背景イメージを使う場合は、登録してください。 要想使用背景图片请在这里上传。 Please input if you want to use background image. - Ingresar imagen de fondo si desea usar. + Ingresar imagen de fondo si desea usar. diff --git a/modules/addon/addon.admin.model.php b/modules/addon/addon.admin.model.php index a31572bb0..aae2a8454 100644 --- a/modules/addon/addon.admin.model.php +++ b/modules/addon/addon.admin.model.php @@ -130,7 +130,8 @@ $obj->type = $val->type->body; $obj->description = $val->description->body; $obj->value = $extra_vals->{$obj->name}; - if(strpos($obj->value, '|@|') != 0) { $obj->value = explode('|@|', $obj->value); } + if(strpos($obj->value, '|@|') != false) { $obj->value = explode('|@|', $obj->value); } + if($obj->type == 'mid_list' && !is_array($obj->value)) { $obj->value = array($obj->value); } // 'select'type에서 option목록을 구한다. if(is_array($val->options)) { diff --git a/modules/addon/tpl/addon_list.html b/modules/addon/tpl/addon_list.html index e853114a0..c1f8fcdfa 100644 --- a/modules/addon/tpl/addon_list.html +++ b/modules/addon/tpl/addon_list.html @@ -11,13 +11,61 @@
">
onclick="selectDate('','','')"> - -   - - -   - + onclick="selectDate('','','')"> + +   + + +   +
+--++-+++ + +++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + diff --git a/modules/admin/tpl/css/admin.css b/modules/admin/tpl/css/admin.css index c0459909f..21ce08c60 100644 --- a/modules/admin/tpl/css/admin.css +++ b/modules/admin/tpl/css/admin.css @@ -64,7 +64,7 @@ h3 .gray { color:#9d9d9d;} .adminTable td.tCenter { text-align:center; } .adminTable td select { height:20px; } -.adminTable td textarea { width:98%; height:50px; } +.adminTable td textarea { width:98%; height:120px; } .adminTable td a { color:#555555; text-decoration:none; } .adminTable td a:hover { text-decoration:underline; } .adminTable td p, .adminTable td label { color:#AAAAAA; font-size:.9em; margin-top:5px; } diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index 79df829a9..3809afc3b 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -101,7 +101,7 @@ } else { // 브라우저 타이틀 설정 - Context::setBrowserTitle($oDocument->getTitleText()); + Context::addBrowserTitle($oDocument->getTitleText()); // 댓글에디터 설정 if($this->grant->write_comment && $oDocument->allowComment() && !$oDocument->isLocked()) $comment_editor[$oDocument->document_srl] = $this->getCommentEditor($oDocument->document_srl, 0, 100); diff --git a/modules/blog/tpl/blog_insert.html b/modules/blog/tpl/blog_insert.html index c8716f61b..4048d5223 100644 --- a/modules/blog/tpl/blog_insert.html +++ b/modules/blog/tpl/blog_insert.html @@ -19,7 +19,7 @@ @@ -48,7 +48,7 @@ diff --git a/modules/blog/tpl/grant_list.html b/modules/blog/tpl/grant_list.html index 046fac51d..d578beb99 100644 --- a/modules/blog/tpl/grant_list.html +++ b/modules/blog/tpl/grant_list.html @@ -2,42 +2,42 @@ - - + + -
{$lang->addon_name}
{$lang->mid} - +

{$lang->about_mid}

{$lang->browser_title} - +

{$lang->about_browser_title}

- - - - - - +
{$lang->about_grant}
+++++ + + + + + + + + + - - + + + + - - - - - - - - - - - - - - - -
{$lang->about_grant}
{$lang->grant}{$lang->target}
{$lang->grant}{$lang->target}{$val->title} + +
+ grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> + +
+ +
{$lang->cmd_select_all}{$lang->cmd_unselect_all}
{$val->title} - -
- grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - -
- -
{$lang->cmd_select_all}{$lang->cmd_unselect_all}
+ + + + + + diff --git a/modules/blog/tpl/index.html b/modules/blog/tpl/index.html index aa8653fe3..1b7e4893d 100644 --- a/modules/blog/tpl/index.html +++ b/modules/blog/tpl/index.html @@ -7,13 +7,61 @@ + ++++++++ +---++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + diff --git a/modules/blog/tpl/skin_info.html b/modules/blog/tpl/skin_info.html index 11e872a9a..850769d9d 100644 --- a/modules/blog/tpl/skin_info.html +++ b/modules/blog/tpl/skin_info.html @@ -78,10 +78,10 @@ @@ -45,7 +45,7 @@ diff --git a/modules/board/tpl/category_list.html b/modules/board/tpl/category_list.html index 5e99db6b5..4206091be 100644 --- a/modules/board/tpl/category_list.html +++ b/modules/board/tpl/category_list.html @@ -28,7 +28,7 @@ - + diff --git a/modules/board/tpl/grant_list.html b/modules/board/tpl/grant_list.html index 0ca8e1421..4bdc834f1 100644 --- a/modules/board/tpl/grant_list.html +++ b/modules/board/tpl/grant_list.html @@ -5,40 +5,40 @@ -
{$lang->no}{$val->title} - + - + - +
diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 052460cff..eadd3469a 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -71,7 +71,7 @@ Jeong, Chan Myeong 070601~070630 .boardList td.title a:visited { color:#777777;} .boardList td.topic { padding-left:1em; color:#888888; } -.boardList td.topic strong a { font-size:1.2em; font-weight:normal; text-decoration:none; color:#444444; } +.boardList td.topic strong a { font-size:1em; font-weight:normal; text-decoration:none; color:#222222; } .boardList td.topic strong a:visited { color:#777777; } .boardList td.topic .category { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 3px; padding-left:.5em; margin-left:.5em; color:#AAAAAA; } .boardList td.topic div.author { margin-top:.5em; color:#BBBBBB; font-size:0.8em; } @@ -291,6 +291,7 @@ Jeong, Chan Myeong 070601~070630 .smallBox .inputPassword { position:relative; border:none; padding:2em 2em 1.5em 2em;} .smallBox .inputPassword .inputTypeText { float:left; margin-right:.5em; width:8em;} .smallBox .inputPassword legend { position:absolute; overflow:hidden; width:1px; height:1px; font-size:.001em; text-indent:-100em;} +.smallBox .messageBox { background-color:#F3F3F3; padding:20px; border-bottom:1px solid #EEEEEE;} /* 게시물의 팝업 메뉴 */ diff --git a/modules/board/skins/xe_board/header.html b/modules/board/skins/xe_board/header.html index f923116e6..a4ff2f3a5 100644 --- a/modules/board/skins/xe_board/header.html +++ b/modules/board/skins/xe_board/header.html @@ -107,9 +107,9 @@ -
  • List
  • -
  • Webzine
  • -
  • Gallery
  • +
  • List
  • +
  • Webzine
  • +
  • Gallery
  • diff --git a/modules/board/skins/xe_board/message.html b/modules/board/skins/xe_board/message.html index 00bf01814..3fcd79b35 100644 --- a/modules/board/skins/xe_board/message.html +++ b/modules/board/skins/xe_board/message.html @@ -1,11 +1,16 @@ -
    - {$message} +
    + +
    {$message}
    + + +
    - - {$lang->cmd_login} - - diff --git a/modules/board/skins/xe_board/write_form.html b/modules/board/skins/xe_board/write_form.html index a35c15e7e..0dd71ccf9 100644 --- a/modules/board/skins/xe_board/write_form.html +++ b/modules/board/skins/xe_board/write_form.html @@ -36,7 +36,7 @@ - +
    diff --git a/modules/board/tpl/board_insert.html b/modules/board/tpl/board_insert.html index 4d5ae7b52..ca4ba177a 100644 --- a/modules/board/tpl/board_insert.html +++ b/modules/board/tpl/board_insert.html @@ -16,7 +16,7 @@
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->browser_title} - +

    {$lang->about_browser_title}

    {$lang->msg_category_is_null}{$lang->msg_category_is_null}
    - - - - - - - - - - - +
    {$lang->about_grant}
    {$lang->grant}{$lang->target}
    +++++ + + + + + + - - - - - - - - - - - - - -
    {$lang->about_grant}
    {$lang->grant}{$lang->target}
    {$val->title} - -
    - grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - -
    - -
    {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    - -
    + + + + {$val->title} + + +
    + grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> + +
    + + + {$lang->cmd_select_all} + {$lang->cmd_unselect_all} + + + + + + + + + diff --git a/modules/board/tpl/index.html b/modules/board/tpl/index.html index 25249868e..ba68b57d5 100644 --- a/modules/board/tpl/index.html +++ b/modules/board/tpl/index.html @@ -7,13 +7,60 @@ + ++++++++ ++++ ++++++++ ++++++++ + ++++++++ + ++++++++ @@ -55,7 +102,7 @@ {htmlspecialchars($val->browser_title)} - + diff --git a/modules/board/tpl/skin_info.html b/modules/board/tpl/skin_info.html index 5d4784ff5..654262ac1 100644 --- a/modules/board/tpl/skin_info.html +++ b/modules/board/tpl/skin_info.html @@ -63,10 +63,10 @@ + + + + + + + + + + + + @@ -41,12 +56,6 @@ - - - - @@ -47,7 +47,7 @@ diff --git a/modules/guestbook/tpl/index.html b/modules/guestbook/tpl/index.html index 73ca611b1..494a6d253 100644 --- a/modules/guestbook/tpl/index.html +++ b/modules/guestbook/tpl/index.html @@ -7,13 +7,60 @@
    {$lang->no} {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_view} {$lang->cmd_copy} {$lang->cmd_delete} 
    {$val->title} - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - -
    -
    {$lang->user_name}{$lang->date}{$lang->last_update}{$lang->ipaddress}{$lang->cmd_move}
    {$no}{htmlspecialchars($module_list[$val->module_srl]->browser_title)}
    {htmlspecialchars($val->nick_name)}
    {zdate($val->regdate,"Y-m-d")}{zdate($val->last_upgdate,"Y-m-d")} {$val->ipaddress}{$lang->cmd_move}
    - - {cut_str(htmlspecialchars(strip_tags($val->content)),100,'...')} -
    + + + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    +
    {$lang->user_name}{$lang->date}{$lang->last_update}{$lang->ipaddress}{$lang->cmd_move}
    {$no}{htmlspecialchars($module_list[$val->module_srl]->browser_title)}
    {htmlspecialchars($val->nick_name)}
    {zdate($val->regdate,"Y-m-d")}{zdate($val->last_update, 'Y-m-d H:i:s')} {$val->ipaddress}{$lang->cmd_move}
    + + {cut_str(htmlspecialchars(strip_tags($val->content)),100,'...')} +
    diff --git a/modules/comment/tpl/declared_list.html b/modules/comment/tpl/declared_list.html index 14fb32c20..79aec6c45 100644 --- a/modules/comment/tpl/declared_list.html +++ b/modules/comment/tpl/declared_list.html @@ -9,40 +9,87 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->comment}{$lang->user_name}{$lang->date}{$lang->cmd_declare}{$lang->ipaddress}{$lang->cmd_move}
    {$no} {$oComment->getSummary(100)}
    {$oComment->getNickName()}
    {$oComment->getRegdate("Y-m-d")}{$oComment->get('declared_count')}{$oComment->get('ipaddress')}{$lang->cmd_move}
    + + + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang->comment}{$lang->user_name}{$lang->date}{$lang->cmd_declare}{$lang->ipaddress}{$lang->cmd_move}
    {$no} {$oComment->getSummary(100)}
    {$oComment->getNickName()}
    {$oComment->getRegdate("Y-m-d")}{$oComment->get('declared_count')}{$oComment->get('ipaddress')}{$lang->cmd_move}
    diff --git a/modules/document/conf/info.xml b/modules/document/conf/info.xml index f07ceaced..1f5eeb249 100644 --- a/modules/document/conf/info.xml +++ b/modules/document/conf/info.xml @@ -17,7 +17,7 @@ Module for managing documents used in board, blog, etc. Módulo para manejar los documentos en blog y en los tableros. 管理版面,博客等处主题的模块。 - 掲示板、ブログなどのモジュルで使用されるドキュメント(書き込み)を管理するモジュルです。 + 掲示板、ブログなどのモジュールで使用されるドキュメント(書き込み)を管理するモジュルです。 Модуль для управления документами в форуме, блоге и прочее. diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 9a4c10c85..007dfb120 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -768,7 +768,7 @@ else $group_check_code = "true"; $attribute = sprintf( - 'node_srl="%s" text="" url="%s" expand="%s" document_count="%d" ', + 'node_srl="%s" text="" url="%s" expand="%s" document_count="%d" ', $category_srl, $group_check_code, $title, diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 2965c9b8d..222e78e16 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -101,6 +101,7 @@ } function doCart() { + if(!$this->document_srl) return false; if($this->isCarted()) $this->removeCart(); else $this->addCart(); } @@ -118,6 +119,8 @@ } function notify($type, $content) { + if(!$this->document_srl) return; + // useNotify가 아니면 return if(!$this->useNotify()) return; @@ -171,7 +174,7 @@ } function getTitleText($cut_size = 0, $tail='...') { - if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); + if(!$this->document_srl) return; if($cut_size) $title = cut_str($this->get('title'), $cut_size, $tail); else $title = $this->get('title'); @@ -180,6 +183,8 @@ } function getTitle($cut_size = 0, $tail='...') { + if(!$this->document_srl) return; + $title = $this->getTitleText($cut_size, $tail); $attrs = array(); @@ -191,6 +196,8 @@ } function getContentText($strlen = 0) { + if(!$this->document_srl) return; + if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); $_SESSION['accessible'][$this->document_srl] = true; @@ -203,6 +210,8 @@ } function getContent($add_document_info = true) { + if(!$this->document_srl) return; + if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); $_SESSION['accessible'][$this->document_srl] = true; @@ -242,6 +251,8 @@ } function getSummary($str_size = 50) { + if(!$this->document_srl) return; + $content = htmlspecialchars(strip_tags(str_replace(" "," ",$this->getContent(false)))); return cut_str($content, $str_size, '...'); } @@ -288,6 +299,8 @@ } function getTrackbackUrl() { + if(!$this->document_srl) return; + // 스팸을 막기 위한 key 생성 $oTrackbackModel = &getModel('trackback'); return $oTrackbackModel->getTrackbackUrl($this->document_srl); @@ -340,6 +353,8 @@ } function getTrackbacks() { + if(!$this->document_srl) return; + if(!$this->allowTrackback() || !$this->get('trackback_count')) return; $oTrackbackModel = &getModel('trackback'); @@ -347,17 +362,25 @@ } function thumbnailExists($width = 80, $height = 0, $type = '') { + if(!$this->document_srl) return false; if(!$this->getThumbnail($width, $height, $type)) return false; return true; } function getThumbnail($width = 80, $height = 0, $thumbnail_type = '') { + if(!$this->document_srl) return; + if(!$height) $height = $width; + $thumbnail_type = ''; // 문서 모듈의 기본 설정에서 Thumbnail의 생성 방법을 구함 if(!in_array($thumbnail_type, array('crop','ratio'))) { - $oDocumentModel = &getModel('document'); - $config = $oDocumentModel->getDocumentConfig(); + $config = $GLOBALS['__document_config__']; + if(!$config) { + $oDocumentModel = &getModel('document'); + $config = $oDocumentModel->getDocumentConfig(); + $GLOBALS['__document_config__'] = $config; + } $thumbnail_type = $config->thumbnail_type; } @@ -431,26 +454,14 @@ * $time_interval 에 지정된 시간(초)로 새글/최신 업데이트글의 판별 **/ function getExtraImages($time_interval = 43200) { + if(!$this->document_srl) return; // 아이콘 목록을 담을 변수 미리 설정 $buffs = array(); $check_files = false; - // 사진 이미지 체크 - if(preg_match('!]*?)>!is', $this->get('content'))) { - $buffs[] = "image"; - $check_files = true; - } - - // 동영상 체크 - if(preg_match('!]*?)>!is', $this->get('content'))) { - $buffs[] = "movie"; - $check_files = true; - } - - // 첨부파일 체크 - if(!$check_files && $this->hasUploadedFiles()) $buffs[] = "file"; + $content = $this->get('content'); // 비밀글 체크 if($this->isSecret()) $buffs[] = "secret"; @@ -462,6 +473,25 @@ if($this->get('regdate')>$time_check) $buffs[] = "new"; else if($this->get('last_update')>$time_check) $buffs[] = "update"; + // 사진 이미지 체크 + preg_match_all('!]*?)>!is', $content, $matches); + $cnt = count($matches[0]); + for($i=0;$i<$cnt;$i++) { + if(preg_match('/src=("|\'|\.|\/)*(common|modules|widgets|layouts)/i', $matches[0][$i])) continue; + $buffs[] = "image"; + $check_files = true; + break; + } + + // 동영상 체크 + if(preg_match('!]*?)>!is', $content) || preg_match('/editor_component=("|\')*multimedia_link/i', $content) ) { + $buffs[] = "movie"; + $check_files = true; + } + + // 첨부파일 체크 + if(!$check_files && $this->hasUploadedFiles()) $buffs[] = "file"; + return $buffs; } @@ -470,6 +500,8 @@ * @brief getExtraImages로 구한 값을 이미지 태그를 씌워서 리턴 **/ function printExtraImages($time_check = 43200) { + if(!$this->document_srl) return; + // 아이콘 디렉토리 구함 $path = sprintf('%s%s',getUrl(), 'modules/document/tpl/icons/'); @@ -484,11 +516,15 @@ } function hasUploadedFiles() { + if(!$this->document_srl) return; + if($this->isSecret() && !$this->isGranted()) return false; return $this->get('uploaded_count')? true : false; } function getUploadedFiles() { + if(!$this->document_srl) return; + if($this->isSecret() && !$this->isGranted()) return; if(!$this->get('uploaded_count')) return; diff --git a/modules/document/tpl/declared_list.html b/modules/document/tpl/declared_list.html index 122d6b929..3d648fd8c 100644 --- a/modules/document/tpl/declared_list.html +++ b/modules/document/tpl/declared_list.html @@ -11,53 +11,105 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - ++++++++ + +++++++++ + +++++++++ + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang->no}{$lang->title}{$lang->user_name}{$lang->cmd_declare}{$lang->readed_count}{$lang->voted_count}{$lang->date}
    {$no}isCarted())-->checked="checked"/> - {$oDocument->getTitleText()} + + + ++++++++- - [{$oDocument->getCommentCount()}] - + ++++++++- - [{$oDocument->getTrackbackCount()}] - - - - - - - - - - -
    {$oDocument->getNickName()}
    {$oDocument->get('declared_count')}{$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")}
    + +
    {$lang->no}{$lang->title}{$lang->user_name}{$lang->cmd_declare}{$lang->readed_count}{$lang->voted_count}{$lang->date}
    {$no}isCarted())-->checked="checked"/> + {$oDocument->getTitleText()} + + + [{$oDocument->getCommentCount()}] + + + + [{$oDocument->getTrackbackCount()}] + +
    {$oDocument->getNickName()}
    {$oDocument->get('declared_count')}{$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")}
    diff --git a/modules/document/tpl/document_list.html b/modules/document/tpl/document_list.html index 26fe4d655..e21cc2c78 100644 --- a/modules/document/tpl/document_list.html +++ b/modules/document/tpl/document_list.html @@ -11,65 +11,76 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang->no} -
    - - -
    -
    {$lang->user_name}{$lang->readed_count}{$lang->voted_count}{$lang->date}
    {$no}isCarted())-->checked="checked"/> - - {$lang->cmd_save} - - [{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}]
    - {$oDocument->getTitle()} - + + + +{@ $col_width = array(50,40,0,150,55,55,65)} + +{@ $col_width = array(50,40,0,150,55,55,75)} + +{@ $col_width = array(50,40,0,150,50,50,70)} + +{@ $col_width = array(50,40,0,150,55,55,75)} + +{@ $col_width = array(50,40,0,150,55,110,75)} + +{@ $col_width = array(50,40,0,150,50,60,65)} + - - [{$oDocument->getCommentCount()}] - + +width="{$width}" /> + - - [{$oDocument->getTrackbackCount()}] - - - - - - - - - -
    {$oDocument->getNickName()}
    {$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")}
    +
    {$lang->no} +
    + + +
    +
    {$lang->user_name}{$lang->readed_count}{$lang->voted_count}{$lang->date}
    {$no}isCarted())-->checked="checked"/> + + {$lang->cmd_save} + + [{htmlspecialchars($module_list[$oDocument->get('module_srl')]->browser_title)}]
    + {$oDocument->getTitle()} + + + + [{$oDocument->getCommentCount()}] + + + + [{$oDocument->getTrackbackCount()}] + +
    {$oDocument->getNickName()}
    {$oDocument->get('readed_count')}{$oDocument->get('voted_count')}{$oDocument->getRegdate("Y-m-d")}
    diff --git a/modules/editor/components/code_highlighter/code_highlighter.class.php b/modules/editor/components/code_highlighter/code_highlighter.class.php index 60e2a312e..cfa6ed5ab 100755 --- a/modules/editor/components/code_highlighter/code_highlighter.class.php +++ b/modules/editor/components/code_highlighter/code_highlighter.class.php @@ -7,70 +7,82 @@ class code_highlighter extends EditorHandler { - // editor_sequence 는 에디터에서 필수로 달고 다녀야 함 - var $editor_sequence = 0; - var $component_path = ''; + // editor_sequence 는 에디터에서 필수로 달고 다녀야 함 + var $editor_sequence = 0; + var $component_path = ''; - /** - * @brief editor_sequence과 컴포넌트의 경로를 받음 - **/ - function code_highlighter($editor_sequence, $component_path) { - $this->editor_sequence = $editor_sequence; - $this->component_path = $component_path; - } + /** + * @brief editor_sequence과 컴포넌트의 경로를 받음 + **/ + function code_highlighter($editor_sequence, $component_path) { + $this->editor_sequence = $editor_sequence; + $this->component_path = $component_path; + } - /** - * @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다 - **/ - function getPopupContent() { - // 템플릿을 미리 컴파일해서 컴파일된 소스를 return - $tpl_path = $this->component_path.'tpl'; - $tpl_file = 'popup.html'; + /** + * @brief popup window요청시 popup window에 출력할 내용을 추가하면 된다 + **/ + function getPopupContent() { + // 템플릿을 미리 컴파일해서 컴파일된 소스를 return + $tpl_path = $this->component_path.'tpl'; + $tpl_file = 'popup.html'; - Context::set("tpl_path", $tpl_path); + Context::set("tpl_path", $tpl_path); - $oTemplate = &TemplateHandler::getInstance(); - return $oTemplate->compile($tpl_path, $tpl_file); - } + $oTemplate = &TemplateHandler::getInstance(); + return $oTemplate->compile($tpl_path, $tpl_file); + } - /** - * @brief 에디터 컴포넌트가 별도의 고유 코드를 이용한다면 그 코드를 html로 변경하여 주는 method - * - * 이미지나 멀티미디어, 설문등 고유 코드가 필요한 에디터 컴포넌트는 고유코드를 내용에 추가하고 나서 - * DocumentModule::transContent() 에서 해당 컴포넌트의 transHtml() method를 호출하여 고유코드를 html로 변경 - **/ - function transHTML($xml_obj) { - $code_type = $xml_obj->attrs->code_type; - $option_collapse = $xml_obj->attrs->collapse; - $option_nogutter = $xml_obj->attrs->nogutter; - $option_nocontrols = $xml_obj->attrs->nocontrols; - if($option_collapse == 'Y') $code_type = $code_type.':collapse'; - if($option_nogutter == 'Y') $code_type = $code_type.':nogutter'; - if($option_nocontrols == 'Y' && $option_collapse !== 'Y') $code_type = $code_type.':nocontrols'; - $body = $xml_obj->body; + /** + * @brief 에디터 컴포넌트가 별도의 고유 코드를 이용한다면 그 코드를 html로 변경하여 주는 method + * + * 이미지나 멀티미디어, 설문등 고유 코드가 필요한 에디터 컴포넌트는 고유코드를 내용에 추가하고 나서 + * DocumentModule::transContent() 에서 해당 컴포넌트의 transHtml() method를 호출하여 고유코드를 html로 변경 + **/ + function transHTML($xml_obj) { + $code_type = $xml_obj->attrs->code_type; + $option_file_path = $xml_obj->attrs->file_path; + $option_description = $xml_obj->attrs->description; + $option_first_line = $xml_obj->attrs->first_line; + $option_collapse = $xml_obj->attrs->collapse; + $option_nogutter = $xml_obj->attrs->nogutter; + $option_nocontrols = $xml_obj->attrs->nocontrols; + if($option_collapse == 'true') $option = $option.':collapse'; + if($option_nogutter == 'true') $option = $option.':nogutter'; + if($option_nocontrols == 'true' && $option_collapse != 'true') $option = $option.':nocontrols'; + if($option_first_line > 1) $option = $option.":firstline[$option_first_line]"; + $body = $xml_obj->body; - $body = preg_replace('@@Ui' , "\r\n", $body); - $body = strip_tags($body); - if(!$GLOBALS['_called_code_highlighter_']) { - $GLOBALS['_called_code_highlighter_'] = true; - $js_code = <<)(\n)?@i' , "\n", $body); + $body = strip_tags($body); + + if(!$GLOBALS['_called_editor_component_code_highlighter_']) { + $GLOBALS['_called_editor_component_code_highlighter_'] = true; + $js_code = << dp.SyntaxHighlighter.ClipboardSwf = '{$this->component_path}script/clipboard.swf'; -dp.SyntaxHighlighter.HighlightAll('CodeHighLighterArea'); +dp.SyntaxHighlighter.HighlightAll('code'); dpScript; - Context::addHtmlFooter($js_code); - } + Context::addHtmlFooter($js_code); + Context::addCSSFile($this->component_path.'css/SyntaxHighlighter.css'); + Context::addJsFile($this->component_path.'script/shCore.js'); + } - Context::addCSSFile($this->component_path.'css/SyntaxHighlighter.css'); + Context::addJsFile($this->component_path.'script/shBrush'.$code_type.'.js'); - Context::addJsFile($this->component_path.'script/shCore.js'); - Context::addJsFile($this->component_path.'script/shBrush'.$code_type.'.js'); - - $output = sprintf('
    %s
    ', $code_type, $body); - return $output; - } + $output = null; + if($option_file_path != null || $option_description != null) { + $output .= '
    '; + if($option_file_path != null) $output .= ''.$option_file_path.''; + if($option_description != null) $output .= ''.$option_description.''; + $output .= '
    '; + } + $output .= sprintf('
    %s
    ', $code_type.$option, $body); + return $output; + } } ?> \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/css/SyntaxHighlighter.css b/modules/editor/components/code_highlighter/css/SyntaxHighlighter.css index 0a5a67a10..1025b0057 100755 --- a/modules/editor/components/code_highlighter/css/SyntaxHighlighter.css +++ b/modules/editor/components/code_highlighter/css/SyntaxHighlighter.css @@ -1,18 +1,17 @@ .dp-highlighter { - font-family: "Consolas", "Courier New", Courier, mono, serif; + font-family: "Consolas", "Courier New", "Courier", "mono", "serif"; font-size: 12px; background-color: #E7E5DC; width: 99%; overflow: auto; - margin: 18px 0 18px 0 !important; padding-top: 1px; /* adds a little border on top when controls are hidden */ } /* clear styles */ .dp-highlighter ol, .dp-highlighter ol li, -.dp-highlighter ol li span +.dp-highlighter ol li span { margin: 0; padding: 0; @@ -60,7 +59,6 @@ { list-style: decimal; /* better look for others, override cascade from OL */ list-style-position: outside !important; - border-left: 3px solid #22AAEE; background-color: #F8F8F8; color: #5C5C5C; padding: 0 3px 0 10px !important; @@ -137,7 +135,6 @@ color: silver; background-color: #f8f8f8; padding-bottom: 10px; - border-left: 3px solid #22AAEE; } .dp-highlighter.nogutter .tools @@ -247,6 +244,7 @@ .dp-css {} .dp-css .comment { color: green; } .dp-css .string { color: red; } +.dp-css .value { color: red; } .dp-css .keyword { color: blue; } .dp-css .colors { color: darkred; } .dp-css .vars { color: #d00; } @@ -282,11 +280,31 @@ .dp-abap .datatypes { color: #2E8B57; font-weight: bold; } -pre[name='CodeHighLighterArea'] { - max-height: 200px; +pre[name='code'] { + max-height: 300px; font-size: 1.1em; border: #666666 dotted 1px; border-left: #22AAEE solid 5px; padding: 5px; overflow: auto; +} + + +.ch_infobox { + padding: 5px 0; + width: 99%; + background-color: #F8F8F8; + border-top: 1px solid #E7E5DC; +} + +.ch_infobox .file_path { + font-size: 0.9em; + font-weight: bold; + margin-left: 10px; +} + +.ch_infobox .description { + color: #AAA; + font-size: 0.9em; + margin-left: 10px; } \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/info.xml b/modules/editor/components/code_highlighter/info.xml index b887fd79a..34f7cc478 100755 --- a/modules/editor/components/code_highlighter/info.xml +++ b/modules/editor/components/code_highlighter/info.xml @@ -1,20 +1,20 @@ - + Code Highlighter コードハイライト - 代码高亮显示 + 代码高亮显示 Code Highlighter Подсветка кода - + BNU BNU - BNU + BNU BNU BNU 코드를 보기 좋게 출력합니다. ソースコードを見やすく表示します。 - 高亮显示所选代码。 - Component serving for code highlighting. + 高亮显示所选代码。 + It displays code in good shape. Компонент служащий для подсветки кода \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/lang/en.lang.php b/modules/editor/components/code_highlighter/lang/en.lang.php index 9b8960f97..99c08f1f2 100644 --- a/modules/editor/components/code_highlighter/lang/en.lang.php +++ b/modules/editor/components/code_highlighter/lang/en.lang.php @@ -6,7 +6,11 @@ **/ $lang->code_type = 'Code Type'; - $lang->used_collapse = 'Used Collapse'; - $lang->hidden_linenumber = 'Hidden Linenumber'; - $lang->hidden_controls = 'Hidden Control'; + $lang->used_collapse = 'Use Folding'; + $lang->hidden_linenumber = 'Hide Line Number'; + $lang->hidden_controls = 'Hide Toolbar'; + + $lang->file_path = 'File Path'; + $lang->description = 'Description'; + $lang->first_line = 'First Line'; ?> \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/lang/ko.lang.php b/modules/editor/components/code_highlighter/lang/ko.lang.php index 15c200172..c5acd5f60 100755 --- a/modules/editor/components/code_highlighter/lang/ko.lang.php +++ b/modules/editor/components/code_highlighter/lang/ko.lang.php @@ -9,4 +9,8 @@ $lang->used_collapse = '접기 기능 사용'; $lang->hidden_linenumber = '줄 번호 감추기'; $lang->hidden_controls = '도구바 감추기'; + + $lang->file_path = '파일경로'; + $lang->description = '설명'; + $lang->first_line = '시작 줄 번호'; ?> \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/lang/ru.lang.php b/modules/editor/components/code_highlighter/lang/ru.lang.php index 874300834..ee331ac51 100644 --- a/modules/editor/components/code_highlighter/lang/ru.lang.php +++ b/modules/editor/components/code_highlighter/lang/ru.lang.php @@ -9,4 +9,8 @@ $lang->used_collapse = 'Использованное сокращение'; $lang->hidden_linenumber = 'Скрытый номер строки'; $lang->hidden_controls = 'Скрытый контрол'; + + $lang->file_path = 'Путь файла'; + $lang->description = 'Описание'; + $lang->first_line = 'Первая строка'; ?> \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/script/shBrushCss.js b/modules/editor/components/code_highlighter/script/shBrushCss.js index 11d67fd96..db17963c8 100755 --- a/modules/editor/components/code_highlighter/script/shBrushCss.js +++ b/modules/editor/components/code_highlighter/script/shBrushCss.js @@ -5,10 +5,29 @@ * http://www.smallsharptools.com/ */ -dp.sh.Brushes.CSS=function() -{var keywords='ascent azimuth background-attachment background-color background-image background-position '+'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top '+'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color '+'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width '+'border-bottom-width border-left-width border-width border cap-height caption-side centerline clear clip color '+'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display '+'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font '+'height letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top '+'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans '+'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page '+'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position '+'quotes richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress '+'table-layout text-align text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em '+'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';var values='above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';var fonts='[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif';this.regexList=[{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'},{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'},{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'},{regex:new RegExp('\\#[a-zA-Z0-9]{3,6}','g'),css:'value'},{regex:new RegExp('(-?\\d+)(\.\\d+)?(px|em|pt|\:|\%|)','g'),css:'value'},{regex:new RegExp('!important','g'),css:'important'},{regex:new RegExp(this.GetKeywordsCSS(keywords),'gm'),css:'keyword'},{regex:new RegExp(this.GetValuesCSS(values),'g'),css:'value'},{regex:new RegExp(this.GetValuesCSS(fonts),'g'),css:'value'}];this.CssClass='dp-css';this.Style='.dp-css .value { color: black; }'+'.dp-css .important { color: red; }';} +dp.sh.Brushes.CSS=function() { +var keywords='ascent azimuth background background-attachment background-color background-image background-position background-repeat baseline bbox border border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width bottom cap-height caption-side centerline clear clip color content counter-increment counter-reset cue cue-after cue-before cursor definition-src descent direction display elevation empty-cells float font font-family font-size font-size-adjust font-stretch font-style font-variant font-weight height left letter-spacing line-height list-style list-style-image list-style-position list-style-type margin margin-top margin-right margin-bottom margin-left marker-offset marks mathline max-height max-width min-height min-width orphans outline outline-color outline-style outline-width overflow padding padding-top padding-right padding-bottom padding-left page page-break-after page-break-before page-break-inside panose-1 pause pause-after pause-before pitch pitch-range play-during position quotes richness right size slope src speak speak-header speak-numeral speak-punctuation speech-rate stemh stemv stress table-layout text-align text-decoration text-indent text-shadow text-transform top unicode-bidi unicode-range units-per-em vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index'; +var values='above absolute ActiveBorder ActiveCaption all always AppWorkspace aqua armenian attr aural auto avoid Background baseline behind below bidi-override black blink block blue bold bolder both bottom braille ButtonFace ButtonHighlight ButtonShadow ButtonText capitalize caption CaptionText center center-left center-right circle cjk-ideographic close-quote code collapse compact condensed continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia georgian gray GrayText green groove handheld hebrew help hidden hide high higher Highlight HighlightText hiragana hiragana-iroha icon InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText inline inline-table inset inside invert italic justify katakana katakana-iroha landscape large larger left left-side leftwards level lighter lime line-through list-item local loud low lower lower-alpha lowercase lower-greek lower-latin lower-roman ltr marker maroon medium Menu MenuText message-box middle mix monospace move narrower navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side rightwards rtl run-in sans-serif screen scroll Scrollbar semi-condensed semi-expanded separate se-resize serif show silent silver slow slower small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize table table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal text text-bottom text-top thick thin ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin upper-roman url visible wait white wider Window WindowFrame WindowText w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow'; +var fonts='[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier [mM]ono [gG]eneva '; + +this.regexList=[ +{regex:dp.sh.RegexLib.MultiLineCComments,css:'comment'}, +{regex:dp.sh.RegexLib.DoubleQuotedString,css:'string'}, +{regex:dp.sh.RegexLib.SingleQuotedString,css:'string'}, +{regex:new RegExp('\\#[a-zA-Z0-9]{3,6}','g'),css:'value'}, +{regex:new RegExp('(-?\\d+)(\.\\d+)?(px|em|pt|\:|\%|)','g'),css:'value'}, +{regex:new RegExp('!important','g'),css:'important'}, +{regex:new RegExp(this.GetKeywordsCSS(keywords),'gm'),css:'keyword'}, +{regex:new RegExp(this.GetValuesCSS(values),'g'),css:'value'}, +{regex:new RegExp(this.GetValuesCSS(fonts),'g'),css:'value'} +]; + +this.CssClass='dp-css'; +this.Style='.dp-css .important { color: black; }'; +} + dp.sh.Highlighter.prototype.GetKeywordsCSS=function(str) -{return'\\b([a-z_]|)'+str.replace(/ /g,'(?=:)\\b|\\b([a-z_\\*]|\\*|)')+'(?=:)\\b';} +{return'\\b([a-z_]|)'+str.replace(/ /g,'(?= ?: ?)\\b|\\b([a-z_\\*]|\\*|)')+'(?=:)\\b';} dp.sh.Highlighter.prototype.GetValuesCSS=function(str) {return'\\b'+str.replace(/ /g,'(?!-)(?!:)\\b|\\b()')+'\:\\b';} dp.sh.Brushes.CSS.prototype=new dp.sh.Highlighter();dp.sh.Brushes.CSS.Aliases=['css']; diff --git a/modules/editor/components/code_highlighter/script/shBrushPhp.js b/modules/editor/components/code_highlighter/script/shBrushPhp.js index a4fae0785..4920644d2 100755 --- a/modules/editor/components/code_highlighter/script/shBrushPhp.js +++ b/modules/editor/components/code_highlighter/script/shBrushPhp.js @@ -1,66 +1,59 @@ dp.sh.Brushes.Php = function() { - var funcs = 'abs acos acosh addcslashes addslashes '+ - 'array_change_key_case array_chunk array_combine array_count_values array_diff '+ - 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+ - 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+ - 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+ - 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+ - 'array_push array_rand array_reduce array_reverse array_search array_shift '+ - 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+ - 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+ - 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+ - 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+ - 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+ - 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+ - 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+ - 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+ - 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+ - 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+ - 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+ - 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+ - 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+ - 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+ - 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+ - 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+ - 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+ - 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+ - 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+ - 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+ - 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+ - 'parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir '+ - 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+ - 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+ - 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+ - 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+ - 'strtoupper strtr strval substr substr_compare get_magic_quotes_gpc sprintf implode'; + var funcs = 'abs acos acosh addcslashes addslashes '+ + 'array_change_key_case array_chunk array_combine array_count_values array_diff '+ + 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+ + 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+ + 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+ + 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+ + 'array_push array_rand array_reduce array_reverse array_search array_shift '+ + 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+ + 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+ + 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+ + 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+ + 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+ + 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+ + 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+ + 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+ + 'deg2rad delete ebcdic2ascii end ereg ereg_replace eregi eregi_replace error_log '+ + 'error_reporting escapeshellarg escapeshellcmd exec exp explode extension_loaded '+ + 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+ + 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+ + 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+ + 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+ + 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+ + 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+ + 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+ + 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+ + 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+ + 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+ + 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+ + 'phpinfo parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir preg_replace '+ + 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+ + 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+ + 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+ + 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+ + 'strtoupper strtr strval substr substr_compare get_magic_quotes_gpc sprintf implode'; - var keywords = 'and or xor __FILE__ __LINE__ array as break case :: ' + - 'cfunction class const continue declare default die do else ' + - 'elseif empty enddeclare endfor endforeach endif endswitch endwhile ' + - 'extends for foreach function include include_once global if ' + - 'new old_function return static switch use require require_once ' + - 'var while __FUNCTION__ __CLASS__ ' + - '__METHOD__ abstract interface public implements extends private protected throw '+ - 'NULL FALSE TRUE'; + var keywords = '__CLASS__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ abstract and array as break case catch cfunction '+ + 'class clone const continue declare default die do echo else elseif empty enddeclare endfor endforeach '+ + 'endif endswitch endwhile eval exception exit extends final for foreach function global if implements '+ + 'include include_once interface isset list new old_function or php_user_filter print private protected '+ + 'public require require_once return static switch this throw try unset use var while xor '+ + '-> :: @ TRUE FALSE NULL true false null'; + this.regexList = [ + { regex: dp.sh.RegexLib.SingleLineCComments, css: 'comment' }, // one line comments + { regex: dp.sh.RegexLib.MultiLineCComments, css: 'comment' }, // multiline comments + { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // double quoted strings + { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // single quoted strings + { regex: new RegExp('\\$[a-zA-Z0-9_]+', 'g'), css: 'vars' }, // variables + { regex: new RegExp(this.GetKeywords(funcs), 'gmi'), css: 'func' }, // functions + { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' } // keyword + ]; - var zbxe_funcs = 'moduleInstall checkUpdate moduleUpdate getModel setBrowserTitle'; - - var zbxe_class = 'ModuleObject Context'; - - this.regexList = [ - { regex: dp.sh.RegexLib.SingleLineCComments, css: 'comment' }, // one line comments - { regex: dp.sh.RegexLib.MultiLineCComments, css: 'comment' }, // multiline comments - { regex: dp.sh.RegexLib.DoubleQuotedString, css: 'string' }, // double quoted strings - { regex: dp.sh.RegexLib.SingleQuotedString, css: 'string' }, // single quoted strings - { regex: new RegExp('\\$[a-zA-Z0-9_\\-<]+', 'g'), css: 'vars' }, // variables - { regex: new RegExp(this.GetKeywords(funcs), 'gmi'), css: 'func' }, // functions - { regex: new RegExp(this.GetKeywords(keywords), 'gm'), css: 'keyword' } // keyword - ]; - - this.CssClass = 'dp-php'; + this.CssClass = 'dp-php'; } -dp.sh.Brushes.Php.prototype = new dp.sh.Highlighter(); -dp.sh.Brushes.Php.Aliases = ['php']; +dp.sh.Brushes.Php.prototype = new dp.sh.Highlighter(); +dp.sh.Brushes.Php.Aliases = ['php']; \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/script/shCore.js b/modules/editor/components/code_highlighter/script/shCore.js index 42101a2c0..df3d26060 100755 --- a/modules/editor/components/code_highlighter/script/shCore.js +++ b/modules/editor/components/code_highlighter/script/shCore.js @@ -74,6 +74,7 @@ dp.sh.Toolbar.Commands = { .replace(/</g,'<') .replace(/>/g,'>') .replace(/&/g,'&') + .replace(/ /g,' ') ; if(window.clipboardData) diff --git a/modules/editor/components/code_highlighter/tpl/popup.html b/modules/editor/components/code_highlighter/tpl/popup.html index 24435ed8f..a519c88c1 100755 --- a/modules/editor/components/code_highlighter/tpl/popup.html +++ b/modules/editor/components/code_highlighter/tpl/popup.html @@ -14,25 +14,40 @@
    {$lang->code_type} -
      -
    • - -
    • -
    + +
    {$lang->file_path} + +
    {$lang->description} + +
    {$lang->first_line} + +
    {$lang->hidden_linenumber} - -
    {$lang->hidden_controls} @@ -62,4 +71,4 @@ {$lang->about_component} - + \ No newline at end of file diff --git a/modules/editor/components/code_highlighter/tpl/popup.js b/modules/editor/components/code_highlighter/tpl/popup.js index 2505729bb..77b17cf6d 100755 --- a/modules/editor/components/code_highlighter/tpl/popup.js +++ b/modules/editor/components/code_highlighter/tpl/popup.js @@ -13,11 +13,18 @@ function getCode() { selected_node = node; var code_type = node.getAttribute('code_type'); + var file_path = node.getAttribute('file_path'); + var description = node.getAttribute('description'); + var first_line = node.getAttribute('first_line'); var collapse = node.getAttribute('collapse'); var nogutter = node.getAttribute('nogutter'); var nocontrols = node.getAttribute('nocontrols'); xGetElementById('code_type').value = code_type; + xGetElementById('file_path').value = file_path; + xGetElementById('description').value = description; + if(!first_line) xGetElementById('first_line').value = '1'; + else xGetElementById('first_line').value = first_line; if(collapse == 'Y') xGetElementById('collapse').checked = true; if(nogutter == 'Y') xGetElementById('nogutter').checked = true; if(nocontrols == 'Y') xGetElementById('nocontrols').checked = true; @@ -28,6 +35,9 @@ function insertCode() { if(typeof(opener)=='undefined') return; var code_type = xGetElementById('code_type').value; + var file_path = xGetElementById('file_path').value; + var description = xGetElementById('description').value; + var first_line = xGetElementById('first_line').value; var collapse = xGetElementById('collapse').checked; var nogutter = xGetElementById("nogutter").checked; var nocontrols = xGetElementById("nocontrols").checked; @@ -40,25 +50,16 @@ function insertCode() { if(!content) content = " "; - var text = "\n
    "+content+"
    \n
    "; + var text = "\n"+'
    '+content+'
    '+"\n
    "; if(selected_node) { selected_node.setAttribute('code_type', code_type); - if(collapse == true) { - selected_node.setAttribute('collapse', 'Y'); - } else { - selected_node.setAttribute('collapse', 'N'); - } - if(nogutter == true) { - selected_node.setAttribute('nogutter', 'Y'); - } else { - selected_node.setAttribute('nogutter', 'N'); - } - if(nocontrols == true && collapse == false) { - selected_node.setAttribute('nocontrols', 'Y'); - } else { - selected_node.setAttribute('nocontrols', 'N'); - } + selected_node.setAttribute('file_path', file_path); + selected_node.setAttribute('description', description); + selected_node.setAttribute('first_line', first_line); + selected_node.setAttribute("collapse", collapse); + selected_node.setAttribute('nogutter', nogutter); + selected_node.setAttribute('nocontrols', nocontrols); selected_node.setAttribute('style', style); opener.editorFocus(opener.editorPrevSrl); diff --git a/modules/editor/skins/default/css/editor.css b/modules/editor/skins/default/css/editor.css index 75b180997..179ecf9ae 100644 --- a/modules/editor/skins/default/css/editor.css +++ b/modules/editor/skins/default/css/editor.css @@ -1,40 +1,40 @@ @charset "utf-8"; .xeEditor { } -.xeEditor .optionABC { clear:both; width:100%; border-bottom:1px solid #c2c2c2; overflow:hidden; background:#ffffff url(../images/bgBoardEditorOption.gif) no-repeat -3px bottom;} +.xeEditor .optionABC { clear:both; width:100%; overflow:hidden; background:transparent;} .xeEditor .optionABC .selectGroup { white-space:nowrap; display:block; height:21px; margin:0 .5em 0 0; padding-left:1em; float:left;} .xeEditor .optionABC .buttonGroup { white-space:nowrap; position:relative; display:block; margin:0 .5em 0 0; float:left; height:21px; overflow:hidden; padding-left:2px;} .xeEditor .optionABC .buttonGroup img { float:left; display:block; margin-left:-1px; cursor:pointer;} .xeEditor .optionA, .xeEditor .optionB, -.xeEditor .optionC { float:left; background:#ffffff url(../images/bgBoardEditorOption.gif) no-repeat left bottom; padding:.5em 0 .5em .7em; overflow:hidden;} +.xeEditor .optionC { float:left; background:transparent; padding:.5em 0 .5em .7em; overflow:hidden;} .xeEditor .optionA *, .xeEditor .optionB *, .xeEditor .optionC * { vertical-align:middle;} .xeEditor .optionA { background-position:-3px bottom; padding-left:0;} .xeEditor .optionA select option { font-size:.9em; } -.xeEditor .optionDE { width:100%; clear:both; overflow:hidden; background:#f8f8f8; border-bottom:1px solid #e1e1e1; height:29px;} +.xeEditor .optionDE { width:100%; clear:both; overflow:hidden; background:transparent;height:29px;} .xeEditor .optionDE .buttonGroup { white-space:nowrap; position:relative; display:block; float:left; height:21px; overflow:hidden; padding-left:2px;} .xeEditor .optionDE img { float:left; display:block; margin-right:.5em; cursor:pointer;} .xeEditor .optionD { padding:.5em 0 .5em .8em; overflow:hidden; float:left; border-right:1px solid #e0e0e0;} -.xeEditor .optionE { padding:4px 0 0 8px; overflow:hidden; border-left:1px solid #ffffff; float:left;} +.xeEditor .optionE { padding:4px 0 0 9px; overflow:hidden; float:left;} -.xeEditor .editorInfo { background:#fbfbfb; padding:.5em; border:1px solid #e1e1dd; color:#999999; position:relative; margin:5px 20px 0 20px;} +.xeEditor .editorInfo { background:transparent; padding:.5em; border:1px solid #e1e1dd; color:#999999; position:relative; margin:5px 20px 0 20px;} .xeEditor .close { cursor:pointer; position:absolute; top:3px; right:3px; _top:3px; _right:25px;} -.xeEditor .editor_iframe_box { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:5px; margin:10px 20px 10px 20px; } +.xeEditor .editor_iframe_box { clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:3px; margin:3px 10px 5px 10px; } .xeEditor .editor_iframe_textarea { background:#ffffff; clear:both; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; padding:.5em; margin:0 20px 0 20px; width:100%; font-size:1em; display:none;} .xeEditor .textAreaDragIndicator { text-align:center; background:url(../images/lineTextAreaDrag.gif) repeat-x left center; padding:5px 0 5px 0; } .xeEditor .textAreaDragIndicatorBar { background:url(../images/buttonTextAreaDrag.gif) no-repeat center; cursor:move;height:14px;} -.xeEditor .editor_info { clear:both; padding:10px 20px 5px 20px; overflow:hidden;} +.xeEditor .editor_info { clear:both; padding:5px 20px 0 10px; overflow:hidden;} .xeEditor .editor_info .editor_option { float:left; color:#888888; } .xeEditor .editor_info .editor_autosaved_message { color:#888888; float:right; } .xeEditor .inputTypeTextArea { background:#fbfbfb; padding:1em; width:94%;} .xeEditor #textAreaDrag {} .xeEditor .fileAttach { padding:0 1em .5em 1em;} -.xeEditor .fileAttach .preview { padding:5px; width:110px; height:110px; border:1px solid #e1e1dd; background:#fbfbfb; float:left; margin-right:.5em;} +.xeEditor .fileAttach .preview { padding:5px; width:110px; height:110px; border:1px solid #e1e1dd; background:transparent; float:left; margin-right:.5em;} .xeEditor .fileAttach .preview img { width:110px; height:110px; float:left; display:block;} .xeEditor .fileAttach .fileListArea { float:left; width:50%; margin-right:.7em; padding-bottom:.5em; margin-bottom:1em} .xeEditor .fileAttach .fileListArea .fileList { overflow:auto; width:100%; height:auto; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; margin-bottom:.3em; font-size:11px;} diff --git a/modules/editor/skins/default/editor.html b/modules/editor/skins/default/editor.html index 50a3b2392..93e00e0f7 100644 --- a/modules/editor/skins/default/editor.html +++ b/modules/editor/skins/default/editor.html @@ -144,7 +144,7 @@ -
    +
    diff --git a/modules/editor/tpl/admin_index.html b/modules/editor/tpl/admin_index.html index e6a30d977..fb39500f0 100644 --- a/modules/editor/tpl/admin_index.html +++ b/modules/editor/tpl/admin_index.html @@ -3,13 +3,60 @@

    {$lang->editor} {$lang->cmd_management}

    +------+++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ diff --git a/modules/editor/tpl/js/editor.js b/modules/editor/tpl/js/editor.js index ea8a802b1..1bdc45875 100755 --- a/modules/editor/tpl/js/editor.js +++ b/modules/editor/tpl/js/editor.js @@ -122,7 +122,7 @@ function editorStart(editor_sequence, primary_key, content_key, editor_height) { ''+ ''+ ''+ ''+ diff --git a/modules/editor/tpl/js/editor_common.js b/modules/editor/tpl/js/editor_common.js index 82be98651..690a9164c 100644 --- a/modules/editor/tpl/js/editor_common.js +++ b/modules/editor/tpl/js/editor_common.js @@ -14,7 +14,12 @@ xAddEventListener(document, 'mousedown', editorDragStart); xAddEventListener(document, 'mouseup', editorDragStop); function editorGetContent(editor_sequence) { - return editorRelKeys[editor_sequence]["func"](editor_sequence); + // 입력된 내용을 받아옴 + var content = editorRelKeys[editor_sequence]["func"](editor_sequence); + + // 첨부파일 링크시 url을 변경 + var reg_pattern = new RegExp( request_uri.replace(/\//g,'\\/')+"(files|common|modules|layouts|widgets)", 'ig' ); + return content.replace(reg_pattern, "$1"); } // 에디터에 포커스를 줌 diff --git a/modules/file/file.admin.view.php b/modules/file/file.admin.view.php index 47de2c004..91a79ec99 100644 --- a/modules/file/file.admin.view.php +++ b/modules/file/file.admin.view.php @@ -54,12 +54,63 @@ } } + // 목록의 loop를 돌면서 document를 구하기 + $file_count = count($output->data); + if($file_count) { + $document_srl_list = array(); + + foreach($output->data as $val) { + $comment_srl = $val->upload_target_srl; + if(!in_array($comment_srl, $document_srl_list)) $document_srl_list[] = $comment_srl; + } + + // comment를 먼저 구해서 document_srl을 구함 + if(count($document_srl_list)) { + $args->comment_srls = implode(',', $document_srl_list); + $comment_output = executeQuery('comment.getComments', $args); + if($comment_output->data && !is_array($comment_output->data)) { + $comment_output->data = array($comment_output->data); + } + + if($comment_output->data) { + for($i = 0; $i < count($comment_output->data); $i++) { + $comment_info = $comment_output->data[$i]; + $comment_list[$comment_info->comment_srl] = $comment_info; + } + + foreach($output->data as $val) { + $val->target_document_srl = $comment_list[$val->upload_target_srl]->document_srl; + } + + foreach($comment_output->data as $val) { + $document_srl = $val->document_srl; + if(!in_array($document_srl, $document_srl_list)) $document_srl_list[] = $document_srl; + } + } + } + + // document를 구함 + if(count($document_srl_list)) { + $args->document_srls = implode(',', $document_srl_list); + $document_output = executeQuery('document.getDocuments', $args); + if($document_output->data && !is_array($document_output->data)) { + $document_output->data = array($document_output->data); + } + + for($i = 0; $i < count($document_output->data); $i++) { + $document_info = $document_output->data[$i]; + $document_list[$document_info->document_srl] = $document_info; + } + } + } + Context::set('total_count', $output->total_count); Context::set('total_page', $output->total_page); Context::set('page', $output->page); Context::set('file_list', $output->data); Context::set('page_navigation', $output->page_navigation); Context::set('module_list', $module_list); + Context::set('document_list', $document_list); // 템플릿 지정 $this->setTemplatePath($this->module_path.'tpl'); diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 53644d852..2251ef339 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -90,17 +90,89 @@ $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"); - fpassthru($fp); + 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); + } // 이상이 없으면 download_count 증가 $args->file_srl = $file_srl; @@ -109,6 +181,8 @@ // trigger 호출 (after) $output = ModuleHandler::triggerCall('file.downloadFile', 'after', $file_obj); + Context::close(); + exit(); } @@ -308,6 +382,8 @@ $output->add('file_srl', $args->file_srl); $output->add('file_size', $args->file_size); + $output->add('sid', $args->sid); + $output->add('direct_download', $args->direct_download); $output->add('source_filename', $args->source_filename); $output->add('upload_target_srl', $upload_target_srl); return $output; diff --git a/modules/file/lang/en.lang.php b/modules/file/lang/en.lang.php index 04f969d32..9a571770a 100644 --- a/modules/file/lang/en.lang.php +++ b/modules/file/lang/en.lang.php @@ -12,14 +12,14 @@ $lang->status = 'Status'; $lang->is_valid = 'Valid'; $lang->is_stand_by = 'Stand by'; - $lang->file_list = 'Attachments list'; - $lang->allowed_filesize = 'File size limit'; - $lang->allowed_attach_size = 'Total size limit'; - $lang->allowed_filetypes = 'Allowed extensions'; + $lang->file_list = 'Attachments List'; + $lang->allowed_filesize = 'Max Filesize'; + $lang->allowed_attach_size = 'Max Attachments'; + $lang->allowed_filetypes = 'Allowed Extensions'; $lang->enable_download_group = 'Download allowed groups'; - $lang->about_allowed_filesize = 'You can assign file size limit for each file. (Excluding administrators)'; - $lang->about_allowed_attach_size = 'You can assign file size limit for each document. (Excluding administrators)'; + $lang->about_allowed_filesize = 'You can assign file size limit for each file. (Exclude administrators)'; + $lang->about_allowed_attach_size = 'You can assign file size limit for each document. (Exclude administrators)'; $lang->about_allowed_filetypes = 'Only allowed extentsions can be attached. To allow an extension, use "*.extention". To allow multiple extensions, use ";" between each extension.
    ex) *.* or *.jpg;*.gif;
    (Exclude Administrators)'; $lang->cmd_delete_checked_file = 'Delete Selected'; @@ -29,13 +29,13 @@ $lang->msg_not_permitted_download = 'You do not have any permission to download'; $lang->msg_cart_is_null = 'Please select file(s) to delete'; $lang->msg_checked_file_is_deleted = 'Total of %d attachment(s) was(were) deleted'; - $lang->msg_exceeds_limit_size = 'Attachedment failed due to the excess of file size'; + $lang->msg_exceeds_limit_size = 'Attachment failed due to the excess of file size'; $lang->search_target_list = array( 'filename' => 'File name', 'filesize' => 'File size (byte, Over)', 'download_count' => 'Downloads (Over)', - 'regdate' => 'Date', + 'regdate' => 'Registered Date', 'ipaddress' => 'IP Address', ); ?> diff --git a/modules/file/tpl/css/file_list.css b/modules/file/tpl/css/file_list.css new file mode 100644 index 000000000..cee8c1a57 --- /dev/null +++ b/modules/file/tpl/css/file_list.css @@ -0,0 +1,5 @@ +@charset "utf-8"; + +.adminTable tr.bg1 td { + background-color: #FAFAFA; +} \ No newline at end of file diff --git a/modules/file/tpl/file_list.html b/modules/file/tpl/file_list.html index a37840805..91ff04536 100644 --- a/modules/file/tpl/file_list.html +++ b/modules/file/tpl/file_list.html @@ -1,5 +1,6 @@ +
    @@ -11,15 +12,72 @@
    {$lang->component_name}
    +-+++++++ + +--++++++ + ++++++++++ + ++++++++++ + ++++++++++ + ++++++++++ @@ -45,11 +103,29 @@ + + + {@ $document_srl = $val->target_document_srl} + {@ $move_uri = './?mid='.$module_list[$val->module_srl]->mid.'&document_srl='.$document_srl.'#comment_'.$val->upload_target_srl} + + {@ $document_srl = $val->upload_target_srl} + {@ $move_uri = './?mid='.$module_list[$val->module_srl]->mid.'&document_srl='.$val->upload_target_srl} + + {@ $cur_upload_target_srl = $val->upload_target_srl} + + + + @@ -63,7 +139,10 @@ - + + @@ -80,12 +159,12 @@
    {$lang->no}
    + + {$lang->cmd_save} + + {$module_list[$val->module_srl]->browser_title} - {htmlspecialchars($document_list[$document_srl]->title)} + +
    {$no} - {$module_list[$val->module_srl]->browser_title}
    {htmlspecialchars($val->source_filename)}
    {$val->file_size}{$val->download_count} {zdate($val->regdate,"Y-m-d")} {$val->ipaddress}{$lang->cmd_move} + + {$lang->cmd_move}
    - - - - - - - - - - - - - - - - - - -
    {$lang->target}
    {$val->title} - - grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - - - {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    - -
    + +++++ + + + + + + + + + + + + + +
    {$lang->target}
    {$val->title} + + grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> + + + {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    + +
    diff --git a/modules/guestbook/tpl/guestbook_insert.html b/modules/guestbook/tpl/guestbook_insert.html index 6dc1db223..9a8538403 100644 --- a/modules/guestbook/tpl/guestbook_insert.html +++ b/modules/guestbook/tpl/guestbook_insert.html @@ -18,7 +18,7 @@
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->browser_title} - +

    {$lang->about_browser_title}

    + ++++++++ + ++++++++ + ++++++++ ++++ ++++++++ ++++++++ @@ -55,7 +102,7 @@ {htmlspecialchars($val->browser_title)} - + diff --git a/modules/guestbook/tpl/skin_info.html b/modules/guestbook/tpl/skin_info.html index dcba9c4b5..ba3dabb65 100644 --- a/modules/guestbook/tpl/skin_info.html +++ b/modules/guestbook/tpl/skin_info.html @@ -58,10 +58,10 @@
    {$lang->no} {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_view} {$lang->cmd_copy} {$lang->cmd_delete}
    {$val->title} - + - + + - + - + + + + + + + + + - +
    {$lang->import_step_title[1]} - {$lang->import_step_desc[1]}
    {$lang->about_type_module}
    {$lang->about_type_member}
    {$lang->about_type_syncmember}
    @@ -37,98 +44,3 @@ - - - - - - - - - - - - - - diff --git a/modules/importer/tpl/js/importer_admin.js b/modules/importer/tpl/js/importer_admin.js index 8b6077718..4df22c5b5 100644 --- a/modules/importer/tpl/js/importer_admin.js +++ b/modules/importer/tpl/js/importer_admin.js @@ -3,135 +3,243 @@ * @author zero (zero@nzeo.com) * @brief importer에서 사용하는 javascript **/ - -/* Step 1 처리 */ -function completeStep1(ret_obj) { - var error = ret_obj['error']; - var message = ret_obj['message']; - var next_step = ret_obj['next_step']; - var module_list = ret_obj['module_list']; - - if(module_list) { - var sel = xGetElementById("target_module"); - var module_list_arr = module_list.split("\n"); - for(var i=0;i0) { - var module_srl = sel_module.options[sel_module.selectedIndex].value; - fo_obj.module_srl.value = module_srl; - } - - var sel_category = xGetElementById("target_category"); - if(sel_category.options.length>1) { - var category_srl = sel_category.options[sel_category.selectedIndex].value; - fo_obj.category_srl.value = category_srl; - } - - var target_path = xGetElementById("target_path").value; - fo_obj.target_path.value = target_path; - - procFilter(fo_obj, import_xml); - - - xGetElementById('step2_status').style.display = 'block'; - return false; -} - -/* Step Complete Import */ -function completeImport(ret_obj) { - var message = ret_obj['message']; - var is_finished = ret_obj['is_finished']; - var position = ret_obj['position']; - var file_point = ret_obj['file_point']; - var total_count = ret_obj['total_count']; - - if(total_count>0) { - var bar = xGetElementById('bar'); - var status = xGetElementById('bar_status'); - var per = parseInt(position/total_count*100,10) - xInnerHtml(status, position+'/'+total_count+' ('+per+'%)'); - bar.style.width = per+'%'; - } - - if(is_finished=='Y') { - alert(ret_obj["message"]); - location.href = location.href; - } else { - var fo_obj = xGetElementById('fo_step2'); - fo_obj.position.value = position; - fo_obj.file_point.value = file_point; - fo_obj.total_count.value = total_count; - message = message.replace(/</g,"<").replace(/>/g,">"); - - var obj = xGetElementById('step2_position'); - var txt = xInnerHtml(obj); - if(txt.length > 1024*10) txt = ''; - if(message != "success") xInnerHtml(obj, txt+message); - obj.scrollTop += xHeight(obj); - procFilter(fo_obj, import_xml); - } -} - -function doManualProcess() { - var fo_obj = xGetElementById('fo_step2'); - procFilter(fo_obj, import_xml); -} - /* 회원정보와 게시물의 싱크 */ -function doStep3(fo_obj) { - exec_xml('importer','procImporterAdminSync', new Array(), completeStep3); +function doSync(fo_obj) { + exec_xml('importer','procImporterAdminSync', new Array(), completeSync); return false; } -function completeStep3(ret_obj) { +function completeSync(ret_obj) { alert(ret_obj['message']); location.href=location.href; } + + +/* 회원정보 데이터 import */ +function doImportMember(fo_obj) { + var xml_file = fo_obj.xml_file.value; + if(!xml_file) return false; + + var params = new Array(); + params['xml_file'] = xml_file; + params['total_count'] = fo_obj.total_count.value; + params['success_count'] = fo_obj.success_count.value; + params['readed_line'] = fo_obj.readed_line.value; + + var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished"); + + exec_xml('importer','procImporterAdminMemberImport', params, completeImportMember, response_tags); + + return false; +} + +function completeImportMember(ret_obj) { + var total_count = ret_obj['total_count']; + var success_count = ret_obj['success_count']; + var readed_line = ret_obj['readed_line']; + var is_finished = ret_obj['is_finished']; + + if(is_finished == '1') { + var fo_obj = xGetElementById("fo_import"); + fo_obj.total_count.value = 0; + fo_obj.success_count.value = 0; + fo_obj.readed_line.value = 0; + fo_obj.xml_file.disabled = false; + xGetElementById("status").style.display = "none"; + xGetElementById("status_button_prev").style.display = "block"; + xGetElementById("status_button").style.display = "none"; + + + xInnerHtml("status", ret_obj['message']); + alert(ret_obj['message']); + } else { + var fo_obj = xGetElementById("fo_import"); + fo_obj.total_count.value = total_count; + fo_obj.success_count.value = success_count; + fo_obj.readed_line.value = readed_line; + fo_obj.xml_file.disabled = true; + xGetElementById("status").style.display = "block"; + xGetElementById("status_button_prev").style.display = "none"; + xGetElementById("status_button").style.display = "block"; + xInnerHtml("status", ret_obj['message']); + + doImportMember(fo_obj); + } +} + +/* 쪽지 데이터 import */ +function doImportMessage(fo_obj) { + var xml_file = fo_obj.xml_file.value; + if(!xml_file) return false; + + var params = new Array(); + params['xml_file'] = xml_file; + params['total_count'] = fo_obj.total_count.value; + params['success_count'] = fo_obj.success_count.value; + params['readed_line'] = fo_obj.readed_line.value; + + var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished"); + + exec_xml('importer','procImporterAdminMessageImport', params, completeImportMessage, response_tags); + + return false; +} + +function completeImportMessage(ret_obj) { + var total_count = ret_obj['total_count']; + var success_count = ret_obj['success_count']; + var readed_line = ret_obj['readed_line']; + var is_finished = ret_obj['is_finished']; + + if(is_finished == '1') { + var fo_obj = xGetElementById("fo_import"); + fo_obj.total_count.value = 0; + fo_obj.success_count.value = 0; + fo_obj.readed_line.value = 0; + fo_obj.xml_file.disabled = false; + xGetElementById("status").style.display = "none"; + xGetElementById("status_button_prev").style.display = "block"; + xGetElementById("status_button").style.display = "none"; + + + xInnerHtml("status", ret_obj['message']); + alert(ret_obj['message']); + } else { + var fo_obj = xGetElementById("fo_import"); + fo_obj.total_count.value = total_count; + fo_obj.success_count.value = success_count; + fo_obj.readed_line.value = readed_line; + fo_obj.xml_file.disabled = true; + xGetElementById("status").style.display = "block"; + xGetElementById("status_button_prev").style.display = "none"; + xGetElementById("status_button").style.display = "block"; + xInnerHtml("status", ret_obj['message']); + + doImportMessage(fo_obj); + } +} + +/* 모듈 데이터 import */ +function doImportModule(fo_obj) { + var target_module = fo_obj.target_module.options[fo_obj.target_module.selectedIndex].value; + if(!target_module) return false; + + var xml_file = fo_obj.xml_file.value; + if(!xml_file) return false; + + var params = new Array(); + params['xml_file'] = xml_file; + params['target_module'] = target_module; + params['total_count'] = fo_obj.total_count.value; + params['success_count'] = fo_obj.success_count.value; + params['readed_line'] = fo_obj.readed_line.value; + + var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished"); + + exec_xml('importer','procImporterAdminModuleImport', params, completeImportModule, response_tags); + + return false; +} + +function completeImportModule(ret_obj, response_tags) { + var total_count = ret_obj['total_count']; + var success_count = ret_obj['success_count']; + var readed_line = ret_obj['readed_line']; + var is_finished = ret_obj['is_finished']; + + if(is_finished == '1') { + var fo_obj = xGetElementById("fo_import"); + fo_obj.target_module.disabled = false; + fo_obj.xml_file.disabled = false; + fo_obj.total_count.value = 0; + fo_obj.success_count.value = 0; + fo_obj.readed_line.value = 0; + + xGetElementById("status").style.display = "none"; + xGetElementById("status_button_prev").style.display = "block"; + xGetElementById("status_button").style.display = "none"; + + + xInnerHtml("status", ret_obj['message']); + + alert(ret_obj['message']); + } else { + var fo_obj = xGetElementById("fo_import"); + fo_obj.target_module.disabled = true; + fo_obj.xml_file.disabled = true; + fo_obj.total_count.value = total_count; + fo_obj.success_count.value = success_count; + fo_obj.readed_line.value = readed_line; + + xGetElementById("status").style.display = "block"; + xGetElementById("status_button_prev").style.display = "none"; + xGetElementById("status_button").style.display = "block"; + + xInnerHtml("status", ret_obj['message']); + + doImportModule(fo_obj); + } +} + +/* TTXML 데이터 import */ +function doImportTTXML(fo_obj) { + var target_module = fo_obj.target_module.options[fo_obj.target_module.selectedIndex].value; + if(!target_module) return false; + + var xml_file = fo_obj.xml_file.value; + if(!xml_file) return false; + + var params = new Array(); + params['xml_file'] = xml_file; + params['target_module'] = target_module; + params['total_count'] = fo_obj.total_count.value; + params['success_count'] = fo_obj.success_count.value; + params['readed_line'] = fo_obj.readed_line.value; + params['user_id'] = fo_obj.user_id.value; + + var response_tags = new Array("error","message", "total_count", "success_count", "readed_line", "is_finished"); + + exec_xml('importer','procImporterAdminTTXMLImport', params, completeImportTTXML, response_tags); + + return false; +} + +function completeImportTTXML(ret_obj, response_tags) { + var total_count = ret_obj['total_count']; + var success_count = ret_obj['success_count']; + var readed_line = ret_obj['readed_line']; + var is_finished = ret_obj['is_finished']; + + if(is_finished == '1') { + var fo_obj = xGetElementById("fo_import"); + fo_obj.target_module.disabled = false; + fo_obj.xml_file.disabled = false; + fo_obj.total_count.value = 0; + fo_obj.success_count.value = 0; + fo_obj.readed_line.value = 0; + + xGetElementById("status").style.display = "none"; + xGetElementById("status_button_prev").style.display = "block"; + xGetElementById("status_button").style.display = "none"; + + + xInnerHtml("status", ret_obj['message']); + + alert(ret_obj['message']); + } else { + var fo_obj = xGetElementById("fo_import"); + fo_obj.target_module.disabled = true; + fo_obj.xml_file.disabled = true; + fo_obj.total_count.value = total_count; + fo_obj.success_count.value = success_count; + fo_obj.readed_line.value = readed_line; + + xGetElementById("status").style.display = "block"; + xGetElementById("status_button_prev").style.display = "none"; + xGetElementById("status_button").style.display = "block"; + + xInnerHtml("status", ret_obj['message']); + + doImportTTXML(fo_obj); + } +} diff --git a/modules/importer/tpl/member.html b/modules/importer/tpl/member.html new file mode 100644 index 000000000..f844605ad --- /dev/null +++ b/modules/importer/tpl/member.html @@ -0,0 +1,33 @@ + + + +

    {$lang->importer} {$lang->cmd_management}

    + +
    {nl2br($lang->about_importer)}
    + +
    +
    + + + + + + + + + + + + +
    {$lang->import_step_title[2]} - {$lang->import_step_desc[2]}
    + +

    ex1) ../member.xml

    +

    ex2) http://...../member.xml

    +
    +
    + +
    + + +
    +
    diff --git a/modules/importer/tpl/message.html b/modules/importer/tpl/message.html new file mode 100644 index 000000000..928860723 --- /dev/null +++ b/modules/importer/tpl/message.html @@ -0,0 +1,33 @@ + + + +

    {$lang->importer} {$lang->cmd_management}

    + +
    {nl2br($lang->about_importer)}
    + +
    +
    + + + + + + + + + + + + +
    {$lang->import_step_title[2]} - {$lang->import_step_desc[2]}
    + +

    ex1) ../message.xml

    +

    ex2) http://...../message.xml

    +
    +
    + +
    + + +
    +
    diff --git a/modules/importer/tpl/module.html b/modules/importer/tpl/module.html new file mode 100644 index 000000000..097930a02 --- /dev/null +++ b/modules/importer/tpl/module.html @@ -0,0 +1,51 @@ + + + +

    {$lang->importer} {$lang->cmd_management}

    + + +
    {nl2br($lang->about_importer)}
    + + +
    +
    + + + + + + + + + +
    {$lang->import_step_title[1]} - {$lang->import_step_desc[12]}
    + +
    + + + + + + + + + +
    {$lang->import_step_title[2]} - {$lang->import_step_desc[2]}
    + +

    ex1) ../module.xml

    +

    ex2) http://...../module.xml

    +
    +
    + +
    + + + +
    +
    + diff --git a/modules/importer/tpl/sync.html b/modules/importer/tpl/sync.html new file mode 100644 index 000000000..6068c5b91 --- /dev/null +++ b/modules/importer/tpl/sync.html @@ -0,0 +1,16 @@ + + + +

    {$lang->importer} {$lang->cmd_management}

    + + +
    {nl2br($lang->about_importer)}
    + +
    + + + + + +
    {$lang->import_step_title[3]} - {$lang->import_step_desc[3]}
    +
    diff --git a/modules/importer/tpl/ttxml.html b/modules/importer/tpl/ttxml.html new file mode 100644 index 000000000..8ee123b82 --- /dev/null +++ b/modules/importer/tpl/ttxml.html @@ -0,0 +1,60 @@ + + + +

    {$lang->importer} {$lang->cmd_management}

    + + +
    {nl2br($lang->about_importer)}
    + + +
    +
    + + + + + + + + + +
    {$lang->import_step_title[1]} - {$lang->import_step_desc[12]}
    + +
    + + + + + +
    + {$lang->user_id} : +

    {$lang->about_ttxml_user_id}

    +
    + + + + + + + + + +
    {$lang->import_step_title[2]} - {$lang->import_step_desc[2]}
    + +

    ex1) ../module.xml

    +

    ex2) http://...../module.xml

    +
    +
    + +
    + + + +
    +
    + diff --git a/modules/install/lang/jp.lang.php b/modules/install/lang/jp.lang.php index 1ba7afde7..6f2be8c80 100644 --- a/modules/install/lang/jp.lang.php +++ b/modules/install/lang/jp.lang.php @@ -220,23 +220,23 @@ EndOfLicense; ); $lang->install_checklist_xml = 'XMLライブラリのインストール'; - $lang->install_without_xml = 'XMLライブラリがインストールされていません'; + $lang->install_without_xml = 'XMLライブラリがインストールされていません。'; $lang->install_checklist_gd = 'GDライブラリのインストール'; - $lang->install_without_gd = 'イメージ変換用のGDライブラリがインストールされていません'; + $lang->install_without_gd = 'イメージ変換用のGDライブラリがインストールされていません。'; $lang->install_checklist_gd = 'GDライブラリのインストール'; - $lang->install_without_iconv = '文字列処理のための「iconv」ライブラリがインストールされていません'; - $lang->install_session_auto_start = 'PHPの設定で「session.auto_start==1」 にするとセッション処理に問題が発生することがあります'; - $lang->install_permission_denied = 'インストールする対象のディレクトリのパーミッションが「707」になっていません'; + $lang->install_without_iconv = '文字列処理のための「iconv」ライブラリがインストールされていません。'; + $lang->install_session_auto_start = 'PHPの設定で「session.auto_start==1」 にするとセッション処理に問題が発生することがあります。'; + $lang->install_permission_denied = 'インストールする対象のディレクトリのパーミッションが「707」になっていません。'; - $lang->cmd_agree_license = 'ライセンスに同意します'; + $lang->cmd_agree_license = 'ライセンスに同意します。'; $lang->cmd_install_fix_checklist = 'インストールするための必須条件を設定しました。'; - $lang->cmd_install_next = 'インストールを続けます'; + $lang->cmd_install_next = 'インストールを続けます。'; $lang->db_desc = array( - 'mysql' => 'MySQL DBで PHPの「mysql*()」関数を利用してデータの入出力を行います。DBは「myisam」タイプで作成されるため、トランザクション処理はできません。', - 'mysql_innodb' => 'MySQL DBで「innodb」タイプでデータの入出力を行います。「innodb」ではトランザクションの処理が行えます。', - 'sqlite2' => 'ファイルタイプデータベースである「sqlite2」をサポートします。インストールの際は、DBファイルはウェブがらアクセスできない場所に作成してください。(安定化までのテストは行われていません)', - 'sqlite3_pdo' => 'PHPのPDOを経由うして「sqlite3」をサポートします。インストールの際は、ウェブからアクセスできない場所に作成してください。', + 'mysql' => 'MySQL DBで PHPの「mysql*()」関数を利用してデータの入出力を行います。
    DBは「myisam」タイプで作成されるため、トランザクション処理はできません。', + 'mysql_innodb' => 'MySQL DBで「innodb」タイプでデータの入出力を行います。
    「innodb」ではトランザクションの処理が行えます。', + 'sqlite2' => 'ファイルタイプデータベースである「sqlite2」をサポートします。
    インストールの際は、DBファイルはウェブがらアクセスできない場所に作成してください。
    (安定化までのテストは行われていません)', + 'sqlite3_pdo' => 'PHPのPDOを経由うして「sqlite3」をサポートします。
    インストールの際は、DBファイルはウェブからアクセスできない場所に生成してください。', 'cubrid' => 'CUBRID DBを利用します。', 'postgresql' => 'PostgreSql DBを利用します。', ); @@ -257,11 +257,11 @@ EndOfLicense; $lang->env_title = '環境設定'; $lang->use_optimizer = 'オプティマイザ使用'; - $lang->about_optimizer = 'オプティマイザを使用すると多数の「CSS/ JS」ファイルを、統合圧縮してから転送するため、レスポンスが早くなります。但し、CSSまたはJSファイルによっては問題が生じる場合があります。この場合は、チェックを外すと正常に動作します。'; - $lang->use_rewrite = 'リライトモジュール使用'; - $lang->about_rewrite = 'Webサーバで「リライトモジュール(mod_rewrite)」をサポートしている場合は、「http://アドレス/?document_srl=123」のようなアドレスを「http://アドレス/123」のように簡単にすることができます。'; + $lang->about_optimizer = 'オプティマイザを使用すると多数の「CSS/ JS」ファイルを、統合・圧縮して転送するため、レスポンスが早くなります。
    但し、CSSまたはJSファイルによっては問題が生じる場合があります。この場合は、チェックを外すと正常に動作します。'; + $lang->use_rewrite = 'リライト・モジュールを使用'; + $lang->about_rewrite = 'Webサーバで「リライト・モジュール(mod_rewrite)」をサポートしている場合は、「http://アドレス/?document_srl=123」のようなアドレスを「http://アドレス/123」のように動的だけど静的なページに見せることができます。'; $lang->time_zone = 'タイムゾーン'; - $lang->about_time_zone = 'サーバの設定時間とサービスしているローカル時間との差が生じる場合、タイムゾーンを指定すれば、表示時間をWebサービスをしているローカル時間に設定できます。'; + $lang->about_time_zone = 'サーバの設定時間とサービスしているローカル時間との差が生じる場合、タイムゾーンを指定すれば、表示時間を指定したところの時間に設定できます。'; $lang->about_database_file = 'Sqliteはファイルにデータを保存します。そのため、データベースファイルにはウェブからアクセスできない場所にしなければなりません。
    データファイルのパーミッションは「707」に設定してください。'; @@ -270,7 +270,7 @@ EndOfLicense; $lang->msg_cannot_proc = 'インストールできる環境が整っていないため、リクエストを実行できませんでした。'; $lang->msg_already_installed = '既にインストールされています。'; - $lang->msg_dbconnect_failed = "データベースの接続エラーです。\nデータベースの情報をもう一度確認してください。"; + $lang->msg_dbconnect_failed = "データベースアクセスにエラーが発生しました。\nデータベースの情報をもう一度確認してください。"; $lang->msg_table_is_exists = "既にデータベースにデーブルが作成されています。\nconfigファイルを再作成しました。"; $lang->msg_install_completed = "インストールが完了しました。\nありがとうございます。"; $lang->msg_install_failed = "インストールファイルを作成する際にエラーが発生しました。"; diff --git a/modules/integration_search/tpl/skin_info.html b/modules/integration_search/tpl/skin_info.html index dedfc1f8f..8db35f5fe 100644 --- a/modules/integration_search/tpl/skin_info.html +++ b/modules/integration_search/tpl/skin_info.html @@ -59,10 +59,10 @@
    {$val->title} - + - + +-++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ @@ -26,10 +73,10 @@ - diff --git a/modules/layout/tpl/index.html b/modules/layout/tpl/index.html index 0abb11f9e..a09e57c39 100644 --- a/modules/layout/tpl/index.html +++ b/modules/layout/tpl/index.html @@ -9,13 +9,60 @@
    {$lang->layout_name}
    + {$val->title}
    ({$val->layout}) - +
    {$val->version} {$val->author->name} {$val->menu_count}
    +----++++++ ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ diff --git a/modules/lifepod/conf/info.xml b/modules/lifepod/conf/info.xml index 390c7b35e..75255bf2c 100644 --- a/modules/lifepod/conf/info.xml +++ b/modules/lifepod/conf/info.xml @@ -1,11 +1,16 @@ - + 라이프팟 연동 Lifepod + Lifepod連動 + Лайфпод haneul - haneul + haneul + haneul 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. - This module displays calendar from lifepod. + This module displays calendar from lifepod. + (Openmaru社提供の)LifepodサービスのカレンダーをゼロボードXEに連動して出力するモジュールです。 + Этот модуль отображает календать с lifepod'а. diff --git a/modules/lifepod/lang/en.lang.php b/modules/lifepod/lang/en.lang.php index cbb72cb83..c77d06ae1 100644 --- a/modules/lifepod/lang/en.lang.php +++ b/modules/lifepod/lang/en.lang.php @@ -2,14 +2,14 @@ /** * @file en.lang.php * @author haneul (haneul0318@gmail.com) - * @brief 라이프팟(lifepod) 모듈의 기본 언어팩 + * @brief default language pack of lifepod module **/ $lang->lifepod = "Lifepod"; - $lang->calendar_address = "calendar's xml address"; - $lang->cmd_lifepod_list = 'Lifepod module list'; - $lang->cmd_view_info = 'Lifepod info.'; + $lang->calendar_address = "Calendar's XML Address"; + $lang->cmd_lifepod_list = 'Lifepod List'; + $lang->cmd_view_info = 'Lifepod Info.'; - $lang->about_lifepod = "Lifepod is a calendar service provided by Openmaru Studio.
    Lifepod Zeroboard XE module desplays Lifepod's scalendar as an internal document."; + $lang->about_lifepod = "Lifepod is a calendar service provided by Openmaru Studio.
    Lifepod Zeroboard XE module desplays Lifepod's specific calendars as internal documents."; ?> diff --git a/modules/lifepod/lang/jp.lang.php b/modules/lifepod/lang/jp.lang.php new file mode 100644 index 000000000..8cb297d59 --- /dev/null +++ b/modules/lifepod/lang/jp.lang.php @@ -0,0 +1,15 @@ +lifepod = "ライフポッド"; + + $lang->calendar_address = "カレンダーxmlのURL"; + $lang->cmd_lifepod_list = 'ライフポッドリスト'; + $lang->cmd_view_info = 'ライフポッド情報'; + + $lang->about_lifepod = "ライフポッド(Lifepod)はOpenmaru社が提供しているカレンダーサービスです。
    ライフポッドゼロボードXEモジュールでライフポッドの特定カレンダーを内部ページのように閲覧が出来るようにします。"; +?> diff --git a/modules/lifepod/lang/ru.lang.php b/modules/lifepod/lang/ru.lang.php new file mode 100644 index 000000000..304985c6e --- /dev/null +++ b/modules/lifepod/lang/ru.lang.php @@ -0,0 +1,15 @@ +lifepod = ""; + + $lang->calendar_address = "XML- "; + $lang->cmd_lifepod_list = ' '; + $lang->cmd_view_info = ' '; + + $lang->about_lifepod = " -- , Openmaru Studio.
    Zeroboard XE ."; +?> diff --git a/modules/lifepod/lang/zh-CN.lang.php b/modules/lifepod/lang/zh-CN.lang.php new file mode 100644 index 000000000..0f6ea8797 --- /dev/null +++ b/modules/lifepod/lang/zh-CN.lang.php @@ -0,0 +1,15 @@ +lifepod = "Lifepod"; + + $lang->calendar_address = "日历 xml地址"; + $lang->cmd_lifepod_list = 'Lifepod目录'; + $lang->cmd_view_info = 'Lifepod信息'; + + $lang->about_lifepod = "Lifepod是openmaru提供的日历服务。
    Lifepod zerboardXE模块是Lifepod的特定日历显示为内部文件形式的模块。"; +?> diff --git a/modules/lifepod/lifepod.model.php b/modules/lifepod/lifepod.model.php index 737df8ce1..05f169192 100644 --- a/modules/lifepod/lifepod.model.php +++ b/modules/lifepod/lifepod.model.php @@ -8,13 +8,12 @@ set_include_path("./modules/springnote/lib/PEAR"); require_once('PEAR.php'); require_once('HTTP/Request.php'); - require_once('me2dayXmlParser.class.php'); + require_once('./classes/xml/GeneralXmlParser.class.php'); class lifepodModel extends lifepod { var $userid = ''; var $userkey = ''; - var $address = ''; /** * @brief 초기화 @@ -22,13 +21,6 @@ function init() { } - /** - * @brief lifepod 페이지를 가져오기 위한 기본 값 설정 - **/ - function setInfo($address) { - $this->address = $address; - } - /** * @brief HTTP request 객체 생성 **/ @@ -39,15 +31,15 @@ return $oReqeust; } - function getURL($start, $end) { - return sprintf("%s&start=%s&end=%s", $this->address, $start, $end); + function getURL($address, $start, $end) { + return sprintf("%s&start=%s&end=%s", $address, $start, $end); } /** * @brief lifepod 페이지 정보 가져오기 * @remarks 한해씩 끊어서 페이지를 가져옵니다. 아직 50개 이상의 calendar info가 있는 경우 앞에 것만 가져오는 문제가 있습니다. **/ - function getPage($year) { + function getPage($address, $year) { if($year == null) { $year = date("Y"); @@ -56,7 +48,7 @@ $start = sprintf("%s-01-01",$year); $end = sprintf("%s-01-01",$year+1); - $url = $this->getURL($start, $end); + $url = $this->getURL($address, $start, $end); $oReqeust = $this->getRequest($url); $oResponse = $oReqeust->sendRequest(); @@ -64,7 +56,7 @@ $body = $oReqeust->getResponseBody(); - $oXmlParser = new Me2DayXmlParser(); + $oXmlParser = new GeneralXmlParser(); $xmldoc = $oXmlParser->parse($body); if(!$xmldoc->childNodes["feed"]->childNodes["entry"]) { @@ -84,6 +76,7 @@ $page->data = array(); $page->data[] = $data; } + $page->color = $xmldoc->childNodes["feed"]->childNodes["color"]->body; return $page; } diff --git a/modules/lifepod/lifepod.view.php b/modules/lifepod/lifepod.view.php index 5e223a1cc..b38da4b75 100644 --- a/modules/lifepod/lifepod.view.php +++ b/modules/lifepod/lifepod.view.php @@ -27,41 +27,55 @@ $this->setTemplatePath($template_path); } - function dateFormatChange($dates) { - $dates = str_replace( "T", " ", $dates); - $dates = str_replace( "Z", "+0", $dates); - $dates = date("Y-m-d H:i:s", strtotime($dates)); + /** + * @brief Reformatting date data from Lifepod API into data type compatible to Lifepod UI + **/ + function dateFormatChange($dates, $plus = 0) { + $dates = sprintf("%s-%s-%s %s:%s:%s+0", substr($dates,0,4), substr($dates,4,2), substr($dates,6,2), substr($dates,9,2), substr($dates,11,2), substr($dates,13,2)); + $dates = date("Y-m-d H:i:s", strtotime($dates) + $plus + zgap()); return $dates; } /** - * @brief 달력 + * @brief Displaying Calendar **/ function dispLifepodContent() { - // 권한 체크 + // check permission if(!$this->grant->view) return $this->dispLifepodMessage('msg_not_permitted'); $oLifepodModel = &getModel('lifepod'); - $oLifepodModel->setInfo($this->module_info->calendar_address); + $caladdresses = split(", ", $this->module_info->calendar_address); $cYear = Context::get('year'); $cMonth = Context::get('month'); $cDay = Context::get('day'); + + $calendars = array(); - // 특정 페이지 선택시 페이지 정보 가져오기 - $page = $oLifepodModel->getPage($cYear, $cMonth, $cDay); - foreach ($page->data as $key => $val) + foreach($caladdresses as $key => $val) { - if($val->childNodes["date-start"]) + $page = $oLifepodModel->getPage($val, $cYear, $cMonth, $cDay); + foreach ($page->data as $key => $val) { - $val->childNodes["date-start"]->body = $this->dateFormatChange($val->childNodes["date-start"]->body); - } - if($val->childNodes["date-end"]) - { - $val->childNodes["date-end"]->body = $this->dateFormatChange($val->childNodes["date-end"]->body); + if($val->childNodes["date-start"]) + { + $val->childNodes["date-start"]->body = $this->dateFormatChange($val->childNodes["date-start"]->body); + } + + if($val->childNodes["date-end"]) + { + $plus = 0; + if($val->childNodes["type"]->body == "daylong") + $plus = -1; + $val->childNodes["date-end"]->body = $this->dateFormatChange($val->childNodes["date-end"]->body, $plus); + } + + $val->childNodes["description"]->body = str_replace("\n", "
    ", $val->childNodes["description"]->body); } + $calendars[] = $page; + } - Context::set('page', $page); + Context::set('calendars', $calendars); $this->setTemplateFile('list'); } diff --git a/modules/lifepod/skins/xe_official/css/common.css b/modules/lifepod/skins/xe_official/css/common.css index 0946ae080..5b137c90c 100644 --- a/modules/lifepod/skins/xe_official/css/common.css +++ b/modules/lifepod/skins/xe_official/css/common.css @@ -1,97 +1,136 @@ @charset "utf-8"; /* board Title */ -.boardHeader { border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden; _width:100%;} +.boardHeader { border:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) repeat-x left bottom; overflow:hidden; _width:100%; margin-bottom:10px; } .boardHeader h3 { float:left; font-size:1.2em; padding:1em 2em .7em 1.2em; background:#ffffff url(../images/common/lineH3.gif) no-repeat right bottom;} +.boardHeader h3 { border-bottom:3px solid #fe3614; } /* board Information */ .boardInformation { width:100%; clear:both; margin:1em 0 .5em 0; overflow:hidden; color:#666666;} .articleNum { float:left; padding:0 0 0 15px; } -.CalendarViewDay -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#8888cc; - cursor: pointer; - margin-right: 2px; +/* account Navigation */ +.accountNavigation { float:right; } +.accountNavigation li { float:left; margin-left:7px; list-style:none; padding-top:3px;} +.accountNavigation li a { font-size:12px; white-space:nowrap; color:#666666; text-decoration:none;} +.accountNavigation li.setup a { background:url(../images/common/iconSetup.gif) no-repeat left top; padding-left:14px; } +.accountNavigation li.admin a { background:url(../images/common/iconAdmin.gif) no-repeat left top; padding-left:12px; } +.accountNavigation li.loginAndLogout { background:url(../images/common/line_1x10_e0e0e0.gif) no-repeat left 5px; padding-left:8px; _padding-top:5px;} +*:first-child+html li.loginAndLogout { padding-top:5px; } + +INPUT.CalendarViewMonth { + width:44px; + height:26px; + overflow:hidden; + text-indent:-3000px; + border:none; + background-color:transparent; + background-image:url(../image/default_view_month.gif); + cursor:pointer; + margin-right:5px; + margin-top:5px; + /display:block; + /float:left; } -.CalendarView4Day -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#8888cc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarView2Week { + width:38px; + height:26px; + overflow:hidden; + text-indent:-3000px; + border:none; + background-color:transparent; + background-image:url(../image/default_view_2week.gif); + cursor:pointer; + margin-top:5px; + /display:block; + /float:left; } -.CalendarViewWeek -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#8888cc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarViewWeek { + width:38px; + height:26px; + overflow:hidden; + text-indent:-3000px; + border:none; + background-color:transparent; + background-image:url(../image/default_view_week.gif); + cursor:pointer; + margin-top:5px; + /display:block; + /float:left; } -.CalendarView2Week -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#8888cc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarView4Day { + width:38px; + height:26px; + overflow:hidden; + text-indent:-3000px; + border:none; + background-color:transparent; + background-image:url(../image/default_view_4day.gif); + cursor:pointer; + margin-top:5px; + /display:block; + /float:left; } -.CalendarViewMonth -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#8888cc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarViewDay { + width:44px; + height:26px; + overflow:hidden; + text-indent:-3000px; + border:none; + background-color:transparent; + background-image:url(../image/default_view_day.gif); + cursor:pointer; + margin-top:5px; + /display:block; + /float:left; } -.CalendarMoveToday -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#cccccc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarMovePrev { + width:34px; + height:26px; + overflow:hidden; + text-indent:-3000px; + line-height:1000px; + border:none; + background-color:transparent; + background-image:url(../image/default_move_left.gif); + cursor:pointer; + margin-left:5px; + margin-top:5px; + /display:block; + /float:left; } -.CalendarMoveNext -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#cccccc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarMoveToday { + width:31px; + height:26px; + overflow:hidden; + text-indent:-3000px; + line-height:1000px; + border:none; + background-color:transparent; + background-image:url(../image/default_move_today.gif); + cursor:pointer; + margin-top:5px; + /display:block; + /float:left; } -.CalendarMovePrev -{ - font-size:0.9em; - background-color:#FFFFFF; - border-style:solid; - border-width:1px; - border-color:#cccccc; - cursor: pointer; - margin-right: 2px; +INPUT.CalendarMoveNext { + width:34px; + height:26px; + overflow:hidden; + text-indent:-3000px; + line-height:1000px; + border:none; + background-color:transparent; + background-image:url(../image/default_move_next.gif); + cursor:pointer; + margin-top:5px; + /display:block; + /float:left; } diff --git a/modules/lifepod/skins/xe_official/image/default_move_left.gif b/modules/lifepod/skins/xe_official/image/default_move_left.gif new file mode 100644 index 000000000..2ef077f16 Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_move_left.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_move_next.gif b/modules/lifepod/skins/xe_official/image/default_move_next.gif new file mode 100644 index 000000000..d12e0fcd6 Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_move_next.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_move_today.gif b/modules/lifepod/skins/xe_official/image/default_move_today.gif new file mode 100644 index 000000000..392ef7929 Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_move_today.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_view_2week.gif b/modules/lifepod/skins/xe_official/image/default_view_2week.gif new file mode 100644 index 000000000..0e283d8b9 Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_view_2week.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_view_4day.gif b/modules/lifepod/skins/xe_official/image/default_view_4day.gif new file mode 100644 index 000000000..e3abbdfee Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_view_4day.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_view_day.gif b/modules/lifepod/skins/xe_official/image/default_view_day.gif new file mode 100644 index 000000000..96bc2dc20 Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_view_day.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_view_month.gif b/modules/lifepod/skins/xe_official/image/default_view_month.gif new file mode 100644 index 000000000..1fef8344c Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_view_month.gif differ diff --git a/modules/lifepod/skins/xe_official/image/default_view_week.gif b/modules/lifepod/skins/xe_official/image/default_view_week.gif new file mode 100644 index 000000000..f5a65a996 Binary files /dev/null and b/modules/lifepod/skins/xe_official/image/default_view_week.gif differ diff --git a/modules/lifepod/skins/xe_official/images/common/bgH3.gif b/modules/lifepod/skins/xe_official/images/common/bgH3.gif new file mode 100644 index 000000000..0d07bb456 Binary files /dev/null and b/modules/lifepod/skins/xe_official/images/common/bgH3.gif differ diff --git a/modules/lifepod/skins/xe_official/images/common/buttonHelp.gif b/modules/lifepod/skins/xe_official/images/common/buttonHelp.gif new file mode 100644 index 000000000..d330e801f Binary files /dev/null and b/modules/lifepod/skins/xe_official/images/common/buttonHelp.gif differ diff --git a/modules/lifepod/skins/xe_official/images/common/iconAdmin.gif b/modules/lifepod/skins/xe_official/images/common/iconAdmin.gif new file mode 100644 index 000000000..4a581a524 Binary files /dev/null and b/modules/lifepod/skins/xe_official/images/common/iconAdmin.gif differ diff --git a/modules/lifepod/skins/xe_official/images/common/iconSetup.gif b/modules/lifepod/skins/xe_official/images/common/iconSetup.gif new file mode 100644 index 000000000..33b41da11 Binary files /dev/null and b/modules/lifepod/skins/xe_official/images/common/iconSetup.gif differ diff --git a/modules/lifepod/skins/xe_official/images/common/lineH3.gif b/modules/lifepod/skins/xe_official/images/common/lineH3.gif new file mode 100644 index 000000000..fe42fe378 Binary files /dev/null and b/modules/lifepod/skins/xe_official/images/common/lineH3.gif differ diff --git a/modules/lifepod/skins/xe_official/images/common/line_1x10_e0e0e0.gif b/modules/lifepod/skins/xe_official/images/common/line_1x10_e0e0e0.gif new file mode 100644 index 000000000..6a848dd58 Binary files /dev/null and b/modules/lifepod/skins/xe_official/images/common/line_1x10_e0e0e0.gif differ diff --git a/modules/lifepod/skins/xe_official/list.html b/modules/lifepod/skins/xe_official/list.html index 2340471e8..e3d7cbee8 100644 --- a/modules/lifepod/skins/xe_official/list.html +++ b/modules/lifepod/skins/xe_official/list.html @@ -1,19 +1,19 @@ - + - - @@ -25,6 +25,41 @@ xAddEventListener(window, 'load', startLifepod);

    {$module_info->title}

    + + +
    diff --git a/modules/lifepod/skins/xe_official/skin.xml b/modules/lifepod/skins/xe_official/skin.xml index aacfbce4d..45bf56031 100644 --- a/modules/lifepod/skins/xe_official/skin.xml +++ b/modules/lifepod/skins/xe_official/skin.xml @@ -2,18 +2,40 @@ 라이프팟 연동 기본 스킨 Lifepod Module Basic Skin + ライフポッド連動のデフォルトスキン haneul - haneul + haneul + haneul 라이프팟 노트 연동 모듈의 기본 스킨 - Default Skin of Lifepod Module + Default Skin of Lifepod Module + ライフポッドノート連動モジュールのデフォルトスキン + + + 하얀색(기본) + White (default) + 白(デフォルト) + + 게시판 제목 Title of Board + 掲示板のタイトル 게시판의 제목을 적어주세요. Please input the title of board. + 掲示板のタイトルを記入してください。 + + + 한국 기념일 표시 + Display Korean Anniversary + 韓国記念日表示 + 한국의 기념일을 표시합니다. + It will display Korean anniversaries. + 韓国の記念日を表示します。 + use + notuse diff --git a/modules/lifepod/tpl/grant_list.html b/modules/lifepod/tpl/grant_list.html index e57483ab8..dde86a6f5 100644 --- a/modules/lifepod/tpl/grant_list.html +++ b/modules/lifepod/tpl/grant_list.html @@ -7,32 +7,32 @@ -
    {$lang->no}
    - - - - - - - - - - - - - - - - - - -
    {$lang->target}
    {$val->title} - - grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - - - {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    - -
    + +++++ + + + + + + + + + + + + + +
    {$lang->target}
    {$val->title} + + grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> + + + {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    + +
    diff --git a/modules/lifepod/tpl/index.html b/modules/lifepod/tpl/index.html index 187304793..d2d3f86ba 100644 --- a/modules/lifepod/tpl/index.html +++ b/modules/lifepod/tpl/index.html @@ -7,12 +7,54 @@ + +++++++ +++ +++++++ + +++++++ + +++++++ + +++++++ @@ -53,7 +95,7 @@ {htmlspecialchars($val->browser_title)} - + diff --git a/modules/lifepod/tpl/lifepod_insert.html b/modules/lifepod/tpl/lifepod_insert.html index 8f732ff8d..daf64088a 100644 --- a/modules/lifepod/tpl/lifepod_insert.html +++ b/modules/lifepod/tpl/lifepod_insert.html @@ -18,7 +18,7 @@ @@ -84,28 +84,28 @@ diff --git a/modules/lifepod/tpl/skin_info.html b/modules/lifepod/tpl/skin_info.html index 732a24cb8..65a2369e3 100644 --- a/modules/lifepod/tpl/skin_info.html +++ b/modules/lifepod/tpl/skin_info.html @@ -3,7 +3,7 @@ - + @@ -58,10 +58,10 @@
    {$lang->no} {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_view} {$lang->cmd_delete}
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->description} - +

    {$lang->about_description}

    {$lang->header_text} - +

    {$lang->about_header_text}

    {$lang->footer_text} - +

    {$lang->about_footer_text}

    {$lang->admin_id} - +

    {$lang->about_admin_id}

    {$val->title} - + - + + ++++++ +++ ++++++ + ++++++ + ++++++ + ++++++ diff --git a/modules/member/tpl/group_list.html b/modules/member/tpl/group_list.html index 8e8148817..cff2f0fa2 100644 --- a/modules/member/tpl/group_list.html +++ b/modules/member/tpl/group_list.html @@ -11,12 +11,54 @@
    {$lang->no}
    +----+++++ + +++++++ + +++++++ + +++++++ + +++++++ + +++++++ diff --git a/modules/member/tpl/join_form_list.html b/modules/member/tpl/join_form_list.html index da0690697..e5ed1365c 100644 --- a/modules/member/tpl/join_form_list.html +++ b/modules/member/tpl/join_form_list.html @@ -9,6 +9,18 @@
    {$lang->group_title}
    + ++++++++++ +@@ -16,8 +28,53 @@ +++ + +++++++++ + +++++++++ + ++++++++++ + ++++++++++ diff --git a/modules/member/tpl/member_list.html b/modules/member/tpl/member_list.html index f96a8286c..9d0880eff 100644 --- a/modules/member/tpl/member_list.html +++ b/modules/member/tpl/member_list.html @@ -1,23 +1,69 @@ +
    {$lang->column_title}
    ++++++ + +++++++ ++++++++ ++++-+++ + ++++++++ + ++++++++ - @@ -27,13 +73,16 @@ - + - - + diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 3475a6043..6c5440a40 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -349,19 +349,20 @@ if($group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( - 'node_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ', - $menu_item_srl, - $group_check_code, - $name_str, - $group_check_code, - $url, - $group_check_code, - $href, - $open_window, - $expand, - $normal_btn, - $hover_btn, - $active_btn + 'node_srl="%s" parent_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ', + $menu_item_srl, + $node->parent_srl, + $group_check_code, + $name_str, + $group_check_code, + $url, + $group_check_code, + $href, + $open_window, + $expand, + $normal_btn, + $hover_btn, + $active_btn ); if($child_buff) $buff .= sprintf('%s', $attribute, $child_buff); @@ -417,22 +418,23 @@ // 속성을 생성한다 ( url_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) $attribute = sprintf( - '"node_srl"=>"%s","text"=>(%s?$_menu_names[%d][$lang_type]:""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s)', - $node->menu_item_srl, - $group_check_code, - $node->menu_item_srl, - $group_check_code, - $href, - $group_check_code, - $url, - $open_window, - $normal_btn, - $hover_btn, - $active_btn, - $selected, - $selected, - $expand, - $child_buff + '"node_srl"=>"%s","parent_srl"=>"%s","text"=>(%s?$_menu_names[%d][$lang_type]:""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(array(%s)&&in_array(Context::get("mid"),array(%s))?1:0),"expand"=>"%s", "list"=>array(%s)', + $node->menu_item_srl, + $node->parent_srl, + $group_check_code, + $node->menu_item_srl, + $group_check_code, + $href, + $group_check_code, + $url, + $open_window, + $normal_btn, + $hover_btn, + $active_btn, + $selected, + $selected, + $expand, + $child_buff ); // buff 데이터를 생성한다 diff --git a/modules/menu/tpl/index.html b/modules/menu/tpl/index.html index 2a18eb9d1..1063ef243 100644 --- a/modules/menu/tpl/index.html +++ b/modules/menu/tpl/index.html @@ -14,10 +14,42 @@
    {$lang->no} {$lang->user_id} {$lang->user_name} {$lang->nick_name}{$lang->denied} {$lang->signup_date} {$lang->last_login} {$lang->cmd_delete}
    {$no}{htmlspecialchars($val->user_id)} + {htmlspecialchars($val->user_id)} + {$lang->denied} +
    {$lang->limit_date} : {zdate($val->limit_date,'Y.m.d')} +
    {htmlspecialchars($val->user_name)}
    {htmlspecialchars($val->nick_name)}
    {$val->denied} {zdate($val->regdate,"Y-m-d")} {zdate($val->last_login,"Y-m-d H:i:s")}{$lang->cmd_delete} {$lang->cmd_delete} 
    +--+++ + +++++ + +++++ + +++++ + +++++ + +++++ diff --git a/modules/module/tpl/category_list.html b/modules/module/tpl/category_list.html index f36ff9351..fff18b866 100644 --- a/modules/module/tpl/category_list.html +++ b/modules/module/tpl/category_list.html @@ -10,10 +10,42 @@
    {$lang->no}
    + +++++ +--+++ + +++++ + +++++ + +++++ + +++++ @@ -33,7 +65,7 @@ - + diff --git a/modules/module/tpl/module_list.html b/modules/module/tpl/module_list.html index a7cb140af..1abb33cc4 100644 --- a/modules/module/tpl/module_list.html +++ b/modules/module/tpl/module_list.html @@ -7,14 +7,66 @@
    {$lang->category_title}{$val->title} {zdate($val->regdate,"Y-m-d H:i:s")} {$lang->cmd_modify}{$lang->cmd_delete}{$lang->cmd_delete}
    +++++++ + +++++++++ + +++++++++ + +++++++++ + +++++++++ + +++---++++ diff --git a/modules/opage/tpl/index.html b/modules/opage/tpl/index.html index 10ca72b6c..ecca7eb10 100644 --- a/modules/opage/tpl/index.html +++ b/modules/opage/tpl/index.html @@ -8,13 +8,60 @@
    {$lang->module_name}
    + ++++++++ + ++++++++ + ++++++++ + ++++++++ +--+++ + ++++++++ @@ -53,11 +100,11 @@ - + diff --git a/modules/opage/tpl/opage_insert.html b/modules/opage/tpl/opage_insert.html index 8210e14b8..84c0ece58 100644 --- a/modules/opage/tpl/opage_insert.html +++ b/modules/opage/tpl/opage_insert.html @@ -14,7 +14,7 @@ @@ -42,7 +42,7 @@ @@ -76,10 +76,10 @@
    {$lang->no} - {htmlspecialchars($val->browser_title)}
    - {$val->mid} + {$val->mid} - {htmlspecialchars($val->browser_title)} +
    {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_view} {$lang->cmd_copy} {$lang->cmd_delete}
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->browser_title} - +

    {$lang->about_browser_title}

    - + - - + + @@ -97,8 +97,8 @@ - - + + diff --git a/modules/page/tpl/index.html b/modules/page/tpl/index.html index dde5226ce..a2e947ede 100644 --- a/modules/page/tpl/index.html +++ b/modules/page/tpl/index.html @@ -8,13 +8,60 @@
    {$lang->grant} {$lang->cmd_select_all}{$lang->cmd_unselect_all}{$lang->cmd_select_all}{$lang->cmd_unselect_all}
    + ++++++++ + ++++++++ + ++++++++ + ++++++++ +--+++ + ++++++++ @@ -57,7 +104,7 @@ {htmlspecialchars($val->browser_title)}
    - + diff --git a/modules/page/tpl/page_info.html b/modules/page/tpl/page_info.html index 5b80cd1ba..c274c7f03 100644 --- a/modules/page/tpl/page_info.html +++ b/modules/page/tpl/page_info.html @@ -15,7 +15,7 @@ @@ -43,7 +43,7 @@ @@ -63,10 +63,10 @@
    {$lang->no} {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_view} {$lang->cmd_copy} {$lang->cmd_delete} 
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->browser_title} - +

    {$lang->about_browser_title}

    - - - - + + + + @@ -84,8 +84,8 @@ - - + + diff --git a/modules/page/tpl/page_insert.html b/modules/page/tpl/page_insert.html index ad161c877..d969986dc 100644 --- a/modules/page/tpl/page_insert.html +++ b/modules/page/tpl/page_insert.html @@ -14,7 +14,7 @@ @@ -42,7 +42,7 @@ @@ -62,10 +62,10 @@
    {$lang->grant} {$lang->cmd_select_all}{$lang->cmd_unselect_all}{$lang->cmd_select_all}{$lang->cmd_unselect_all}
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->browser_title} - +

    {$lang->about_browser_title}

    - - - - + + + + @@ -83,8 +83,8 @@ - - + + diff --git a/modules/point/conf/module.xml b/modules/point/conf/module.xml index 6e65f087b..7d87c52c9 100644 --- a/modules/point/conf/module.xml +++ b/modules/point/conf/module.xml @@ -12,5 +12,8 @@ + + + diff --git a/modules/point/lang/en.lang.php b/modules/point/lang/en.lang.php index 651f2f995..f8ee8b8e0 100644 --- a/modules/point/lang/en.lang.php +++ b/modules/point/lang/en.lang.php @@ -26,10 +26,13 @@ $lang->disable_download = 'Prohibit Downloads'; $lang->about_disable_download = "This will prohibit downloads when there are not enough points. (Exclude image files)"; - $lang->level_point_calc = '레벨별 포인트 계산'; - $lang->expression = '레벨 변수 i를 사용하여 자바스크립트 수식을 입력하세요. 예: Math.pow(i, 2) * 90'; - $lang->cmd_exp_calc = '계산'; - $lang->cmd_exp_reset = '초기화'; + $lang->level_point_calc = 'Point Calculation per Point'; + $lang->expression = 'Please input Javascript formula by using level variable i. ex) Math.pow(i, 2) * 90'; + $lang->cmd_exp_calc = 'Calculate'; + $lang->cmd_exp_reset = 'Reset'; + + $lang->cmd_point_recal = 'Recalculate Point'; + $lang->about_cmd_point_recal = "This will check articles/comments/attached files and reset all members' point to preset point."; $lang->about_module_point = "You can set point for each module and modules which don't have any value will use default point.
    All point will be restored on acting reverse."; @@ -49,4 +52,7 @@ $lang->cmd_point_member_list = 'Member Point List'; $lang->msg_cannot_download = "You don't have enough point to download"; + + $lang->point_recal_message = 'Adjusting Point. (%d / %d)'; + $lang->point_recal_finished = 'Point recalculation is finished.'; ?> diff --git a/modules/point/lang/es.lang.php b/modules/point/lang/es.lang.php index 7d5aee4c8..19dc287a3 100644 --- a/modules/point/lang/es.lang.php +++ b/modules/point/lang/es.lang.php @@ -31,6 +31,9 @@ $lang->cmd_exp_calc = '계산'; $lang->cmd_exp_reset = '초기화'; + $lang->cmd_point_recal = '포인트 재계산'; + $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->about_module_point = "Usted puede definir los puntos para cada módulo y los módulos que no tengan ningun valor usarán punto predefinido.
    Todos los puntos serán restituidos al actuar en forma contraria."; $lang->point_signup = 'Fecha del'; @@ -49,4 +52,7 @@ $lang->cmd_point_member_list = 'Lista de puntos del usuario'; $lang->msg_cannot_download = "No tiene puntos suficientes para descagar"; + + $lang->point_recal_message = '포인트 적용중입니다. (%d / %d)'; + $lang->point_recal_finished = '포인트 재계산이 모두 완료되었습니다'; ?> diff --git a/modules/point/lang/jp.lang.php b/modules/point/lang/jp.lang.php index c52a0e3cc..6b497ac83 100644 --- a/modules/point/lang/jp.lang.php +++ b/modules/point/lang/jp.lang.php @@ -31,6 +31,9 @@ $lang->cmd_exp_calc = '計算'; $lang->cmd_exp_reset = '初期化'; + $lang->cmd_point_recal = '포인트 재계산'; + $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->about_module_point = 'モジュール別にポイントを指定することができますが、指定されていないモジュールでは、デフォルトポイントが使用されます。すべてのポイント数は、反対のアクションを行った際には原状復帰されます。'; $lang->point_signup = '加入'; @@ -49,4 +52,7 @@ $lang->cmd_point_member_list = '会員ポイントリスト'; $lang->msg_cannot_download = 'ポイントが不足しているため、ダウンロードできません。'; + + $lang->point_recal_message = '포인트 적용중입니다. (%d / %d)'; + $lang->point_recal_finished = '포인트 재계산이 모두 완료되었습니다'; ?> diff --git a/modules/point/lang/ko.lang.php b/modules/point/lang/ko.lang.php index 18f51adb6..1047b7b87 100644 --- a/modules/point/lang/ko.lang.php +++ b/modules/point/lang/ko.lang.php @@ -31,6 +31,9 @@ $lang->cmd_exp_calc = '계산'; $lang->cmd_exp_reset = '초기화'; + $lang->cmd_point_recal = '포인트 재계산'; + $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->about_module_point = '모듈별로 포인트를 지정할 수 있으며 지정되지 않은 모듈은 기본 포인트를 이용하게 됩니다
    모든 점수는 반대 행동을 하였을 경우 원상복귀 됩니다.'; $lang->point_signup = '가입'; @@ -49,4 +52,7 @@ $lang->cmd_point_member_list = '회원 포인트 목록'; $lang->msg_cannot_download = '포인트가 부족하여 다운로드를 하실 수 없습니다'; + + $lang->point_recal_message = '포인트 적용중입니다. (%d / %d)'; + $lang->point_recal_finished = '포인트 재계산이 모두 완료되었습니다'; ?> diff --git a/modules/point/lang/ru.lang.php b/modules/point/lang/ru.lang.php index 1cb952de1..431a693fc 100644 --- a/modules/point/lang/ru.lang.php +++ b/modules/point/lang/ru.lang.php @@ -26,6 +26,14 @@ $lang->disable_download = 'Запретить скачивание'; $lang->about_disable_download = "Это запретит скачивание файлов, когда не хватает достаточного кол-ва поинтов. (За исключением файлов изображений)"; + $lang->level_point_calc = '레벨별 포인트 계산'; + $lang->expression = '레벨 변수 i를 사용하여 자바스크립트 수식을 입력하세요. 예: Math.pow(i, 2) * 90'; + $lang->cmd_exp_calc = '계산'; + $lang->cmd_exp_reset = '초기화'; + + $lang->cmd_point_recal = '포인트 재계산'; + $lang->about_cmd_point_recal = '게시글/댓글/첨부파일등을 모두 검사하여 설정된 포인트 설정에 맞게 모든 회원들의 포인트를 재계산합니다'; + $lang->about_module_point = "Вы можете установть поинты для каждого модуля, а модули, не имеющие значения будут использовать значение по умолчанию для поинтов.
    Все поинты будут восстановлены при обратном действии."; $lang->point_signup = 'Присвоить'; @@ -44,4 +52,7 @@ $lang->cmd_point_member_list = 'Список поинтов пользователей'; $lang->msg_cannot_download = "У Вас нет достаточного количества поитов, чтобы иметь разрешение скачивать файлы."; + + $lang->point_recal_message = '포인트 적용중입니다. (%d / %d)'; + $lang->point_recal_finished = '포인트 재계산이 모두 완료되었습니다'; ?> diff --git a/modules/point/lang/zh-CN.lang.php b/modules/point/lang/zh-CN.lang.php index 0bc9c7cc7..0a91ebd49 100644 --- a/modules/point/lang/zh-CN.lang.php +++ b/modules/point/lang/zh-CN.lang.php @@ -1,6 +1,6 @@ * @brief 积分 (point) 模块简体中文语言包 **/ @@ -31,6 +31,9 @@ $lang->cmd_exp_calc = '计算'; $lang->cmd_exp_reset = '初始化'; + $lang->cmd_point_recal = '重新计算积分'; + $lang->about_cmd_point_recal = '文章/评论/附件等从新检查后按相应设置从新计算积分。'; + $lang->about_module_point = '可以分别对各模块进行积分设置,没有被设置的模块将使用默认值。
    所有积分在相反动作下恢复原始值。即:发表新帖后再删除得到的积分为0分。'; $lang->point_signup = '注册'; @@ -49,4 +52,7 @@ $lang->cmd_point_member_list = '会员积分目录'; $lang->msg_cannot_download = '积分不足无法下载!'; + + $lang->point_recal_message = '计算中. (%d / %d)'; + $lang->point_recal_finished = '所有会员积分从新计算完毕。'; ?> diff --git a/modules/point/point.admin.controller.php b/modules/point/point.admin.controller.php index 82821fecc..fd9792e34 100644 --- a/modules/point/point.admin.controller.php +++ b/modules/point/point.admin.controller.php @@ -149,6 +149,125 @@ return $oPointController->setPoint($member_srl, (int)$point); } + /** + * @brief 전체글/ 댓글/ 첨부파일과 가입정보를 바탕으로 포인트를 재계산함. 단 로그인 점수는 1번만 부여됨 + **/ + function procPointAdminReCal() { + set_time_limit(0); + + // 모듈별 포인트 정보를 가져옴 + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + + // 회원의 포인트 저장을 위한 변수 + $member = array(); + + // 게시글 정보를 가져옴 + $output = executeQueryArray('point.getDocumentPoint'); + if(!$output->toBool()) return $output; + + if($output->data) { + foreach($output->data as $key => $val) { + if($config->module_point[$val->module_srl]->insert_document) $insert_point = $config->module_point[$val->module_srl]->insert_document; + else $insert_point = $config->insert_document; + + if(!$val->member_srl) continue; + $point = $insert_point * $val->count; + $member[$val->member_srl] += $point; + } + } + $output = null; + + // 댓글 정보를 가져옴 + $output = executeQueryArray('point.getCommentPoint'); + if(!$output->toBool()) return $output; + + if($output->data) { + foreach($output->data as $key => $val) { + if($config->module_point[$val->module_srl]->insert_comment) $insert_point = $config->module_point[$val->module_srl]->insert_comment; + else $insert_point = $config->insert_comment; + + if(!$val->member_srl) continue; + $point = $insert_point * $val->count; + $member[$val->member_srl] += $point; + } + } + $output = null; + + // 첨부파일 정보를 가져옴 + $output = executeQueryArray('point.getFilePoint'); + if(!$output->toBool()) return $output; + + if($output->data) { + foreach($output->data as $key => $val) { + if($config->module_point[$val->module_srl]->upload_file) $insert_point = $config->module_point[$val->module_srl]->upload_file; + else $insert_point = $config->upload_file; + + if(!$val->member_srl) continue; + $point = $insert_point * $val->count; + $member[$val->member_srl] += $point; + } + } + $output = null; + + // 모든 회원의 포인트를 0으로 세팅 + $output = executeQuery("point.initMemberPoint"); + if(!$output->toBool()) return $output; + + // 임시로 파일 저장 + $f = fopen("./files/cache/pointRecal.txt","w"); + foreach($member as $key => $val) { + $val += (int)$config->signup_point; + fwrite($f, $key.','.$val."\r\n"); + } + fclose($f); + + $this->add('total', count($member)); + $this->add('position', 0); + $this->setMessage( sprintf(Context::getLang('point_recal_message'), 0, $this->get('total')) ); + } + + /** + * @brief 파일로 저장한 회원 포인트를 5000명 단위로 적용 + **/ + function procPointAdminApplyPoint() { + $position = (int)Context::get('position'); + $total = (int)Context::get('total'); + + if(!file_exists('./files/cache/pointRecal.txt')) return new Object(-1, 'msg_invalid_request'); + + $idx = 0; + $f = fopen("./files/cache/pointRecal.txt","r"); + while(!feof($f)) { + $str = trim(fgets($f, 1024)); + $idx ++; + if($idx > $position) { + list($member_srl, $point) = explode(',',$str); + + $args = null; + $args->member_srl = $member_srl; + $args->point = $point; + $output = executeQuery('point.insertPoint',$args); + if($idx%5000==0) break; + } + } + + if(feof($f)) { + @unlink('./files/cache/pointRecal.txt'); + $idx = $total; + + @rename('./files/member_extra_info/point','./files/member_extra_info/point.old'); + FileHandler::removeDir('./files/member_extra_info/point.old'); + } + fclose($f); + + + $this->add('total', $total); + $this->add('position', $idx); + $this->setMessage(sprintf(Context::getLang('point_recal_message'), $idx, $total)); + + } + /** * @brief 캐시파일 저장 **/ diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index 5a86762a0..2e9a44c9a 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -300,6 +300,10 @@ function setPoint($member_srl, $point) { if($point < 0) $point = 0; + // 설정 정보 가져오기 + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + // 변수 설정 $args->member_srl = $member_srl; $args->point = $point; @@ -309,6 +313,7 @@ if($oPointModel->isExistsPoint($member_srl)) { executeQuery("point.updatePoint", $args); } else { + $args->point += (int)$config->signup_point; executeQuery("point.insertPoint", $args); } diff --git a/modules/point/queries/getCommentPoint.xml b/modules/point/queries/getCommentPoint.xml new file mode 100644 index 000000000..a1ce7f7ab --- /dev/null +++ b/modules/point/queries/getCommentPoint.xml @@ -0,0 +1,14 @@ + + +
    {$lang->grant} {$lang->cmd_select_all}{$lang->cmd_unselect_all}{$lang->cmd_select_all}{$lang->cmd_unselect_all}
    + + + + + + + + + + + diff --git a/modules/point/queries/getDocumentPoint.xml b/modules/point/queries/getDocumentPoint.xml new file mode 100644 index 000000000..a7d23f147 --- /dev/null +++ b/modules/point/queries/getDocumentPoint.xml @@ -0,0 +1,14 @@ + + +
    + + + + + + + + + + + diff --git a/modules/point/queries/getFilePoint.xml b/modules/point/queries/getFilePoint.xml new file mode 100644 index 000000000..05232eaff --- /dev/null +++ b/modules/point/queries/getFilePoint.xml @@ -0,0 +1,17 @@ + + +
    + + + + + + + + + + + + + + diff --git a/modules/point/queries/initMemberPoint.xml b/modules/point/queries/initMemberPoint.xml new file mode 100644 index 000000000..fabe4b149 --- /dev/null +++ b/modules/point/queries/initMemberPoint.xml @@ -0,0 +1,5 @@ + + +
    + + diff --git a/modules/point/tpl/config.html b/modules/point/tpl/config.html index d1962c2e6..e0cfee35b 100644 --- a/modules/point/tpl/config.html +++ b/modules/point/tpl/config.html @@ -8,6 +8,14 @@ + + + +
    {$lang->cmd_point_recal} + +

    {$lang->about_cmd_point_recal}

    +
    +
    {$lang->max_level} diff --git a/modules/point/tpl/js/point_admin.js b/modules/point/tpl/js/point_admin.js index 5bca56f1e..a74acafb0 100644 --- a/modules/point/tpl/js/point_admin.js +++ b/modules/point/tpl/js/point_admin.js @@ -16,4 +16,36 @@ function exp_calc (form, reset) { point = eval("fo_obj.level_step_" + i) point.value = eval(exp.value); } -} \ No newline at end of file +} + +/** + * @brief 포인트를 전부 체크하여 재계산하는 action 호출 + **/ +function doPointRecal() { + + var params = new Array(); + var response_tags = new Array('error','message','total', 'position'); + + exec_xml('point','procPointAdminReCal',params, completePointRecal, response_tags); +} + +function completePointRecal(ret_obj) { + var total = ret_obj['total']; + var message = ret_obj['message']; + var position = ret_obj['position']; + + if(position == total) { + xInnerHtml('pointReCal', message); + alert(message); + location.reload(); + } else { + xInnerHtml('pointReCal', message); + + var params = new Array(); + params['position'] = position; + params['total'] = total; + var response_tags = new Array('error','message','total', 'position'); + + exec_xml('point','procPointAdminApplyPoint',params, completePointRecal, response_tags); + } +} diff --git a/modules/point/tpl/member_list.html b/modules/point/tpl/member_list.html index 9f1af6683..34fac1020 100644 --- a/modules/point/tpl/member_list.html +++ b/modules/point/tpl/member_list.html @@ -3,12 +3,54 @@ + +++++++ + +++++++ + +++++++ + +++++++ +-++ + +++++++ diff --git a/modules/point/tpl/module_config.html b/modules/point/tpl/module_config.html index af4b8c581..e5d241067 100644 --- a/modules/point/tpl/module_config.html +++ b/modules/point/tpl/module_config.html @@ -11,6 +11,7 @@ + @@ -21,6 +22,7 @@ +
    {$lang->no}{$lang->point_download_file}
    {$val->browser_title} ({$val->mid})
    {$config->point_name}
    diff --git a/modules/poll/tpl/poll_list.html b/modules/poll/tpl/poll_list.html index a7977ede4..c5648ee6a 100644 --- a/modules/poll/tpl/poll_list.html +++ b/modules/poll/tpl/poll_list.html @@ -10,40 +10,87 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->no}{$lang->title}{$lang->poll_checkcount}{$lang->poll_join_count}{$lang->regdate}{$lang->cmd_view}
    {$no}{htmlspecialchars($val->title)}{$val->checkcount}{$val->poll_count}{zdate($val->regdate,"Y-m-d H:i")}{$lang->cmd_view}
    + + + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang->no}{$lang->title}{$lang->poll_checkcount}{$lang->poll_join_count}{$lang->regdate}{$lang->cmd_view}
    {$no}{htmlspecialchars($val->title)}{$val->checkcount}{$val->poll_count}{zdate($val->regdate,"Y-m-d H:i")}{$lang->cmd_view}
    diff --git a/modules/referer/lang/zh-CN.php b/modules/referer/lang/zh-CN.php new file mode 100644 index 000000000..447c65280 --- /dev/null +++ b/modules/referer/lang/zh-CN.php @@ -0,0 +1,10 @@ + + * @brief Korean language pack + */ + + $lang->referer = "点击来源"; + $lang->ranking = "访问次数"; +?> diff --git a/modules/spamfilter/lang/en.lang.php b/modules/spamfilter/lang/en.lang.php index 2e307ee4b..2c7ad559a 100644 --- a/modules/spamfilter/lang/en.lang.php +++ b/modules/spamfilter/lang/en.lang.php @@ -14,19 +14,19 @@ $lang->denied_ip = "IP to blacklist"; $lang->interval = "Interval for spam filtering"; $lang->limit_count = "No. of posting limitation"; - $lang->check_trackback = "Check trackback"; + $lang->check_trackback = "Check trackbacks"; $lang->word = "Word"; // for description word $lang->about_interval = "All articles attempted for posting within the assigned time will be blocked."; $lang->about_limit_count = "If you exceed the posting limitation,\n your article will be recognized as a spam, and your IP address will be blacklisted."; $lang->about_denied_ip = "You can blacklist IP address range like 127.0.0.* by using *."; - $lang->about_denied_word = "When you add a word to Word Blacklist,\n articles with that word will not be posted."; + $lang->about_denied_word = "When you add a word to Word Blacklist,\n articles including that word will not be posted."; $lang->about_check_trackback = "Only the trackback by one IP per an article could be allowed."; // to post a message - $lang->msg_alert_limited_by_config = 'Posting an article within %s second is not allowed.\n If you try it again and again, your IP address may be blacklisted.'; + $lang->msg_alert_limited_by_config = 'Posting an article within %s second is not allowed.\n If you keep trying, your IP address may be blacklisted.'; $lang->msg_alert_denied_word = 'The word "%s" is not allowed to be posted.'; - $lang->msg_alert_registered_denied_ip = 'Your IP address was blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator.'; + $lang->msg_alert_registered_denied_ip = 'Your IP address is blacklisted,\n so you may have limitations on normal using of this site.\n If you have any questions on that matter, please contact to the site administrator.'; $lang->msg_alert_trackback_denied = 'Only one trackback per an article is allowed.'; ?> diff --git a/modules/spamfilter/spamfilter.controller.php b/modules/spamfilter/spamfilter.controller.php index c1311fa00..d463dceeb 100644 --- a/modules/spamfilter/spamfilter.controller.php +++ b/modules/spamfilter/spamfilter.controller.php @@ -16,7 +16,7 @@ /** * @brief 글 작성시 글 작성 시간 체크 및 금지 ip/단어 처리 루틴 **/ - function triggerinsertDocument(&$obj) { + function triggerInsertDocument(&$obj) { // 로그인 여부, 로그인 정보, 권한 유무 체크 $is_logged = Context::get('is_logged'); $logged_info = Context::get('logged_info'); diff --git a/modules/spamfilter/tpl/denied_ip_list.html b/modules/spamfilter/tpl/denied_ip_list.html index 8b65de029..6be610e9e 100644 --- a/modules/spamfilter/tpl/denied_ip_list.html +++ b/modules/spamfilter/tpl/denied_ip_list.html @@ -15,10 +15,42 @@ +--+++ + +++++ + +++++ + +++++ + +++++ + +++++ diff --git a/modules/spamfilter/tpl/denied_word_list.html b/modules/spamfilter/tpl/denied_word_list.html index f53443a91..210cc1d1c 100644 --- a/modules/spamfilter/tpl/denied_word_list.html +++ b/modules/spamfilter/tpl/denied_word_list.html @@ -15,10 +15,42 @@
    {$lang->no}
    +--+++ + +++++ + +++++ + +++++ + +++++ + +++++ diff --git a/modules/springnote/lang/en.lang.php b/modules/springnote/lang/en.lang.php index e285f9078..0fc350c66 100644 --- a/modules/springnote/lang/en.lang.php +++ b/modules/springnote/lang/en.lang.php @@ -1,14 +1,18 @@ springnote = "Springnote"; $lang->springnote_openid = "OpenID"; $lang->springnote_userkey = "User Key"; $lang->springnote_pageid = "Page Number"; + $lang->springnote_pageid_setup = 'Set Page Number'; + $lang->springnote_pageid_option_only = 'Show only Selected Pages (hide list)'; + $lang->springnote_pageid_option_list = 'Show from Selected Pages (show list)'; + $lang->springnote_domain = "Set Domain"; $lang->page_url = "Original URL"; $lang->page_modified = "Last Modification"; @@ -21,4 +25,6 @@ $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_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/springnote/lang/jp.lang.php b/modules/springnote/lang/jp.lang.php index 436380fc7..10015b5f5 100644 --- a/modules/springnote/lang/jp.lang.php +++ b/modules/springnote/lang/jp.lang.php @@ -9,6 +9,10 @@ $lang->springnote_openid = "オープンID"; $lang->springnote_userkey = "ユーザーKey"; $lang->springnote_pageid = "ページ番号"; + $lang->springnote_pageid_setup = '페이지 번호 설정'; + $lang->springnote_pageid_option_only = '지정된 페이지만 보여주기 (목록 보이지 않음)'; + $lang->springnote_pageid_option_list = '지정된 페이지부터 보이기 (목록 보임)'; + $lang->springnote_domain = "도메인 지정"; $lang->page_url = "元のURL"; $lang->page_modified = "最終修正"; @@ -21,4 +25,6 @@ $lang->about_springnote_openid = "スプリングノートでページを作成したオープンIDを入力してください。"; $lang->about_springnote_userkey = 'スプリングノートとの連動するためのユーザKeyを入力してください。
    [ユーザーキー受信]をクリックして入力して生成されるキーの値を入力してください。'; $lang->about_springnote_pageid = '使用するスプリングノートの中の特定ページを出力したい場合、「pageid」の値を入力してください。'; + $lang->about_springnote_pageid_setup = '페이지 번호 지정시 해당 페이지만 보이기(목록 비포함), 해당 페이지부터 보이기(목록 포함)등을 지정할 수 있습니다'; + $lang->about_springnote_domain = '자신의 스프링노트가 아닌 다른 도메인의 스프링노트를 입력할 수 있습니다. (http://도메인.springnote.com 에서 도메인값만 입력해주세요)'; ?> diff --git a/modules/springnote/lang/ko.lang.php b/modules/springnote/lang/ko.lang.php index b33da5dff..9dc0d8c6f 100644 --- a/modules/springnote/lang/ko.lang.php +++ b/modules/springnote/lang/ko.lang.php @@ -9,6 +9,10 @@ $lang->springnote_openid = "오픈아이디"; $lang->springnote_userkey = "사용자 Key"; $lang->springnote_pageid = "페이지 번호"; + $lang->springnote_pageid_setup = '페이지 번호 설정'; + $lang->springnote_pageid_option_only = '지정된 페이지만 보여주기 (목록 보이지 않음)'; + $lang->springnote_pageid_option_list = '지정된 페이지부터 보이기 (목록 보임)'; + $lang->springnote_domain = "도메인 지정"; $lang->page_url = "원본 URL"; $lang->page_modified = "최종 수정"; @@ -21,4 +25,6 @@ $lang->about_springnote_openid = "스프링노트에서 페이지를 제작한 오픈아이디를 입력해주세요"; $lang->about_springnote_userkey = '스프링노트 연동을 위한 사용자 Key값을 입력해주셔야 합니다.
    [사용자 키 받기] 를 클릭하셔서 오픈아이디를 입력하시고 생성되는 키값을 입력해주세요.'; $lang->about_springnote_pageid = '사용하시려는 스프링노트 중 특정 페이지를 먼저 출력하고자 하실때 pageid값을 입력해주세요'; + $lang->about_springnote_pageid_setup = '페이지 번호 지정시 해당 페이지만 보이기(목록 비포함), 해당 페이지부터 보이기(목록 포함)등을 지정할 수 있습니다'; + $lang->about_springnote_domain = '자신의 스프링노트가 아닌 다른 도메인의 스프링노트를 입력할 수 있습니다. (http://도메인.springnote.com 에서 도메인값만 입력해주세요)'; ?> diff --git a/modules/springnote/lang/ru.lang.php b/modules/springnote/lang/ru.lang.php index 2712c473e..82453dd22 100644 --- a/modules/springnote/lang/ru.lang.php +++ b/modules/springnote/lang/ru.lang.php @@ -9,6 +9,10 @@ $lang->springnote_openid = "Открытый ID"; $lang->springnote_userkey = "Ключ юзера"; $lang->springnote_pageid = "Номер страницы"; + $lang->springnote_pageid_setup = '페이지 번호 설정'; + $lang->springnote_pageid_option_only = '지정된 페이지만 보여주기 (목록 보이지 않음)'; + $lang->springnote_pageid_option_list = '지정된 페이지부터 보이기 (목록 보임)'; + $lang->springnote_domain = "도메인 지정"; $lang->page_url = "Оригинальный URL"; $lang->page_modified = "Последняя модификация"; @@ -21,4 +25,6 @@ $lang->about_springnote_openid = "Пожалуйста, введите Ваш OpenID, который создал Springnote."; $lang->about_springnote_userkey = 'Ключ юзера нужен для того, чтобы включить Springnote модуль.
    Пожалуйста, введите сгенерированный Ключ Юзера после ввода Вашего OpenID на [Получить Ключ Юзера] .'; $lang->about_springnote_pageid = 'Пожалуйста, введите pageid, если вы хотите отобразить определенную страницу сначала.'; + $lang->about_springnote_pageid_setup = '페이지 번호 지정시 해당 페이지만 보이기(목록 비포함), 해당 페이지부터 보이기(목록 포함)등을 지정할 수 있습니다'; + $lang->about_springnote_domain = '자신의 스프링노트가 아닌 다른 도메인의 스프링노트를 입력할 수 있습니다. (http://도메인.springnote.com 에서 도메인값만 입력해주세요)'; ?> diff --git a/modules/springnote/lang/zh-CN.lang.php b/modules/springnote/lang/zh-CN.lang.php new file mode 100644 index 000000000..1156fd9e4 --- /dev/null +++ b/modules/springnote/lang/zh-CN.lang.php @@ -0,0 +1,30 @@ +springnote = "SpringNote"; + $lang->springnote_openid = "OpenID"; + $lang->springnote_userkey = "Key"; + $lang->springnote_pageid = "编号"; + $lang->springnote_pageid_setup = '设定编号'; + $lang->springnote_pageid_option_only = '显示指定页面(不显示目录)'; + $lang->springnote_pageid_option_list = '显示指定页面 (显示目录)'; + $lang->springnote_domain = "设定域名"; + + $lang->page_url = "原本 URL"; + $lang->page_modified = "最终修改"; + $lang->page_modifier = "最终修改者"; + + $lang->cmd_springnote_list = 'SpringNote目录'; + $lang->cmd_view_info = 'SpringNote信息'; + + $lang->about_springnote = "SpringNote是Openmaru提供的WIKI服务。
    SpringNote zeroboardXE模块是特定页面显示成内部文件的模块。"; + $lang->about_springnote_openid = "请输入SpringNote作者的OpenID。"; + $lang->about_springnote_userkey = '请输入连接SpringNote的Key。
    点击[生成Key]后输入OpenID生成Key。'; + $lang->about_springnote_pageid = '显示指定SpringNote中的页面时输入编号。'; + $lang->about_springnote_pageid_setup = '设定显示指定页面部包括目录,或者不包括目录。'; + $lang->about_springnote_domain = '设定其他SpringNote. (http://域名.springnote.com 中输入《域名》值。)'; +?> diff --git a/modules/springnote/skins/xe_official/list.html b/modules/springnote/skins/xe_official/list.html index 6c543e85d..f6b3dc666 100644 --- a/modules/springnote/skins/xe_official/list.html +++ b/modules/springnote/skins/xe_official/list.html @@ -92,13 +92,16 @@
    -
    + +
    {$page->source}
    +
    +
    @@ -115,6 +118,7 @@ {@ $_idx++}
    + {$module_info->footer_text} diff --git a/modules/springnote/springnote.model.php b/modules/springnote/springnote.model.php index 2de4a644d..59e1f2d9e 100644 --- a/modules/springnote/springnote.model.php +++ b/modules/springnote/springnote.model.php @@ -16,6 +16,7 @@ var $appkey = '82dee99105c92c166bb8586415d47283b9a54cd2'; var $server = 'api.springnote.com'; var $port = 80; + var $domain = ''; /** * @brief 초기화 @@ -26,16 +27,17 @@ /** * @brief 스프링노트 페이지를 가져오기 위한 기본 값 설정 **/ - function setInfo($userid, $userkey) { + function setInfo($userid, $userkey, $domain = '') { $this->userid = $userid; $this->userkey = $userkey; + $this->domain = $domain; } /** * @brief url 생성 **/ function getUrl($pageid = null) { - return sprintf('http://%s:%s/pages%s.xml', $this->server, $this->port, $pageid?'/'.$pageid:''); + return sprintf('http://%s:%s/pages%s.xml%s', $this->server, $this->port, $pageid?'/'.$pageid:'', $this->domain?'?domain='.$this->domain:''); } /** @@ -93,7 +95,13 @@ $page->source = trim($xmldoc->page->source->body); // source에서 /pages/숫자로 되어 있는 url의 수정 - $page->source = preg_replace('/="\/pages\/([0-9]+)"/is','="?mid='.Context::get('mid').'&pageid=\\1"', $page->source); + $page->source = preg_replace('/="\/pages\/([0-9]+)(#[^"]+)?"/is','="./?mid='.Context::get('mid').'&pageid=\\1\\2"', $page->source); + + // 첨부파일의 경로를 변경 + $page->source = preg_replace('/="\/pages\/([0-9]+)\/attachments\/([0-9]+)"/is','="'.$page->uri.'/attachments/\\2"', $page->source); + + // Change path of the template images + $page->source = preg_replace('/="\/images\/template\/([^"]+)"/is','="http://zbxe.springnote.com/images/template/\\1"', $page->source); $uri = preg_replace('/pages(.*)$/i','',$page->uri); $page->css_files = array( @@ -106,10 +114,14 @@ /** * @brief springnote 페이지 목록 가져오기 **/ - function getPages($query = null, $fulltext = true) { + function getPages($query = null, $fulltext = true, $p_pageid = 0) { - if($query) $url = sprintf('%s?q=%s&fulltext=%d', $this->getUrl(), urlencode($query), $fulltext?1:0); - else $url = $this->getUrl(); + if($query) { + if($this->domain) $url = sprintf('%s&q=%s&fulltext=%d', $this->getUrl(), urlencode($query), $fulltext?1:0); + else $url = sprintf('%s?q=%s&fulltext=%d', $this->getUrl(), urlencode($query), $fulltext?1:0); + } else { + $url = $this->getUrl(); + } $oReqeust = $this->getRequest($url); $oResponse = $oReqeust->sendRequest(); @@ -145,6 +157,8 @@ else $root->child[] = &$pages[$pageid]; } + if($p_pageid) $this->getNodes($root->child, $p_pageid, $root); + $pages = array(); $this->arrangePages($pages, $root->child, 0); @@ -153,6 +167,21 @@ return $pages; } + /** + * @brief 특정 노드아래만 검색을 하기 위할때 해당 노드의 page_id를 받아서 해당 노드tree만 리턴 + **/ + function getNodes($list, $p_pageid, &$root) { + if(!count($list)) return; + foreach($list as $key => $val) { + if($val->pageid == $p_pageid) { + $root = $val; + return; + } + + if($val->child) $this->getNodes($val->child, $p_pageid, $root); + } + } + /** * @brief 스프링노트 서버에서 보내준 페이지를 정렬 **/ diff --git a/modules/springnote/springnote.view.php b/modules/springnote/springnote.view.php index 6bd46c186..fb7d2db5d 100644 --- a/modules/springnote/springnote.view.php +++ b/modules/springnote/springnote.view.php @@ -38,24 +38,32 @@ if(!$this->grant->list) return $this->dispSpringnoteMessage('msg_not_permitted'); $pageid = (int)Context::get('pageid'); - if(!$pageid) $pageid = $this->module_info->pageid; + if($this->module_info->pageid && $this->module_info->pageid_option != 'list') $pageid = $this->module_info->pageid; + if(!$pageid && $this->module_info->pageid) $pageid = $this->module_info->pageid; $q = Context::get('q'); $oSpringnoteModel = &getModel('springnote'); - $oSpringnoteModel->setInfo($this->module_info->openid, $this->module_info->userkey); + $oSpringnoteModel->setInfo($this->module_info->openid, $this->module_info->userkey, $this->module_info->domain); // 특정 페이지 선택시 페이지 정보 가져오기 if($this->grant->view && $pageid) { $page = $oSpringnoteModel->getPage($pageid); - for($i=0;$icss_files);$i++) { - $css_file = $page->css_files[$i]; - Context::addCssFile($css_file); + if($page) { + for($i=0;$icss_files);$i++) { + $css_file = $page->css_files[$i]; + Context::addCssFile($css_file); + } + Context::addBrowserTitle($page->title); } } // 페이지 목록 가져오기 - $pages = $oSpringnoteModel->getPages($q, true); + if($this->module_info->pageid && $this->module_info->pageid_option != 'list') $pages = null; + else { + if($this->module_info->pageid && $this->module_info->pageid_option == 'list') $pages = $oSpringnoteModel->getPages($q, true, $this->module_info->pageid); + else $pages = $oSpringnoteModel->getPages($q, true); + } Context::set('page', $page); Context::set('pages', $pages); diff --git a/modules/springnote/tpl/filter/insert_springnote.xml b/modules/springnote/tpl/filter/insert_springnote.xml index 4dc48181f..fb4ddd5df 100644 --- a/modules/springnote/tpl/filter/insert_springnote.xml +++ b/modules/springnote/tpl/filter/insert_springnote.xml @@ -10,6 +10,8 @@ + + diff --git a/modules/springnote/tpl/grant_list.html b/modules/springnote/tpl/grant_list.html index e57483ab8..dde86a6f5 100644 --- a/modules/springnote/tpl/grant_list.html +++ b/modules/springnote/tpl/grant_list.html @@ -7,32 +7,32 @@ -
    {$lang->no}
    - - - - - - - - - - - - - - - - - - -
    {$lang->target}
    {$val->title} - - grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> - - - {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    - -
    + +++++ + + + + + + + + + + + + + +
    {$lang->target}
    {$val->title} + + grants[$key])&&in_array($v->group_srl,$module_info->grants[$key]))-->checked="checked"/> + + + {$lang->cmd_select_all}{$lang->cmd_unselect_all}
    + +
    diff --git a/modules/springnote/tpl/index.html b/modules/springnote/tpl/index.html index 2b82924e1..0cc9f270f 100644 --- a/modules/springnote/tpl/index.html +++ b/modules/springnote/tpl/index.html @@ -7,12 +7,54 @@ + +++++++ +++ +++++++ + +++++++ + +++++++ + +++++++ @@ -53,7 +95,7 @@ {htmlspecialchars($val->browser_title)} - + diff --git a/modules/springnote/tpl/skin_info.html b/modules/springnote/tpl/skin_info.html index 732a24cb8..6f22d40f3 100644 --- a/modules/springnote/tpl/skin_info.html +++ b/modules/springnote/tpl/skin_info.html @@ -58,10 +58,10 @@ + + + + + + + + @@ -65,6 +65,21 @@

    {$lang->about_springnote_pageid}

    + + + + + + + + diff --git a/modules/tag/tag.controller.php b/modules/tag/tag.controller.php index 8e61a026e..4de779b38 100644 --- a/modules/tag/tag.controller.php +++ b/modules/tag/tag.controller.php @@ -55,7 +55,9 @@ $tag_list = explode(',',$tags); $tag_count = count($tag_list); for($i=0;$i<$tag_count;$i++) { - $args->tag = $tag_list[$i]; + unset($args->tag); + $args->tag = trim($tag_list[$i]); + if(!$args->tag) continue; $output = executeQuery('tag.insertTag', $args); if(!$output->toBool()) return $output; } diff --git a/modules/trackback/tpl/trackback_list.html b/modules/trackback/tpl/trackback_list.html index 0079bd52d..1b9813b5c 100644 --- a/modules/trackback/tpl/trackback_list.html +++ b/modules/trackback/tpl/trackback_list.html @@ -7,19 +7,19 @@
    -
    {$lang->no} {zdate($val->regdate,"Y-m-d")}{$lang->cmd_view}{$lang->cmd_view} {$lang->cmd_delete}
    {$val->title} - + - + {$lang->springnote_pageid} {$module_info->pageid} 
    {$lang->springnote_pageid_setup}{$lang->springnote_pageid_option_only}{$lang->springnote_pageid_option_list}
    {$lang->springnote_domain}{$module_info->domain} 
    {$lang->layout} diff --git a/modules/springnote/tpl/springnote_insert.html b/modules/springnote/tpl/springnote_insert.html index 0b967ec99..9304302a5 100644 --- a/modules/springnote/tpl/springnote_insert.html +++ b/modules/springnote/tpl/springnote_insert.html @@ -18,7 +18,7 @@
    {$lang->mid} - +

    {$lang->about_mid}

    {$lang->springnote_pageid_setup} +

    pageid_option!='list')-->checked="checked" id="springnote_pageid_option_only" />

    +

    pageid_option=='list')-->checked="checked" id="springnote_pageid_option_list" />

    +

    {$lang->about_springnote_pageid_setup}

    +
    {$lang->springnote_domain} + +

    {$lang->about_springnote_domain}

    +
    {$lang->browser_title}
    - - - - - - - - -
    {$lang->enable_trackback} - enable_trackback!='N')-->checked="checked"/> {$lang->cmd_use} -

    {$lang->about_enable_trackback}

    -
    + ++++ + + + + +
    {$lang->enable_trackback} + enable_trackback!='N')-->checked="checked"/> {$lang->cmd_use} +

    {$lang->about_enable_trackback}

    +
    @@ -30,59 +30,106 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {$lang->no} -
    - - - -
    -
    {$lang->blog_name}{$lang->title}{$lang->date}{$lang->ipaddress}{$lang->cmd_move}
    - {$no} - {$module_list[$val->module_srl]->browser_title}{htmlspecialchars($val->blog_name)}{htmlspecialchars($val->title)}{zdate($val->regdate,"Y-m-d")}{$val->ipaddress}{$lang->cmd_move}
    - - {$val->excerpt} -
    + + + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {$lang->no} +
    + + + +
    +
    {$lang->blog_name}{$lang->title}{$lang->date}{$lang->ipaddress}{$lang->cmd_move}
    + {$no} + {$module_list[$val->module_srl]->browser_title}{htmlspecialchars($val->blog_name)}{htmlspecialchars($val->title)}{zdate($val->regdate,"Y-m-d")}{$val->ipaddress}{$lang->cmd_move}
    + + {$val->excerpt} +
    diff --git a/modules/ttimporter/conf/info.xml b/modules/ttimporter/conf/info.xml deleted file mode 100644 index 71f5a610c..000000000 --- a/modules/ttimporter/conf/info.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - TatterTools 데이터 이전 - TatterTools 数据导入 - TatterToolsデータ移転 - Transfer data from TatterTools - Перенос данных из TatterTools - - 제로 - zero - Zero - Zero - zero - - 태터툴즈의 백업파일을 제로보드XE에 입력을 하는 모듈입니다. - 첨부파일 포함하지 않은 백업파일이 필요합니다. - 첨부파일은 원주소에서 직접 다운로드를 하게 됩니다. - - - 导入TatterTools的备份文件到Zeroboard XE的模块。 - 需要不包含附件的备份文件。 - 附件将在原地址直接下载。 - - - TatterToolsのバックアップファイルをゼロボードXE用にデータの変換を行うモジュールです。 - 添付ファイルを含まないバックアップファイルが必要です。 - 添付ファイルは、元のアドレスからダウンロードします。 - - - Module for inputting TattertTools' backup file to ZeroboardXE. - Backup file without attachment is required. - Attachments will be downloaded from the original address. - - - Модуль для ввода данных бекап-файла из TattertTools в ZeroboardXE. - Требуется бекап-файл без вложений. - Вложения будут скачены с оригинального адреса. - - - diff --git a/modules/ttimporter/lang/ru.lang.php b/modules/ttimporter/lang/ru.lang.php deleted file mode 100644 index 1d9ae75b0..000000000 --- a/modules/ttimporter/lang/ru.lang.php +++ /dev/null @@ -1,21 +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->ttimporter = "Имортировать данные Tetter Tools"; - $lang->about_tt_importer = "Вы можете ипортировать дынне Tetter Tools в любой модуль.\n Вложенный файл будет напрямую скачан через Веб, поэтому, пожалуйста, убедитесь в том, что оригинальный Tetter Tools работает."; - - $lang->target_module = "Модуль назначения"; - $lang->target_file = "XML файл назначения"; - $lang->target_url = "URL Блога"; - - $lang->cmd_continue = 'Продолжить'; - - $lang->msg_no_xml_file = 'Невозможно найти XML файл! Пожалуйста, проверьте URL.'; - $lang->msg_invalid_xml_file = 'Неверный тип XML файла!'; - $lang->msg_importing = 'Импортирование: %d (если будет задержка, пожалуйста, нажмите кнопку "Продолжить".)'; - $lang->msg_import_finished = 'Импортировано: %d (согласно состоянию, некоторые данные могут быть импортированы неверно.)'; -?> diff --git a/modules/widget/lang/en.lang.php b/modules/widget/lang/en.lang.php index bf0d72918..b0dc4f598 100644 --- a/modules/widget/lang/en.lang.php +++ b/modules/widget/lang/en.lang.php @@ -41,25 +41,25 @@ $lang->about_widget_code_in_page = 'After entering the required values, click the [Add] button to insert the widget code into the page.'; $lang->about_widget = "A widget is a small free-standing application used in a layout or page module.\n It can be linked with internal module or external open api. Through its configuration setting, wide application is possible. \n You can directly add a widget by using the [Generate Code] function without using the Zeroboard XE page module or layout module."; - $lang->cmd_content_insert = "내용 직접 추가"; - $lang->cmd_box_widget_insert = "상자 위젯 추가"; - $lang->cmd_remove_all_widgets = "내용 모두 지우기"; + $lang->cmd_content_insert = "Insert Content by Yourself"; + $lang->cmd_box_widget_insert = "Insert Box Widget"; + $lang->cmd_remove_all_widgets = "Remove All Widgets"; - $lang->cmd_widget_size = "위젯 크기"; - $lang->cmd_widget_align = "위젯 정렬"; - $lang->cmd_widget_align_left = "왼쪽"; - $lang->cmd_widget_align_right = "오른쪽"; - $lang->cmd_widget_margin = "외부 여백"; - $lang->cmd_widget_padding = "내부 여백"; - $lang->cmd_widget_border = "위젯 테두리"; - $lang->cmd_widget_border_solid = "실선"; - $lang->cmd_widget_border_dotted = "점선"; - $lang->cmd_widget_background_color = "배경색"; - $lang->cmd_widget_background_image_url = "배경 이미지"; - $lang->cmd_widget_background_image_repeat = "반복"; - $lang->cmd_widget_background_image_no_repeat = "고정"; - $lang->cmd_widget_background_image_x_repeat = "가로 반복"; - $lang->cmd_widget_background_image_y_repeat = "세로 반복"; - $lang->cmd_widget_background_image_x = "가로 위치"; - $lang->cmd_widget_background_image_y = "세로 위치"; + $lang->cmd_widget_size = "Widget Size"; + $lang->cmd_widget_align = "Align Widget"; + $lang->cmd_widget_align_left = "Left"; + $lang->cmd_widget_align_right = "Right"; + $lang->cmd_widget_margin = "Margin"; + $lang->cmd_widget_padding = "Padding"; + $lang->cmd_widget_border = "Border"; + $lang->cmd_widget_border_solid = "Solid"; + $lang->cmd_widget_border_dotted = "Dotted"; + $lang->cmd_widget_background_color = "Background Color"; + $lang->cmd_widget_background_image_url = "Background Image"; + $lang->cmd_widget_background_image_repeat = "Repeat"; + $lang->cmd_widget_background_image_no_repeat = "No Repeat"; + $lang->cmd_widget_background_image_x_repeat = "X Repeat"; + $lang->cmd_widget_background_image_y_repeat = "Y Repeat"; + $lang->cmd_widget_background_image_x = "X Position"; + $lang->cmd_widget_background_image_y = "Y Position"; ?> diff --git a/modules/widget/lang/zh-CN.lang.php b/modules/widget/lang/zh-CN.lang.php index 308d7a31b..76f91fd91 100644 --- a/modules/widget/lang/zh-CN.lang.php +++ b/modules/widget/lang/zh-CN.lang.php @@ -38,7 +38,7 @@ $lang->msg_widget_proc_is_null = '不能执行%s控件的 proc()!'; $lang->about_widget_code = '输入被选控件所需要的下列各项后,按『代码生成』按钮,即可在页面下方获得可以用在布局模版代码片断。'; - $lang->about_widget_code_in_page = '输入下列各项必要值后,按“添加”按钮,即可把控件插入到页面当中。'; + $lang->about_widget_code_in_page = '输入下列各项必要值后,按『代码生成』按钮,即可把控件插入到页面当中。'; $lang->about_widget = "控件是在布局或页面模块中使用的一种小部件。\n不仅可以关联内部模块或外部open api,而且通过设置可以用在多种用途。\n即使不使用Zeroboard XE的页面模块或布局模块,也可以通过『代码生成』功能直接可以添加相应控件。"; $lang->cmd_content_insert = "添加内容"; diff --git a/modules/widget/tpl/downloaded_widget_list.html b/modules/widget/tpl/downloaded_widget_list.html index a5c55cb47..a77e038e1 100644 --- a/modules/widget/tpl/downloaded_widget_list.html +++ b/modules/widget/tpl/downloaded_widget_list.html @@ -5,12 +5,23 @@ ------+ +{@ $col_width = array(0,80,120,80,140,80)} + +{@ $col_width = array(0,80,120,80,140,80)} + +{@ $col_width = array(0,80,120,80,140,80)} + +{@ $col_width = array(0,80,120,80,140,80)} + +{@ $col_width = array(0,60,120,75,140,110)} + +{@ $col_width = array(0,60,120,80,140,125)} + + + +width="{$width}" /> + diff --git a/modules/widget/tpl/js/widget.js b/modules/widget/tpl/js/widget.js index 5ffd0f3e7..ecec79d36 100644 --- a/modules/widget/tpl/js/widget.js +++ b/modules/widget/tpl/js/widget.js @@ -4,6 +4,24 @@ * @brief 위젯 관리용 자바스크립트 **/ +/* document.write(ln)의 경우 ajax로 처리시 가로채기 위한 함수 */ +document.write = document.writeln = function(str){ + if ( str.match(/^<\//) ) return; + if ( !window.opera ) str = str.replace(/&(?![#a-z0-9]+;)/g, "&"); + str = str.replace(/(<[a-z]+)/g, "$1 xmlns='http://www.w3.org/1999/xhtml'"); + var div = null; + if(document.createElementNS) div = document.createElementNS("http://www.w3.org/1999/xhtml","div"); + else div = xCreateElement('div'); + xInnerHtml(div, str); + var pos; + pos = document.getElementsByTagName("*"); + pos = pos[pos.length - 1]; + var nodes = div.childNodes; + while ( nodes.length ) { + pos.parentNode.appendChild( nodes[0] ); + } +}; + /* DOM 속성을 구하기 위한 몇가지 함수들.. */ // style의 값을 구하는게 IE랑 그외가 다름. function getStyle(obj) { @@ -180,19 +198,8 @@ function doSyncPageContent() { // 부모창에 위젯을 추가 function completeAddContent(ret_obj) { var tpl = ret_obj["tpl"]; - - selected_node = opener.selectedWidget; - - if(selected_node && selected_node.getAttribute("widget")) { - selected_node = replaceOuterHTML(selected_node, tpl); - } else { - var obj = opener.zonePageObj; - xInnerHtml(obj, xInnerHtml(obj)+tpl); - } - - if(opener.doFitBorderSize) opener.doFitBorderSize(); + opener.doAddWidgetCode(tpl); window.close(); - return false; } @@ -244,6 +251,31 @@ function doFitBorderSize() { var selectedWidget = null; +// 위젯 추가 +function doAddWidgetCode(widget_code) { + var dummy = xCreateElement('div'); + xInnerHtml(dummy, widget_code); + + var nodes = dummy.childNodes; + + var zoneObj = xGetElementById('zonePageContent'); + + if(selectedWidget && selectedWidget.getAttribute("widget")) { + while ( nodes.length ) { + if(nodes[0].className == 'widgetClass') zoneObj.parentNode.insertBefore(nodes[0], zoneObj); + else selectedWidget.parentNode.insertBefore(nodes[0], selectedWidget); + } + selectedWidget.parentNode.removeChild(selectedWidget); + } else { + while ( nodes.length ) { + if(nodes[0].className == 'widgetClass') zoneObj.parentNode.insertBefore(nodes[0], zoneObj); + else zoneObj.appendChild(nodes[0]); + } + } + + doFitBorderSize(); +} + // 클릭 이벤트시 위젯의 수정/제거/이벤트 무효화 처리 function doCheckWidget(e) { var evt = new xEvent(e); if(!evt.target) return; @@ -481,7 +513,15 @@ function doApplyWidgetSize(fo_obj) { if(width) selectedSizeWidget.style.width = width; var height = _getSize(fo_obj.height.value); - if(height) selectedSizeWidget.style.height = height; + if(height && height != "100%") selectedSizeWidget.style.height = height; + else { + selectedSizeWidget.style.height = ''; + var widgetBorder = xGetElementsByClassName('widgetBorder',selectedSizeWidget); + for(var i=0;i $val) { - if(strpos($val,'|@|')>0) $val = str_replace('|@|',',',$val); - $attribute[] = sprintf('%s="%s"', $key, str_replace('"','\"',$val)); + if(strpos($val,'|@|') > 0) $val = str_replace('|@|', ',', $val); + $val = htmlspecialchars($val); + $attribute[] = sprintf('%s="%s"', $key, $val); } } diff --git a/widgets/calendar/skins/blog_calendar_list/calendar.html b/widgets/calendar/skins/blog_calendar_list/calendar.html index 59d0b6d71..a9099a851 100644 --- a/widgets/calendar/skins/blog_calendar_list/calendar.html +++ b/widgets/calendar/skins/blog_calendar_list/calendar.html @@ -33,9 +33,9 @@ {@ $item_class_name = "posted"} - {@ $day_link = getUrl('','mid',$layout_info->mid,'search_target','regdate','search_keyword',$cur_date) } + {@ $day_link = getUrl('','mid',$widget_info->module_name?$widget_info->module_name:$layout_info->mid,'search_target','regdate','search_keyword',$cur_date) } - {@ $day_link = getUrl('','mid',$mid,'search_target','regdate','search_keyword',$cur_date) } + {@ $day_link = getUrl('','mid',$widget_info->module_name?$widget_info->module_name:$mid,'search_target','regdate','search_keyword',$cur_date) } {@ $item_class_name = ""} diff --git a/widgets/calendar/skins/cozy_simple/calendar.html b/widgets/calendar/skins/cozy_simple/calendar.html index 79bb2e463..b364ed714 100644 --- a/widgets/calendar/skins/cozy_simple/calendar.html +++ b/widgets/calendar/skins/cozy_simple/calendar.html @@ -57,9 +57,9 @@ {@ $item_class_name = "posted"} - {@ $day_link = getUrl('','mid',$layout_info->mid,'search_target','regdate','search_keyword',$cur_date) } + {@ $day_link = getUrl('','mid',$widget_info->module_name?$widget_info->module_name:$layout_info->mid,'search_target','regdate','search_keyword',$cur_date) } - {@ $day_link = getUrl('','mid',$mid,'search_target','regdate','search_keyword',$cur_date) } + {@ $day_link = getUrl('','mid',$widget_info->module_name?$widget_info->module_name:$mid,'search_target','regdate','search_keyword',$cur_date) } {@ $item_class_name = ""} diff --git a/widgets/gagachat/conf/info.xml b/widgets/gagachat/conf/info.xml new file mode 100644 index 000000000..5387ab876 --- /dev/null +++ b/widgets/gagachat/conf/info.xml @@ -0,0 +1,79 @@ + + + 가가 채팅 + + 디지레이브 + 실시간 채팅방을 생성합니다 + + + + 채팅방 이름(필수/영문) + text + 채팅방 이름. + (@, @@, @@@ 로 시작하는 채팅방은 회원 시스템과 연동 가능한 보안 채팅방) + 보안 채팅방은 http://www.gagalive.kr/live/livechatxe 에서 신청하시길 바랍니다. + 회원 시스템과 연동하지 않을 경우 별도의 신청 필요 없이 원하는 채팅방 이름만 입력하면 됩니다. + + + + 채팅방 보안 키(선택사항) + text + 보안 채팅방 사용시에만 필요함. 보안 채팅방을 사용하지 않을 경우에는 빈 칸으로 놔두시길 바랍니다. + + + 채팅방 관리자(선택사항) + text + 보안 채팅방 사용시에만 적용됨. 강제 퇴장 기능 가능함. 아이디, 아이디2, 아이디3 처럼 채팅방 관리자들을 , 로 분리하시길 바랍니다. + + + 채팅방 형태 + select + 세로형/가로형 + + 세로형 + 2 + + + 가로형 + 1 + + + + 채팅방 높이(선택사항) + text + 채팅방 높이(기본값 450) + + + 글씨체(선택사항) + text + Font-family 예) 굴림체 + + + 글씨 색깔(선택사항) + text + 채팅방 글씨 색깔 예) white 또는 #FFFFFF + + + 배경 색깔(선택사항) + text + 채팅방 배경 색깔 예) black 또는 #000000 + + + 큰 글씨체 + select + 글씨체 크기 + + 작은 글씨체 + small + + + 중간 글씨체 + medium + + + 큰 글씨체 + large + + + + diff --git a/widgets/gagachat/gagachat.class.php b/widgets/gagachat/gagachat.class.php new file mode 100644 index 000000000..ec3347299 --- /dev/null +++ b/widgets/gagachat/gagachat.class.php @@ -0,0 +1,105 @@ +widget_path, $args->skin); + Context::set('colorset', $args->colorset); + /* + $name = getenv("HTTP_HOST") . getenv("SCRIPT_NAME"); + $name = preg_replace("/^http:\/\//", "" ,$name); + $name = preg_replace("/(.+)\/.+?$/", "$1" ,$name); + */ + $name = $args->chatroom; + $roomkey = $args->roomkey; + $gposition = $args->gposition; + $gfonttype = $args->gfonttype; + $gfontcolor = $args->gfontcolor; + $gbgcolor = $args->gbgcolor; + + if(strlen($args->gheight) > 2) { + $gheight = $args->gheight; + } + else { + $gheight = 450; + } + $fontlarge = $args->fontlarge; + $gagaadmin = $args->gagaadmin; + $gagaadmin = preg_replace('/\s*,\s*/', ',', $gagaadmin); + $gagaadmins = split(',', $gagaadmin); + + $fixbug = 0; + + $vars = Context::getRequestVars(); + if($vars->act == "dispPageAdminContentModify") { + $fixbug = 15; + } + + Context::set('fixbug', $fixbug); + Context::set('gheight', $gheight); + Context::set('gposition', $gposition); + Context::set('fontlarge', $fontlarge); + Context::set('gfonttype', $gfonttype); + Context::set('gfontcolor', $gfontcolor); + Context::set('gbgcolor', $gbgcolor); + Context::set('name', $name); + + $tpl_file = 'livechat'; + + if(substr($name, 0, 1) == "#" || substr($name, 0, 1) == "@") { + if(Context::get('is_logged')) { + $oModuleModel = &getModel('module'); + $this->member_config = $oModuleModel->getModuleConfig('member'); + $logged_info = Context::get('logged_info'); + //Context::set('member_config', $this->member_config); + Context::set('user', $logged_info->nick_name); + Context::set('userkey', userKey($logged_info->nick_name, $roomkey)); + foreach($gagaadmins as $value) { + if($logged_info->user_id == $value) { + //일반 유저인 경우 + Context::set('userkey', md5(userKey($logged_info->nick_name, $roomkey))); + } //관리자인 경우 + } + $tpl_file = 'livechat2'; + } + } + // 템플릿 파일을 지정 + /* + if(Context::get('is_logged')) $tpl_file = 'login_info'; + else $tpl_file = 'login_form'; + + // 회원 관리 정보를 받음 + $oModuleModel = &getModel('module'); + $this->member_config = $oModuleModel->getModuleConfig('member'); + Context::set('member_config', $this->member_config); + */ + + // 템플릿 컴파일 + $oTemplate = &TemplateHandler::getInstance(); + return $oTemplate->compile($tpl_path, $tpl_file); + } + + + } + + if($GLOBALS['userKeyDefined'] != 1) { + $GLOBALS['userKeyDefined'] = 1; + function userKey($user, $roomKey) { + return md5(md5($user . $roomKey) . $roomKey); + } +} +?> diff --git a/widgets/gagachat/skins/default/js/AC_RunActiveContent.js b/widgets/gagachat/skins/default/js/AC_RunActiveContent.js new file mode 100644 index 000000000..1f9190af3 --- /dev/null +++ b/widgets/gagachat/skins/default/js/AC_RunActiveContent.js @@ -0,0 +1,126 @@ +//v1.0 +//Copyright 2006 Adobe Systems, Inc. All rights reserved. +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ' '; + str += ' + + + + + +
    diff --git a/widgets/gagachat/skins/default/livechat.html b/widgets/gagachat/skins/default/livechat.html new file mode 100644 index 000000000..9f0f51c39 --- /dev/null +++ b/widgets/gagachat/skins/default/livechat.html @@ -0,0 +1,12 @@ + + +
    + +
    +
    \ No newline at end of file diff --git a/widgets/gagachat/skins/default/livechat2.000.html b/widgets/gagachat/skins/default/livechat2.000.html new file mode 100644 index 000000000..89b55fd4a --- /dev/null +++ b/widgets/gagachat/skins/default/livechat2.000.html @@ -0,0 +1,9 @@ + + + + + + +
    \ No newline at end of file diff --git a/widgets/gagachat/skins/default/livechat2.html b/widgets/gagachat/skins/default/livechat2.html new file mode 100644 index 000000000..704398a90 --- /dev/null +++ b/widgets/gagachat/skins/default/livechat2.html @@ -0,0 +1,12 @@ + + +
    + +
    +
    \ No newline at end of file diff --git a/widgets/gagachat/skins/default/skin.xml b/widgets/gagachat/skins/default/skin.xml new file mode 100644 index 000000000..2ea564dc7 --- /dev/null +++ b/widgets/gagachat/skins/default/skin.xml @@ -0,0 +1,13 @@ + + + 가가 채팅 기본 스킨 + + 디지레이브 + newest_document의 기본 스킨 + + + + 기본 + + + diff --git a/widgets/login_info/skins/xe_official/login_info.html b/widgets/login_info/skins/xe_official/login_info.html index e40d7d1e5..9f37487cb 100644 --- a/widgets/login_info/skins/xe_official/login_info.html +++ b/widgets/login_info/skins/xe_official/login_info.html @@ -19,7 +19,7 @@
      -
    • {Context::getLang($val)}
    • +
    • {Context::getLang($val)}
    • diff --git a/widgets/newest_images/conf/info.xml b/widgets/newest_images/conf/info.xml index 2f9fa2065..d0e2078b3 100644 --- a/widgets/newest_images/conf/info.xml +++ b/widgets/newest_images/conf/info.xml @@ -68,7 +68,7 @@ 썸네일 생성 방법 - サムネール生成方法 + 生成方法 缩略图生成方式 Thumbnail Type Тип миниатюры diff --git a/widgets/tag_list/conf/info.xml b/widgets/tag_list/conf/info.xml index 8cfd26304..b56ab2f13 100644 --- a/widgets/tag_list/conf/info.xml +++ b/widgets/tag_list/conf/info.xml @@ -1,70 +1,70 @@ - - - 꼬리표 목록 출력 - 标签 - タグリスト表示 - Show Tag List - Mostrar la lista de etiqueta - Отображение списка тегов - - 제로 - 제로 - Zero - zero - zero - zero - 선택된 모듈의 꼬리표 목록을 정해진 순위만큼 노출하여 줍니다 - 显示被选模块指定个数的标签目录。 - 選択されたモジュールのタグリストを指定された順位まで表示します。 - This widget displays configured number of tags from target module. - Este widget muestra la liste de etiqueta según el orden definido en el módulo seleccionado. - Этот виджет отображает конфигурированное число тегов из модуля назначения. - - - - 제목 - 栏目名 - タイトル - Title - Título - Заголовок - text - 꼬리표 출력시 제목으로 출력됩니다. - 显示为标签目录的标题。 - タグ出力の際、タイトルとして表示されます。 - This will be shown as a title with tag list. - Este será el título al ser mostrada la etiqueta. - Это будет показано как заголовок со списком тегов. - - - 목록수 - 目录数 - リスト数 - Number of tags - Número de etiquetas - Число тегов - text - 출력될 목록의 수를 정하실 수 있습니다. (기본 20개) - 可设置要显示的标签数。 (默认为 20个) - 出力されるリストの数を指定することができます。(デフォルト20個) - You can configure the number of tags to show. (Default is 20) - Usted puede definir el número de etiquetas a mostrar. (predefinido: 20) - Вы можете сконфигурировать число тегов для показа. (стандарт: 20) - - - 대상 모듈 - 模块对象 - モジュール - Target Module - Módulo Objetivo - Модуль назначения - mid_list - 선택하신 모듈에 등록된 꼬리표를 대상으로 합니다. - 将把被选模块当中的标签作为对象。 - チェックされたモジュールに登録されたタグを対象とします。 - Tag list will be shown based on this target module. - Objetivo de la lista de etiquetas será la del módulo seleccionado. - Список тегов будет показан на основании этого модуля назначения. - - - + + + 꼬리표 목록 출력 + 标签 + タグリスト表示 + Show Tag List + Mostrar la lista de etiqueta + Отображение списка тегов + + 제로 + zero + Zero + zero + zero + zero + 선택된 모듈의 꼬리표 목록을 정해진 순위만큼 노출하여 줍니다 + 显示被选模块指定个数的标签目录。 + 選択されたモジュールのタグリストを指定された順位まで表示します。 + This widget displays configured number of tags from target module. + Este widget muestra la liste de etiqueta según el orden definido en el módulo seleccionado. + Этот виджет отображает конфигурированное число тегов из модуля назначения. + + + + 제목 + 栏目名 + タイトル + Title + Título + Заголовок + text + 꼬리표 출력시 제목으로 출력됩니다. + 显示为标签目录的标题。 + タグ出力の際、タイトルとして表示されます。 + This will be shown as a title with tag list. + Este será el título al ser mostrada la etiqueta. + Это будет показано как заголовок со списком тегов. + + + 목록수 + 目录数 + リスト数 + Number of tags + Número de etiquetas + Число тегов + text + 출력될 목록의 수를 정하실 수 있습니다. (기본 20개) + 可设置要显示的标签数。 (默认为 20个) + 出力されるリストの数を指定することができます。(デフォルト20個) + You can configure the number of tags to show. (Default is 20) + Usted puede definir el número de etiquetas a mostrar. (predefinido: 20) + Вы можете сконфигурировать число тегов для показа. (стандарт: 20) + + + 대상 모듈 + 模块对象 + モジュール + Target Module + Módulo Objetivo + Модуль назначения + mid_list + 선택하신 모듈에 등록된 꼬리표를 대상으로 합니다. + 将把被选模块当中的标签作为对象。 + チェックされたモジュールに登録されたタグを対象とします。 + Tag list will be shown based on this target module. + Objetivo de la lista de etiquetas será la del módulo seleccionado. + Список тегов будет показан на основании этого модуля назначения. + + + diff --git a/widgets/tag_list/skins/blog_tag_list/tags.html b/widgets/tag_list/skins/blog_tag_list/tags.html index f30a1f221..2f10930b2 100644 --- a/widgets/tag_list/skins/blog_tag_list/tags.html +++ b/widgets/tag_list/skins/blog_tag_list/tags.html @@ -43,9 +43,9 @@ class="{$tag_class}" > - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} diff --git a/widgets/tag_list/skins/cozy_simple/tags.html b/widgets/tag_list/skins/cozy_simple/tags.html index eb1b91b29..0383a5bc5 100644 --- a/widgets/tag_list/skins/cozy_simple/tags.html +++ b/widgets/tag_list/skins/cozy_simple/tags.html @@ -34,9 +34,9 @@
    • class="{$tag_class}" > - {cut_str($val->tag,15,'...')} + {cut_str($val->tag,15,'...')} - {cut_str($val->tag,15,'...')} + {cut_str($val->tag,15,'...')}
    • diff --git a/widgets/webzine/conf/info.xml b/widgets/webzine/conf/info.xml index 5a2d9bad2..ddc34722e 100644 --- a/widgets/webzine/conf/info.xml +++ b/widgets/webzine/conf/info.xml @@ -3,7 +3,7 @@ 웹진 형태 최근 문서 출력 网络杂志型主题列表 ウェブジンスタイル最新コンテンツ出力 - Display webzine style newest documents + Display Newest Articles with Webzine Style 웹진 형태 최근 문서 출력 Отображение последних статей в стиле webzine @@ -11,11 +11,11 @@ Zero Zero zero - zero + zero 최근 문서를 웹진형태로 출력하는 위젯입니다. 把最新主题显示为网络杂志类型的控件。 最新コンテンツをウェブジンスタイルで出力するウィジェットです。 - This widget displays newest articles like webzine style. + This widget displays newest articles with webzine style. 최근 문서를 웹진형태로 출력하는 위젯입니다. Этот виджет отображает последние статьи в стиле webzine. @@ -209,12 +209,12 @@ Número de imágenes Число изображений (колонка) text - 출력될 가로 이미지의 수를 정하실 수 있습니다. (기본 5개) - 表示されるイメージの横並びの数を指定します(デフォルト5個)。 - 可以指定要显示的横向图片个数。(默认为5个) - You can set the number of images to display. (5 as default) - Usted puede definir el múmero de imágenes a mostrar. (predefinido: 5) - Вы можете установить число изображений для показа. (стандарт: 5) + 출력될 가로 이미지의 수를 정하실 수 있습니다. (기본 1개) + 表示されるイメージの横並びの数を指定します(デフォルト1個)。 + 可以指定要显示的横向图片个数。(默认为1个) + You can set the number of images to display. (1 as default) + Usted puede definir el múmero de imágenes a mostrar. (predefinido: 1) + Вы можете установить число изображений для показа. (стандарт: 1)
      세로 이미지 수 @@ -224,7 +224,7 @@ Número de imágenes Число изображений (ряд) text - 출력될 세로 이미지의 수를 정하실 수 있습니다. (기본 1개) + 출력될 세로 이미지의 수를 정하실 수 있습니다. (기본 5개) 表示されるイメージの縦並びの数を指定することができます(デフォルト5個)。 可以指定要显示的纵向图片个数。(默认为1个) You can set the number of images to display. (5 as default) diff --git a/widgets/webzine/skins/xe_official/skin.xml b/widgets/webzine/skins/xe_official/skin.xml index 5faea42c1..556075bfc 100644 --- a/widgets/webzine/skins/xe_official/skin.xml +++ b/widgets/webzine/skins/xe_official/skin.xml @@ -3,7 +3,7 @@ 웹진형 최근글 출력 기본 스킨 ウェブジンスタイルの最新コンテンツ出力デフォルトスキン 网络杂志型主题列表默认皮肤 - Display newest documents like webzine style + Default Skin of Webzine Style Newest Articles 제로 Zero @@ -12,7 +12,7 @@ 글 목록과 이미지가 같이 출력되는 웹진형 스킨입니다. 이미지가 있는 글들만 노출이 됩니다. コンテンツリストとイメージが一緒に出力されるウェブジンスタイルスキンです。イメージを含むコンテンツのみ表示されます。 可以同时显示最新主题列表及缩略图的网络杂志型默认皮肤。只显示有图片的最新主题。 - 글 목록과 이미지가 같이 출력되는 웹진형 스킨입니다. 이미지가 있는 글들만 노출이 됩니다. + This is a webzine style skin that displays article list and images. Articles with images will be exposed only. diff --git a/widgets/webzine/webzine.class.php b/widgets/webzine/webzine.class.php index 863a15fb3..1de1edec6 100644 --- a/widgets/webzine/webzine.class.php +++ b/widgets/webzine/webzine.class.php @@ -37,11 +37,11 @@ // 세로 이미지 수 $widget_info->rows_list_count = (int)$args->rows_list_count; - if(!$widget_info->rows_list_count) $widget_info->rows_list_count = 3; + if(!$widget_info->rows_list_count) $widget_info->rows_list_count = 5; // 가로 이미지 수 $widget_info->cols_list_count = (int)$args->cols_list_count; - if(!$widget_info->cols_list_count) $widget_info->cols_list_count = 2; + if(!$widget_info->cols_list_count) $widget_info->cols_list_count = 1; // 정렬 대상 $widget_info->order_target = $args->order_target; @@ -108,6 +108,7 @@ $document_count = count($document_list); $total_count = $widget_info->rows_list_count * $widget_info->cols_list_count; for($i=$document_count;$i<$total_count;$i++) $document_list[] = new DocumentItem(); + $widget_info->document_list = $document_list; Context::set('widget_info', $widget_info);
    {$lang->widget_name}