From 14a165391a582565273a38e427e90049ba7d3a9b Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 25 Nov 2009 15:58:18 +0000 Subject: [PATCH 001/209] =?UTF-8?q?=EB=88=84=EB=9D=BD=EB=90=9C=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6991 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/module.model.php | 35 +++++++++++++++++++++++++ modules/module/tpl/module_selector.html | 3 ++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/modules/module/module.model.php b/modules/module/module.model.php index cb6981730..7a3d094f0 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -900,6 +900,41 @@ return $list; } + function checkNeedInstall($module_name) + { + $oDB = &DB::getInstance(); + $info = null; + + $moduledir = ModuleHandler::getModulePath($module_name); + if(file_exists(FileHandler::getRealPath($moduledir."schemas"))) + { + $tmp_files = FileHandler::readDir($moduledir."schemas", '/(\.xml)$/'); + $table_count = count($tmp_files); + + // 테이블이 설치되어 있는지 체크 + $created_table_count = 0; + for($j=0;$jisTableExists($table_name)) $created_table_count ++; + } + + // 설치 유무 체크 (설치는 DB의 설치만 관리) + if($table_count > $created_table_count) return true; + else return false; + } + return false; + } + + function checkNeedUpdate($module_name) + { + // 각 모듈의 module.class.php로 upgrade 유무 체크 + $oDummy = &getModule($module_name, 'class'); + if($oDummy && method_exists($oDummy, "checkUpdate")) { + return $oDummy->checkUpdate(); + } + return false; + } + /** * @brief 모듈의 종류와 정보를 구함 **/ diff --git a/modules/module/tpl/module_selector.html b/modules/module/tpl/module_selector.html index 47b3f287e..df9a5b8e7 100644 --- a/modules/module/tpl/module_selector.html +++ b/modules/module/tpl/module_selector.html @@ -52,7 +52,8 @@ {$k} {$v->browser_title} - browser_title)}',{$type=='single'?'false':'true'}); return false;" class="button green">{$type=='single'?$lang->cmd_select:$lang->cmd_insert} + + {$type=='single'?$lang->cmd_select:$lang->cmd_insert} {@ $_idx ++; } From e9582c0166bf8c2473a3590d4d4282d6d2246ca4 Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 25 Nov 2009 16:01:35 +0000 Subject: [PATCH 002/209] version changed to 1.3.1.1 git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6992 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index e2c4bd74d..40499f2ac 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -13,7 +13,7 @@ * @brief XE의 전체 버전 표기 * 이 파일의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함 **/ - define('__ZBXE_VERSION__', '1.3.1'); + define('__ZBXE_VERSION__', '1.3.1.1'); /** * @brief zbXE가 설치된 장소의 base path를 구함 From 11865f8bc0a00bddd94ad34eb67317f081bfed70 Mon Sep 17 00:00:00 2001 From: heemin Date: Thu, 26 Nov 2009 09:14:41 +0000 Subject: [PATCH 003/209] =?UTF-8?q?=EC=9D=BC=EB=B6=80=20=EC=9D=BC=EB=B3=B8?= =?UTF-8?q?=EC=96=B4=20=EB=B2=88=EC=97=AD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6993 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/conf/info.xml | 2 +- modules/autoinstall/conf/info.xml | 4 ++++ modules/autoinstall/lang/jp.lang.php | 31 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 modules/autoinstall/lang/jp.lang.php diff --git a/modules/admin/conf/info.xml b/modules/admin/conf/info.xml index 963fd7f46..6f226c22b 100644 --- a/modules/admin/conf/info.xml +++ b/modules/admin/conf/info.xml @@ -13,7 +13,7 @@ Module này hiển thị những đặc tính của những Module, và cho phép bạn sử dụng một chút quyền của Administrator bở việc áp dụng giao diện cho Administrator. Este módulo muestra una lista de características de cada módulo, en donde puede activar la función de la administracion aplicando el diseño del administrador. 列出各模块的功能并使用管理员布局,可以让其使用管理功能的模块。 - 各モジュールを機能別に並べ、かつ管理者用のレイアウトを適用させて、管理機能が使用出来るようにします。 + 各モジュールの機能を表示し、かつ管理者用のレイアウトを適用させて、管理機能が使用出来るようにします。 Этот модуль показывает список возможностей каждого модуля, и позволяет Вам использовать несколько менеджеров, применяя лейаут для администратора. 列出各模組的功能並使用管理員版面,可讓其使用管理功能的模組。 0.1 diff --git a/modules/autoinstall/conf/info.xml b/modules/autoinstall/conf/info.xml index 34109790e..58cc3e3fd 100644 --- a/modules/autoinstall/conf/info.xml +++ b/modules/autoinstall/conf/info.xml @@ -5,11 +5,13 @@ Cài đặt tự động 自動安裝 在线安装 + イージーインストール 관리자 모드에서 클릭으로 모듈/스킨/레이아웃/위젯/위젯스타일 등을 설치하는 모듈입니다. With this module, you can install and upgrade your programs including modules, skins, layouts, etc., from www.xpressengine.com by one-click. Với Module này, bạn có thể cập nhật và cài đặt các phiên bản một cách tự động. Bao gồm Module, Layout, Widget, Addon, ... từ trang chủ XE bằng một bấm chuột. With this module, you can install and upgrade your programs including modules, skins, layouts, etc., from www.xpressengine.com by one-click. 很方便的在管理页面一键安装XE相关模块(模块/皮肤/布局/控件/控件样式等)。 + 管理者モードにてクリックだけで、モジュール/スキン/レイアウト/ウィジェット/ウィジェットスタイルのインストールを可能にするモジュールです。 0.1 2009-11-11 system @@ -19,6 +21,7 @@ haneul haneul haneul + haneul sol @@ -26,5 +29,6 @@ sol sol sol + sol diff --git a/modules/autoinstall/lang/jp.lang.php b/modules/autoinstall/lang/jp.lang.php new file mode 100644 index 000000000..ef9805a12 --- /dev/null +++ b/modules/autoinstall/lang/jp.lang.php @@ -0,0 +1,31 @@ +autoinstall = 'イージーインストール'; + $lang->about_autoinstall = 'XpressEngineの様々なプログラムを管理者画面上で簡単にインストール・アップグレードするモジュールです。'; + $lang->package_update = '最新アップデート'; + $lang->package_downloaded_count = '全体ダウンロード'; + $lang->need_update = "アップデートが必要です。"; + + $lang->order_newest = "新規登録"; + $lang->order_popular = "人気"; + $lang->order_download = "ダウンロード"; + $lang->success_installed = "インストールが成功しました。"; + $lang->view_all_package = "全てをみる"; + $lang->description_ftp_note = "FTP設定が完了されないと、イージーインストールが動作しません。 FTP設定を確認して下さい。"; + $lang->description_update = "新しくインストールしたモジュールバージョン情報などは「アップデート」を押すと反映されます。"; + $lang->install = "インストール"; + $lang->update = "アップデート"; + $lang->current_version = "現インストールバージョン"; + $lang->depending_programs = "依存プログラム"; + $lang->require_update = "アップデートが必要です。"; + $lang->require_installation = "インストールが必要です。"; + $lang->description_install = "インストールに進みますと、本プログラムが依存している全てのプログラムをアップデート/インストールします。"; + $lang->description_download = "FTPの利用が出来ない場合は、直接ダウンロードし、サーバー上の該当パスにてインストールして下さい。 (一つ上階層にて解凍します。 ./modules/board の場合 ./modulesにて tarを解凍して下さい。)"; + $lang->path = "インストールパス"; + $lang->cmd_download = "ダウンロード"; +?> From b44e15e30a39ce27d170cfb469dcf9bfacc82a9c Mon Sep 17 00:00:00 2001 From: taggon Date: Fri, 27 Nov 2009 06:23:01 +0000 Subject: [PATCH 004/209] =?UTF-8?q?App=EB=8F=84=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=EB=A5=BC=20=EB=B0=9B=EC=95=84=EB=93=A4=EC=9D=B4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6994 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/js_app.js | 53 ++++++++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/common/js/js_app.js b/common/js/js_app.js index fb5d620d1..d93c2b178 100644 --- a/common/js/js_app.js +++ b/common/js/js_app.js @@ -1,6 +1,9 @@ /** - * @brief XE Application Framework + * @file js_app.js + * @author zero (zero@nzeo.com) + * @brief XE JavaScript Application Framework (JAF) * @namespace xe + * @update 20091120 */ (function($){ @@ -96,13 +99,13 @@ _xe_base = { /** * @brief overrides broadcast method */ - broadcast : function(oSender, msg, params) { + broadcast : function(sender, msg, params) { for(var i=0; i < _apps.length; i++) { - _apps[i].cast(oSender, msg, params); + _apps[i]._cast(sender, msg, params); } // cast to child plugins - this.cast(oSender, msg, params); + this._cast(sender, msg, params); } } @@ -200,7 +203,17 @@ _app_base = { oPlugin.oApp = null; }, - cast : function(sender, msg, params) { + cast : function(msg, params) { + return this._cast(this, msg, params || []); + }, + + broadcast : function(sender, msg, params) { + if (this.parent && this.parent.broadcast) { + this.parent.broadcast(sender, msg, params); + } + }, + + _cast : function(sender, msg, params) { var i, len; var aMsg = this._messages; @@ -210,8 +223,8 @@ _app_base = { this._fn_level++; // BEFORE hooker - if (typeof aMsg['BEFORE_'+msg] != 'undefined') { - var bContinue = this.cast(sender, 'BEFORE_'+msg, params); + if (aMsg['BEFORE_'+msg] || this['BEFORE_'+msg]) { + var bContinue = this._cast(sender, 'BEFORE_'+msg, params); if (!bContinue) { this._fn_level--; return; @@ -219,19 +232,19 @@ _app_base = { } // main api function - var vRet; - if ($.isFunction(aMsg[msg])) { - vRet = aMsg[msg](sender, params); - } else if ($.isArray(aMsg[msg])) { - vRet = []; + var vRet = [], sFn = 'API_'+msg; + if ($.isFunction(this[sFn])) vRet.push( this[sFn](sender, params) ); + if ($.isFunction(aMsg[msg])) vRet.push( aMsg[msg](sender, params) ); + else if ($.isArray(aMsg[msg])) { for(i=0; i < aMsg[msg].length; i++) { vRet.push( aMsg[msg][i](sender, params) ); } } + if (vRet.length < 2) vRet = vRet[0]; // AFTER hooker - if (typeof aMsg['AFTER_'+msg] != 'undefined') { - this.cast(sender, 'AFTER_'+msg, params); + if (aMsg['AFTER_'+msg] || this['AFTER_'+msg]) { + this._cast(sender, 'AFTER_'+msg, params); } // decrease function level @@ -243,12 +256,6 @@ _app_base = { if (typeof vRet == 'undefined') vRet = true; return $.isArray(vRet)?$.inArray(false, vRet):!!vRet; } - }, - - broadcast : function(sender, msg, params) { - if (this.parent && this.parent.broadcast) { - this.parent.broadcast(sender, msg, params); - } } }; @@ -257,8 +264,8 @@ _plugin_base = { _binded_fn : [], _cast : function(msg, params) { - if (this.oApp && this.oApp.cast) { - this.oApp.cast(this, msg, params || []); + if (this.oApp && this.oApp._cast) { + this.oApp._cast(this, msg, params || []); } }, _broadcast : function(msg, params) { @@ -269,6 +276,8 @@ _plugin_base = { /** * Event handler prototype + * + * function (oSender, params) */ }; From 85d2b674e8061ecf63da7dc82c3da93b46270536 Mon Sep 17 00:00:00 2001 From: supershop Date: Fri, 27 Nov 2009 09:21:03 +0000 Subject: [PATCH 005/209] english translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6995 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/autoinstall/conf/info.xml | 2 +- modules/autoinstall/lang/en.lang.php | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/autoinstall/conf/info.xml b/modules/autoinstall/conf/info.xml index 58cc3e3fd..ed3b709df 100644 --- a/modules/autoinstall/conf/info.xml +++ b/modules/autoinstall/conf/info.xml @@ -1,7 +1,7 @@ 쉬운 설치 - Easy-Installation + One Click Installer Cài đặt tự động 自動安裝 在线安装 diff --git a/modules/autoinstall/lang/en.lang.php b/modules/autoinstall/lang/en.lang.php index 8398d7ae1..a1ac5464e 100644 --- a/modules/autoinstall/lang/en.lang.php +++ b/modules/autoinstall/lang/en.lang.php @@ -1,31 +1,31 @@ autoinstall = 'Easy-install'; - $lang->about_autoinstall = 'It helps you install/upgrade progams(skins) of XE.'; + $lang->autoinstall = 'One Click Installer'; + $lang->about_autoinstall = 'One Click Installer will help you install/upgrade programs(skins) for XE.'; $lang->package_update = 'Recent Update'; $lang->package_downloaded_count = 'Download Count'; - $lang->need_update = "You need to update package list."; + $lang->need_update = "Please update package list first."; $lang->order_newest = "Newest"; $lang->order_popular = "Popular"; $lang->order_download = "Download"; - $lang->success_installed = "Installations succeeded."; + $lang->success_installed = "Successfully Installed"; $lang->view_all_package = "View All"; $lang->description_ftp_note = "If FTP configuration is not set, installation would not work. Please configure FTP information"; - $lang->description_update = "If you recently upgrade or install programs without easy installation module, please press update button to keep information of the programs updated."; + $lang->description_update = "If you have upgraded or installed programs without One Click Installer, please press update button to renew new information."; $lang->install = "Install"; $lang->update = "Update"; - $lang->current_version = "Installed version"; - $lang->depending_programs = "This program depends on "; + $lang->current_version = "Version"; + $lang->depending_programs = "This program is depending on "; $lang->require_update = "Update is required."; $lang->require_installation = "Installation is required."; - $lang->description_install = "Installation process also install/update programs which this program depends on"; - $lang->description_download = "When FTP is disabled, you should download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)"; + $lang->description_install = "One Click Installer will also install/update all other programs which this program is depending on"; + $lang->description_download = "If FTP is unavailable, you should manually download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)"; $lang->path = "Path"; $lang->cmd_download = "Download"; ?> From 96d323ca1fbc0c4978176f621351f931973771b6 Mon Sep 17 00:00:00 2001 From: misol Date: Sun, 29 Nov 2009 02:25:03 +0000 Subject: [PATCH 006/209] =?UTF-8?q?#18460937=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=ED=95=98=EB=82=98=EB=8F=84=20=EC=97=86=EC=9D=84=EB=95=8C=20?= =?UTF-8?q?=EB=9C=A8=EB=8A=94=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6996 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/addon/addon.admin.view.php | 6 ++++-- modules/addon/tpl/setup_addon.html | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/addon/addon.admin.view.php b/modules/addon/addon.admin.view.php index abef8efe9..b279390c5 100644 --- a/modules/addon/addon.admin.view.php +++ b/modules/addon/addon.admin.view.php @@ -55,8 +55,10 @@ // 모듈 카테고리 목록을 구함 $module_categories = $oModuleModel->getModuleCategories(); - foreach($mid_list as $module_srl => $module) { - $module_categories[$module->module_category_srl]->list[$module_srl] = $module; + if($mid_list) { + foreach($mid_list as $module_srl => $module) { + $module_categories[$module->module_category_srl]->list[$module_srl] = $module; + } } } else { $module_categories[0]->list = $mid_list; diff --git a/modules/addon/tpl/setup_addon.html b/modules/addon/tpl/setup_addon.html index d39b76217..a34a6627e 100644 --- a/modules/addon/tpl/setup_addon.html +++ b/modules/addon/tpl/setup_addon.html @@ -66,6 +66,7 @@ + +
{$lang->module} @@ -94,6 +95,7 @@
From 83a258b37e01d5fbc564b9a46095b1c0107b3a53 Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 29 Nov 2009 09:05:34 +0000 Subject: [PATCH 007/209] modified english translation for importer git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6997 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/importer/conf/info.xml | 4 +-- modules/importer/lang/en.lang.php | 58 +++++++++++++++---------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/modules/importer/conf/info.xml b/modules/importer/conf/info.xml index 2af8b7e98..97b56abbb 100644 --- a/modules/importer/conf/info.xml +++ b/modules/importer/conf/info.xml @@ -1,7 +1,7 @@ 데이터 이전 - data transferation + Data Importer Chuyển đổi Data 数据导入 データ移転 @@ -9,7 +9,7 @@ Трансферинг 資料匯入 XML파일을 이용하여 회원정보 또는 게시판등의 데이터를 입력합니다. - Inputting member information or board's data using XML file. + This module imports data of members and articles from XML file. Nhập thông tin thành viên hoặc Database sử dụng định dạng XML Data. 利用XML文件导入会员信息或版面数据。 XMLファイルを用いて会員情報または掲示板などの情報を入力します。 diff --git a/modules/importer/lang/en.lang.php b/modules/importer/lang/en.lang.php index 3af89015b..2096905d6 100644 --- a/modules/importer/lang/en.lang.php +++ b/modules/importer/lang/en.lang.php @@ -1,62 +1,62 @@ cmd_sync_member = 'Synchronize'; $lang->cmd_continue = 'Continue'; - $lang->preprocessing = 'It is preparing for transferring data.'; + $lang->preprocessing = 'Zeroboard is preparing for importing.'; // items - $lang->importer = 'Transfer Zeroboard Data'; - $lang->source_type = 'Previous Target'; + $lang->importer = 'Zeroboard Data Importer'; + $lang->source_type = 'Migration Target'; $lang->type_member = 'Member Data'; $lang->type_message = 'Message Data'; $lang->type_ttxml = 'TTXML'; - $lang->type_module = 'Articles Data'; + $lang->type_module = 'Article Data'; $lang->type_syncmember = 'Synchronize Member Data'; $lang->target_module = 'Target Module'; $lang->xml_file = 'XML File'; $lang->import_step_title = array( - 1 => 'Step 1. Select previous target', - 12 => 'Step 1-2. Select target module', - 13 => 'Step 1-3. Select target category', - 2 => 'Step 2. Upload XML file', - 3 => 'Step 2. Synchronize member data and article data', - 99 => 'Transferring data', + 1 => 'Step 1. Migration Target', + 12 => 'Step 1-2. Target Module', + 13 => 'Step 1-3. Target Category', + 2 => 'Step 2. XML File Location', + 3 => 'Step 2. Synchronize Member and Article Data', + 99 => 'Importing Data', ); $lang->import_step_desc = array( - 1 => 'Please select the XML file\'s type you wish to transfer.', - 12 => 'Please select the module you wish to transfer datas.', + 1 => 'Please select the XML file\'s type you wish to migrate.', + 12 => 'Please select the module you wish to import data.', 121 => 'Posts:', 122 => 'Guestbook:', - 13 => 'Please select the target category you wish to tranfer datas.', - 2 => "Please input the XML file's location you wish to tranfer datas.\nIf it is located in the same account, input absolute/relative path. If not, input the url starting with http://..", - 3 => 'The member data and article data may not be correct after the transferation. If that is the case, synchronize to repair it based on user_id.', - 99 => 'Transferring data in progress.', + 13 => 'Please select the category you wish to import data.', + 2 => "Please input the XML file's location that contains data to import.\nYou may input both absolute and relative path.", + 3 => 'Member and article data may not be correct after import. If so, please synchronize to recover them with user_id.', + 99 => 'Importing...', ); // guide/alert - $lang->msg_sync_member = 'Member and article data synchronization will begin by clicking the synchronize button.'; + $lang->msg_sync_member = 'Please click on Synchronize button to start data synchronization.'; $lang->msg_no_xml_file = 'Could not find XML file. Please check the path again'; $lang->msg_invalid_xml_file = 'Invalid type of XML file.'; - $lang->msg_importing = 'Writing %d datas of %d. (If it keeps being frozen, click the button "Continue")'; - $lang->msg_import_finished = '%d/%d datas were inputted completely. Depending on the situation, there might be some datas which couldn\'t be inputted.'; + $lang->msg_importing = 'Import %d items out of %d. (if process is stopped, click on Continue button)'; + $lang->msg_import_finished = '%d/%d items were imported completely. There could be some items that were not imported properly.'; $lang->msg_sync_completed = 'Completed synchronzing member article and comments.'; // blah blah.. - $lang->about_type_member = 'If you are transfering the member information, select this option'; - $lang->about_type_message = 'If you are transfering the message information, select this option'; - $lang->about_type_ttxml = 'If you are transfering the TTXML(textcube) information, select this option'; - $lang->about_ttxml_user_id = 'Please input user ID to set as author on transfering TTXML. (user ID must be already signed up)'; - $lang->about_type_module = 'If you are transfering the board or articles information, select this option'; - $lang->about_type_syncmember = 'If you are trying to synchronize the member information after transfering member and article information, select this option'; - $lang->about_importer = "You can transfer Zeroboard4, Zeroboard5 Beta or other program's data into XE's data.\nIn order to tranfer, you have to use XML Exporter to convert the data you want into XML File then upload it."; + $lang->about_type_member = 'If you are to import member data, please select this option'; + $lang->about_type_message = 'If you are to import message data, please select this option'; + $lang->about_type_ttxml = 'If you are to import TTXML(textcube) data, please select this option'; + $lang->about_ttxml_user_id = 'Please input user ID to set as author of TTXML data. (user ID must be already signed up)'; + $lang->about_type_module = 'If you are to import article data, please select this option'; + $lang->about_type_syncmember = 'If you are to import and synchronize member and article data, please select this option'; + $lang->about_importer = "Data Importer will help you import Zeroboard4, Zeroboard5 Beta or other program's data into XE.\nIn order to import, you first have to use XML Exporter to convert the data you want into XML File."; - $lang->about_target_path = "To get attachments from Zeroboard4, please input the address where Zeroboard4 is installed.\nIf it is located in the same server, input Zeroboard4's path such as /home/USERID/public_html/bbs\nIf it is not located in the same server, input the address where Zeroboard4 is installed. ex. http://Domain/bbs"; + $lang->about_target_path = "To get attachments from Zeroboard4, please input the path where Zeroboard4 is installed.\nIf it is located in the same server, please input Zeroboard4's path such as /home/USERID/public_html/bbs\nIf not, please input the address where Zeroboard4 is installed. ex. http://Domain/bbs"; ?> From 5bc70a3bcfd1ae4c4d11d0832acf40fb07e99bd2 Mon Sep 17 00:00:00 2001 From: supershop Date: Sun, 29 Nov 2009 09:26:50 +0000 Subject: [PATCH 008/209] english translation for admin page git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6998 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 10 ++++----- modules/admin/lang/en.lang.php | 40 +++++++++++++++++----------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 357b82bbd..d6b827e2c 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -277,10 +277,10 @@ $lang->eid = 'Name of extra variable'; // ftp-related - $lang->ftp_form_title = 'Input FTP account information'; + $lang->ftp_form_title = 'FTP Account Information'; $lang->ftp = 'FTP'; $lang->ftp_port = 'FTP port'; - $lang->cmd_check_ftp_connect = 'Check connection via FTP'; + $lang->cmd_check_ftp_connect = 'Check FTP Connection'; $lang->about_ftp_info = " FTP account information can be used in following cases.
1. If safe_mode setting of PHP is on, XE will be installed using FTP.
@@ -296,9 +296,9 @@ $lang->msg_ftp_chmod_fail = "Chmod failed. Please check the permission and configuration of FTP server."; $lang->msg_ftp_connect_success = "Connection and authentication to the FTP server succeeded."; - $lang->ftp_path_title = 'FTP 경로 정보 입력'; - $lang->msg_ftp_installed_realpath = '설치된 XE의 절대경로'; - $lang->msg_ftp_installed_ftp_realpath = '설치된 XE의 FTP 절대경로 설정'; + $lang->ftp_path_title = 'FTP Path Information'; + $lang->msg_ftp_installed_realpath = 'Absolute Path of XE'; + $lang->msg_ftp_installed_ftp_realpath = 'Absolute FTP Path of XE'; // Alert messages for Javascript using by XML filter diff --git a/modules/admin/lang/en.lang.php b/modules/admin/lang/en.lang.php index d4d5c1e93..e5c0b228d 100644 --- a/modules/admin/lang/en.lang.php +++ b/modules/admin/lang/en.lang.php @@ -7,18 +7,18 @@ $lang->admin_info = 'Administrator Info'; $lang->admin_index = 'Index Admin Page'; - $lang->control_panel = 'Control panel'; - $lang->start_module = 'Start Module'; - $lang->about_start_module = 'You can specify start module by default.'; + $lang->control_panel = 'Dashboard'; + $lang->start_module = 'Default Module'; + $lang->about_start_module = 'You can specify default module of the site.'; $lang->module_category_title = array( - 'service' => 'Service Setting', - 'member' => 'Member Setting', - 'content' => 'Content Setting', + 'service' => 'Services', + 'member' => 'Members', + 'content' => 'Contents', 'statistics' => 'Statistics', 'construction' => 'Construction', - 'utility' => 'Utility Setting', - 'interlock' => 'Interlock Setting', + 'utility' => 'Utilities', + 'interlock' => 'Embedded', 'accessory' => 'Accessories', 'migration' => 'Data Migration', 'system' => 'System Setting', @@ -34,7 +34,7 @@ $lang->current_version = "Current Version"; $lang->current_path = "Installed Path"; $lang->released_version = "Latest Version"; - $lang->about_download_link = "New version of Zerboard XE is now available.\nClick the download link to get the latest version."; + $lang->about_download_link = "New version of Zerboard XE is now available!\nPlease click the download link to get the latest version."; $lang->item_module = "Module List"; $lang->item_addon = "Addon List"; @@ -50,13 +50,13 @@ $lang->cmd_shortcut_management = "Edit Menu"; - $lang->msg_is_not_administrator = 'Administrator only'; + $lang->msg_is_not_administrator = 'Administrator Only'; $lang->msg_manage_module_cannot_delete = 'Shortcuts of module, addon, layout, widget cannot be removed'; $lang->msg_default_act_is_null = 'Shortcut could not be registered because default admin Action is not set'; $lang->welcome_to_xe = 'Welcome to the admin page of XE'; - $lang->about_admin_page = "Admin page is still being developing,\nWe will add essential contents by accepting many good suggestions during Closebeta."; - $lang->about_lang_env = "To apply selected language as default language, click the [Save] button."; + $lang->about_admin_page = "Admin page is still under development,\nWe will add essential contents by accepting many good suggestions during Closebeta."; + $lang->about_lang_env = "To apply selected language as default language, click on the Save button."; $lang->xe_license = 'XE complies with the GPL'; $lang->about_shortcut = 'You may remove shortcuts of modules which are registered on frequently using module list'; @@ -65,17 +65,17 @@ $lang->today = "Today"; $lang->cmd_lang_select = "Language"; - $lang->about_cmd_lang_select = "Selected languages only will be serviced"; - $lang->about_recompile_cache = "You can arrange useless or invalid cache files"; + $lang->about_cmd_lang_select = "Only selected languages will be served."; + $lang->about_recompile_cache = "You can delete useless or invalid cache files."; $lang->use_ssl = "Use SSL"; $lang->ssl_options = array( - 'none' => "Not use", - 'optional' => "optional", - 'always' => "always" + 'none' => "Never", + 'optional' => "Optional", + 'always' => "Always" ); - $lang->about_use_ssl = "If you choose 'optional', SSL will be used for actions such as sign up / changing information. And for 'always', your site will be served only via https."; - $lang->server_ports = "Server port"; - $lang->about_server_ports = "If your web-server uses other than 80 for HTTP, 443 for HTTPS, you should specify server ports"; + $lang->about_use_ssl = "In case of 'Optional', SSL will be used for actions such as signing up / changing information. And for 'Always', your site will be served only via https."; + $lang->server_ports = "Server Port"; + $lang->about_server_ports = "If your web server does not use 80 for HTTP or 443 for HTTPS port, you should specify server ports"; $lang->use_db_session = 'Use Session DB'; $lang->about_db_session = 'It will use php session with DB when authenticating.
Websites with infrequent usage of web server may expect faster response when this function is disabled.
However session DB will make it unable to get current users, so you cannot use related functions.'; $lang->sftp = "Use SFTP"; From cc5eed80fda38d335cd4f15160689b046d4ba9b2 Mon Sep 17 00:00:00 2001 From: misol Date: Sun, 29 Nov 2009 11:56:10 +0000 Subject: [PATCH 009/209] =?UTF-8?q?=EA=B3=B5=ED=86=B5=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=20=EB=8B=A8=EC=96=B4=20=ED=95=98=EB=82=98=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?.=20success=20=3D=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6999 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/ko.lang.php | 1 + 1 file changed, 1 insertion(+) diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index 0c1e477f5..7ad14fd03 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -122,6 +122,7 @@ $lang->order_asc = '오름차순'; $lang->order_desc = '내림차순'; $lang->file = '파일'; + $lang->success = '성공'; $lang->mid = '모듈 이름'; $lang->sid = '가상 사이트 이름'; From 4ebc072262677ccf9baac99ee563b393d2ef01fa Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 30 Nov 2009 05:40:00 +0000 Subject: [PATCH 010/209] #18510611 , #18516093 : fixed a bug occurred when there exists one file && added .. to parent dir. git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7000 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/tpl/js/config.js | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/modules/admin/tpl/js/config.js b/modules/admin/tpl/js/config.js index d0cd2ef1a..2d8451d95 100644 --- a/modules/admin/tpl/js/config.js +++ b/modules/admin/tpl/js/config.js @@ -1,24 +1,28 @@ function completeGetFtpInfo(ret_obj) { - var e = jQuery("#ftplist").empty(); var list = ""; + if(!jQuery.isArray(ret_obj['list']['item'])) + { + ret_obj['list']['item'] = [ret_obj['list']['item']]; + } + + if(pwd != "/") + { + arr = pwd.split("/"); + arr.pop(); + arr.pop(); + arr.push(""); + target = arr.join("/"); + list = list + "
  • ../
  • "; + } + for(var i=0;i"+v+""; + continue; } else if( v == "./") { @@ -29,6 +33,7 @@ function completeGetFtpInfo(ret_obj) list = list + "
  • "+v+"
  • "; } } + list = "
      "+list+"
    "; e.append(jQuery(list)); } From 8bde4f2f81b05a623a7182a755ff0c75f80e4ad0 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 30 Nov 2009 09:12:36 +0000 Subject: [PATCH 011/209] =?UTF-8?q?r6998=20rollback.=20=ED=98=84=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=EC=97=90=EC=84=9C=20success=EC=9D=98=20?= =?UTF-8?q?=EA=B0=92=EC=97=90=20=EC=96=B8=EC=96=B4=EB=A7=A4=EC=B9=AD?= =?UTF-8?q?=EC=9D=B4=20=EB=90=98=EC=96=B4=20=EB=B2=84=EB=A6=AC=EB=A9=B4=20?= =?UTF-8?q?XML=20Handler=EC=97=90=EC=84=9C=20=EA=B2=B0=EA=B3=BC=EA=B0=92?= =?UTF-8?q?=EC=9D=84=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=EB=B0=9C=EC=83=9D=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7001 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/ko.lang.php | 1 - 1 file changed, 1 deletion(-) diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index 7ad14fd03..0c1e477f5 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -122,7 +122,6 @@ $lang->order_asc = '오름차순'; $lang->order_desc = '내림차순'; $lang->file = '파일'; - $lang->success = '성공'; $lang->mid = '모듈 이름'; $lang->sid = '가상 사이트 이름'; From ac6b87294e00e82b14d625438e18e60f3298731c Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 2 Dec 2009 08:03:42 +0000 Subject: [PATCH 012/209] English translation of comments git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7002 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 352 +++++++++++++++++------------- 1 file changed, 203 insertions(+), 149 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 075199de2..28c9fca0b 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -2,9 +2,9 @@ /** * @class Context * @author zero (zero@nzeo.com) - * @brief Request Argument/환경변수등의 모든 Context를 관리 - * Context 클래스는 Context::methodname() 처럼 쉽게 사용하기 위해 만들어진 객체를 받아서 - * 호출하는 구조를 위해 이중 method 구조를 가지고 있다. + * @brief Manages Context such as request arguments/environment variables + * @remarks It has dual method structure, easy-to use methods which can be called as Context::methodname(), + * and methods called with static object. **/ define('FOLLOW_REQUEST_SSL',0); @@ -13,44 +13,42 @@ class Context { - var $allow_rewrite = false; ///< @brief rewrite mod 사용에 대한 변수 + var $allow_rewrite = false; ///< true: using rewrite mod, false: otherwise - var $request_method = 'GET'; ///< @brief GET/POST/XMLRPC 중 어떤 방식으로 요청이 왔는지에 대한 값이 세팅. GET/POST/XML 3가지가 있음 - var $response_method = ''; ///< @brief HTML/XMLRPC 중 어떤 방식으로 결과를 출력할지 결정. (강제 지정전까지는 request_method를 따름) + var $request_method = 'GET';///< request method(GET/POST/XMLRPC) + var $response_method = ''; ///< response method(HTML/XMLRPC). If it's not set, it follows request method. - var $context = NULL; ///< @brief request parameter 및 각종 환경 변수등을 정리하여 담을 변수 + var $context = NULL; ///< conatins request parameters and environment variables - var $db_info = NULL; ///< @brief DB 정보 - var $ftp_info = NULL; ///< @brief FTP 정보 + var $db_info = NULL; ///< DB info. + var $ftp_info = NULL; ///< FTP info. - var $ssl_actions = array(); ///< @brief ssl로 전송해야 할 action등록 (common/js/xml_handler.js에서 ajax통신시 활용) - var $js_files = array(); ///< @brief display시에 사용하게 되는 js files의 목록 - var $css_files = array(); ///< @brief display시에 사용하게 되는 css files의 목록 + var $ssl_actions = array(); ///< list of actions to be sent via ssl (it is used by javascript xml handler for ajax) + var $js_files = array(); ///< list of javascript files used for display + var $css_files = array(); ///< list of css files used for display - var $html_header = NULL; ///< @brief display시에 사용하게 되는 ..내의 스크립트코드 - var $body_class = array(); ///< @brief display시에 사용하게 되는 안에 출력될 class - var $body_header = NULL; ///< @brief display시에 사용하게 되는 바로 다음에 출력될 스크립트 코드 - var $html_footer = NULL; ///< @brief display시에 사용하게 되는 바로 앞에 추가될 코드 + var $html_header = NULL; ///< script codes in .. + var $body_class = array(); ///< classnames of + var $body_header = NULL; ///< codes after + var $html_footer = NULL; ///< codes before - var $path = ''; ///< zbxe의 경로 + var $path = ''; ///< path of Xpress Engine + + // language information - it is changed by HTTP_USER_AGENT or user's cookie + var $lang_type = ''; ///< language type + var $lang = NULL; ///< contains language-specific data + var $loaded_lang_files = array(); ///< list of loaded languages (to avoid re-loading them) + + var $site_title = ''; ///< site's browser title + + var $get_vars = NULL; ///< variables from GET or form submit + + var $is_uploaded = false; ///< true if attached file exists /** - * @brief 언어 정보 - * 기본으로 ko. HTTP_USER_AGENT나 사용자의 직접 세팅(쿠키이용)등을 통해 변경됨 - **/ - var $lang_type = ''; ///< 언어 종류 - var $lang = NULL; ///< 언어 데이터를 담고 있는 변수 - var $loaded_lang_files = array(); ///< 로딩된 언어파일의 목록 (재로딩을 피하기 위함) - - var $site_title = ''; ///< @brief 현 사이트의 browser title. Context::setBrowserTitle() 로 변경 가능 - - var $get_vars = NULL; ///< @brief form이나 get으로 요청이 들어온 변수만 별도로 관리 - - var $is_uploaded = false; ///< @brief 첨부파일이 업로드 된 요청이였는지에 대한 체크 플래그 - - /** - * @brief 유일한 Context 객체를 반환 (Singleton) - * Context는 어디서든 객체 선언없이 사용하기 위해서 static 하게 사용 + * @brief return static context object (Singleton) + * @return object + * @remarks it's to use Context without declaration of an object **/ function &getInstance() { static $theInstance; @@ -59,33 +57,30 @@ } /** - * @brief DB정보, Request Argument등을 세팅 - * Context::init()은 단 한번만 호출되어야 하며 init()시에 Request Argument, DB/언어/세션정보등의 모든 정보를 세팅한다 + * @brief initialization, it sets DB information, request arguments and so on. + * @return none + * @remarks this function should be called only once **/ function init() { - // context 변수를 $GLOBALS의 변수로 지정 + // set context variables in $GLOBALS (to use in display handler) $this->context = &$GLOBALS['__Context__']; $this->context->lang = &$GLOBALS['lang']; $this->context->_COOKIE = $_COOKIE; - // Request Method 설정 $this->_setRequestMethod(); - // Request Argument 설정 $this->_setXmlRpcArgument(); $this->_setJSONRequestArgument(); $this->_setRequestArgument(); $this->_setUploadedArgument(); - // 기본적인 DB정보 세팅 $this->_loadDBInfo(); - // 설치가 되어 있다면 가상 사이트 정보를 구함 + // If XE is installed, get virtual site information if(Context::isInstalled()) { - // site_module_info를 구함 $oModuleModel = &getModel('module'); $site_module_info = $oModuleModel->getDefaultMid(); - // site_module_info의 site_srl = 0 일 경우 db_config의 default_url과 비교 + // if site_srl of site_module_info is 0 (default site), compare the domain to default_url of db_config if($site_module_info->site_srl == 0 && $site_module_info->domain != $this->db_info->default_url) { $site_module_info->domain = $this->db_info->default_url; } @@ -97,26 +92,26 @@ if(!$this->db_info->lang_type) $this->db_info->lang_type = 'en'; } - // 언어 파일 불러오기 + // Load Language File $lang_supported = $this->loadLangSelected(); - // 사용자의 쿠키 설정된 언어 타입 추출 + // Retrieve language type set in user's cookie if($_COOKIE['lang_type']) $this->lang_type = $_COOKIE['lang_type']; - // 사용자 설정 언어 타입이 없으면 기본 언어타입으로 지정 + // If it's not exists, follow default language type set in db_info if(!$this->lang_type) $this->lang_type = $this->db_info->lang_type; - // 관리자 설정 언어값에 등록된 것이 아니라면 기본 언어로 변경 + // if still lang_type has not been set or has not-supported type , set as English. if(!$this->lang_type) $this->lang_type = "en"; if(is_array($lang_supported)&&!isset($lang_supported[$this->lang_type])) $this->lang_type = 'en'; Context::set('lang_supported', $lang_supported); $this->setLangType($this->lang_type); - // module의 언어파일 강제 로드 (언어 type에 맞춰서) + // load module module's language file according to language setting $this->loadLang(_XE_PATH_.'modules/module/lang'); - // 세션 핸들러 지정 + // set session handler if($this->db_info->use_db_session != 'N') { $oSessionModel = &getModel('session'); $oSessionController = &getController('session'); @@ -132,18 +127,16 @@ session_start(); - // 인증 관련 정보를 Context와 세션에 설정 + // set authentication information in Context and session if(Context::isInstalled()) { - // 인증관련 데이터를 Context에 설정 $oMemberModel = &getModel('member'); $oMemberController = &getController('member'); - // 인증이 되어 있을 경우 유효성 체크 + // if signed in, validate it. if($oMemberModel->isLogged()) { $oMemberController->setSessionInfo(); - - // 인증이 되어 있지 않을 경우 자동 로그인 확인 - } elseif($_COOKIE['xeak']) { + } + elseif($_COOKIE['xeak']) { // check auto sign-in $oMemberController->doAutologin(); } @@ -151,15 +144,15 @@ $this->_set('logged_info', $oMemberModel->getLoggedInfo() ); } - // 기본 언어파일 로드 + // load common language file $this->lang = &$GLOBALS['lang']; $this->_loadLang(_XE_PATH_."common/lang/"); - // rewrite 모듈사용 상태 체크 + // check if using rewrite module if(file_exists(_XE_PATH_.'.htaccess')&&$this->db_info->use_rewrite == 'Y') $this->allow_rewrite = true; else $this->allow_rewrite = false; - // 기본 JS/CSS 등록 + // add common JS/CSS files $this->addJsFile("./common/js/jquery.js"); $this->addJsFile("./common/js/x.js"); $this->addJsFile("./common/js/common.js"); @@ -169,10 +162,10 @@ $this->addCSSFile("./common/css/default.css"); $this->addCSSFile("./common/css/button.css"); - // 관리자 페이지일 경우 관리자 공용 CSS 추가 + // for admin page, add admin css if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0) $this->addCssFile("./modules/admin/tpl/css/admin.css", false); - // rewrite module때문에 javascript에서 location.href 문제 해결을 위해 직접 실제 경로 설정 + // set locations for javascript use if($_SERVER['REQUEST_METHOD'] == 'GET') { if($this->get_vars) { foreach($this->get_vars as $key => $val) { @@ -196,7 +189,8 @@ } /** - * @brief DB및 기타 자원들의 close + * @brief finalize using resources, such as DB connection + * @return none **/ function close() { // Session Close @@ -208,7 +202,8 @@ } /** - * @brief DB의 및 기타 정보 load + * @brief load DB information + * @return none **/ function loadDBInfo() { $oContext = &Context::getInstance(); @@ -216,12 +211,12 @@ } /** - * @brief DB 정보를 설정하고 DB Type과 DB 정보를 return + * @brief load DB information + * @return none **/ function _loadDBInfo() { if(!$this->isInstalled()) return; - // db 정보 설정 $db_config_file = $this->getConfigFile(); if(file_exists($db_config_file)) @include($db_config_file); @@ -248,7 +243,8 @@ } /** - * @brief DB의 db_type을 return + * @brief get DB's db_type + * @return DB's db_type string **/ function getDBType() { $oContext = &Context::getInstance(); @@ -256,14 +252,17 @@ } /** - * @brief DB의 db_type을 return + * @brief get DB's db_type + * @return DB's db_type string **/ function _getDBType() { return $this->db_info->db_type; } /** - * @brief DB 정보가 담긴 object를 return + * @brief set DB information + * @param[in] DB information object + * @return none **/ function setDBInfo($db_info) { $oContext = &Context::getInstance(); @@ -271,14 +270,17 @@ } /** - * @brief DB 정보가 담긴 object를 return + * @brief set DB information + * @param[in] DB information object + * @return none **/ function _setDBInfo($db_info) { $this->db_info = $db_info; } /** - * @brief DB 정보가 담긴 object를 return + * @brief get DB information + * @return DB information object **/ function getDBInfo() { $oContext = &Context::getInstance(); @@ -286,14 +288,16 @@ } /** - * @brief DB 정보가 담긴 object를 return + * @brief get DB information + * @return DB information object **/ function _getDBInfo() { return $this->db_info; } /** - * @brief 기본 URL을 return + * @brief return default URL + * @return default URL string **/ function getDefaultUrl() { $db_info = Context::getDBInfo(); @@ -301,7 +305,8 @@ } /** - * @brief 지원되는 언어 파일 찾기 + * @brief find supported languages + * @return array of supported languages **/ function loadLangSupported() { static $lang_supported = null; @@ -317,7 +322,8 @@ } /** - * @brief 설정한 언어 파일 찾기 + * @brief find selected languages to serve in the site + * @return array of selected languages **/ function loadLangSelected() { static $lang_selected = null; @@ -349,18 +355,19 @@ } /** - * @brief SSO URL이 설정되어 있고 아직 SSO URL검사를 하지 않았다면 return true + * @brief Single Sign On (SSO) + * @return true if module handleing is necessary in the control path of current request **/ function checkSSO() { - // GET 접속이 아니거나 설치가 안되어 있으면 패스 + // pass if it's not GET request or XE is not yet installed if(Context::getRequestMethod()!='GET' || !Context::isInstalled() || in_array(Context::get('act'),array('rss','atom'))) return true; - // DB info에 설정된 Default URL이 없다면 무조건 무사통과 + // pass if default URL is not set $default_url = trim($this->db_info->default_url); if(!$default_url) return true; if(substr($default_url,-1)!='/') $default_url .= '/'; - // SSO 검증을 요청 받는 사이트 + // for sites recieving SSO valdiation if($default_url == Context::getRequestUri()) { if(Context::get('default_url')) { $url = base64_decode(Context::get('default_url')); @@ -370,9 +377,9 @@ header("location:".$redirect_url); return false; } - // SSO 검증을 요청하는 사이트 + // for sites requesting SSO validation } else { - // SSO 결과를 받는 경우 session_name() 세팅 + // result handling : set session_name() if(Context::get('SSOID')) { $session_name = Context::get('SSOID'); setcookie(session_name(), $session_name); @@ -380,7 +387,7 @@ $url = preg_replace('/([\?\&])$/','',str_replace('SSOID='.$session_name,'',Context::getRequestUrl())); header("location:".$url); return false; - // SSO 결과를 요청 + // send SSO request } else if($_COOKIE['sso']!=md5(Context::getRequestUri()) && !Context::get('SSOID')) { setcookie('sso',md5(Context::getRequestUri()),0,'/'); $url = sprintf("%s?default_url=%s", $default_url, base64_encode(Context::getRequestUrl())); @@ -393,7 +400,8 @@ } /** - * @biref FTP 정보가 등록되었는지 확인 + * @biref check if FTP info is registered + * @return true: FTP information is registered, false: otherwise **/ function isFTPRegisted() { $ftp_config_file = Context::getFTPConfigFile(); @@ -402,7 +410,8 @@ } /** - * @brief FTP 정보가 담긴 object를 return + * @brief get FTP information object + * @return FTP information object **/ function getFTPInfo() { $oContext = &Context::getInstance(); @@ -410,7 +419,8 @@ } /** - * @brief FTP 정보가 담긴 object를 return + * @brief get FTP information object + * @return FTP information object **/ function _getFTPInfo() { if(!$this->isFTPRegisted()) return null; @@ -421,7 +431,9 @@ } /** - * @brief 사이트 title adding + * @brief add string to browser title + * @param[in] $site_title string to be added + * @return none **/ function addBrowserTitle($site_title) { if(!$site_title) return; @@ -430,7 +442,9 @@ } /** - * @brief 사이트 title adding + * @brief add string to browser title + * @param[in] $site_title string to be added + * @return none **/ function _addBrowserTitle($site_title) { if($this->site_title) $this->site_title .= ' - '.$site_title; @@ -438,7 +452,9 @@ } /** - * @brief 사이트 title setting + * @brief set string to browser title + * @param[in] $site_title string to be set + * @return none **/ function setBrowserTitle($site_title) { if(!$site_title) return; @@ -447,14 +463,17 @@ } /** - * @brief 사이트 title setting + * @brief set string to browser title + * @param[in] $site_title string to be set + * @return none **/ function _setBrowserTitle($site_title) { $this->site_title = $site_title; } /** - * @brief 사이트 title return + * @brief get browser title + * @return browser title string (htmlspecialchars applied) **/ function getBrowserTitle() { $oContext = &Context::getInstance(); @@ -462,7 +481,8 @@ } /** - * @brief 사이트 title return + * @brief get browser title + * @return browser title string **/ function _getBrowserTitle() { $oModuleController = &getController('module'); @@ -471,7 +491,9 @@ } /** - * @brief 지정된 언어파일 로드 + * @brief load language file according to language type + * @param[in] $path path of the language file + * @return none **/ function loadLang($path) { $oContext = &Context::getInstance(); @@ -479,9 +501,10 @@ } /** - * @brief 지정된 언어파일 로드 - * - * loaded_lang_files 변수를 이용하여 한번 로드된 파일을 다시 로드하지 않음 + * @brief load language file according to language type + * @param[in] $path path of the language file + * @return none + * @remarks using $loaded_lang_files it does not load once-loaded files **/ function _loadLang($path) { global $lang; @@ -497,7 +520,8 @@ } /** - * @brief lang_type을 세팅 (기본 ko) + * @brief set lang_type + * @return none **/ function setLangType($lang_type = 'ko') { $oContext = &Context::getInstance(); @@ -506,7 +530,8 @@ } /** - * @brief lang_type을 세팅 (기본 ko) + * @brief set lang_type + * @return none **/ function _setLangType($lang_type = 'ko') { $this->lang_type = $lang_type; @@ -514,7 +539,8 @@ } /** - * @brief lang_type을 return + * @brief get lang_type + * @return lang_type string **/ function getLangType() { $oContext = &Context::getInstance(); @@ -522,16 +548,17 @@ } /** - * @brief lang_type을 return + * @brief get lang_type + * @return lang_type string **/ function _getLangType() { return $this->lang_type; } /** - * @brief code에 해당하는 문자열을 return - * - * 만약 code에 해당하는 문자열이 없다면 code를 그대로 리턴 + * @brief return string accoring to the inputed code + * @param[in] $code language variable name + * @return if string for the code exists returns it, otherwise returns original code **/ function getLang($code) { if(!$code) return; @@ -540,14 +567,17 @@ } /** - * @brief 직접 lang 변수에 데이터를 추가 + * @brief set data to lang variable + * @return none **/ function setLang($code, $val) { $GLOBALS['lang']->{$code} = $val; } /** - * @brief object내의 variables의 문자열을 utf8로 변경 + * @brief convert strings of variables in $source_object into UTF-8 + * @param[in] $source_obj object conatins strings to convert + * @return converted object **/ function convertEncoding($source_obj) { $charset_list = array( @@ -580,7 +610,9 @@ } /** - * @brief 특정 문자열만 utf-8로 변경 + * @brief convert strings into UTF-8 + * @param[in] $str string to convert + * @return converted string **/ function convertEncodingStr($str) { $obj->str = $str; @@ -589,30 +621,37 @@ } /** - * @brief response method를 강제로 지정 (기본으로는 request method를 이용함) - * - * method의 종류에는 HTML/ TEXT/ XMLRPC/ JSON가 있음 + * @brief force to set response method + * @param[in] $method response method (HTML/XMLRPC/JSON) + * @return none **/ function setResponseMethod($method = "HTML") { $oContext = &Context::getInstance(); return $oContext->_setResponseMethod($method); } + /** + * @brief force to set response method + * @param[in] $method response method (HTML/XMLRPC/JSON) + * @return none + **/ function _setResponseMethod($method = "HTML") { $this->response_method = $method; } - /** - * @brief response method 값을 return - * - * method의 종류에는 HTML/ TEXT/ XMLRPC가 있음 - * 별도로 response method를 지정하지 않았다면 request method로 판단하여 결과 return - **/ + /* + * @brief get reponse method + * @return response method string (if it's not set, returns request method) + */ function getResponseMethod() { $oContext = &Context::getInstance(); return $oContext->_getResponseMethod(); } + /* + * @brief get reponse method + * @return response method string (if it's not set, returns request method) + */ function _getResponseMethod() { if($this->response_method) return $this->response_method; @@ -623,7 +662,9 @@ } /** - * @brief request method가 어떤것인지 판단하여 저장 (GET/POST/XMLRPC/JSON) + * @brief determine request method (GET/POST/XMLRPC/JSON) + * @param[in] $type request method + * @return none **/ function setRequestMethod($type) { $oContext = &Context::getInstance(); @@ -632,7 +673,9 @@ /** - * @brief request method가 어떤것인지 판단하여 저장 (GET/POST/XMLRPC/JSON) + * @brief deteremine request method (GET/POST/XMLRPC/JSON) + * @param[in] $type request method + * @return none **/ function _setRequestMethod($type = '') { if($type) return $this->request_method = $type; @@ -644,7 +687,8 @@ } /** - * @brief GET/POST방식일 경우 처리 + * @brief handle request areguments for GET/POST + * @return none **/ function _setRequestArgument() { if(!count($_REQUEST)) return; @@ -660,11 +704,11 @@ } /** - * @brief JSON 방식일 경우 처리 + * @brief handle request arguments for JSON + * @return none **/ function _setJSONRequestArgument() { if($this->_getRequestMethod() != 'JSON') return; -// if(!$GLOBALS['HTTP_RAW_POST_DATA']) return; $params = array(); parse_str($GLOBALS['HTTP_RAW_POST_DATA'],$params); @@ -676,7 +720,8 @@ } /** - * @brief XML RPC일때 + * @brief handle request arguments for XML RPC + * @return none **/ function _setXmlRpcArgument() { if($this->_getRequestMethod() != 'XMLRPC') return; @@ -695,8 +740,12 @@ } /** - * @brief 변수명에 따라서 필터링 처리 - * _srl, page, cpage등의 변수는 integer로 형변환 + * @brief Filter request variable + * @param[in] $key variable key + * @param[in] $val variable value + * @param[in] $do_stripslashes whether to strip slashes + * @remarks cast variables, such as _srl, page, and cpage, into interger + * @return filtered value **/ function _filterRequestVar($key, $val, $do_stripslashes = 1) { if( ($key == "page" || $key == "cpage" || substr($key,-3)=="srl")) return !preg_match('/^[0-9,]+$/',$val)?(int)$val:$val; @@ -714,7 +763,8 @@ } /** - * @brief 업로드 되었을 경우 return true + * @brief Check if there exists uploaded file + * @return true: exists, false: otherwise **/ function isUploaded() { $oContext = &Context::getInstance(); @@ -722,14 +772,16 @@ } /** - * @brief 업로드 되었을 경우 return true + * @brief Check if there exists uploaded file + * @return true: exists, false: otherwise **/ function _isUploaded() { return $this->is_uploaded; } /** - * @brief 업로드된 파일이 있을 경우도 역시 context에 통합 처리 (단 정상적인 업로드인지 체크) + * @brief handle uploaded file + * @return none **/ function _setUploadedArgument() { if($this->_getRequestMethod() != 'POST') return; @@ -745,7 +797,8 @@ } /** - * @brief Request Method값을 return (GET/POST/XMLRPC/JSON); + * @brief return request method (GET/POST/XMLRPC/JSON); + * @return request method type **/ function getRequestMethod() { $oContext = &Context::getInstance(); @@ -753,14 +806,16 @@ } /** - * @brief Request Method값을 return (GET/POST/XMLRPC/JSON); + * @brief return request method (GET/POST/XMLRPC/JSON); + * @return request method type **/ function _getRequestMethod() { return $this->request_method; } /** - * @brief 현재 요청된 full url을 return + * @brief return request URL + * @return request URL **/ function getRequestUrl() { static $url = null; @@ -775,7 +830,8 @@ } /** - * @brief 요청받은 url에 args_list를 적용하여 return + * @brief make URL with args_list upon request URL + * @return result URL **/ function getUrl($num_args=0, $args_list=array(), $domain = null, $encode = true) { $oContext = &Context::getInstance(); @@ -783,28 +839,29 @@ } /** - * @brief 요청받은 url에 args_list를 적용하여 return + * @brief make URL with args_list upon request URL + * @return result URL **/ function _getUrl($num_args=0, $args_list=array(), $domain = null, $encode = true) { static $site_module_info = null; static $current_info = null; - // 가상 사이트 정보를 구함 + // retrieve virtual site information if(is_null($site_module_info)) $site_module_info = Context::get('site_module_info'); - // SiteID 요청시 전처리 ($domain이 vid 형식일 경우 $domain값을 없애고 vid로 처리하도록 함) + // If $domain is set, handle it (if $domain is vid type, remove $domain and handle with $vid) if($domain && isSiteID($domain)) { $vid = $domain; $domain = ''; } - // $domain, $vid값이 없을 경우(= 현재 사이트 정보를 이용함) + // If $domain, $vid are not set, use current site information if(!$domain && !$vid) { if($site_module_info->domain && isSiteID($site_module_info->domain)) $vid = $site_module_info->domain; else $domain = $site_module_info->domain; } - // $domain값이 있을 경우 현재 요청된 도메인과 비교해서 동일할 경우 제거 그렇지 않으면 http 프로토콜을 제거하고 제일 뒤에 / 를 붙임 + // if $domain is set, compare current URL. If they are same, remove the domain, otherwise link to the domain. if($domain) { $domain_info = parse_url($domain); if(is_null($current_info)) $current_info = parse_url(($_SERVER['HTTPS']=='on'?'https':'http').'://'.$_SERVER['HTTP_HOST'].getScriptPath()); @@ -816,38 +873,37 @@ } } - // 변수 정리 $get_vars = null; - // GET 변수가 없거나 변수 초기화 지정이 되었을 경우 + // If there is no GET variables or first argument is '' to reset variables if(!$this->get_vars || $args_list[0]=='') { - // 요청받은 변수가 있고 첫번째 인자가 '' 라서 초기화를 해야 할 경우 요청받은 변수를 정리 + // rearrange args_list if(is_array($args_list) && $args_list[0]=='') array_shift($args_list); - // 초기화를 원하지 않을 경우 GET 변수를 배열로 처리 } else { + // Otherwise, make GET variables into array $get_vars = get_object_vars($this->get_vars); } - // 새로 꾸미기를 원하는 변수를 정리 + // arrange args_list for($i=0,$c=count($args_list);$i<$c;$i=$i+2) { $key = $args_list[$i]; $val = trim($args_list[$i+1]); - // 값이 없으면 GET변수에서 해당 키를 제거 + // If value is not set, remove the key if(!isset($val) || strlen($val)<1) { unset($get_vars[$key]); continue; } - // 새로운 변수를 정리 + // set new variables $get_vars[$key] = $val; } - // 변수중 vid, rnd값 제거 + // remove vid, rnd unset($get_vars['rnd']); if($vid) $get_vars['vid'] = $vid; else unset($get_vars['vid']); - // action명이 변경되었던 것에 대해 호환성을 유지하기 위한 강제 값 변경 + // for compatibility to lower versions switch($get_vars['act']) { case 'dispMemberFriend' : $get_vars['act'] = 'dispCommunicationFriend'; break; case 'dispMemberMessages' : $get_vars['act'] = 'dispCommunicationMessages'; break; @@ -855,10 +911,10 @@ case 'dispModuleAdminSelectList' : $get_vars['act'] = 'dispModuleSelectList'; break; } - // URL 구성 + // organize URL $query = null; if($var_count = count($get_vars)) { - // rewrite mod 사용시 + // If using rewrite mod if($this->allow_rewrite) { $var_keys = array_keys($get_vars); asort($var_keys); @@ -878,7 +934,6 @@ } } - // rewrite mod 미사용 또는 query값이 생성되지 않았을 경우 get argument로 생성 if(!$query) { foreach($get_vars as $key => $val) { if(is_array($val) && count($val)) { @@ -891,23 +946,22 @@ } } - // 항상 SSL을 이용하고 현재 SSL이 아닌 경우 https에 대한 prefix를 붙임 + // If using SSL always if(Context::get('_use_ssl')=='always') { $query = $this->getRequestUri(ENFORCE_SSL, $domain).$query; - // 상황에 따라 혹은 지정된 대상만 SSL 취급될 경우 + // optional SSL use } elseif(Context::get('_use_ssl')=='optional') { $ssl_mode = RELEASE_SSL; if($get_vars['act'] && $this->_isExistsSSLAction($get_vars['act'])) $ssl_mode = ENFORCE_SSL; $query = $this->getRequestUri($ssl_mode, $domain).$query; - // SSL 을 사용하지 않을 경우 + // no SSL } else { - // SSL상태인데 대상이 SSL이 아닌 경우 + // currently on SSL but target is not based on SSL if($_SERVER['HTTPS']=='on' ) $query = $this->getRequestUri(ENFORCE_SSL, $domain).$query; - // $domain 값이 있을 경우 + // if $domain is set else if($domain) $query = $this->getRequestUri(FOLLOW_REQUEST_SSL, $domain).$query; - // $domain 값이 없을 경우 else $query = getScriptPath().$query; } From cf3733d338ec7a36b68bb9c0dc30ce7a502cff2c Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 2 Dec 2009 09:38:42 +0000 Subject: [PATCH 013/209] #18521466 : add an exception for bots git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7003 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 28c9fca0b..d4350b2af 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -360,6 +360,7 @@ **/ function checkSSO() { // pass if it's not GET request or XE is not yet installed + if(stristr($_SERVER["HTTP_USER_AGENT"], "bot") != FALSE) return true; if(Context::getRequestMethod()!='GET' || !Context::isInstalled() || in_array(Context::get('act'),array('rss','atom'))) return true; // pass if default URL is not set From 2c97ae2cab434bec777b8da17fb177580129ace6 Mon Sep 17 00:00:00 2001 From: supershop Date: Wed, 2 Dec 2009 10:33:01 +0000 Subject: [PATCH 014/209] modified english translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7004 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/communication/lang/en.lang.php | 2 +- modules/install/lang/en.lang.php | 4 +-- modules/member/lang/en.lang.php | 36 +++++++++++++------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/modules/communication/lang/en.lang.php b/modules/communication/lang/en.lang.php index 8d488e1c5..a890376e9 100644 --- a/modules/communication/lang/en.lang.php +++ b/modules/communication/lang/en.lang.php @@ -6,7 +6,7 @@ **/ $lang->communication = 'Communication'; - $lang->about_communication = 'This module performs communication functions such as messages or friends'; + $lang->about_communication = 'Communication module is for communications between members with messages or friends.'; $lang->allow_message = 'Receive Messages'; $lang->allow_message_type = array( diff --git a/modules/install/lang/en.lang.php b/modules/install/lang/en.lang.php index 45fd9103b..9519718b7 100644 --- a/modules/install/lang/en.lang.php +++ b/modules/install/lang/en.lang.php @@ -163,9 +163,9 @@ EndOfLicense; $lang->env_title = 'Configuration'; $lang->use_optimizer = 'Enable Optimizer'; $lang->about_optimizer = 'If optimizer is enabled, users can quickly access to this site, since multiple CSS / JS files are put together and compressed before transmission.
    Nevertheless, this optimization might be problematic according to CSS or JS. If you disable it, it would work properly though it would work slower.'; - $lang->use_rewrite = 'Use rewrite mod'; + $lang->use_rewrite = 'Rewrite Mod'; $lang->about_rewrite = "If web server provides rewrite mod, long URL such as http://blah/?document_srl=123 can be shortened like http://blah/123"; - $lang->time_zone = 'Time zone'; + $lang->time_zone = 'Time Zone'; $lang->about_time_zone = "If the server time and the time on your location don't accord each other, you can set the time as same as your location by using time zone "; $lang->qmail_compatibility = 'Enable Qmail'; $lang->about_qmail_compatibility = 'It will enable sending mails from MTA which cannot distinguish CRLF like Qmail.'; diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 2f402b343..72e414f6e 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -42,8 +42,8 @@ $lang->group_image_mark_order = 'Group Image Mark Order'; $lang->signature_max_height = 'Max Signature Height'; $lang->enable_openid = 'Enable OpenID'; - $lang->enable_join = 'Allow Member Join'; - $lang->enable_confirm = 'Enable email authentication'; + $lang->enable_join = 'Accept New Members'; + $lang->enable_confirm = 'Email Authentication'; $lang->enable_ssl = 'Enable SSL'; $lang->security_sign_in = 'Sign in using enhanced security'; $lang->limit_day = 'Temporary Limit Date'; @@ -51,7 +51,7 @@ $lang->after_login_url = 'URL after Login'; $lang->after_logout_url = 'URL after Logout'; $lang->redirect_url = 'URL after Join'; - $lang->agreement = 'Member Join Agreement'; + $lang->agreement = 'Join Agreement'; $lang->accept_agreement = 'Agree'; $lang->member_info = 'Member Info'; $lang->current_password = 'Current Password'; @@ -65,8 +65,8 @@ $lang->about_allow_message = 'You may allow or reject messages.'; $lang->logged_users = 'Logged Users'; - $lang->webmaster_name = "Webmaster's Name"; - $lang->webmaster_email = "Webmaster's Email"; + $lang->webmaster_name = "Webmaster Name"; + $lang->webmaster_email = "Webmaster Email"; $lang->about_keep_signed = 'You might be kept signed on even when the browser is closed,\n\nIf you use this feature at a shared computer, your personal information might be accessed by others, thus do not use this feature at a shared computer. '; $lang->about_webmaster_name = "Please input webmaster's name which will be used for verification mails or other site administration. (default : webmaster)"; @@ -99,10 +99,10 @@ $lang->cmd_member_list = 'Member List'; $lang->cmd_module_config = 'Default Setting'; - $lang->cmd_member_group = 'Manage Groups'; + $lang->cmd_member_group = 'Member Groups'; $lang->cmd_send_mail = 'Send Mail'; - $lang->cmd_manage_id = 'Manage Prohibited IDs'; - $lang->cmd_manage_form = 'Manage Join Form'; + $lang->cmd_manage_id = 'Prohibited IDs'; + $lang->cmd_manage_form = 'Join Form'; $lang->cmd_view_own_document = 'Written Articles'; $lang->cmd_manage_member_info = 'Manage Member Info'; $lang->cmd_trace_document = 'Trace Written Articles'; @@ -171,30 +171,30 @@ $lang->about_member_description = "Administrator's memo about members"; $lang->about_group = 'An ID can belong to many groups'; - $lang->about_column_type = 'Please set the format of additional sign up form'; + $lang->about_column_type = 'Please set the format of additional join form'; $lang->about_column_name = 'Please input English name that can be used in template (name as variable)'; $lang->about_column_title = 'This will be displayed on sign up or modifying/viewing member info form'; $lang->about_default_value = 'You can set default values'; $lang->about_active = 'You have to check on active items to show on sign up form'; - $lang->about_form_description = 'If you input in description form, it will be displayed on sign up form'; + $lang->about_form_description = 'If you input in description form, it will be displayed on join form'; $lang->about_required = 'If you check, it will be essential item for sign up'; - $lang->about_enable_openid = 'Allow users to sign up as OpenID'; - $lang->about_enable_join = 'Allow users to sign up'; - $lang->about_enable_confirm = 'Send confirmation email to complete signup.'; + $lang->about_enable_openid = 'Please check if you want to provide OpenID service'; + $lang->about_enable_join = 'Please check if you want to allow new members to join your site'; + $lang->about_enable_confirm = 'Please check if you want confirm new members\' join with their email.'; $lang->about_enable_ssl = 'Personal information from Join/Modify Member Info/Login can be sent as SSL(https) mode if server provides SSL service.'; $lang->about_limit_day = 'You can limit verification date after sign up'; $lang->about_limit_date = 'User cannot login until assigned date'; $lang->about_after_login_url = 'You can set URL after login. Blank means current page.'; $lang->about_after_logout_url = 'You can set URL after logout. Blank means current page.'; $lang->about_redirect_url = 'Please input URL where users will go after sign up. When this is empty, it will be set as the previous page of sign up page.'; - $lang->about_agreement = "Sign up agreement will only be displayed when it's not empty"; + $lang->about_agreement = "Join Agreement will be displayed if it's not empty"; - $lang->about_image_name = "Allow users to use image name instead of text name"; - $lang->about_image_mark = "Allow users to use mark in front of their names"; + $lang->about_image_name = "Members will be able to use image name instead of text"; + $lang->about_image_mark = "Members will be able to use image mark in front of their names"; $lang->about_group_image_mark = "You may use group marks shown before their names"; - $lang->about_profile_image = 'Allow users to use profile images'; - $lang->about_accept_agreement = "I have read the agreement and agree"; + $lang->about_profile_image = 'Members will be able to use profile images'; + $lang->about_accept_agreement = "I have read the agreement and agree with it"; $lang->about_member_default = 'It will be set as default group on sign up'; From 2f62e5189d23dcadb005d2ac6eaf73d4f865304c Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 3 Dec 2009 07:33:57 +0000 Subject: [PATCH 015/209] #18510626 : fixed a bug that ftp_root_path did not show properly git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7005 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/admin.admin.view.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 4a36bd6fa..173fcf84b 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -276,6 +276,11 @@ Context::set('start_module', $output->data); $pwd = Context::get('pwd'); + if(!$pwd && $ftp_info->ftp_root_path) + { + $pwd = $ftp_info->ftp_root_path; + } + if(!$pwd) { if($ftp_info->sftp == 'Y') { From c50003d4090d0ab4e4a3fd71e5cd41b631d5866e Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 3 Dec 2009 07:41:47 +0000 Subject: [PATCH 016/209] #18516144 : added an error message when authentication failed git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7006 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/admin.admin.model.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/admin/admin.admin.model.php b/modules/admin/admin.admin.model.php index 1a0f55e21..fc7974e7b 100644 --- a/modules/admin/admin.admin.model.php +++ b/modules/admin/admin.admin.model.php @@ -50,6 +50,10 @@ $_list = $oFtp->ftp_rawlist($this->pwd); $oFtp->ftp_quit(); } + else + { + return new Object(-1,'msg_ftp_invalid_auth_info'); + } } $list = array(); if(count($_list) == 0 || !$_list[0]) { @@ -59,6 +63,10 @@ $_list = $oFtp->ftp_rawlist($this->pwd); $oFtp->ftp_quit(); } + else + { + return new Object(-1,'msg_ftp_invalid_auth_info'); + } } } From e5f945203fcae0b15edc9d3b64785638ad873232 Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 3 Dec 2009 09:49:17 +0000 Subject: [PATCH 017/209] #18510421 : urlencode -> htmlspecialchars git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7007 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/tpl/module_selector.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/module/tpl/module_selector.html b/modules/module/tpl/module_selector.html index df9a5b8e7..679f5af80 100644 --- a/modules/module/tpl/module_selector.html +++ b/modules/module/tpl/module_selector.html @@ -53,7 +53,7 @@ {$k} {$v->browser_title} - {$type=='single'?$lang->cmd_select:$lang->cmd_insert} + {$type=='single'?$lang->cmd_select:$lang->cmd_insert} {@ $_idx ++; } From 91c61c08905ca4ec45216a8496df07bc3967399b Mon Sep 17 00:00:00 2001 From: ChanMyeong Date: Mon, 7 Dec 2009 08:11:26 +0000 Subject: [PATCH 018/209] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20UI=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7008 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../skins/default/images/buttonAction.gif | Bin 0 -> 1677 bytes modules/message/skins/default/message.css | 68 ++++++----- modules/message/skins/default/message.js | 38 ++---- .../message/skins/default/system_message.html | 112 +++++++++--------- 4 files changed, 102 insertions(+), 116 deletions(-) create mode 100644 modules/message/skins/default/images/buttonAction.gif diff --git a/modules/message/skins/default/images/buttonAction.gif b/modules/message/skins/default/images/buttonAction.gif new file mode 100644 index 0000000000000000000000000000000000000000..d10473101f5b6eca5da60348767e8ebde188e0af GIT binary patch literal 1677 zcmd6li&qkc0*3)fypA@e%eo#{q#kw3&{j8DdL60p5KQPLJ9aERJ>BhglSrhvxVWUGq~zq}{rmS52!xcB6f&8-Z{NOx zf`a(?cr+S4H8o{48ZTV9fXCza?%k_UC{QSrNF?HLIA_kBvD@ufEY|6CR##UiBqY#i zGzJU zJb3ct$s&2E9>y#!zWIhIB?*=Cp*CZ4ci@HAOJuHApTnP*Czmon?c?b z5R_C_&b-X3U{_wb%DGl`{ny{Bxi$Z-y-|1bRy~j3AZYwu5EQV9{6jK01>b(}zPRIo zMB4eVtNYR8Cq2D={R4wfhlXX(Qy5?GU13bI~aP7RlQZL`|^iK6nU3n596bkpBgUK&CXpZ*|!&^jTa4zRu^NZQ_tX)jtb6p}mdrF6GSev=@*`=R^1 zI1bH`il%!Q9-nO`cDBz9Fn#OyF#rtJFeiv`B`d=jm z542{Ec0Djmv}Y@BC3j1V?>h?(Q={F|g%4N1M8VLHIxQ+$r4&U6U>7yx0z&=%$6Z## z8*%RRACJ4w8F~gPwxv9ITsCHqRxGXsuy-tf%KwKAvGp2H20L zEb$82!YhLA)+$S37%jXQiio26EIP(L3b)7dl;!ZUu#e2(YFc24PgC z?q%MKRfU+dIxf}GMZ!~phU!T(4JU@3^bE|komviH&XSkMk ziDmoI!yCreHn4Zg`~Qumz`%uH?INKCH9xiJn(BVm>x8_raD8)Q^=bX><|fuDew#$E zZzUsIdN=UHsX#B=4&lI;9?g1#sMj-MzJ1W|U*T=Ckk&j_MJ6>KIF5-hc5FZ>FG6e^ z$rpWJ{%kNxm1Pm8PIYyz>7ll%)zmdFi80+b4@HR1Kd&|S0qk?F3s3BU<3I`IB?Hg{ z-kfLd^9pS<_d}!S%>ytj!ZP?(WbA_b>6V;;v?tp*^ub|xIpRARG!f8W8zgL7lq00` zi;AdW#L~#FiM*vzlqNtt6l*KqAqz&6c6xk|;x9eNh2B~IlNfDWejbPY_8)EV1bRGx zl5@xUIxUg`o}iY0yYl8F_sq&$n()rbyF96Ju^{=V^RT(D-5g^Jb|N1_+jmd3G>uH~1h1upBG z9Fc2f^4x;UrYw&v)`KFL1?vv2P_*uxmoBWYnujBQSdO3p{&d+jBKP{5ZQ)abP#yq+ z>jn9n8D2ylXtS)>bC0{4R6SAS*U6x8ZTM(eZ4exnpxpIC) ku+=6Tj&oYBGN6rc2woQNzsO+{)!Rd1K<~uuFhI=z04((_L;wH) literal 0 HcmV?d00001 diff --git a/modules/message/skins/default/message.css b/modules/message/skins/default/message.css index ec7a46673..42cb64378 100644 --- a/modules/message/skins/default/message.css +++ b/modules/message/skins/default/message.css @@ -1,31 +1,39 @@ @charset "utf-8"; - -.messageLayer { border:2px solid #777; font-size:12px; background:#fff; margin:50px auto; width:370px;} -.messageLayer * { margin:0; padding:0; font-size:12px; } -.messageLayer h4 { font-size:14px !important; font-family:Dotum; background:#f4f4f4 !important; padding:8px 30px 8px 15px !important; letter-spacing:-1px !important; } -.messageLayer .messageLayerBody{ margin:0;} - -.messageLogin { padding:0; } -.messageLogin fieldset{ position:relative; border:0; margin:0; padding:20px 10px;} - -.openid_login { display:none; } -.messageLogin .openIDTitle { width:99%; white-space:nowrap; overflow:hidden; background:url("images/openid_login_bg.gif") no-repeat left top; padding:1px 0 0 25px; margin-bottom:8px; color:#888888; font-weight:bold; } -.messageLogin .openIDTitle input { vertical-align:middle; } -.messageLogin .openid_login { display:none; clear:both; height:38px; border:3px solid #D5D8DB; background-color:#FFFFFF; margin:0 0 10px 0; } -.messageLogin .openIDTitle input { margin:0; padding:0; } - -.messageLogin .login dl { margin:0; padding:0; overflow:hidden; margin-right:10px; width:250px;} -.messageLogin .login dl dt { margin:0; padding:0; width:100px; clear:left; float:left; color:#54564b; height:24px; padding-top:3px; text-indent:10px;} -.messageLogin .login dl dd { margin:0; padding:0; float:left; height:27px; width:150px; } -.messageLogin .login dl dd .inputText{ border:1px solid; border-color:#A6A6A6 #D8D8D8 #D8D8D8 #A6A6A6; padding:2px 6px; height:16px; width:130px;} -.messageLogin .login dl dd .inputText:hover, -.messageLogin .login dl dd .inputText:focus{ background:#f4f4f4;} -.messageLogin .login .keep { clear:both; white-space:nowrap; margin-left:100px;} -.messageLogin .login .keep input { vertical-align:middle;} -.messageLogin .login .keep label { margin:0; padding:0; font-size:12px; color:#999999;} -.messageLogin .openid_user_id { background: url(../img/openid_login_bg.gif) left no-repeat; background-color: #ffffff; background-position: 0 50%; padding:3px 3px 3px 18px; border:1px solid; border-color:#a6a6a6 #d8d8d8 #d8d8d8 #a6a6a6; line-height:1em; vertical-align:middle; color:#666666; width:120px;} -.messageLogin .help { background:#f5f5f3; color:#666666; overflow:hidden; padding:10px; color:#ccc; text-align:center;} -.messageLogin .help a{ color:#666; text-decoration:underline;} -.messageLogin .buttonArea{ position:absolute; top:20px; left:260px;} - -.buttonArea{ text-align:center;} +/* NHN | dece24@nhncorp.com */ +#loginAccess{ position:relative; width:384px; border:2px solid #757575; margin:30px auto; padding:20px 0 0 0; background:#fff; font-size:12px; font-family:Tahoma; line-height:normal;} +#loginAccess form{ margin:0; padding:0;} +#loginAccess fieldset{ border:0; margin:0; padding:0;} +#loginAccess h1{ margin:0 28px 20px 28px; font-size:12px; color:#e77161;} +#loginAccess ul{ margin:0; padding:0; list-style:none;} +#loginAccess .mLogin{ display:none;} +#loginAccess .idpw{ margin:0 28px 20px 28px;} +#loginAccess .oid{ margin:0 28px 20px 28px;} +#loginAccess .idpw li{ margin:0 0 5px 0;} +#loginAccess .inputText{ font-size:12px; height:22px; color:#767676; font-weight:bold; border:1px solid #b7b7b7; border-right-color:#e1e1e1; border-bottom-color:#e1e1e1;} +#loginAccess .idpw .inputText{ width:316px; padding:8px 0 0 10px;} +#loginAccess .oid .inputText{ width:291px; padding:8px 0 0 35px; background:url(./images/openid_login_bg.gif) no-repeat 10px center;} +#loginAccess .inputCheck{ width:13px; height:13px; margin:0; padding:0; vertical-align:middle;} +#loginAccess label{ vertical-align:middle;} +#loginAccess #warning{ display:none; margin:0 0 20px 0;} +#loginAccess #warning.open{ display:block;} +#loginAccess #warning p{ margin:0;} +#loginAccess .buttonArea{ position:relative; margin:0 28px; padding:0; color:#767676; *zoom:1;} +#loginAccess .buttonArea .keeping{ position:relative; margin:0 0 20px 0; height:32px; line-height:32px;} +#loginAccess #gLogin .buttonArea .buttonAccount{ position:absolute; top:0; right:0;} +#loginAccess #oLogin .buttonArea{ text-align:center; margin-bottom:20px;} +#loginAccess .buttonAccount, +#loginAccess .buttonAccount a, +#loginAccess .buttonAccount input{ position:relative; display:inline-block; margin:0; padding:0; overflow:visible; height:32px; line-height:32px; font-size:12px; font-weight:bold; color:#fff; vertical-align:middle; cursor:pointer; border:0; text-decoration:none !important; background:transparent url(./images/buttonAction.gif) no-repeat;} +#loginAccess .buttonAccount{ margin:0 4px 0 0; background-position:left top;} +#loginAccess .buttonAccount a, +#loginAccess .buttonAccount input{ left:4px; background-position:right top; *vertical-align:top; padding:0 24px 0 36px;} +#loginAccess .help{ position:relative; padding:15px 0; background:#fafafa; border-top:1px solid #d9d9d9; text-align:center;} +#loginAccess .help li{ display:inline; border-left:1px solid #c3c3c3; padding:0 0 0 10px; margin:0 6px 0 0; line-height:1;} +#loginAccess .help li.first{ border:0; padding:0;} +#loginAccess .help a{ text-decoration:none; color:#333;} +#loginAccess .help a:hover, +#loginAccess .help a:active, +#loginAccess .help a:focus{ text-decoration:underline;} +#loginAccess .logOut{ text-align:left; margin:0 28px; padding:0 0 20px 0;} +.gLogin #gLogin, +.oLogin #oLogin{ display:block;} \ No newline at end of file diff --git a/modules/message/skins/default/message.js b/modules/message/skins/default/message.js index 9ddfa072a..ad073879a 100644 --- a/modules/message/skins/default/message.js +++ b/modules/message/skins/default/message.js @@ -1,27 +1,11 @@ -/* 로그인 후 */ -function completeMessageLogin(ret_obj, response_tags, params, fo_obj) { - var url = current_url.setQuery('act',''); - location.href = url; -} - -/* 오픈아이디 로그인 후 */ -function completeMessageOpenIDLogin(ret_obj, response_tags) { - var redirect_url = ret_obj['redirect_url']; - location.href = redirect_url; -} - - -/* 오픈 아이디 폼 변환 */ -function toggleLoginForm(obj) { - if(xGetElementById('messageLogin').style.display != "none") { - xGetElementById('messageLogin').style.display = "none"; - xGetElementById('messageOpenidLogin').style.display = "block"; - xGetElementById('messageOpenIDForm').use_open_id_2.checked = true; - xGetElementById('messageOpenIDForm').openid.focus(); - } else { - xGetElementById('messageLogin').style.display = "block"; - xGetElementById('messageOpenidLogin').style.display = "none"; - xGetElementById('messageLoginForm').use_open_id.checked = false; - xGetElementById('messageLoginForm').user_id.focus(); - } -} +/* 로그인 후 */ +function completeMessageLogin(ret_obj, response_tags, params, fo_obj) { + var url = current_url.setQuery('act',''); + location.href = url; +} + +/* 오픈아이디 로그인 후 */ +function completeMessageOpenIDLogin(ret_obj, response_tags) { + var redirect_url = ret_obj['redirect_url']; + location.href = redirect_url; +} diff --git a/modules/message/skins/default/system_message.html b/modules/message/skins/default/system_message.html index 25320c2d8..9a9a5482b 100644 --- a/modules/message/skins/default/system_message.html +++ b/modules/message/skins/default/system_message.html @@ -1,65 +1,59 @@ -
    -
    -

    {$system_message}

    - - - - - -
    -
    -
    + + +
    + + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    -
    - + + + + +
    \ No newline at end of file From 6c188a62dd908f66adbc4a4a9841368f412f76af Mon Sep 17 00:00:00 2001 From: ChanMyeong Date: Mon, 7 Dec 2009 09:25:24 +0000 Subject: [PATCH 019/209] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20UI=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7009 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/message/skins/default/system_message.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/message/skins/default/system_message.html b/modules/message/skins/default/system_message.html index 9a9a5482b..a3c64db62 100644 --- a/modules/message/skins/default/system_message.html +++ b/modules/message/skins/default/system_message.html @@ -47,7 +47,7 @@ - + From 2ad514517e4df71820d08df77cc10e63226523f8 Mon Sep 17 00:00:00 2001 From: ChanMyeong Date: Mon, 7 Dec 2009 11:31:02 +0000 Subject: [PATCH 020/209] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20UI=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7010 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/message/skins/default/system_message.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/message/skins/default/system_message.html b/modules/message/skins/default/system_message.html index a3c64db62..639d03927 100644 --- a/modules/message/skins/default/system_message.html +++ b/modules/message/skins/default/system_message.html @@ -29,7 +29,7 @@
  • {$lang->cmd_find_member_account}
  • {$lang->cmd_signup}
  • -
  • Open ID
  • +
  • Open ID
  • @@ -47,7 +47,7 @@ - + From c3f24f8a7c0be2b9b87881fd4bd2f349887aafc8 Mon Sep 17 00:00:00 2001 From: ChanMyeong Date: Mon, 7 Dec 2009 11:58:28 +0000 Subject: [PATCH 021/209] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20UI=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7011 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/en.lang.php | 421 ++++++++++++++-------------- modules/member/lang/es.lang.php | 1 + modules/member/lang/fr.lang.php | 1 + modules/member/lang/jp.lang.php | 423 ++++++++++++++-------------- modules/member/lang/ko.lang.php | 423 ++++++++++++++-------------- modules/member/lang/ru.lang.php | 1 + modules/member/lang/vi.lang.php | 425 +++++++++++++++-------------- modules/member/lang/zh-CN.lang.php | 1 + modules/member/lang/zh-TW.lang.php | 1 + 9 files changed, 853 insertions(+), 844 deletions(-) diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 72e414f6e..e038d9cf2 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -1,210 +1,211 @@ -member = 'Member'; - $lang->member_default_info = 'Basic Info'; - $lang->member_extend_info = 'Additional Info'; - $lang->default_group_1 = "Associate Member"; - $lang->default_group_2 = "Regular Member"; - $lang->admin_group = "Managing Group"; - $lang->keep_signed = 'Keep me signed in'; - $lang->remember_user_id = 'Save ID'; - $lang->already_logged = "You are already logged on"; - $lang->denied_user_id = 'You have entered a prohibited ID.'; - $lang->null_user_id = 'Please input ID'; - $lang->null_password = 'Please input password'; - $lang->invalid_authorization = 'The account is not certificated.'; - $lang->invalid_user_id= "You have entered an invalid ID"; - $lang->invalid_password = 'You have entered an invalid password'; - $lang->allow_mailing = 'Join Mailing'; - $lang->denied = 'Prohibited'; - $lang->is_admin = 'Superadmin Permission'; - $lang->group = 'Assigned Group'; - $lang->group_title = 'Group Name'; - $lang->group_srl = 'Group Number'; - $lang->signature = 'Signature'; - $lang->profile_image = 'Profile Image'; - $lang->profile_image_max_width = 'Max Width'; - $lang->profile_image_max_height = 'Max Height'; - $lang->image_name = 'Image Name'; - $lang->image_name_max_width = 'Max Width'; - $lang->image_name_max_height = 'Max Height'; - $lang->image_mark = 'Image Mark'; - $lang->image_mark_max_width = 'Max Width'; - $lang->image_mark_max_height = 'Max Height'; - $lang->group_image_mark = 'Group Image Mark'; - $lang->group_image_mark_max_width = 'Max Width'; - $lang->group_image_mark_max_height = 'Max Height'; - $lang->group_image_mark_order = 'Group Image Mark Order'; - $lang->signature_max_height = 'Max Signature Height'; - $lang->enable_openid = 'Enable OpenID'; - $lang->enable_join = 'Accept New Members'; - $lang->enable_confirm = 'Email Authentication'; - $lang->enable_ssl = 'Enable SSL'; - $lang->security_sign_in = 'Sign in using enhanced security'; - $lang->limit_day = 'Temporary Limit Date'; - $lang->limit_date = 'Limit Date'; - $lang->after_login_url = 'URL after Login'; - $lang->after_logout_url = 'URL after Logout'; - $lang->redirect_url = 'URL after Join'; - $lang->agreement = 'Join Agreement'; - $lang->accept_agreement = 'Agree'; - $lang->member_info = 'Member Info'; - $lang->current_password = 'Current Password'; - $lang->openid = 'OpenID'; - $lang->allow_message = 'Allow Messages'; - $lang->allow_message_type = array( - 'Y' => 'Allow All', - 'F' => 'Allow for Friends', - 'N' => 'Reject All', - ); - $lang->about_allow_message = 'You may allow or reject messages.'; - $lang->logged_users = 'Logged Users'; - - $lang->webmaster_name = "Webmaster Name"; - $lang->webmaster_email = "Webmaster Email"; - - $lang->about_keep_signed = 'You might be kept signed on even when the browser is closed,\n\nIf you use this feature at a shared computer, your personal information might be accessed by others, thus do not use this feature at a shared computer. '; - $lang->about_webmaster_name = "Please input webmaster's name which will be used for verification mails or other site administration. (default : webmaster)"; - $lang->about_webmaster_email = "Please input webmaster's email address."; - - $lang->search_target_list = array( - 'user_id' => 'ID', - 'user_name' => 'Name', - 'nick_name' => 'Nickname', - 'email_address' => 'Email Address', - 'regdate' => 'Join Date', - 'regdate_more' => 'Join Date (more)', - 'regdate_less' => 'Join Date (less)', - 'last_login' => 'Last Login Date', - 'last_login_more' => 'Last Login Date (more)', - 'last_login_less' => 'Last Login Date (less)', - 'extra_vars' => 'Extra Vars', - ); - - $lang->cmd_login = 'Login'; - $lang->cmd_logout = 'Logout'; - $lang->cmd_signup = 'Join'; - $lang->cmd_site_signup = 'Join'; - $lang->cmd_modify_member_info = 'Modify Member Info'; - $lang->cmd_modify_member_password = 'Modify Password'; - $lang->cmd_view_member_info = 'Member Info'; - $lang->cmd_leave = 'Leave'; - $lang->cmd_find_member_account = 'Find Account Info'; - $lang->cmd_resend_auth_mail = 'Request for Authentication Mail'; - - $lang->cmd_member_list = 'Member List'; - $lang->cmd_module_config = 'Default Setting'; - $lang->cmd_member_group = 'Member Groups'; - $lang->cmd_send_mail = 'Send Mail'; - $lang->cmd_manage_id = 'Prohibited IDs'; - $lang->cmd_manage_form = 'Join Form'; - $lang->cmd_view_own_document = 'Written Articles'; - $lang->cmd_manage_member_info = 'Manage Member Info'; - $lang->cmd_trace_document = 'Trace Written Articles'; - $lang->cmd_trace_comment = 'Trace Written Comments'; - $lang->cmd_view_scrapped_document = 'Scraps'; - $lang->cmd_view_saved_document = 'Saved Articles'; - $lang->cmd_send_email = 'Send Mail'; - - $lang->msg_email_not_exists = "You have entered an invalid email address"; - - $lang->msg_alreay_scrapped = 'This article is already scrapped'; - - $lang->msg_cart_is_null = 'Please select the target'; - $lang->msg_checked_file_is_deleted = '%d attached file(s) is(are) deleted'; - - $lang->msg_find_account_title = 'Account Info'; - $lang->msg_find_account_info = 'This is requested account info.'; - $lang->msg_find_account_comment = 'The password will be modified as above one as you click below link.
    Please modify the password after login.'; - $lang->msg_confirm_account_title = 'Authentication confirmation mail'; - $lang->msg_confirm_account_info = 'This is the registered account information:'; - $lang->msg_confirm_account_comment = 'Click the following confirmation link to complete your sign up.'; - $lang->msg_auth_mail_sent = 'The verification mail has been sent to %s. Please check your mail.'; - $lang->msg_confirm_mail_sent = 'We just sent you a confirmation email to %s. Click on the confirmation link in the email to complete your sign up.'; - $lang->msg_invalid_auth_key = 'This is an invalid request of verification.
    Please retry finding account info or contact to administrator.'; - $lang->msg_success_authed = 'Your account has been successfully certificated and logged on.\n Please modify the password to your own one with the password in the mail.'; - $lang->msg_success_confirmed = 'The autentication completed successfully.'; - - $lang->msg_new_member = 'Add Member'; - $lang->msg_update_member = 'Modify Member Info'; - $lang->msg_leave_member = 'Leave'; - $lang->msg_group_is_null = 'There is no registered group'; - $lang->msg_not_delete_default = 'Default items cannot be deleted'; - $lang->msg_not_exists_member = "Invalid member"; - $lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the ID from administration and try again.'; - $lang->msg_exists_user_id = 'This ID already exists. Please try with another one.'; - $lang->msg_exists_email_address = 'This email address already exists. Please try with another one.'; - $lang->msg_exists_nick_name = 'This nickname already exists. Please try with another one.'; - $lang->msg_signup_disabled = 'You are not able to sign up'; - $lang->msg_already_logged = 'You have already signed up'; - $lang->msg_not_logged = 'Please login first'; - $lang->msg_insert_group_name = 'Please input the name of group'; - $lang->msg_check_group = 'Please select the group'; - - $lang->msg_not_uploaded_profile_image = 'Profile image could not be registered'; - $lang->msg_not_uploaded_image_name = 'Image name could not be registered'; - $lang->msg_not_uploaded_image_mark = 'Image mark could not be registered'; - $lang->msg_not_uploaded_group_image_mark = 'Group image mark could not be registered'; - - $lang->msg_accept_agreement = 'You have to agree the agreement'; - - $lang->msg_user_denied = 'You have entered a prohibited ID'; - $lang->msg_user_not_confirmed = 'You are not authenticated yet. Please check your email.'; - $lang->msg_user_limited = 'You have entered an ID that can be used after %s'; - - $lang->about_user_id = 'User ID should be 3~20 letters long and consist of alphabet+number with alphabet as first letter.'; - $lang->about_password = 'Password should be 6~20 letters long'; - $lang->about_user_name = 'Name should be 2~20 letters long'; - $lang->about_nick_name = 'Nickname should be 2~20 letters long'; - $lang->about_email_address = 'Email address will be used to modify/find password after email verification'; - $lang->about_homepage = 'Please input if you have your websites'; - $lang->about_blog_url = 'Please input if you have your blogs'; - $lang->about_birthday = 'Please input your birth date'; - $lang->about_allow_mailing = "If you don't join mailing, you will not able to receive group mail"; - $lang->about_denied = 'Check to prohibit the ID'; - $lang->about_is_admin = 'Check to give Superadmin permission'; - $lang->about_member_description = "Administrator's memo about members"; - $lang->about_group = 'An ID can belong to many groups'; - - $lang->about_column_type = 'Please set the format of additional join form'; - $lang->about_column_name = 'Please input English name that can be used in template (name as variable)'; - $lang->about_column_title = 'This will be displayed on sign up or modifying/viewing member info form'; - $lang->about_default_value = 'You can set default values'; - $lang->about_active = 'You have to check on active items to show on sign up form'; - $lang->about_form_description = 'If you input in description form, it will be displayed on join form'; - $lang->about_required = 'If you check, it will be essential item for sign up'; - - $lang->about_enable_openid = 'Please check if you want to provide OpenID service'; - $lang->about_enable_join = 'Please check if you want to allow new members to join your site'; - $lang->about_enable_confirm = 'Please check if you want confirm new members\' join with their email.'; - $lang->about_enable_ssl = 'Personal information from Join/Modify Member Info/Login can be sent as SSL(https) mode if server provides SSL service.'; - $lang->about_limit_day = 'You can limit verification date after sign up'; - $lang->about_limit_date = 'User cannot login until assigned date'; - $lang->about_after_login_url = 'You can set URL after login. Blank means current page.'; - $lang->about_after_logout_url = 'You can set URL after logout. Blank means current page.'; - $lang->about_redirect_url = 'Please input URL where users will go after sign up. When this is empty, it will be set as the previous page of sign up page.'; - $lang->about_agreement = "Join Agreement will be displayed if it's not empty"; - - $lang->about_image_name = "Members will be able to use image name instead of text"; - $lang->about_image_mark = "Members will be able to use image mark in front of their names"; - $lang->about_group_image_mark = "You may use group marks shown before their names"; - $lang->about_profile_image = 'Members will be able to use profile images'; - $lang->about_accept_agreement = "I have read the agreement and agree with it"; - - $lang->about_member_default = 'It will be set as default group on sign up'; - - $lang->about_openid = 'When you join as OpenID, basic info like ID or email address will be saved on this site, process for password and verification management will be done on current OpenID offering service'; - $lang->about_openid_leave = 'The secession of OpenID means deletion of your member info from this site.
    If you login after secession, it will be recognized as a new member, so you will no longer have the permission for your ex-written articles.'; - - $lang->about_member = "This is a module for creating/modifying/deleting members and managing group or join form.\nYou can manage members by creating new groups, and get additional information by managing join form"; - $lang->about_find_member_account = 'Your account info will be noticed by registered email address.
    Please input email address which you have input on registration, and press "Find Account Info" button.
    '; - $lang->about_ssl_port = 'Please input if you are using different SSL port with default one'; - $lang->add_openid = 'Add OpenID'; - - $lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.'; -?> +member = 'Member'; + $lang->member_default_info = 'Basic Info'; + $lang->member_extend_info = 'Additional Info'; + $lang->default_group_1 = "Associate Member"; + $lang->default_group_2 = "Regular Member"; + $lang->admin_group = "Managing Group"; + $lang->keep_signed = 'Keep me signed in'; + $lang->remember_user_id = 'Save ID'; + $lang->already_logged = "You are already logged on"; + $lang->denied_user_id = 'You have entered a prohibited ID.'; + $lang->null_user_id = 'Please input ID'; + $lang->null_password = 'Please input password'; + $lang->invalid_authorization = 'The account is not certificated.'; + $lang->invalid_user_id= "You have entered an invalid ID"; + $lang->invalid_password = 'You have entered an invalid password'; + $lang->allow_mailing = 'Join Mailing'; + $lang->denied = 'Prohibited'; + $lang->is_admin = 'Superadmin Permission'; + $lang->group = 'Assigned Group'; + $lang->group_title = 'Group Name'; + $lang->group_srl = 'Group Number'; + $lang->signature = 'Signature'; + $lang->profile_image = 'Profile Image'; + $lang->profile_image_max_width = 'Max Width'; + $lang->profile_image_max_height = 'Max Height'; + $lang->image_name = 'Image Name'; + $lang->image_name_max_width = 'Max Width'; + $lang->image_name_max_height = 'Max Height'; + $lang->image_mark = 'Image Mark'; + $lang->image_mark_max_width = 'Max Width'; + $lang->image_mark_max_height = 'Max Height'; + $lang->group_image_mark = 'Group Image Mark'; + $lang->group_image_mark_max_width = 'Max Width'; + $lang->group_image_mark_max_height = 'Max Height'; + $lang->group_image_mark_order = 'Group Image Mark Order'; + $lang->signature_max_height = 'Max Signature Height'; + $lang->enable_openid = 'Enable OpenID'; + $lang->enable_join = 'Accept New Members'; + $lang->enable_confirm = 'Email Authentication'; + $lang->enable_ssl = 'Enable SSL'; + $lang->security_sign_in = 'Sign in using enhanced security'; + $lang->limit_day = 'Temporary Limit Date'; + $lang->limit_date = 'Limit Date'; + $lang->after_login_url = 'URL after Login'; + $lang->after_logout_url = 'URL after Logout'; + $lang->redirect_url = 'URL after Join'; + $lang->agreement = 'Join Agreement'; + $lang->accept_agreement = 'Agree'; + $lang->member_info = 'Member Info'; + $lang->current_password = 'Current Password'; + $lang->openid = 'OpenID'; + $lang->allow_message = 'Allow Messages'; + $lang->allow_message_type = array( + 'Y' => 'Allow All', + 'F' => 'Allow for Friends', + 'N' => 'Reject All', + ); + $lang->about_allow_message = 'You may allow or reject messages.'; + $lang->logged_users = 'Logged Users'; + + $lang->webmaster_name = "Webmaster Name"; + $lang->webmaster_email = "Webmaster Email"; + + $lang->about_keep_signed = 'You might be kept signed on even when the browser is closed,\n\nIf you use this feature at a shared computer, your personal information might be accessed by others, thus do not use this feature at a shared computer. '; + $lang->about_keep_warning = 'You might be kept signed on even when the browser is closed, If you use this feature at a shared computer, your personal information might be accessed by others, thus do not use this feature at a shared computer.'; + $lang->about_webmaster_name = "Please input webmaster's name which will be used for verification mails or other site administration. (default : webmaster)"; + $lang->about_webmaster_email = "Please input webmaster's email address."; + + $lang->search_target_list = array( + 'user_id' => 'ID', + 'user_name' => 'Name', + 'nick_name' => 'Nickname', + 'email_address' => 'Email Address', + 'regdate' => 'Join Date', + 'regdate_more' => 'Join Date (more)', + 'regdate_less' => 'Join Date (less)', + 'last_login' => 'Last Login Date', + 'last_login_more' => 'Last Login Date (more)', + 'last_login_less' => 'Last Login Date (less)', + 'extra_vars' => 'Extra Vars', + ); + + $lang->cmd_login = 'Login'; + $lang->cmd_logout = 'Logout'; + $lang->cmd_signup = 'Join'; + $lang->cmd_site_signup = 'Join'; + $lang->cmd_modify_member_info = 'Modify Member Info'; + $lang->cmd_modify_member_password = 'Modify Password'; + $lang->cmd_view_member_info = 'Member Info'; + $lang->cmd_leave = 'Leave'; + $lang->cmd_find_member_account = 'Find Account Info'; + $lang->cmd_resend_auth_mail = 'Request for Authentication Mail'; + + $lang->cmd_member_list = 'Member List'; + $lang->cmd_module_config = 'Default Setting'; + $lang->cmd_member_group = 'Member Groups'; + $lang->cmd_send_mail = 'Send Mail'; + $lang->cmd_manage_id = 'Prohibited IDs'; + $lang->cmd_manage_form = 'Join Form'; + $lang->cmd_view_own_document = 'Written Articles'; + $lang->cmd_manage_member_info = 'Manage Member Info'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; + $lang->cmd_view_scrapped_document = 'Scraps'; + $lang->cmd_view_saved_document = 'Saved Articles'; + $lang->cmd_send_email = 'Send Mail'; + + $lang->msg_email_not_exists = "You have entered an invalid email address"; + + $lang->msg_alreay_scrapped = 'This article is already scrapped'; + + $lang->msg_cart_is_null = 'Please select the target'; + $lang->msg_checked_file_is_deleted = '%d attached file(s) is(are) deleted'; + + $lang->msg_find_account_title = 'Account Info'; + $lang->msg_find_account_info = 'This is requested account info.'; + $lang->msg_find_account_comment = 'The password will be modified as above one as you click below link.
    Please modify the password after login.'; + $lang->msg_confirm_account_title = 'Authentication confirmation mail'; + $lang->msg_confirm_account_info = 'This is the registered account information:'; + $lang->msg_confirm_account_comment = 'Click the following confirmation link to complete your sign up.'; + $lang->msg_auth_mail_sent = 'The verification mail has been sent to %s. Please check your mail.'; + $lang->msg_confirm_mail_sent = 'We just sent you a confirmation email to %s. Click on the confirmation link in the email to complete your sign up.'; + $lang->msg_invalid_auth_key = 'This is an invalid request of verification.
    Please retry finding account info or contact to administrator.'; + $lang->msg_success_authed = 'Your account has been successfully certificated and logged on.\n Please modify the password to your own one with the password in the mail.'; + $lang->msg_success_confirmed = 'The autentication completed successfully.'; + + $lang->msg_new_member = 'Add Member'; + $lang->msg_update_member = 'Modify Member Info'; + $lang->msg_leave_member = 'Leave'; + $lang->msg_group_is_null = 'There is no registered group'; + $lang->msg_not_delete_default = 'Default items cannot be deleted'; + $lang->msg_not_exists_member = "Invalid member"; + $lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the ID from administration and try again.'; + $lang->msg_exists_user_id = 'This ID already exists. Please try with another one.'; + $lang->msg_exists_email_address = 'This email address already exists. Please try with another one.'; + $lang->msg_exists_nick_name = 'This nickname already exists. Please try with another one.'; + $lang->msg_signup_disabled = 'You are not able to sign up'; + $lang->msg_already_logged = 'You have already signed up'; + $lang->msg_not_logged = 'Please login first'; + $lang->msg_insert_group_name = 'Please input the name of group'; + $lang->msg_check_group = 'Please select the group'; + + $lang->msg_not_uploaded_profile_image = 'Profile image could not be registered'; + $lang->msg_not_uploaded_image_name = 'Image name could not be registered'; + $lang->msg_not_uploaded_image_mark = 'Image mark could not be registered'; + $lang->msg_not_uploaded_group_image_mark = 'Group image mark could not be registered'; + + $lang->msg_accept_agreement = 'You have to agree the agreement'; + + $lang->msg_user_denied = 'You have entered a prohibited ID'; + $lang->msg_user_not_confirmed = 'You are not authenticated yet. Please check your email.'; + $lang->msg_user_limited = 'You have entered an ID that can be used after %s'; + + $lang->about_user_id = 'User ID should be 3~20 letters long and consist of alphabet+number with alphabet as first letter.'; + $lang->about_password = 'Password should be 6~20 letters long'; + $lang->about_user_name = 'Name should be 2~20 letters long'; + $lang->about_nick_name = 'Nickname should be 2~20 letters long'; + $lang->about_email_address = 'Email address will be used to modify/find password after email verification'; + $lang->about_homepage = 'Please input if you have your websites'; + $lang->about_blog_url = 'Please input if you have your blogs'; + $lang->about_birthday = 'Please input your birth date'; + $lang->about_allow_mailing = "If you don't join mailing, you will not able to receive group mail"; + $lang->about_denied = 'Check to prohibit the ID'; + $lang->about_is_admin = 'Check to give Superadmin permission'; + $lang->about_member_description = "Administrator's memo about members"; + $lang->about_group = 'An ID can belong to many groups'; + + $lang->about_column_type = 'Please set the format of additional join form'; + $lang->about_column_name = 'Please input English name that can be used in template (name as variable)'; + $lang->about_column_title = 'This will be displayed on sign up or modifying/viewing member info form'; + $lang->about_default_value = 'You can set default values'; + $lang->about_active = 'You have to check on active items to show on sign up form'; + $lang->about_form_description = 'If you input in description form, it will be displayed on join form'; + $lang->about_required = 'If you check, it will be essential item for sign up'; + + $lang->about_enable_openid = 'Please check if you want to provide OpenID service'; + $lang->about_enable_join = 'Please check if you want to allow new members to join your site'; + $lang->about_enable_confirm = 'Please check if you want confirm new members\' join with their email.'; + $lang->about_enable_ssl = 'Personal information from Join/Modify Member Info/Login can be sent as SSL(https) mode if server provides SSL service.'; + $lang->about_limit_day = 'You can limit verification date after sign up'; + $lang->about_limit_date = 'User cannot login until assigned date'; + $lang->about_after_login_url = 'You can set URL after login. Blank means current page.'; + $lang->about_after_logout_url = 'You can set URL after logout. Blank means current page.'; + $lang->about_redirect_url = 'Please input URL where users will go after sign up. When this is empty, it will be set as the previous page of sign up page.'; + $lang->about_agreement = "Join Agreement will be displayed if it's not empty"; + + $lang->about_image_name = "Members will be able to use image name instead of text"; + $lang->about_image_mark = "Members will be able to use image mark in front of their names"; + $lang->about_group_image_mark = "You may use group marks shown before their names"; + $lang->about_profile_image = 'Members will be able to use profile images'; + $lang->about_accept_agreement = "I have read the agreement and agree with it"; + + $lang->about_member_default = 'It will be set as default group on sign up'; + + $lang->about_openid = 'When you join as OpenID, basic info like ID or email address will be saved on this site, process for password and verification management will be done on current OpenID offering service'; + $lang->about_openid_leave = 'The secession of OpenID means deletion of your member info from this site.
    If you login after secession, it will be recognized as a new member, so you will no longer have the permission for your ex-written articles.'; + + $lang->about_member = "This is a module for creating/modifying/deleting members and managing group or join form.\nYou can manage members by creating new groups, and get additional information by managing join form"; + $lang->about_find_member_account = 'Your account info will be noticed by registered email address.
    Please input email address which you have input on registration, and press "Find Account Info" button.
    '; + $lang->about_ssl_port = 'Please input if you are using different SSL port with default one'; + $lang->add_openid = 'Add OpenID'; + + $lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.'; +?> diff --git a/modules/member/lang/es.lang.php b/modules/member/lang/es.lang.php index 7a9f1ccaf..1eb7d493b 100644 --- a/modules/member/lang/es.lang.php +++ b/modules/member/lang/es.lang.php @@ -68,6 +68,7 @@ $lang->webmaster_email = 'Correo electrónico Webmaster'; $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; + $lang->about_keep_warning = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다. 로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다. 단, 게임방, 학교 등 공공장소에서 이용 시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요.'; $lang->about_webmaster_name = 'Por favor, webmaster de entrada el nombre que se utilizará para la autenticación de los correos u otros sitio de la administración. (Por defecto: webmaster)'; $lang->about_webmaster_email = 'Introduzca la dirección de correo electrónico webmaster.'; diff --git a/modules/member/lang/fr.lang.php b/modules/member/lang/fr.lang.php index f1bc44fac..966b58a41 100644 --- a/modules/member/lang/fr.lang.php +++ b/modules/member/lang/fr.lang.php @@ -69,6 +69,7 @@ $lang->webmaster_email = "Mél de Webmestre"; $lang->about_keep_signed = 'Malgré que le navigateur est fermé, votre session peut rester ouverte. \n\nSi vous utilisez cette fonction sur l\'ordinateur publique, vos informations privé peut être exposé. Nous vous recommandons de ne pas utiliser cette fonctions sur l\'ordinateur publique.'; + $lang->about_keep_warning = 'Malgré que le navigateur est fermé, votre session peut rester ouverte. Si vous utilisez cette fonction sur l\'ordinateur publique, vos informations privé peut être exposé. Nous vous recommandons de ne pas utiliser cette fonctions sur l\'ordinateur publique.'; $lang->about_webmaster_name = "Entrez le nom de webmestre qui va être utilisé pour le mél de certification ou l\'autre administration du site. (défaut : webmestre)"; $lang->about_webmaster_email = "Entrez l\'adresse du mél de webmestre, S.V.P."; diff --git a/modules/member/lang/jp.lang.php b/modules/member/lang/jp.lang.php index effc94a4c..d126feed0 100644 --- a/modules/member/lang/jp.lang.php +++ b/modules/member/lang/jp.lang.php @@ -1,211 +1,212 @@ -member = '会員'; - $lang->member_default_info = '基本情報'; - $lang->member_extend_info = '追加情報'; - $lang->default_group_1 = '準会員'; - $lang->default_group_2 = '正会員'; - $lang->admin_group = '管理グループ'; - $lang->keep_signed = '次回からID入力を省略'; - $lang->remember_user_id = 'ID保存'; - $lang->already_logged = '既にログインされています。'; - $lang->denied_user_id = '使用が禁じられているIDです。'; - $lang->null_user_id = 'ユーザーIDをもう一度入力して下さい。'; - $lang->null_password = 'パスワードを入力して下さい。'; - $lang->invalid_authorization = '認証出来ませんでした。'; - $lang->invalid_user_id= '存在しないユーザIDです。'; - $lang->invalid_password = '無効なパスワードです。'; - $lang->allow_mailing = 'メーリングリストに登録'; - $lang->denied = '使用中止'; - $lang->is_admin = '最高管理権限'; - $lang->group = '所属グループ'; - $lang->group_title = 'グループ名'; - $lang->group_srl = 'グループ番号'; - $lang->signature = '署名'; - $lang->profile_image = 'プロフィール写真'; - $lang->profile_image_max_width = '制限横幅サイズ'; - $lang->profile_image_max_height = '制限縦幅サイズ'; - $lang->image_name = 'イメージ名'; - $lang->image_name_max_width = '制限横幅サイズ'; - $lang->image_name_max_height = '制限縦幅サイズ'; - $lang->image_mark = 'イメージマーク'; - $lang->image_mark_max_width = '制限横幅サイズ'; - $lang->image_mark_max_height = '制限縦幅サイズ'; - $lang->group_image_mark = 'グループ用イメージマーク'; - $lang->group_image_mark_max_width = '制限横幅サイズ'; - $lang->group_image_mark_max_height = '制限縦幅サイズ'; - $lang->group_image_mark_order = 'グループ用イメージマークの順番'; - $lang->signature_max_height = '制限署名欄の高さ'; - $lang->enable_openid = 'OpenIDサポート'; - $lang->enable_join = '会員登録を許可する'; - $lang->enable_confirm = 'メール認証機能を使用'; - $lang->enable_ssl = 'SSL使用'; - $lang->security_sign_in = 'セキュア(SSL)'; - $lang->limit_day = '臨時制限期間(日)'; - $lang->limit_date = '制限日'; - $lang->after_login_url = 'ログイン後、表示するページのURL'; - $lang->after_logout_url = 'ログアウト後、表示するページのURL'; - $lang->redirect_url = '会員登録後、表示するページ'; - $lang->agreement = '会員登録規約'; - $lang->accept_agreement = '規約に同意する'; - $lang->member_info = '会員情報'; - $lang->current_password = '現在のパスワード'; - $lang->openid = 'OpenID'; - $lang->allow_message = 'メッセージ許可'; - $lang->allow_message_type = array( - 'Y' => '全て許可', - 'F' => '登録した友達のみ許可', - 'N' => '全て禁止', - ); - $lang->about_allow_message = 'メッセージの許可タイプ及び対象を設定します。'; - $lang->logged_users = '現在ログイン中の会員'; - - $lang->webmaster_name = 'ウェブマスターのお名前'; - $lang->webmaster_email = 'ウェブマスターのメールアドレス'; - - $lang->about_keep_signed = 'ブラウザを閉じてもログイン状態が維持されます。\n\nログイン維持機能を利用すると、次回からログインする必要がなくなります。\n\nただ、インターネットカフェ、学校など公共場所で利用する場合、個人情報が流出する恐れがありますので、必ずログアウトして下さい。'; - $lang->about_webmaster_name = '確認メール、またはサイト管理時に使用されるウェブマスターのお名前を入力して下さい(デフォルト : webmaster)。'; - $lang->about_webmaster_email = 'ウェブマスターのメールアドレスを入力して下さい。'; - - $lang->search_target_list = array( - 'user_id' => 'ユーザーID', - 'user_name' => 'お名前', - 'nick_name' => 'ニックネーム', - 'email_address' => 'メールアドレス', - 'regdate' => '登録日', - 'regdate_more' => '登録日(以上)', - 'regdate_less' => '登録日(以下)', - 'last_login' => '最近のログイン', - 'last_login_more' => '最近ログイン日(以上)', - 'last_login_less' => '最近ログイン日(以下)', - 'extra_vars' => '拡張変数', - ); - - $lang->cmd_login = 'ログイン'; - $lang->cmd_logout = 'ログアウト'; - $lang->cmd_signup = '会員登録'; - $lang->cmd_site_signup = '登録'; - $lang->cmd_modify_member_info = '会員情報修正'; - $lang->cmd_modify_member_password = 'パスワード変更'; - $lang->cmd_view_member_info = '会員情報確認'; - $lang->cmd_leave = '退会'; - $lang->cmd_find_member_account = 'IDとパスワードのリマインダー'; - $lang->cmd_resend_auth_mail = '認証メール再申請'; - - $lang->cmd_member_list = '会員リスト'; - $lang->cmd_module_config = '基本設定'; - $lang->cmd_member_group = 'グループ管理'; - $lang->cmd_send_mail = 'メール送信'; - $lang->cmd_manage_id = '禁止ID管理'; - $lang->cmd_manage_form = '会員登録フォーム管理'; - $lang->cmd_view_own_document = '書き込み履歴'; - $lang->cmd_manage_member_info = '会員情報管理'; - $lang->cmd_trace_document = '書き込みの追跡'; - $lang->cmd_trace_comment = 'コメント追跡'; - $lang->cmd_view_scrapped_document = 'スクラップ'; - $lang->cmd_view_saved_document = '保存ドキュメント'; - $lang->cmd_send_email = 'メール送信'; - - $lang->msg_email_not_exists = '登録されたメールアドレスがありません。'; - - $lang->msg_alreay_scrapped = '既にスクラップされたコンテンツです。'; - - $lang->msg_cart_is_null = '対象を選択して下さい。'; - $lang->msg_checked_file_is_deleted = "%d個の添付ファイルが削除されました。"; - - $lang->msg_find_account_title = '会員IDどパスワードの情報'; - $lang->msg_find_account_info = '登録された会員情報は下記の通りです。'; - $lang->msg_find_account_comment = '下のリンクをクリックすると上のパスワードに変更されます。
    ログインしてからパスワードを変更して下さい。'; - $lang->msg_confirm_account_title = '確認メールです。'; - $lang->msg_confirm_account_info = '作成した会員の情報'; - $lang->msg_confirm_account_comment = '下記のURLをクリックして会員登録手続きを完了して下さい。'; - $lang->msg_auth_mail_sent = "%s 宛に認証情報内容が送信されました。メールを確認して下さい。"; - $lang->msg_confirm_mail_sent = "%s 宛に確認メールを送信しました。メールをご確認下さい。"; - $lang->msg_invalid_auth_key = '正しくないアカウントの認証要求です。
    IDとパスワードの検索を行うか、サイト管理者にアカウント情報をお問い合わせ下さい。'; - $lang->msg_success_authed = '認証が正常に行われ、ログイン出来ました。\n必ず確認メールに記載されたパスワードを利用してお好みのパスワードに変更して下さい。'; - $lang->msg_success_confirmed = '会員登録、有難うございます。'; - - $lang->msg_new_member = '会員追加'; - $lang->msg_update_member = '会員情報修正'; - $lang->msg_leave_member = '会員退会'; - $lang->msg_group_is_null = '登録されたグループがありません。'; - $lang->msg_not_delete_default = '基本項目は削除出来ません。'; - $lang->msg_not_exists_member = '存在しないユーザIDです。'; - $lang->msg_cannot_delete_admin = '管理者IDは削除出来ません。管理者権限を解除した上で削除してみて下さい。'; - $lang->msg_exists_user_id = '既に存在するユーザIDです。他のIDを入力して下さい。'; - $lang->msg_exists_email_address = '既に存在するメールアドレスです。他のメールアドレスを入力して下さい。'; - $lang->msg_exists_nick_name = '既に存在するニックネームです。他のニックネームを入力して下さい。'; - $lang->msg_signup_disabled = '会員登録が制限されています。
    サイト管理者にお問合せ下さい。'; - $lang->msg_already_logged = '既に会員に登録されています。'; - $lang->msg_not_logged = 'ログインしていません。'; - $lang->msg_insert_group_name = 'グループ名を入力して下さい。'; - $lang->msg_check_group = 'グループを選択して下さい。'; - - $lang->msg_not_uploaded_profile_image = 'プロフィールイメージを登録することが出来ません。'; - $lang->msg_not_uploaded_image_name = 'イメージ名を登録することが出来ません。'; - $lang->msg_not_uploaded_image_mark = 'イメージマークを登録することが出来ません。'; - $lang->msg_not_uploaded_group_image_mark = 'グループ用イメージマークの登録が出来ません。'; - - $lang->msg_accept_agreement = '規約に同意しなければなりません。'; - - $lang->msg_user_denied = '入力されたユーザIDは使用が中止されました。'; - $lang->msg_user_not_confirmed = 'まだメールの確認が出来ませんでした。届いたメールをご確認下さい。'; - $lang->msg_user_limited = '入力されたユーザIDは%s以降から使用出来ます。'; - - $lang->about_user_id = 'ユーザIDは3~20の英数文字で構成され、最先頭の文字は英字でなければなりません。'; - $lang->about_password = 'パスワードは6~20文字です。'; - $lang->about_user_name = '名前は2~20文字です。'; - $lang->about_nick_name = 'ニックネームは2~20文字です。'; - $lang->about_email_address = 'メールアドレスはメール認証後、パスワード変更または検索などに使用されます。'; - $lang->about_homepage = 'ホームページがある場合は入力して下さい。'; - $lang->about_blog_url = '運用しているブログがあれば入力して下さい。'; - $lang->about_birthday = '生年月日を入力して下さい。'; - $lang->about_allow_mailing = 'メーリングリストにチェックされていない場合は、全体メールの送信時にメールを受け取りません。'; - $lang->about_denied = 'チェックするとユーザIDを使用出来ないようにします。'; - $lang->about_is_admin = 'チェックすると最高管理者権限が取得出来ます。'; - $lang->about_member_description = '会員に対する管理者のメモ帳です。'; - $lang->about_group = '一つのユーザIDは多数のグループに属することが出来ます。'; - - $lang->about_column_type = '追加する登録フォームのタイプを指定して下さい。'; - $lang->about_column_name = 'テンプレートで使用出来る英文字の名前を入力して下さい(変数名)。'; - $lang->about_column_title = '登録または情報修正・閲覧時に表示されるタイトルです。'; - $lang->about_default_value = 'デフォルトで入力される値を指定することが出来ます。'; - $lang->about_active = '活性化(有効化)にチェックを入れないと正常に表示されません。'; - $lang->about_form_description = '説明欄に入力すると登録時に表示されます。'; - $lang->about_required = 'チェックを入れると会員登録時に必須入力項目として設定されます。'; - - $lang->about_enable_openid = 'OpenIDをサポートする際にチェックを入れます。'; - $lang->about_enable_join = 'チェックを入れないとユーザが会員に登録出来ません。'; - $lang->about_enable_confirm = '登録されたメールアドレスに確認メールを送信し、会員登録を確認します。'; - $lang->about_enable_ssl = 'サーバーでSSLが可能な場合、会員登録/情報変更/ログイン等の個人情報はSSL(https)経由でサーバーにより安全に送信されます。'; - $lang->about_limit_day = '会員登録後一定の期間中、認証制限を行うことが出来ます。'; - $lang->about_limit_date = '指定された期間まで該当ユーザはログインできなくします。'; - $lang->about_after_login_url = 'ログイン後表示されるページのURLを指定出来ます。指定のない場合、現在のページが維持されます。'; - $lang->about_after_logout_url = 'ログアウト後表示されるページのURLを指定出来ます。指定のない場合、現在のページが維持されます。'; - $lang->about_redirect_url = '会員登録後、表示されるページのURLを指定出来ます。指定のない場合は会員登録する前のページに戻ります。'; - $lang->about_agreement = '会員登録規約がない場合は表示されません。'; - - $lang->about_image_name = 'ユーザの名前を文字の代わりにイメージで表示させることが出来ます。'; - $lang->about_image_mark = '使用者の名前の前にマークを付けることが出来ます。'; - $lang->about_group_image_mark = 'ユーザー名の前にグループマークを表示します。'; - $lang->about_profile_image = 'ユーザのプロフィールイメージが使用出来るようにします。'; - $lang->about_signature_max_height = '署名欄の高さのサイズを制限します。 (0 もしくは空の場合は制限なし。)'; - $lang->about_accept_agreement = '登録規約をすべて読んだ上で同意します。'; - - $lang->about_member_default = '会員登録時に基本グループとして設定されます。'; - - $lang->about_openid = 'OpenIDで登録する際、IDとメールなどの基本情報は、このサイトに保存されますが、パスワードと認証のための処理用の情報は該当するOpenID提供サービス側で行われます。'; - $lang->about_openid_leave = 'OpenIDの退会は現在のサイトから会員情報を削除することを意味します。
    退会後ログインすると新しく登録することになり、書き込んだコンテンツに対する権限を維持することが出来ません。'; - $lang->about_find_member_account = 'ID/パスワードは登録時に登録されたメールにてお知らせします。
    登録時に登録したメールアドレスを入力して「IDとパスワードのリマインダー」ボタンをクリックして下さい。
    '; - - $lang->about_member = "会員の作成・修正・削除することが出来、グループの管理、登録フォームの管理などが行える会員管理モジュールです。\nデフォルトで作成されたグループにグループを追加作成して会員管理が出来るようにし、会員登録フォーム管理では基本情報の他、フォームの入力情報を追加することが出来ます。"; - $lang->about_ssl_port = '基本ポート以外のSSLポートを利用する場合、入力して下さい。'; - $lang->add_openid = 'OpenIDの追加'; - - $lang->about_resend_auth_mail = '認証メールが届いてなかった場合、再送信の申請が可能です。
    ※申請の前に、当サイトからメールの受信が出来るように設定して下さい。'; -?> +member = '会員'; + $lang->member_default_info = '基本情報'; + $lang->member_extend_info = '追加情報'; + $lang->default_group_1 = '準会員'; + $lang->default_group_2 = '正会員'; + $lang->admin_group = '管理グループ'; + $lang->keep_signed = '次回からID入力を省略'; + $lang->remember_user_id = 'ID保存'; + $lang->already_logged = '既にログインされています。'; + $lang->denied_user_id = '使用が禁じられているIDです。'; + $lang->null_user_id = 'ユーザーIDをもう一度入力して下さい。'; + $lang->null_password = 'パスワードを入力して下さい。'; + $lang->invalid_authorization = '認証出来ませんでした。'; + $lang->invalid_user_id= '存在しないユーザIDです。'; + $lang->invalid_password = '無効なパスワードです。'; + $lang->allow_mailing = 'メーリングリストに登録'; + $lang->denied = '使用中止'; + $lang->is_admin = '最高管理権限'; + $lang->group = '所属グループ'; + $lang->group_title = 'グループ名'; + $lang->group_srl = 'グループ番号'; + $lang->signature = '署名'; + $lang->profile_image = 'プロフィール写真'; + $lang->profile_image_max_width = '制限横幅サイズ'; + $lang->profile_image_max_height = '制限縦幅サイズ'; + $lang->image_name = 'イメージ名'; + $lang->image_name_max_width = '制限横幅サイズ'; + $lang->image_name_max_height = '制限縦幅サイズ'; + $lang->image_mark = 'イメージマーク'; + $lang->image_mark_max_width = '制限横幅サイズ'; + $lang->image_mark_max_height = '制限縦幅サイズ'; + $lang->group_image_mark = 'グループ用イメージマーク'; + $lang->group_image_mark_max_width = '制限横幅サイズ'; + $lang->group_image_mark_max_height = '制限縦幅サイズ'; + $lang->group_image_mark_order = 'グループ用イメージマークの順番'; + $lang->signature_max_height = '制限署名欄の高さ'; + $lang->enable_openid = 'OpenIDサポート'; + $lang->enable_join = '会員登録を許可する'; + $lang->enable_confirm = 'メール認証機能を使用'; + $lang->enable_ssl = 'SSL使用'; + $lang->security_sign_in = 'セキュア(SSL)'; + $lang->limit_day = '臨時制限期間(日)'; + $lang->limit_date = '制限日'; + $lang->after_login_url = 'ログイン後、表示するページのURL'; + $lang->after_logout_url = 'ログアウト後、表示するページのURL'; + $lang->redirect_url = '会員登録後、表示するページ'; + $lang->agreement = '会員登録規約'; + $lang->accept_agreement = '規約に同意する'; + $lang->member_info = '会員情報'; + $lang->current_password = '現在のパスワード'; + $lang->openid = 'OpenID'; + $lang->allow_message = 'メッセージ許可'; + $lang->allow_message_type = array( + 'Y' => '全て許可', + 'F' => '登録した友達のみ許可', + 'N' => '全て禁止', + ); + $lang->about_allow_message = 'メッセージの許可タイプ及び対象を設定します。'; + $lang->logged_users = '現在ログイン中の会員'; + + $lang->webmaster_name = 'ウェブマスターのお名前'; + $lang->webmaster_email = 'ウェブマスターのメールアドレス'; + + $lang->about_keep_signed = 'ブラウザを閉じてもログイン状態が維持されます。\n\nログイン維持機能を利用すると、次回からログインする必要がなくなります。\n\nただ、インターネットカフェ、学校など公共場所で利用する場合、個人情報が流出する恐れがありますので、必ずログアウトして下さい。'; + $lang->about_keep_warning = 'ブラウザを閉じてもログイン状態が維持されます。\n\nログイン維持機能を利用すると、次回からログインする必要がなくなります。 ただ、インターネットカフェ、学校など公共場所で利用する場合、個人情報が流出する恐れがありますので、必ずログアウトして下さい。'; + $lang->about_webmaster_name = '確認メール、またはサイト管理時に使用されるウェブマスターのお名前を入力して下さい(デフォルト : webmaster)。'; + $lang->about_webmaster_email = 'ウェブマスターのメールアドレスを入力して下さい。'; + + $lang->search_target_list = array( + 'user_id' => 'ユーザーID', + 'user_name' => 'お名前', + 'nick_name' => 'ニックネーム', + 'email_address' => 'メールアドレス', + 'regdate' => '登録日', + 'regdate_more' => '登録日(以上)', + 'regdate_less' => '登録日(以下)', + 'last_login' => '最近のログイン', + 'last_login_more' => '最近ログイン日(以上)', + 'last_login_less' => '最近ログイン日(以下)', + 'extra_vars' => '拡張変数', + ); + + $lang->cmd_login = 'ログイン'; + $lang->cmd_logout = 'ログアウト'; + $lang->cmd_signup = '会員登録'; + $lang->cmd_site_signup = '登録'; + $lang->cmd_modify_member_info = '会員情報修正'; + $lang->cmd_modify_member_password = 'パスワード変更'; + $lang->cmd_view_member_info = '会員情報確認'; + $lang->cmd_leave = '退会'; + $lang->cmd_find_member_account = 'IDとパスワードのリマインダー'; + $lang->cmd_resend_auth_mail = '認証メール再申請'; + + $lang->cmd_member_list = '会員リスト'; + $lang->cmd_module_config = '基本設定'; + $lang->cmd_member_group = 'グループ管理'; + $lang->cmd_send_mail = 'メール送信'; + $lang->cmd_manage_id = '禁止ID管理'; + $lang->cmd_manage_form = '会員登録フォーム管理'; + $lang->cmd_view_own_document = '書き込み履歴'; + $lang->cmd_manage_member_info = '会員情報管理'; + $lang->cmd_trace_document = '書き込みの追跡'; + $lang->cmd_trace_comment = 'コメント追跡'; + $lang->cmd_view_scrapped_document = 'スクラップ'; + $lang->cmd_view_saved_document = '保存ドキュメント'; + $lang->cmd_send_email = 'メール送信'; + + $lang->msg_email_not_exists = '登録されたメールアドレスがありません。'; + + $lang->msg_alreay_scrapped = '既にスクラップされたコンテンツです。'; + + $lang->msg_cart_is_null = '対象を選択して下さい。'; + $lang->msg_checked_file_is_deleted = "%d個の添付ファイルが削除されました。"; + + $lang->msg_find_account_title = '会員IDどパスワードの情報'; + $lang->msg_find_account_info = '登録された会員情報は下記の通りです。'; + $lang->msg_find_account_comment = '下のリンクをクリックすると上のパスワードに変更されます。
    ログインしてからパスワードを変更して下さい。'; + $lang->msg_confirm_account_title = '確認メールです。'; + $lang->msg_confirm_account_info = '作成した会員の情報'; + $lang->msg_confirm_account_comment = '下記のURLをクリックして会員登録手続きを完了して下さい。'; + $lang->msg_auth_mail_sent = "%s 宛に認証情報内容が送信されました。メールを確認して下さい。"; + $lang->msg_confirm_mail_sent = "%s 宛に確認メールを送信しました。メールをご確認下さい。"; + $lang->msg_invalid_auth_key = '正しくないアカウントの認証要求です。
    IDとパスワードの検索を行うか、サイト管理者にアカウント情報をお問い合わせ下さい。'; + $lang->msg_success_authed = '認証が正常に行われ、ログイン出来ました。\n必ず確認メールに記載されたパスワードを利用してお好みのパスワードに変更して下さい。'; + $lang->msg_success_confirmed = '会員登録、有難うございます。'; + + $lang->msg_new_member = '会員追加'; + $lang->msg_update_member = '会員情報修正'; + $lang->msg_leave_member = '会員退会'; + $lang->msg_group_is_null = '登録されたグループがありません。'; + $lang->msg_not_delete_default = '基本項目は削除出来ません。'; + $lang->msg_not_exists_member = '存在しないユーザIDです。'; + $lang->msg_cannot_delete_admin = '管理者IDは削除出来ません。管理者権限を解除した上で削除してみて下さい。'; + $lang->msg_exists_user_id = '既に存在するユーザIDです。他のIDを入力して下さい。'; + $lang->msg_exists_email_address = '既に存在するメールアドレスです。他のメールアドレスを入力して下さい。'; + $lang->msg_exists_nick_name = '既に存在するニックネームです。他のニックネームを入力して下さい。'; + $lang->msg_signup_disabled = '会員登録が制限されています。
    サイト管理者にお問合せ下さい。'; + $lang->msg_already_logged = '既に会員に登録されています。'; + $lang->msg_not_logged = 'ログインしていません。'; + $lang->msg_insert_group_name = 'グループ名を入力して下さい。'; + $lang->msg_check_group = 'グループを選択して下さい。'; + + $lang->msg_not_uploaded_profile_image = 'プロフィールイメージを登録することが出来ません。'; + $lang->msg_not_uploaded_image_name = 'イメージ名を登録することが出来ません。'; + $lang->msg_not_uploaded_image_mark = 'イメージマークを登録することが出来ません。'; + $lang->msg_not_uploaded_group_image_mark = 'グループ用イメージマークの登録が出来ません。'; + + $lang->msg_accept_agreement = '規約に同意しなければなりません。'; + + $lang->msg_user_denied = '入力されたユーザIDは使用が中止されました。'; + $lang->msg_user_not_confirmed = 'まだメールの確認が出来ませんでした。届いたメールをご確認下さい。'; + $lang->msg_user_limited = '入力されたユーザIDは%s以降から使用出来ます。'; + + $lang->about_user_id = 'ユーザIDは3~20の英数文字で構成され、最先頭の文字は英字でなければなりません。'; + $lang->about_password = 'パスワードは6~20文字です。'; + $lang->about_user_name = '名前は2~20文字です。'; + $lang->about_nick_name = 'ニックネームは2~20文字です。'; + $lang->about_email_address = 'メールアドレスはメール認証後、パスワード変更または検索などに使用されます。'; + $lang->about_homepage = 'ホームページがある場合は入力して下さい。'; + $lang->about_blog_url = '運用しているブログがあれば入力して下さい。'; + $lang->about_birthday = '生年月日を入力して下さい。'; + $lang->about_allow_mailing = 'メーリングリストにチェックされていない場合は、全体メールの送信時にメールを受け取りません。'; + $lang->about_denied = 'チェックするとユーザIDを使用出来ないようにします。'; + $lang->about_is_admin = 'チェックすると最高管理者権限が取得出来ます。'; + $lang->about_member_description = '会員に対する管理者のメモ帳です。'; + $lang->about_group = '一つのユーザIDは多数のグループに属することが出来ます。'; + + $lang->about_column_type = '追加する登録フォームのタイプを指定して下さい。'; + $lang->about_column_name = 'テンプレートで使用出来る英文字の名前を入力して下さい(変数名)。'; + $lang->about_column_title = '登録または情報修正・閲覧時に表示されるタイトルです。'; + $lang->about_default_value = 'デフォルトで入力される値を指定することが出来ます。'; + $lang->about_active = '活性化(有効化)にチェックを入れないと正常に表示されません。'; + $lang->about_form_description = '説明欄に入力すると登録時に表示されます。'; + $lang->about_required = 'チェックを入れると会員登録時に必須入力項目として設定されます。'; + + $lang->about_enable_openid = 'OpenIDをサポートする際にチェックを入れます。'; + $lang->about_enable_join = 'チェックを入れないとユーザが会員に登録出来ません。'; + $lang->about_enable_confirm = '登録されたメールアドレスに確認メールを送信し、会員登録を確認します。'; + $lang->about_enable_ssl = 'サーバーでSSLが可能な場合、会員登録/情報変更/ログイン等の個人情報はSSL(https)経由でサーバーにより安全に送信されます。'; + $lang->about_limit_day = '会員登録後一定の期間中、認証制限を行うことが出来ます。'; + $lang->about_limit_date = '指定された期間まで該当ユーザはログインできなくします。'; + $lang->about_after_login_url = 'ログイン後表示されるページのURLを指定出来ます。指定のない場合、現在のページが維持されます。'; + $lang->about_after_logout_url = 'ログアウト後表示されるページのURLを指定出来ます。指定のない場合、現在のページが維持されます。'; + $lang->about_redirect_url = '会員登録後、表示されるページのURLを指定出来ます。指定のない場合は会員登録する前のページに戻ります。'; + $lang->about_agreement = '会員登録規約がない場合は表示されません。'; + + $lang->about_image_name = 'ユーザの名前を文字の代わりにイメージで表示させることが出来ます。'; + $lang->about_image_mark = '使用者の名前の前にマークを付けることが出来ます。'; + $lang->about_group_image_mark = 'ユーザー名の前にグループマークを表示します。'; + $lang->about_profile_image = 'ユーザのプロフィールイメージが使用出来るようにします。'; + $lang->about_signature_max_height = '署名欄の高さのサイズを制限します。 (0 もしくは空の場合は制限なし。)'; + $lang->about_accept_agreement = '登録規約をすべて読んだ上で同意します。'; + + $lang->about_member_default = '会員登録時に基本グループとして設定されます。'; + + $lang->about_openid = 'OpenIDで登録する際、IDとメールなどの基本情報は、このサイトに保存されますが、パスワードと認証のための処理用の情報は該当するOpenID提供サービス側で行われます。'; + $lang->about_openid_leave = 'OpenIDの退会は現在のサイトから会員情報を削除することを意味します。
    退会後ログインすると新しく登録することになり、書き込んだコンテンツに対する権限を維持することが出来ません。'; + $lang->about_find_member_account = 'ID/パスワードは登録時に登録されたメールにてお知らせします。
    登録時に登録したメールアドレスを入力して「IDとパスワードのリマインダー」ボタンをクリックして下さい。
    '; + + $lang->about_member = "会員の作成・修正・削除することが出来、グループの管理、登録フォームの管理などが行える会員管理モジュールです。\nデフォルトで作成されたグループにグループを追加作成して会員管理が出来るようにし、会員登録フォーム管理では基本情報の他、フォームの入力情報を追加することが出来ます。"; + $lang->about_ssl_port = '基本ポート以外のSSLポートを利用する場合、入力して下さい。'; + $lang->add_openid = 'OpenIDの追加'; + + $lang->about_resend_auth_mail = '認証メールが届いてなかった場合、再送信の申請が可能です。
    ※申請の前に、当サイトからメールの受信が出来るように設定して下さい。'; +?> diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index 6f3f11261..5d3f19a54 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -1,211 +1,212 @@ -member = '회원'; - $lang->member_default_info = '기본 정보'; - $lang->member_extend_info = '추가 정보'; - $lang->default_group_1 = '준회원'; - $lang->default_group_2 = '정회원'; - $lang->admin_group = '관리그룹'; - $lang->keep_signed = '로그인 유지'; - $lang->remember_user_id = '아이디 저장'; - $lang->already_logged = '이미 로그인되어 있습니다.'; - $lang->denied_user_id = '사용 금지된 아이디입니다.'; - $lang->null_user_id = '사용자 아이디를 입력해주세요.'; - $lang->null_password = '비밀번호를 입력해주세요.'; - $lang->invalid_authorization = '인증이 되지 않았습니다.'; - $lang->invalid_user_id= '존재하지 않는 사용자 아이디입니다.'; - $lang->invalid_password = '잘못된 비밀번호입니다.'; - $lang->allow_mailing = '메일링 가입'; - $lang->denied = '사용중지'; - $lang->is_admin = '최고관리 권한'; - $lang->group = '소속 그룹'; - $lang->group_title = '그룹제목'; - $lang->group_srl = '그룹번호'; - $lang->signature = '서명'; - $lang->profile_image = '프로필 사진'; - $lang->profile_image_max_width = '가로 제한 길이'; - $lang->profile_image_max_height = '세로 제한 길이'; - $lang->image_name = '이미지 이름'; - $lang->image_name_max_width = '가로 제한 길이'; - $lang->image_name_max_height = '세로 제한 길이'; - $lang->image_mark = '이미지 마크'; - $lang->image_mark_max_width = '가로 제한 길이'; - $lang->image_mark_max_height = '세로 제한 길이'; - $lang->group_image_mark = '그룹 이미지 마크'; - $lang->group_image_mark_max_width = '가로 제한 길이'; - $lang->group_image_mark_max_height = '세로 제한 길이'; - $lang->group_image_mark_order = '그룹 이미지 마크 순서'; - $lang->signature_max_height = '서명 높이 제한'; - $lang->enable_openid = 'OpenID 지원'; - $lang->enable_join = '회원 가입 허가'; - $lang->enable_confirm = '메일 인증 사용'; - $lang->enable_ssl = 'SSL 기능 사용'; - $lang->security_sign_in = '보안로그인 사용'; - $lang->limit_day = '임시 제한 일자'; - $lang->limit_date = '제한일'; - $lang->after_login_url = '로그인 후 이동할 URL'; - $lang->after_logout_url = '로그아웃 후 이동할 URL'; - $lang->redirect_url = '회원 가입 후 이동할 페이지'; - $lang->agreement = '회원 가입 약관'; - $lang->accept_agreement = '약관동의'; - $lang->member_info = '회원 정보'; - $lang->current_password = '현재 비밀번호'; - $lang->openid = 'OpenID'; - $lang->allow_message = '쪽지 허용'; - $lang->allow_message_type = array( - 'Y' => '모두 허용', - 'F' => '등록된 친구들만 허용', - 'N' => '모두 금지', - ); - $lang->about_allow_message = '쪽지 허용 방법 및 대상을 지정할 수 있습니다.'; - $lang->logged_users = '현재 접속자'; - - $lang->webmaster_name = '웹마스터 이름'; - $lang->webmaster_email = '웹마스터 메일주소'; - - $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용 시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요.'; - $lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리 시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)'; - $lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.'; - - $lang->search_target_list = array( - 'user_id' => '아이디', - 'user_name' => '이름', - 'nick_name' => '닉네임', - 'email_address' => '메일 주소', - 'regdate' => '가입일시', - 'regdate_more' => '가입일시(이상)', - 'regdate_less' => '가입일시(이하)', - 'last_login' => '최근 로그인 일시', - 'last_login_more' => '최근 로그인 일시(이상)', - 'last_login_less' => '최근 로그인 일시(이하)', - 'extra_vars' => '확장변수', - ); - - $lang->cmd_login = '로그인'; - $lang->cmd_logout = '로그아웃'; - $lang->cmd_signup = '회원 가입'; - $lang->cmd_site_signup = '가입'; - $lang->cmd_modify_member_info = '회원 정보 수정'; - $lang->cmd_modify_member_password = '비밀번호 변경'; - $lang->cmd_view_member_info = '회원 정보 보기'; - $lang->cmd_leave = '탈퇴'; - $lang->cmd_find_member_account = '아이디/비밀번호 찾기'; - $lang->cmd_resend_auth_mail = '인증 메일 재발송'; - - $lang->cmd_member_list = '회원 목록'; - $lang->cmd_module_config = '기본 설정'; - $lang->cmd_member_group = '그룹 관리'; - $lang->cmd_send_mail = '메일발송'; - $lang->cmd_manage_id = '금지 아이디 관리'; - $lang->cmd_manage_form = '가입 폼 관리'; - $lang->cmd_view_own_document = '작성 글 보기'; - $lang->cmd_manage_member_info = '회원 정보 관리'; - $lang->cmd_trace_document = '작성글 추적'; - $lang->cmd_trace_comment = '작성 댓글 추적'; - $lang->cmd_view_scrapped_document = '스크랩 보기'; - $lang->cmd_view_saved_document = '저장함 보기'; - $lang->cmd_send_email = '메일 보내기'; - - $lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다.'; - - $lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다.'; - - $lang->msg_cart_is_null = '대상을 선택해주세요.'; - $lang->msg_checked_file_is_deleted = "%d개의 첨부 파일이 삭제되었습니다."; - - $lang->msg_find_account_title = '아이디/비밀번호 정보입니다.'; - $lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다.'; - $lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.
    로그인 하신 후 비밀번호를 바꾸어주세요.'; - $lang->msg_confirm_account_title = '가입 인증 메일 입니다.'; - $lang->msg_confirm_account_info = '가입하신 계정 정보는 아래와 같습니다.'; - $lang->msg_confirm_account_comment = '아래 링크를 클릭하시면 가입 인증이 이루어집니다.'; - $lang->msg_auth_mail_sent = "%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요."; - $lang->msg_confirm_mail_sent = "%s 메일로 가입 인증 메일이 발송되었습니다. 메일을 확인하세요."; - $lang->msg_invalid_auth_key = '잘못된 계정 인증 요청입니다.
    아이디/비밀번호 찾기를 다시 하시거나 사이트 관리자에게 계정 정보를 문의해주세요.'; - $lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다.\n꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.'; - $lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.'; - - $lang->msg_new_member = '회원 추가'; - $lang->msg_update_member = '회원 정보 수정'; - $lang->msg_leave_member = '회원 탈퇴'; - $lang->msg_group_is_null = '등록된 그룹이 없습니다.'; - $lang->msg_not_delete_default = '기본 항목을 삭제할 수 없습니다.'; - $lang->msg_not_exists_member = '존재하지 않는 사용자입니다.'; - $lang->msg_cannot_delete_admin = '관리자 아이디는 삭제할 수 없습니다. 관리자 해제 후 다시 삭제시도해주세요.'; - $lang->msg_exists_user_id = '이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요.'; - $lang->msg_exists_email_address = '이미 존재하는 메일 주소입니다. 다른 메일 주소를 입력해주세요.'; - $lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요.'; - $lang->msg_signup_disabled = '회원 가입을 하실 수 없습니다.'; - $lang->msg_already_logged = '이미 회원 가입을 하신 상태입니다.'; - $lang->msg_not_logged = '로그인을 하지 않으셨습니다.'; - $lang->msg_insert_group_name = '그룹명을 입력해 주세요.'; - $lang->msg_check_group = '그룹을 선택해 주세요.'; - - $lang->msg_not_uploaded_profile_image = '프로필 이미지를 등록할 수 없습니다.'; - $lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수 없습니다.'; - $lang->msg_not_uploaded_image_mark = '이미지 마크를 등록할 수 없습니다.'; - $lang->msg_not_uploaded_group_image_mark = '그룹 이미지 마크를 등록할 수 없습니다.'; - - $lang->msg_accept_agreement = '약관에 동의하셔야 합니다.'; - - $lang->msg_user_denied = '입력하신 아이디의 사용이 중지되셨습니다.'; - $lang->msg_user_not_confirmed = '아직 메일 인증이 이루어지지 않았습니다. 메일을 확인해 주세요.'; - $lang->msg_user_limited = "입력하신 아이디는 %s 이후부터 사용하실 수 있습니다."; - - $lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다.'; - $lang->about_password = '비밀번호는 6~20자로 되어야 합니다.'; - $lang->about_user_name = '이름은 2~20자 이내여야 합니다.'; - $lang->about_nick_name = '닉네임은 2~20자 이내여야 합니다.'; - $lang->about_email_address = '메일주소는 메일인증 후 비밀번호 변경이나 찾기 등에 사용됩니다.'; - $lang->about_homepage = '홈페이지가 있을 경우 입력해주세요.'; - $lang->about_blog_url = '운영하는 블로그가 있을 경우 입력해주세요.'; - $lang->about_birthday = '생년월일을 입력해주세요.'; - $lang->about_allow_mailing = '메일링 가입이 체크되지 않으면 단체메일 발송시 메일을 받지 않습니다.'; - $lang->about_denied = '체크시 아이디를 사용할 수 없도록 합니다.'; - $lang->about_is_admin = '체크시 최고 관리자 권한을 가지게 됩니다.'; - $lang->about_member_description = '회원에 대한 관리자 메모입니다.'; - $lang->about_group = '한 아이디는 여러 개의 group에 속할 수 있습니다.'; - - $lang->about_column_type = '추가하실 가입 폼의 형식을 지정해주세요.'; - $lang->about_column_name = '템플릿에서 사용할 수 있는 영문으로 된 이름을 적어주세요. (변수명)'; - $lang->about_column_title = '가입 또는 정보 수정/조회시에 표시될 제목입니다.'; - $lang->about_default_value = '기본으로 입력될 값을 정하실 수 있습니다.'; - $lang->about_active = '활성 항목에 체크를 하셔야 가입시 정상적으로 노출됩니다.'; - $lang->about_form_description = '설명란에 입력을 하시면 가입시 표시가 됩니다.'; - $lang->about_required = '체크하시면 회원가입시 필수항목으로 입력하도록 됩니다.'; - - $lang->about_enable_openid = 'OpenID 지원을 할 경우 체크하시면 됩니다.'; - $lang->about_enable_join = '체크를 하셔야 사용자들이 회원가입을 할 수 있습니다.'; - $lang->about_enable_confirm = '입력된 메일 주소로 인증 메일을 보내 회원 가입을 확인 합니다.'; - $lang->about_enable_ssl = '서버에서 SSL지원이 될 경우 회원가입, 정보수정, 로그인 등의 개인정보가 서버로 보내질 때 SSL(https)를 이용하도록 할 수 있습니다.'; - $lang->about_limit_day = '회원 가입 후 정해진 일자동안 인증 제한을 할 수 있습니다.'; - $lang->about_limit_date = '지정된 일자까지 해당 사용자는 로그인을 할 수 없습니다.'; - $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; - $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; - $lang->about_redirect_url = '회원 가입 후 이동할 url을 입력해 주세요. 비어 있으면 가입 이전 페이지로 돌아갑니다.'; - $lang->about_agreement = '회원 가입 약관이 없을 경우 표시되지 않습니다.'; - - $lang->about_image_name = '사용자의 이름을 글자 대신 이미지로 사용할 수 있게 합니다.'; - $lang->about_image_mark = '사용자의 이름 앞에 마크를 달 수 있습니다.'; - $lang->about_group_image_mark = '사용자의 이름 앞에 그룹 마크를 달 수 있습니다.'; - $lang->about_profile_image = '사용자의 프로필 이미지를 사용할 수 있게 합니다.'; - $lang->about_signature_max_height = '서명란의 높이를 제한 할 수 있습니다. (0 또는 비워두면 제한하지 않습니다.)'; - $lang->about_accept_agreement = '약관을 모두 읽었으며 동의합니다.'; - - $lang->about_member_default = '회원가입시 기본 그룹으로 설정됩니다.'; - - $lang->about_openid = '오픈아이디로 가입시 아이디와 메일 등의 기본 정보는 이 사이트에 저장 되지만 비밀번호와 인증을 위한 처리는 해당 오픈아이디 제공서비스에서 이루어집니다.'; - $lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.
    탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다.'; - $lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다.
    가입할 때 등록하신 메일 주소를 입력하시고 "아이디/비밀번호 찾기" 버튼을 클릭해주세요.
    '; - - $lang->about_member = "회원을 생성/수정/삭제 할 수 있고 그룹관리나 가입 폼 관리 등을 할 수 있는 회원 관리 모듈입니다.\n기본으로 생성된 그룹외의 그룹을 생성하여 회원 관리가 가능하고 가입 폼 관리를 통한 기본 정보외의 추가 정보를 요구할 수도 있습니다."; - $lang->about_ssl_port = '기본 포트 이외의 SSL 포트를 사용하는 경우 포트번호를 입력해주세요.'; - $lang->add_openid = '오픈아이디 추가'; - - $lang->about_resend_auth_mail = '인증 메일을 받지 못하신 경우 다시 받으실 수 있습니다.'; -?> +member = '회원'; + $lang->member_default_info = '기본 정보'; + $lang->member_extend_info = '추가 정보'; + $lang->default_group_1 = '준회원'; + $lang->default_group_2 = '정회원'; + $lang->admin_group = '관리그룹'; + $lang->keep_signed = '로그인 유지'; + $lang->remember_user_id = '아이디 저장'; + $lang->already_logged = '이미 로그인되어 있습니다.'; + $lang->denied_user_id = '사용 금지된 아이디입니다.'; + $lang->null_user_id = '사용자 아이디를 입력해주세요.'; + $lang->null_password = '비밀번호를 입력해주세요.'; + $lang->invalid_authorization = '인증이 되지 않았습니다.'; + $lang->invalid_user_id= '존재하지 않는 사용자 아이디입니다.'; + $lang->invalid_password = '잘못된 비밀번호입니다.'; + $lang->allow_mailing = '메일링 가입'; + $lang->denied = '사용중지'; + $lang->is_admin = '최고관리 권한'; + $lang->group = '소속 그룹'; + $lang->group_title = '그룹제목'; + $lang->group_srl = '그룹번호'; + $lang->signature = '서명'; + $lang->profile_image = '프로필 사진'; + $lang->profile_image_max_width = '가로 제한 길이'; + $lang->profile_image_max_height = '세로 제한 길이'; + $lang->image_name = '이미지 이름'; + $lang->image_name_max_width = '가로 제한 길이'; + $lang->image_name_max_height = '세로 제한 길이'; + $lang->image_mark = '이미지 마크'; + $lang->image_mark_max_width = '가로 제한 길이'; + $lang->image_mark_max_height = '세로 제한 길이'; + $lang->group_image_mark = '그룹 이미지 마크'; + $lang->group_image_mark_max_width = '가로 제한 길이'; + $lang->group_image_mark_max_height = '세로 제한 길이'; + $lang->group_image_mark_order = '그룹 이미지 마크 순서'; + $lang->signature_max_height = '서명 높이 제한'; + $lang->enable_openid = 'OpenID 지원'; + $lang->enable_join = '회원 가입 허가'; + $lang->enable_confirm = '메일 인증 사용'; + $lang->enable_ssl = 'SSL 기능 사용'; + $lang->security_sign_in = '보안로그인 사용'; + $lang->limit_day = '임시 제한 일자'; + $lang->limit_date = '제한일'; + $lang->after_login_url = '로그인 후 이동할 URL'; + $lang->after_logout_url = '로그아웃 후 이동할 URL'; + $lang->redirect_url = '회원 가입 후 이동할 페이지'; + $lang->agreement = '회원 가입 약관'; + $lang->accept_agreement = '약관동의'; + $lang->member_info = '회원 정보'; + $lang->current_password = '현재 비밀번호'; + $lang->openid = 'OpenID'; + $lang->allow_message = '쪽지 허용'; + $lang->allow_message_type = array( + 'Y' => '모두 허용', + 'F' => '등록된 친구들만 허용', + 'N' => '모두 금지', + ); + $lang->about_allow_message = '쪽지 허용 방법 및 대상을 지정할 수 있습니다.'; + $lang->logged_users = '현재 접속자'; + + $lang->webmaster_name = '웹마스터 이름'; + $lang->webmaster_email = '웹마스터 메일주소'; + + $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용 시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요.'; + $lang->about_keep_warning = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다. 로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다. 단, 게임방, 학교 등 공공장소에서 이용 시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요.'; + $lang->about_webmaster_name = '인증 메일이나 기타 사이트 관리 시 사용될 웹마스터의 이름을 입력해주세요. (기본 : webmaster)'; + $lang->about_webmaster_email = '웹마스터의 메일 주소를 입력해주세요.'; + + $lang->search_target_list = array( + 'user_id' => '아이디', + 'user_name' => '이름', + 'nick_name' => '닉네임', + 'email_address' => '메일 주소', + 'regdate' => '가입일시', + 'regdate_more' => '가입일시(이상)', + 'regdate_less' => '가입일시(이하)', + 'last_login' => '최근 로그인 일시', + 'last_login_more' => '최근 로그인 일시(이상)', + 'last_login_less' => '최근 로그인 일시(이하)', + 'extra_vars' => '확장변수', + ); + + $lang->cmd_login = '로그인'; + $lang->cmd_logout = '로그아웃'; + $lang->cmd_signup = '회원 가입'; + $lang->cmd_site_signup = '가입'; + $lang->cmd_modify_member_info = '회원 정보 수정'; + $lang->cmd_modify_member_password = '비밀번호 변경'; + $lang->cmd_view_member_info = '회원 정보 보기'; + $lang->cmd_leave = '탈퇴'; + $lang->cmd_find_member_account = '아이디/비밀번호 찾기'; + $lang->cmd_resend_auth_mail = '인증 메일 재발송'; + + $lang->cmd_member_list = '회원 목록'; + $lang->cmd_module_config = '기본 설정'; + $lang->cmd_member_group = '그룹 관리'; + $lang->cmd_send_mail = '메일발송'; + $lang->cmd_manage_id = '금지 아이디 관리'; + $lang->cmd_manage_form = '가입 폼 관리'; + $lang->cmd_view_own_document = '작성 글 보기'; + $lang->cmd_manage_member_info = '회원 정보 관리'; + $lang->cmd_trace_document = '작성글 추적'; + $lang->cmd_trace_comment = '작성 댓글 추적'; + $lang->cmd_view_scrapped_document = '스크랩 보기'; + $lang->cmd_view_saved_document = '저장함 보기'; + $lang->cmd_send_email = '메일 보내기'; + + $lang->msg_email_not_exists = '이메일 주소가 존재하지 않습니다.'; + + $lang->msg_alreay_scrapped = '이미 스크랩된 게시물입니다.'; + + $lang->msg_cart_is_null = '대상을 선택해주세요.'; + $lang->msg_checked_file_is_deleted = "%d개의 첨부 파일이 삭제되었습니다."; + + $lang->msg_find_account_title = '아이디/비밀번호 정보입니다.'; + $lang->msg_find_account_info = '요청하신 계정 정보는 아래와 같습니다.'; + $lang->msg_find_account_comment = '아래 링크를 클릭하시면 위에 적힌 비밀번호로 바뀌게 됩니다.
    로그인 하신 후 비밀번호를 바꾸어주세요.'; + $lang->msg_confirm_account_title = '가입 인증 메일 입니다.'; + $lang->msg_confirm_account_info = '가입하신 계정 정보는 아래와 같습니다.'; + $lang->msg_confirm_account_comment = '아래 링크를 클릭하시면 가입 인증이 이루어집니다.'; + $lang->msg_auth_mail_sent = "%s 메일로 인증 정보를 담은 메일이 발송되었습니다. 메일을 확인하세요."; + $lang->msg_confirm_mail_sent = "%s 메일로 가입 인증 메일이 발송되었습니다. 메일을 확인하세요."; + $lang->msg_invalid_auth_key = '잘못된 계정 인증 요청입니다.
    아이디/비밀번호 찾기를 다시 하시거나 사이트 관리자에게 계정 정보를 문의해주세요.'; + $lang->msg_success_authed = '인증이 정상적으로 되어 로그인 처리가 되었습니다.\n꼭 인증 메일에 표시된 비밀번호를 이용하여 원하시는 비밀번호로 변경하세요.'; + $lang->msg_success_confirmed = '가입 인증이 정상적으로 처리 되었습니다.'; + + $lang->msg_new_member = '회원 추가'; + $lang->msg_update_member = '회원 정보 수정'; + $lang->msg_leave_member = '회원 탈퇴'; + $lang->msg_group_is_null = '등록된 그룹이 없습니다.'; + $lang->msg_not_delete_default = '기본 항목을 삭제할 수 없습니다.'; + $lang->msg_not_exists_member = '존재하지 않는 사용자입니다.'; + $lang->msg_cannot_delete_admin = '관리자 아이디는 삭제할 수 없습니다. 관리자 해제 후 다시 삭제시도해주세요.'; + $lang->msg_exists_user_id = '이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요.'; + $lang->msg_exists_email_address = '이미 존재하는 메일 주소입니다. 다른 메일 주소를 입력해주세요.'; + $lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요.'; + $lang->msg_signup_disabled = '회원 가입을 하실 수 없습니다.'; + $lang->msg_already_logged = '이미 회원 가입을 하신 상태입니다.'; + $lang->msg_not_logged = '로그인을 하지 않으셨습니다.'; + $lang->msg_insert_group_name = '그룹명을 입력해 주세요.'; + $lang->msg_check_group = '그룹을 선택해 주세요.'; + + $lang->msg_not_uploaded_profile_image = '프로필 이미지를 등록할 수 없습니다.'; + $lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수 없습니다.'; + $lang->msg_not_uploaded_image_mark = '이미지 마크를 등록할 수 없습니다.'; + $lang->msg_not_uploaded_group_image_mark = '그룹 이미지 마크를 등록할 수 없습니다.'; + + $lang->msg_accept_agreement = '약관에 동의하셔야 합니다.'; + + $lang->msg_user_denied = '입력하신 아이디의 사용이 중지되셨습니다.'; + $lang->msg_user_not_confirmed = '아직 메일 인증이 이루어지지 않았습니다. 메일을 확인해 주세요.'; + $lang->msg_user_limited = "입력하신 아이디는 %s 이후부터 사용하실 수 있습니다."; + + $lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다.'; + $lang->about_password = '비밀번호는 6~20자로 되어야 합니다.'; + $lang->about_user_name = '이름은 2~20자 이내여야 합니다.'; + $lang->about_nick_name = '닉네임은 2~20자 이내여야 합니다.'; + $lang->about_email_address = '메일주소는 메일인증 후 비밀번호 변경이나 찾기 등에 사용됩니다.'; + $lang->about_homepage = '홈페이지가 있을 경우 입력해주세요.'; + $lang->about_blog_url = '운영하는 블로그가 있을 경우 입력해주세요.'; + $lang->about_birthday = '생년월일을 입력해주세요.'; + $lang->about_allow_mailing = '메일링 가입이 체크되지 않으면 단체메일 발송시 메일을 받지 않습니다.'; + $lang->about_denied = '체크시 아이디를 사용할 수 없도록 합니다.'; + $lang->about_is_admin = '체크시 최고 관리자 권한을 가지게 됩니다.'; + $lang->about_member_description = '회원에 대한 관리자 메모입니다.'; + $lang->about_group = '한 아이디는 여러 개의 group에 속할 수 있습니다.'; + + $lang->about_column_type = '추가하실 가입 폼의 형식을 지정해주세요.'; + $lang->about_column_name = '템플릿에서 사용할 수 있는 영문으로 된 이름을 적어주세요. (변수명)'; + $lang->about_column_title = '가입 또는 정보 수정/조회시에 표시될 제목입니다.'; + $lang->about_default_value = '기본으로 입력될 값을 정하실 수 있습니다.'; + $lang->about_active = '활성 항목에 체크를 하셔야 가입시 정상적으로 노출됩니다.'; + $lang->about_form_description = '설명란에 입력을 하시면 가입시 표시가 됩니다.'; + $lang->about_required = '체크하시면 회원가입시 필수항목으로 입력하도록 됩니다.'; + + $lang->about_enable_openid = 'OpenID 지원을 할 경우 체크하시면 됩니다.'; + $lang->about_enable_join = '체크를 하셔야 사용자들이 회원가입을 할 수 있습니다.'; + $lang->about_enable_confirm = '입력된 메일 주소로 인증 메일을 보내 회원 가입을 확인 합니다.'; + $lang->about_enable_ssl = '서버에서 SSL지원이 될 경우 회원가입, 정보수정, 로그인 등의 개인정보가 서버로 보내질 때 SSL(https)를 이용하도록 할 수 있습니다.'; + $lang->about_limit_day = '회원 가입 후 정해진 일자동안 인증 제한을 할 수 있습니다.'; + $lang->about_limit_date = '지정된 일자까지 해당 사용자는 로그인을 할 수 없습니다.'; + $lang->about_after_login_url = '로그인 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정하실 수 있습니다. 비어 있으면 해당 페이지가 유지됩니다.'; + $lang->about_redirect_url = '회원 가입 후 이동할 url을 입력해 주세요. 비어 있으면 가입 이전 페이지로 돌아갑니다.'; + $lang->about_agreement = '회원 가입 약관이 없을 경우 표시되지 않습니다.'; + + $lang->about_image_name = '사용자의 이름을 글자 대신 이미지로 사용할 수 있게 합니다.'; + $lang->about_image_mark = '사용자의 이름 앞에 마크를 달 수 있습니다.'; + $lang->about_group_image_mark = '사용자의 이름 앞에 그룹 마크를 달 수 있습니다.'; + $lang->about_profile_image = '사용자의 프로필 이미지를 사용할 수 있게 합니다.'; + $lang->about_signature_max_height = '서명란의 높이를 제한 할 수 있습니다. (0 또는 비워두면 제한하지 않습니다.)'; + $lang->about_accept_agreement = '약관을 모두 읽었으며 동의합니다.'; + + $lang->about_member_default = '회원가입시 기본 그룹으로 설정됩니다.'; + + $lang->about_openid = '오픈아이디로 가입시 아이디와 메일 등의 기본 정보는 이 사이트에 저장 되지만 비밀번호와 인증을 위한 처리는 해당 오픈아이디 제공서비스에서 이루어집니다.'; + $lang->about_openid_leave = '오픈아이디의 탈퇴는 현 사이트에서의 회원 정보를 삭제하는 것입니다.
    탈퇴 후 로그인하시면 새로 가입하시는 것으로 되어 작성한 글에 대한 권한을 가질 수 없게 됩니다.'; + $lang->about_find_member_account = '아이디/ 비밀번호는 가입시 등록한 메일 주소로 알려드립니다.
    가입할 때 등록하신 메일 주소를 입력하시고 "아이디/비밀번호 찾기" 버튼을 클릭해주세요.
    '; + + $lang->about_member = "회원을 생성/수정/삭제 할 수 있고 그룹관리나 가입 폼 관리 등을 할 수 있는 회원 관리 모듈입니다.\n기본으로 생성된 그룹외의 그룹을 생성하여 회원 관리가 가능하고 가입 폼 관리를 통한 기본 정보외의 추가 정보를 요구할 수도 있습니다."; + $lang->about_ssl_port = '기본 포트 이외의 SSL 포트를 사용하는 경우 포트번호를 입력해주세요.'; + $lang->add_openid = '오픈아이디 추가'; + + $lang->about_resend_auth_mail = '인증 메일을 받지 못하신 경우 다시 받으실 수 있습니다.'; +?> diff --git a/modules/member/lang/ru.lang.php b/modules/member/lang/ru.lang.php index c2956601f..c55d0997b 100644 --- a/modules/member/lang/ru.lang.php +++ b/modules/member/lang/ru.lang.php @@ -68,6 +68,7 @@ $lang->webmaster_email = "Email веб-мастера"; $lang->about_keep_signed = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = "Пожалуйста, введите имя веб-мастера, которое будет использоваться для аутентификационных писем или другого адиминистрирования сайта. (по умолчанию : webmaster)"; + $lang->about_keep_warning = '브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다. 로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다. 단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요'; $lang->about_webmaster_name = "Пожалуйста, введите имя веб-мастера, которое будет использоваться для аутентификационных писем или другого адиминистрирования сайта. (по умолчанию : webmaster)"; $lang->about_webmaster_email = "Пожалуйста, введите email адрес веб-мастера."; $lang->search_target_list = array( diff --git a/modules/member/lang/vi.lang.php b/modules/member/lang/vi.lang.php index 78c519a10..cd3a04943 100644 --- a/modules/member/lang/vi.lang.php +++ b/modules/member/lang/vi.lang.php @@ -1,212 +1,213 @@ -member = 'Thành viên'; - $lang->member_default_info = 'Thông tin cá nhân'; - $lang->member_extend_info = 'Thông tin bổ xung'; - $lang->default_group_1 = "Member"; - $lang->default_group_2 = "Moderator"; - $lang->admin_group = "Administrator"; - $lang->keep_signed = 'Nhớ thông tin đăng nhập'; - $lang->remember_user_id = 'Lưu tên sử dụng'; - $lang->already_logged = "Bạn đã đăng nhập"; - $lang->denied_user_id = 'ID đăng nhập của bạn đã bị cấm sử dụng.'; - $lang->null_user_id = 'Xin vui lòng nhập ID đăng nhập'; - $lang->null_password = 'Xin vui lòng nhập mật khẩu'; - $lang->invalid_authorization = 'Tài khoản đăng nhập không đúng.'; - $lang->invalid_user_id= "Bạn đã nhập sai tên sử dụng"; - $lang->allow_mailing = 'Đồng ý nhận Email'; - $lang->invalid_password = 'Mật khẩu không đúng'; - $lang->denied = 'Bị từ chối'; - $lang->is_admin = 'Toàn quyền Administrator'; - $lang->group = 'Phân nhóm'; - $lang->group_title = 'Tên nhóm'; - $lang->group_srl = 'Nhóm số'; - $lang->signature = 'Chữ kí'; - $lang->profile_image = 'Hình đại diện'; - $lang->profile_image_max_width = 'Chiểu rộng tối đa'; - $lang->profile_image_max_height = 'Chiều cao tối đa  '; - $lang->image_name = 'Hình thay thế tên hiển thị'; - $lang->image_name_max_width = 'Chiểu rộng tối đa'; - $lang->image_name_max_height = 'Chiều cao tối đa  '; - $lang->image_mark = 'Hình đánh dấu'; - $lang->image_mark_max_width = 'Chiểu rộng tối đa'; - $lang->image_mark_max_height = 'Chiều cao tối đa  '; - $lang->group_image_mark = 'Hình đại diện nhóm'; - $lang->group_image_mark_max_width = 'Chiểu rộng tối đa'; - $lang->group_image_mark_max_height = 'Chiều cao tối đa  '; - $lang->group_image_mark_order = 'Thứ tự hình đại diện nhóm'; - $lang->signature_max_height = 'Chiều cao lớn nhất của chữ kí'; - $lang->enable_openid = 'Kích hoạt OpenID'; - $lang->enable_join = 'Đồng ý đăng kí thành viên'; - $lang->enable_confirm = 'Xác nhận qua Email'; - $lang->enable_ssl = 'Mở SSL'; - $lang->security_sign_in = 'Bảo mật đăng nhập'; - $lang->limit_day = 'Hạn sử dụng'; - $lang->limit_date = 'Ngày giới hạn'; - $lang->after_login_url = 'URL sau khi đăng nhập'; - $lang->after_logout_url = 'URL sau khi thoát'; - $lang->redirect_url = 'URL sau khi đăng kí'; - $lang->agreement = 'Quy định sử dụng'; - $lang->accept_agreement = 'Đồng ý'; - $lang->member_info = 'Thông tin cá nhân'; - $lang->current_password = 'Mật khẩu hiện tại'; - $lang->openid = 'OpenID'; - $lang->allow_message = 'Nhận tin nhắn'; - $lang->allow_message_type = array( - 'Y' => 'Tất cả', - 'F' => 'Chỉ của bạn bè', - 'N' => 'Từ chối tất cả', - ); - $lang->about_allow_message = 'Bạn có thể chấp nhận hoặc từ chối những tin nhắn.'; - $lang->logged_users = 'Thành viên đăng nhập'; - - $lang->webmaster_name = "Tên Webmaster"; - $lang->webmaster_email = " Email Webmaster"; - - $lang->about_keep_signed = 'Mặc dù tắt trình duyệt nhưng thông tin đăng nhập của bạn vẫn được lưu lại trên máy tính này.\n\nNếu bạn sử dụng máy tính dùng chung, người khác cũng có thể đăng nhập dưới tên truy cập của bạn. Vì vậy chức năng này không nên sử dụng nếu máy tính này không phải của riêng bạn!'; - $lang->about_webmaster_name = "Xin hãy nhập tên của Webmaster để nhận Email và quản lý. (Mặc định: webmaster)"; - $lang->about_webmaster_email = "Xin hãy nhập Email của Webmaster."; - - $lang->search_target_list = array( - 'user_id' => 'ID đăng nhập', - 'user_name' => 'Tên thật', - 'nick_name' => 'Nickname', - 'email_address' => 'Địa chỉ Email', - 'regdate' => 'Ngày đăng kí', - 'regdate_more' => 'Ngày đăng kí nhiều nhất', - 'regdate_less' => 'Ngày đăng kí ít nhất', - 'last_login' => 'Lần cuối đăng nhập', - 'last_login_more' => 'Đăng nhập nhiều nhất', - 'last_login_less' => 'Đăng nhập ít nhất', - 'extra_vars' => 'Thông tin bổ xung', - ); - - $lang->cmd_login = 'Đăng nhập'; - $lang->cmd_logout = 'Thoát'; - $lang->cmd_signup = 'Đăng kí'; - $lang->cmd_site_signup = 'Đăng kí'; - $lang->cmd_modify_member_info = 'Sửa đổi thông tin cá nhân'; - $lang->cmd_modify_member_password = 'Sửa đổi mật khẩu'; - $lang->cmd_view_member_info = 'Xem thông tin cá nhân'; - $lang->cmd_leave = 'Từ bỏ'; - $lang->cmd_find_member_account = 'Lấy lại thông tin'; - $lang->cmd_resend_auth_mail = 'Xác nhận lại Email'; - - $lang->cmd_member_list = 'Danh sách thành viên'; - $lang->cmd_module_config = 'Thiết lập mặc định'; - $lang->cmd_member_group = 'Quản lý nhóm'; - $lang->cmd_send_mail = 'Gửi Email'; - $lang->cmd_manage_id = 'Tên sử dụng cấm đăng kí'; - $lang->cmd_manage_form = 'Quản lý mẫu đăng kí'; - $lang->cmd_view_own_document = 'Bài gửi'; - $lang->cmd_manage_member_info = 'Quản lý thông tin thành viên'; - $lang->cmd_trace_document = 'Theo dõi chủ đề'; - $lang->cmd_trace_comment = 'Theo dõi thảo luận'; - $lang->cmd_view_scrapped_document = 'Phân loại'; - $lang->cmd_view_saved_document = 'Bài viết đã lưu'; - $lang->cmd_send_email = 'Gửi eMail'; - - $lang->msg_email_not_exists = "Bạn đã nhập sai Email"; - - $lang->msg_alreay_scrapped = 'Bài viết đã được phân loại.'; - - $lang->msg_cart_is_null = 'Xin vui lòng lựa chọn vị trí'; - $lang->msg_checked_file_is_deleted = '%d đính kèm đã được xóa.'; - - $lang->msg_find_account_title = 'Thông tin đăng kí tại Website http;//4all.kr'; - $lang->msg_find_account_info = 'Thông tin tài khoản.'; - $lang->msg_find_account_comment = 'Mật khẩu sẽ thay đổi khi bạn bấm vào đường Link này.
    Xin vui lòng thay đổi mật khẩu sau khi đăng nhập!'; - $lang->msg_confirm_account_title = 'Thông tin đăng kí thành viên tại Website http://4all.kr'; - $lang->msg_confirm_account_info = 'Đây là thông tin bạn đã đăng kí tại Website http://4all.kr:'; - $lang->msg_confirm_account_comment = 'Bấm vào đường Link này để hoàn tất việc đăng kí.'; - $lang->msg_auth_mail_sent = 'Email xác nhận đã được gửi đến %s. Xin vui lòng kiểm tra Inbox hoặc Bulk mail của bạn!'; - $lang->msg_confirm_mail_sent = 'Chúng tôi đã gửi Email xác nhận đến %s. Xin vui lòng bấm vào Link đi kèm trong Email để hoàn tất việc đăng kí!'; - $lang->msg_invalid_auth_key = 'Xác nhận không hợp lệ.
    Xin vui lòng kiểm tra lại hoặc liên hệ với Webmaster để được hỗ trợ!'; - $lang->msg_success_authed = 'Tài khoản của bạn đã được xác nhận.\n Xin vui lòng thay đổi mật khẩu khác với mật khẩu trong Email và dễ nhớ hơn!'; - $lang->msg_success_confirmed = 'Đã xác nhận thành công.
    Xin cảm ơn đã tham gia cùng chúng tôi!'; - - $lang->msg_new_member = 'Thêm thành viên'; - $lang->msg_update_member = 'Sửa đổi thông tin thành viên'; - $lang->msg_leave_member = 'Loại bỏ'; - $lang->msg_group_is_null = 'Không đăng kí vào nhóm nào'; - $lang->msg_not_delete_default = 'Mặc định không thể xóa'; - $lang->msg_not_exists_member = "Thành viên không hợp lệ"; - $lang->msg_cannot_delete_admin = 'Admin ID không thể xóa!'; - $lang->msg_exists_user_id = 'Tên sử dụng này đã có người dùng. Xin vui lòng thử lại với tên truy cập khác!'; - $lang->msg_exists_email_address = 'Email này đã có người sử dụng. Xin vui lòng thử lại với Email khác!'; - $lang->msg_exists_nick_name = 'Nickname này đã có người sử dụng. Xin vui lòng thử lại với Nickname khác!'; - $lang->msg_signup_disabled = 'Bạn không thể đăng kí.'; - $lang->msg_already_logged = 'Bạn đã đăng kí rồi.'; - $lang->msg_not_logged = 'Xin vui lòng đăng nhập trước!'; - $lang->msg_insert_group_name = 'Xin vui lòng nhập tên của nhóm!'; - $lang->msg_check_group = 'Xin vui lòng chọn nhóm!'; - - $lang->msg_not_uploaded_profile_image = 'Không thể đăng kí được hình đại diện.'; - $lang->msg_not_uploaded_image_name = 'Không thể gửi được hình ảnh thay Nickname.'; - $lang->msg_not_uploaded_image_mark = 'Hình đánh dấu đã không được gửi.'; - $lang->msg_not_uploaded_group_image_mark = 'Hình thay thế nhóm đã không được gửi'; - - $lang->msg_accept_agreement = 'Bạn phải đồng ý với điều khoản sử dụng của chúng tôi.'; - - $lang->msg_user_denied = 'Tên sử dụng này đã bị cấm đăng kí.'; - $lang->msg_user_not_confirmed = 'Bạn chưa xác nhận việc đăng kí. Xin vui lòng kiểm tra Email!'; - $lang->msg_user_limited = 'Bạn được phép sử dụng đến ngày %s'; - - $lang->about_user_id = 'Độ dài của tên truy cập được giới hạn từ 3 đến 20 kí tự gồm a-z và các số.'; - $lang->about_password = 'Độ dài mật khẩu giới hạn từ 6 đến 20 kí tự.'; - $lang->about_user_name = 'Giới hạn của tên từ 2 đến 20 kí tự.'; - $lang->about_nick_name = 'Độ dài của Nickname từ 2 đến 20 kí tự.'; - $lang->about_email_address = 'Email được sử dụng để lên lạc, xác nhận và lấy lại mật khẩu nếu lỡ quên.'; - $lang->about_homepage = 'Nếu bạn có Website hãy nhập vào đây.'; - $lang->about_blog_url = 'Nếu bạn có Blog hãy nhập vào đây.'; - $lang->about_birthday = 'Hãy chọn ngày sinh nhật của bạn.'; - $lang->about_allow_mailing = "Nếu không đồng ý nhận Email, bạn sẽ không thể nhận được những liên lạc của bạn bè hoặc của nhóm."; - $lang->about_denied = 'Kiểm tra tên sử dụng bị cấm.'; - $lang->about_is_admin = 'Kiểm tra toàn quyền Administrator'; - $lang->about_member_description = "Ghi nhớ của Admin về những thành viên"; - $lang->about_group = 'Một tên sử dụng có thể tham gia nhiều nhóm'; - - $lang->about_column_type = 'Hãy chọn một định dạng để sử dụng.'; - $lang->about_column_name = 'Nhập tên theo Tiếng Anh.'; - $lang->about_column_title = 'Sẽ được hiển thị khi đăng kí, sửa đổi hay xem thông tin thành viên.'; - $lang->about_default_value = 'Bạn có thể đặt giá trị mặc định.'; - $lang->about_active = 'Nếu chọn, thông tin này sẽ được hiển thị trong bảng đăng kí.'; - $lang->about_form_description = 'Nếu bạn nhập mô tả, nó sẽ được hiển thị trong bảng đăng kí.'; - $lang->about_required = 'Nếu chọn, thông tin này sẽ được hiển thị trong bảng đăng kí.'; - - $lang->about_enable_openid = 'Kích hoạt đăng nhập bằng OpenID.'; - $lang->about_enable_join = 'Cho phép thành viên đăng kí.'; - $lang->about_enable_confirm = 'Gửi Email xác nhận sau khi đăng kí.'; - $lang->about_enable_ssl = 'Thông tin cá nhân khi thành viên Đăng kí, Đăng nhập và Sủa đổi sẽ được gửi dưới dạng SSL(https). Hãy chọn nếu Server cho phép sử dụng chức năng này.'; - $lang->about_limit_day = 'Bạn có thể giới hạn ngày xác nhận sau khi đăng kí.'; - $lang->about_limit_date = 'Thành viên không thể đăng nhập nếu quá hạn xác nhận đăng kí.'; - $lang->about_after_login_url = 'Bạn có thể thiết đặt địa chỉ nào đó sẽ hiển thị sau khi đăng nhập. Để trống nếu không sử dụng.'; - $lang->about_after_logout_url = 'Bạn có thể thiết đặt địa chỉ nào đó sẽ hiển thị sau khi thoát. Để trống nếu không sử dụng.'; - $lang->about_redirect_url = 'Hãy nhập địa chỉ trang sẽ chuyển đến sau khi thành viên đăng kí. Để trống nếu không sử dụng.'; - $lang->about_agreement = "Điều khoản sử dụng sẽ hiển thị trong Form đăng kí nếu có nội dung."; - - $lang->about_image_name = "Cho phép thành viên sử dụng hình ảnh thay cho tên."; - $lang->about_image_mark = "Cho phép sử dụng hình ảnh nhỏ truóc tên của họ."; - $lang->about_group_image_mark = "Bạn có thể sử dụng biểu tượng nhóm sẽ hiển thị trước tên thành viên."; - $lang->about_profile_image = 'Cho phép thành viên sử dụng thông tin cá nhân bằng hình ảnh.'; - $lang->about_accept_agreement = "Tôi đã đọc và đồng ý với điều khoản sử dụng của Website."; - - $lang->about_member_default = 'Sẽ là nhóm mặc định khi thành viên đăng kí.'; - - $lang->about_openid = 'Khi bạn đăng nhập bằng OpenID, những thông tin cơ bản và Email của bạn sẽ lưu lại tại Website này. Việc này sẽ giúp bạn lấy lại thông tin nếu như bạn lỡ quên hoặc nhận những thông báo từ Ban Quản trị Website.'; - $lang->about_openid_leave = 'Thông tin OpenID của bạn sẽ được cập nhật tại Website này.
    Nếu bạn đăng nhập, Thông tin OpenID của bạn sẽ được lưu lại như một thành viên đã đăng kí, và bạn có thể gửi bài viết hay bình luận.'; - - $lang->about_member = "Chức năng của Module này sẽ cho phép bạn tạo, sửa, xóa thành viên và quản lý nhóm hay Form đăng kí.\nBạn có thể quản lý thành viên bằng cách tạo những nhóm mới, và thêm những thông tin trong Form đăng kí."; - $lang->about_find_member_account = 'Thông tin tài khoản của bạn sẽ được tìm thấy với Email bạn đã đăng kí.
    Xin vui lòng nhập Email mà bạn đã đăng kí và bấm "Lấy lại thông tin" để nhận được thông tin đăng nhập!.
    '; - $lang->about_ssl_port = 'Xin hãy nhập cổng kết nối mặc định cho SSL.'; - $lang->add_openid = 'Thêm OpenID'; - - $lang->about_resend_auth_mail = 'Nhận lại mã kích hoạt nếu bạn đã không nhận được Email kích hoạt khi đăng kí.'; -?> +member = 'Thành viên'; + $lang->member_default_info = 'Thông tin cá nhân'; + $lang->member_extend_info = 'Thông tin bổ xung'; + $lang->default_group_1 = "Member"; + $lang->default_group_2 = "Moderator"; + $lang->admin_group = "Administrator"; + $lang->keep_signed = 'Nhớ thông tin đăng nhập'; + $lang->remember_user_id = 'Lưu tên sử dụng'; + $lang->already_logged = "Bạn đã đăng nhập"; + $lang->denied_user_id = 'ID đăng nhập của bạn đã bị cấm sử dụng.'; + $lang->null_user_id = 'Xin vui lòng nhập ID đăng nhập'; + $lang->null_password = 'Xin vui lòng nhập mật khẩu'; + $lang->invalid_authorization = 'Tài khoản đăng nhập không đúng.'; + $lang->invalid_user_id= "Bạn đã nhập sai tên sử dụng"; + $lang->allow_mailing = 'Đồng ý nhận Email'; + $lang->invalid_password = 'Mật khẩu không đúng'; + $lang->denied = 'Bị từ chối'; + $lang->is_admin = 'Toàn quyền Administrator'; + $lang->group = 'Phân nhóm'; + $lang->group_title = 'Tên nhóm'; + $lang->group_srl = 'Nhóm số'; + $lang->signature = 'Chữ kí'; + $lang->profile_image = 'Hình đại diện'; + $lang->profile_image_max_width = 'Chiểu rộng tối đa'; + $lang->profile_image_max_height = 'Chiều cao tối đa  '; + $lang->image_name = 'Hình thay thế tên hiển thị'; + $lang->image_name_max_width = 'Chiểu rộng tối đa'; + $lang->image_name_max_height = 'Chiều cao tối đa  '; + $lang->image_mark = 'Hình đánh dấu'; + $lang->image_mark_max_width = 'Chiểu rộng tối đa'; + $lang->image_mark_max_height = 'Chiều cao tối đa  '; + $lang->group_image_mark = 'Hình đại diện nhóm'; + $lang->group_image_mark_max_width = 'Chiểu rộng tối đa'; + $lang->group_image_mark_max_height = 'Chiều cao tối đa  '; + $lang->group_image_mark_order = 'Thứ tự hình đại diện nhóm'; + $lang->signature_max_height = 'Chiều cao lớn nhất của chữ kí'; + $lang->enable_openid = 'Kích hoạt OpenID'; + $lang->enable_join = 'Đồng ý đăng kí thành viên'; + $lang->enable_confirm = 'Xác nhận qua Email'; + $lang->enable_ssl = 'Mở SSL'; + $lang->security_sign_in = 'Bảo mật đăng nhập'; + $lang->limit_day = 'Hạn sử dụng'; + $lang->limit_date = 'Ngày giới hạn'; + $lang->after_login_url = 'URL sau khi đăng nhập'; + $lang->after_logout_url = 'URL sau khi thoát'; + $lang->redirect_url = 'URL sau khi đăng kí'; + $lang->agreement = 'Quy định sử dụng'; + $lang->accept_agreement = 'Đồng ý'; + $lang->member_info = 'Thông tin cá nhân'; + $lang->current_password = 'Mật khẩu hiện tại'; + $lang->openid = 'OpenID'; + $lang->allow_message = 'Nhận tin nhắn'; + $lang->allow_message_type = array( + 'Y' => 'Tất cả', + 'F' => 'Chỉ của bạn bè', + 'N' => 'Từ chối tất cả', + ); + $lang->about_allow_message = 'Bạn có thể chấp nhận hoặc từ chối những tin nhắn.'; + $lang->logged_users = 'Thành viên đăng nhập'; + + $lang->webmaster_name = "Tên Webmaster"; + $lang->webmaster_email = " Email Webmaster"; + + $lang->about_keep_signed = 'Mặc dù tắt trình duyệt nhưng thông tin đăng nhập của bạn vẫn được lưu lại trên máy tính này.\n\nNếu bạn sử dụng máy tính dùng chung, người khác cũng có thể đăng nhập dưới tên truy cập của bạn. Vì vậy chức năng này không nên sử dụng nếu máy tính này không phải của riêng bạn!'; + $lang->about_keep_warning = 'Mặc dù tắt trình duyệt nhưng thông tin đăng nhập của bạn vẫn được lưu lại trên máy tính này. Nếu bạn sử dụng máy tính dùng chung, người khác cũng có thể đăng nhập dưới tên truy cập của bạn. Vì vậy chức năng này không nên sử dụng nếu máy tính này không phải của riêng bạn!'; + $lang->about_webmaster_name = "Xin hãy nhập tên của Webmaster để nhận Email và quản lý. (Mặc định: webmaster)"; + $lang->about_webmaster_email = "Xin hãy nhập Email của Webmaster."; + + $lang->search_target_list = array( + 'user_id' => 'ID đăng nhập', + 'user_name' => 'Tên thật', + 'nick_name' => 'Nickname', + 'email_address' => 'Địa chỉ Email', + 'regdate' => 'Ngày đăng kí', + 'regdate_more' => 'Ngày đăng kí nhiều nhất', + 'regdate_less' => 'Ngày đăng kí ít nhất', + 'last_login' => 'Lần cuối đăng nhập', + 'last_login_more' => 'Đăng nhập nhiều nhất', + 'last_login_less' => 'Đăng nhập ít nhất', + 'extra_vars' => 'Thông tin bổ xung', + ); + + $lang->cmd_login = 'Đăng nhập'; + $lang->cmd_logout = 'Thoát'; + $lang->cmd_signup = 'Đăng kí'; + $lang->cmd_site_signup = 'Đăng kí'; + $lang->cmd_modify_member_info = 'Sửa đổi thông tin cá nhân'; + $lang->cmd_modify_member_password = 'Sửa đổi mật khẩu'; + $lang->cmd_view_member_info = 'Xem thông tin cá nhân'; + $lang->cmd_leave = 'Từ bỏ'; + $lang->cmd_find_member_account = 'Lấy lại thông tin'; + $lang->cmd_resend_auth_mail = 'Xác nhận lại Email'; + + $lang->cmd_member_list = 'Danh sách thành viên'; + $lang->cmd_module_config = 'Thiết lập mặc định'; + $lang->cmd_member_group = 'Quản lý nhóm'; + $lang->cmd_send_mail = 'Gửi Email'; + $lang->cmd_manage_id = 'Tên sử dụng cấm đăng kí'; + $lang->cmd_manage_form = 'Quản lý mẫu đăng kí'; + $lang->cmd_view_own_document = 'Bài gửi'; + $lang->cmd_manage_member_info = 'Quản lý thông tin thành viên'; + $lang->cmd_trace_document = 'Theo dõi chủ đề'; + $lang->cmd_trace_comment = 'Theo dõi thảo luận'; + $lang->cmd_view_scrapped_document = 'Phân loại'; + $lang->cmd_view_saved_document = 'Bài viết đã lưu'; + $lang->cmd_send_email = 'Gửi eMail'; + + $lang->msg_email_not_exists = "Bạn đã nhập sai Email"; + + $lang->msg_alreay_scrapped = 'Bài viết đã được phân loại.'; + + $lang->msg_cart_is_null = 'Xin vui lòng lựa chọn vị trí'; + $lang->msg_checked_file_is_deleted = '%d đính kèm đã được xóa.'; + + $lang->msg_find_account_title = 'Thông tin đăng kí tại Website http;//4all.kr'; + $lang->msg_find_account_info = 'Thông tin tài khoản.'; + $lang->msg_find_account_comment = 'Mật khẩu sẽ thay đổi khi bạn bấm vào đường Link này.
    Xin vui lòng thay đổi mật khẩu sau khi đăng nhập!'; + $lang->msg_confirm_account_title = 'Thông tin đăng kí thành viên tại Website http://4all.kr'; + $lang->msg_confirm_account_info = 'Đây là thông tin bạn đã đăng kí tại Website http://4all.kr:'; + $lang->msg_confirm_account_comment = 'Bấm vào đường Link này để hoàn tất việc đăng kí.'; + $lang->msg_auth_mail_sent = 'Email xác nhận đã được gửi đến %s. Xin vui lòng kiểm tra Inbox hoặc Bulk mail của bạn!'; + $lang->msg_confirm_mail_sent = 'Chúng tôi đã gửi Email xác nhận đến %s. Xin vui lòng bấm vào Link đi kèm trong Email để hoàn tất việc đăng kí!'; + $lang->msg_invalid_auth_key = 'Xác nhận không hợp lệ.
    Xin vui lòng kiểm tra lại hoặc liên hệ với Webmaster để được hỗ trợ!'; + $lang->msg_success_authed = 'Tài khoản của bạn đã được xác nhận.\n Xin vui lòng thay đổi mật khẩu khác với mật khẩu trong Email và dễ nhớ hơn!'; + $lang->msg_success_confirmed = 'Đã xác nhận thành công.
    Xin cảm ơn đã tham gia cùng chúng tôi!'; + + $lang->msg_new_member = 'Thêm thành viên'; + $lang->msg_update_member = 'Sửa đổi thông tin thành viên'; + $lang->msg_leave_member = 'Loại bỏ'; + $lang->msg_group_is_null = 'Không đăng kí vào nhóm nào'; + $lang->msg_not_delete_default = 'Mặc định không thể xóa'; + $lang->msg_not_exists_member = "Thành viên không hợp lệ"; + $lang->msg_cannot_delete_admin = 'Admin ID không thể xóa!'; + $lang->msg_exists_user_id = 'Tên sử dụng này đã có người dùng. Xin vui lòng thử lại với tên truy cập khác!'; + $lang->msg_exists_email_address = 'Email này đã có người sử dụng. Xin vui lòng thử lại với Email khác!'; + $lang->msg_exists_nick_name = 'Nickname này đã có người sử dụng. Xin vui lòng thử lại với Nickname khác!'; + $lang->msg_signup_disabled = 'Bạn không thể đăng kí.'; + $lang->msg_already_logged = 'Bạn đã đăng kí rồi.'; + $lang->msg_not_logged = 'Xin vui lòng đăng nhập trước!'; + $lang->msg_insert_group_name = 'Xin vui lòng nhập tên của nhóm!'; + $lang->msg_check_group = 'Xin vui lòng chọn nhóm!'; + + $lang->msg_not_uploaded_profile_image = 'Không thể đăng kí được hình đại diện.'; + $lang->msg_not_uploaded_image_name = 'Không thể gửi được hình ảnh thay Nickname.'; + $lang->msg_not_uploaded_image_mark = 'Hình đánh dấu đã không được gửi.'; + $lang->msg_not_uploaded_group_image_mark = 'Hình thay thế nhóm đã không được gửi'; + + $lang->msg_accept_agreement = 'Bạn phải đồng ý với điều khoản sử dụng của chúng tôi.'; + + $lang->msg_user_denied = 'Tên sử dụng này đã bị cấm đăng kí.'; + $lang->msg_user_not_confirmed = 'Bạn chưa xác nhận việc đăng kí. Xin vui lòng kiểm tra Email!'; + $lang->msg_user_limited = 'Bạn được phép sử dụng đến ngày %s'; + + $lang->about_user_id = 'Độ dài của tên truy cập được giới hạn từ 3 đến 20 kí tự gồm a-z và các số.'; + $lang->about_password = 'Độ dài mật khẩu giới hạn từ 6 đến 20 kí tự.'; + $lang->about_user_name = 'Giới hạn của tên từ 2 đến 20 kí tự.'; + $lang->about_nick_name = 'Độ dài của Nickname từ 2 đến 20 kí tự.'; + $lang->about_email_address = 'Email được sử dụng để lên lạc, xác nhận và lấy lại mật khẩu nếu lỡ quên.'; + $lang->about_homepage = 'Nếu bạn có Website hãy nhập vào đây.'; + $lang->about_blog_url = 'Nếu bạn có Blog hãy nhập vào đây.'; + $lang->about_birthday = 'Hãy chọn ngày sinh nhật của bạn.'; + $lang->about_allow_mailing = "Nếu không đồng ý nhận Email, bạn sẽ không thể nhận được những liên lạc của bạn bè hoặc của nhóm."; + $lang->about_denied = 'Kiểm tra tên sử dụng bị cấm.'; + $lang->about_is_admin = 'Kiểm tra toàn quyền Administrator'; + $lang->about_member_description = "Ghi nhớ của Admin về những thành viên"; + $lang->about_group = 'Một tên sử dụng có thể tham gia nhiều nhóm'; + + $lang->about_column_type = 'Hãy chọn một định dạng để sử dụng.'; + $lang->about_column_name = 'Nhập tên theo Tiếng Anh.'; + $lang->about_column_title = 'Sẽ được hiển thị khi đăng kí, sửa đổi hay xem thông tin thành viên.'; + $lang->about_default_value = 'Bạn có thể đặt giá trị mặc định.'; + $lang->about_active = 'Nếu chọn, thông tin này sẽ được hiển thị trong bảng đăng kí.'; + $lang->about_form_description = 'Nếu bạn nhập mô tả, nó sẽ được hiển thị trong bảng đăng kí.'; + $lang->about_required = 'Nếu chọn, thông tin này sẽ được hiển thị trong bảng đăng kí.'; + + $lang->about_enable_openid = 'Kích hoạt đăng nhập bằng OpenID.'; + $lang->about_enable_join = 'Cho phép thành viên đăng kí.'; + $lang->about_enable_confirm = 'Gửi Email xác nhận sau khi đăng kí.'; + $lang->about_enable_ssl = 'Thông tin cá nhân khi thành viên Đăng kí, Đăng nhập và Sủa đổi sẽ được gửi dưới dạng SSL(https). Hãy chọn nếu Server cho phép sử dụng chức năng này.'; + $lang->about_limit_day = 'Bạn có thể giới hạn ngày xác nhận sau khi đăng kí.'; + $lang->about_limit_date = 'Thành viên không thể đăng nhập nếu quá hạn xác nhận đăng kí.'; + $lang->about_after_login_url = 'Bạn có thể thiết đặt địa chỉ nào đó sẽ hiển thị sau khi đăng nhập. Để trống nếu không sử dụng.'; + $lang->about_after_logout_url = 'Bạn có thể thiết đặt địa chỉ nào đó sẽ hiển thị sau khi thoát. Để trống nếu không sử dụng.'; + $lang->about_redirect_url = 'Hãy nhập địa chỉ trang sẽ chuyển đến sau khi thành viên đăng kí. Để trống nếu không sử dụng.'; + $lang->about_agreement = "Điều khoản sử dụng sẽ hiển thị trong Form đăng kí nếu có nội dung."; + + $lang->about_image_name = "Cho phép thành viên sử dụng hình ảnh thay cho tên."; + $lang->about_image_mark = "Cho phép sử dụng hình ảnh nhỏ truóc tên của họ."; + $lang->about_group_image_mark = "Bạn có thể sử dụng biểu tượng nhóm sẽ hiển thị trước tên thành viên."; + $lang->about_profile_image = 'Cho phép thành viên sử dụng thông tin cá nhân bằng hình ảnh.'; + $lang->about_accept_agreement = "Tôi đã đọc và đồng ý với điều khoản sử dụng của Website."; + + $lang->about_member_default = 'Sẽ là nhóm mặc định khi thành viên đăng kí.'; + + $lang->about_openid = 'Khi bạn đăng nhập bằng OpenID, những thông tin cơ bản và Email của bạn sẽ lưu lại tại Website này. Việc này sẽ giúp bạn lấy lại thông tin nếu như bạn lỡ quên hoặc nhận những thông báo từ Ban Quản trị Website.'; + $lang->about_openid_leave = 'Thông tin OpenID của bạn sẽ được cập nhật tại Website này.
    Nếu bạn đăng nhập, Thông tin OpenID của bạn sẽ được lưu lại như một thành viên đã đăng kí, và bạn có thể gửi bài viết hay bình luận.'; + + $lang->about_member = "Chức năng của Module này sẽ cho phép bạn tạo, sửa, xóa thành viên và quản lý nhóm hay Form đăng kí.\nBạn có thể quản lý thành viên bằng cách tạo những nhóm mới, và thêm những thông tin trong Form đăng kí."; + $lang->about_find_member_account = 'Thông tin tài khoản của bạn sẽ được tìm thấy với Email bạn đã đăng kí.
    Xin vui lòng nhập Email mà bạn đã đăng kí và bấm "Lấy lại thông tin" để nhận được thông tin đăng nhập!.
    '; + $lang->about_ssl_port = 'Xin hãy nhập cổng kết nối mặc định cho SSL.'; + $lang->add_openid = 'Thêm OpenID'; + + $lang->about_resend_auth_mail = 'Nhận lại mã kích hoạt nếu bạn đã không nhận được Email kích hoạt khi đăng kí.'; +?> diff --git a/modules/member/lang/zh-CN.lang.php b/modules/member/lang/zh-CN.lang.php index b553310bd..bb8975890 100644 --- a/modules/member/lang/zh-CN.lang.php +++ b/modules/member/lang/zh-CN.lang.php @@ -69,6 +69,7 @@ $lang->webmaster_email = '管理员电子邮件'; $lang->about_keep_signed = '关闭浏览器后也将维持登录状态。\n\n使用自动登录功能,可解决每次访问都要输入用户名及密码的麻烦。\n\n为防止个人信息泄露,在网吧,学校等公共场所请务必要确认解除登录状态。'; + $lang->about_keep_warning = '关闭浏览器后也将维持登录状态。\n\n使用自动登录功能,可解决每次访问都要输入用户名及密码的麻烦。 为防止个人信息泄露,在网吧,学校等公共场所请务必要确认解除登录状态。'; $lang->about_webmaster_name = '请输入认证所需的电子邮件地址或管理其他网站时要使用的网站管理员名称。(默认 : webmaster)'; $lang->about_webmaster_email = '请输入网站管理员的电子邮件地址。'; diff --git a/modules/member/lang/zh-TW.lang.php b/modules/member/lang/zh-TW.lang.php index 8846be3c3..24824cb20 100644 --- a/modules/member/lang/zh-TW.lang.php +++ b/modules/member/lang/zh-TW.lang.php @@ -69,6 +69,7 @@ $lang->webmaster_email = '管理員電子郵件'; $lang->about_keep_signed = '關閉瀏覽器後也將維持登入狀態。\n\n使用自動登入功能,可解決每次訪問都要輸入帳號及密碼的麻煩。\n\n為防止個人資料洩露,在網咖,學校等公共場所,請務必要確認解除登入狀態。'; + $lang->about_keep_warning = '關閉瀏覽器後也將維持登入狀態。\n\n使用自動登入功能,可解決每次訪問都要輸入帳號及密碼的麻煩。 為防止個人資料洩露,在網咖,學校等公共場所,請務必要確認解除登入狀態。'; $lang->about_webmaster_name = '請輸入認證所需的電子郵件地址或管理其他網站時要使用的網站管理員名稱。(預設 : webmaster)'; $lang->about_webmaster_email = '請輸入網站管理員的電子郵件地址。'; From 28097711452207523bcc8a9252787c94ffeb83cb Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Dec 2009 02:27:29 +0000 Subject: [PATCH 022/209] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7012 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/styles/default/skin.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/editor/styles/default/skin.xml b/modules/editor/styles/default/skin.xml index 25e1b6f61..8c7d422a2 100644 --- a/modules/editor/styles/default/skin.xml +++ b/modules/editor/styles/default/skin.xml @@ -21,6 +21,7 @@ XEの基本ドキュメント書式です。 そのまま表示されるだけで、編集・出力には影響しません。 + XE default document style. It displays as it is, and affect nothing to editing / printing. From 4ea14b7ea4aaa5c6ee52fea84fd932a3ae20c087 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Dec 2009 05:26:21 +0000 Subject: [PATCH 023/209] =?UTF-8?q?=EC=97=90=EB=94=94=ED=84=B0=20=EC=84=9C?= =?UTF-8?q?=EC=8B=9D=20=EC=A7=80=EC=A0=95=EC=8B=9C=20=EB=8C=93=EA=B8=80=20?= =?UTF-8?q?=EC=84=9C=EC=8B=9D=EC=9D=84=20=EB=B3=84=EB=8F=84=EB=A1=9C=20?= =?UTF-8?q?=EC=A7=80=EC=A0=95=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95=20=ED=95=98=EC=A7=80=EB=A7=8C=20?= =?UTF-8?q?=EB=B3=B8=EB=AC=B8=20=EC=B6=9C=EB=A0=A5=EC=8B=9C=EC=97=90?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=84=9C=20=EC=84=9C=EC=8B=9D=20css?= =?UTF-8?q?=EB=A7=8C=20load=20=EA=B0=80=EB=8A=A5=20=ED=95=A8=20(=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=8F=BC=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=84=9C?= =?UTF-8?q?=EC=8B=9D=20=EB=B6=84=EB=A6=AC=EB=A1=9C=20=EB=B3=B4=EB=8A=94=20?= =?UTF-8?q?=EA=B2=83=EC=9D=B4=20=EB=A7=9E=EC=9D=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7013 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/editor.controller.php | 1 + modules/editor/editor.model.php | 2 +- modules/editor/tpl/editor_module_config.html | 11 ++++++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/editor/editor.controller.php b/modules/editor/editor.controller.php index 32976befe..dedfbe42c 100644 --- a/modules/editor/editor.controller.php +++ b/modules/editor/editor.controller.php @@ -81,6 +81,7 @@ $editor_config->editor_skin = Context::get('editor_skin'); $editor_config->comment_editor_skin = Context::get('comment_editor_skin'); $editor_config->content_style = Context::get('content_style'); + $editor_config->comment_content_style = Context::get('comment_content_style'); $editor_config->content_font = Context::get('content_font'); if($editor_config->content_font) { $font_list = array(); diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index cd542fd1f..30ff546b0 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -239,7 +239,7 @@ $config->enable_autosave = $editor_config->enable_autosave; } else { $config->editor_skin = $editor_config->comment_editor_skin; - $config->content_style = $editor_config->content_style; + $config->content_style = $editor_config->comment_content_style; $config->content_font = $editor_config->content_font; $config->content_font_size = $editor_config->content_font_size; $config->sel_editor_colorset = $editor_config->sel_comment_editor_colorset; diff --git a/modules/editor/tpl/editor_module_config.html b/modules/editor/tpl/editor_module_config.html index fe7ec69fa..654135185 100644 --- a/modules/editor/tpl/editor_module_config.html +++ b/modules/editor/tpl/editor_module_config.html @@ -24,6 +24,7 @@ +
    +
    + + +
    {$lang->content_font}
    From 22d241d4ee4b3a32f3a821fdd456991e73c79d0c Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 8 Dec 2009 05:33:39 +0000 Subject: [PATCH 024/209] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=EC=84=9C=EC=8B=9D?= =?UTF-8?q?=EC=9D=B4=20=EC=84=A4=EC=A0=95=EB=90=98=EC=96=B4=20=EC=9E=88?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9C=BC=EB=A9=B4=20default=20=EC=84=9C?= =?UTF-8?q?=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EB=B3=B4=EC=9D=B4=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7014 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/tpl/editor_module_config.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/tpl/editor_module_config.html b/modules/editor/tpl/editor_module_config.html index 654135185..e2de82170 100644 --- a/modules/editor/tpl/editor_module_config.html +++ b/modules/editor/tpl/editor_module_config.html @@ -53,14 +53,14 @@ From bb8cc8383a3d0b709d86dc3b1a107d29bfae662a Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 8 Dec 2009 06:48:46 +0000 Subject: [PATCH 025/209] =?UTF-8?q?#18531973=20safe=5Fmode=3Doff=20?= =?UTF-8?q?=EC=9D=BC=EB=95=8C=20ftp=20=EC=A0=95=EB=B3=B4=20=EB=B0=9B?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7015 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/install/install.view.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/install/install.view.php b/modules/install/install.view.php index 202c97165..c6f0c014d 100644 --- a/modules/install/install.view.php +++ b/modules/install/install.view.php @@ -50,7 +50,7 @@ if(!$this->install_enable) return $this->dispInstallCheckEnv(); // ftp 정보 입력 - if(!Context::isFTPRegisted()) { + if(ini_get('safe_mode') && !Context::isFTPRegisted()) { $this->setTemplateFile('ftp'); } else { $this->setTemplateFile('select_db'); From e4318249d6181053a4ca74025d0d21c8cc0e10cd Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 8 Dec 2009 07:24:17 +0000 Subject: [PATCH 026/209] =?UTF-8?q?login=20form=20=EC=97=90=20title=20?= =?UTF-8?q?=EB=85=B8=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7016 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/message/skins/default/message.js | 27 +++++++++++++++++++ .../message/skins/default/system_message.html | 12 ++++----- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/modules/message/skins/default/message.js b/modules/message/skins/default/message.js index ad073879a..815cb0cec 100644 --- a/modules/message/skins/default/message.js +++ b/modules/message/skins/default/message.js @@ -9,3 +9,30 @@ function completeMessageOpenIDLogin(ret_obj, response_tags) { var redirect_url = ret_obj['redirect_url']; location.href = redirect_url; } + +function doLogin(o,filter){ + jQuery('input.inputText',o).each(function(){ + var t = jQuery(this); + if(t.attr('title').length>0 && t.attr('title') == t.val()) t.val(''); + }); + procFilter(o,filter); + initLoginTitleMsg(); + return false; +} + + +function initLoginTitleMsg(){ + jQuery('.gLogin, .mLogin').find('input.inputText').focus(function(){ + var t = jQuery(this); + if(t.attr('title').length>0 && t.attr('title')==t.val()) t.val(''); + }).blur(function(){ + var t = jQuery(this); + if(t.attr('title').length>0 && t.val()=='') t.val(t.attr('title')); + }).focus().blur(); +} + +jQuery(function(){ + initLoginTitleMsg(); +}); + + diff --git a/modules/message/skins/default/system_message.html b/modules/message/skins/default/system_message.html index 639d03927..da1c512d5 100644 --- a/modules/message/skins/default/system_message.html +++ b/modules/message/skins/default/system_message.html @@ -7,11 +7,11 @@
    -
    +
      -
    • -
    • +
    • +

    @@ -37,10 +37,10 @@

    - +
    - +
    @@ -56,4 +56,4 @@ {$lang->cmd_logout}
    -
    \ No newline at end of file +
    From a5bae0fb011b0f3aadca751b92f26953af1a44f3 Mon Sep 17 00:00:00 2001 From: taggon Date: Wed, 9 Dec 2009 02:33:50 +0000 Subject: [PATCH 027/209] =?UTF-8?q?#18533379=20=EC=95=84=EC=9D=B4=ED=94=BC?= =?UTF-8?q?=EC=99=80=20MMS=20=EB=A7=81=ED=81=AC=20=EC=A7=80=EC=9B=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7017 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.js | 4 ++-- addons/autolink/autolink.spec.html | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/autolink/autolink.js b/addons/autolink/autolink.js index f3068b9f7..eb42dd39c 100644 --- a/addons/autolink/autolink.js +++ b/addons/autolink/autolink.js @@ -4,9 +4,9 @@ * @author taggon (gonom9@gmail.com) */ (function($){ - var protocol_re = '(https?|ftp|news|telnet|irc)://'; + var protocol_re = '(https?|ftp|news|telnet|irc|mms)://'; var domain_re = '(?:[\\w\\-]+\\.)+(?:[a-z]+)'; - var max_255_re = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5])'; + var max_255_re = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]?)'; var ip_re = '(?:'+max_255_re+'\\.){3}'+max_255_re; var port_re = '(?::([0-9]+))?'; var path_re = '((?:/[\\w!"$-/:-@]+)*)'; diff --git a/addons/autolink/autolink.spec.html b/addons/autolink/autolink.spec.html index f9fe19b16..bd57922e0 100644 --- a/addons/autolink/autolink.spec.html +++ b/addons/autolink/autolink.spec.html @@ -51,7 +51,7 @@ describe('AutoLink functionality', { value_of( $('#test5').contents().length ).should_be(3); }, "#test6 - complex example" : function() { - value_of( $('#test6 a').length ).should_be(4); + value_of( $('#test6 a').length ).should_be(6); value_of( $('#test6 a').eq(0).attr('href') ).should_be($('#test6 a').eq(0).text()); value_of( $('#test6 a').eq(2).parent().is('b') ).should_be_true(); value_of( $('#test6 > textarea > a').length ).should_be(0); @@ -94,6 +94,8 @@ describe('Autolink trigger', { http://mygony.com Sayonara~
    + IP Test http://119.205.243.46 and MMS Link mms://xpressengine.com/a.wmv + Is it OK?
    http://mygony.com
    Go to http://mygony.com
    From 4174e5f85c9dbb23a35f8380e88065eb7dbd429c Mon Sep 17 00:00:00 2001 From: taggon Date: Wed, 9 Dec 2009 04:48:46 +0000 Subject: [PATCH 028/209] =?UTF-8?q?#18533379=20localhost=20=EB=8F=84=20?= =?UTF-8?q?=EA=B7=9C=EC=B9=99=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7018 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.js | 4 ++-- addons/autolink/autolink.spec.html | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/autolink/autolink.js b/addons/autolink/autolink.js index eb42dd39c..4b3939ebd 100644 --- a/addons/autolink/autolink.js +++ b/addons/autolink/autolink.js @@ -6,13 +6,13 @@ (function($){ var protocol_re = '(https?|ftp|news|telnet|irc|mms)://'; var domain_re = '(?:[\\w\\-]+\\.)+(?:[a-z]+)'; - var max_255_re = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]?)'; + var max_255_re = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9]?[0-9])'; var ip_re = '(?:'+max_255_re+'\\.){3}'+max_255_re; var port_re = '(?::([0-9]+))?'; var path_re = '((?:/[\\w!"$-/:-@]+)*)'; var hash_re = '(?:#([\\w!-@]+))?'; - var url_regex = new RegExp('('+protocol_re+'('+domain_re+'|'+ip_re+')'+port_re+path_re+hash_re+')', 'ig'); + var url_regex = new RegExp('('+protocol_re+'('+domain_re+'|'+ip_re+'|localhost'+')'+port_re+path_re+hash_re+')', 'ig'); var AutoLink = xe.createPlugin("autolink", { targets : [], diff --git a/addons/autolink/autolink.spec.html b/addons/autolink/autolink.spec.html index bd57922e0..670a0a502 100644 --- a/addons/autolink/autolink.spec.html +++ b/addons/autolink/autolink.spec.html @@ -51,7 +51,7 @@ describe('AutoLink functionality', { value_of( $('#test5').contents().length ).should_be(3); }, "#test6 - complex example" : function() { - value_of( $('#test6 a').length ).should_be(6); + value_of( $('#test6 a').length ).should_be(7); value_of( $('#test6 a').eq(0).attr('href') ).should_be($('#test6 a').eq(0).text()); value_of( $('#test6 a').eq(2).parent().is('b') ).should_be_true(); value_of( $('#test6 > textarea > a').length ).should_be(0); @@ -95,6 +95,7 @@ describe('Autolink trigger', { Sayonara~ IP Test http://119.205.243.46 and MMS Link mms://xpressengine.com/a.wmv + http://localhost/some/path/file.ext Is it OK?
    http://mygony.com
    From 6ce72677660fd3bdaba7501bc664f7b2dfc18414 Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 9 Dec 2009 13:17:42 +0000 Subject: [PATCH 029/209] #18534804 : blogapi specification git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7019 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/blogapi/blogapi.addon.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/blogapi/blogapi.addon.php b/addons/blogapi/blogapi.addon.php index 57fa31277..dd78a2011 100644 --- a/addons/blogapi/blogapi.addon.php +++ b/addons/blogapi/blogapi.addon.php @@ -263,8 +263,7 @@ if(!$output->toBool()) { $content = getXmlRpcFailure(1, $output->getMessage()); } else { - //$content = getXmlRpcResponse(Context::getRequestUri().$this->mid.'/'.$document_srl); - $content = getXmlRpcResponse($document_srl); + $content = getXmlRpcResponse(strval($document_srl)); } FileHandler::removeDir($tmp_uploaded_path); @@ -362,7 +361,7 @@ if(!$output->toBool()) { $content = getXmlRpcFailure(1, $output->getMessage()); } else { - $content = getXmlRpcResponse(getFullUrl('','document_srl',$document_srl)); + $content = getXmlRpcResponse(true); FileHandler::removeDir($tmp_uploaded_path); } From 051f6c9bd4c4ec656d2ebb14256b853ffd2af78a Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 9 Dec 2009 13:39:02 +0000 Subject: [PATCH 030/209] #18534804 : add xml header git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7020 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/blogapi/blogapi.addon.php | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/blogapi/blogapi.addon.php b/addons/blogapi/blogapi.addon.php index dd78a2011..e6a079f9e 100644 --- a/addons/blogapi/blogapi.addon.php +++ b/addons/blogapi/blogapi.addon.php @@ -168,6 +168,7 @@ } $content = sprintf( + ''. ''. ''. ''. From a0f5c6c16e9e1d0d427a80faf2818f0da64bc145 Mon Sep 17 00:00:00 2001 From: bnu Date: Thu, 10 Dec 2009 02:02:58 +0000 Subject: [PATCH 031/209] =?UTF-8?q?#18535753=20*=20=EC=9E=84=EC=8B=9C?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EA=B8=80=20=EB=B3=B5=EC=9B=90=EC=8B=9C=20?= =?UTF-8?q?=EB=B6=84=EB=A5=98=20=EB=AC=B8=EC=84=9C=20=EC=88=98=20=EA=B0=B1?= =?UTF-8?q?=EC=8B=A0=EB=90=98=EC=A7=80=20=EB=AA=BB=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7021 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 484fd9e0f..d70b8fd09 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -380,8 +380,8 @@ if($extra_content->content) $this->insertDocumentExtraVar($obj->module_srl, $obj->document_srl, -2, $extra_content->content, 'content_'.Context::getLangType()); // 성공하였을 경우 category_srl이 있으면 카테고리 update - if($source_obj->get('category_srl')!=$obj->category_srl) { - if($source_obj->get('category_srl')) $this->updateCategoryCount($obj->module_srl, $source_obj->get('category_srl')); + if($source_obj->get('category_srl') != $obj->category_srl || $source_obj->get('module_srl') == $logged_info->member_srl) { + if($source_obj->get('category_srl') != $obj->category_srl) $this->updateCategoryCount($obj->module_srl, $source_obj->get('category_srl')); if($obj->category_srl) $this->updateCategoryCount($obj->module_srl, $obj->category_srl); } From e002ff3c85416565e04b3c5a56b22b154f13eec9 Mon Sep 17 00:00:00 2001 From: ngleader Date: Thu, 10 Dec 2009 05:34:52 +0000 Subject: [PATCH 032/209] #18536062 click counter function "incr()" when simple update query git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7022 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBCubrid.class.php | 51 ++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 41eb81beb..0110a28a4 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -489,23 +489,31 @@ * @brief updateAct 처리 **/ function _executeUpdateAct($output) { + // 테이블 정리 foreach($output->tables as $key => $val) { $table_list[] = '"'.$this->prefix.$val.'" as "'.$key.'"'; } + $check_click_count = true; + // 컬럼 정리 foreach($output->columns as $key => $val) { if(!isset($val['value'])) continue; $name = $val['name']; $value = $val['value']; + + if(substr($value,-2)!='+1') $check_click_count = false; + for ($i = 0; $i < $key; $i++) { // 한문장에 같은 속성에 대한 중복 설정은 큐브리드에서는 허용치 않음 if ($output->columns[$i]['name'] == $name) break; } if ($i < $key) continue; // 중복이 발견되면 이후의 설정은 무시 + if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value; else { if($output->column_type[$name]!='number') { + $check_column = false; $clen=strlen($value); if ($clen <= $this->cutlen) $value = "'".$this->addQuotes($value)."'"; @@ -531,10 +539,47 @@ // 조건절 정리 $condition = $this->getCondition($output); - $query = sprintf("update %s set %s %s", implode(',',$table_list), implode(',',$column_list), $condition); + $check_click_count_condition = false; + if($check_click_count){ + foreach($output->conditions as $val){ + if($val['pipe']=='or'){ + $check_click_count_condition = false; + break; + } + foreach($val['condition'] as $v){ + if($v['operation']=='equal') $check_click_count_condition = true; + else{ + if($v['operation']=='in' && !strpos($v['value'],',') ) $check_click_count_condition = true; + else $check_click_count_condition=false; + } - return $this->_query($query); - } + if($v['pipe']=='or'){ + $check_click_count_condition= false; + break; + } + } + } + } + + if($check_click_count + && $check_click_count_condition + && count($output->tables)==1 + && count($output->conditions)>0 + && count($output->groups)==0 + && count($output->order)==0){ + + foreach($output->columns as $k => $v) $incr_columns[]= 'incr("'.$v['name'].'")'; + + $query = sprintf('select %s from %s %s',join(',',$incr_columns), implode(',',$table_list), $condition); + if(!$this->transaction_started) @cubrid_commit($this->fd); + + return $result; + }else{ + $query = sprintf("update %s set %s %s", implode(',',$table_list), implode(',',$column_list), $condition); + + return $this->_query($query); + } + } /** * @brief deleteAct 처리 From 3f691442ad45483b90d561d6dc03eb963153ba5d Mon Sep 17 00:00:00 2001 From: taggon Date: Thu, 10 Dec 2009 06:19:02 +0000 Subject: [PATCH 033/209] =?UTF-8?q?#18536166=20Rewrite=20=EA=B7=9C?= =?UTF-8?q?=EC=B9=99=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7023 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 67 +++++++++++++------------------------------------------ 1 file changed, 16 insertions(+), 51 deletions(-) diff --git a/.htaccess b/.htaccess index a8a9628cb..4646c52f2 100644 --- a/.htaccess +++ b/.htaccess @@ -1,75 +1,40 @@ RewriteEngine On # reserve XE Layout Template Source File (*.html) -RewriteRule ^layouts/(.+)/(.+).html$ ./index.php [L] +RewriteRule ^layouts/(.+)/(.+)\.html$ ./index.php [L] # static files -RewriteRule ^(.+)/files/member_extra_info/(.*) ./files/member_extra_info/$2 [L] -RewriteRule ^(.+)/files/attach/(.*) ./files/attach/$2 [L] -RewriteRule ^(.+)/files/cache/(.*) ./files/cache/$2 [L] -RewriteRule ^(.+)/files/faceOff/(.*) ./files/faceOff/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/files/(.*) ./files/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/modules/(.*) ./modules/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/common/(.*) ./common/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/widgets/(.*) ./widgets/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/widgetstyle/(.*) ./widgetstyle/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/layouts/(.*) ./layouts/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/addons/(.*) ./addons/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/files/(.*) ./files/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/modules/(.*) ./modules/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/common/(.*) ./common/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/widgets/(.*) ./widgets/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/widgetstyle/(.*) ./widgetstyle/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/layouts/(.*) ./layouts/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/entry/addons/(.*) ./addons/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/files/(.*) ./files/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/modules/(.*) ./modules/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/common/(.*) ./common/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/widgets/(.*) ./widgets/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/widgetstyle/(.*) ./widgetstyle/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/layouts/(.*) ./layouts/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/addons/(.*) ./addons/$2 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/files/(.*) ./files/$3 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/modules/(.*) ./modules/$3 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/common/(.*) ./common/$3 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/widgets/(.*) ./widgets/$3 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/widgetstyle/(.*) ./widgetstyle/$3 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/layouts/(.*) ./layouts/$3 [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/addons/(.*) ./addons/$3 [L] +RewriteRule ^(?:.+)/files/(member_extra_info|attach|cache|faceOff)/(.*) ./files/$1/$2 [L] +RewriteRule ^(?:\w+)(?:/\w+(?:/entry)?)?/(files|modules|common|widgets|widgetStyle|layouts|addons)/(.*) ./$1/$2 [L] # rss , blogAPI -RewriteRule ^rss$ ./index.php?module=rss&act=rss [L] -RewriteRule ^atom$ ./index.php?module=rss&act=atom [L] -RewriteRule ^([a-zA-Z0-9_]+)/rss$ ./index.php?mid=$1&act=rss [L] -RewriteRule ^([a-zA-Z0-9_]+)/atom$ ./index.php?mid=$1&act=atom [L] -RewriteRule ^([a-zA-Z0-9_]+)/api$ ./index.php?mid=$1&act=api [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/rss$ ./index.php?vid=$1&mid=$2&act=rss [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/atom$ ./index.php?vid=$1&mid=$2&act=atom [L] -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/api$ ./index.php?vid=$1&mid=$2&act=api [L] +RewriteRule ^(rss|atom)$ ./index.php?module=rss&act=$1 [L] +RewriteRule ^(\w+)/(rss|atom|api)$ ./index.php?mid=$1&act=$2 [L] +RewriteRule ^(\w+)/(\w+)/(rss|atom|api)$ ./index.php?vid=$1&mid=$2&act=$3 [L] # trackback -RewriteRule ^([0-9]+)/(.+)/trackback$ ./index.php?document_srl=$1&key=$2&act=trackback [L] -RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?vid=$1&document_srl=$2&key=$3&act=trackback [L] +RewriteRule ^(\d+)/(.+)/trackback$ ./index.php?document_srl=$1&key=$2&act=trackback [L] +RewriteRule ^(\w+)/(\d+)/(.+)/trackback$ ./index.php?vid=$1&document_srl=$2&key=$3&act=trackback [L] # administrator page RewriteRule ^admin/?$ ./index.php?module=admin [L] # document permanent link -RewriteRule ^([[:digit:]]+)$ ./index.php?document_srl=$1 [L] +RewriteRule ^(\d+)$ ./index.php?document_srl=$1 [L] # vid + document permanent link -RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?vid=$1&document_srl=$2 [L] +RewriteRule ^(\w+)/(\d+)$ ./index.php?vid=$1&document_srl=$2 [L] # mid link -RewriteRule ^([a-zA-Z0-9_]+)(/){0,1}$ ./index.php?mid=$1 [L] +RewriteRule ^(\w+)/?$ ./index.php?mid=$1 [L] # vid + mid link -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)(/){0,1}$ ./index.php?vid=$1&mid=$2 [L] +RewriteRule ^(\w+)/(\w+)/?$ ./index.php?vid=$1&mid=$2 [L] # mid + document link -RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?mid=$1&document_srl=$2 [L] +RewriteRule ^(\w+)/(\d+)$ ./index.php?mid=$1&document_srl=$2 [L] # vid + mid + document link -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([[:digit:]]+)$ ./index.php?vid=$1&mid=$2&document_srl=$3 [L] +RewriteRule ^(\w+)/(\w+)/(\d+)$ ./index.php?vid=$1&mid=$2&document_srl=$3 [L] # mid + entry title -RewriteRule ^([a-zA-Z0-9_]+)/entry/(.+)$ ./index.php?mid=$1&entry=$2 [L] +RewriteRule ^(\w+)/entry/(.+)$ ./index.php?mid=$1&entry=$2 [L] # vid + mid + entry title -RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/(.+)$ ./index.php?vid=$1&mid=$2&entry=$3 [L] +RewriteRule ^(\w+)/(\w+)/entry/(.+)$ ./index.php?vid=$1&mid=$2&entry=$3 [L] \ No newline at end of file From da821fff6638c1344f32b56b14f0353695c4bb00 Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 10 Dec 2009 06:50:34 +0000 Subject: [PATCH 034/209] #18536201 : md5 password even for the case when manual_inserted is true git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7024 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/comment.controller.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/comment/comment.controller.php b/modules/comment/comment.controller.php index f553138b9..a19dd1e6a 100644 --- a/modules/comment/comment.controller.php +++ b/modules/comment/comment.controller.php @@ -96,6 +96,8 @@ // document model 객체 생성 $oDocumentModel = &getModel('document'); + // even for manual_inserted if password exists, md5 it. + if($obj->password) $obj->password = md5($obj->password); // 원본글을 가져옴 if(!$manual_inserted) { $oDocument = $oDocumentModel->getDocument($document_srl); @@ -103,7 +105,6 @@ if($document_srl != $oDocument->document_srl) return new Object(-1,'msg_invalid_document'); if($oDocument->isLocked()) return new Object(-1,'msg_invalid_request'); - if($obj->password) $obj->password = md5($obj->password); if($obj->homepage && !preg_match('/^[a-z]+:\/\//i',$obj->homepage)) $obj->homepage = 'http://'.$obj->homepage; // 로그인 된 회원일 경우 회원의 정보를 입력 From 71e8dbc0c951aeca8ee0a9622c32ca13a4eb5af2 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 10 Dec 2009 12:44:06 +0000 Subject: [PATCH 035/209] =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20ID=EC=9D=98=20=EB=8C=80=EC=86=8C=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=90=20=EC=9D=98=ED=95=B4=20=EB=B9=84=EC=A0=95=EC=83=81=20?= =?UTF-8?q?=EB=8F=99=EC=9E=91=20=ED=95=98=EB=8A=94=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7025 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 4 ++-- modules/module/module.admin.model.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index c3e70b62b..91842c47a 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -1348,7 +1348,7 @@ $member_info = $oMemberModel->getMemberInfoByUserID($user_id); // return 값이 없으면 존재하지 않는 사용자로 지정 - if(!$user_id || $member_info->user_id != $user_id) return new Object(-1, 'invalid_user_id'); + if(!$user_id || strtolower($member_info->user_id) != strtolower($user_id)) return new Object(-1, 'invalid_user_id'); // 비밀번호 검사 if($password && !$oMemberModel->isValidPassword($member_info->password, $password)) return new Object(-1, 'invalid_password'); @@ -1375,7 +1375,7 @@ // 자동 로그인 사용시 정보 처리 if($keep_signed) { // 자동 로그인 키 생성 - $autologin_args->autologin_key = md5($user_id.$member_info->password.$_SERVER['REMOTE_ADDR']); + $autologin_args->autologin_key = md5(strtolower($user_id).$member_info->password.$_SERVER['REMOTE_ADDR']); $autologin_args->member_srl = $member_info->member_srl; executeQuery('member.deleteAutologin', $autologin_args); $autologin_output = executeQuery('member.insertAutologin', $autologin_args); diff --git a/modules/module/module.admin.model.php b/modules/module/module.admin.model.php index f4b4bff28..1d75a6675 100644 --- a/modules/module/module.admin.model.php +++ b/modules/module/module.admin.model.php @@ -75,7 +75,7 @@ } Context::set('selected_group', $selected_group); Context::set('default_grant', $default_grant); - + Context::set('module_srl', $module_srl); // 현재 모듈에 설정된 관리자 아이디를 추출 $admin_member = $oModuleModel->getAdminId($module_srl); Context::set('admin_member', $admin_member); From b0bf3c728f6fe2a862e78b09955c28c662bf13ca Mon Sep 17 00:00:00 2001 From: misol Date: Thu, 10 Dec 2009 18:36:26 +0000 Subject: [PATCH 036/209] =?UTF-8?q?#18532379=20FTP=20=EC=A0=91=EC=86=8D=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A7=81=EC=A0=91=20=EB=85=B8=EC=B6=9C?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EA=B2=8C=20=EC=88=98=EC=A0=95.(?= =?UTF-8?q?=EC=9D=B4=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=EB=93=A4)=20=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=ED=95=84=EC=9A=94=ED=95=B4=EC=A7=84=20=EC=84=A4?= =?UTF-8?q?=EB=AA=85=EB=AC=B8=20=EC=96=B8=EC=96=B4=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=97=90=20=EC=B6=94=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7026 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/admin.admin.controller.php | 24 +++++++++++++++++++ modules/admin/admin.admin.view.php | 12 +++++++++- modules/admin/conf/module.xml | 2 ++ modules/admin/lang/ko.lang.php | 1 + modules/admin/tpl/config.html | 19 ++++++++++----- modules/admin/tpl/filter/install_ftp_info.xml | 2 +- modules/admin/tpl/filter/install_ftp_path.xml | 2 +- modules/admin/tpl/js/config.js | 4 ++++ 8 files changed, 57 insertions(+), 9 deletions(-) diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 511e29e16..4e7d3d4ab 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -48,5 +48,29 @@ $oMemberController = &getController('member'); $oMemberController->procMemberLogout(); } + + /** + * @brief Save FTP PATH Info + * @return none + **/ + function procSaveFTPPathInfo() { + $oInstallAdminController = &getAdminController('install'); + $ftp_info = Context::getFTPInfo(); + Context::set('ftp_user', $ftp_info->ftp_user); + Context::set('ftp_password', $ftp_info->ftp_password); + Context::set('ftp_port', $ftp_info->ftp_port); + Context::set('sftp', $ftp_info->sftp); + $oInstallAdminController->procInstallAdminSaveFTPInfo(); + } + + /** + * @brief Delete FTP Config Info + * @return delete success message + **/ + function procDeleteFTPConfig() { + $ftp_config = Context::getFTPConfigFile(); + FileHandler::removeFile($ftp_config); + return new Object(-1, 'success_deleted'); + } } ?> diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 173fcf84b..971e73c46 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -257,6 +257,7 @@ **/ function dispAdminConfig() { $db_info = Context::getDBInfo(); + $oInstallController = &getController('install'); Context::set('sftp_support', function_exists(ssh2_sftp)); @@ -267,8 +268,17 @@ Context::set('langs', Context::loadLangSupported()); Context::set('lang_selected', Context::loadLangSelected()); - + $ftp_info = Context::getFTPInfo(); + // Check if FTP Info is valid. + Context::set('ftp_user', $ftp_info->ftp_user); + Context::set('ftp_password', $ftp_info->ftp_password); + Context::set('ftp_port', $ftp_info->ftp_port); + Context::set('sftp', $ftp_info->sftp); + !$oInstallController->procInstallCheckFtp()?$ftp_info->is_valid=true:$ftp_info->is_valid=false; + Context::set('ftp_user', null); + Context::set('ftp_password', null); + // Set FTP Info. Context::set('ftp_info', $ftp_info); $site_args->site_srl = 0; diff --git a/modules/admin/conf/module.xml b/modules/admin/conf/module.xml index c5a0470f4..6283a4ce7 100644 --- a/modules/admin/conf/module.xml +++ b/modules/admin/conf/module.xml @@ -8,6 +8,8 @@ + +
    diff --git a/modules/admin/lang/ko.lang.php b/modules/admin/lang/ko.lang.php index a9e030047..5adde78ac 100644 --- a/modules/admin/lang/ko.lang.php +++ b/modules/admin/lang/ko.lang.php @@ -79,4 +79,5 @@ $lang->use_db_session = '인증 세션 DB 사용'; $lang->about_db_session = '인증 시 사용되는 PHP 세션을 DB로 사용하는 기능입니다.
    웹서버의 사용률이 낮은 사이트에서는 비활성화시 사이트 응답 속도가 향상될 수 있습니다.
    단 현재 접속자를 구할 수 없어 관련된 기능을 사용할 수 없게 됩니다.'; $lang->sftp = 'SFTP 사용'; + $lang->about_ftp_info_delete = 'XE가 FTP에 정상적으로 접속할 수 있습니다.
    FTP 접속 정보 보호를 위해, 현재 저장된 FTP 접속 정보(아이디, 비밀번호, 포트번호)를 수정하시려면 FTP 정보 파일을 삭제하셔야 합니다.
    FTP 접속 정보 파일을 삭제 하시려면 삭제 버튼을 클릭하세요.'; ?> diff --git a/modules/admin/tpl/config.html b/modules/admin/tpl/config.html index 219d5295c..303f6a40c 100644 --- a/modules/admin/tpl/config.html +++ b/modules/admin/tpl/config.html @@ -15,11 +15,16 @@ sObj.value = module_srl; obj.value = decodeURIComponent(browser_title.replace(/\+/g," "))+' ('+mid+')'; } - + var pwd = '{$pwd}'; params = new Array(); params['pwd'] = pwd; exec_xml('admin','getAdminFTPList', params, completeGetFtpInfo, new Array('list','error','message')); + + // if FTP Info is not valid, alert error message. + jQuery(function($) { + doCheckFTPInfo(); + }); @@ -129,6 +134,7 @@

    {$lang->ftp_form_title}

    {$lang->about_ftp_info}

    + {@ $nCols = 3; } @@ -157,13 +163,14 @@
    - + +

    {$lang->msg_ftp_connect_success}

    +

    {$lang->about_ftp_info_delete}

    + + +

    {$lang->ftp_path_title}

    - - - - diff --git a/modules/admin/tpl/filter/install_ftp_info.xml b/modules/admin/tpl/filter/install_ftp_info.xml index 05160bd69..695ddb5c8 100644 --- a/modules/admin/tpl/filter/install_ftp_info.xml +++ b/modules/admin/tpl/filter/install_ftp_info.xml @@ -2,7 +2,7 @@ - + diff --git a/modules/admin/tpl/filter/install_ftp_path.xml b/modules/admin/tpl/filter/install_ftp_path.xml index afaef82e1..970227c06 100644 --- a/modules/admin/tpl/filter/install_ftp_path.xml +++ b/modules/admin/tpl/filter/install_ftp_path.xml @@ -1,4 +1,4 @@ - +
    diff --git a/modules/admin/tpl/js/config.js b/modules/admin/tpl/js/config.js index 2d8451d95..b9fff1351 100644 --- a/modules/admin/tpl/js/config.js +++ b/modules/admin/tpl/js/config.js @@ -38,3 +38,7 @@ function completeGetFtpInfo(ret_obj) e.append(jQuery(list)); } +function doDeleteFTPConfig() { + exec_xml('admin','procDeleteFTPConfig'); + setTimeout(function() { location.reload(); }, 300); +} From a4436790addbb8d23268c3c62c877f90d89ab1d9 Mon Sep 17 00:00:00 2001 From: ysnglee2000 Date: Fri, 11 Dec 2009 04:23:26 +0000 Subject: [PATCH 037/209] =?UTF-8?q?#18293376=20:=202=EC=B0=A8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95.=20=EC=8B=9C=ED=97=98=20=ED=95=84=EC=9A=94.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7027 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBCubrid.class.php | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 0110a28a4..3fff00797 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -422,18 +422,18 @@ $pipe = $v['pipe']; $value = $this->getConditionValue($name, $value, $operation, $type, $column_type); - if(!$value) { - $value = $v['value']; - if (strpos ($value, '(')) $valuetmp = $value; - elseif (strpos ($value, ".") === false) $valuetmp = $value; - else $valuetmp = '"'.str_replace('.', '"."', $value).'"'; - } else $valuetmp = $value; - if (strpos ($name, '(')) $nametmp = $name; - elseif (strpos ($name, ".") === false) $nametmp = '"'.$name.'"'; - else $nametmp = '"'.str_replace('.', '"."', $name).'"'; + if (!$value) { + $value = $v['value']; + if (strpos ($value, '(')) $valuetmp = $value; + elseif (strpos ($value, ".") === false) $valuetmp = $value; + else $valuetmp = '"'.str_replace('.', '"."', $value).'"'; + } else $valuetmp = $value; + if (strpos ($name, '(') > 0) $nametmp = $name; + elseif (strpos ($name, ".") === false) $nametmp = '"'.$name.'"'; + else $nametmp = '"'.str_replace('.', '"."', $name).'"'; $str = $this->getConditionPart($nametmp, $valuetmp, $operation); - if($sub_condition) $sub_condition .= ' '.$pipe.' '; - $sub_condition .= $str; + if ($sub_condition) $sub_condition .= ' '.$pipe.' '; + $sub_condition .= $str; } if($sub_condition) { if($condition && $val['pipe']) $condition .= ' '.$val['pipe'].' '; @@ -617,8 +617,8 @@ foreach($left_tables as $key => $val) { $condition = $this->_getCondition($output->left_conditions[$key],$output->column_type); - if($condition){ - $left_join[] = $val . ' "'.$this->prefix.$output->_tables[$key].'" "'.$key . '" on (' . $condition . ')'; + if($condition) { + $left_join[] = $val.' "'.$this->prefix.$output->_tables[$key].'" "'.$key.'" on ('.$condition.')'; } } From 1285d82744f479163cb18b8bb9075a574291abcf Mon Sep 17 00:00:00 2001 From: supershop Date: Fri, 11 Dec 2009 07:53:52 +0000 Subject: [PATCH 038/209] english translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7028 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 4 +- modules/admin/tpl/_header.html | 2 +- modules/member/lang/en.lang.php | 86 ++++++++++++++++----------------- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index d6b827e2c..3698c0e62 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -151,8 +151,8 @@ $lang->regdate = 'Registered Date'; $lang->last_update = 'Last Update'; $lang->last_post = 'Last Post'; - $lang->signup_date = 'Join Date'; - $lang->last_login = 'Last Login'; + $lang->signup_date = 'Sign up Date'; + $lang->last_login = 'Last Sign in'; $lang->first_page = 'First Page'; $lang->last_page = 'Last Page'; $lang->search_target = 'Target for Search'; diff --git a/modules/admin/tpl/_header.html b/modules/admin/tpl/_header.html index 12367302f..e040cb4f9 100644 --- a/modules/admin/tpl/_header.html +++ b/modules/admin/tpl/_header.html @@ -4,7 +4,7 @@

    XpressEngine

      -
    • Logout
    • +
    • Sign out
    • Settings
    • Language
        diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index e038d9cf2..3909481ee 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -12,18 +12,18 @@ $lang->default_group_2 = "Regular Member"; $lang->admin_group = "Managing Group"; $lang->keep_signed = 'Keep me signed in'; - $lang->remember_user_id = 'Save ID'; - $lang->already_logged = "You are already logged on"; + $lang->remember_user_id = 'Remember ID'; + $lang->already_logged = "You are already signed in"; $lang->denied_user_id = 'You have entered a prohibited ID.'; $lang->null_user_id = 'Please input ID'; $lang->null_password = 'Please input password'; - $lang->invalid_authorization = 'The account is not certificated.'; + $lang->invalid_authorization = 'The account is not activated.'; $lang->invalid_user_id= "You have entered an invalid ID"; $lang->invalid_password = 'You have entered an invalid password'; $lang->allow_mailing = 'Join Mailing'; $lang->denied = 'Prohibited'; $lang->is_admin = 'Superadmin Permission'; - $lang->group = 'Assigned Group'; + $lang->group = 'Group'; $lang->group_title = 'Group Name'; $lang->group_srl = 'Group Number'; $lang->signature = 'Signature'; @@ -43,15 +43,15 @@ $lang->signature_max_height = 'Max Signature Height'; $lang->enable_openid = 'Enable OpenID'; $lang->enable_join = 'Accept New Members'; - $lang->enable_confirm = 'Email Authentication'; + $lang->enable_confirm = 'Email Activation'; $lang->enable_ssl = 'Enable SSL'; $lang->security_sign_in = 'Sign in using enhanced security'; $lang->limit_day = 'Temporary Limit Date'; $lang->limit_date = 'Limit Date'; - $lang->after_login_url = 'URL after Login'; - $lang->after_logout_url = 'URL after Logout'; - $lang->redirect_url = 'URL after Join'; - $lang->agreement = 'Join Agreement'; + $lang->after_login_url = 'URL after Sign in'; + $lang->after_logout_url = 'URL after Sign out'; + $lang->redirect_url = 'URL after Sign up'; + $lang->agreement = 'Sign up Agreement'; $lang->accept_agreement = 'Agree'; $lang->member_info = 'Member Info'; $lang->current_password = 'Current Password'; @@ -63,13 +63,13 @@ 'N' => 'Reject All', ); $lang->about_allow_message = 'You may allow or reject messages.'; - $lang->logged_users = 'Logged Users'; + $lang->logged_users = 'Logged on Users'; $lang->webmaster_name = "Webmaster Name"; $lang->webmaster_email = "Webmaster Email"; - $lang->about_keep_signed = 'You might be kept signed on even when the browser is closed,\n\nIf you use this feature at a shared computer, your personal information might be accessed by others, thus do not use this feature at a shared computer. '; - $lang->about_keep_warning = 'You might be kept signed on even when the browser is closed, If you use this feature at a shared computer, your personal information might be accessed by others, thus do not use this feature at a shared computer.'; + $lang->about_keep_signed = 'You will be still signed in even when the browser is closed.\n\nIt is not recommended to use this if you are using a public computer for your personal information could be violated'; + $lang->about_keep_warning = 'You will be still signed in even when the browser is closed. It is not recommended to use this if you are using a public computer for your personal information could be violated'; $lang->about_webmaster_name = "Please input webmaster's name which will be used for verification mails or other site administration. (default : webmaster)"; $lang->about_webmaster_email = "Please input webmaster's email address."; @@ -78,32 +78,32 @@ 'user_name' => 'Name', 'nick_name' => 'Nickname', 'email_address' => 'Email Address', - 'regdate' => 'Join Date', - 'regdate_more' => 'Join Date (more)', - 'regdate_less' => 'Join Date (less)', - 'last_login' => 'Last Login Date', - 'last_login_more' => 'Last Login Date (more)', - 'last_login_less' => 'Last Login Date (less)', + 'regdate' => 'Sign up Date', + 'regdate_more' => 'Sign up Date (more)', + 'regdate_less' => 'Sign up Date (less)', + 'last_login' => 'Last Sign in Date', + 'last_login_more' => 'Last Sign in Date (more)', + 'last_login_less' => 'Last Sign in Date (less)', 'extra_vars' => 'Extra Vars', ); - $lang->cmd_login = 'Login'; - $lang->cmd_logout = 'Logout'; - $lang->cmd_signup = 'Join'; - $lang->cmd_site_signup = 'Join'; + $lang->cmd_login = 'Sign In'; + $lang->cmd_logout = 'Sign Out'; + $lang->cmd_signup = 'Sign Up'; + $lang->cmd_site_signup = 'Sign Up'; $lang->cmd_modify_member_info = 'Modify Member Info'; $lang->cmd_modify_member_password = 'Modify Password'; $lang->cmd_view_member_info = 'Member Info'; $lang->cmd_leave = 'Leave'; $lang->cmd_find_member_account = 'Find Account Info'; - $lang->cmd_resend_auth_mail = 'Request for Authentication Mail'; + $lang->cmd_resend_auth_mail = 'Request for Activation Mail'; $lang->cmd_member_list = 'Member List'; $lang->cmd_module_config = 'Default Setting'; $lang->cmd_member_group = 'Member Groups'; $lang->cmd_send_mail = 'Send Mail'; $lang->cmd_manage_id = 'Prohibited IDs'; - $lang->cmd_manage_form = 'Join Form'; + $lang->cmd_manage_form = 'Sign up Form'; $lang->cmd_view_own_document = 'Written Articles'; $lang->cmd_manage_member_info = 'Manage Member Info'; $lang->cmd_trace_document = 'Trace Written Articles'; @@ -122,19 +122,19 @@ $lang->msg_find_account_title = 'Account Info'; $lang->msg_find_account_info = 'This is requested account info.'; $lang->msg_find_account_comment = 'The password will be modified as above one as you click below link.
        Please modify the password after login.'; - $lang->msg_confirm_account_title = 'Authentication confirmation mail'; - $lang->msg_confirm_account_info = 'This is the registered account information:'; - $lang->msg_confirm_account_comment = 'Click the following confirmation link to complete your sign up.'; - $lang->msg_auth_mail_sent = 'The verification mail has been sent to %s. Please check your mail.'; - $lang->msg_confirm_mail_sent = 'We just sent you a confirmation email to %s. Click on the confirmation link in the email to complete your sign up.'; + $lang->msg_confirm_account_title = 'Zeroboard XE Account Activation'; + $lang->msg_confirm_account_info = 'This is your account information:'; + $lang->msg_confirm_account_comment = 'Click on the followed link to complete your account activation.'; + $lang->msg_auth_mail_sent = 'The activation mail has been sent to %s. Please check your mail.'; + $lang->msg_confirm_mail_sent = 'We just sent the activation email to %s. Please check your mail.'; $lang->msg_invalid_auth_key = 'This is an invalid request of verification.
        Please retry finding account info or contact to administrator.'; - $lang->msg_success_authed = 'Your account has been successfully certificated and logged on.\n Please modify the password to your own one with the password in the mail.'; - $lang->msg_success_confirmed = 'The autentication completed successfully.'; + $lang->msg_success_authed = 'Your account has been successfully activated and logged on.\n Please modify the password to your own one with the password in the mail.'; + $lang->msg_success_confirmed = 'Your account has been activated successfully.'; $lang->msg_new_member = 'Add Member'; $lang->msg_update_member = 'Modify Member Info'; $lang->msg_leave_member = 'Leave'; - $lang->msg_group_is_null = 'There is no registered group'; + $lang->msg_group_is_null = 'There is no group'; $lang->msg_not_delete_default = 'Default items cannot be deleted'; $lang->msg_not_exists_member = "Invalid member"; $lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the ID from administration and try again.'; @@ -143,7 +143,7 @@ $lang->msg_exists_nick_name = 'This nickname already exists. Please try with another one.'; $lang->msg_signup_disabled = 'You are not able to sign up'; $lang->msg_already_logged = 'You have already signed up'; - $lang->msg_not_logged = 'Please login first'; + $lang->msg_not_logged = 'Please sign in first'; $lang->msg_insert_group_name = 'Please input the name of group'; $lang->msg_check_group = 'Please select the group'; @@ -152,10 +152,10 @@ $lang->msg_not_uploaded_image_mark = 'Image mark could not be registered'; $lang->msg_not_uploaded_group_image_mark = 'Group image mark could not be registered'; - $lang->msg_accept_agreement = 'You have to agree the agreement'; + $lang->msg_accept_agreement = 'You have to agree with the agreement'; $lang->msg_user_denied = 'You have entered a prohibited ID'; - $lang->msg_user_not_confirmed = 'You are not authenticated yet. Please check your email.'; + $lang->msg_user_not_confirmed = 'Your account is not activated yet. Please check your email.'; $lang->msg_user_limited = 'You have entered an ID that can be used after %s'; $lang->about_user_id = 'User ID should be 3~20 letters long and consist of alphabet+number with alphabet as first letter.'; @@ -172,7 +172,7 @@ $lang->about_member_description = "Administrator's memo about members"; $lang->about_group = 'An ID can belong to many groups'; - $lang->about_column_type = 'Please set the format of additional join form'; + $lang->about_column_type = 'Please set the format of additional sign up form'; $lang->about_column_name = 'Please input English name that can be used in template (name as variable)'; $lang->about_column_title = 'This will be displayed on sign up or modifying/viewing member info form'; $lang->about_default_value = 'You can set default values'; @@ -181,15 +181,15 @@ $lang->about_required = 'If you check, it will be essential item for sign up'; $lang->about_enable_openid = 'Please check if you want to provide OpenID service'; - $lang->about_enable_join = 'Please check if you want to allow new members to join your site'; - $lang->about_enable_confirm = 'Please check if you want confirm new members\' join with their email.'; - $lang->about_enable_ssl = 'Personal information from Join/Modify Member Info/Login can be sent as SSL(https) mode if server provides SSL service.'; - $lang->about_limit_day = 'You can limit verification date after sign up'; - $lang->about_limit_date = 'User cannot login until assigned date'; + $lang->about_enable_join = 'Please check if you want to allow new members to sign up your site'; + $lang->about_enable_confirm = 'Please check if you want new members to activate their accounts via their emails.'; + $lang->about_enable_ssl = 'Personal information from Sign up/Modify Member Info/Sign in can be sent as SSL(https) mode if server provides SSL service.'; + $lang->about_limit_day = 'You can limit activation date after sign up'; + $lang->about_limit_date = 'Users cannot sign in until assigned date'; $lang->about_after_login_url = 'You can set URL after login. Blank means current page.'; $lang->about_after_logout_url = 'You can set URL after logout. Blank means current page.'; $lang->about_redirect_url = 'Please input URL where users will go after sign up. When this is empty, it will be set as the previous page of sign up page.'; - $lang->about_agreement = "Join Agreement will be displayed if it's not empty"; + $lang->about_agreement = "Sign up Agreement will be displayed if it's not empty"; $lang->about_image_name = "Members will be able to use image name instead of text"; $lang->about_image_mark = "Members will be able to use image mark in front of their names"; @@ -202,7 +202,7 @@ $lang->about_openid = 'When you join as OpenID, basic info like ID or email address will be saved on this site, process for password and verification management will be done on current OpenID offering service'; $lang->about_openid_leave = 'The secession of OpenID means deletion of your member info from this site.
        If you login after secession, it will be recognized as a new member, so you will no longer have the permission for your ex-written articles.'; - $lang->about_member = "This is a module for creating/modifying/deleting members and managing group or join form.\nYou can manage members by creating new groups, and get additional information by managing join form"; + $lang->about_member = "Member module will help you create, modify and remove members and manage groups or sign up form.\nYou can add a custom group to manage members, and also get additional information by modifying sign up form."; $lang->about_find_member_account = 'Your account info will be noticed by registered email address.
        Please input email address which you have input on registration, and press "Find Account Info" button.
        '; $lang->about_ssl_port = 'Please input if you are using different SSL port with default one'; $lang->add_openid = 'Add OpenID'; From 9d8d38b0a009caf6b3b332e7d1decac0d227bd9d Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 11 Dec 2009 11:14:35 +0000 Subject: [PATCH 039/209] off debug git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7029 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 40499f2ac..2fb9ecbb1 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -46,7 +46,7 @@ * 2 : 소요시간, Request/Response info 출력 * 4 : DB 쿼리 내역 출력 **/ - if(!defined('__DEBUG__')) define('__DEBUG__', 1); + if(!defined('__DEBUG__')) define('__DEBUG__', 0); /** * @brief 디버그 메세지의 출력 장소 From 40309eefeac31fe736cb96af0a131da7e02d48e9 Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 11 Dec 2009 11:30:16 +0000 Subject: [PATCH 040/209] [7026] rollback git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7030 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/admin.admin.controller.php | 24 ------------------- modules/admin/admin.admin.view.php | 12 +--------- modules/admin/conf/module.xml | 2 -- modules/admin/lang/ko.lang.php | 1 - modules/admin/tpl/config.html | 19 +++++---------- modules/admin/tpl/filter/install_ftp_info.xml | 2 +- modules/admin/tpl/filter/install_ftp_path.xml | 2 +- modules/admin/tpl/js/config.js | 4 ---- 8 files changed, 9 insertions(+), 57 deletions(-) diff --git a/modules/admin/admin.admin.controller.php b/modules/admin/admin.admin.controller.php index 4e7d3d4ab..511e29e16 100644 --- a/modules/admin/admin.admin.controller.php +++ b/modules/admin/admin.admin.controller.php @@ -48,29 +48,5 @@ $oMemberController = &getController('member'); $oMemberController->procMemberLogout(); } - - /** - * @brief Save FTP PATH Info - * @return none - **/ - function procSaveFTPPathInfo() { - $oInstallAdminController = &getAdminController('install'); - $ftp_info = Context::getFTPInfo(); - Context::set('ftp_user', $ftp_info->ftp_user); - Context::set('ftp_password', $ftp_info->ftp_password); - Context::set('ftp_port', $ftp_info->ftp_port); - Context::set('sftp', $ftp_info->sftp); - $oInstallAdminController->procInstallAdminSaveFTPInfo(); - } - - /** - * @brief Delete FTP Config Info - * @return delete success message - **/ - function procDeleteFTPConfig() { - $ftp_config = Context::getFTPConfigFile(); - FileHandler::removeFile($ftp_config); - return new Object(-1, 'success_deleted'); - } } ?> diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 971e73c46..173fcf84b 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -257,7 +257,6 @@ **/ function dispAdminConfig() { $db_info = Context::getDBInfo(); - $oInstallController = &getController('install'); Context::set('sftp_support', function_exists(ssh2_sftp)); @@ -268,17 +267,8 @@ Context::set('langs', Context::loadLangSupported()); Context::set('lang_selected', Context::loadLangSelected()); - + $ftp_info = Context::getFTPInfo(); - // Check if FTP Info is valid. - Context::set('ftp_user', $ftp_info->ftp_user); - Context::set('ftp_password', $ftp_info->ftp_password); - Context::set('ftp_port', $ftp_info->ftp_port); - Context::set('sftp', $ftp_info->sftp); - !$oInstallController->procInstallCheckFtp()?$ftp_info->is_valid=true:$ftp_info->is_valid=false; - Context::set('ftp_user', null); - Context::set('ftp_password', null); - // Set FTP Info. Context::set('ftp_info', $ftp_info); $site_args->site_srl = 0; diff --git a/modules/admin/conf/module.xml b/modules/admin/conf/module.xml index 6283a4ce7..c5a0470f4 100644 --- a/modules/admin/conf/module.xml +++ b/modules/admin/conf/module.xml @@ -8,8 +8,6 @@ - - diff --git a/modules/admin/lang/ko.lang.php b/modules/admin/lang/ko.lang.php index 5adde78ac..a9e030047 100644 --- a/modules/admin/lang/ko.lang.php +++ b/modules/admin/lang/ko.lang.php @@ -79,5 +79,4 @@ $lang->use_db_session = '인증 세션 DB 사용'; $lang->about_db_session = '인증 시 사용되는 PHP 세션을 DB로 사용하는 기능입니다.
        웹서버의 사용률이 낮은 사이트에서는 비활성화시 사이트 응답 속도가 향상될 수 있습니다.
        단 현재 접속자를 구할 수 없어 관련된 기능을 사용할 수 없게 됩니다.'; $lang->sftp = 'SFTP 사용'; - $lang->about_ftp_info_delete = 'XE가 FTP에 정상적으로 접속할 수 있습니다.
        FTP 접속 정보 보호를 위해, 현재 저장된 FTP 접속 정보(아이디, 비밀번호, 포트번호)를 수정하시려면 FTP 정보 파일을 삭제하셔야 합니다.
        FTP 접속 정보 파일을 삭제 하시려면 삭제 버튼을 클릭하세요.'; ?> diff --git a/modules/admin/tpl/config.html b/modules/admin/tpl/config.html index 303f6a40c..219d5295c 100644 --- a/modules/admin/tpl/config.html +++ b/modules/admin/tpl/config.html @@ -15,16 +15,11 @@ sObj.value = module_srl; obj.value = decodeURIComponent(browser_title.replace(/\+/g," "))+' ('+mid+')'; } - + var pwd = '{$pwd}'; params = new Array(); params['pwd'] = pwd; exec_xml('admin','getAdminFTPList', params, completeGetFtpInfo, new Array('list','error','message')); - - // if FTP Info is not valid, alert error message. - jQuery(function($) { - doCheckFTPInfo(); - }); @@ -134,7 +129,6 @@

        {$lang->ftp_form_title}

        {$lang->about_ftp_info}

        -
        {@ $nCols = 3; }
    @@ -163,14 +157,13 @@
    - -

    {$lang->msg_ftp_connect_success}

    -

    {$lang->about_ftp_info_delete}

    - - - +

    {$lang->ftp_path_title}

    + + + + diff --git a/modules/admin/tpl/filter/install_ftp_info.xml b/modules/admin/tpl/filter/install_ftp_info.xml index 695ddb5c8..05160bd69 100644 --- a/modules/admin/tpl/filter/install_ftp_info.xml +++ b/modules/admin/tpl/filter/install_ftp_info.xml @@ -2,7 +2,7 @@ - + diff --git a/modules/admin/tpl/filter/install_ftp_path.xml b/modules/admin/tpl/filter/install_ftp_path.xml index 970227c06..afaef82e1 100644 --- a/modules/admin/tpl/filter/install_ftp_path.xml +++ b/modules/admin/tpl/filter/install_ftp_path.xml @@ -1,4 +1,4 @@ - +
    diff --git a/modules/admin/tpl/js/config.js b/modules/admin/tpl/js/config.js index b9fff1351..2d8451d95 100644 --- a/modules/admin/tpl/js/config.js +++ b/modules/admin/tpl/js/config.js @@ -38,7 +38,3 @@ function completeGetFtpInfo(ret_obj) e.append(jQuery(list)); } -function doDeleteFTPConfig() { - exec_xml('admin','procDeleteFTPConfig'); - setTimeout(function() { location.reload(); }, 300); -} From 33aef51d0f4ed4268ffb16f8050442d009869b95 Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 11 Dec 2009 11:47:52 +0000 Subject: [PATCH 041/209] #18532379 : do not show ftp password git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7031 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/tpl/config.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/admin/tpl/config.html b/modules/admin/tpl/config.html index 219d5295c..01339ca85 100644 --- a/modules/admin/tpl/config.html +++ b/modules/admin/tpl/config.html @@ -143,7 +143,7 @@
    - + From 01ec0c89d23a5d3b218d848f612cd4a06fe5ccac Mon Sep 17 00:00:00 2001 From: haneul Date: Fri, 11 Dec 2009 14:31:50 +0000 Subject: [PATCH 042/209] #18540114 : added a feature showing installed packages git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7032 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../autoinstall/autoinstall.admin.view.php | 50 +++++++++++++++++-- modules/autoinstall/autoinstall.model.php | 20 ++++++++ modules/autoinstall/conf/module.xml | 1 + modules/autoinstall/lang/en.lang.php | 13 ++--- modules/autoinstall/lang/jp.lang.php | 1 + modules/autoinstall/lang/ko.lang.php | 1 + modules/autoinstall/lang/vi.lang.php | 1 + modules/autoinstall/lang/zh-CN.lang.php | 1 + modules/autoinstall/lang/zh-TW.lang.php | 1 + .../queries/getInstalledPackageCount.xml | 8 +++ .../queries/getInstalledPackageList.xml | 14 ++++++ modules/autoinstall/tpl/css/autoinstall.css | 6 ++- modules/autoinstall/tpl/leftBox.html | 11 ++-- modules/autoinstall/tpl/list.html | 2 + 14 files changed, 113 insertions(+), 17 deletions(-) create mode 100644 modules/autoinstall/queries/getInstalledPackageCount.xml create mode 100644 modules/autoinstall/queries/getInstalledPackageList.xml diff --git a/modules/autoinstall/autoinstall.admin.view.php b/modules/autoinstall/autoinstall.admin.view.php index c1366fa43..2b0a010eb 100644 --- a/modules/autoinstall/autoinstall.admin.view.php +++ b/modules/autoinstall/autoinstall.admin.view.php @@ -14,6 +14,14 @@ Context::set('original_site', $this->original_site); Context::set('uri', $this->uri); $this->setTemplatePath($template_path); + + $ftp_info = Context::getFTPInfo(); + if(!$ftp_info->ftp_root_path) Context::set('show_ftp_note', true); + + $this->dispCategory(); + $oModel = &getModel('autoinstall'); + Context::set('tCount', $oModel->getPackageCount(null)); + Context::set('iCount', $oModel->getInstalledPackageCount()); } function rearrange(&$item, &$targets) @@ -26,7 +34,7 @@ return $ret; } - function rearranges($items) + function rearranges($items, $packages = null) { if(!is_array($items)) $items = array($items); $item_list = array(); @@ -37,7 +45,8 @@ $targetpackages[$item->package_srl->body] = 0; } $oModel = &getModel('autoinstall'); - $packages = $oModel->getInstalledPackages(array_keys($targetpackages)); + if($package == null) + $packages = $oModel->getInstalledPackages(array_keys($targetpackages)); foreach($items as $item) { @@ -53,11 +62,39 @@ return $item_list; } + function dispAutoinstallAdminInstalledPackages() + { + $page = Context::get('page'); + if(!$page) $page = 1; + Context::set('page', $page); + $oModel = &getModel('autoinstall'); + $output = $oModel->getInstalledPackageList($page); + $package_list = $output->data; + + $params["act"] = "getResourceapiPackages"; + $params["package_srls"] = implode(",", array_keys($package_list)); + $body = XmlGenerater::generate($params); + $buff = FileHandler::getRemoteResource($this->uri, $body, 3, "POST", "application/xml"); + $xml_lUpdate = new XmlParser(); + $xmlDoc = $xml_lUpdate->parse($buff); + if($xmlDoc && $xmlDoc->response->packagelist->item) + { + $item_list = $this->rearranges($xmlDoc->response->packagelist->item, $package_list); + $res = array(); + foreach($package_list as $package_srl => $package) + { + $res[] = $item_list[$package_srl]; + } + Context::set('item_list', $res); + } + Context::set('page_navigation', $output->page_navigation); + + $this->setTemplateFile('index'); + } + function dispAutoinstallAdminInstall() { $package_srl = Context::get('package_srl'); if(!$package_srl) return $this->dispAutoinstallAdminIndex(); - $ftp_info = Context::getFTPInfo(); - if(!$ftp_info->ftp_root_path) Context::set('show_ftp_note', true); $params["act"] = "getResourceapiInstallInfo"; $params["package_srl"] = $package_srl; @@ -185,10 +222,13 @@ Context::set('page_navigation', $page_navigation); } + } + + function dispCategory() + { $oModel = &getModel('autoinstall'); $categories = &$oModel->getCategoryList(); Context::set('categories', $categories); - Context::set('tCount', $oModel->getPackageCount(null)); } } ?> diff --git a/modules/autoinstall/autoinstall.model.php b/modules/autoinstall/autoinstall.model.php index c2d0378f0..ddd75db62 100644 --- a/modules/autoinstall/autoinstall.model.php +++ b/modules/autoinstall/autoinstall.model.php @@ -78,6 +78,13 @@ return $output->data->count; } + function getInstalledPackageCount() + { + $output = executeQuery("autoinstall.getInstalledPackageCount", $args); + if(!$output->data) return 0; + return $output->data->count; + } + function setDepth(&$item, $depth, &$list, &$resultList) { $resultList[$item->category_srl] =& $item; @@ -113,5 +120,18 @@ return $result; } + function getInstalledPackageList($page) + { + $args->page = $page; + $output = executeQueryArray("autoinstall.getInstalledPackageList", $args); + $res = array(); + foreach($output->data as $val) + { + $res[$val->package_srl] = $val; + } + $output->data = $res; + return $output; + } + } ?> diff --git a/modules/autoinstall/conf/module.xml b/modules/autoinstall/conf/module.xml index a4283f729..e43224438 100644 --- a/modules/autoinstall/conf/module.xml +++ b/modules/autoinstall/conf/module.xml @@ -2,6 +2,7 @@ + diff --git a/modules/autoinstall/lang/en.lang.php b/modules/autoinstall/lang/en.lang.php index a1ac5464e..9045a2807 100644 --- a/modules/autoinstall/lang/en.lang.php +++ b/modules/autoinstall/lang/en.lang.php @@ -1,12 +1,12 @@ autoinstall = 'One Click Installer'; - $lang->about_autoinstall = 'One Click Installer will help you install/upgrade programs(skins) for XE.'; + $lang->autoinstall = 'EasyInstall'; + $lang->about_autoinstall = 'EasyInstall module will help you install/upgrade programs(skins) for XE.'; $lang->package_update = 'Recent Update'; $lang->package_downloaded_count = 'Download Count'; $lang->need_update = "Please update package list first."; @@ -17,15 +17,16 @@ $lang->success_installed = "Successfully Installed"; $lang->view_all_package = "View All"; $lang->description_ftp_note = "If FTP configuration is not set, installation would not work. Please configure FTP information"; - $lang->description_update = "If you have upgraded or installed programs without One Click Installer, please press update button to renew new information."; + $lang->description_update = "If you have upgraded or installed programs without EasyInstall module, please press update button to renew new information."; $lang->install = "Install"; $lang->update = "Update"; $lang->current_version = "Version"; $lang->depending_programs = "This program is depending on "; $lang->require_update = "Update is required."; $lang->require_installation = "Installation is required."; - $lang->description_install = "One Click Installer will also install/update all other programs which this program is depending on"; + $lang->description_install = "EasyInstall will also install/update all other programs which this program is depending on"; $lang->description_download = "If FTP is unavailable, you should manually download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)"; $lang->path = "Path"; $lang->cmd_download = "Download"; + $lang->view_installed_packages = "Installed Packages"; ?> diff --git a/modules/autoinstall/lang/jp.lang.php b/modules/autoinstall/lang/jp.lang.php index ef9805a12..dea87600f 100644 --- a/modules/autoinstall/lang/jp.lang.php +++ b/modules/autoinstall/lang/jp.lang.php @@ -28,4 +28,5 @@ $lang->description_download = "FTPの利用が出来ない場合は、直接ダウンロードし、サーバー上の該当パスにてインストールして下さい。 (一つ上階層にて解凍します。 ./modules/board の場合 ./modulesにて tarを解凍して下さい。)"; $lang->path = "インストールパス"; $lang->cmd_download = "ダウンロード"; + $lang->view_installed_packages = "Installed Packages"; ?> diff --git a/modules/autoinstall/lang/ko.lang.php b/modules/autoinstall/lang/ko.lang.php index 31c702de1..59777b64b 100644 --- a/modules/autoinstall/lang/ko.lang.php +++ b/modules/autoinstall/lang/ko.lang.php @@ -28,4 +28,5 @@ $lang->description_download = "FTP를 이용할 수 없는 경우, 직접 다운로드 하여 해당 path에 설치하셔야 합니다. (한칸 상위에서 압축을 푸시면 됩니다. ./modules/board의 경우 ./modules에서 tar를 푸세요)"; $lang->path = "설치경로"; $lang->cmd_download = "다운로드"; + $lang->view_installed_packages = "설치된 패키지"; ?> diff --git a/modules/autoinstall/lang/vi.lang.php b/modules/autoinstall/lang/vi.lang.php index ac198851f..6be1bcde8 100644 --- a/modules/autoinstall/lang/vi.lang.php +++ b/modules/autoinstall/lang/vi.lang.php @@ -28,4 +28,5 @@ $lang->description_download = "Khi FTP không được mở, bạn nên tải về và giả nén, sau đó Upload theo đường dẫn. (Nếu đường dẫn là ./modules/board, thì giải nén vào ./modules)"; $lang->path = "Đường dẫn"; $lang->cmd_download = "Download"; + $lang->view_installed_packages = "Installed Packages"; ?> diff --git a/modules/autoinstall/lang/zh-CN.lang.php b/modules/autoinstall/lang/zh-CN.lang.php index ee8a2c0fd..d2e077526 100644 --- a/modules/autoinstall/lang/zh-CN.lang.php +++ b/modules/autoinstall/lang/zh-CN.lang.php @@ -28,4 +28,5 @@ $lang->description_download = "When FTP is disabled, you should download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)"; $lang->path = "Path"; $lang->cmd_download = "Download"; + $lang->view_installed_packages = "Installed Packages"; ?> diff --git a/modules/autoinstall/lang/zh-TW.lang.php b/modules/autoinstall/lang/zh-TW.lang.php index 6b2e9728d..3826d5433 100644 --- a/modules/autoinstall/lang/zh-TW.lang.php +++ b/modules/autoinstall/lang/zh-TW.lang.php @@ -28,4 +28,5 @@ $lang->description_download = "When FTP is disabled, you should download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)"; $lang->path = "路徑"; $lang->cmd_download = "Download"; + $lang->view_installed_packages = "Installed Packages"; ?> diff --git a/modules/autoinstall/queries/getInstalledPackageCount.xml b/modules/autoinstall/queries/getInstalledPackageCount.xml new file mode 100644 index 000000000..0c8fea6a5 --- /dev/null +++ b/modules/autoinstall/queries/getInstalledPackageCount.xml @@ -0,0 +1,8 @@ + + +
    sftp=="Y")-->checked="checked" />
    + + + + + diff --git a/modules/autoinstall/queries/getInstalledPackageList.xml b/modules/autoinstall/queries/getInstalledPackageList.xml new file mode 100644 index 000000000..d9c82f7c0 --- /dev/null +++ b/modules/autoinstall/queries/getInstalledPackageList.xml @@ -0,0 +1,14 @@ + + +
    + + + + + + + + + + + diff --git a/modules/autoinstall/tpl/css/autoinstall.css b/modules/autoinstall/tpl/css/autoinstall.css index e4c9a5f11..5280d98b6 100644 --- a/modules/autoinstall/tpl/css/autoinstall.css +++ b/modules/autoinstall/tpl/css/autoinstall.css @@ -6,7 +6,9 @@ .aside { width:180px; float:left; margin-right:30px; padding-bottom:30px; } .aside .categoryBox { background-color:#F8F8F8; padding:10px; width:160px; overflow:hidden; } -.aside .categoryBox h3 { padding:0 0 10px 0; margin:0 0 10px 0; white-space:nowrap; overflow:hidden; color:#48494E; font-size:11px; font-weight:normal; background:transparent url(../img/hrE1.gif) repeat-x scroll left bottom;} +.aside .categoryBox h3 { padding:0 0 10px 0; margin:0 0 10px 0; white-space:nowrap; overflow:hidden; color:#48494E; font-size:11px; font-weight:normal;} +.aside .categoryBox .bottomLine {background:transparent url(../img/hrE1.gif) repeat-x scroll left bottom;} +.aside .categoryBox .topLine {background:transparent url(../img/hrE1.gif) repeat-x scroll left top;} .aside .categoryBox h3 a { color:#48494E; font-size:12px; font-weight:bold; text-decoration:none; } .aside .categoryBox ul.category { margin:10px 0 0 0; padding:0; list-style:none; } .aside .categoryBox ul.category li { margin:0 0 10px 10px; } @@ -19,7 +21,7 @@ .aside .categoryBox ul.resourceManage li a { text-decoration:none; color:#747474; } .aside .categoryBox ul.resourceManage li a.selected { font-weight:bold; } -.aside .searchBox { padding:10px 0; text-align:center; background:transparent url(../img/hrE1.gif) repeat-x scroll left top;} +.aside .searchBox { padding:10px 0; text-align:center; } .aside .searchBox input.input { border:1px solid #ddd; width:120px; height:16px;} .aside .searchBox input.submit { vertical-align:middle; } diff --git a/modules/autoinstall/tpl/leftBox.html b/modules/autoinstall/tpl/leftBox.html index e65b9f190..2b720785a 100644 --- a/modules/autoinstall/tpl/leftBox.html +++ b/modules/autoinstall/tpl/leftBox.html @@ -1,6 +1,6 @@
    diff --git a/modules/autoinstall/tpl/list.html b/modules/autoinstall/tpl/list.html index f698697bd..6b97a8af1 100644 --- a/modules/autoinstall/tpl/list.html +++ b/modules/autoinstall/tpl/list.html @@ -1,4 +1,5 @@
    + +
    From e5861b96fc055f2d44d4f4b635b386248301dcc5 Mon Sep 17 00:00:00 2001 From: ysnglee2000 Date: Sat, 12 Dec 2009 00:15:51 +0000 Subject: [PATCH 043/209] =?UTF-8?q?#18540839:=20=EC=A7=88=EC=9D=98=20XML?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=ED=95=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7033 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/spamfilter/queries/insertDeniedWord.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/spamfilter/queries/insertDeniedWord.xml b/modules/spamfilter/queries/insertDeniedWord.xml index 0638bbff6..acebcc0b6 100644 --- a/modules/spamfilter/queries/insertDeniedWord.xml +++ b/modules/spamfilter/queries/insertDeniedWord.xml @@ -5,5 +5,6 @@ + From fc62786db31da0af72a6b19b4596f09d2142412e Mon Sep 17 00:00:00 2001 From: haneul Date: Sat, 12 Dec 2009 07:02:43 +0000 Subject: [PATCH 044/209] #18532379 : do not show ftp info at admin page git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7034 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/tpl/config.html | 6 +----- modules/install/install.admin.controller.php | 6 ++---- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/modules/admin/tpl/config.html b/modules/admin/tpl/config.html index 01339ca85..7a0185af8 100644 --- a/modules/admin/tpl/config.html +++ b/modules/admin/tpl/config.html @@ -159,11 +159,7 @@

    {$lang->ftp_path_title}

    -
    - - - - +
    diff --git a/modules/install/install.admin.controller.php b/modules/install/install.admin.controller.php index 41a670eee..fd9b6d5c6 100644 --- a/modules/install/install.admin.controller.php +++ b/modules/install/install.admin.controller.php @@ -119,10 +119,8 @@ * @brief FTP 정보 등록 **/ function procInstallAdminSaveFTPInfo() { - $ftp_info = Context::gets('ftp_user','ftp_password','ftp_port','ftp_root_path','sftp'); - $ftp_info->ftp_port = (int)$ftp_info->ftp_port; - if(!$ftp_info->ftp_port) $ftp_info->ftp_port = 21; - if(!$ftp_info->sftp) $ftp_info->sftp = 'N'; + $ftp_info = Context::getFTPInfo(); + $ftp_info->ftp_root_path = Context::get('ftp_root_path'); $buff = ' $val) { $buff .= sprintf("\$ftp_info->%s = '%s';\n", $key, str_replace("'","\\'",$val)); From 2320709f8caa59c0e42603ab58cc822f7cec59e6 Mon Sep 17 00:00:00 2001 From: taggon Date: Mon, 14 Dec 2009 01:44:50 +0000 Subject: [PATCH 045/209] =?UTF-8?q?#18544366=20JAF=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=8F=99=EC=9D=BC=ED=95=9C=20API=EA=B0=80=20=EB=91=90=EB=B2=88?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7035 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/js_app.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/common/js/js_app.js b/common/js/js_app.js index d93c2b178..9269127ca 100644 --- a/common/js/js_app.js +++ b/common/js/js_app.js @@ -59,6 +59,7 @@ _xe_base = { * @brief Get one application */ getApp : function(indexOrName) { + indexOrName = (indexOrName||'').toLowerCase(); if (typeof _apps[indexOrName] != 'undefined') { return _apps[indexOrName]; } else { @@ -141,12 +142,8 @@ _app_base = { var fn = function(s,p){ return oPlugin[key](s,p) }; fn._fn = val; - if (RegExp.$2) { // is hooker? - if (!$.isArray(msgs[RegExp.$1])) msgs[RegExp.$1] = []; - msgs[RegExp.$1].push(fn); - } else { // register only one main function - msgs[RegExp.$1] = fn; - } + if (!$.isArray(msgs[RegExp.$1])) msgs[RegExp.$1] = []; + msgs[RegExp.$1].push(fn); }); // set the application @@ -296,6 +293,7 @@ function getTypeBase() { } window.xe = $.extend(_app_base, _xe_base); +window.xe.lang = {}; // language repository // domready event $(function(){ xe.broadcast(xe, 'ONREADY'); }); From 0d84317912add5e199cb09799a938ced9e41596b Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 14 Dec 2009 04:25:59 +0000 Subject: [PATCH 046/209] English Translation (partial) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7036 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.admin.view.php | 50 +++++++++++----------------- 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/modules/member/member.admin.view.php b/modules/member/member.admin.view.php index 82f4d2df5..fe8bd9ad3 100644 --- a/modules/member/member.admin.view.php +++ b/modules/member/member.admin.view.php @@ -2,22 +2,21 @@ /** * @class memberAdminView * @author zero (zero@nzeo.com) - * @brief member module의 admin view class + * @brief member module's admin view class **/ class memberAdminView extends member { - var $group_list = NULL; ///< 그룹 목록 정보 - var $member_info = NULL; ///< 선택된 사용자의 정보 + var $group_list = NULL; ///< group list + var $member_info = NULL; ///< selected member info /** - * @brief 초기화 + * @brief initialization **/ function init() { - // 멤버모델 객체 생성 $oMemberModel = &getModel('member'); - // member_srl이 있으면 미리 체크하여 member_info 세팅 + // if member_srl exists, set member_info $member_srl = Context::get('member_srl'); if($member_srl) { $this->member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); @@ -25,63 +24,57 @@ else Context::set('member_info',$this->member_info); } - // group 목록 가져오기 + // retrieve group list $this->group_list = $oMemberModel->getGroups(); Context::set('group_list', $this->group_list); - // template path 지정 $this->setTemplatePath($this->module_path.'tpl'); } /** - * @brief 회원 목록 출력 + * @brief display member list **/ function dispMemberAdminList() { - // member model 객체 생성후 목록을 구해옴 $oMemberAdminModel = &getAdminModel('member'); $oMemberModel = &getModel('member'); $output = $oMemberAdminModel->getMemberList(); - // 개인별로 그룹목록을 가져 옴 + // retrieve list of groups for each member if($output->data) { foreach($output->data as $key => $member) { $output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl,0); } } - // 템플릿에 쓰기 위해서 context::set Context::set('total_count', $output->total_count); Context::set('total_page', $output->total_page); Context::set('page', $output->page); Context::set('member_list', $output->data); Context::set('page_navigation', $output->page_navigation); - // 템플릿 파일 지정 $this->setTemplateFile('member_list'); } /** - * @brief 회원 관리에 필요한 기본 설정들 + * @brief default configuration for member management **/ function dispMemberAdminConfig() { - // 설정 정보를 받아옴 (module model 객체를 이용) + // retrieve configuration via module model instance $oModuleModel = &getModel('module'); $oMemberModel = &getModel('member'); $config = $oMemberModel->getMemberConfig(); Context::set('config',$config); - // 회원 관리 모듈의 스킨 목록을 구함 + // list of skins for member module $skin_list = $oModuleModel->getSkins($this->module_path); Context::set('skin_list', $skin_list); - // 에디터 모델 객체 생성 + // retrieve skins of editor $oEditorModel = &getModel('editor'); - - // 에디터 스킨 목록을 구함 Context::set('editor_skin_list', $oEditorModel->getEditorSkinList()); - // 에디터를 받음 + // get an editor $option->primary_key_name = 'temp_srl'; $option->content_key_name = 'agreement'; $option->allow_fileupload = false; @@ -93,17 +86,13 @@ $editor = $oEditorModel->getEditor(0, $option); Context::set('editor', $editor); - - - // 템플릿 파일 지정 $this->setTemplateFile('member_config'); } /** - * @brief 회원 정보 출력 + * @brief display member information **/ function dispMemberAdminInfo() { - // 추가 가입폼 목록을 받음 $oMemberModel = &getModel('member'); $oModuleModel = &getModel('module'); $member_config = $oModuleModel->getModuleConfig('member'); @@ -113,10 +102,10 @@ } /** - * @brief 회원 정보 입력 화면 출력 + * @brief display member insert form **/ function dispMemberAdminInsert() { - // 추가 가입폼 목록을 받음 + // retrieve extend form $oMemberModel = &getModel('member'); Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info)); @@ -124,7 +113,7 @@ $member_info->signature = $oMemberModel->getSignature($this->member_info->member_srl); Context::set('member_info', $member_info); - // 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅 + // get an editor for the signature if($this->member_info->member_srl) { $oEditorModel = &getModel('editor'); $option->primary_key_name = 'member_srl'; @@ -139,12 +128,11 @@ Context::set('editor', $editor); } - // 템플릿 파일 지정 $this->setTemplateFile('insert_member'); } /** - * @brief 회원 삭제 화면 출력 + * @brief display member delete form **/ function dispMemberAdminDeleteForm() { if(!Context::get('member_srl')) return $this->dispMemberAdminList(); @@ -152,7 +140,7 @@ } /** - * @brief 그룹 목록 출력 + * @brief display group list **/ function dispMemberAdminGroupList() { $oModuleModel = &getModel('module'); From f3996d9f581d730cd38359e9c52dd6ce3a4cee8e Mon Sep 17 00:00:00 2001 From: misol Date: Mon, 14 Dec 2009 06:16:38 +0000 Subject: [PATCH 047/209] =?UTF-8?q?Script=EC=99=80=20CSS=20=EB=A1=9C?= =?UTF-8?q?=EB=94=A9=20=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD=20(?= =?UTF-8?q?=EC=9D=B4=EC=9C=A0=20:=20by=20Google=20PageSpeed=20=EC=95=A0?= =?UTF-8?q?=EB=93=9C=EC=98=A8=20http://code.google.com/intl/ko-KR/speed/pa?= =?UTF-8?q?ge-speed/docs/rtt.html#PutStylesBeforeScripts=20)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7037 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/tpl/common_layout.html | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/common/tpl/common_layout.html b/common/tpl/common_layout.html index 8399a0390..9ffafd877 100644 --- a/common/tpl/common_layout.html +++ b/common/tpl/common_layout.html @@ -19,17 +19,6 @@ {Context::getBrowserTitle()} -{@ $js_files = Context::getJsFile() } - - - - - - - - - {@ $css_files = Context::getCssFile() } @@ -40,6 +29,16 @@ +{@ $js_files = Context::getJsFile() } + + + + + + + + From ddd38183dea1993110fc5dfef40913af3c186ae9 Mon Sep 17 00:00:00 2001 From: bnu Date: Mon, 14 Dec 2009 06:59:20 +0000 Subject: [PATCH 048/209] =?UTF-8?q?#18530429=20*=20SSO=20=EB=B0=8F=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=A6=AC=EB=8B=A4=EC=9D=B4?= =?UTF-8?q?=EB=A0=89=EC=85=98=EC=97=90=EC=84=9C=20=ED=81=AC=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=EB=8A=94=20=EC=A0=9C=EC=99=B8=ED=86=A0=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20*=20=ED=81=AC=EB=A1=A4=EB=9F=AC=20?= =?UTF-8?q?=ED=8C=90=EB=8B=A8=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=20=20*=20=EB=AF=B9=EC=8B=9C,=20=ED=95=9CRSS=20=ED=8F=AC?= =?UTF-8?q?=ED=95=A8=20=EB=93=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7038 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 2 +- classes/module/ModuleHandler.class.php | 2 +- config/func.inc.php | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index d4350b2af..875e1a6b6 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -360,7 +360,7 @@ **/ function checkSSO() { // pass if it's not GET request or XE is not yet installed - if(stristr($_SERVER["HTTP_USER_AGENT"], "bot") != FALSE) return true; + if(isCrawler()) return true; if(Context::getRequestMethod()!='GET' || !Context::isInstalled() || in_array(Context::get('act'),array('rss','atom'))) return true; // pass if default URL is not set diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index c637016e5..12526a2e0 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -118,7 +118,7 @@ if(!$module_info && !$this->module && $site_module_info->module_site_srl) $module_info = $site_module_info; // redirect, if site_srl of module_info is different from one of site's module_info - if($module_info && $module_info->site_srl != $site_module_info->site_srl) { + if($module_info && $module_info->site_srl != $site_module_info->site_srl && !isCrawler()) { // If the module is of virtual site if($module_info->site_srl) { $site_info = $oModuleModel->getSiteInfo($module_info->site_srl); diff --git a/config/func.inc.php b/config/func.inc.php index 4717b5294..49faa3cd8 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -835,4 +835,26 @@ } } + + function isCrawler($agent = null) { + if(!$agent) $agent = $_SERVER['HTTP_USER_AGENT']; + $check_agent = array('bot', 'google', 'yahoo', 'daum', 'fish', 'hanrss'); + $check_ip = array( + '211.245.21.11*' /* mixsh */ + ); + + foreach($check_agent as $str) { + if(stristr($agent, $str) != FALSE) return true; + } + + $check_ip = '/^('.implode($check_ip, '|').')/'; + $check_ip = str_replace('.', '\.', $check_ip); + $check_ip = str_replace('*', '.+', $check_ip); + $check_ip = str_replace('?', '.?', $check_ip); + + if(preg_match($check_ip, $_SERVER['REMOTE_ADDR'], $matches)) return true; + + return false; + } + ?> From 2416ab790ce8b5626cc0754d088cb1d2e20d7ad8 Mon Sep 17 00:00:00 2001 From: taggon Date: Mon, 14 Dec 2009 07:09:10 +0000 Subject: [PATCH 049/209] =?UTF-8?q?#18544877=20Js=20App=EC=97=90=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=EB=90=9C=20BEFORE,=20AFTER=20API=EA=B0=80=20?= =?UTF-8?q?=EB=8F=99=EC=9E=91=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7039 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/js_app.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/js/js_app.js b/common/js/js_app.js index 9269127ca..ada272726 100644 --- a/common/js/js_app.js +++ b/common/js/js_app.js @@ -138,7 +138,6 @@ _app_base = { $.each(oPlugin, function(key, val){ if (!$.isFunction(val)) return true; if (!/^API_((BEFORE_|AFTER_)?[A-Z0-9_]+)$/.test(key)) return true; - var fn = function(s,p){ return oPlugin[key](s,p) }; fn._fn = val; @@ -220,7 +219,7 @@ _app_base = { this._fn_level++; // BEFORE hooker - if (aMsg['BEFORE_'+msg] || this['BEFORE_'+msg]) { + if (aMsg['BEFORE_'+msg] || this['API_BEFORE_'+msg]) { var bContinue = this._cast(sender, 'BEFORE_'+msg, params); if (!bContinue) { this._fn_level--; @@ -240,7 +239,7 @@ _app_base = { if (vRet.length < 2) vRet = vRet[0]; // AFTER hooker - if (aMsg['AFTER_'+msg] || this['AFTER_'+msg]) { + if (aMsg['AFTER_'+msg] || this['API_AFTER_'+msg]) { this._cast(sender, 'AFTER_'+msg, params); } From 7fe42cfdbe63145d98a66e7420fa6ad9f2a330a5 Mon Sep 17 00:00:00 2001 From: misol Date: Mon, 14 Dec 2009 07:18:22 +0000 Subject: [PATCH 050/209] =?UTF-8?q?#18544647=20Optimizer=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=8B=9C=20CSS,=20Javascript=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=A0=9C=EA=B1=B0,=20=EC=A4=84=20?= =?UTF-8?q?=EC=95=9E,=20=EB=92=A4=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7040 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index ab2dcb26e..0ca70d816 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -136,26 +136,30 @@ * 실제 css나 js의 내용을 합친 것을 구함 **/ // 대상 파일의 내용을 구해오고 css 파일일 경우 url()내의 경로를 변경 - $content_filename = substr($filename, 0, -4); $file_object = FileHandler::openFile($path."/".$content_filename, "w"); - if($type == 'css') $file_object->write('@charset "UTF-8";'."\n"); + $str_to_write = ''; + if($type == 'css') $str_to_write .= '@charset "UTF-8";'."\n"; + foreach($targets as $file) { $str = FileHandler::readFile($file['file']); - $str = Context::convertEncodingStr($str); + $str = trim(Context::convertEncodingStr($str)); // css 일경우 background:url() 변경 / media 적용 if($type == 'css') { $str = $this->replaceCssPath($file['file'], $str); if($file['media'] != 'all') $str = '@media '.$file['media'].' {'."\n".$str."\n".'}'; } - $file_object->write($str); - $file_object->write("\n"); + $str_to_write .= $str; + $str_to_write .= "\n"; unset($str); } + $str_to_write = $this->doCompressCode($str_to_write); + + $file_object->write($str_to_write); $file_object->close(); /** @@ -247,5 +251,16 @@ if(!$cached) { return 'url("'.$target.'")'; } + function doCompressCode($str_code) { + $str_code = str_replace("\r", "\n", $str_code); + $str_code = preg_replace("!^([ \t]+)!m", '', $str_code); + $str_code = preg_replace("!([ \t]+)$!m", '', $str_code); + $str_code = preg_replace("!^\/\*(\X*?)\*\/$!m", '', $str_code); + $str_code = preg_replace('!^\/\/([^\n]*)!m', '', $str_code); + $str_code = preg_replace("!(\n{2,})!m", "\n", $str_code); + + return trim($str_code); + } + } ?> From f737991796268753e0df7ccdfe6a381f1740d650 Mon Sep 17 00:00:00 2001 From: royallin Date: Mon, 14 Dec 2009 08:50:09 +0000 Subject: [PATCH 051/209] Modify CHT language git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7041 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/autoinstall/lang/zh-TW.lang.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/autoinstall/lang/zh-TW.lang.php b/modules/autoinstall/lang/zh-TW.lang.php index 3826d5433..c68a3d694 100644 --- a/modules/autoinstall/lang/zh-TW.lang.php +++ b/modules/autoinstall/lang/zh-TW.lang.php @@ -20,13 +20,13 @@ $lang->description_update = "如果您最近不是用自動安裝模組更新或安裝,請點擊更新按鈕更新。"; $lang->install = "安裝"; $lang->update = "更新"; + $lang->current_version = "版本"; $lang->depending_programs = "This program depends on "; $lang->require_update = "需要更新"; $lang->require_installation = "需要安裝"; - $lang->description_install = "Installation process also install/update programs which this program depends on"; - $lang->current_version = "安裝版本"; - $lang->description_download = "When FTP is disabled, you should download it and extract it into target path. (if target path is ./modules/board, extract it at ./modules)"; + $lang->description_install = "One Click Installer will also install/update all other programs which this program is depending on"; + $lang->description_download = "如果FTP無法使用的話,必須要手動下載並解壓縮到目標路徑。(假設目標路徑為 ./modules/board的話,將檔案解壓縮到 ./modules就可以了)"; $lang->path = "路徑"; - $lang->cmd_download = "Download"; - $lang->view_installed_packages = "Installed Packages"; + $lang->cmd_download = "下載"; + $lang->view_installed_packages = "已安裝套裝軟體"; ?> From d44692008deba67c25d2d50f6d43f61778f6dbc1 Mon Sep 17 00:00:00 2001 From: misol Date: Mon, 14 Dec 2009 10:21:12 +0000 Subject: [PATCH 052/209] =?UTF-8?q?#18544647=20r7040=20=EB=B3=B4=EC=99=84?= =?UTF-8?q?=20=EC=9D=BC=EB=B6=80=20PHP=EB=B2=84=EC=A0=84=EC=97=90=EB=A7=8C?= =?UTF-8?q?=20=EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A=94=20=EC=86=8D=EC=84=B1=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7042 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 0ca70d816..a28332087 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -255,8 +255,8 @@ if(!$cached) { $str_code = str_replace("\r", "\n", $str_code); $str_code = preg_replace("!^([ \t]+)!m", '', $str_code); $str_code = preg_replace("!([ \t]+)$!m", '', $str_code); - $str_code = preg_replace("!^\/\*(\X*?)\*\/$!m", '', $str_code); - $str_code = preg_replace('!^\/\/([^\n]*)!m', '', $str_code); + $str_code = preg_replace("!^\/\*(.+?)\*\/$!sm", '', $str_code); + $str_code = preg_replace("!^\/\/([^\n]*)$!m", '', $str_code); $str_code = preg_replace("!(\n{2,})!m", "\n", $str_code); return trim($str_code); From c63f67cfef99eb3c33b889d98c92aff53e70348f Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Dec 2009 06:21:00 +0000 Subject: [PATCH 053/209] =?UTF-8?q?#18546784=20*=20=EA=B0=80=EC=83=81?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=ED=8A=B8=20=EC=9C=84=EC=A0=AF=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EC=84=A0=ED=83=9D=EA=B8=B0=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EA=B2=80=EC=83=89=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7043 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/tpl/module_selector.html | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/module/tpl/module_selector.html b/modules/module/tpl/module_selector.html index 679f5af80..d6b163ad4 100644 --- a/modules/module/tpl/module_selector.html +++ b/modules/module/tpl/module_selector.html @@ -10,6 +10,7 @@ +
    From 571766a8aac8470324985d3c84524e26b863fbf9 Mon Sep 17 00:00:00 2001 From: misol Date: Tue, 15 Dec 2009 09:55:42 +0000 Subject: [PATCH 054/209] =?UTF-8?q?#18544647=20=EC=BA=A1=EC=B0=A8=20?= =?UTF-8?q?=EC=95=A0=EB=93=9C=EC=98=A8=20=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EC=95=95=EC=B6=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7044 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/captcha/captcha.addon.php | 2 +- addons/captcha/captcha.min.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 addons/captcha/captcha.min.js diff --git a/addons/captcha/captcha.addon.php b/addons/captcha/captcha.addon.php index 06d2f9816..be31532d6 100644 --- a/addons/captcha/captcha.addon.php +++ b/addons/captcha/captcha.addon.php @@ -102,7 +102,7 @@ exit(); } - Context::addJsFile('./addons/captcha/captcha.js',false); + Context::addJsFile('./addons/captcha/captcha.min.js',false); // 게시판/ 이슈트래커의 글쓰기/댓글쓰기 액션 호출시 세션 비교 if(in_array(Context::get('act'), $target_acts)) { diff --git a/addons/captcha/captcha.min.js b/addons/captcha/captcha.min.js new file mode 100644 index 000000000..c345a0bf4 --- /dev/null +++ b/addons/captcha/captcha.min.js @@ -0,0 +1,8 @@ +/** + * procFilter 함수를 가로채서 captcha 이미지 및 폼을 출력 + **/ +var oldExecXml=null;var calledArgs=null;(function($){$(function(){var captchaXE=null;function xeCaptcha(){var body=$(document.body);var captchaIma;if(!captchaXE){captchaXE=$("
    ").attr("id","captcha_screen").css({position:"absolute",display:"none",backgroundColor:"#111",backgroundRepeat:"repeat",backgroundPosition:"0 0",zIndex:500});$('').appendTo(captchaXE);body.append(captchaXE);captchaXE.exec=function(module,act,params,callback_func,response_tags,callback_func_arg,fo_obj){var doCheck=false;if(typeof(captchaTargetAct)!='undefined'){for(var i in captchaTargetAct){if(captchaTargetAct[i]==act){doCheck=true;break;}}} +if(doCheck){calledArgs={'module':module,'act':act,'params':params,'callback_func':callback_func,'response_tags':response_tags,'callback_func_arg':callback_func_arg,'fo_obj':fo_obj};var params=new Array();params['captcha_action']='setCaptchaSession';params['mid']=current_mid;oldExecXml(module,act,params,captchaXE.show,new Array('error','message','about','keyword'));}else{oldExecXml(module,act,params,callback_func,response_tags,callback_func_arg,fo_obj);} +return true;};captchaXE.show=function(ret_obj){var clientWidth=$(window).width();var clientHeight=$(window).height();$(document).scrollTop(0);$(document).scrollLeft(0);$("#captcha_screen").css({display:"block",width:clientWidth+"px",height:clientHeight+"px",left:0,top:0});$("#captchaAbout").html(ret_obj['about']);$("#captchaText").html(ret_obj['keyword']);$("#captcha_image").css({width:"250px",height:"100px",margin:"0 0 10px 0",cursor:"pointer"}).attr("src",current_url.setQuery('captcha_action','captchaImage').setQuery('rnd',Math.round(Math.random()*6))).click(captchaXE.compare).focus(function(){this.blur();});$("#captchaBox").css({display:"block",border:"10px solid #222222",padding:"10px",position:"absolute",backgroundColor:"#2B2523",left:(clientWidth/2-125)+"px",top:(clientHeight/2-100)+"px"})};captchaXE.compare=function(e){var posX=parseInt($("#captchaBox").css("left").replace(/px$/,''),10);var posY=parseInt($("#captchaBox").css("top").replace(/px$/,''),10);var x=e.pageX-posX-20;var y=e.pageY-posY-20;var params=new Array();params['mx']=x;params['my']=y;params['captcha_action']='captchaCompare';params['mid']=current_mid;oldExecXml(calledArgs.module,calledArgs.act,params,function(){$("#captcha_screen").css({display:"none"});oldExecXml(calledArgs.module,calledArgs.act,calledArgs.params,calledArgs.callback_func,calledArgs.response_tags,calledArgs.callback_func_arg,calledArgs.fo_obj);});};} +return captchaXE;} +$(window).ready(function(){oldExecXml=exec_xml;exec_xml=xeCaptcha().exec;});});})(jQuery); \ No newline at end of file From 910785c86fae3365a77c243be2f46fe16957a18e Mon Sep 17 00:00:00 2001 From: haneul Date: Tue, 15 Dec 2009 15:28:09 +0000 Subject: [PATCH 055/209] #18541587 : remove openid_lib and replace it with janrain 1.2.3 (LGPL) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7045 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.class.php | 5 + modules/member/member.controller.php | 253 ++-- modules/member/openid_lib/LICENSE | 340 ----- modules/member/openid_lib/README | 99 -- modules/member/openid_lib/class.openid.php | 314 ----- .../member/openid_lib/class_HTTPRetriever.php | 1159 ----------------- modules/member/openid_lib/libcurlemu.inc.php | 111 -- .../member/openid_lib/libcurlexternal.inc.php | 637 --------- .../member/openid_lib/libcurlnative.inc.php | 453 ------- .../Auth/OpenID/SessionStore.php | 131 ++ .../php-openid-1.2.3/Auth/OpenID/XEStore.php | 173 +++ .../queries/deleteOpenIdAssociation.xml | 9 + modules/member/queries/deleteOpenIdNonce.xml | 8 + .../member/queries/getOpenIdAssociation.xml | 12 + modules/member/queries/getOpenIdNonce.xml | 11 + .../queries/insertOpenIdAssociation.xml | 13 + modules/member/queries/insertOpenIdNonce.xml | 9 + .../schemas/member_openid_association.xml | 8 + .../member/schemas/member_openid_nonce.xml | 4 + 19 files changed, 499 insertions(+), 3250 deletions(-) delete mode 100644 modules/member/openid_lib/LICENSE delete mode 100644 modules/member/openid_lib/README delete mode 100644 modules/member/openid_lib/class.openid.php delete mode 100755 modules/member/openid_lib/class_HTTPRetriever.php delete mode 100755 modules/member/openid_lib/libcurlemu.inc.php delete mode 100755 modules/member/openid_lib/libcurlexternal.inc.php delete mode 100755 modules/member/openid_lib/libcurlnative.inc.php create mode 100644 modules/member/php-openid-1.2.3/Auth/OpenID/SessionStore.php create mode 100644 modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php create mode 100644 modules/member/queries/deleteOpenIdAssociation.xml create mode 100644 modules/member/queries/deleteOpenIdNonce.xml create mode 100644 modules/member/queries/getOpenIdAssociation.xml create mode 100644 modules/member/queries/getOpenIdNonce.xml create mode 100644 modules/member/queries/insertOpenIdAssociation.xml create mode 100644 modules/member/queries/insertOpenIdNonce.xml create mode 100644 modules/member/schemas/member_openid_association.xml create mode 100644 modules/member/schemas/member_openid_nonce.xml diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 0c7b3caba..fa13d3d5a 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -118,6 +118,7 @@ FileHandler::makeDir('./files/member_extra_info/profile_image'); FileHandler::makeDir('./files/member_extra_info/signature'); + $oDB->addIndex("member_openid_association","idx_assoc", array("server_url(255)","handle"), false); return new Object(); } @@ -192,6 +193,10 @@ * @brief 캐시 파일 재생성 **/ function recompileCache() { + set_include_path(_XE_PATH_."modules/member/php-openid-1.2.3"); + require_once('Auth/OpenID/XEStore.php'); + $store = new Auth_OpenID_XEStore(); + $store->reset(); } } ?> diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 91842c47a..f4a1f2944 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -47,43 +47,34 @@ $config = $oModuleModel->getModuleConfig('member'); if($config->enable_openid != 'Y') $this->stop('msg_invalid_request'); - ob_start(); - require('./modules/member/openid_lib/class.openid.php'); - require_once('./modules/member/openid_lib/libcurlemu.inc.php'); + set_include_path(_XE_PATH_."modules/member/php-openid-1.2.3"); + require_once('Auth/OpenID.php'); + require_once('Auth/OpenID/Consumer.php'); + require_once('Auth/OpenID/XEStore.php'); + $store = new Auth_OpenID_XEStore(); + $consumer = new Auth_OpenID_Consumer($store); $user_id = Context::get('user_id'); if (!$user_id) $user_id = Context::get('openid'); + $auth_request = $consumer->begin($user_id); + $auth_request->addExtensionArg('sreg', 'required', 'email'); + $auth_request->addExtensionArg('sreg', 'optional', 'dob'); + if(!$auth_request) + { + return new Object(-1, "association failed"); + } + $trust_root = 'http://'.$_SERVER["HTTP_HOST"]; $referer_url = Context::get('referer_url'); if (!$referer_url) $referer_url = $_SERVER['HTTP_REFERER']; if (!$referer_url) $referer_url = htmlspecialchars_decode(getRequestUri(RELEASE_SSL)); - - $openid = new SimpleOpenID(); - - $openid->SetIdentity($user_id); - $openid->SetTrustRoot('http://' . $_SERVER["HTTP_HOST"]); - - $openid->SetRequiredFields(array('email')); - $openid->SetOptionalFields(array('dob')); - - if (!$openid->GetOpenIDServer()) { - $error = $openid->GetError(); - $this->setError(-1); - $this->setMessage($error['description']); - - if (Context::getRequestMethod() == 'POST') - header("location:" . $referer_url); - } else { - $goto = urlencode($referer_url); - $ApprovedURL = Context::getRequestUri(RELEASE_SSL) . "?module=member&act=" . $validator. "&goto=" . $goto; - $openid->SetApprovedURL($ApprovedURL); - $url = $openid->GetRedirectURL(); - $this->add('redirect_url', $url); - if (Context::getRequestMethod() == 'POST') - header("location:" . $url); - } - ob_clean(); + $goto = urlencode($referer_url); + $ApprovedURL = Context::getRequestUri(RELEASE_SSL) . "?module=member&act=" . $validator. "&goto=" . $goto; + $redirect_url = $auth_request->redirectURL($trust_root, $ApprovedURL); + $this->add("redirect_url", $redirect_url); + if (Context::getRequestMethod() == 'POST') + header("location:" . $redirect_url); } function getLegacyUserIDsFromOpenID($openid_identity) { @@ -127,120 +118,109 @@ return $result; } - function doOpenIDValidate($openid) { - // use the JanRain php-openid library - require_once($this->module_path.'php-openid-1.2.3/Auth/OpenID/URINorm.php'); - - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('member'); - if($config->enable_openid != 'Y') $this->stop('msg_invalid_request'); - - ob_start(); - require($this->module_path.'openid_lib/class.openid.php'); - require_once($this->module_path.'openid_lib/libcurlemu.inc.php'); - - $openid_ctx = new SimpleOpenID; - - $openid_ctx->SetIdentity(Auth_OpenID_urinorm($openid)); - $openid_ctx->validation_result = $openid_ctx->ValidateWithServer(); - ob_clean(); - - return $openid_ctx; - } - /** * @brief openid 인증 체크 **/ function procMemberOpenIDValidate() { - $openid = $this->doOpenIDValidate($_GET['openid_identity']); - $openid_identity = $openid->GetIdentity(); - $openid_validation_result = $openid->validation_result; + set_include_path(_XE_PATH_."modules/member/php-openid-1.2.3"); + require_once('Auth/OpenID.php'); + require_once('Auth/OpenID/Consumer.php'); + require_once('Auth/OpenID/XEStore.php'); + require_once('Auth/OpenID/URINorm.php'); - // 인증 성공 - if ($openid_validation_result == true) { - $oMemberModel = &getModel('member'); - - // 이 오픈아이디와 연결된 (또는 연결되어 있을 가능성이 있는) 제로보드 아이디들을 받아온다. - $login_success = false; - $assoc_member_info = null; - - $args->openid = $openid_identity; - $output = executeQuery('member.getMemberSrlByOpenID', $args); - - if ($output->toBool() && !is_array($output->data)) { - $member_srl = $output->data->member_srl; - $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); - if ($member_info) { - $assoc_member_info = $member_info; - } - } - - $user_id_candidates = $this->getLegacyUserIDsFromOpenID($openid_identity); - $default_user_id = $user_id_candidates[0]; - - if ($assoc_member_info != null) { - $user_id_candidates = array_merge(array($assoc_member_info->user_id), $user_id_candidates); - } - - foreach($user_id_candidates as $user_id) { - $args->user_id = $args->nick_name = $user_id; - // 기본 정보들을 받음 - $args->email_address = Context::get('openid_sreg_email'); - $args->user_name = Context::get('openid_sreg_fullname'); - if(!$args->user_name) list($args->user_name) = explode('@', $args->email_address); - $args->birthday = str_replace('-','',Context::get('openid_sreg_dob')); - - // 자체 인증 시도 - $output = $this->doLogin($args->user_id); - - - if ($output->toBool()) { - if ($assoc_member_info == null) { - $logged_info = Context::get('logged_info'); - $args->member_srl = $logged_info->member_srl; - $args->openid = $openid_identity; - executeQuery('member.addOpenIDToMember', $args); - } - $login_success = true; - break; - } - } - - // 자체 인증 실패시 회원 가입시킴 - if(!$login_success) { - $args->user_id = $args->nick_name = $default_user_id; - $args->password = md5(getmicrotime()); - - $output = $this->insertMember($args); - if(!$output->toBool()) return $this->stop($output->getMessage()); - $output = $this->doLogin($args->user_id); - if(!$output->toBool()) return $this->stop($output->getMessage()); - - $logged_info = Context::get('logged_info'); - $args->member_srl = $logged_info->member_srl; - $args->openid = $openid_identity; - executeQuery('member.addOpenIDToMember', $args); - } - - Context::close(); - - // 페이지 이동 - if(Context::get('goto')) { - $goto = Context::get('goto'); - header("location:" . $goto); - } else { - header("location:./"); - } - - exit(); - - // 인증 실패 - } else if($openid->IsError() == true) { - $error = $openid->GetError(); - return $this->stop($error['description']); - } else { + $store = new Auth_OpenID_XEStore(); + $consumer = new Auth_OpenID_Consumer($store); + $response = $consumer->complete($_GET); + switch($response->status) { + case Auth_OpenID_CANCEL : + // 사용자가 인증을 취소했을 때의 처리 + return $this->stop('authorization_canceled'); + case Auth_OpenID_FAILURE : + // 무언가의 문제로 인해 인증이 실패했을 때의 처리(인증을 요구한 openid가 없다든가..) + return $this->stop('invalid_authorization'); + case Auth_OpenID_SUCCESS : + // 인증성공!! + break; + default: return $this->stop('invalid_authorization'); } + + // 인증 성공 + $oMemberModel = &getModel('member'); + + // 이 오픈아이디와 연결된 (또는 연결되어 있을 가능성이 있는) 제로보드 아이디들을 받아온다. + $login_success = false; + $assoc_member_info = null; + $openid_identity = $response->signed_args["openid.identity"]; + $args->openid = $openid_identity; + $output = executeQuery('member.getMemberSrlByOpenID', $args); + + if ($output->toBool() && $output->data && !is_array($output->data)) { + $member_srl = $output->data->member_srl; + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + if ($member_info) { + $assoc_member_info = $member_info; + } + } + + $user_id_candidates = $this->getLegacyUserIDsFromOpenID($openid_identity); + $default_user_id = $user_id_candidates[0]; + + if ($assoc_member_info != null) { + $user_id_candidates = array_merge(array($assoc_member_info->user_id), $user_id_candidates); + } + $sreg = $response->extensionResponse('sreg'); + + foreach($user_id_candidates as $user_id) { + $args->user_id = $args->nick_name = $user_id; + // 기본 정보들을 받음 + $args->email_address = $sreg['email']; + $args->user_name = $sreg['fullname']; + if(!$args->user_name) list($args->user_name) = explode('@', $args->email_address); + $args->birthday = str_replace('-','',$sreg['dob']); + + // 자체 인증 시도 + $output = $this->doLogin($args->user_id); + + if ($output->toBool()) { + if ($assoc_member_info == null) { + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + $args->openid = $openid_identity; + executeQuery('member.addOpenIDToMember', $args); + } + $login_success = true; + break; + } + } + + // 자체 인증 실패시 회원 가입시킴 + if(!$login_success) { + $args->user_id = $args->nick_name = $default_user_id; + $args->password = md5(getmicrotime()); + + $output = $this->insertMember($args); + if(!$output->toBool()) return $this->stop($output->getMessage()); + $output = $this->doLogin($args->user_id); + if(!$output->toBool()) return $this->stop($output->getMessage()); + + $logged_info = Context::get('logged_info'); + $args->member_srl = $logged_info->member_srl; + $args->openid = $openid_identity; + executeQuery('member.addOpenIDToMember', $args); + } + + Context::close(); + + // 페이지 이동 + if(Context::get('goto')) { + $goto = Context::get('goto'); + header("location:" . $goto); + } else { + header("location:./"); + } + + exit(); } /** @@ -1516,7 +1496,6 @@ // 모델 객체 생성 $oMemberModel = &getModel('member'); - // 금지 아이디인지 체크 if($oMemberModel->isDeniedID($args->user_id)) return new Object(-1,'denied_user_id'); diff --git a/modules/member/openid_lib/LICENSE b/modules/member/openid_lib/LICENSE deleted file mode 100644 index 3912109b5..000000000 --- a/modules/member/openid_lib/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/modules/member/openid_lib/README b/modules/member/openid_lib/README deleted file mode 100644 index 70a78b3c0..000000000 --- a/modules/member/openid_lib/README +++ /dev/null @@ -1,99 +0,0 @@ -CURL Extension Emulation Library -Version 1.0.4 -Copyright 2004-2007, Steve Blinch -http://code.blitzaffe.com -============================================================================ - -DESCRIPTION - -Provides a pure-PHP implementation of the PHP CURL extension, for use on -systems which do not already have the CURL extension installed. It emulates -all of the curl_* functions normally provided by the CURL extension itself. - -This will automatically detect and use the best CURL implementation available -on your server. It will attempt the following, in order: - -1) Check for the existence of the "real" CURL PHP Extension. If it is -loaded, the library will do nothing (and it will not interfere with the -"real" extension). -2) Check for the existence of the CURL console binary (usually located in -/usr/bin/curl). If found, the library will emulate the CURL PHP -extension (including all curl_* functions) and use the console binary -to execute all requests. -3) If neither the "real" CURL PHP Extension nor the CURL console binary -are available, the library will emulate the CURL PHP extension (including -all curl_* functions) using a native, pure-PHP HTTP client implementation. -This implementation is somewhat limited, but it provides support for most -of the common CURL options. HTTPS (SSL) support is available in this -mode under PHP 4.3.0 if the OpenSSL Extension is loaded. - -Thus, by including this library in your project, you can rely on having some -level of CURL support regardless of the configuration of the server on which -it is being used. - - -HISTORY - -1.0.4 (not released) -- Fixed HTTPRetriever double-inclusion bug. - - -USAGE - -Simply copy all of the libcurlemu files into your project directory, then: - -require_once("libcurlemu.inc.php"); - -After this, you can use all of the curl_* functions documented in the PHP -Manual. - - -EXAMPLE - -// CURL Extension Emulation Library Example -// -// Usage should be straightforward; you simply use this script exactly as you -// would normally use the PHP CURL extension functions. - -// first, include libcurlemu.inc.php -require_once('libcurlemu.inc.php'); - -// at this point, libcurlemu has detected the best available CURL solution -// (either the CURL extension, if available, or the CURL commandline binary, -// if available, or as a last resort, HTTPRetriever, our native-PHP HTTP -// client implementation) and has implemented the curl_* functions if -// necessary, so you can use CURL normally and safely assume that all CURL -// functions are available. - -// the rest of this example code is copied straight from the PHP manual's -// reference for the curl_init() function, and will work fine with libcurlemu - -// create a new CURL resource -$ch = curl_init(); - -// set URL and other appropriate options -curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); -curl_setopt($ch, CURLOPT_HEADER, false); - -// grab URL and pass it to the browser -curl_exec($ch); - -// close CURL resource, and free up system resources -curl_close($ch); - - -LICENSE - -This script is free software; you can redistribute it and/or modify it under the -terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. - -This script is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. - -You should have received a copy of the GNU General Public License along -with this script; if not, write to the Free Software Foundation, Inc., -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA diff --git a/modules/member/openid_lib/class.openid.php b/modules/member/openid_lib/class.openid.php deleted file mode 100644 index bfba3b055..000000000 --- a/modules/member/openid_lib/class.openid.php +++ /dev/null @@ -1,314 +0,0 @@ -SetIdentity($_POST['openid_url']); - :: SET RETURN URL :: - $openid->SetApprovedURL('http://www.yoursite.com/return.php'); // Script which handles a response from OpenID Server - :: SET TRUST ROOT :: - $openid->SetTrustRoot('http://www.yoursite.com/'); - :: FETCH SERVER URL FROM IDENTITY PAGE :: [Note: It is recomended to cache this (Session, Cookie, Database)] - $openid->GetOpenIDServer(); // Returns false if server is not found - :: REDIRECT USER TO OPEN ID SERVER FOR APPROVAL :: - - :: (OPTIONAL) SET OPENID SERVER :: - $openid->SetOpenIDServer($server_url); // If you have cached previously this, you don't have to call GetOpenIDServer and set value this directly - - STEP 2) - Once user gets returned we must validate signature - :: VALIDATE REQUEST :: - true|false = $openid->ValidateWithServer(); - - ERRORS: - array = $openid->GetError(); // Get latest Error code - - FIELDS: - OpenID allowes you to retreive a profile. To set what fields you'd like to get use (accepts either string or array): - $openid->SetRequiredFields(array('email','fullname','dob','gender','postcode','country','language','timezone')); - or - $openid->SetOptionalFields('postcode'); - -IMPORTANT TIPS: -OPENID as is now, is not trust system. It is a great single-sign on method. If you want to -store information about OpenID in your database for later use, make sure you handle url identities -properly. - For example: - https://steve.myopenid.com/ - https://steve.myopenid.com - http://steve.myopenid.com/ - http://steve.myopenid.com - ... are representing one single user. Some OpenIDs can be in format openidserver.com/users/user/ - keep this in mind when storing identities - - To help you store an OpenID in your DB, you can use function: - $openid_db_safe = $openid->OpenID_Standarize($upenid); - This may not be comatible with current specs, but it works in current enviroment. Use this function to get openid - in one format like steve.myopenid.com (without trailing slashes and http/https). - Use output to insert Identity to database. Don't use this for validation - it may fail. - -*/ - -class SimpleOpenID{ - var $openid_url_identity; - var $URLs = array(); - var $error = array(); - var $fields = array(); - - function SimpleOpenID(){ - if (!function_exists('curl_exec')) { - die('Error: Class SimpleOpenID requires curl extension to work'); - } - } - function SetOpenIDServer($a){ - $this->URLs['openid_server'] = $a; - } - function SetTrustRoot($a){ - $this->URLs['trust_root'] = $a; - } - function SetCancelURL($a){ - $this->URLs['cancel'] = $a; - } - function SetApprovedURL($a){ - $this->URLs['approved'] = $a; - } - function SetRequiredFields($a){ - if (is_array($a)){ - $this->fields['required'] = $a; - }else{ - $this->fields['required'][] = $a; - } - } - function SetOptionalFields($a){ - if (is_array($a)){ - $this->fields['optional'] = $a; - }else{ - $this->fields['optional'][] = $a; - } - } - function SetIdentity($a){ // Set Identity URL - if(strpos($a, 'http://') === false) { - $a = 'http://'.$a; - } - /* - $u = parse_url(trim($a)); - if (!isset($u['path'])){ - $u['path'] = '/'; - }else if(substr($u['path'],-1,1) == '/'){ - $u['path'] = substr($u['path'], 0, strlen($u['path'])-1); - } - if (isset($u['query'])){ // If there is a query string, then use identity as is - $identity = $a; - }else{ - $identity = $u['scheme'] . '://' . $u['host'] . $u['path']; - }*/ - $this->openid_url_identity = $a; - } - function GetIdentity(){ // Get Identity - return $this->openid_url_identity; - } - function GetError(){ - $e = $this->error; - return array('code'=>$e[0],'description'=>$e[1]); - } - - function ErrorStore($code, $desc = null){ - $errs['OPENID_NOSERVERSFOUND'] = 'Cannot find OpenID Server TAG on Identity page.'; - if ($desc == null){ - $desc = $errs[$code]; - } - $this->error = array($code,$desc); - } - - function IsError(){ - if (count($this->error) > 0){ - return true; - }else{ - return false; - } - } - - function splitResponse($response) { - $r = array(); - $response = explode("\n", $response); - foreach($response as $line) { - $line = trim($line); - if ($line != "") { - list($key, $value) = explode(":", $line, 2); - $r[trim($key)] = trim($value); - } - } - return $r; - } - - function OpenID_Standarize($openid_identity){ - $u = parse_url(strtolower(trim($openid_identity))); - if ($u['path'] == '/'){ - $u['path'] = ''; - } - if(substr($u['path'],-1,1) == '/'){ - $u['path'] = substr($u['path'], 0, strlen($u['path'])-1); - } - if (isset($u['query'])){ // If there is a query string, then use identity as is - return $u['host'] . $u['path'] . '?' . $u['query']; - }else{ - return $u['host'] . $u['path']; - } - } - - function array2url($arr){ // converts associated array to URL Query String - if (!is_array($arr)){ - return false; - } - foreach($arr as $key => $value){ - $query .= $key . "=" . $value . "&"; - } - return $query; - } - function FSOCK_Request($url, $method="GET", $params = ""){ - $fp = fsockopen("ssl://www.myopenid.com", 443, $errno, $errstr, 3); // Connection timeout is 3 seconds - if (!$fp) { - $this->ErrorStore('OPENID_SOCKETERROR', $errstr); - return false; - } else { - $request = $method . " /server HTTP/1.0\r\n"; - $request .= "User-Agent: Simple OpenID PHP Class (http://www.phpclasses.org/simple_openid)\r\n"; - $request .= "Connection: close\r\n\r\n"; - fwrite($fp, $request); - stream_set_timeout($fp, 4); // Connection response timeout is 4 seconds - $res = fread($fp, 2000); - $info = stream_get_meta_data($fp); - fclose($fp); - - if ($info['timed_out']) { - $this->ErrorStore('OPENID_SOCKETTIMEOUT'); - } else { - return $res; - } - } - } - function CURL_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED - if (is_array($params)) $params = $this->array2url($params); - $curl = curl_init(); - curl_setopt($curl, CURLOPT_URL,$url . ($method == "GET" && $params != "" ? "?" . $params : "")); - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($curl, CURLOPT_HEADER, false); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($curl, CURLOPT_HTTPGET, ($method == "GET")); - curl_setopt($curl, CURLOPT_POST, ($method == "POST")); - if ($method == "POST") curl_setopt($curl, CURLOPT_POSTFIELDS, $params); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - $response = curl_exec($curl); - - if (curl_errno($curl) == 0){ - $response; - }else{ - $this->ErrorStore('OPENID_CURL', curl_error($curl)); - } - return $response; - } - - function HTML2OpenIDServer($content) { - $get = array(); - // Get details of their OpenID server and (optional) delegate - preg_match_all('/]*rel="openid.server"[^>]*href="([^"]+)"[^>]*\/?>/i', $content, $matches1); - preg_match_all('/]*href="([^"]+)"[^>]*rel="openid.server"[^>]*\/?>/i', $content, $matches2); - $servers = array_merge($matches1[1], $matches2[1]); - - preg_match_all('/]*rel="openid.delegate"[^>]*href="([^"]+)"[^>]*\/?>/i', $content, $matches1); - - preg_match_all('/]*href="([^"]+)"[^>]*rel="openid.delegate"[^>]*\/?>/i', $content, $matches2); - - $delegates = array_merge($matches1[1], $matches2[1]); - - $ret = array($servers, $delegates); - return $ret; - } - - function GetOpenIDServer(){ - $response = $this->CURL_Request($this->openid_url_identity); - list($servers, $delegates) = $this->HTML2OpenIDServer($response); - if (count($servers) == 0){ - $this->ErrorStore('OPENID_NOSERVERSFOUND'); - return false; - } - if ($delegates[0] != ""){ - $this->openid_url_identity = $delegates[0]; - } - $this->SetOpenIDServer($servers[0]); - return $servers[0]; - } - - function GetRedirectURL(){ - $params = array(); - $params['openid.return_to'] = urlencode($this->URLs['approved']); - $params['openid.mode'] = 'checkid_setup'; - $params['openid.identity'] = urlencode($this->openid_url_identity); - $params['openid.trust_root'] = urlencode($this->URLs['trust_root']); - - if (count($this->fields['required']) > 0){ - $params['openid.sreg.required'] = implode(',',$this->fields['required']); - } - if (count($this->fields['optional']) > 0){ - $params['openid.sreg.optional'] = implode(',',$this->fields['optional']); - } - return $this->URLs['openid_server'] . "?". $this->array2url($params); - } - - function Redirect(){ - $redirect_to = $this->GetRedirectURL(); - if (headers_sent()){ // Use JavaScript to redirect if content has been previously sent (not recommended, but safe) - echo ''; - }else{ // Default Header Redirect - header('Location: ' . $redirect_to); - } - } - - function ValidateWithServer(){ - $params = array( - 'openid.assoc_handle' => urlencode($_GET['openid_assoc_handle']), - 'openid.signed' => urlencode($_GET['openid_signed']), - 'openid.sig' => urlencode($_GET['openid_sig']) - ); - // Send only required parameters to confirm validity - $arr_signed = explode(",",str_replace('sreg.','sreg_',$_GET['openid_signed'])); - for ($i=0; $i"; - // print_r($_GET); - // print_r($params); - // print ""; - $openid_server = $this->GetOpenIDServer(); - if ($openid_server == false){ - return false; - } - $response = $this->CURL_Request($openid_server,'GET',$params); - $data = $this->splitResponse($response); - if ($data['is_valid'] == "true") { - return true; - }else{ - return false; - } - } -} - -?> diff --git a/modules/member/openid_lib/class_HTTPRetriever.php b/modules/member/openid_lib/class_HTTPRetriever.php deleted file mode 100755 index 8793919f2..000000000 --- a/modules/member/openid_lib/class_HTTPRetriever.php +++ /dev/null @@ -1,1159 +0,0 @@ -curl_proxy (only useable when - * $http->force_curl is TRUE; internal support not yet implemented) - * - * - * 1.1.9 (11-Oct-2006) - * - Added set_transfer_display() and default_transfer_callback() - * methods for transfer progress tracking - * - Suppressed possible "fatal protocol error" when remote SSL server - * closes the connection early - * - Added get_content_type() method - * - make_query_string() now handles arrays - * - * 1.1.8 (19-Jun-2006) - * - Added set_progress_display() and default_progress_callback() - * methods for debug output - * - Added support for relative URLs in HTTP redirects - * - Added cookie support (sending and receiving) - * - Numerous bug fixes - * - * 1.1.7 (18-Apr-2006) - * - Added support for automatically following HTTP redirects - * - Added ::get_error() method to get any available error message (be - * it an HTTP result error or an internal/connection error) - * - Added ::cache_hit variable to determine whether the page was cached - * - * 1.1.6 (04-Mar-2006) - * - Added stream_timeout class variable. - * - Added progress_callback class variable. - * - Added support for braindead servers that ignore Connection: close - * - * - * EXAMPLE - * - * // HTTPRetriever usage example - * require_once("class_HTTPRetriever.php"); - * $http = &new HTTPRetriever(); - * - * - * // Example GET request: - * // ---------------------------------------------------------------------------- - * $keyword = "blitzaffe code"; // search Google for this keyword - * if (!$http->get("http://www.google.com/search?hl=en&q=%22".urlencode($keyword)."%22&btnG=Search&meta=")) { - * echo "HTTP request error: #{$http->result_code}: {$http->result_text}"; - * return false; - * } - * echo "HTTP response headers:
    ";
    - * var_dump($http->response_headers);
    - * echo "

    "; - * - * echo "Page content:
    ";
    - * echo $http->response;
    - * echo "
    "; - * // ---------------------------------------------------------------------------- - * - * - * // Example POST request: - * // ---------------------------------------------------------------------------- - * $keyword = "blitzaffe code"; // search Google for this keyword - * $values = array( - * "hl"=>"en", - * "q"=>"%22".urlencode($keyword)."%22", - * "btnG"=>"Search", - * "meta"=>"" - * ); - * // Note: This example is just to demonstrate the POST equivalent of the GET - * // example above; running this script will return a 501 Not Implemented, as - * // Google does not support POST requests. - * if (!$http->post("http://www.google.com/search",$http->make_query_string($values))) { - * echo "HTTP request error: #{$http->result_code}: {$http->result_text}"; - * return false; - * } - * echo "HTTP response headers:
    ";
    - * var_dump($http->response_headers);
    - * echo "

    "; - * - * echo "Page content:
    ";
    - * echo $http->response;
    - * echo "
    "; - * // ---------------------------------------------------------------------------- - * - * - * LICENSE - * - * This script is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * This script is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more - * details. - * - * You should have received a copy of the GNU General Public License along - * with this script; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -// define user agent ID's -define("UA_EXPLORER",0); -define("UA_MOZILLA",1); -define("UA_FIREFOX",2); -define("UA_OPERA",3); - -// define progress message severity levels -define('HRP_DEBUG',0); -define('HRP_INFO',1); -define('HRP_ERROR',2); - -if (!defined("CURL_PATH")) define("CURL_PATH","/usr/bin/curl"); - -// if the CURL extension is not loaded, but the CURL Emulation Library is found, try -// to load it -if (!extension_loaded("curl") && !defined('HTTPR_NO_REDECLARE_CURL') ) { - require_once('./modules/member/openid_lib/libcurlemu.inc.php'); -} - -class HTTPRetriever { - - // Constructor - function HTTPRetriever() { - // default HTTP headers to send with all requests - $this->headers = array( - "Referer"=>"", - "User-Agent"=>"HTTPRetriever/1.0", - "Connection"=>"close" - ); - - // HTTP version (has no effect if using CURL) - $this->version = "1.1"; - - // Normally, CURL is only used for HTTPS requests; setting this to - // TRUE will force CURL for HTTP requests as well. Not recommended. - $this->force_curl = false; - - // If you don't want to use CURL at all, set this to TRUE. - $this->disable_curl = false; - - // If HTTPS request return an error message about SSL certificates in - // $this->error and you don't care about security, set this to TRUE - $this->insecure_ssl = false; - - // Set the maximum time to wait for a connection - $this->connect_timeout = 15; - - // Set the maximum time to allow a transfer to run, or 0 to disable. - $this->max_time = 0; - - // Set the maximum time for a socket read/write operation, or 0 to disable. - $this->stream_timeout = 0; - - // If you're making an HTTPS request to a host whose SSL certificate - // doesn't match its domain name, AND YOU FULLY UNDERSTAND THE - // SECURITY IMPLICATIONS OF IGNORING THIS PROBLEM, set this to TRUE. - $this->ignore_ssl_hostname = false; - - // If TRUE, the get() and post() methods will close the connection - // and return immediately after receiving the HTTP result code - $this->result_close = false; - - // If set to a positive integer value, retrieved pages will be cached - // for this number of seconds. Any subsequent calls within the cache - // period will return the cached page, without contacting the remote - // server. - $this->caching = false; - - // If TRUE and $this->caching is not false, retrieved pages/files will be - // cached only if they appear to be static. - $this->caching_intelligent = false; - - // If TRUE, cached files will be stored in subdirectories corresponding - // to the first 2 letters of the hash filename - $this->caching_highvolume = false; - - // If $this->caching is enabled, this specifies the folder under which - // cached pages are saved. - $this->cache_path = '/tmp/'; - - // Set these to perform basic HTTP authentication - $this->auth_username = ''; - $this->auth_password = ''; - - // Optionally set this to a valid callback method to have HTTPRetriever - // provide page preprocessing capabilities to your script. If set, this - // method should accept two arguments: an object representing an instance - // of HTTPRetriever, and a string containing the page contents - $this->page_preprocessor = null; - - // Optionally set this to a valid callback method to have HTTPRetriever - // provide progress messages. Your callback must accept 2 parameters: - // an integer representing the severity (0=debug, 1=information, 2=error), - // and a string representing the progress message - $this->progress_callback = null; - - // Optionally set this to a valid callback method to have HTTPRetriever - // provide bytes-transferred messages. Your callbcak must accept 2 - // parameters: an integer representing the number of bytes transferred, - // and an integer representing the total number of bytes expected (or - // -1 if unknown). - $this->transfer_callback = null; - - // Set this to TRUE if you HTTPRetriever to transparently follow HTTP - // redirects (code 301, 302, 303, and 307). Optionally set this to a - // numeric value to limit the maximum number of redirects to the specified - // value. (Redirection loops are detected automatically.) - // Note that non-GET/HEAD requests will NOT be redirected except on code - // 303, as per HTTP standards. - $this->follow_redirects = false; - } - - // Send an HTTP GET request to $url; if $ipaddress is specified, the - // connection will be made to the selected IP instead of resolving the - // hostname in $url. - // - // If $cookies is set, it should be an array in one of two formats. - // - // Either: $cookies[ 'cookiename' ] = array ( - // '/path/'=>array( - // 'expires'=>time(), - // 'domain'=>'yourdomain.com', - // 'value'=>'cookievalue' - // ) - // ); - // - // Or, a more simplified format: - // $cookies[ 'cookiename' ] = 'value'; - // - // The former format will automatically check to make sure that the path, domain, - // and expiration values match the HTTP request, and will only send the cookie if - // they do match. The latter will force the cookie to be set for the HTTP request - // unconditionally. - // - function get($url,$ipaddress = false,$cookies = false) { - $this->method = "GET"; - $this->post_data = ""; - $this->connect_ip = $ipaddress; - return $this->_execute_request($url,$cookies); - } - - // Send an HTTP POST request to $url containing the POST data $data. See ::get() - // for a description of the remaining arguments. - function post($url,$data="",$ipaddress = false,$cookies = false) { - $this->method = "POST"; - $this->post_data = $data; - $this->connect_ip = $ipaddress; - return $this->_execute_request($url,$cookies); - } - - // Send an HTTP HEAD request to $url. See ::get() for a description of the arguments. - function head($url,$ipaddress = false,$cookies = false) { - $this->method = "HEAD"; - $this->post_data = ""; - $this->connect_ip = $ipaddress; - return $this->_execute_request($url,$cookies); - } - - // send an alternate (non-GET/POST) HTTP request to $url - function custom($method,$url,$data="",$ipaddress = false,$cookies = false) { - $this->method = $method; - $this->post_data = $data; - $this->connect_ip = $ipaddress; - return $this->_execute_request($url,$cookies); - } - - function array_to_query($arrayname,$arraycontents) { - $output = ""; - foreach ($arraycontents as $key=>$value) { - if (is_array($value)) { - $output .= $this->array_to_query(sprintf('%s[%s]',$arrayname,urlencode($key)),$value); - } else { - $output .= sprintf('%s[%s]=%s&',$arrayname,urlencode($key),urlencode($value)); - } - } - return $output; - } - - // builds a query string from the associative array array $data; - // returns a string that can be passed to $this->post() - function make_query_string($data) { - $output = ""; - if (is_array($data)) { - foreach ($data as $name=>$value) { - if (is_array($value)) { - $output .= $this->array_to_query(urlencode($name),$value); - } elseif (is_scalar($value)) { - $output .= urlencode($name)."=".urlencode($value)."&"; - } else { - $output .= urlencode($name)."=".urlencode(serialize($value)).'&'; - } - } - } - return substr($output,0,strlen($output)-1); - } - - - // this is pretty limited... but really, if you're going to spoof you UA, you'll probably - // want to use a Windows OS for the spoof anyway - // - // if you want to set the user agent to a custom string, just assign your string to - // $this->headers["User-Agent"] directly - function set_user_agent($agenttype,$agentversion,$windowsversion) { - $useragents = array( - "Mozilla/4.0 (compatible; MSIE %agent%; Windows NT %os%)", // IE - "Mozilla/5.0 (Windows; U; Windows NT %os%; en-US; rv:%agent%) Gecko/20040514", // Moz - "Mozilla/5.0 (Windows; U; Windows NT %os%; en-US; rv:1.7) Gecko/20040803 Firefox/%agent%", // FFox - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT %os%) Opera %agent% [en]", // Opera - ); - $agent = $useragents[$agenttype]; - $this->headers["User-Agent"] = str_replace(array("%agent%","%os%"),array($agentversion,$windowsversion),$agent); - } - - // this isn't presently used as it's now handled inline by the request parser - function remove_chunkiness() { - $remaining = $this->response; - $this->response = ""; - - while ($remaining) { - $hexlen = strpos($remaining,"\r"); - $chunksize = substr($remaining,0,$hexlen); - $argstart = strpos($chunksize,';'); - if ($argstart!==false) $chunksize = substr($chunksize,0,$argstart); - $chunksize = (int) @hexdec($chunksize); - - $this->response .= substr($remaining,$hexlen+2,$chunksize); - $remaining = substr($remaining,$hexlen+2+$chunksize+2); - - if (!$chunksize) { - // either we're done, or something's borked... exit - $this->response .= $remaining; - return; - } - } - } - - // (internal) store a page in the cache - function _cache_store($token,$url) { - - if ($this->caching_intelligent) { - $urlinfo = parse_url($url); - if ($this->method=='POST') { - $this->progress(HRP_DEBUG,"POST request; not caching"); - return; - } else if (strlen($urlinfo['query'])) { - $this->progress(HRP_DEBUG,"Request used query string; not caching"); - return; - } else { - $this->progress(HRP_DEBUG,"Request appears to be static and cacheable"); - } - } - - $values = array( - "stats"=>$this->stats, - "result_code"=>$this->result_code, - "result_text"=>$this->result_text, - "version"=>$this->version, - "response"=>$this->response, - "response_headers"=>$this->response_headers, - "response_cookies"=>$this->response_cookies, - "raw_response"=>$this->raw_response, - ); - $values = serialize($values); - - $cache_dir = $this->cache_path; - if (substr($cache_dir,-1)!='/') $cache_dir .= '/'; - - if ($this->caching_highvolume) { - $cache_dir .= substr($token,0,2) . '/'; - if (!is_dir($cache_dir)) @FileHandler::makeDir($cache_dir); - } - - $filename = $cache_dir.$token.'.tmp'; - - $fp = @fopen($filename,"w"); - if (!$fp) { - $this->progress(HRP_DEBUG,"Unable to create cache file"); - return false; - } - fwrite($fp,$values); - fclose($fp); - - $this->progress(HRP_DEBUG,"HTTP response stored to cache"); - } - - // (internal) fetch a page from the cache - function _cache_fetch($token) { - $this->cache_hit = false; - $this->progress(HRP_DEBUG,"Checking for cached page value"); - - $cache_dir = $this->cache_path; - if (substr($cache_dir,-1)!='/') $cache_dir .= '/'; - - if ($this->caching_highvolume) $cache_dir .= substr($token,0,2) . '/'; - - $filename = $cache_dir.$token.'.tmp'; - if (!file_exists($filename)) { - $this->progress(HRP_DEBUG,"Page not available in cache"); - return false; - } - - if (time()-filemtime($filename)>$this->caching) { - $this->progress(HRP_DEBUG,"Page in cache is expired"); - FileHandler::removeFile($filename); - return false; - } - - if ($values = file_get_contents($filename)) { - $values = unserialize($values); - if (!$values) { - $this->progress(HRP_DEBUG,"Invalid cache contents"); - return false; - } - - $this->stats = $values["stats"]; - $this->result_code = $values["result_code"]; - $this->result_text = $values["result_text"]; - $this->version = $values["version"]; - $this->response = $values["response"]; - $this->response_headers = $values["response_headers"]; - $this->response_cookies = $values["response_cookies"]; - $this->raw_response = $values["raw_response"]; - - $this->progress(HRP_DEBUG,"Page loaded from cache"); - $this->cache_hit = true; - return true; - } else { - $this->progress(HRP_DEBUG,"Error reading cache file"); - return false; - } - } - - function parent_path($path) { - if (substr($path,0,1)=='/') $path = substr($path,1); - if (substr($path,-1)=='/') $path = substr($path,0,strlen($path)-1); - $path = explode('/',$path); - array_pop($path); - return count($path) ? ('/' . implode('/',$path)) : ''; - } - - // $cookies should be an array in one of two formats. - // - // Either: $cookies[ 'cookiename' ] = array ( - // '/path/'=>array( - // 'expires'=>time(), - // 'domain'=>'yourdomain.com', - // 'value'=>'cookievalue' - // ) - // ); - // - // Or, a more simplified format: - // $cookies[ 'cookiename' ] = 'value'; - // - // The former format will automatically check to make sure that the path, domain, - // and expiration values match the HTTP request, and will only send the cookie if - // they do match. The latter will force the cookie to be set for the HTTP request - // unconditionally. - // - function response_to_request_cookies($cookies,$urlinfo) { - - // check for simplified cookie format (name=value) - $cookiekeys = array_keys($cookies); - if (!count($cookiekeys)) return; - - $testkey = array_pop($cookiekeys); - if (!is_array($cookies[ $testkey ])) { - foreach ($cookies as $k=>$v) $this->request_cookies[$k] = $v; - return; - } - - // must not be simplified format, so parse as complex format: - foreach ($cookies as $name=>$paths) { - foreach ($paths as $path=>$values) { - // make sure the cookie isn't expired - if ( isset($values['expires']) && ($values['expires']request_cookies[$name] = $values['value']; - } - } - } - - // Execute the request for a particular URL, and transparently follow - // HTTP redirects if enabled. If $cookies is specified, it is assumed - // to be an array received from $this->response_cookies and will be - // processed to determine which cookies are valid for this host/URL. - function _execute_request($url,$cookies = false) { - // valid codes for which we transparently follow a redirect - $redirect_codes = array(301,302,303,307); - // valid methods for which we transparently follow a redirect - $redirect_methods = array('GET','HEAD'); - - $request_result = false; - - $this->followed_redirect = false; - $this->response_cookies = array(); - $this->cookie_headers = ''; - - $previous_redirects = array(); - do { - // send the request - $request_result = $this->_send_request($url,$cookies); - $lasturl = $url; - $url = false; - - // see if a redirect code was received - if ($this->follow_redirects && in_array($this->result_code,$redirect_codes)) { - - // only redirect on a code 303 or if the method was GET/HEAD - if ( ($this->result_code==303) || in_array($this->method,$redirect_methods) ) { - - // parse the information from the OLD URL so that we can handle - // relative links - $oldurlinfo = parse_url($lasturl); - - $url = $this->response_headers['Location']; - - // parse the information in the new URL, and fill in any blanks - // using values from the old URL - $urlinfo = parse_url($url); - foreach ($oldurlinfo as $k=>$v) { - if (!$urlinfo[$k]) $urlinfo[$k] = $v; - } - - // create an absolute path - if (substr($urlinfo['path'],0,1)!='/') { - $baseurl = $oldurlinfo['path']; - if (substr($baseurl,-1)!='/') $baseurl = $this->parent_path($url) . '/'; - $urlinfo['path'] = $baseurl . $urlinfo['path']; - } - - // rebuild the URL - $url = $this->rebuild_url($urlinfo); - - $this->method = "GET"; - $this->post_data = ""; - - $this->progress(HRP_INFO,'Redirected to '.$url); - } - } - - if ( $url && strlen($url) ) { - - if (isset($previous_redirects[$url])) { - $this->error = "Infinite redirection loop"; - $request_result = false; - break; - } - if ( is_numeric($this->follow_redirects) && (count($previous_redirects)>$this->follow_redirects) ) { - $this->error = "Exceeded redirection limit"; - $request_result = false; - break; - } - - $previous_redirects[$url] = true; - } - - } while ($url && strlen($url)); - - // clear headers that shouldn't persist across multiple requests - $per_request_headers = array('Host','Content-Length'); - foreach ($per_request_headers as $k=>$v) unset($this->headers[$v]); - - if (count($previous_redirects)>1) $this->followed_redirect = array_keys($previous_redirects); - - return $request_result; - } - - // private - sends an HTTP request to $url - function _send_request($url,$cookies = false) { - $this->progress(HRP_INFO,"Initiating {$this->method} request for $url"); - if ($this->caching) { - $cachetoken = md5($url.'|'.$this->post_data); - if ($this->_cache_fetch($cachetoken)) return true; - } - - $time_request_start = $this->getmicrotime(); - - $urldata = parse_url($url); - $this->urldata = &$urldata; - $http_host = $urldata['host'] . (isset($urldata['port']) ? ':'.$urldata['port'] : ''); - - if (!isset($urldata["port"]) || !$urldata["port"]) $urldata["port"] = ($urldata["scheme"]=="https") ? 443 : 80; - if (!isset($urldata["path"]) || !$urldata["path"]) $urldata["path"] = '/'; - - if (!empty($urldata['user'])) $this->auth_username = $urldata['user']; - if (!empty($urldata['pass'])) $this->auth_password = $urldata['pass']; - - //echo "Sending HTTP/{$this->version} {$this->method} request for ".$urldata["host"].":".$urldata["port"]." page ".$urldata["path"]."
    "; - - if ($this->version>"1.0") $this->headers["Host"] = $http_host; - if ($this->method=="POST") { - $this->headers["Content-Length"] = strlen($this->post_data); - if (!isset($this->headers["Content-Type"])) $this->headers["Content-Type"] = "application/x-www-form-urlencoded"; - } - - if ( !empty($this->auth_username) || !empty($this->auth_password) ) { - $this->headers['Authorization'] = 'Basic '.base64_encode($this->auth_username.':'.$this->auth_password); - } else { - unset($this->headers['Authorization']); - } - - if (is_array($cookies)) { - $this->response_to_request_cookies($cookies,$urldata); - } - - if (!empty($urldata["query"])) $urldata["path"] .= "?".$urldata["query"]; - $request = $this->method." ".$urldata["path"]." HTTP/".$this->version."\r\n"; - $request .= $this->build_headers(); - $request .= $this->post_data; - - $this->response = ""; - - // clear headers that shouldn't persist across multiple requests - // (we can do this here as we've already built the request, including headers, above) - $per_request_headers = array('Host','Content-Length'); - foreach ($per_request_headers as $k=>$v) unset($this->headers[$v]); - - // Native SSL support requires the OpenSSL extension, and was introduced in PHP 4.3.0 - $php_ssl_support = extension_loaded("openssl") && version_compare(phpversion(),"4.3.0")>=0; - - // if this is a plain HTTP request, or if it's an HTTPS request and OpenSSL support is available, - // natively perform the HTTP request - if ( ( ($urldata["scheme"]=="http") || ($php_ssl_support && ($urldata["scheme"]=="https")) ) && (!$this->force_curl) ) { - $curl_mode = false; - - $hostname = $this->connect_ip ? $this->connect_ip : $urldata['host']; - if ($urldata["scheme"]=="https") $hostname = 'ssl://'.$hostname; - - $time_connect_start = $this->getmicrotime(); - - $this->progress(HRP_INFO,'Opening socket connection to '.$hostname.' port '.$urldata['port']); - - $this->expected_bytes = -1; - $this->received_bytes = 0; - - $fp = @fsockopen ($hostname,$urldata["port"],$errno,$errstr,$this->connect_timeout); - $time_connected = $this->getmicrotime(); - $connect_time = $time_connected - $time_connect_start; - if ($fp) { - if ($this->stream_timeout) stream_set_timeout($fp,$this->stream_timeout); - $this->progress(HRP_INFO,"Connected; sending request"); - - $this->progress(HRP_DEBUG,$request); - fputs ($fp, $request); - $this->raw_request = $request; - - if ($this->stream_timeout) { - $meta = socket_get_status($fp); - if ($meta['timed_out']) { - $this->error = "Exceeded socket write timeout of ".$this->stream_timeout." seconds"; - $this->progress(HRP_ERROR,$this->error); - return false; - } - } - - $this->progress(HRP_INFO,"Request sent; awaiting reply"); - - $headers_received = false; - $data_length = false; - $chunked = false; - $iterations = 0; - while (!feof($fp)) { - if ($data_length>0) { - $line = fread($fp,$data_length); - $this->progress(HRP_DEBUG,"[DL] Got a line: [{$line}] " . gettype($line)); - - if ($line!==false) $data_length -= strlen($line); - } else { - $line = @fgets($fp,10240); - $this->progress(HRP_DEBUG,"[NDL] Got a line: [{$line}] " . gettype($line)); - - if ( ($chunked) && ($line!==false) ) { - $line = trim($line); - if (!strlen($line)) continue; - - list($data_length,) = explode(';',$line,2); - $data_length = (int) hexdec(trim($data_length)); - - if ($data_length==0) { - $this->progress(HRP_DEBUG,"Done"); - // end of chunked data - break; - } - $this->progress(HRP_DEBUG,"Chunk length $data_length (0x$line)"); - continue; - } - } - - if ($line===false) { - $meta = socket_get_status($fp); - if ($meta['timed_out']) { - if ($this->stream_timeout) { - $this->error = "Exceeded socket read timeout of ".$this->stream_timeout." seconds"; - } else { - $this->error = "Exceeded default socket read timeout"; - } - $this->progress(HRP_ERROR,$this->error); - return false; - } else { - $this->progress(HRP_ERROR,'No data but not timed out'); - } - continue; - } - - // check time limits if requested - if ($this->max_time>0) { - if ($this->getmicrotime() - $time_request_start > $this->max_time) { - $this->error = "Exceeded maximum transfer time of ".$this->max_time." seconds"; - $this->progress(HRP_ERROR,$this->error); - return false; - break; - } - } - - $this->response .= $line; - - $iterations++; - if ($headers_received) { - if ($time_connected>0) { - $time_firstdata = $this->getmicrotime(); - $process_time = $time_firstdata - $time_connected; - $time_connected = 0; - } - $this->received_bytes += strlen($line); - if ($iterations % 20 == 0) { - $this->update_transfer_counters(); - } - } - - - // some dumbass webservers don't respect Connection: close and just - // leave the connection open, so we have to be diligent about - // calculating the content length so we can disconnect at the end of - // the response - if ( (!$headers_received) && (trim($line)=="") ) { - $headers_received = true; - $this->progress(HRP_DEBUG,"Got headers: {$this->response}"); - - if (preg_match('/^Content-Length: ([0-9]+)/im',$this->response,$matches)) { - $data_length = (int) $matches[1]; - $this->progress(HRP_DEBUG,"Content length is $data_length"); - $this->expected_bytes = $data_length; - $this->update_transfer_counters(); - } else { - $this->progress(HRP_DEBUG,"No data length specified"); - } - if (preg_match("/^Transfer-Encoding: chunked/im",$this->response,$matches)) { - $chunked = true; - $this->progress(HRP_DEBUG,"Chunked transfer encoding requested"); - } else { - $this->progress(HRP_DEBUG,"CTE not requested"); - } - - if (preg_match_all("/^Set-Cookie: ((.*?)\=(.*?)(?:;\s*(.*))?)$/im",$this->response,$cookielist,PREG_SET_ORDER)) { - foreach ($cookielist as $k=>$cookie) $this->cookie_headers .= $cookie[0]."\n"; - - // get the path for which cookies will be valid if no path is specified - $cookiepath = preg_replace('/\/{2,}/','',$urldata['path']); - if (substr($cookiepath,-1)!='/') { - $cookiepath = explode('/',$cookiepath); - array_pop($cookiepath); - $cookiepath = implode('/',$cookiepath) . '/'; - } - // process each cookie - foreach ($cookielist as $k=>$cookiedata) { - list(,$rawcookie,$name,$value,$attributedata) = $cookiedata; - $attributedata = explode(';',trim($attributedata)); - $attributes = array(); - - $cookie = array( - 'value'=>$value, - 'raw'=>trim($rawcookie), - ); - foreach ($attributedata as $k=>$attribute) { - list($attrname,$attrvalue) = explode('=',trim($attribute)); - $cookie[$attrname] = $attrvalue; - } - - if (!isset($cookie['domain']) || !$cookie['domain']) $cookie['domain'] = $urldata['host']; - if (!isset($cookie['path']) || !$cookie['path']) $cookie['path'] = $cookiepath; - if (isset($cookie['expires']) && $cookie['expires']) $cookie['expires'] = strtotime($cookie['expires']); - - if (!$this->validate_response_cookie($cookie,$urldata['host'])) continue; - - // do not store expired cookies; if one exists, unset it - if ( isset($cookie['expires']) && ($cookie['expires']response_cookies[ $name ][ $cookie['path'] ]); - continue; - } - - $this->response_cookies[ $name ][ $cookie['path'] ] = $cookie; - } - } - } - - if ($this->result_close) { - if (preg_match_all("/HTTP\/([0-9\.]+) ([0-9]+) (.*?)[\r\n]/",$this->response,$matches)) { - $resultcodes = $matches[2]; - foreach ($resultcodes as $k=>$code) { - if ($code!=100) { - $this->progress(HRP_INFO,'HTTP result code received; closing connection'); - - $this->result_code = $code; - $this->result_text = $matches[3][$k]; - fclose($fp); - - return ($this->result_code==200); - } - } - } - } - } - if (feof($fp)) $this->progress(HRP_DEBUG,'EOF on socket'); - @fclose ($fp); - - $this->update_transfer_counters(); - - if (is_array($this->response_cookies)) { - // make sure paths are sorted in the order in which they should be applied - // when setting response cookies - foreach ($this->response_cookies as $name=>$paths) { - ksort($this->response_cookies[$name]); - } - } - $this->progress(HRP_INFO,'Request complete'); - } else { - $this->error = strtoupper($urldata["scheme"])." connection to ".$hostname." port ".$urldata["port"]." failed"; - $this->progress(HRP_ERROR,$this->error); - return false; - } - - // perform an HTTP/HTTPS request using CURL - } elseif ( !$this->disable_curl && ( ($urldata["scheme"]=="https") || ($this->force_curl) ) ) { - $this->progress(HRP_INFO,'Passing HTTP request for $url to CURL'); - $curl_mode = true; - if (!$this->_curl_request($url)) return false; - - // unknown protocol - } else { - $this->error = "Unsupported protocol: ".$urldata["scheme"]; - $this->progress(HRP_ERROR,$this->error); - return false; - } - - $this->raw_response = $this->response; - - $totallength = strlen($this->response); - - do { - $headerlength = strpos($this->response,"\r\n\r\n"); - - $response_headers = explode("\r\n",substr($this->response,0,$headerlength)); - $http_status = trim(array_shift($response_headers)); - foreach ($response_headers as $line) { - list($k,$v) = explode(":",$line,2); - $this->response_headers[trim($k)] = trim($v); - } - $this->response = substr($this->response,$headerlength+4); - - /* // Handled in-transfer now - if (($this->response_headers['Transfer-Encoding']=="chunked") && (!$curl_mode)) { - $this->remove_chunkiness(); - } - */ - - if (!preg_match("/^HTTP\/([0-9\.]+) ([0-9]+) (.*?)$/",$http_status,$matches)) { - $matches = array("",$this->version,0,"HTTP request error"); - } - list (,$response_version,$this->result_code,$this->result_text) = $matches; - - // skip HTTP result code 100 (Continue) responses - } while (($this->result_code==100) && ($headerlength)); - - // record some statistics, roughly compatible with CURL's curl_getinfo() - if (!$curl_mode) { - $total_time = $this->getmicrotime() - $time_request_start; - $transfer_time = $total_time - $connect_time; - $this->stats = array( - "total_time"=>$total_time, - "connect_time"=>$connect_time, // time between connection request and connection established - "process_time"=>$process_time, // time between HTTP request and first data (non-headers) received - "url"=>$url, - "content_type"=>$this->response_headers["Content-Type"], - "http_code"=>$this->result_code, - "header_size"=>$headerlength, - "request_size"=>$totallength, - "filetime"=>strtotime($this->response_headers["Date"]), - "pretransfer_time"=>$connect_time, - "size_download"=>$totallength, - "speed_download"=>$transfer_time > 0 ? round($totallength / $transfer_time) : 0, - "download_content_length"=>$totallength, - "upload_content_length"=>0, - "starttransfer_time"=>$connect_time, - ); - } - - - $ok = ($this->result_code==200); - if ($ok) { - // if a page preprocessor is defined, call it to process the page contents - if (is_callable($this->page_preprocessor)) $this->response = call_user_func($this->page_preprocessor,$this,$this->response); - - // if caching is enabled, save the page - if ($this->caching) $this->_cache_store($cachetoken,$url); - } - - return $ok; - } - - function validate_response_cookie($cookie,$actual_hostname) { - // make sure the cookie can't be set for a TLD, eg: '.com' - $cookiehost = $cookie['domain']; - $p = strrpos($cookiehost,'.'); - if ($p===false) return false; - - $tld = strtolower(substr($cookiehost,$p+1)); - $special_domains = array("com", "edu", "net", "org", "gov", "mil", "int"); - $periods_required = in_array($tld,$special_domains) ? 1 : 2; - - $periods = substr_count($cookiehost,'.'); - if ($periods<$periods_required) return false; - - if (substr($actual_hostname,0,1)!='.') $actual_hostname = '.'.$actual_hostname; - if (substr($cookiehost,0,1)!='.') $cookiehost = '.'.$cookiehost; - $domain_match = ( - ($actual_hostname==$cookiehost) || - (substr($actual_hostname,-strlen($cookiehost))==$cookiehost) - ); - - return $domain_match; - - } - - function build_headers() { - $headers = ""; - foreach ($this->headers as $name=>$value) { - $value = trim($value); - if (empty($value)) continue; - $headers .= "{$name}: {$value}\r\n"; - } - - if (isset($this->request_cookies) && is_array($this->request_cookies)) { - $cookielist = array(); - foreach ($this->request_cookies as $name=>$value) { - $cookielist[] = "{$name}={$value}"; - } - if (count($cookielist)) $headers .= "Cookie: ".implode('; ',$cookielist)."\r\n"; - } - - - $headers .= "\r\n"; - - return $headers; - } - - // opposite of parse_url() - function rebuild_url($urlinfo) { - $url = $urlinfo['scheme'].'://'; - - if ($urlinfo['user'] || $urlinfo['pass']) { - $url .= $urlinfo['user']; - if ($urlinfo['pass']) { - if ($urlinfo['user']) $url .= ':'; - $url .= $urlinfo['pass']; - } - $url .= '@'; - } - - $url .= $urlinfo['host']; - if ($urlinfo['port']) $url .= ':'.$urlinfo['port']; - - $url .= $urlinfo['path']; - - if ($urlinfo['query']) $url .= '?'.$urlinfo['query']; - if ($urlinfo['fragment']) $url .= '#'.$urlinfo['fragment']; - - return $url; - } - - function _replace_hostname(&$url,$new_hostname) { - $parts = parse_url($url); - $old_hostname = $parts['host']; - - $parts['host'] = $new_hostname; - - $url = $this->rebuild_url($parts); - - return $old_hostname; - } - - function _curl_request($url) { - $this->error = false; - - // if a direct connection IP address was specified, replace the hostname - // in the URL with the IP address, and set the Host: header to the - // original hostname - if ($this->connect_ip) { - $old_hostname = $this->_replace_hostname($url,$this->connect_ip); - $this->headers["Host"] = $old_hostname; - } - - - unset($this->headers["Content-Length"]); - $headers = explode("\n",$this->build_headers()); - - $ch = curl_init(); - curl_setopt($ch,CURLOPT_URL, $url); - curl_setopt($ch,CURLOPT_USERAGENT, $this->headers["User-Agent"]); - curl_setopt($ch,CURLOPT_HEADER, 1); - curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); -// curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1); // native method doesn't support this yet, so it's disabled for consistency - curl_setopt($ch,CURLOPT_TIMEOUT, 10); - if ($this->curl_proxy) { - curl_setopt($ch,CURLOPT_PROXY,$this->curl_proxy); - } - curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); - - if ($this->method=="POST") { - curl_setopt($ch,CURLOPT_POST,1); - curl_setopt($ch,CURLOPT_POSTFIELDS,$this->post_data); - } - if ($this->insecure_ssl) { - curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); - } - if ($this->ignore_ssl_hostname) { - curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,1); - } - - $this->response = curl_exec ($ch); - if (curl_errno($ch)!=0) { - $this->error = "CURL error #".curl_errno($ch).": ".curl_error($ch); - } - - $this->stats = curl_getinfo($ch); - curl_close($ch); - - return ($this->error === false); - } - - function progress($level,$msg) { - if (is_callable($this->progress_callback)) call_user_func($this->progress_callback,$level,$msg); - } - - // Gets any available HTTPRetriever error message (including both internal - // errors and HTTP errors) - function get_error() { - return $this->error ? $this->error : 'HTTP ' . $this->result_code.': '.$this->result_text; - } - - function get_content_type() { - if (!$ctype = $this->response_headers['Content-Type']) { - $ctype = $this->response_headers['Content-type']; - } - list($ctype,) = explode(';',$ctype); - - return strtolower($ctype); - } - - function update_transfer_counters() { - if (is_callable($this->transfer_callback)) call_user_func($this->transfer_callback,$this->received_bytes,$this->expected_bytes); - } - - function set_transfer_display($enabled = true) { - if ($enabled) { - $this->transfer_callback = array(&$this,'default_transfer_callback'); - } else { - unset($this->transfer_callback); - } - } - - function set_progress_display($enabled = true) { - if ($enabled) { - $this->progress_callback = array(&$this,'default_progress_callback'); - } else { - unset($this->progress_callback); - } - } - - function default_progress_callback($severity,$message) { - $severities = array( - HRP_DEBUG=>'debug', - HRP_INFO=>'info', - HRP_ERROR=>'error', - ); - - echo date('Y-m-d H:i:sa').' ['.$severities[$severity].'] '.$message."\n"; - flush(); - } - - function default_transfer_callback($transferred,$expected) { - $msg = "Transferred " . round($transferred/1024,1); - if ($expected>=0) $msg .= "/" . round($expected/1024,1); - $msg .= "KB"; - if ($expected>0) $msg .= " (".round($transferred*100/$expected,1)."%)"; - echo date('Y-m-d H:i:sa')." $msg\n"; - flush(); - } - - function getmicrotime() { - list($usec, $sec) = explode(" ",microtime()); - return ((float)$usec + (float)$sec); - } -} -?> diff --git a/modules/member/openid_lib/libcurlemu.inc.php b/modules/member/openid_lib/libcurlemu.inc.php deleted file mode 100755 index 4488e962b..000000000 --- a/modules/member/openid_lib/libcurlemu.inc.php +++ /dev/null @@ -1,111 +0,0 @@ - diff --git a/modules/member/openid_lib/libcurlexternal.inc.php b/modules/member/openid_lib/libcurlexternal.inc.php deleted file mode 100755 index 96ad7caee..000000000 --- a/modules/member/openid_lib/libcurlexternal.inc.php +++ /dev/null @@ -1,637 +0,0 @@ -$v) { - if ( (substr($k,0,8)=="CURLOPT_") && ($v==$curlopt)) return $k; - } - return false; -} - -// Initialize a CURL emulation session -function curl_init($url=false) { - $i = $GLOBALS["_CURLEXT_OPT"]["index"]++; - $GLOBALS["_CURLEXT_OPT"][$i] = array("url"=>$url); - - return $i; -} - -// Set an option for a CURL emulation transfer -function curl_setopt($ch,$option,$value) { - - $opt = &$GLOBALS["_CURLEXT_OPT"][$ch]; - if (!$opt["args"]) $opt["args"] = array(); - $args = &$opt["args"]; - if (!$opt["settings"]) $opt["settings"] = array(); - $settings = &$opt["settings"]; - - switch($option) { - case CURLOPT_URL: - $opt["url"] = $value; - break; - case CURLOPT_VERBOSE: - $opt["verbose"] = $value>0; - break; - case CURLOPT_USERPWD: - if ($value==="") $value = false; - $settings["user"] = $value; - break; - case CURLOPT_PROXYUSERPWD: - if ($value==="") $value = false; - $settings["proxy-user"] = $value; - break; - case CURLOPT_COOKIE: - if ($value==="") $value = false; - if ( is_bool($value) || (strpos($value,"=")!==false) ) $settings["cookie"] = $value; - break; - case CURLOPT_COOKIEFILE: - if ($value==="") $value = false; - $settings["cookie"] = $value; - break; - case CURLOPT_COOKIEJAR: - if ($value==="") $value = false; - $settings["cookie-jar"] = $value; - break; - case CURLOPT_CUSTOMREQUEST: - if ($value==="") $value = false; - $settings["request"] = $value; - break; - case CURLOPT_PROXY: - if ($value==="") $value = false; - $settings["proxy"] = $value; - break; - case CURLOPT_INTERFACE: - if ($value==="") $value = false; - $settings["interface"] = $value; - break; - case CURLOPT_KRB4LEVEL: - if ($value==="") $value = false; - $settings["krb4"] = $value; - break; - case CURLOPT_SSLCERT: - $pass = ""; - if (is_string($settings["cert"])) { - list(,$pass) = explode(":",$settings["cert"]); - if (strlen($pass)) $pass = ":$pass"; - } - $settings["cert"] = $value.$pass; - break; - case CURLOPT_SSLCERTPASSWD: - $filename = ""; - if (is_string($settings["cert"])) { - list($filename,) = explode(":",$settings["cert"]); - } - $settings["cert"] = $filename.":".$value; - break; - case CURLOPT_RANGE: - if ($value==="") $value = false; - $settings["range"] = $value; - break; - case CURLOPT_REFERER: - if ($value==="") $value = false; - $settings["referer"] = $value; - break; - case CURLOPT_NOBODY: - $settings["head"] = $value>0; - break; - case CURLOPT_FAILONERROR: - $opt["fail_on_error"] = $value>0; - break; - case CURLOPT_USERAGENT: - $settings["user-agent"] = $value; - break; - case CURLOPT_HEADER: - $settings["include"] = $value>0; - break; - case CURLOPT_RETURNTRANSFER: - $opt["return_transfer"] = $value>0; - break; - case CURLOPT_TIMEOUT: - $settings["max-time"] = (int) $value; - break; - case CURLOPT_HTTPHEADER: - reset($value); - foreach ($value as $k=>$header) $args[] = "header=".$header; - break; - case CURLOPT_POST: - $settings["data"]["enabled"] = $value>0; - break; - case CURLOPT_POSTFIELDS: - if ($value==="") $value = false; - $settings["data"]["value"] = $value; - break; - case CURLOPT_SSL_VERIFYPEER: - $settings["insecure"] = ($value==0); - break; - case CURLOPT_SSL_VERIFYHOST: - // not supported by the commandline client - break; - case CURLOPT_FOLLOWLOCATION: - $settings["location"] = $value>0; - break; - case CURLOPT_PUT: - $settings["upload-file"]["enabled"] = $value>0; - break; - case CURLOPT_INFILE: - if ($value==="") $value = false; - - if (is_resource($value)) { - - // Ugh, this is a terrible hack. The CURL extension accepts a file handle, but - // the CURL binary obviously wants a filename. Since you can't derive a filename - // from a file handle, we have to make a copy of the file from the file handle, - // then pass the temporary filename to the CURL binary. - - $tmpfilename = tempnam("/tmp","cif"); - $fp = @fopen($tmpfilename,"w"); - if (!$fp) { - trigger_error("CURL emulation library could not create a temporary file for CURLOPT_INFILE; upload aborted",E_USER_WARNING); - } else { - while (!feof($value)) { - $contents = fread($value,8192); - fwrite($fp,$contents); - } - fclose($fp); - // if a temporary file was previously created, unlink it - if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"]))FileHandler::removeFile($settings["upload-file"]["value"]); - - // set the new upload-file filename - $settings["upload-file"]["value"] = $tmpfilename; - } - } else { - trigger_error("CURLOPT_INFILE must specify a valid file resource",E_USER_WARNING); - } - - break; - case CURLOPT_MUTE: - // we're already mute, no? - break; - case CURLOPT_LOW_SPEED_LIMIT: - $settings["speed-limit"] = (int) $value; - break; - case CURLOPT_LOW_SPEED_TIME: - $settings["speed-time"] = (int) $value; - break; - case CURLOPT_RESUME_FROM: - $settings["continue-at"] = (int) $value; - break; - case CURLOPT_CAINFO: - if ($value==="") $value = false; - $settings["cacert"] = $value; - break; - case CURLOPT_SSLVERSION: - $value = (int) $value; - switch($value) { - case 2: - case 3: - unset($settings["sslv2"]); - unset($settings["sslv3"]); - $settings["sslv".$value] = true; - break; - } - break; - case CURLOPT_TIMECONDITION: - // untested - I'm lazy :) - if (!isset($settings["time-cond"]["enabled"])) $settings["time-cond"]["enabled"] = false; - if (!$settings["time-cond"]["value"]) $settings["time-cond"]["value"] = 1; - - $settings["time-cond"]["value"] = abs($settings["time-cond"]["value"]); - if ($value==TIMECOND_ISUNMODSINCE) { - $settings["time-cond"]["value"] *= -1; - } - - break; - case CURLOPT_TIMEVALUE: - // untested - I'm lazy :) - if ($settings["time-cond"]["value"]) { - $sign = $settings["time-cond"]["value"] / abs($settings["time-cond"]["value"]); - } else { - $sign = 1; - } - $settings["time-cond"]["value"] = (int) $value * $sign; - break; - case CURLOPT_FILE: - if (is_resource($value)) { - $opt["output_handle"] = $value; - } else { - trigger_error("CURLOPT_FILE must specify a valid file resource",E_USER_WARNING); - } - break; - case CURLOPT_WRITEHEADER: - if (is_resource($value)) { - $opt["header_handle"] = $value; - } else { - trigger_error("CURLOPT_WRITEHEADER must specify a valid file resource",E_USER_WARNING); - } - break; - case CURLOPT_STDERR: - // not implemented for now - not really relevant - break; - // FTP stuff not implemented - case CURLOPT_QUOTE: - case CURLOPT_POSTQUOTE: - case CURLOPT_UPLOAD: - case CURLOPT_FTPLISTONLY: - case CURLOPT_FTPAPPEND: - case CURLOPT_FTPPORT: - // Other stuff not implemented - case CURLOPT_NETRC: - default: - trigger_error("CURL emulation does not implement CURL option "._curlopt_name($option),E_USER_WARNING); - break; - } -} - -// Perform a CURL emulation session -function curl_exec($ch) { - $opt = &$GLOBALS["_CURLEXT_OPT"][$ch]; - $url = $opt["url"]; - $verbose = $opt["verbose"]; - - // ask commandline CURL to return its statistics at the end of its output - $opt["settings"]["write-out"] = "%{http_code}|%{time_total}|%{time_namelookup}|%{time_connect}|%{time_pretransfer}|%{time_starttransfer}|%{size_download}|%{size_upload}|%{size_header}|%{size_request}|%{speed_download}|%{speed_upload}|||||||%{content_type}|%{url_effective}"; - $writeout_order = array( - CURLINFO_HTTP_CODE, - CURLINFO_TOTAL_TIME, - CURLINFO_NAMELOOKUP_TIME, - CURLINFO_CONNECT_TIME, - CURLINFO_PRETRANSFER_TIME, - CURLINFO_STARTTRANSFER_TIME, - CURLINFO_SIZE_DOWNLOAD, - CURLINFO_SIZE_UPLOAD, - CURLINFO_HEADER_SIZE, - CURLINFO_REQUEST_SIZE, - CURLINFO_SPEED_DOWNLOAD, - CURLINFO_SPEED_UPLOAD, - - // the following 5 items are not provided by commandline CURL, and thus are left empty - CURLINFO_FILETIME, - CURLINFO_REDIRECT_TIME, - CURLINFO_SSL_VERIFYRESULT, - CURLINFO_CONTENT_LENGTH_DOWNLOAD, - CURLINFO_CONTENT_LENGTH_UPLOAD, - CURLINFO_REDIRECT_COUNT, - - CURLINFO_CONTENT_TYPE, - CURLINFO_EFFECTIVE_URL, - ); - - // if the CURLOPT_NOBODY option was specified (to remove the body from the output), - // but an output file handle was set, we need to tell CURL to return the body so - // that we can write it to the output handle and strip it from the output - if ($opt["settings"]["head"] && $opt["output_handle"]) { - unset($opt["settings"]["head"]); - $strip_body = true; - } - // if the CURLOPT_HEADER option was NOT specified, but a header file handle was - // specified, we again need to tell CURL to return the headers so we can write - // them, then strip them from the output - if (!isset($opt["settings"]["include"]) && isset($opt["header_handle"])) { - $opt["settings"]["include"] = true; - $strip_headers = true; - } - - // build the CURL argument list - $arguments = ""; - foreach ($opt["args"] as $k=>$arg) { - list($argname,$argval) = explode('=',$arg,2); - $arguments .= "--$argname ".escapeshellarg($argval)." "; - } - foreach ($opt["settings"] as $argname=>$argval) { - if (is_array($argval)) { - if (isset($argval["enabled"]) && !$argval["enabled"]) continue; - $argval = $argval["value"]; - } - if ($argval===false) continue; - if (is_bool($argval)) $argval = ""; - $arguments .= "--$argname ".escapeshellarg($argval)." "; - } - - // build the CURL commandline and execute it - $cmd = CURL_PATH." ".$arguments." ".escapeshellarg($url); - - if ($verbose) echo "libcurlemu: Executing: $cmd\n"; - exec($cmd,$output,$ret); - - if ($verbose) { - echo "libcurlemu: Result: "; - var_dump($output); - echo "libcurlemu: Exit code: $ret\n"; - } - - // check for errors - $opt["errno"] = $ret; - if ($ret) $opt["error"] = "CURL error #$ret"; - - // die if CURLOPT_FAILONERROR is set and the HTTP result code is greater than 300 - if ($opt["fail_on_error"]) { - if (preg_match("/^HTTP\/1.[0-9]+ ([0-9]{3}) /",$output[0],$matches)) { - $resultcode = (int) $matches[1]; - if ($resultcode>300) die; - } else { - die; // couldn't get result code! - } - } - - // pull the statistics out from the output - $stats = explode('|',array_pop($output)); - foreach ($writeout_order as $k=>$item) { - $opt["stats"][$item] = $stats[$k]; - } - - // build the response string - $output = implode("\r\n",$output); - - - // find the header end position if needed - if ($strip_headers || $strip_body || isset($opt["header_handle"])) { - $headerpos = strpos($output,"\r\n\r\n"); - } - - // if a file handle was provided for header output, extract the headers - // and write them to the handle - if (isset($opt["header_handle"])) { - $headers = substr($output,0,$headerpos); - fwrite($opt["header_handle"],$headers); - } - - // if the caller did not request headers in the output, strip them - if ($strip_headers) { - $output = substr($output,$headerpos+4); - } - - // if the caller did not request the response body in the output, strip it - if ($strip_body) { - if ($strip_headers) { - $body = $output; - $output = ""; - } else { - $body = substr($output,$headerpos+4); - $output = substr($output,0,$headerpos); - } - } - - // if a file handle was provided for output, write the output to it - if (isset($opt["output_handle"])) { - fwrite($opt["output_handle"],$output); - - // if the caller requested that the response be returned, return it - } elseif ($opt["return_transfer"]) { - return $output; - - // otherwise, just echo the output to stdout - } else { - echo $output; - } - return true; -} - -function curl_close($ch) { - $opt = &$GLOBALS["_CURLEXT_OPT"][$ch]; - - if ($opt["settings"]) { - $settings = &$opt["settings"]; - // if the user used CURLOPT_INFILE to specify a file to upload, remove the - // temporary file created for the CURL binary - if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"]))FileHandler::removeFile($settings["upload-file"]["value"]); - } - - unset($GLOBALS["_CURLEXT_OPT"][$ch]); -} - -function curl_errno($ch) { - return (int) $GLOBALS["_CURLEXT_OPT"][$ch]["errno"]; -} - -function curl_error($ch) { - return $GLOBALS["_CURLEXT_OPT"][$ch]["error"]; -} - -function curl_getinfo($ch,$opt=NULL) { - if ($opt) { - return $GLOBALS["_CURLEXT_OPT"][$ch]["stats"][$opt]; - } else { - $curlinfo_tags = array( - "url"=>CURLINFO_EFFECTIVE_URL, - "content_type"=>CURLINFO_CONTENT_TYPE, - "http_code"=>CURLINFO_HTTP_CODE, - "header_size"=>CURLINFO_HEADER_SIZE, - "request_size"=>CURLINFO_REQUEST_SIZE, - "filetime"=>CURLINFO_FILETIME, - "ssl_verify_result"=>CURLINFO_SSL_VERIFYRESULT, - "redirect_count"=>CURLINFO_REDIRECT_COUNT, - "total_time"=>CURLINFO_TOTAL_TIME, - "namelookup_time"=>CURLINFO_NAMELOOKUP_TIME, - "connect_time"=>CURLINFO_CONNECT_TIME, - "pretransfer_time"=>CURLINFO_PRETRANSFER_TIME, - "size_upload"=>CURLINFO_SIZE_UPLOAD, - "size_download"=>CURLINFO_SIZE_DOWNLOAD, - "speed_download"=>CURLINFO_SPEED_DOWNLOAD, - "speed_upload"=>CURLINFO_SPEED_UPLOAD, - "download_content_length"=>CURLINFO_CONTENT_LENGTH_DOWNLOAD, - "upload_content_length"=>CURLINFO_CONTENT_LENGTH_UPLOAD, - "starttransfer_time"=>CURLINFO_STARTTRANSFER_TIME, - "redirect_time"=>CURLINFO_REDIRECT_TIME - ); - $res = array(); - foreach ($curlinfo_tags as $tag=>$opt) { - $res[$tag] = $GLOBALS["_CURLEXT_OPT"][$ch]["stats"][$opt]; - } - return $res; - } -} - -function curl_version() { - return "libcurlemu/".CURLEXT_VERSION."-ext"; -} - -} -?> diff --git a/modules/member/openid_lib/libcurlnative.inc.php b/modules/member/openid_lib/libcurlnative.inc.php deleted file mode 100755 index 445ab3faf..000000000 --- a/modules/member/openid_lib/libcurlnative.inc.php +++ /dev/null @@ -1,453 +0,0 @@ -$v) { - if ( (substr($k,0,8)=="CURLOPT_") && ($v==$curlopt)) return $k; - } - return false; -} - -// Initialize a CURL emulation session -function curl_init() { - $i = $GLOBALS["_CURLNAT_OPT"]["index"]++; - $GLOBALS["_CURLNAT_OPT"][$i] = array(); - $GLOBALS["_CURLNAT_OPT"][$i]["http"] = &new HTTPRetriever(); - $GLOBALS["_CURLNAT_OPT"][$i]["include_body"] = true; - return $i; -} - -// Set an option for a CURL emulation transfer -function curl_setopt($ch,$option,$value) { - - $opt = &$GLOBALS["_CURLNAT_OPT"][$ch]; - if (!$opt["args"]) $opt["args"] = array(); - $args = &$opt["args"]; - if (!$opt["settings"]) $opt["settings"] = array(); - $settings = &$opt["settings"]; - $http = &$opt["http"]; - - switch($option) { - case CURLOPT_URL: - $opt["url"] = $value; - break; - case CURLOPT_CUSTOMREQUEST: - $opt["method"] = $value; - break; - case CURLOPT_REFERER: - $http->headers["Referer"] = $value; - break; - case CURLOPT_NOBODY: - $opt["include_body"] = $value==0; - break; - case CURLOPT_FAILONERROR: - $opt["fail_on_error"] = $value>0; - break; - case CURLOPT_USERAGENT: - $http->headers["User-Agent"] = $value; - break; - case CURLOPT_HEADER: - $opt["include_headers"] = $value>0; - break; - case CURLOPT_RETURNTRANSFER: - $opt["return_transfer"] = $value>0; - break; - case CURLOPT_TIMEOUT: - $opt["max-time"] = (int) $value; - break; - case CURLOPT_HTTPHEADER: - reset($value); - foreach ($value as $k=>$header) { - list($headername,$headervalue) = explode(":",$header); - $http->headers[$headername] = ltrim($headervalue); - } - break; - case CURLOPT_POST: - $opt["post"] = $value>0; - break; - case CURLOPT_POSTFIELDS: - $opt["postdata"] = $value; - break; - case CURLOPT_MUTE: - // we're already mute, no? - break; - case CURLOPT_FILE: - if (is_resource($value)) { - $opt["output_handle"] = $value; - } else { - trigger_error("CURLOPT_FILE must specify a valid file resource",E_USER_WARNING); - } - break; - case CURLOPT_WRITEHEADER: - if (is_resource($value)) { - $opt["header_handle"] = $value; - } else { - trigger_error("CURLOPT_WRITEHEADER must specify a valid file resource",E_USER_WARNING); - } - break; - case CURLOPT_STDERR: - // not implemented for now - not really relevant - break; - - case CURLOPT_SSL_VERIFYPEER: - case CURLOPT_SSL_VERIFYHOST: - // these are automatically disabled using ssl:// anyway - break; - - case CURLOPT_USERPWD: - list($curl_user,$curl_pass) = explode(':',$value,2); - $http->auth_username = $curl_user; - $http->auth_password = $curl_pass; - break; - - // Important stuff not implemented (as it's not yet supported by HTTPRetriever) - case CURLOPT_PUT: - case CURLOPT_INFILE: - case CURLOPT_FOLLOWLOCATION: - case CURLOPT_PROXYUSERPWD: - case CURLOPT_COOKIE: - case CURLOPT_COOKIEFILE: - case CURLOPT_PROXY: - case CURLOPT_RANGE: - case CURLOPT_RESUME_FROM: - - // Things that cannot (reasonably) be implemented here - case CURLOPT_LOW_SPEED_LIMIT: - case CURLOPT_LOW_SPEED_TIME: - case CURLOPT_KRB4LEVEL: - case CURLOPT_SSLCERT: - case CURLOPT_SSLCERTPASSWD: - case CURLOPT_SSLVERSION: - case CURLOPT_INTERFACE: - case CURLOPT_CAINFO: - case CURLOPT_TIMECONDITION: - case CURLOPT_TIMEVALUE: - - // FTP stuff not implemented - case CURLOPT_QUOTE: - case CURLOPT_POSTQUOTE: - case CURLOPT_UPLOAD: - case CURLOPT_FTPLISTONLY: - case CURLOPT_FTPAPPEND: - case CURLOPT_FTPPORT: - - // Other stuff not implemented - case CURLOPT_VERBOSE: - case CURLOPT_NETRC: - default: - //trigger_error("CURL emulation does not implement CURL option "._curlopt_name($option),E_USER_WARNING); - break; - } -} - -// Perform a CURL emulation session -function curl_exec($ch) { - $opt = &$GLOBALS["_CURLNAT_OPT"][$ch]; - $url = $opt["url"]; - - $http = &$opt["http"]; - $http->disable_curl = true; // avoid problems with recursion, since we *ARE* CURL - - // set time limits if requested - if ($opt["max-time"]) { - $http->connect_timeout = $opt["max-time"]; - $http->max_time = $opt["max-time"]; - } - - if ($opt["post"]) { - $res = $http->post($url,$opt["postdata"]); - } elseif ($opt["method"]) { - $res = $http->custom($opt["method"],$url,$opt["postdata"]); - } else { - $res = $http->get($url); - } - - // check for errors - $opt["errno"] = (!$res && $http->error) ? 1 : 0; - if ($opt["errno"]) $opt["error"] = $http->error; - - // die if CURLOPT_FAILONERROR is set and the HTTP result code is greater than 300 - if ($opt["fail_on_error"]) { - if ($http->result_code>300) die; - } - - $opt["stats"] = $http->stats; - - - $headers = ""; - foreach ($http->response_headers as $k=>$v) { - $headers .= "$k: $v\r\n"; - } - - // if a file handle was provided for header output, extract the headers - // and write them to the handle - if (isset($opt["header_handle"])) { - fwrite($opt["header_handle"],$headers); - } - - $output = ($opt["include_headers"] ? $headers."\r\n" : "") . ($opt["include_body"] ? $http->response : ""); - - // if a file handle was provided for output, write the output to it - if (isset($opt["output_handle"])) { - fwrite($opt["output_handle"],$output); - - // if the caller requested that the response be returned, return it - } elseif ($opt["return_transfer"]) { - return $output; - - // otherwise, just echo the output to stdout - } else { - echo $output; - } - return true; -} - -function curl_close($ch) { - $opt = &$GLOBALS["_CURLNAT_OPT"][$ch]; - - if ($opt["settings"]) { - $settings = &$opt["settings"]; - // if the user used CURLOPT_INFILE to specify a file to upload, remove the - // temporary file created for the CURL binary - if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"]))FileHandler::removeFile($settings["upload-file"]["value"]); - } - - unset($GLOBALS["_CURLNAT_OPT"][$ch]); -} - -function curl_errno($ch) { - return (int) $GLOBALS["_CURLNAT_OPT"][$ch]["errno"]; -} - -function curl_error($ch) { - return $GLOBALS["_CURLNAT_OPT"][$ch]["error"]; -} - -function curl_getinfo($ch,$opt=NULL) { - if ($opt) { - $curlinfo_tags = array( - CURLINFO_EFFECTIVE_URL=>"url", - CURLINFO_CONTENT_TYPE=>"content_type", - CURLINFO_HTTP_CODE=>"http_code", - CURLINFO_HEADER_SIZE=>"header_size", - CURLINFO_REQUEST_SIZE=>"request_size", - CURLINFO_FILETIME=>"filetime", - CURLINFO_SSL_VERIFYRESULT=>"ssl_verify_result", - CURLINFO_REDIRECT_COUNT=>"redirect_count", - CURLINFO_TOTAL_TIME=>"total_time", - CURLINFO_NAMELOOKUP_TIME=>"namelookup_time", - CURLINFO_CONNECT_TIME=>"connect_time", - CURLINFO_PRETRANSFER_TIME=>"pretransfer_time", - CURLINFO_SIZE_UPLOAD=>"size_upload", - CURLINFO_SIZE_DOWNLOAD=>"size_download", - CURLINFO_SPEED_DOWNLOAD=>"speed_download", - CURLINFO_SPEED_UPLOAD=>"speed_upload", - CURLINFO_CONTENT_LENGTH_DOWNLOAD=>"download_content_length", - CURLINFO_CONTENT_LENGTH_UPLOAD=>"upload_content_length", - CURLINFO_STARTTRANSFER_TIME=>"starttransfer_time", - CURLINFO_REDIRECT_TIME=>"redirect_time" - ); - - $key = $curlinfo_tags[$opt]; - return $GLOBALS["_CURLNAT_OPT"][$ch]["stats"][$key]; - } else { - return $GLOBALS["_CURLNAT_OPT"][$ch]["stats"]; - } -} - -function curl_version() { - return "libcurlemu/".CURLNAT_VERSION."-nat"; -} - -} -?> diff --git a/modules/member/php-openid-1.2.3/Auth/OpenID/SessionStore.php b/modules/member/php-openid-1.2.3/Auth/OpenID/SessionStore.php new file mode 100644 index 000000000..78cf5ddaa --- /dev/null +++ b/modules/member/php-openid-1.2.3/Auth/OpenID/SessionStore.php @@ -0,0 +1,131 @@ +max_nonce_age = 6 * 60 * 60; + } + + function destory() + { + } + + function createAuthKey() + { + $auth_key = Auth_OpenID_CryptUtil::randomString($this->AUTH_KEY_LEN); + $_SESSION["sessionStore"]["authkey"] = $auth_key; + return $auth_key; + } + + function _readAuthKey() + { + return $_SESSION["sessionStore"]["authkey"]; + } + + function getAuthKey() + { + $auth_key = $this->_readAuthKey(); + if ($auth_key === null) { + $auth_key = $this->createAuthKey(); + + if (strlen($auth_key) != $this->AUTH_KEY_LEN) { + $fmt = 'Got an invalid auth key from %s. Expected '. + '%d-byte string. Got: %s'; + $msg = sprintf($fmt, $this->auth_key_name, $this->AUTH_KEY_LEN, + $auth_key); + trigger_error($msg, E_USER_WARNING); + return null; + } + } + return $auth_key; + } + + function storeNonce($nonce) + { + $_SESSION["sessionStore"]["nonce"][$nonce] = time(); + } + + function useNonce($nonce) + { + $timestamp = $_SESSION["sessionStore"]["nonce"][$nonce]; + if($timestamp) + { + $nonce_age = time() - $timestamp; + + if ($nonce_age > $this->max_nonce_age) { + $present = 0; + } else { + $present = 1; + } + + $this->_remove_nonce($nonce); + } + else + { + $present = 0; + } + + return $present; + } + + function _remove_nonce($nonce) + { + if($_SESSION["sessionStore"]["nonce"][$nonce]) + { + unset($_SESSION["sessionStore"]["nonce"][$nonce]); + } + } + + function storeAssociation($server_url, $association) + { + $_SESSION["sessionStore"]["association"][$server_url][$association->handle] = $association->serialize(); + } + + function getAssociation($server_url, $handle = null) + { + $assoc = null; + if ($handle != null) { + $assoc = $_SESSION["sessionStore"]["association"][$server_url][$handle]; + } + else if($_SESSION["sessionStore"]["association"][$server_url]){ + foreach($_SESSION["sessionStore"]["association"][$server_url] as $handle => $asso) + { + $assoc = $asso; + break; + } + } + if($assoc) + { + $assoc = Auth_OpenID_Association::deserialize('Auth_OpenID_Association', $assoc); + } + return $assoc; + } + + function removeAssociation($server_url, $handle) + { + if($handle == null) return false; + if($_SESSION["sessionStore"]["association"][$server_url][$handle]) + { + unset($_SESSION["sessionStore"]["association"][$server_url][$handle]); + return true; + } + return false; + } + + function reset() + { + unset($_SESSION["sessionStore"]); + $_SESSION["sessionStore"] = array(); + } +} + +?> diff --git a/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php b/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php new file mode 100644 index 000000000..7044b5642 --- /dev/null +++ b/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php @@ -0,0 +1,173 @@ +max_nonce_age = 6 * 60 * 60; + } + + function destory() + { + } + + function createAuthKey() + { + $auth_key = Auth_OpenID_CryptUtil::randomString($this->AUTH_KEY_LEN); + $oModuleModel = &getModel('module'); + $memberConfig = $oModuleModel->getModuleConfig('member'); + $memberConfig->openid_authkey = $auth_key; + + $oModuleController = &getController('module'); + $oModuleController->inesrtModuleConfig("module", $memberConfig); + return $auth_key; + } + + function _readAuthKey() + { + $oModuleModel = &getModel('module'); + $memberConfig = $oModuleModel->getModuleConfig('member'); + return $memberConfig->openid_authkey; + } + + function getAuthKey() + { + $auth_key = $this->_readAuthKey(); + if ($auth_key === null) { + $auth_key = $this->createAuthKey(); + + if (strlen($auth_key) != $this->AUTH_KEY_LEN) { + $fmt = 'Got an invalid auth key from %s. Expected '. + '%d-byte string. Got: %s'; + $msg = sprintf($fmt, $this->auth_key_name, $this->AUTH_KEY_LEN, + $auth_key); + trigger_error($msg, E_USER_WARNING); + return null; + } + } + } + + function storeNonce($nonce) + { + $args->nonce = $nonce; + $args->expires = time(); + $output = executeQuery("member.insertOpenIdNonce", $args); + } + + function useNonce($nonce) + { + $args->nonce = $nonce; + $output = executeQuery("member.getOpenIdNonce", $args); + if($output->data) + { + $timestamp = $output->data->expires; + $nonce_age = time() - $timestamp; + + if ($nonce_age > $this->max_nonce_age) { + $present = 0; + } else { + $present = 1; + } + $output = executeQuery("member.deleteOpenIdNonce", $args); + } + else + { + $present = 0; + } + + return $present; + } + + function storeAssociation($server_url, $association) + { + $args->server_url = $server_url; + $args->handle = $association->handle; + $args->secret = bin2hex($association->secret); + $args->issued = $association->issued; + $args->lifetime = $association->lifetime; + $args->assoc_type = $association->assoc_type; + executeQuery("member.insertOpenIdAssociation", $args); + } + + function _check_expire(&$assoc) + { + $assoc_o = new Auth_OpenID_Association($assoc->handle, $assoc->secret, $assoc->issued, $assoc->lifetime, $assoc->assoc_type); + if ($assoc_o->getExpiresIn() == 0) { + $this->removeAssociation($server_url, $assoc_o->handle); + return null; + } + return $assoc_o; + } + + function hex2bin($h) + { + if (!is_string($h)) return null; + $r=''; + for ($a=0; $aserver_url = $server_url; + $args->handle = $handle; + $output = executeQueryArray("member.getOpenIdAssociation", $args); + if(!$output->data) return null; + + if(count($output->data) == 1) { + $assoc = array_shift($output->data); + $assoc->secret = $this->hex2bin($assoc->secret); + return $this->_check_expire($assoc); + } + + $res = null; + foreach($output->data as $assoc) + { + if($res == null) + { + $res = $assoc; + continue; + } + + $assoc->secret = $this->hex2bin($assoc->secret); + $assoc_o = $this->_check_expire($assoc); + if(!$assoc_o) continue; + + if($res->issued < $assoc->issued) + { + $res = $assoc_o; + } + } + return $res; + } + + function getAssociation($server_url, $handle = null) + { + $assoc = $this->_get_assoc($server_url, $handle); + return $assoc; + } + + + function removeAssociation($server_url, $handle) + { + if ($this->_get_assoc($server_url, $handle) == null) { + return false; + } + + $args->server_url = $server_url; + $args->handle = $handle; + $output = executeQuery("member.deleteOpenIdAssociation", $args); + return true; + } + + function reset() + { + $output = executeQuery("member.deleteOpenIdNonce"); + $output = executeQuery("member.deleteOpenIdAssociation"); + } +} +?> diff --git a/modules/member/queries/deleteOpenIdAssociation.xml b/modules/member/queries/deleteOpenIdAssociation.xml new file mode 100644 index 000000000..89807cdce --- /dev/null +++ b/modules/member/queries/deleteOpenIdAssociation.xml @@ -0,0 +1,9 @@ + + +
    + + + + + + diff --git a/modules/member/queries/deleteOpenIdNonce.xml b/modules/member/queries/deleteOpenIdNonce.xml new file mode 100644 index 000000000..26e44af6d --- /dev/null +++ b/modules/member/queries/deleteOpenIdNonce.xml @@ -0,0 +1,8 @@ + + +
    + + + + + diff --git a/modules/member/queries/getOpenIdAssociation.xml b/modules/member/queries/getOpenIdAssociation.xml new file mode 100644 index 000000000..3877ecd20 --- /dev/null +++ b/modules/member/queries/getOpenIdAssociation.xml @@ -0,0 +1,12 @@ + + +
    + + + + + + + + + diff --git a/modules/member/queries/getOpenIdNonce.xml b/modules/member/queries/getOpenIdNonce.xml new file mode 100644 index 000000000..a955ad53d --- /dev/null +++ b/modules/member/queries/getOpenIdNonce.xml @@ -0,0 +1,11 @@ + + +
    + + + + + + + + diff --git a/modules/member/queries/insertOpenIdAssociation.xml b/modules/member/queries/insertOpenIdAssociation.xml new file mode 100644 index 000000000..859133749 --- /dev/null +++ b/modules/member/queries/insertOpenIdAssociation.xml @@ -0,0 +1,13 @@ + + +
    + + + + + + + + + + diff --git a/modules/member/queries/insertOpenIdNonce.xml b/modules/member/queries/insertOpenIdNonce.xml new file mode 100644 index 000000000..c2050a068 --- /dev/null +++ b/modules/member/queries/insertOpenIdNonce.xml @@ -0,0 +1,9 @@ + + +
    + + + + + + diff --git a/modules/member/schemas/member_openid_association.xml b/modules/member/schemas/member_openid_association.xml new file mode 100644 index 000000000..bf82a0b6d --- /dev/null +++ b/modules/member/schemas/member_openid_association.xml @@ -0,0 +1,8 @@ +
    + + + + + + +
    diff --git a/modules/member/schemas/member_openid_nonce.xml b/modules/member/schemas/member_openid_nonce.xml new file mode 100644 index 000000000..0831ea1b6 --- /dev/null +++ b/modules/member/schemas/member_openid_nonce.xml @@ -0,0 +1,4 @@ + + + +
    From eb62b0e1e8aebfb71a257da783c4266a0a7fb709 Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 16 Dec 2009 02:14:51 +0000 Subject: [PATCH 056/209] remove SSL for openID git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7046 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.class.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/member/member.class.php b/modules/member/member.class.php index fa13d3d5a..a71cf0085 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -20,12 +20,10 @@ Context::addSSLAction('dispMemberModifyPassword'); Context::addSSLAction('dispMemberSignUpForm'); Context::addSSLAction('dispMemberModifyInfo'); - Context::addSSLAction('dispMemberOpenIDLogin'); Context::addSSLAction('procMemberLogin'); Context::addSSLAction('procMemberModifyPassword'); Context::addSSLAction('procMemberInsert'); Context::addSSLAction('procMemberModifyInfo'); - Context::addSSLAction('procMemberOpenIDLogin'); } } From 85b29174f5cc04f3ae30d8967ec75fb135c6c209 Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 16 Dec 2009 02:29:52 +0000 Subject: [PATCH 057/209] association expired handling git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7047 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php b/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php index 7044b5642..4d51642fc 100644 --- a/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php +++ b/modules/member/php-openid-1.2.3/Auth/OpenID/XEStore.php @@ -111,7 +111,7 @@ class Auth_OpenID_XEStore extends Auth_OpenID_OpenIDStore { return $r; } - function _get_assoc($server_url, $handle) + function _get_assoc($server_url, $handle, $getOrig = false) { $args->server_url = $server_url; $args->handle = $handle; @@ -121,6 +121,7 @@ class Auth_OpenID_XEStore extends Auth_OpenID_OpenIDStore { if(count($output->data) == 1) { $assoc = array_shift($output->data); $assoc->secret = $this->hex2bin($assoc->secret); + if($getOrig) return $assoc; return $this->_check_expire($assoc); } @@ -154,7 +155,7 @@ class Auth_OpenID_XEStore extends Auth_OpenID_OpenIDStore { function removeAssociation($server_url, $handle) { - if ($this->_get_assoc($server_url, $handle) == null) { + if ($this->_get_assoc($server_url, $handle, true) == null) { return false; } From 542284476575c5c67845de580f3412bbee693691 Mon Sep 17 00:00:00 2001 From: ngleader Date: Wed, 16 Dec 2009 06:20:44 +0000 Subject: [PATCH 058/209] fix cubrid incr git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7048 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBCubrid.class.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 3fff00797..ad8c183f2 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -571,14 +571,13 @@ foreach($output->columns as $k => $v) $incr_columns[]= 'incr("'.$v['name'].'")'; $query = sprintf('select %s from %s %s',join(',',$incr_columns), implode(',',$table_list), $condition); - if(!$this->transaction_started) @cubrid_commit($this->fd); - - return $result; }else{ $query = sprintf("update %s set %s %s", implode(',',$table_list), implode(',',$column_list), $condition); - - return $this->_query($query); } + + $result = $this->_query($query); + if($result && !$this->transaction_started) @cubrid_commit($this->fd); + return $result; } /** @@ -594,8 +593,9 @@ $condition = $this->getCondition($output); $query = sprintf("delete from %s %s", implode(',',$table_list), $condition); - - return $this->_query($query); + $result = $this->_query($query); + if($result && !$this->transaction_started) @cubrid_commit($this->fd); + return $result; } /** From 122c3f34354179248553d2c070cdb9c2f2bb88fb Mon Sep 17 00:00:00 2001 From: misol Date: Wed, 16 Dec 2009 18:24:30 +0000 Subject: [PATCH 059/209] =?UTF-8?q?#18549441=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7049 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index a28332087..3e2522c5c 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -253,9 +253,11 @@ if(!$cached) { function doCompressCode($str_code) { $str_code = str_replace("\r", "\n", $str_code); + $str_code = preg_replace("!\/\*([^\"']*?)\*\/!sm", '', $str_code); $str_code = preg_replace("!^([ \t]+)!m", '', $str_code); $str_code = preg_replace("!([ \t]+)$!m", '', $str_code); - $str_code = preg_replace("!^\/\*(.+?)\*\/$!sm", '', $str_code); + $str_code = preg_replace("!^\/\*([^/]*?)\*\/$!sm", '', $str_code); + $str_code = preg_replace("!^\/\*([^*]*?)\*\/$!sm", '', $str_code); $str_code = preg_replace("!^\/\/([^\n]*)$!m", '', $str_code); $str_code = preg_replace("!(\n{2,})!m", "\n", $str_code); From 0c8a3e9145c46801a824eab1a6a34b70e51b61ca Mon Sep 17 00:00:00 2001 From: misol Date: Wed, 16 Dec 2009 18:32:50 +0000 Subject: [PATCH 060/209] =?UTF-8?q?r7049=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7050 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 3e2522c5c..4f0af86f0 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -258,7 +258,7 @@ if(!$cached) { $str_code = preg_replace("!([ \t]+)$!m", '', $str_code); $str_code = preg_replace("!^\/\*([^/]*?)\*\/$!sm", '', $str_code); $str_code = preg_replace("!^\/\*([^*]*?)\*\/$!sm", '', $str_code); - $str_code = preg_replace("!^\/\/([^\n]*)$!m", '', $str_code); + $str_code = preg_replace("!^\/\/([^\n'\"]*)$!m", '', $str_code); $str_code = preg_replace("!(\n{2,})!m", "\n", $str_code); return trim($str_code); From 388e35f47c3f03f62dd69cb750a36011a2d1acca Mon Sep 17 00:00:00 2001 From: ngleader Date: Thu, 17 Dec 2009 07:38:29 +0000 Subject: [PATCH 061/209] =?UTF-8?q?#18550948=20fixed=20xml=20parser?= =?UTF-8?q?=EC=8B=9C=20=ED=8A=B9=EC=88=98=EB=AC=B8=EC=9E=90=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7051 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/xml/XmlParser.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/classes/xml/XmlParser.class.php b/classes/xml/XmlParser.class.php index ed2b50738..766618982 100644 --- a/classes/xml/XmlParser.class.php +++ b/classes/xml/XmlParser.class.php @@ -39,6 +39,7 @@ $this->lang = Context::getLangType(); $this->input = $input?$input:$GLOBALS['HTTP_RAW_POST_DATA']; + $this->input = str_replace(array('',''),array('',''),$this->input); // 지원언어 종류를 뽑음 preg_match_all("/xml:lang=\"([^\"].+)\"/i", $this->input, $matches); From 7610bf973adeb97667751d55ee155a6fb64a115f Mon Sep 17 00:00:00 2001 From: taggon Date: Fri, 18 Dec 2009 04:53:02 +0000 Subject: [PATCH 062/209] =?UTF-8?q?#18552591=20=EC=9D=BC=EB=B6=80=20?= =?UTF-8?q?=EC=98=A4=EB=9E=98=EB=90=9C=20Apache=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=88=98=EC=A0=95=EB=90=9C=20.htaccess?= =?UTF-8?q?=EA=B0=80=20Internal=20Server=20Error=EB=A5=BC=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D=EC=8B=9C=ED=82=A4=EB=8A=94=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7052 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.htaccess b/.htaccess index 4646c52f2..287a69f64 100644 --- a/.htaccess +++ b/.htaccess @@ -4,8 +4,8 @@ RewriteEngine On RewriteRule ^layouts/(.+)/(.+)\.html$ ./index.php [L] # static files -RewriteRule ^(?:.+)/files/(member_extra_info|attach|cache|faceOff)/(.*) ./files/$1/$2 [L] -RewriteRule ^(?:\w+)(?:/\w+(?:/entry)?)?/(files|modules|common|widgets|widgetStyle|layouts|addons)/(.*) ./$1/$2 [L] +RewriteRule ^(.+)/files/(member_extra_info|attach|cache|faceOff)/(.*) ./files/$2/$3 [L] +RewriteRule ^(\w+)(/\w+(/entry)?)?/(files|modules|common|widgets|widgetStyle|layouts|addons)/(.*) ./$4/$5 [L] # rss , blogAPI RewriteRule ^(rss|atom)$ ./index.php?module=rss&act=$1 [L] From d25a9c3c7924ba8495e12cd91619de7618750cfb Mon Sep 17 00:00:00 2001 From: taggon Date: Fri, 18 Dec 2009 07:50:42 +0000 Subject: [PATCH 063/209] =?UTF-8?q?#18525697=20=EC=A0=95=EC=A0=81=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=80=20=ED=8C=8C=EC=9D=BC=EC=9D=B4=20?= =?UTF-8?q?=EC=97=86=EC=9D=84=20=EB=95=8C=EB=A7=8C=20=EA=B7=9C=EC=B9=99?= =?UTF-8?q?=EC=9D=84=20=EC=A0=81=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=98=EA=B3=A0,=20vid,=20mid=EB=8A=94=20=ED=8F=B4=EB=8D=94?= =?UTF-8?q?=EA=B0=80=20=EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=84=20=EA=B2=BD=EC=9A=B0=EC=97=90=EB=A7=8C=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20=ED=95=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7053 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.htaccess b/.htaccess index 287a69f64..f0ccec8d1 100644 --- a/.htaccess +++ b/.htaccess @@ -4,7 +4,9 @@ RewriteEngine On RewriteRule ^layouts/(.+)/(.+)\.html$ ./index.php [L] # static files +RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.+)/files/(member_extra_info|attach|cache|faceOff)/(.*) ./files/$2/$3 [L] +RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(\w+)(/\w+(/entry)?)?/(files|modules|common|widgets|widgetStyle|layouts|addons)/(.*) ./$4/$5 [L] # rss , blogAPI @@ -25,8 +27,10 @@ RewriteRule ^(\d+)$ ./index.php?document_srl=$1 [L] RewriteRule ^(\w+)/(\d+)$ ./index.php?vid=$1&document_srl=$2 [L] # mid link +RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(\w+)/?$ ./index.php?mid=$1 [L] # vid + mid link +RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(\w+)/(\w+)/?$ ./index.php?vid=$1&mid=$2 [L] # mid + document link From 2bbd25bdce42e7fc8cc9780350b23755b50f0722 Mon Sep 17 00:00:00 2001 From: supershop Date: Sat, 19 Dec 2009 11:08:59 +0000 Subject: [PATCH 064/209] english translation git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7054 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/en.lang.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/lang/en.lang.php b/modules/member/lang/en.lang.php index 3909481ee..f76d05430 100644 --- a/modules/member/lang/en.lang.php +++ b/modules/member/lang/en.lang.php @@ -207,5 +207,5 @@ $lang->about_ssl_port = 'Please input if you are using different SSL port with default one'; $lang->add_openid = 'Add OpenID'; - $lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.'; + $lang->about_resend_auth_mail = 'You can request for activation mail if you have not activated before'; ?> From 5ccccbebae11997a8f6d5b0e10b56a57bca30c72 Mon Sep 17 00:00:00 2001 From: misol Date: Sat, 19 Dec 2009 15:40:28 +0000 Subject: [PATCH 065/209] =?UTF-8?q?#18554838=20=EC=9D=B8=EC=87=84=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=9C=EB=AA=A9=20h1=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=EB=A1=9C=20=EA=B0=90=EC=8C=88.=20=EC=9D=B8?= =?UTF-8?q?=EC=87=84=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=EC=84=9C?= =?UTF-8?q?=EB=8F=84=20=EC=97=90=EB=94=94=ED=84=B0=20=EC=8A=A4=ED=83=80?= =?UTF-8?q?=EC=9D=BC=20=EC=A0=81=EC=9A=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7055 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.view.php | 6 ++++++ modules/document/tpl/print_page.html | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/document/document.view.php b/modules/document/document.view.php index 49a25caac..687cac339 100644 --- a/modules/document/document.view.php +++ b/modules/document/document.view.php @@ -21,6 +21,9 @@ // 목록 구현에 필요한 변수들을 가져온다 $document_srl = Context::get('document_srl'); + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl); + // document 객체를 생성. 기본 데이터 구조의 경우 document모듈만 쓰면 만사 해결.. -_-; $oDocumentModel = &getModel('document'); @@ -31,6 +34,9 @@ // 권한 체크 if(!$oDocument->isAccessible()) return new Object(-1,'msg_not_permitted'); + // 모듈 정보 세팅 + Context::set('module_info', $module_info); + // 브라우저 타이틀 설정 Context::setBrowserTitle($oDocument->getTitleText()); Context::set('oDocument', $oDocument); diff --git a/modules/document/tpl/print_page.html b/modules/document/tpl/print_page.html index 9ef5da8aa..f79687f9a 100644 --- a/modules/document/tpl/print_page.html +++ b/modules/document/tpl/print_page.html @@ -3,7 +3,7 @@
    -

    {$oDocument->getTitleText()}

    +

    {$oDocument->getTitleText()}

    {$oDocument->get('nick_name')}
    {$oDocument->getRegdate()}
    From 92c38413bc6455b5476def1cea0dd31671c6078e Mon Sep 17 00:00:00 2001 From: misol Date: Sat, 19 Dec 2009 16:15:25 +0000 Subject: [PATCH 066/209] =?UTF-8?q?#18554855=20=EC=97=90=EB=94=94=ED=84=B0?= =?UTF-8?q?=20=ED=98=95=EC=8B=9D=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= =?UTF-8?q?.=20-=20=ED=98=95=EC=8B=9D=EC=9D=B4=20=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=EC=97=90=20=EC=84=A4=EC=A0=95=EB=90=9C=20=ED=98=95?= =?UTF-8?q?=EC=8B=9D=EC=9D=B4=20=EC=95=84=EB=8B=90=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?index=20=3D=200=EC=9C=BC=EB=A1=9C=20=EC=84=A4=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7056 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/xpresseditor/js/Xpress_Editor.js | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/editor/skins/xpresseditor/js/Xpress_Editor.js b/modules/editor/skins/xpresseditor/js/Xpress_Editor.js index 227fc88f6..7cb824d64 100644 --- a/modules/editor/skins/xpresseditor/js/Xpress_Editor.js +++ b/modules/editor/skins/xpresseditor/js/Xpress_Editor.js @@ -5838,6 +5838,7 @@ xe.XE_FormatWithSelectUI = jQuery.Class({ this.elFormatSelect.value = blockName.toLowerCase(); if(this.elFormatSelect.selectedIndex < 0) this.elFormatSelect.selectedIndex = 0; + if(this.elFormatSelect.value != blockName.toLowerCase()) this.elFormatSelect.selectedIndex = 0; }, $ON_SET_FORMAT_FROM_SELECT_UI : function(){ From 8bb819522698b94dee142325aca8fc56afb86b55 Mon Sep 17 00:00:00 2001 From: misol Date: Sun, 20 Dec 2009 04:43:27 +0000 Subject: [PATCH 067/209] =?UTF-8?q?#18544647=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=20=EB=A6=AC=EC=82=AC=EC=9D=B4=EC=A6=88=20=EC=95=A0=EB=93=9C?= =?UTF-8?q?=EC=98=A8=20=EC=9E=90=EB=B0=94=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EC=95=95=EC=B6=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7057 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/resize_image/js/resize_image.min.js | 9 +++++++++ addons/resize_image/resize_image.addon.php | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 addons/resize_image/js/resize_image.min.js diff --git a/addons/resize_image/js/resize_image.min.js b/addons/resize_image/js/resize_image.min.js new file mode 100644 index 000000000..ac5ad7276 --- /dev/null +++ b/addons/resize_image/js/resize_image.min.js @@ -0,0 +1,9 @@ +/** + * @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경 + **/ +(function($){var xScreen=null;function getScreen(){var body=$(document.body);var controls,imgframe,closebtn,prevbtn,nextbtn;if(!xScreen){xScreen=$("
    ").attr("id","xe_gallery_screen").css({position:"absolute",display:"none",backgroundColor:"black",zIndex:500,opacity:0.5});controls=$("
    ").attr("id","xe_gallery_controls").css({position:"absolute",display:"none",overflow:"hidden",zIndex:510});closebtn=$("").attr("id","xe_gallery_closebtn").attr("src",request_uri+"addons/resize_image/iconClose.png").css({top:"10px"}).click(function(){xScreen.xeHide()}).appendTo(controls);prevbtn=$("").attr("id","xe_gallery_prevbtn").attr("src",request_uri+"addons/resize_image/iconLeft.png").css("left","10px").click(function(){xScreen.xePrev()}).appendTo(controls);nextbtn=$("").attr("id","xe_gallery_nextbtn").attr("src",request_uri+"addons/resize_image/iconRight.png").css("right","10px").click(function(){xScreen.xeNext()}).appendTo(controls);controls.find("img").attr({width:60,height:60,className:"iePngFix"}).css({position:"absolute",width:"60px",height:"60px",zIndex:530,cursor:"pointer"});imgframe=$("").attr("id","xe_gallery_holder").css("border","7px solid white").css("zIndex",520).appendTo(controls).draggable();body.append(xScreen).append(controls);xScreen.xeShow=function(){var clientWidth=$(window).width();var clientHeight=$(window).height();$("#xe_gallery_controls,#xe_gallery_screen").css({display:"block",width:clientWidth+"px",height:clientHeight+"px",left:$(document).scrollLeft(),top:$(document).scrollTop()});closebtn.css("left",Math.round((clientWidth-60)/2)+"px");$("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top",Math.round((clientHeight-60)/2)+"px");this.xeMove(0);};xScreen.xeHide=function(event){xScreen.css("display","none");controls.css("display","none");};xScreen.xePrev=function(){this.xeMove(-1);};xScreen.xeNext=function(){this.xeMove(1);};xScreen.xeMove=function(val){var clientWidth=$(window).width();var clientHeight=$(window).height();this.index+=val;prevbtn.css("visibility",(this.index>0)?"visible":"hidden");nextbtn.css("visibility",(this.index
    ');function doResize(contentWidth,count){if(!count)count=0;if(count>=10)return;var $img=this;var beforSize={'width':$img.width(),'height':$img.height()};if(!beforSize.width||!beforSize.height){setTimeout(function(){doResize.call($img,contentWidth,++count)},200);return;} +if(beforSize.width<=contentWidth)return;var resize_ratio=contentWidth/beforSize.width;$img.removeAttr('width').removeAttr('height').css({'width':contentWidth,'height':parseInt(beforSize.height*resize_ratio,10)});} +$('div.xe_content').each(function(){dummy.appendTo(this);var contentWidth=dummy.width();dummy.remove();if(!contentWidth)return;$('img',this).each(function(){var $img=$(this);var imgSrc=$img.attr('src');if(regx_skip.test(imgSrc)&&!regx_allow_i6pngfix.test(imgSrc))return;$img.attr('rel','xe_gallery');doResize.call($img,contentWidth);});$('img[rel=xe_gallery]',this).live('mouseover',function(){var $img=$(this);if(!$img.parent('a').length&&!$img.attr('onclick')){$img.css('cursor','pointer').click(slideshow);}});});});})(jQuery); diff --git a/addons/resize_image/resize_image.addon.php b/addons/resize_image/resize_image.addon.php index 650b1623b..2d127dfe6 100644 --- a/addons/resize_image/resize_image.addon.php +++ b/addons/resize_image/resize_image.addon.php @@ -9,6 +9,6 @@ if($called_position == 'after_module_proc' && Context::getResponseMethod()=="HTML") { Context::loadJavascriptPlugin('ui'); - Context::addJsFile('./addons/resize_image/js/resize_image.js',false); + Context::addJsFile('./addons/resize_image/js/resize_image.min.js',false); } ?> \ No newline at end of file From a21b9b53806e1612062c15ef716121b3ee92d4b4 Mon Sep 17 00:00:00 2001 From: taggon Date: Sun, 20 Dec 2009 08:37:10 +0000 Subject: [PATCH 068/209] =?UTF-8?q?#18417412=20#18045048=20=EC=99=B8?= =?UTF-8?q?=EB=B6=80=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EB=B3=80=ED=99=98=EC=8B=9C=20=ED=95=B4=EC=8B=9C=EB=A7=81?= =?UTF-8?q?=ED=81=AC(#)=EC=99=80=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EB=AC=B8?= =?UTF-8?q?=EB=B2=95({..)=EC=9D=84=20=EA=B1=B4=EB=84=88=EB=9B=B0=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7058 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/opage/opage.view.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/opage/opage.view.php b/modules/opage/opage.view.php index 6469a3948..fdce5c37c 100644 --- a/modules/opage/opage.view.php +++ b/modules/opage/opage.view.php @@ -140,8 +140,9 @@ function _replacePath($matches) { $val = trim($matches[3]); - // 외부 또는 / 로 시작하는 경로라면 그냥 pass - if(preg_match('/^(http|https|ftp|telnet|mms|mailto|\/)/i',$val)) return $matches[0]; + // 외부 또는 /, #, { 로 시작하는 경로라면 그냥 pass + // /=absolute path, #=hash in a page, {=Template syntax + if(preg_match('@^((?:http|https|ftp|telnet|mms)://|(?:mailto|javascript):|[/#{])@i',$val)) return $matches[0]; // .. 와 같은 경우 대상 경로를 구함 elseif(preg_match('/^(\.\.)/i',$val)) { From 227e9646b69db7fdb6441f87a15dd4850be6e7ba Mon Sep 17 00:00:00 2001 From: misol Date: Sun, 20 Dec 2009 13:26:36 +0000 Subject: [PATCH 069/209] =?UTF-8?q?r7049=20=EB=B3=B4=EC=99=84.=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EC=A0=9C=EA=B1=B0=EB=8A=94=20=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EC=9D=8C.;=20(=EC=9C=84=ED=97=98=20=EB=B6=80=EB=8B=B4?= =?UTF-8?q?=EC=9D=B4=20=ED=81=BC;)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7059 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/optimizer/Optimizer.class.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 4f0af86f0..a922d4315 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -157,7 +157,7 @@ unset($str); } - $str_to_write = $this->doCompressCode($str_to_write); + $str_to_write = $this->doCompressCode($str_to_write, $type); $file_object->write($str_to_write); $file_object->close(); @@ -251,14 +251,10 @@ if(!$cached) { return 'url("'.$target.'")'; } - function doCompressCode($str_code) { + function doCompressCode($str_code, $type) { $str_code = str_replace("\r", "\n", $str_code); - $str_code = preg_replace("!\/\*([^\"']*?)\*\/!sm", '', $str_code); $str_code = preg_replace("!^([ \t]+)!m", '', $str_code); $str_code = preg_replace("!([ \t]+)$!m", '', $str_code); - $str_code = preg_replace("!^\/\*([^/]*?)\*\/$!sm", '', $str_code); - $str_code = preg_replace("!^\/\*([^*]*?)\*\/$!sm", '', $str_code); - $str_code = preg_replace("!^\/\/([^\n'\"]*)$!m", '', $str_code); $str_code = preg_replace("!(\n{2,})!m", "\n", $str_code); return trim($str_code); From 4ebbd87a359150c1acb5ff0bcf5ed20ca9aafd93 Mon Sep 17 00:00:00 2001 From: ngleader Date: Mon, 21 Dec 2009 08:15:41 +0000 Subject: [PATCH 070/209] fixed query error git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7060 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/queries/getDocumentPage.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/document/queries/getDocumentPage.xml b/modules/document/queries/getDocumentPage.xml index fe91910f3..2470013f0 100644 --- a/modules/document/queries/getDocumentPage.xml +++ b/modules/document/queries/getDocumentPage.xml @@ -22,7 +22,4 @@ - - - From 023304b4944d1affb20c3259f0557d0631ed1efd Mon Sep 17 00:00:00 2001 From: ngleader Date: Mon, 21 Dec 2009 08:17:03 +0000 Subject: [PATCH 071/209] fixed query error git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7061 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/counter/counter.controller.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/modules/counter/counter.controller.php b/modules/counter/counter.controller.php index a78891f0d..ba96520bc 100644 --- a/modules/counter/counter.controller.php +++ b/modules/counter/counter.controller.php @@ -92,9 +92,15 @@ $args->regdate = 0; if($site_srl) { $args->site_srl = $site_srl; - executeQuery('counter.insertSiteTodayStatus', $args); + $output = executeQuery('counter.getSiteTodayStatus',$args); + if($output->toBool() && $output->data->count == 0){ + executeQuery('counter.insertSiteTodayStatus', $args); + } } else { - executeQuery('counter.insertTodayStatus', $args); + $output = executeQuery('counter.getTodayStatus',$args); + if($output->toBool() && $output->data->count == 0){ + executeQuery('counter.insertTodayStatus', $args); + } } } @@ -111,8 +117,12 @@ $u_args->site_srl = $site_srl; ///< 일별 row입력시 전체 row (regdate=0)도 같이 입력 시도 executeQuery($query_id, $u_args); } else { - $query_id = 'counter.insertTodayStatus'; - executeQuery($query_id); ///< 일별 row입력시 전체 row (regdate=0)도 같이 입력 시도 + ///< 일별 row입력시 전체 row (regdate=0)도 같이 입력 시도 + $u_args->regdate=0; + $output = executeQuery('counter.getTodayStatus',$u_args); + if($output->toBool() && $output->data->count == 0){ + executeQuery('counter.insertTodayStatus'); + } } $output = executeQuery($query_id, $args); From f0621b76dc6915b0445fc854bd3d3d9b46767de6 Mon Sep 17 00:00:00 2001 From: ngleader Date: Mon, 21 Dec 2009 08:47:45 +0000 Subject: [PATCH 072/209] =?UTF-8?q?install=EC=8B=9C=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7062 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/install/install.controller.php | 42 +++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index 022c3f233..df0b3488b 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -7,7 +7,6 @@ class installController extends install { - /** * @brief 초기화 **/ @@ -57,6 +56,15 @@ // config 파일 생성 if(!$this->makeConfigFile()) return new Object(-1, 'msg_install_failed'); + // load script + $scripts = FileHandler::readDir('./modules/install/script','/(\.php)$/'); + if(count($scripts)>0){ + sort($scripts); + foreach($scripts as $script){ + $output = include(FileHandler::getRealPath('./modules/install/script/'.$script)); + } + } + // 설치 완료 메세지 출력 $this->setMessage('msg_install_completed'); } @@ -314,5 +322,37 @@ if(@file_exists($config_file)) return true; return false; } + + function installByConfig($install_config_file){ + include $install_config_file; + if(!is_array($auto_config)) return false; + + $auto_config['module'] = 'install'; + $auto_config['act'] = 'procInstall'; + + $fstr = "<%s>\r\n"; + $fheader = "POST %s HTTP/1.1\r\nHost: %s\r\nContent-Type: application/xml\r\nContent-Length: %s\r\n\r\n%s\r\n"; + $body = "\r\n\r\n\r\n"; + foreach($auto_config as $k => $v){ + if(!in_array($k,array('host','port','path'))) $body .= sprintf($fstr,$k,$v,$k); + } + $body .= "\r\n"; + + $header = sprintf($fheader,$auto_config['path'],$auto_config['host'],strlen($body),$body); + $fp = @fsockopen($auto_config['host'], $auto_config['port'], $errno, $errstr, 5); + if($fp){ + fputs($fp, $header); + while(!feof($fp)) { + $line = trim(fgets($fp, 4096)); + if(preg_match("/^/i",$line)){ + fclose($fp); + return false; + } + } + fclose($fp); + } + return true; + + } } ?> From 4a847a93eeaebc143c0e0c8a41f50949c43828e8 Mon Sep 17 00:00:00 2001 From: haneul Date: Mon, 21 Dec 2009 09:44:57 +0000 Subject: [PATCH 073/209] #18557491 : block embed, multimedia_link when administrators view non-administrator's articles git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7063 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/en.lang.php | 2 ++ common/lang/es.lang.php | 2 ++ common/lang/ge.lang.php | 2 ++ common/lang/jp.lang.php | 2 ++ common/lang/ko.lang.php | 2 ++ common/lang/mn.lang.php | 4 +++- common/lang/ru.lang.php | 2 ++ common/lang/vi.lang.php | 2 ++ common/lang/zh-CN.lang.php | 2 ++ common/lang/zh-TW.lang.php | 2 ++ modules/comment/comment.item.php | 27 +++++++++++++++++++++++++++ modules/document/document.item.php | 27 +++++++++++++++++++++++++++ 12 files changed, 75 insertions(+), 1 deletion(-) diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index 3698c0e62..ca125ca45 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -313,4 +313,6 @@ $lang->filter->invalid_alpha = "The format of %s is invalid. Please input alphabets only"; $lang->filter->invalid_alpha_number = "The format of %s is invalid. Please input alphabets or numbers"; $lang->filter->invalid_number = "The format of %s is invalid. Please input numbers only"; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index 3c2e938d1..61703e1de 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -320,4 +320,6 @@ $lang->filter->invalid_alpha = 'Sólo puede introducir los alfabetos en el %s'; $lang->filter->invalid_alpha_number = 'Sólo puede introducir los alfanuméricos en el %s es inválido'; $lang->filter->invalid_number = 'Sólo puede introducir los dígitos numéricos en el %s'; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/ge.lang.php b/common/lang/ge.lang.php index 31577eba8..ef1d7e906 100644 --- a/common/lang/ge.lang.php +++ b/common/lang/ge.lang.php @@ -313,4 +313,6 @@ $lang->filter->invalid_alpha = "Das Format von% s ist ungültig. Bitte geben Sie nur Alphabete"; $lang->filter->invalid_alpha_number = "Das Format von% s ist ungültig. Bitte geben Sie Ihre Alphabete oder Zahlen"; $lang->filter->invalid_number = "Das Format von% s ist ungültig. Bitte geben Sie nur Zahlen"; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php index 0a262067b..e27262a45 100644 --- a/common/lang/jp.lang.php +++ b/common/lang/jp.lang.php @@ -315,4 +315,6 @@ $lang->filter->invalid_alpha = '%sの形式が正しくありません。半角英文字のみ入力して下さい。'; $lang->filter->invalid_alpha_number = '%sの形式が正しくありません。半角英数で入力して下さい。'; $lang->filter->invalid_number = '%sの形式が正しくありません。半角数字で入力して下さい。'; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index 0c1e477f5..2a35bcab9 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -314,4 +314,6 @@ $lang->filter->invalid_alpha = '%s의 형식이 잘못되었습니다. 영문으로만 입력하셔야 합니다.'; $lang->filter->invalid_alpha_number = '%s의 형식이 잘못되었습니다. 영문과 숫자로만 입력하셔야 합니다.'; $lang->filter->invalid_number = '%s의 형식이 잘못되었습니다. 숫자로만 입력하셔야 합니다.'; + + $lang->security_warning_embed = "보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하시려면 다른 아이디로 접속하세요"; ?> diff --git a/common/lang/mn.lang.php b/common/lang/mn.lang.php index 67ac17dab..9ede18a11 100644 --- a/common/lang/mn.lang.php +++ b/common/lang/mn.lang.php @@ -310,4 +310,6 @@ $lang->filter->invalid_alpha = '%s-ын хэлбэр буруу байна. Зөвхөн латин үсгээр оруулах ёстой'; $lang->filter->invalid_alpha_number = '%s-ын хэлбэр буруу байна. Зөвхөн латин үсэг болон тоогоор л оруулах ёстой.'; $lang->filter->invalid_number = '%s-ын хэлбэр буруу байна. Зөвхөн тоогоор оруулах ёстой.'; -?> \ No newline at end of file + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; +?> diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index 1e9682ed2..f595a124d 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -313,4 +313,6 @@ $lang->filter->invalid_alpha = "Формат %s неверен. Пожалуйста, вводите только алфавитные символы"; $lang->filter->invalid_alpha_number = "Формат %s неверен. Пожалуйста, вводите алфавитные символы или цифры"; $lang->filter->invalid_number = "Формат %s неверен. Пожалуйста, вводите только цифры"; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/vi.lang.php b/common/lang/vi.lang.php index 1ece93503..7fddc58ea 100644 --- a/common/lang/vi.lang.php +++ b/common/lang/vi.lang.php @@ -303,4 +303,6 @@ $lang->filter->invalid_alpha = "Định dạng của %s không hợp lệ. Chỉ sử dụng các kí tự từ a-z"; $lang->filter->invalid_alpha_number = "Định dạng của %s không hợp lệ. Chỉ sử dụng các kí tự từ a-z và các chữ số"; $lang->filter->invalid_number = "Định dạng của %s không hợp lệ. Chỉ sử dụng các chữ số"; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index c89a96343..0fecd4c40 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -314,4 +314,6 @@ $lang->filter->invalid_alpha = '%s只能输入英文字母'; $lang->filter->invalid_alpha_number = '%s只能输入英文或数字'; $lang->filter->invalid_number = '%s只能输入数字'; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/common/lang/zh-TW.lang.php b/common/lang/zh-TW.lang.php index c33c34b81..2dc5923a4 100644 --- a/common/lang/zh-TW.lang.php +++ b/common/lang/zh-TW.lang.php @@ -314,4 +314,6 @@ $lang->filter->invalid_alpha = '%s只能輸入英文字母'; $lang->filter->invalid_alpha_number = '%s只能輸入英文或數字'; $lang->filter->invalid_number = '%s只能輸入數字'; + + $lang->security_warning_embed = "Due to security concern, administrators are not allowed to view embedded items.
    To view them, please use another non-administrator ID."; ?> diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index fefe8f569..a8c36e029 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -160,6 +160,32 @@ return htmlspecialchars($this->get('nick_name')); } + function stripEmbedTagForAdmin(&$content) + { + if(!Context::get('is_logged')) return; + $oModuleModel = &getModel('module'); + $logged_info = Context::get('logged_info'); + $writer_member_srl = $this->get('member_srl'); + + if($writer_member_srl != $logged_info->member_srl && ($logged_info->is_admin == "Y" || $oModuleModel->isSiteAdmin($logged_info)) ) + { + if($writer_member_srl) + { + $oMemberModel =& getModel('member'); + $member_info = $oMemberModel->getMemberInfoByMemberSrl($writer_member_srl); + if($member_info->is_admin == "Y") + { + return; + } + } + $security_msg = "

    ".Context::getLang('security_warning_embed')."

    "; + $content = preg_replace('/]+>(\s*<\/embed>)?/is', $security_msg, $content); + $content = preg_replace('/]+editor_component="multimedia_link"[^>]*>(\s*<\/img>)?/is', $security_msg, $content); + } + + return; + } + function getContentText($strlen = 0) { if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret'); @@ -174,6 +200,7 @@ if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret'); $content = $this->get('content'); + $this->stripEmbedTagForAdmin($content); // 이 댓글을... 팝업메뉴를 출력할 경우 if($add_popup_menu && Context::get('is_logged') ) { diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 57c55da4d..70e36f11f 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -251,6 +251,32 @@ return htmlspecialchars($content); } + function stripEmbedTagForAdmin(&$content) + { + if(!Context::get('is_logged')) return; + $oModuleModel = &getModel('module'); + $logged_info = Context::get('logged_info'); + $writer_member_srl = $this->get('member_srl'); + + if($writer_member_srl != $logged_info->member_srl && ($logged_info->is_admin == "Y" || $oModuleModel->isSiteAdmin($logged_info)) ) + { + if($writer_member_srl) + { + $oMemberModel =& getModel('member'); + $member_info = $oMemberModel->getMemberInfoByMemberSrl($writer_member_srl); + if($member_info->is_admin == "Y") + { + return; + } + } + $security_msg = "

    ".Context::getLang('security_warning_embed')."

    "; + $content = preg_replace('/]+>(\s*<\/embed>)?/is', $security_msg, $content); + $content = preg_replace('/]+editor_component="multimedia_link"[^>]*>(\s*<\/img>)?/is', $security_msg, $content); + } + + return; + } + function getContent($add_popup_menu = true, $add_content_info = true, $resource_realpath = false, $add_xe_content_class = true) { if(!$this->document_srl) return; @@ -259,6 +285,7 @@ $_SESSION['accessible'][$this->document_srl] = true; $content = $this->get('content'); + $this->stripEmbedTagForAdmin($content); // rewrite모듈을 사용하면 링크 재정의 $oContext = &Context::getInstance(); From 27f565b400c6f637f11331a091cddac5556d6f71 Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 22 Dec 2009 01:01:39 +0000 Subject: [PATCH 074/209] update version git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7066 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 4 ++-- modules/install/install.view.php | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/config/config.inc.php b/config/config.inc.php index 2fb9ecbb1..461490a05 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -13,7 +13,7 @@ * @brief XE의 전체 버전 표기 * 이 파일의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함 **/ - define('__ZBXE_VERSION__', '1.3.1.1'); + define('__ZBXE_VERSION__', '1.3.1.2'); /** * @brief zbXE가 설치된 장소의 base path를 구함 @@ -46,7 +46,7 @@ * 2 : 소요시간, Request/Response info 출력 * 4 : DB 쿼리 내역 출력 **/ - if(!defined('__DEBUG__')) define('__DEBUG__', 0); + if(!defined('__DEBUG__')) define('__DEBUG__', 1); /** * @brief 디버그 메세지의 출력 장소 diff --git a/modules/install/install.view.php b/modules/install/install.view.php index c6f0c014d..5d4cfa4b5 100644 --- a/modules/install/install.view.php +++ b/modules/install/install.view.php @@ -31,7 +31,20 @@ * @brief license 메세지 노출 **/ function dispInstallIntroduce() { - $this->setTemplateFile('introduce'); + $install_config_file = FileHandler::getRealPath('./config/install.config.php'); + if(file_exists($install_config_file)){ + include $install_config_file; + if(is_array($install_config)){ + foreach($install_config as $k => $v) Context::set($k,$v,true); + unset($GLOBALS['__DB__']); + $oInstallController = &getController('install'); + $oInstallController->procInstall(); + header("location: ./index.php?module=admin"); + exit; + } + } + + $this->setTemplateFile('introduce'); } /** From b7b40de5429ea65370949dd21dc5b6d4928a6c95 Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 22 Dec 2009 01:02:37 +0000 Subject: [PATCH 075/209] update version git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7067 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/config.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.inc.php b/config/config.inc.php index 461490a05..737d26116 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -46,7 +46,7 @@ * 2 : 소요시간, Request/Response info 출력 * 4 : DB 쿼리 내역 출력 **/ - if(!defined('__DEBUG__')) define('__DEBUG__', 1); + if(!defined('__DEBUG__')) define('__DEBUG__', 0); /** * @brief 디버그 메세지의 출력 장소 From 4e84d7676a540443168c126de811f6e377cefea4 Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 22 Dec 2009 01:05:26 +0000 Subject: [PATCH 076/209] fix git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7068 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/install/install.view.php | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/modules/install/install.view.php b/modules/install/install.view.php index 5d4cfa4b5..202c97165 100644 --- a/modules/install/install.view.php +++ b/modules/install/install.view.php @@ -31,20 +31,7 @@ * @brief license 메세지 노출 **/ function dispInstallIntroduce() { - $install_config_file = FileHandler::getRealPath('./config/install.config.php'); - if(file_exists($install_config_file)){ - include $install_config_file; - if(is_array($install_config)){ - foreach($install_config as $k => $v) Context::set($k,$v,true); - unset($GLOBALS['__DB__']); - $oInstallController = &getController('install'); - $oInstallController->procInstall(); - header("location: ./index.php?module=admin"); - exit; - } - } - - $this->setTemplateFile('introduce'); + $this->setTemplateFile('introduce'); } /** @@ -63,7 +50,7 @@ if(!$this->install_enable) return $this->dispInstallCheckEnv(); // ftp 정보 입력 - if(ini_get('safe_mode') && !Context::isFTPRegisted()) { + if(!Context::isFTPRegisted()) { $this->setTemplateFile('ftp'); } else { $this->setTemplateFile('select_db'); From 554baf4bf3589a4709f2000e10be056d7bbde135 Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 22 Dec 2009 01:31:44 +0000 Subject: [PATCH 077/209] rollback counter git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7069 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/counter/counter.controller.php | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/modules/counter/counter.controller.php b/modules/counter/counter.controller.php index ba96520bc..a78891f0d 100644 --- a/modules/counter/counter.controller.php +++ b/modules/counter/counter.controller.php @@ -92,15 +92,9 @@ $args->regdate = 0; if($site_srl) { $args->site_srl = $site_srl; - $output = executeQuery('counter.getSiteTodayStatus',$args); - if($output->toBool() && $output->data->count == 0){ - executeQuery('counter.insertSiteTodayStatus', $args); - } + executeQuery('counter.insertSiteTodayStatus', $args); } else { - $output = executeQuery('counter.getTodayStatus',$args); - if($output->toBool() && $output->data->count == 0){ - executeQuery('counter.insertTodayStatus', $args); - } + executeQuery('counter.insertTodayStatus', $args); } } @@ -117,12 +111,8 @@ $u_args->site_srl = $site_srl; ///< 일별 row입력시 전체 row (regdate=0)도 같이 입력 시도 executeQuery($query_id, $u_args); } else { - ///< 일별 row입력시 전체 row (regdate=0)도 같이 입력 시도 - $u_args->regdate=0; - $output = executeQuery('counter.getTodayStatus',$u_args); - if($output->toBool() && $output->data->count == 0){ - executeQuery('counter.insertTodayStatus'); - } + $query_id = 'counter.insertTodayStatus'; + executeQuery($query_id); ///< 일별 row입력시 전체 row (regdate=0)도 같이 입력 시도 } $output = executeQuery($query_id, $args); From 51a00c8c15486d29a6f0318b61dc95ba5d668b57 Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 23 Dec 2009 08:23:09 +0000 Subject: [PATCH 078/209] require location modification git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7070 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/smartphone/smartphone.addon.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/smartphone/smartphone.addon.php b/addons/smartphone/smartphone.addon.php index b95a9bb8b..28849250f 100644 --- a/addons/smartphone/smartphone.addon.php +++ b/addons/smartphone/smartphone.addon.php @@ -2,11 +2,10 @@ if(!defined("__ZBXE__")) exit(); if(Context::get('module')=='admin') return; + require_once(_XE_PATH_.'addons/smartphone/classes/smartphone.class.php'); if($called_position == "before_module_init") { - require(_XE_PATH_.'addons/smartphone/classes/smartphone.class.php'); - if(Context::get('full_browse')) { setcookie("FullBrowse", 1); From f918062accb9a7ba30e8ff0a5bdb95bbcb4535cb Mon Sep 17 00:00:00 2001 From: misol Date: Sun, 27 Dec 2009 15:07:13 +0000 Subject: [PATCH 079/209] Add robot user-agent list for robots. (eg. Baiduspider+(+http://www.baidu.com/search/spider.htm), Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmaste...) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7071 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/func.inc.php b/config/func.inc.php index 49faa3cd8..47105619d 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -838,7 +838,7 @@ function isCrawler($agent = null) { if(!$agent) $agent = $_SERVER['HTTP_USER_AGENT']; - $check_agent = array('bot', 'google', 'yahoo', 'daum', 'fish', 'hanrss'); + $check_agent = array('bot', 'spider', 'google', 'yahoo', 'daum', 'fish', 'hanrss'); $check_ip = array( '211.245.21.11*' /* mixsh */ ); From ca24f4dee0788c8254a4709ea18425f3d9cddf21 Mon Sep 17 00:00:00 2001 From: misol Date: Sun, 27 Dec 2009 15:54:44 +0000 Subject: [PATCH 080/209] Add robot user-agent list for ask.com robot. (Mozilla/5.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en/docs/about/webmasters.shtml)) git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7072 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/func.inc.php b/config/func.inc.php index 47105619d..ddd0fc146 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -838,7 +838,7 @@ function isCrawler($agent = null) { if(!$agent) $agent = $_SERVER['HTTP_USER_AGENT']; - $check_agent = array('bot', 'spider', 'google', 'yahoo', 'daum', 'fish', 'hanrss'); + $check_agent = array('bot', 'spider', 'google', 'yahoo', 'daum', 'teoma', 'fish', 'hanrss'); $check_ip = array( '211.245.21.11*' /* mixsh */ ); From 08685ad5040e3cb109e7e8c47e52765f017b6001 Mon Sep 17 00:00:00 2001 From: royallin Date: Mon, 28 Dec 2009 01:34:44 +0000 Subject: [PATCH 081/209] Modify CHT language git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7073 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/zh-TW.lang.php | 26 +++++++++++++------------- modules/admin/lang/zh-TW.lang.php | 3 +-- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/common/lang/zh-TW.lang.php b/common/lang/zh-TW.lang.php index 2dc5923a4..173e0e264 100644 --- a/common/lang/zh-TW.lang.php +++ b/common/lang/zh-TW.lang.php @@ -221,13 +221,13 @@ $lang->msg_error_occured = '發生錯誤'; $lang->msg_not_founded = '找不到相關內容'; $lang->msg_no_result = '搜尋不到結果'; - $lang->msg_fail_to_request_open = 'Fail to open your request'; + $lang->msg_fail_to_request_open = '連結失敗'; $lang->msg_invalid_format = '格式錯誤'; $lang->msg_not_permitted_act = '沒有權限執行'; - $lang->msg_module_is_not_exists = "요청하신 모듈을 찾을 수 없습니다.\n사이트 관리자에게 모듈 점검 요청 바랍니다"; + $lang->msg_module_is_not_exists = "找不到模組。\n請聯絡管理員"; $lang->msg_module_is_not_standalone = '您請求的模組不能單獨執行'; - $lang->msg_default_url_is_not_defined = '기본 URL이 정해지지 않아서 동작을 중지합니다'; + $lang->msg_default_url_is_not_defined = '尚未設定預設網址'; $lang->success_registed = '成功送出!'; $lang->success_declared = '檢舉成功!'; @@ -261,15 +261,15 @@ $lang->column_type = '格式'; $lang->column_type_list['text'] = '文字輸入(text)'; $lang->column_type_list['homepage'] = '網址格式'; - $lang->column_type_list['email_address'] = '郵件格式 (email)'; - $lang->column_type_list['tel'] = '電話號碼格式 (phone)'; - $lang->column_type_list['textarea'] = '文字區域 (textarea)'; - $lang->column_type_list['checkbox'] = '核取方塊 (checkbox)'; - $lang->column_type_list['select'] = '下拉式選單 (select)'; - $lang->column_type_list['radio'] = '選項按紐 (radio)'; + $lang->column_type_list['email_address'] = '郵件格式(email)'; + $lang->column_type_list['tel'] = '電話號碼格式(phone)'; + $lang->column_type_list['textarea'] = '文字區域(textarea)'; + $lang->column_type_list['checkbox'] = '核取方塊(checkbox)'; + $lang->column_type_list['select'] = '下拉式選單(select)'; + $lang->column_type_list['radio'] = '選項按紐(radio)'; $lang->column_type_list['kr_zip'] = '韓國郵編(zip)'; - $lang->column_type_list['date'] = '日期 (年月日)'; - //$lang->column_type_list['jp_zip'] = '日本郵編 (zip)'; + $lang->column_type_list['date'] = '日期(年月日)'; + //$lang->column_type_list['jp_zip'] = '日本郵編(zip)'; $lang->column_name = '項目名稱'; $lang->column_title = '項目標題'; $lang->default_value = '預設值'; @@ -298,8 +298,8 @@ $lang->msg_ftp_connect_success = 'FTP連線成功。'; $lang->ftp_path_title = '請輸入FTP路經'; - $lang->msg_ftp_installed_realpath = '安裝XE時的絕對路經'; - $lang->msg_ftp_installed_ftp_realpath = '請輸入安裝XE時的FTP絕對路經'; + $lang->msg_ftp_installed_realpath = 'XE絕對路經'; + $lang->msg_ftp_installed_ftp_realpath = 'XE的FTP絕對路經'; // 在xml filter中所使用的JavaScript警告訊息 diff --git a/modules/admin/lang/zh-TW.lang.php b/modules/admin/lang/zh-TW.lang.php index 05edaceff..5fc5dc857 100644 --- a/modules/admin/lang/zh-TW.lang.php +++ b/modules/admin/lang/zh-TW.lang.php @@ -56,7 +56,6 @@ $lang->msg_default_act_is_null = '沒有指定預設管理員的動作,是無法新增到快捷選單的。'; $lang->welcome_to_xe = 'XE管理頁面'; - $lang->about_admin_page = "後台管理頁面未完成"; $lang->about_lang_env = "可以設置顯示語言給首次訪問的使用者。修改語言環境後,請按[儲存]按鈕進行儲存。"; $lang->xe_license = 'XE遵循GPL協議'; @@ -78,6 +77,6 @@ $lang->server_ports = "主機埠口"; $lang->about_server_ports = "HTTP預設埠口是『80』、HTTPS是『443』,如果想使用其他的埠口的話,請自行設定。"; $lang->use_db_session = 'DB session認證'; - $lang->about_db_session = '인증시 사용되는 PHP 세션을 DB로 사용하는 기능입니다.
    웹서버의 사용율이 낮은 사이트에서는 비활성화시 사이트 응답 속도가 향상될 수 있습니다
    단 현재 접속자를 구할 수 없어 관련된 기능을 사용할 수 없게 됩니다.'; + $lang->about_db_session = '인증 시 사용되는 PHP 세션을 DB로 사용하는 기능입니다.
    웹서버의 사용률이 낮은 사이트에서는 비활성화시 사이트 응답 속도가 향상될 수 있습니다.
    단 현재 접속자를 구할 수 없어 관련된 기능을 사용할 수 없게 됩니다.'; $lang->sftp = "使用 SFTP"; ?> From c1ff5313ce6be3bcb3792085aff2e0313241f351 Mon Sep 17 00:00:00 2001 From: taggon Date: Mon, 28 Dec 2009 06:32:21 +0000 Subject: [PATCH 082/209] =?UTF-8?q?#18569698=20=ED=85=8D=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EB=85=B8=EB=93=9C=EC=97=90=20MMS=20=EB=A7=81=ED=81=AC?= =?UTF-8?q?=EB=A7=8C=20=EC=A1=B4=EC=9E=AC=ED=95=A0=20=EA=B2=BD=EC=9A=B0,?= =?UTF-8?q?=20=EB=A7=81=ED=81=AC=EB=A5=BC=20=EC=9D=B8=EC=8B=9D=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EB=AA=BB=ED=95=98=EB=8D=98=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7074 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/autolink.js | 2 +- addons/autolink/autolink.spec.html | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/autolink/autolink.js b/addons/autolink/autolink.js index 4b3939ebd..eea4ecf52 100644 --- a/addons/autolink/autolink.js +++ b/addons/autolink/autolink.js @@ -65,7 +65,7 @@ if(content.length < 5) return; - if(!/(http|https|ftp|news|telnet|irc):\/\//i.test(content)) return; + if(!/(http|https|ftp|news|telnet|irc|mms):\/\//i.test(content)) return; thisPlugin.targets.push(this); } else { diff --git a/addons/autolink/autolink.spec.html b/addons/autolink/autolink.spec.html index 670a0a502..aea13835c 100644 --- a/addons/autolink/autolink.spec.html +++ b/addons/autolink/autolink.spec.html @@ -51,7 +51,7 @@ describe('AutoLink functionality', { value_of( $('#test5').contents().length ).should_be(3); }, "#test6 - complex example" : function() { - value_of( $('#test6 a').length ).should_be(7); + value_of( $('#test6 a').length ).should_be(8); value_of( $('#test6 a').eq(0).attr('href') ).should_be($('#test6 a').eq(0).text()); value_of( $('#test6 a').eq(2).parent().is('b') ).should_be_true(); value_of( $('#test6 > textarea > a').length ).should_be(0); @@ -85,7 +85,7 @@ describe('Autolink trigger', {
    http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1
    Before text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 After Text
    - This is text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 Text Text. +

    This is text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 Text Text. Another URL : http://www.decccccf12312.co.uk/path/to/program?mymy=lovelove. XE! Bold text and http://mail.abc.com/path/to/one_cgi.cgi?hello=world#hash_text Bold text end @@ -96,7 +96,8 @@ describe('Autolink trigger', {

    IP Test http://119.205.243.46 and MMS Link mms://xpressengine.com/a.wmv http://localhost/some/path/file.ext - Is it OK? + Is it OK?

    +

    mms://xpressengine.com/a.wmv

    http://mygony.com
    Go to http://mygony.com
    From bb498be38d856ecb539901b2f449a81481f55774 Mon Sep 17 00:00:00 2001 From: misol Date: Mon, 28 Dec 2009 06:55:20 +0000 Subject: [PATCH 083/209] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7075 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/display/DisplayHandler.class.php | 2 +- common/js/xml_handler.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index d18c3373b..8dff0dd19 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -219,7 +219,7 @@ function _toXmlDoc(&$oModule) { $variables = $oModule->getVariables(); - $xmlDoc = "\n"; + $xmlDoc = "\n\n"; $xmlDoc .= sprintf("%s\n",$oModule->getError()); $xmlDoc .= sprintf("%s\n",str_replace(array('<','>','&'),array('<','>','&'),$oModule->getMessage())); diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js index 085fdf91b..65f6ae715 100644 --- a/common/js/xml_handler.js +++ b/common/js/xml_handler.js @@ -29,7 +29,7 @@ function exec_xml(module, act, params, callback_func, response_tags, callback_fu function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg, fo_obj) { var text = oXml.getResponseText(); if(oXml.objXmlHttp.readyState!=4) return; - if(text && !/^/i.test(text)) { + if(text && !/<\/response>$/i.test(text)) { var waiting_obj = xGetElementById("waitingforserverresponse"); if(waiting_obj) waiting_obj.style.visibility = "hidden"; alert(text); From 5a0c4587a4ccb22b671baf8859807f846875151b Mon Sep 17 00:00:00 2001 From: ngleader Date: Mon, 28 Dec 2009 09:31:37 +0000 Subject: [PATCH 084/209] update counter queries git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7076 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/counter/counter.controller.php | 14 ++++++++++++-- modules/counter/queries/updateCounterPageview.xml | 2 +- modules/counter/queries/updateCounterUnique.xml | 2 +- .../counter/queries/updateSiteCounterPageview.xml | 4 ++-- .../counter/queries/updateSiteCounterUnique.xml | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/modules/counter/counter.controller.php b/modules/counter/counter.controller.php index a78891f0d..5c085e453 100644 --- a/modules/counter/counter.controller.php +++ b/modules/counter/counter.controller.php @@ -63,11 +63,16 @@ * @brief unique visitor 등록 **/ function insertUniqueVisitor($site_srl=0) { - $args->regdate = '0,'.date("Ymd"); if($site_srl) { + $args->regdate = '0'; $args->site_srl = $site_srl; + $output = executeQuery('counter.updateSiteCounterUnique', $args); + $args->regdate = date('Ymd'); $output = executeQuery('counter.updateSiteCounterUnique', $args); } else { + $args->regdate = '0'; + $output = executeQuery('counter.updateCounterUnique', $args); + $args->regdate = date('Ymd'); $output = executeQuery('counter.updateCounterUnique', $args); } } @@ -76,11 +81,16 @@ * @brief pageview 등록 **/ function insertPageView($site_srl=0) { - $args->regdate = '0, '.date('Ymd'); if($site_srl) { + $args->regdate = '0'; $args->site_srl = $site_srl; + executeQuery('counter.updateSiteCounterPageview', $args); + $args->regdate = date('Ymd'); executeQuery('counter.updateSiteCounterPageview', $args); } else { + $args->regdate = '0'; + executeQuery('counter.updateCounterPageview', $args); + $args->regdate = date('Ymd'); executeQuery('counter.updateCounterPageview', $args); } } diff --git a/modules/counter/queries/updateCounterPageview.xml b/modules/counter/queries/updateCounterPageview.xml index a950964c0..d4ec933b4 100644 --- a/modules/counter/queries/updateCounterPageview.xml +++ b/modules/counter/queries/updateCounterPageview.xml @@ -6,6 +6,6 @@ - + diff --git a/modules/counter/queries/updateCounterUnique.xml b/modules/counter/queries/updateCounterUnique.xml index 3f39afc4f..2cdfe6048 100644 --- a/modules/counter/queries/updateCounterUnique.xml +++ b/modules/counter/queries/updateCounterUnique.xml @@ -7,6 +7,6 @@ - + diff --git a/modules/counter/queries/updateSiteCounterPageview.xml b/modules/counter/queries/updateSiteCounterPageview.xml index 6c9351ffe..d527181c9 100644 --- a/modules/counter/queries/updateSiteCounterPageview.xml +++ b/modules/counter/queries/updateSiteCounterPageview.xml @@ -6,7 +6,7 @@ - - + + diff --git a/modules/counter/queries/updateSiteCounterUnique.xml b/modules/counter/queries/updateSiteCounterUnique.xml index 18332934b..8d6e4ad42 100644 --- a/modules/counter/queries/updateSiteCounterUnique.xml +++ b/modules/counter/queries/updateSiteCounterUnique.xml @@ -8,6 +8,6 @@ - + From 3d7048b4eee39662ec831d545b9c26bb3c1a6c42 Mon Sep 17 00:00:00 2001 From: ngleader Date: Tue, 29 Dec 2009 02:01:03 +0000 Subject: [PATCH 085/209] fix r7027 git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7077 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DBCubrid.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index ad8c183f2..eb3d33e86 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -482,7 +482,10 @@ } $query = sprintf("insert into %s (%s) values (%s);", implode(',',$table_list), implode(',',$column_list), implode(',', $value_list)); - return $this->_query($query); + $result = $this->_query($query); + if($result && !$this->transaction_started) @cubrid_commit($this->fd); + return $result; + } /** From 7352faa914ca4dbd5705fc97dd2e4aca2f4eb366 Mon Sep 17 00:00:00 2001 From: taggon Date: Tue, 29 Dec 2009 07:33:23 +0000 Subject: [PATCH 086/209] =?UTF-8?q?#18573849=20=EC=9D=BC=EB=B6=80=20?= =?UTF-8?q?=EC=98=A4=EB=9E=98=EB=90=9C=20=EB=B2=84=EC=A0=84=EC=9D=98=20Apa?= =?UTF-8?q?che=EC=97=90=EC=84=9C=20\w,=20\d=20=EB=93=B1=EC=9D=98=20?= =?UTF-8?q?=EC=A0=95=EA=B7=9C=EC=8B=9D=20=ED=91=9C=ED=98=84=EC=9D=84=20?= =?UTF-8?q?=EC=9D=B4=ED=95=B4=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7078 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.htaccess b/.htaccess index f0ccec8d1..1822318fb 100644 --- a/.htaccess +++ b/.htaccess @@ -7,38 +7,38 @@ RewriteRule ^layouts/(.+)/(.+)\.html$ ./index.php [L] RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.+)/files/(member_extra_info|attach|cache|faceOff)/(.*) ./files/$2/$3 [L] RewriteCond %{SCRIPT_FILENAME} !-f -RewriteRule ^(\w+)(/\w+(/entry)?)?/(files|modules|common|widgets|widgetStyle|layouts|addons)/(.*) ./$4/$5 [L] +RewriteRule ^([a-zA-Z0-9_]+)(/[a-zA-Z0-9_]+(/entry)?)?/(files|modules|common|widgets|widgetStyle|layouts|addons)/(.*) ./$4/$5 [L] # rss , blogAPI RewriteRule ^(rss|atom)$ ./index.php?module=rss&act=$1 [L] -RewriteRule ^(\w+)/(rss|atom|api)$ ./index.php?mid=$1&act=$2 [L] -RewriteRule ^(\w+)/(\w+)/(rss|atom|api)$ ./index.php?vid=$1&mid=$2&act=$3 [L] +RewriteRule ^([a-zA-Z0-9_]+)/(rss|atom|api)$ ./index.php?mid=$1&act=$2 [L] +RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/(rss|atom|api)$ ./index.php?vid=$1&mid=$2&act=$3 [L] # trackback -RewriteRule ^(\d+)/(.+)/trackback$ ./index.php?document_srl=$1&key=$2&act=trackback [L] -RewriteRule ^(\w+)/(\d+)/(.+)/trackback$ ./index.php?vid=$1&document_srl=$2&key=$3&act=trackback [L] +RewriteRule ^([0-9]+)/(.+)/trackback$ ./index.php?document_srl=$1&key=$2&act=trackback [L] +RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?vid=$1&document_srl=$2&key=$3&act=trackback [L] # administrator page RewriteRule ^admin/?$ ./index.php?module=admin [L] # document permanent link -RewriteRule ^(\d+)$ ./index.php?document_srl=$1 [L] +RewriteRule ^([0-9]+)$ ./index.php?document_srl=$1 [L] # vid + document permanent link -RewriteRule ^(\w+)/(\d+)$ ./index.php?vid=$1&document_srl=$2 [L] +RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)$ ./index.php?vid=$1&document_srl=$2 [L] # mid link RewriteCond %{SCRIPT_FILENAME} !-d -RewriteRule ^(\w+)/?$ ./index.php?mid=$1 [L] +RewriteRule ^([a-zA-Z0-9_]+)/?$ ./index.php?mid=$1 [L] +# mid + document link +RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)$ ./index.php?mid=$1&document_srl=$2 [L] + # vid + mid link RewriteCond %{SCRIPT_FILENAME} !-d -RewriteRule ^(\w+)/(\w+)/?$ ./index.php?vid=$1&mid=$2 [L] - -# mid + document link -RewriteRule ^(\w+)/(\d+)$ ./index.php?mid=$1&document_srl=$2 [L] +RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$ ./index.php?vid=$1&mid=$2 [L] # vid + mid + document link -RewriteRule ^(\w+)/(\w+)/(\d+)$ ./index.php?vid=$1&mid=$2&document_srl=$3 [L] +RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)$ ./index.php?vid=$1&mid=$2&document_srl=$3 [L] # mid + entry title -RewriteRule ^(\w+)/entry/(.+)$ ./index.php?mid=$1&entry=$2 [L] +RewriteRule ^([a-zA-Z0-9_]+)/entry/(.+)$ ./index.php?mid=$1&entry=$2 [L] # vid + mid + entry title -RewriteRule ^(\w+)/(\w+)/entry/(.+)$ ./index.php?vid=$1&mid=$2&entry=$3 [L] \ No newline at end of file +RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/entry/(.+)$ ./index.php?vid=$1&mid=$2&entry=$3 [L] \ No newline at end of file From e4f0306a420c901eef39f73a48c0ecb81c670442 Mon Sep 17 00:00:00 2001 From: taggon Date: Wed, 30 Dec 2009 05:14:28 +0000 Subject: [PATCH 087/209] =?UTF-8?q?#18576578=20XMLJsFilter=EB=A5=BC=20JAF?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EB=8F=84=EB=A1=9D=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7079 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/xml/XmlJsFilter.class.php | 476 +++++++++++++------------- common/js/xml_js_filter.js | 552 ++++++++++++++---------------- 2 files changed, 496 insertions(+), 532 deletions(-) diff --git a/classes/xml/XmlJsFilter.class.php b/classes/xml/XmlJsFilter.class.php index d54105c03..baea7b0e2 100644 --- a/classes/xml/XmlJsFilter.class.php +++ b/classes/xml/XmlJsFilter.class.php @@ -1,269 +1,287 @@ - * <-- 폼 항목의 체크 - * - * - * <-- 폼 항목을 조합하여 key=val 의 js array로 return, act는 필수 - * - * - * <-- 서버에 ajax로 전송하여 받을 결과값 - * <-- error이름의 결과값을 받겠다는 것 - * - * - * - * - form - node - * target = 폼 element의 이름 - * required = true/ false 꼭 있어야 하는지에 대한 체크 - * minlength, maxlength = 최소/최대 길이 - * filter = javascript로 체크하기 위한 체크 필터 - * email : email의 형식 ( aaa.aaa@aaa.com) - * userid : 영문+숫자+_, 첫 글자는 영문, 소문자 - * alpha : 영문값만 허용 - * number : 숫자만 허용 - * equalto = target , 현재 폼과 지정 target의 값이 동일해야 함 - * - * - parameter - param - * name = key : key를 이름으로 가지고 value의 값을 가지는 array 값 생성 - * target = target_name : target form element의 값을 가져옴 - * - * - response - * tag = key : return받을 결과값의 변수명 - **/ + /** + * @class XmlJsFilter + * @author zero (zero@nzeo.com) + * @brief filter xml문서를 해석하여 js파일로 만듬 + * @version 0.1 + * + * xml filter 파일은 js script로 컴파일 되어 캐싱됨 + * + * + *
    <-- 폼 항목의 체크 + * + * + * <-- 폼 항목을 조합하여 key=val 의 js array로 return, act는 필수 + * + * + * <-- 서버에 ajax로 전송하여 받을 결과값 + * <-- error이름의 결과값을 받겠다는 것 + * + *
    + * + * - form - node + * target = 폼 element의 이름 + * required = true/ false 꼭 있어야 하는지에 대한 체크 + * minlength, maxlength = 최소/최대 길이 + * filter = javascript로 체크하기 위한 체크 필터 + * email : email의 형식 ( aaa.aaa@aaa.com) + * userid : 영문+숫자+_, 첫 글자는 영문, 소문자 + * alpha : 영문값만 허용 + * number : 숫자만 허용 + * equalto = target , 현재 폼과 지정 target의 값이 동일해야 함 + * + * - parameter - param + * name = key : key를 이름으로 가지고 value의 값을 가지는 array 값 생성 + * target = target_name : target form element의 값을 가져옴 + * + * - response + * tag = key : return받을 결과값의 변수명 + **/ - class XmlJsFilter extends XmlParser { - var $compiled_path = './files/cache/js_filter_compiled/'; ///< 컴파일된 캐시 파일이 놓일 위치 - var $xml_file = NULL; ///< 대상 xml 파일 - var $js_file = NULL; ///< 컴파일된 js 파일 + class XmlJsFilter extends XmlParser { + var $compiled_path = './files/cache/js_filter_compiled/'; ///< 컴파일된 캐시 파일이 놓일 위치 + var $xml_file = NULL; ///< 대상 xml 파일 + var $js_file = NULL; ///< 컴파일된 js 파일 - /** - * @brief constructor - **/ - function XmlJsFilter($path, $xml_file) { - if(substr($path,-1)!=='/') $path .= '/'; - $this->xml_file = sprintf("%s%s",$path, $xml_file); - $this->js_file = $this->_getCompiledFileName($this->xml_file); - } + /** + * @brief constructor + **/ + function XmlJsFilter($path, $xml_file) { + if(substr($path,-1)!=='/') $path .= '/'; + $this->xml_file = sprintf("%s%s",$path, $xml_file); + $this->js_file = $this->_getCompiledFileName($this->xml_file); + } - /** - * @brief 원 xml파일과 compiled된js파일의 시간 비교 및 유무 비교등을 처리 - **/ - function compile() { - if(!file_exists($this->xml_file)) return; - if(!file_exists($this->js_file)) $this->_compile(); - else if(filemtime($this->xml_file)>filemtime($this->js_file)) $this->_compile(); - Context::addJsFile($this->js_file); - } + /** + * @brief 원 xml파일과 compiled된js파일의 시간 비교 및 유무 비교등을 처리 + **/ + function compile() { + if(!file_exists($this->xml_file)) return; + if(!file_exists($this->js_file)) $this->_compile(); + else if(filemtime($this->xml_file)>filemtime($this->js_file)) $this->_compile(); + Context::addJsFile($this->js_file); + } - /** - * @brief 실제 xml_file을 컴파일하여 js_file을 생성 - **/ - function _compile() { - global $lang; + /** + * @brief 실제 xml_file을 컴파일하여 js_file을 생성 + **/ + function _compile() { + global $lang; - // xml 파일을 읽음 - $buff = FileHandler::readFile($this->xml_file); + // xml 파일을 읽음 + $buff = FileHandler::readFile($this->xml_file); - // xml parsing - $xml_obj = parent::parse($buff); + // xml parsing + $xml_obj = parent::parse($buff); - // XmlJsFilter는 filter_name, field, parameter 3개의 데이터를 핸들링 - $filter_name = $xml_obj->filter->attrs->name; - $confirm_msg_code = $xml_obj->filter->attrs->confirm_msg_code; - $module = $xml_obj->filter->attrs->module; - $act = $xml_obj->filter->attrs->act; - $extend_filter = $xml_obj->filter->attrs->extend_filter; + // XmlJsFilter는 filter_name, field, parameter 3개의 데이터를 핸들링 + $filter_name = $xml_obj->filter->attrs->name; + $confirm_msg_code = $xml_obj->filter->attrs->confirm_msg_code; + $module = $xml_obj->filter->attrs->module; + $act = $xml_obj->filter->attrs->act; + $extend_filter = $xml_obj->filter->attrs->extend_filter; - $field_node = $xml_obj->filter->form->node; - if($field_node && !is_array($field_node)) $field_node = array($field_node); + $field_node = $xml_obj->filter->form->node; + if($field_node && !is_array($field_node)) $field_node = array($field_node); - $parameter_param = $xml_obj->filter->parameter->param; - if($parameter_param && !is_array($parameter_param)) $parameter_param = array($parameter_param); + $parameter_param = $xml_obj->filter->parameter->param; + if($parameter_param && !is_array($parameter_param)) $parameter_param = array($parameter_param); - $response_tag = $xml_obj->filter->response->tag; - if($response_tag && !is_array($response_tag)) $response_tag = array($response_tag); + $response_tag = $xml_obj->filter->response->tag; + if($response_tag && !is_array($response_tag)) $response_tag = array($response_tag); - // extend_filter가 있을 경우 해당 method를 호출하여 결과를 받음 - if($extend_filter) { + // extend_filter가 있을 경우 해당 method를 호출하여 결과를 받음 + if($extend_filter) { - // extend_filter가 있을 경우 캐시 사용을 못하도록 js 캐시 파일명을 변경 - $this->js_file .= '.nocache.js'; + // extend_filter가 있을 경우 캐시 사용을 못하도록 js 캐시 파일명을 변경 + $this->js_file .= '.nocache.js'; - // extend_filter는 module.method 로 지칭되어 이를 분리 - list($module_name, $method) = explode('.',$extend_filter); + // extend_filter는 module.method 로 지칭되어 이를 분리 + list($module_name, $method) = explode('.',$extend_filter); - // 모듈 이름과 method가 있을 경우 진행 - if($module_name&&$method) { - // 해당 module의 model 객체를 받음 - $oExtendFilter = &getModel($module_name); + // 모듈 이름과 method가 있을 경우 진행 + if($module_name&&$method) { + // 해당 module의 model 객체를 받음 + $oExtendFilter = &getModel($module_name); - // method가 존재하면 실행 - if(method_exists($oExtendFilter, $method)) { - // 결과를 받음 - //$extend_filter_list = call_user_method($method, $oExtendFilter, true); - //$extend_filter_list = call_user_func(array($oExtendFilter, $method)); - $extend_filter_list = $oExtendFilter->{$method}(true); - $extend_filter_count = count($extend_filter_list); + // method가 존재하면 실행 + if(method_exists($oExtendFilter, $method)) { + // 결과를 받음 + $extend_filter_list = $oExtendFilter->{$method}(true); + $extend_filter_count = count($extend_filter_list); - // 결과에서 lang값을 이용 문서 변수에 적용 - for($i=0;$i<$extend_filter_count;$i++) { - $name = $extend_filter_list[$i]->name; - $lang_value = $extend_filter_list[$i]->lang; - if($lang_value) $lang->{$name} = $lang_value; - } - } + // 결과에서 lang값을 이용 문서 변수에 적용 + for($i=0; $i < $extend_filter_count; $i++) { + $name = $extend_filter_list[$i]->name; + $lang_value = $extend_filter_list[$i]->lang; + if($lang_value) $lang->{$name} = $lang_value; + } + } - } - } + } + } - $callback_func = $xml_obj->filter->response->attrs->callback_func; - if(!$callback_func) $callback_func = "filterAlertMessage"; + $callback_func = $xml_obj->filter->response->attrs->callback_func; + if(!$callback_func) $callback_func = "filterAlertMessage"; - // 언어 입력을 위한 사용되는 필드 조사 - $target_list = array(); - $target_type_list = array(); + // 언어 입력을 위한 사용되는 필드 조사 + $target_list = array(); + $target_type_list = array(); - // js function 을 만들기 시작 - $js_doc = sprintf("function %s(fo_obj) {\n", $filter_name); - $js_doc .= sprintf("\tvar oFilter = new XmlJsFilter(fo_obj, \"%s\", \"%s\", %s);\n", $module, $act, $callback_func); + // js function 을 만들기 시작 + $js_doc = array(); + $js_doc[] = "function {$filter_name}(fo_obj){"; + $js_doc[] = "\tvar validator = xe.getApp('validator')[0];"; + $js_doc[] = "\tif(!validator) return false;"; + $js_doc[] = "\tif(!fo_obj.elements['_filter']) jQuery(fo_obj).prepend('');"; + $js_doc[] = "\tfo_obj.elements['_filter'].value = '{$filter_name}';"; + $js_doc[] = "\tjQuery(fo_obj).attr('action', request_uri+'index.php?module={$module}&act={$act}'+(typeof(xeVid)=='string'?'&vid='+xeVid:''));"; - // field, 즉 체크항목의 script 생성 - $node_count = count($field_node); - if($node_count) { - foreach($field_node as $key =>$node) { - $attrs = $node->attrs; - $target = trim($attrs->target); - if(!$target) continue; - $required = $attrs->required=='true'?'true':'false'; - $minlength = $attrs->minlength>0?$attrs->minlength:'0'; - $maxlength = $attrs->maxlength>0?$attrs->maxlength:'0'; - $equalto = trim($attrs->equalto); - $filter = $attrs->filter; + $jsdoc = array(); + $jsdoc[] = '(function($){'; + $jsdoc[] = "\tvar validator = xe.getApp('Validator')[0];"; + $jsdoc[] = "\tif(!validator) return false;"; + $jsdoc[] = "\tvalidator.cast('ADD_FILTER', ['{$filter_name}', {"; - $js_doc .= sprintf( - "\toFilter.addFieldItem(\"%s\",%s,%s,%s,\"%s\",\"%s\");\n", - $target, $required, $minlength, $maxlength, $equalto, $filter - ); + $fields = array(); - if(!in_array($target, $target_list)) $target_list[] = $target; - if(!$target_type_list[$target]) $target_type_list[$target] = $filter; - } - } + // field, 즉 체크항목의 script 생성 + $node_count = count($field_node); + if($node_count) { + foreach($field_node as $key =>$node) { + $attrs = $node->attrs; + $target = trim($attrs->target); + if(!$target) continue; + $filter = $attrs->filter; - // extend_filter_item 체크 - for($i=0;$i<$extend_filter_count;$i++) { - $filter_item = $extend_filter_list[$i]; - $target = trim($filter_item->name); - if(!$target) continue; - $type = $filter_item->type; - $required = $filter_item->required?'true':'false'; + $attrs->equalto = trim($attrs->equalto); - // extend filter item의 type으로 filter를 구함 - switch($type) { - case 'homepage' : - $filter = 'homepage'; - break; - case 'email_address' : - $filter = 'email'; - break; - default : - $filter = ''; - break; - } + $field = array(); + if($attrs->required == 'true') $field[] = 'required:true'; + if($attrs->minlength > 0) $field[] = 'minlength:'.$attrs->minlength; + if($attrs->maxlength > 0) $field[] = 'maxlength:'.$attrs->maxlength; + if($attrs->equalto) $field[] = "equalto:'{$attrs->equalto}'"; + if($attrs->filter) $field[] = "rule:'{$attrs->filter}'"; + $s_field = implode(',', $field); + $fields[] = "\t\t'{$target}': {{$s_field}}"; - $js_doc .= sprintf( - "\toFilter.addFieldItem(\"%s\",%s,%s,%s,\"%s\",\"%s\");\n", - $target, $required, 0, 0, '', $filter - ); + if(!in_array($target, $target_list)) $target_list[] = $target; + if(!$target_type_list[$target]) $target_type_list[$target] = $filter; + } + } - if(!in_array($target, $target_list)) $target_list[] = $target; - if(!$target_type_list[$target]) $target_type_list[$target] = $type; + // extend_filter_item 체크 + for($i=0;$i<$extend_filter_count;$i++) { + $filter_item = $extend_filter_list[$i]; + $target = trim($filter_item->name); + if(!$target) continue; + $type = $filter_item->type; + $required = $filter_item->required?'true':'false'; - } + // extend filter item의 type으로 filter를 구함 + $types = array('homepage'=>'homepage', 'email_address'=>'email'); + $fitler = $types[$type]?$types[$type]:''; - // 데이터를 만들기 위한 parameter script 생성 - $parameter_count = count($parameter_param); - if($parameter_count) { - // 기본 필터 내용의 parameter로 구성 - foreach($parameter_param as $key =>$param) { - $attrs = $param->attrs; - $name = trim($attrs->name); - $target = trim($attrs->target); - if(!$name || !$target) continue; - $target = htmlentities($target,ENT_QUOTES); + $field = array(); + if($filter_item->required == 'true') $field[] = 'required:true'; + if($filter) $field[] = "rule:'{$filter}'"; + $s_field = implode(',', $field); + $fields[] = "\t\t'{$target}' : {{$s_field}}"; - $js_doc .= sprintf( - "\toFilter.addParameterItem(\"%s\",\"%s\");\n", - $name, $target - ); - if(!in_array($name, $target_list)) $target_list[] = $name; - } + if(!in_array($target, $target_list)) $target_list[] = $target; + if(!$target_type_list[$target]) $target_type_list[$target] = $type; + } - // extend_filter_item 체크 - for($i=0;$i<$extend_filter_count;$i++) { - $filter_item = $extend_filter_list[$i]; - $target = $name = trim($filter_item->name); - if(!$name || !$target) continue; - $target = htmlentities($target,ENT_QUOTES); + $jsdoc[] = implode(",\n", $fields); + $jsdoc[] = "\t}]);"; - $js_doc .= sprintf( - "\toFilter.addParameterItem(\"%s\",\"%s\");\n", - $name, $target - ); - if(!in_array($name, $target_list)) $target_list[] = $name; - } - } + // javascript callback function + $js_doc[] = "\tvalidator.cast('ADD_CALLBACK', ['{$filter_name}', function(form){"; + $js_doc[] = "\t\tvar params={}, responses=[], elms=form.elements, data=jQuery(form).serializeArray();"; + $js_doc[] = "\t\tjQuery.each(data, function(i, field){ if(field.value) params[field.name] = field.value; });"; - // response script 생성 - $response_count = count($response_tag); - for($i=0;$i<$response_count;$i++) { - $attrs = $response_tag[$i]->attrs; - $name = $attrs->name; - $js_doc .= sprintf("\toFilter.addResponseItem(\"%s\");\n", $name); - } + // 데이터를 만들기 위한 parameter script 생성 + $parameter_count = count($parameter_param); + if($parameter_count) { + // 기본 필터 내용의 parameter로 구성 + foreach($parameter_param as $key =>$param) { + $attrs = $param->attrs; + $name = trim($attrs->name); + $target = trim($attrs->target); - if($confirm_msg_code) $js_doc .= sprintf("\treturn oFilter.proc(\"%s\");\n",str_replace('"','\"',$lang->{$confirm_msg_code})); - else $js_doc .= sprintf("\treturn oFilter.proc();\n"); - $js_doc .= "}\n"; + if($name && $target && ($name != $target)) $js_doc[] = "\t\tparams['{$name}'] = params['{$target}']; delete params['{$target}'];"; + if(!in_array($name, $target_list)) $target_list[] = $name; + } - // form 필드 lang 값을 기록 - $target_count = count($target_list); - for($i=0;$i<$target_count;$i++) { - $target = $target_list[$i]; - if(!$lang->{$target}) $lang->{$target} = $target; - $js_doc .= sprintf("alertMsg[\"%s\"] = \"%s\";\n", $target, str_replace("\"","\\\"",$lang->{$target})); - } + // extend_filter_item 체크 + for($i=0;$i<$extend_filter_count;$i++) { + $filter_item = $extend_filter_list[$i]; + $target = $name = trim($filter_item->name); + if(!$name || !$target) continue; - // target type을 기록 - $target_type_count = count($target_type_list); - if($target_type_count) { - foreach($target_type_list as $target => $type) { - $js_doc .= sprintf("target_type_list[\"%s\"] = \"%s\";\n", $target, $type); - } - } + if(!in_array($name, $target_list)) $target_list[] = $name; + } + } - // 에러 메세지를 기록 - foreach($lang->filter as $key => $val) { - if(!$val) $val = $key; - $js_doc .= sprintf("alertMsg[\"%s\"] = \"%s\";\n", $key, str_replace("\"","\\\"",$val)); - } + // response script 생성 + $response_count = count($response_tag); + $responses = array(); + for($i=0;$i<$response_count;$i++) { + $attrs = $response_tag[$i]->attrs; + $name = $attrs->name; + $responses[] = "'{$name}'"; + } + $js_doc[] = "\t\tresponses = [".implode(',', $responses)."];"; - // js파일 생성 - FileHandler::writeFile($this->js_file, $js_doc); - } + //if($confirm_msg_code) $js_doc .= sprintf("\treturn oFilter.proc(\"%s\");\n",str_replace('"','\"',$lang->{$confirm_msg_code})); + //else $js_doc .= sprintf("\treturn oFilter.proc();\n"); + //$js_doc .= "}\n"; - /** - * @brief $xml_file로 compiled_xml_file이름을 return - **/ - function _getCompiledFileName($xml_file) { - return sprintf('%s%s.%s.compiled.js',$this->compiled_path, md5($xml_file),Context::getLangType()); - } - } -?> + $js_doc[] = "\t\texec_xml('{$module}','{$act}', params, {$callback_func}, responses, params, form);"; + $js_doc[] = "\t}]);"; + + // form 필드 lang 값을 기록 + $target_count = count($target_list); + for($i=0;$i<$target_count;$i++) { + $target = $target_list[$i]; + if(!$lang->{$target}) $lang->{$target} = $target; + $jsdoc[] = sprintf("\tvalidator.cast('ADD_MESSAGE', ['%s', '%s']);", $target, str_replace('\'', '\\\'', $lang->{$target})); + } + + // target type을 기록 + /* + $target_type_count = count($target_type_list); + if($target_type_count) { + foreach($target_type_list as $target => $type) { + //$js_doc .= sprintf("target_type_list[\"%s\"] = \"%s\";\n", $target, $type); + } + } + */ + + // 에러 메세지를 기록 + foreach($lang->filter as $key => $val) { + if(!$val) $val = $key; + $jsdoc[] = sprintf("\tvalidator.cast('ADD_MESSAGE', ['%s', '%s']);", $key, str_replace('\'', '\\\'', $val)); + } + + $jsdoc[] = '})(jQuery);'; + + $js_doc[] = "\tvalidator.cast('VALIDATE', [fo_obj,'{$filter_name}']);"; + $js_doc[] = "\treturn false;"; + $js_doc[] = "};\n"; + + $js_doc = implode("\n", $js_doc); + $jsdoc = implode("\n", $jsdoc); + + // js파일 생성 + FileHandler::writeFile($this->js_file, $js_doc."\n".$jsdoc); + } + + /** + * @brief $xml_file로 compiled_xml_file이름을 return + **/ + function _getCompiledFileName($xml_file) { + return sprintf('%s%s.%s.compiled.js',$this->compiled_path, md5($xml_file),Context::getLangType()); + } + } +?> \ No newline at end of file diff --git a/common/js/xml_js_filter.js b/common/js/xml_js_filter.js index 181d9c91c..a10868e6e 100644 --- a/common/js/xml_js_filter.js +++ b/common/js/xml_js_filter.js @@ -1,16 +1,248 @@ /** * @file common/js/xml_js_filter.js - * @author zero (zero@nzeo.com) - * @brief xml filter에서 사용될 js - * - * zbxe 에서 form의 동작시 필수입력 여부등을 선처리하고 xml_handler.js의 exec_xml()을 통해서 - * 특정 모듈과의 ajax 통신을 통해 process를 진행시킴 + * @author taggon (taggon@gmail.com) + * @brief xml filter (validator) plugin + * + * A rule is a method validate one field. + * A filter is made up of one or more rules. **/ +(function($){ -var alertMsg = new Array(); -var target_type_list = new Array(); -var notnull_list = new Array(); -var extra_vars = new Array(); +var messages = []; +var rules = []; +var filters = []; +var callbacks = []; + +var Validator = xe.createApp('Validator', { + init : function() { + // {{{ add filters + // email + var regEmail = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)*$/; + this.cast('ADD_RULE', ['email', regEmail]); + this.cast('ADD_RULE', ['email_address', regEmail]); + + // userid + var regUserid = /^[a-z]+[\w-]*[a-z0-9]+$/i; + this.cast('ADD_RULE', ['userid', regUserid]); + this.cast('ADD_RULE', ['user_id', regUserid]); + + // url + var regUrl = /^(https?|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-\/\~]+)+(:[0-9]{2,4})*$/; + this.cast('ADD_RULE', ['url', regUrl]); + this.cast('ADD_RULE', ['homepage', regUrl]); + + // korean + var regKor = /^[가-힣]*$/; + this.cast('ADD_RULE', ['koeran', regKor]); + + // korean_number + var regKorNum = /^[가-힣0-9]*$/; + this.cast('ADD_RULE', ['korean_number', regKorNum]); + + // alpha + var regAlpha = /^[a-z]*$/i; + this.cast('ADD_RULE', ['alpha', regAlpha]); + + // alpha_number + var regAlphaNum = /^[a-z][a-z0-9_]*$/i; + this.cast('ADD_RULE', ['alpha_number', regAlphaNum]); + + // numver + var regNum = /^[0-9]*$/i; + this.cast('ADD_RULE', ['number', regNum]); + // }}} add filters + }, + // run validator + run : function(oForm) { + var filter = ''; + + if (oForm._filter) filter = oForm._filter.value; + + return this.cast('VALIDATE', [oForm, filter]); + }, + API_ONREADY : function() { + var self = this; + + // hook form submit event + $('form') + .each(function(){ + if (this.onsubmit) { + this['xe:onsubmit'] = this.onsubmit; + this.onsubmit = null; + } + }) + .submit(function(){ + var legacyFn = this['xe:onsubmit']; + var hasLegacyFn = $.isFunction(legacyFn); + var bResult = hasLegacyFn?legacyFn.apply(this):self.run(this); + + return false; + }); + }, + API_VALIDATE : function(sender, params) { + var self = this, result = true, form = params[0], filter=null, callback=null; + + if (form.elements['_filter']) filter = form.elements['_filter'].value; + if (!filter) return true; + if ($.isFunction(callbacks[filter])) callback = callbacks[filter]; + filter = filters[filter.toLowerCase()] || null; + + $.each(filter, function(name) { + var _el = form.elements[name]; + + if (!_el) return true; + + var el = $(_el), val = get_value(el); + var minlen = parseInt(this.minlen) || 0; + var maxlen = parseInt(this.maxlen) || 0; + var rule = (this.rule || '').split(','); + + if (this.required && !val) (result = (!!self.cast('ALERT', [form, name, 'isnull']) && false)); + if ((minlen && maxlen) && (val.length < minlen || val.length > maxlen)) return (result = (!!self.cast('ALERT', [form, name, 'outofrange', minlen, maxlen]) && false)); + + if (this.equalto) { + var eq_val = get_value(form.elements[this.equalto]); + if (eq_val != val) return (result = (!!self.cast('ALERT', [form, name, 'equalto']) && false)); + } + + $.each(rule, function() { + var ret = self.cast('APPLY_RULE', [this, val]); + if (!ret) return (result = false); + }); + + if (!result) return false; + }); + + if (!result) return false; + if ($.isFunction(callback)) return callback(form); + + return true; + }, + API_ADD_RULE : function(sender, params) { + var name = params[0].toLowerCase(); + rules[name] = params[1]; + }, + API_DEL_RULE : function(sender, params) { + var name = params[0].toLowerCase(); + delete rules[name]; + }, + API_GET_RULE : function(sender, params) { + var name = params[0].toLowerCase(); + + if (rules[name]) { + return rules[name]; + } else { + return null; + } + }, + API_ADD_FILTER : function(sender, params) { + var name = params[0].toLowerCase(); + var filter = params[1]; + + filters[name] = filter; + }, + API_DEL_FILTER : function(sender, params) { + var name = params[0].toLowerCase(); + delete filters[name]; + }, + API_GET_FILTER : function(sender, params) { + var name = params[0].toLowerCase(); + + if (filters[name]) { + return filters[name]; + } else { + return null; + } + }, + API_APPLY_RULE : function(sender, params) { + var name = params[0].toLowerCase(); + var value = params[1]; + + if (typeof(rules[name]) == 'undefined') return true; // no filter + if ($.isFunction(rules[name])) return rules[name](value); + if (rules[name] instanceof RegExp) return rules[name].test(value); + + return true; + }, + API_ALERT : function(sender, params) { + var form = params[0]; + var field_name = params[1]; + var msg_code = params[2]; + var minlen = params[3]; + var maxlen = params[4]; + + var field_msg = this.cast('GET_MESSAGE', [field_name]); + var msg = this.cast('GET_MESSAGE', [msg_code]); + + if (msg != msg_code) msg = (msg.indexOf('%s')<0)?(field_msg+msg):(msg.replace('%s',field_msg)); + if (typeof(minlen)!='undefined' && typeof(maxlen)!='undefined') msg += '('+minlen+'~'+maxlen+')'; + + this.cast('SHOW_ALERT', [msg]); + + // set focus + $(form.elements[field_name]).focus(); + }, + API_SHOW_ALERT : function(sender, params) { + alert(params[0]); + }, + API_ADD_MESSAGE : function(sender, params) { + var msg_code = params[0]; + var msg_str = params[1]; + + messages[msg_code] = msg_str; + }, + API_GET_MESSAGE : function(sender, params) { + var msg_code = params[0]; + + return messages[msg_code] || msg_code; + }, + API_ADD_CALLBACK : function(sender, params) { + var name = params[0]; + var func = params[1]; + + callbacks[name] = func; + }, + API_REMOVE_CALLBACK : function(sender, params) { + var name = params[0]; + + delete callbacks[name]; + } +}); + +var oValidator = new Validator; + +// register validator +xe.registerApp(oValidator); + +// 호환성을 위해 추가한 플러그인 - 에디터에서 컨텐트를 가져와서 설정한다. +var EditorStub = xe.createPlugin('editor_stub', { + API_BEFORE_VALIDATE : function(sender, params) { + var form = params[0]; + var seq = form.getAttribute('editor_sequence'); + + if (seq) { + form.content.value = editorGetContentTextarea_xe(seq) || ''; + } + } +}); +oValidator.registerPlugin(new EditorStub); + +// functions +function get_value(elem) { + if (elem.is(':radio')){ + return elem.filter(':checked').val(); + } else if (elem.is(':checkbox')) { + var vals = []; + elem.filter(':checked').each(function(){ + vals.push(this.value); + }); + return vals.join('|@|'); + } else { + return elem.val(); + } +} + +})(jQuery); /** * @function filterAlertMessage @@ -34,297 +266,11 @@ function filterAlertMessage(ret_obj) { } /** - * @class XmlJsFilter - * @authro zero (zero@nzeo.com) - * @brief form elements, module/act, callback_user_func을 이용하여 서버에 ajax로 form 데이터를 넘기고 결과를 받아오는 js class - **/ -function XmlJsFilter(form_object, module, act, callback_user_func) { - this.field = new Array(); - this.parameter = new Array(); - this.response = new Array(); - - this.fo_obj = form_object; - this.module = module; - this.act = act; - this.user_func = callback_user_func; - this.setFocus = XmlJsFilterSetFocus; - this.addFieldItem = XmlJsFilterAddFieldItem; - this.addParameterItem = XmlJsFilterAddParameterItem; - this.addResponseItem = XmlJsFilterAddResponseItem; - this.getValue = XmlJsFilterGetValue; - this.executeFilter = XmlJsFilterExecuteFilter; - this.checkFieldItem = XmlJsFilterCheckFieldItem; - this.getParameterParam = XmlJsFilterGetParameterParam; - this.alertMsg = XmlJsFilterAlertMsg; - this.proc = XmlJsFilterProc; -} - -function XmlJsFilterSetFocus(target_name) { - var obj = this.fo_obj[target_name]; - if(typeof(obj)=='undefined' || !obj) return; - - var length = obj.length; - try { - if(typeof(length)!='undefined') { - obj[0].focus(); - } else { - obj.focus(); - } - } catch(e) { - } -} - -function XmlJsFilterAddFieldItem(target, required, minlength, maxlength, equalto, filter) { - var obj = new Array(target, required, minlength, maxlength, equalto, filter); - this.field[this.field.length] = obj; -} - -function XmlJsFilterAddParameterItem(param, target) { - var obj = new Array(param, target); - this.parameter[this.parameter.length] = obj; -} - -function XmlJsFilterAddResponseItem(name) { - this.response[this.response.length] = name; -} - -function XmlJsFilterGetValue(target_name) { - var obj = this.fo_obj[target_name]; - if(typeof(obj)=='undefined' || !obj) return ''; - var value = ''; - var length = obj.length; - var type = obj.type; - if((typeof(type)=='undefined'||!type) && typeof(length)!='undefined' && typeof(obj[0])!='undefined' && length>0) type = obj[0].type; - else length = 0; - - switch(type) { - case 'checkbox' : - if(length>0) { - var value_list = new Array(); - for(var i=0;i0) { - for(var i=0;i=0) value = obj.options[obj.selectedIndex].value; - break; - default : - if(length>0 && target_type_list[target_name]) { - switch(target_type_list[target_name]) { - case 'kr_zip' : - var val1 = obj[0].value; - var val2 = obj[1].value; - if(val1&&val2) { - value = val1+'|@|'+val2; - } - break; - case 'tel' : - var val1 = obj[0].value; - var val2 = obj[1].value; - var val3 = obj[2].value; - if(val1&&val2&&val3) { - value = val1+'|@|'+val2+'|@|'+val3; - } - break; - } - - } else { - value = obj.value; - } - break; - } - - if(typeof(value)=='undefined'||!value) return ''; - return value.trim(); -} - -function XmlJsFilterExecuteFilter(filter, value) { - switch(filter) { - case "email" : - case "email_address" : - var regx = /^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*$/; - return regx.test(value); - break; - case "userid" : - case "user_id" : - var regx = /^[a-zA-Z]+([_0-9a-zA-Z]+)*$/; - return regx.test(value); - break; - case "homepage" : - var regx = /^(http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-\/\~]+)+(:[0-9]{2,4})*$/; - return regx.test(value); - break; - case "korean" : - var regx = /^[가-힣]*$/; - return regx.test(value); - break; - case "korean_number" : - var regx = /^[가-힣0-9]*$/; - return regx.test(value); - break; - case "alpha" : - var regx = /^[a-zA-Z]*$/; - return regx.test(value); - break; - case "alpha_number" : - var regx = /^[a-zA-Z][a-zA-Z0-9\_]*$/; - return regx.test(value); - break; - case "number" : - return !isNaN(value); - break; - } - - return null; -} - -function XmlJsFilterAlertMsg(target, msg_code, minlength, maxlength) { - var target_msg = ""; - - if(alertMsg[target]!='undefined') target_msg = alertMsg[target]; - else target_msg = target; - - var msg = ""; - if(typeof(alertMsg[msg_code])!='undefined') { - if(alertMsg[msg_code].indexOf('%s')>=0) msg = alertMsg[msg_code].replace('%s',target_msg); - else msg = target_msg+alertMsg[msg_code]; - } else { - msg = msg_code; - } - - if(typeof(minlength)!='undefined' && typeof(maxlength)!='undefined') msg += "("+minlength+"~"+maxlength+")"; - - alert(msg); - this.setFocus(target); - - return false; -} - -function XmlJsFilterCheckFieldItem() { - for(var i=0; i0 && maxlength>0 && (value.length < minlength || value.length > maxlength)) return this.alertMsg(target, 'outofrange', minlength, maxlength); - - if(equalto) { - var equalto_value = this.getValue(equalto); - if(equalto_value != value) return this.alertMsg(target, 'equalto'); - } - - if(filter.length && filter[0]) { - for(var j=0;j Date: Wed, 30 Dec 2009 05:16:35 +0000 Subject: [PATCH 088/209] =?UTF-8?q?#18576616=20JAF=EC=9D=98=20cast=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=EB=A5=BC=20=EC=A4=91=EC=B2=A9?= =?UTF-8?q?=ED=95=B4=EC=84=9C=20=EC=82=AC=EC=9A=A9=ED=95=A0=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EA=B0=92=EC=9D=84=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8D=98=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7080 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/js_app.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/common/js/js_app.js b/common/js/js_app.js index ada272726..1915f5a0f 100644 --- a/common/js/js_app.js +++ b/common/js/js_app.js @@ -114,7 +114,7 @@ _app_base = { _plugins : [], _messages : [], - _fn_level : -1, + _fn_level : [], /** * @brief register a plugin instance @@ -150,7 +150,7 @@ _app_base = { // binding oPlugin.cast = function(msg, params) { - oPlugin._cast(msg, params); + return oPlugin._cast(msg, params); }; oPlugin.broadcast = function(msg, params) { @@ -215,14 +215,12 @@ _app_base = { msg = msg.toUpperCase(); - // increase function level - this._fn_level++; - // BEFORE hooker if (aMsg['BEFORE_'+msg] || this['API_BEFORE_'+msg]) { var bContinue = this._cast(sender, 'BEFORE_'+msg, params); if (!bContinue) { this._fn_level--; + console.log('-', msg, this._fn_level); return; } } @@ -243,10 +241,7 @@ _app_base = { this._cast(sender, 'AFTER_'+msg, params); } - // decrease function level - this._fn_level--; - - if (this._fn_level < 0) { // top level function + if (!/^(?:AFTER_|BEFORE_)/.test(msg)) { // top level function return vRet; } else { if (typeof vRet == 'undefined') vRet = true; @@ -261,7 +256,7 @@ _plugin_base = { _cast : function(msg, params) { if (this.oApp && this.oApp._cast) { - this.oApp._cast(this, msg, params || []); + return this.oApp._cast(this, msg, params || []); } }, _broadcast : function(msg, params) { From 49843d39c5a55d33592d8d97da0047d04cd16163 Mon Sep 17 00:00:00 2001 From: taggon Date: Wed, 30 Dec 2009 05:22:33 +0000 Subject: [PATCH 089/209] =?UTF-8?q?#18576650=20XpressEditor=EC=9D=98=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@7081 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../skins/xpresseditor/js/Xpress_Editor.js | 711 +++++++++--------- .../skins/xpresseditor/js/xe_interface.js | 413 +++++----- 2 files changed, 550 insertions(+), 574 deletions(-) diff --git a/modules/editor/skins/xpresseditor/js/Xpress_Editor.js b/modules/editor/skins/xpresseditor/js/Xpress_Editor.js index 7cb824d64..d2eb8dd23 100644 --- a/modules/editor/skins/xpresseditor/js/Xpress_Editor.js +++ b/modules/editor/skins/xpresseditor/js/Xpress_Editor.js @@ -1,6 +1,6 @@ -// extends jQuery object (function($){ +// extends jQuery object $.extend({ Class : function(def) { function c(){ @@ -56,8 +56,6 @@ function Class_extend(superDef) { return this; } -})(jQuery); - if (typeof window.xe == 'undefined') window.xe = {}; //{ @@ -65,11 +63,11 @@ if (typeof window.xe == 'undefined') window.xe = {}; * @fileOverview This file contains Xpress framework core * @name XpressCore.js */ -xe.XpressCore = jQuery.Class({ +xe.XpressCore = $.Class({ name : "XpressCore", $init : function(htOptions){ - htOptions = !htOptions?{}:jQuery.Class({}).extend({ + htOptions = !htOptions?{}:$.Class({}).extend({ oDebugger : null }).extend(htOptions); if(htOptions.oDebugger){ @@ -103,7 +101,7 @@ xe.XpressCore = jQuery.Class({ }, delayedExec : function(msg, args, nDelay, oEvent){ - var fExec = jQuery.fnBind(this.exec, this, msg, args, oEvent); + var fExec = $.fnBind(this.exec, this, msg, args, oEvent); setTimeout(fExec, nDelay); }, @@ -150,8 +148,8 @@ xe.XpressCore = jQuery.Class({ registerBrowserEvent : function(obj, sEvent, sCMD, aParams, nDelay){ if(!obj) return; aParams = aParams || []; - var func = (nDelay)?jQuery.fnBind(this.delayedExec, this, sCMD, aParams, nDelay):jQuery.fnBind(this.exec, this, sCMD, aParams); - jQuery(obj).bind(sEvent, func); + var func = (nDelay)?$.fnBind(this.delayedExec, this, sCMD, aParams, nDelay):$.fnBind(this.exec, this, sCMD, aParams); + $(obj).bind(sEvent, func); }, run : function(){ @@ -249,7 +247,7 @@ xe.XpressCore = jQuery.Class({ if(bAllReady){ this._changeAppStatus(xe.APP_STATUS["READY"]); }else{ - setTimeout(jQuery.fnBind(this._waitForPluginReady, this), 100); + setTimeout($.fnBind(this._waitForPluginReady, this), 100); } } }); @@ -269,7 +267,7 @@ xe.PLUGIN_STATUS = { * @fileOverview This file contains a cross-browser implementation of W3C's DOM Range * @name W3CDOMRange.js */ -xe.W3CDOMRange = jQuery.Class({ +xe.W3CDOMRange = $.Class({ $init : function(doc){ this._document = doc || document; @@ -887,7 +885,7 @@ xe.W3CDOMRange.END_TO_START = 3; * @fileOverview This file contains a cross-browser function that implements all of the W3C's DOM Range specification and some more * @name XpressRange.js */ -xe.XpressRange = jQuery.Class({ +xe.XpressRange = $.Class({ setWindow : function(win){ this._window = win; this._document = win.document; @@ -1339,7 +1337,7 @@ xe.XpressRange = jQuery.Class({ if(typeof sValue != "string") continue; if(sName == "class"){ - jQuery(aStyleParents[i]).addClass(sValue); + $(aStyleParents[i]).addClass(sValue); }else{ aStyleParents[i].setAttribute(sName, sValue); } @@ -1370,8 +1368,8 @@ xe.XpressRange = jQuery.Class({ if(xe.DOMFix.parentNode(oNode).tagName == "SPAN"){ // check if the SPAN element is fully contained - iSIdx = jQuery.inArray(this._getVeryFirstRealChild(xe.DOMFix.parentNode(oNode.parentNode)), aAllNodes); - iEIdx = jQuery.inArray(this._getVeryLastRealChild(xe.DOMFix.parentNode(oNode)), aAllNodes); + iSIdx = $.inArray(this._getVeryFirstRealChild(xe.DOMFix.parentNode(oNode.parentNode)), aAllNodes); + iEIdx = $.inArray(this._getVeryLastRealChild(xe.DOMFix.parentNode(oNode)), aAllNodes); if(iSIdx != -1 && iEIdx != -1){ aResult[aResult.length] = xe.DOMFix.parentNode(oNode); @@ -1597,7 +1595,7 @@ xe.SimpleSelection = function(win){ this.init(win); - if(jQuery.browser.msie) + if($.browser.msie) xe.SimpleSelectionImpl_IE.apply(this); else xe.SimpleSelectionImpl_FF.apply(this); @@ -1846,9 +1844,9 @@ xe.SimpleSelectionImpl_IE = function(){ }; } -xe.DOMFix = new (jQuery.Class({ +xe.DOMFix = new ($.Class({ $init : function(){ - if(jQuery.browser.msie || jQuery.browser.opera){ + if($.browser.msie || $.browser.opera){ this.childNodes = this._childNodes_Fix; this.parentNode = this._parentNode_Fix; }else{ @@ -1893,7 +1891,7 @@ xe.DOMFix = new (jQuery.Class({ * @fileOverview This file contains a function that takes care of various operations related to find and replace * @name N_FindReplace.js */ -xe.FindReplace = jQuery.Class({ +xe.FindReplace = $.Class({ sKeyword : "", window : null, document : null, @@ -1907,7 +1905,7 @@ xe.FindReplace = jQuery.Class({ this.document = this.window.document; if(this.document.domain != this.document.location.hostname){ - if(jQuery.browser.mozilla && jQuery.browser.nVersion < 3){ + if($.browser.mozilla && $.browser.nVersion < 3){ this.bBrowserSupported = false; this.find = function(){return 3}; return; @@ -2075,9 +2073,9 @@ xe.FindReplace = jQuery.Class({ * @fileOverview This file contains a function that takes care of the draggable layers * @name N_DraggableLayer.js */ -xe.DraggableLayer = jQuery.Class({ +xe.DraggableLayer = $.Class({ $init : function(oLayer, oOptions){ - this.oOptions = jQuery.extend({ + this.oOptions = $.extend({ bModal : "false", oHandle : oLayer, iMinX : -999999, @@ -2095,14 +2093,14 @@ xe.DraggableLayer = jQuery.Class({ this.aBasePosition = this.getBaseOffset(oLayer); // "number-ize" the position and set it as inline style. (the position could've been set as "auto" or set by css, not inline style) - oLayer.style.top = (this.toInt(jQuery(oLayer).offset().top) - this.aBasePosition.top)+"px"; - oLayer.style.left = (this.toInt(jQuery(oLayer).offset().left) - this.aBasePosition.left)+"px"; + oLayer.style.top = (this.toInt($(oLayer).offset().top) - this.aBasePosition.top)+"px"; + oLayer.style.left = (this.toInt($(oLayer).offset().left) - this.aBasePosition.left)+"px"; - this.$FnMouseDown = jQuery.fnBind(this._mousedown, this, oLayer); - this.$FnMouseMove = jQuery.fnBind(this._mousemove, this, oLayer); - this.$FnMouseUp = jQuery.fnBind(this._mouseup, this, oLayer); + this.$FnMouseDown = $.fnBind(this._mousedown, this, oLayer); + this.$FnMouseMove = $.fnBind(this._mousemove, this, oLayer); + this.$FnMouseUp = $.fnBind(this._mouseup, this, oLayer); - jQuery(this.oHandle).bind("mousedown", this.$FnMouseDown); + $(this.oHandle).bind("mousedown", this.$FnMouseDown); }, _mousedown : function(oLayer, oEvent){ @@ -2111,8 +2109,8 @@ xe.DraggableLayer = jQuery.Class({ this.MouseOffsetY = (oEvent.pageY-this.toInt(oLayer.style.top)-this.aBasePosition['top']); this.MouseOffsetX = (oEvent.pageX-this.toInt(oLayer.style.left)-this.aBasePosition['left']); - jQuery(oLayer).bind("mousemove", this.$FnMouseMove); - jQuery(oLayer).bind("mouseup", this.$FnMouseUp); + $(oLayer).bind("mousemove", this.$FnMouseMove); + $(oLayer).bind("mouseup", this.$FnMouseUp); }, _mousemove : function(oLayer, oEvent){ @@ -2130,8 +2128,8 @@ xe.DraggableLayer = jQuery.Class({ }, _mouseup : function(oLayer, oEvent){ - jQuery(oLayer).unbind("mousemove", this.$FnMouseMove); - jQuery(oLayer).unbind("mouseup", this.$FnMouseUp); + $(oLayer).unbind("mousemove", this.$FnMouseMove); + $(oLayer).unbind("mouseup", this.$FnMouseUp); }, toInt : function(num){ @@ -2143,14 +2141,14 @@ xe.DraggableLayer = jQuery.Class({ if(!oEl) return null; if(oEl.tagName == "BODY") return oEl; - if(jQuery(oEl).css("position").match(/absolute|relative/i)) return oEl; + if($(oEl).css("position").match(/absolute|relative/i)) return oEl; return this.findNonStatic(oEl.offsetParent); }, getBaseOffset : function(oEl){ var oBase = this.findNonStatic(oEl.offsetParent); - var tmp = jQuery(oBase).offset(); + var tmp = $(oBase).offset(); return {top: tmp.top, left: tmp.left}; } @@ -2160,7 +2158,7 @@ xe.DraggableLayer = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the messages related to core operations * @name hp_CorePlugin.js */ -xe.CorePlugin = jQuery.Class({ +xe.CorePlugin = $.Class({ name : "CorePlugin", $init : function(funcOnReady){ @@ -2197,11 +2195,11 @@ xe.CorePlugin = jQuery.Class({ * @fileOverview This file contains Xpress plugin that helps various operations. * @name hp_Utils.js */ - xe.Utils = jQuery.Class({ + xe.Utils = $.Class({ name : "Utils", $init : function(){ - if(jQuery.browser.msie && jQuery.browser.nVersion == 6){ + if($.browser.msie && $.browser.nVersion == 6){ try{ document.execCommand('BackgroundImageCache', false, true); }catch(e){} @@ -2213,9 +2211,9 @@ xe.CorePlugin = jQuery.Class({ if(!aElms) return; - jQuery(aElms).hover( - function(){jQuery(this).addClass(sHoverClass)}, - function(){jQuery(this).removeClass(sHoverClass)} + $(aElms).hover( + function(){$(this).addClass(sHoverClass)}, + function(){$(this).removeClass(sHoverClass)} ); } }); @@ -2226,7 +2224,7 @@ xe.CorePlugin = jQuery.Class({ * @fileOverview This file contains Xpress plugin that bridges the XpressRange function * @name hp_XpressRangeManager.js */ -xe.XpressRangeManager = jQuery.Class({ +xe.XpressRangeManager = $.Class({ name : "XpressRangeManager", oWindow : null, @@ -2239,8 +2237,8 @@ xe.XpressRangeManager = jQuery.Class({ if(this.oWindow && this.oWindow.tagName == "IFRAME") this.oWindow = this.oWindow.contentWindow; - this.oApp.exec("ADD_APP_PROPERTY", ["getSelection", jQuery.fnBind(this.getSelection, this)]); - this.oApp.exec("ADD_APP_PROPERTY", ["getEmptySelection", jQuery.fnBind(this.getEmptySelection, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getSelection", $.fnBind(this.getSelection, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getEmptySelection", $.fnBind(this.getEmptySelection, this)]); }, $ON_SET_EDITING_WINDOW : function(oWindow){ @@ -2266,7 +2264,7 @@ xe.XpressRangeManager = jQuery.Class({ } }); //} -xe.Hotkey = jQuery.Class({ +xe.Hotkey = $.Class({ name : "Hotkey", storage : {}, @@ -2279,10 +2277,10 @@ xe.Hotkey = jQuery.Class({ backspace : 8, tab : 9, enter : 13, - shift : 16, - ctrl : 17, - alt : 18, - meta : 224, + shift : 16, + ctrl : 17, + alt : 18, + meta : 224, esc : 27, space : 32, pageup : 33, @@ -2297,11 +2295,11 @@ xe.Hotkey = jQuery.Class({ comma : 188,//(,) period : 190,//(.) slash : 191,//(/) - hyphen : 109, - equal : 61 + hyphen : 109, + equal : 61 }; - if (jQuery.browser.msie || jQuery.browser.safari) { + if ($.browser.msie || $.browser.safari) { this.keyhash.hyphen = 189; // (-) this.keyhash.equal = 187; // (=) this.keyhash.meta = 91; // meta @@ -2311,12 +2309,12 @@ xe.Hotkey = jQuery.Class({ }, $ON_MSG_APP_READY : function(){ - jQuery(this.oApp.getWYSIWYGDocument() || document).keydown(jQuery.fnBind(this.keydown, this)); + $(this.oApp.getWYSIWYGDocument() || document).keydown($.fnBind(this.keydown, this)); }, $ON_REGISTER_HOTKEY : function(sHotkey, sCMD, sArgs){ if(!sArgs) sArgs = []; - var func = jQuery.fnBind(this.oApp.exec, this.oApp, sCMD, sArgs); + var func = $.fnBind(this.oApp.exec, this.oApp, sCMD, sArgs); sHotkey = this.normalize(sHotkey); if (!sHotkey) return false; @@ -2335,7 +2333,7 @@ xe.Hotkey = jQuery.Class({ keydown : function(event) { var key = [], kh = this.keyhash; - if (jQuery.inArray(event.keyCode, [kh.shift, kh.ctrl, kh.alt, kh.meta]) >= 0) return; + if ($.inArray(event.keyCode, [kh.shift, kh.ctrl, kh.alt, kh.meta]) >= 0) return; if (event.shiftKey) key.push('shift'); if (event.altKey) key.push('alt'); @@ -2350,7 +2348,7 @@ xe.Hotkey = jQuery.Class({ if (!this.storage[key]) return; - jQuery.each(this.storage[key], function(){ this(); }); + $.each(this.storage[key], function(){ this(); }); return false; }, @@ -2360,7 +2358,7 @@ xe.Hotkey = jQuery.Class({ shift = ctrl = alt = meta = key = false; - jQuery.each(keys, function(){ + $.each(keys, function(){ var s = ""+this; switch(s) { case 'shift': shift = true; @@ -2391,7 +2389,7 @@ xe.Hotkey = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the draggable layers * @name hp_DialogLayerManager.js */ -xe.DialogLayerManager = jQuery.Class({ +xe.DialogLayerManager = $.Class({ name : "DialogLayerManager", aMadeDraggable : null, aOpenedLayers : null, @@ -2402,17 +2400,17 @@ xe.DialogLayerManager = jQuery.Class({ }, $ON_SHOW_DIALOG_LAYER : function(oLayer, bModal){ - oLayer = jQuery.$(oLayer); - bModal = jQuery.$(bModal) || false; + oLayer = $.$(oLayer); + bModal = $.$(bModal) || false; if(!oLayer) return; - if(jQuery.inArray(oLayer, this.aOpenedLayers)) return; + if($.inArray(oLayer, this.aOpenedLayers)) return; this.oApp.exec("POSITION_DIALOG_LAYER", [oLayer]); this.aOpenedLayers[this.aOpenedLayers.length] = oLayer; - if(!jQuery.inArray(oLayer, this.aMadeDraggable)){ + if(!$.inArray(oLayer, this.aMadeDraggable)){ new xe.DraggableLayer(oLayer, {bModal: bModal, iMinY: 0}); this.aMadeDraggable[this.aMadeDraggable.length] = oLayer; }else{ @@ -2430,10 +2428,10 @@ xe.DialogLayerManager = jQuery.Class({ }, $ON_HIDE_DIALOG_LAYER : function(oLayer){ - oLayer = jQuery.$(oLayer); + oLayer = $.$(oLayer); if(oLayer) oLayer.style.display = "none"; - this.aOpenedLayers = jQuery.grep(this.aOpenedLayers, function(a){return a!=oLayer}); + this.aOpenedLayers = $.grep(this.aOpenedLayers, function(a){return a!=oLayer}); }, $ON_SET_DIALOG_LAYER_POSITION : function(oLayer, iTop, iLeft){ @@ -2447,7 +2445,7 @@ xe.DialogLayerManager = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the layers that should disappear when the focus is lost * @name hp_ActiveLayerManager.js */ -xe.ActiveLayerManager = jQuery.Class({ +xe.ActiveLayerManager = $.Class({ name : "ActiveLayerManager", oCurrentLayer : null, @@ -2461,7 +2459,7 @@ xe.ActiveLayerManager = jQuery.Class({ }, $ON_SHOW_ACTIVE_LAYER : function(oLayer, sOnCloseCmd, aOnCloseParam){ - oLayer = jQuery.$(oLayer); + oLayer = $.$(oLayer); this.sOnCloseCmd = sOnCloseCmd; this.aOnCloseParam = aOnCloseParam; @@ -2505,7 +2503,7 @@ xe.ActiveLayerManager = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to string conversion. Ususally used to convert the IR value. * @name hp_StringConverterManager.js */ -xe.StringConverterManager = jQuery.Class({ +xe.StringConverterManager = $.Class({ name : "StringConverterManager", oConverters : null, @@ -2515,8 +2513,8 @@ xe.StringConverterManager = jQuery.Class({ }, $BEFORE_MSG_APP_READY : function(){ - this.oApp.exec("ADD_APP_PROPERTY", ["applyConverter", jQuery.fnBind(this.applyConverter, this)]); - this.oApp.exec("ADD_APP_PROPERTY", ["addConverter", jQuery.fnBind(this.addConverter, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["applyConverter", $.fnBind(this.applyConverter, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["addConverter", $.fnBind(this.addConverter, this)]); }, applyConverter : function(sRuleName, sContent){ @@ -2541,7 +2539,7 @@ xe.StringConverterManager = jQuery.Class({ * @fileOverview This file contains Xpress plugin that maps a message code to the actual message * @name hp_MessageManager.js */ -xe.MessageManager = jQuery.Class({ +xe.MessageManager = $.Class({ name : "MessageManager", oMessageMap : null, @@ -2551,7 +2549,7 @@ xe.MessageManager = jQuery.Class({ }, $BEFORE_MSG_APP_READY : function(){ - this.oApp.exec("ADD_APP_PROPERTY", ["$MSG", jQuery.fnBind(this.getMessage, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["$MSG", $.fnBind(this.getMessage, this)]); }, getMessage : function(sMsg){ @@ -2566,7 +2564,7 @@ xe.MessageManager = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to the tool bar UI * @name hp_XE_Toolbar.js */ -xe.XE_Toolbar = jQuery.Class({ +xe.XE_Toolbar = $.Class({ name : "XE_Toolbar", toolbarArea : null, toolbarButton : null, @@ -2584,11 +2582,11 @@ xe.XE_Toolbar = jQuery.Class({ }, _assignHTMLObjects : function(oAppContainer){ - oAppContainer = jQuery.$(oAppContainer) || document; - this.toolbarArea = jQuery(".tool", oAppContainer).get(0); - this.welToolbarArea = jQuery(this.toolbarArea); + oAppContainer = $.$(oAppContainer) || document; + this.toolbarArea = $(".tool", oAppContainer).get(0); + this.welToolbarArea = $(this.toolbarArea); - this.aAllButtons = jQuery("BUTTON", this.toolbarArea).get(); + this.aAllButtons = $("BUTTON", this.toolbarArea).get(); var aAllLi = this.toolbarArea.getElementsByTagName("LI"); var nCount = aAllLi.length; @@ -2598,7 +2596,7 @@ xe.XE_Toolbar = jQuery.Class({ var sUIName = RegExp.$1; if(this.htUIList[sUIName] != null) continue; - this.htUIList[sUIName] = jQuery(">*:first-child", aAllLi[i]).get(0); + this.htUIList[sUIName] = $(">*:first-child", aAllLi[i]).get(0); } } }, @@ -2607,15 +2605,15 @@ xe.XE_Toolbar = jQuery.Class({ this.oApp.registerBrowserEvent(this.toolbarArea, "mouseover", "EVENT_TOOLBAR_MOUSEOVER", []); this.oApp.registerBrowserEvent(this.toolbarArea, "mouseout", "EVENT_TOOLBAR_MOUSEOUT", []); - this.oApp.exec("ADD_APP_PROPERTY", ["getToolbarButtonByUIName", jQuery.fnBind(this.getToolbarButtonByUIName, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getToolbarButtonByUIName", $.fnBind(this.getToolbarButtonByUIName, this)]); }, $ON_EVENT_TOOLBAR_MOUSEOVER : function(weEvent){ - if(weEvent.target.tagName == "BUTTON") jQuery(weEvent.target).addClass("hover").parent("span").addClass("hover"); + if(weEvent.target.tagName == "BUTTON") $(weEvent.target).addClass("hover").parent("span").addClass("hover"); }, $ON_EVENT_TOOLBAR_MOUSEOUT : function(weEvent){ - if(weEvent.target.tagName == "BUTTON") jQuery(weEvent.target).removeClass("hover").parent("span").removeClass("hover"); + if(weEvent.target.tagName == "BUTTON") $(weEvent.target).removeClass("hover").parent("span").removeClass("hover"); }, $ON_TOGGLE_TOOLBAR_ACTIVE_LAYER : function(oLayer, oBtn, sOpenCmd, aOpenArgs, sCloseCmd, aCloseArgs){ @@ -2635,7 +2633,7 @@ xe.XE_Toolbar = jQuery.Class({ $ON_ENABLE_UI : function(sUIName){ var elUI = this.htUIList[sUIName]; if(!elUI) return; - jQuery(elUI).removeClass("off"); + $(elUI).removeClass("off"); elUI.disabled = false; // enable related commands @@ -2651,8 +2649,8 @@ xe.XE_Toolbar = jQuery.Class({ $ON_DISABLE_UI : function(sUIName){ var elUI = this.htUIList[sUIName]; if(!elUI) return; - jQuery(elUI).addClass("off"); - jQuery(elUI).removeClass("hover").parent("span").removeClass("hover"); + $(elUI).addClass("off"); + $(elUI).removeClass("hover").parent("span").removeClass("hover"); elUI.disabled = true; // disable related commands @@ -2668,13 +2666,13 @@ xe.XE_Toolbar = jQuery.Class({ $ON_SELECT_UI : function(sUIName){ var elUI = this.htUIList[sUIName]; if(!elUI) return; - jQuery(elUI).addClass("active"); + $(elUI).addClass("active"); }, $ON_DESELECT_UI : function(sUIName){ var elUI = this.htUIList[sUIName]; if(!elUI) return; - jQuery(elUI).removeClass("active"); + $(elUI).removeClass("active"); }, $ON_ENABLE_ALL_UI : function(){ @@ -2683,7 +2681,7 @@ xe.XE_Toolbar = jQuery.Class({ for(var sUIName in this.htUIList){ if(sUIName) this.oApp.exec("ENABLE_UI", [sUIName]); } - jQuery(this.toolbarArea).removeClass("off"); + $(this.toolbarArea).removeClass("off"); }, $ON_DISABLE_ALL_UI : function(){ @@ -2692,7 +2690,7 @@ xe.XE_Toolbar = jQuery.Class({ for(var sUIName in this.htUIList){ if(sUIName) this.oApp.exec("DISABLE_UI", [sUIName]); } - jQuery(this.toolbarArea).addClass("off"); + $(this.toolbarArea).addClass("off"); this.oApp.exec("HIDE_ACTIVE_LAYER",[]); }, @@ -2713,15 +2711,15 @@ xe.XE_Toolbar = jQuery.Class({ }, $ON_POSITION_TOOLBAR_LAYER : function(oLayer, oBtn){ - oLayer = jQuery.$(oLayer); - oBtn = jQuery.$(oBtn); + oLayer = $.$(oLayer); + oBtn = $.$(oBtn); if(!oLayer) return; if(oBtn && oBtn.tagName && oBtn.tagName == "BUTTON") oBtn.parentNode.appendChild(oLayer); oLayer.style.left = "0"; - var welLayer = jQuery(oLayer); + var welLayer = $(oLayer); var nLayerLeft = welLayer.offset().left; nLayerLeft += oLayer.offsetWidth; @@ -2741,7 +2739,7 @@ xe.XE_Toolbar = jQuery.Class({ * @fileOverview This file contains Xpress plugin that manages multiple number editing area plugins and the IR value * @name hp_XE_EditingAreaManager.js */ -xe.XE_EditingAreaManager = jQuery.Class({ +xe.XE_EditingAreaManager = $.Class({ name : "XE_EditingAreaManager", // Currently active plugin instance(XE_EditingArea_???) @@ -2755,7 +2753,7 @@ xe.XE_EditingAreaManager = jQuery.Class({ $init : function(sInitialMode, oIRField, oDimension, fOnBeforeUnload, oAppContainer){ this.sInitialMode = sInitialMode; - this.oIRField = jQuery.$(oIRField); + this.oIRField = $.$(oIRField); this._assignHTMLObjects(oAppContainer); this.fOnBeforeUnload = fOnBeforeUnload; @@ -2768,16 +2766,16 @@ xe.XE_EditingAreaManager = jQuery.Class({ }, _assignHTMLObjects : function(oAppContainer){ - oAppContainer = jQuery.$(oAppContainer) || document; - this.elEditingAreaContainer = jQuery("DIV.xpress_xeditor_editing_area_container", oAppContainer).get(0); - this.elEditingAreaSkipUI = jQuery("A.skip", oAppContainer).get(0); + oAppContainer = $.$(oAppContainer) || document; + this.elEditingAreaContainer = $("DIV.xpress_xeditor_editing_area_container", oAppContainer).get(0); + this.elEditingAreaSkipUI = $("A.skip", oAppContainer).get(0); }, $BEFORE_MSG_APP_READY : function(msg){ this.oApp.exec("ADD_APP_PROPERTY", ["elEditingAreaContainer", this.elEditingAreaContainer]); - this.oApp.exec("ADD_APP_PROPERTY", ["getIR", jQuery.fnBind(this.getIR, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getIR", $.fnBind(this.getIR, this)]); this.oApp.exec("ADD_APP_PROPERTY", ["setIR", this.setIR]); - this.oApp.exec("ADD_APP_PROPERTY", ["getEditingMode", jQuery.fnBind(this.getEditingMode, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getEditingMode", $.fnBind(this.getEditingMode, this)]); }, $ON_MSG_APP_READY : function(){ @@ -2788,7 +2786,7 @@ xe.XE_EditingAreaManager = jQuery.Class({ this.oApp.registerBrowserEvent(this.elEditingAreaSkipUI, "blur", "MSG_EDITING_AREA_SIZE_CHANGED", [], 50); var fOnBeforeUnload = this.fOnBeforeUnload||function(){if(this.getIR() != this.oIRField.value || this.bIsDirty) return this.oApp.$MSG("XE_EditingAreaManager.onExit")}; - jQuery(window).bind("beforeunload", jQuery.fnBind(fOnBeforeUnload, this)); + $(window).bind("beforeunload", $.fnBind(fOnBeforeUnload, this)); }, $AFTER_MSG_APP_READY : function(){ @@ -2922,14 +2920,14 @@ xe.XE_EditingAreaManager = jQuery.Class({ * @name hp_XE_EditingArea_HTMLSrc.js * @required XE_EditingAreaManager */ -xe.XE_EditingArea_HTMLSrc = jQuery.Class({ +xe.XE_EditingArea_HTMLSrc = $.Class({ name : "XE_EditingArea_HTMLSrc", sMode : "HTMLSrc", textarea : null, $init : function(textarea){ - this.textarea = jQuery.$(textarea); + this.textarea = $.$(textarea); this.elEditingArea = this.textarea; }, @@ -3087,7 +3085,7 @@ TextRange.prototype.cut = function() { * @fileOverview This file contains Xpress plugin that takes care of the operations directly related to WYSIWYG iframe * @name hp_XE_EditingArea_WYSIWYG.js */ -xe.XE_EditingArea_WYSIWYG = jQuery.Class({ +xe.XE_EditingArea_WYSIWYG = $.Class({ name : "XE_EditingArea_WYSIWYG", status : xe.PLUGIN_STATUS["NOT_READY"], @@ -3101,7 +3099,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ _nIFrameReadyCount : 50, $init : function(iframe){ - this.iframe = jQuery.$(iframe); + this.iframe = $.$(iframe); this.initIframe(); @@ -3111,16 +3109,16 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ $BEFORE_MSG_APP_READY : function(){ this.oEditingArea = this.doc; this.oApp.exec("REGISTER_EDITING_AREA", [this]); - this.oApp.exec("ADD_APP_PROPERTY", ["getWYSIWYGWindow", jQuery.fnBind(this.getWindow, this)]); - this.oApp.exec("ADD_APP_PROPERTY", ["getWYSIWYGDocument", jQuery.fnBind(this.getDocument, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getWYSIWYGWindow", $.fnBind(this.getWindow, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getWYSIWYGDocument", $.fnBind(this.getDocument, this)]); }, $ON_MSG_APP_READY : function(){ // uncomment this line if you wish to use the IE-style cursor in FF // this.getDocument().body.style.cursor = "text"; - if(jQuery.browser.msie){ - jQuery(this.doc).bind('keydown', jQuery.fnBind( + if($.browser.msie){ + $(this.doc).bind('keydown', $.fnBind( function(weEvent){ if(this.doc.selection.type.toLowerCase() == 'control' && weEvent.keyCode == 8) { this.oApp.exec("EXECCOMMAND", ['delete', false, false]); @@ -3128,13 +3126,13 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ } } , this)); - jQuery(this.doc.body).bind('mousedown', jQuery.fnBind( + $(this.doc.body).bind('mousedown', $.fnBind( function(weEvent){ this._oIERange = null; this._bIERangeReset = true; } , this)); - jQuery(this.doc.body).bind('beforedeactivate', jQuery.fnBind( + $(this.doc.body).bind('beforedeactivate', $.fnBind( function(weEvent){ // without this, cursor won't make it inside a table. // mousedown(_oIERange gets reset) -> beforedeactivate(gets fired for table) -> RESTORE_IE_SELECTION @@ -3149,7 +3147,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ } } , this)); - jQuery(this.doc.body).bind('mouseup', jQuery.fnBind( + $(this.doc.body).bind('mouseup', $.fnBind( function(weEvent){ this._bIERangeReset = false; } @@ -3173,7 +3171,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ }, $ON_REFRESH_WYSIWYG : function(){ - if(!jQuery.browser.mozilla) return; + if(!$.browser.mozilla) return; this._disableWYSIWYG(); this._enableWYSIWYG(); @@ -3188,37 +3186,37 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ }, $ON_EVENT_EDITING_AREA_KEYDOWN : function(oEvent) { - // ctrl-left/right add/remove indent - if(!oEvent.ctrlKey) return; + // ctrl-left/right add/remove indent + if(!oEvent.ctrlKey) return; - switch(oEvent.keyCode) { - // outdent - case 37 : - this.oApp.exec("EXECCOMMAND", ["outdent", false, false]); - break; - // indent - case 39 : - this.oApp.exec("EXECCOMMAND", ["indent", false, false]); - break; - // h1 ~ h6, normal - case 49 : - case 50 : - case 51 : - case 52 : - case 53 : - case 54 : - this.oApp.exec("EXECCOMMAND", ["FormatBlock", false, '']); - break; - default : - return; - } - oEvent.preventDefault(); oEvent.stopPropagation(); + switch(oEvent.keyCode) { + // outdent + case 37 : + this.oApp.exec("EXECCOMMAND", ["outdent", false, false]); + break; + // indent + case 39 : + this.oApp.exec("EXECCOMMAND", ["indent", false, false]); + break; + // h1 ~ h6, normal + case 49 : + case 50 : + case 51 : + case 52 : + case 53 : + case 54 : + this.oApp.exec("EXECCOMMAND", ["FormatBlock", false, '']); + break; + default : + return; + } + oEvent.preventDefault(); oEvent.stopPropagation(); - }, + }, $ON_EVENT_EDITING_AREA_KEYUP : function(oEvent){ // 33, 34: page up/down, 35,36: end/home, 37,38,39,40: left, up, right, down - if(oEvent.keyCode == 229 || oEvent.keyCode == 13 || oEvent.altKey || oEvent.ctrlKey || (oEvent.keyCode >= 33 && oEvent.keyCode <= 40) || oEvent.keyCode == 16) return; + if(oEvent.keyCode == 229 || oEvent.keyCode == 13 || oEvent.altKey || oEvent.ctrlKey || (oEvent.keyCode >= 33 && oEvent.keyCode <= 40) || oEvent.keyCode == 16) return; this._recordUndo(oEvent); }, @@ -3229,7 +3227,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ oSelection.pasteHTML(sHTML); // every browser except for IE may modify the innerHTML when it is inserted - if(!jQuery.browser.msie){ + if(!$.browser.msie){ var sTmpBookmark = oSelection.placeStringBookmark(); this.oApp.getWYSIWYGDocument().body.innerHTML = this.oApp.getWYSIWYGDocument().body.innerHTML; oSelection.moveToBookmark(sTmpBookmark); @@ -3265,7 +3263,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ this.status = xe.PLUGIN_STATUS["READY"]; } catch(e) { if(this._nIFrameReadyCount-- > 0){ - setTimeout(jQuery.fnBind(this.initIframe, this), 100); + setTimeout($.fnBind(this.initIframe, this), 100); }else{ throw("iframe for WYSIWYG editing mode can't be initialized. Please check if the iframe document exists and is also accessable(cross-domain issues). "); } @@ -3293,7 +3291,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ this.doc.body.innerHTML = sContent; - if(jQuery.browser.mozilla){ + if($.browser.mozilla){ if(this.doc.body.innerHTML == "") this.doc.body.innerHTML = "
    "; } }, @@ -3322,7 +3320,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ }, _enableWYSIWYG : function(){ - if (jQuery.browser.msie){ + if ($.browser.msie){ this.doc.body.disabled = true; this.doc.body.contentEditable = true; this.doc.body.removeAttribute('disabled'); @@ -3332,7 +3330,7 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ }, _disableWYSIWYG : function(){ - if (jQuery.browser.msie){ + if ($.browser.msie){ this.doc.body.contentEditable = false; } else { this.doc.designMode = "off"; @@ -3345,31 +3343,31 @@ xe.XE_EditingArea_WYSIWYG = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to resizing the editing area vertically * @name hp_XE_EditingAreaVerticalResizer.js */ -xe.XE_EditingAreaVerticalResizer = jQuery.Class({ +xe.XE_EditingAreaVerticalResizer = $.Class({ name : "XE_EditingAreaVerticalResizer", oResizeGrip : null, $init : function(oAppContainer){ this._assignHTMLObjects(oAppContainer); - this.$FnMouseDown = jQuery.fnBind(this._mousedown, this); - this.$FnMouseMove = jQuery.fnBind(this._mousemove, this); - this.$FnMouseUp = jQuery.fnBind(this._mouseup, this); + this.$FnMouseDown = $.fnBind(this._mousedown, this); + this.$FnMouseMove = $.fnBind(this._mousemove, this); + this.$FnMouseUp = $.fnBind(this._mouseup, this); - jQuery(this.oResizeGrip).bind("mousedown", this.$FnMouseDown); + $(this.oResizeGrip).bind("mousedown", this.$FnMouseDown); }, _assignHTMLObjects : function(oAppContainer){ - oAppContainer = jQuery.$(oAppContainer) || document; + oAppContainer = $.$(oAppContainer) || document; - this.oResizeGrip = jQuery(".xpress_xeditor_editingArea_verticalResizer", oAppContainer).get(0); + this.oResizeGrip = $(".xpress_xeditor_editingArea_verticalResizer", oAppContainer).get(0); }, _mousedown : function(oEvent){ this.iStartHeight = oEvent.clientY; - jQuery(document).bind("mousemove", this.$FnMouseMove); - jQuery(document).bind("mouseup", this.$FnMouseUp); + $(document).bind("mousemove", this.$FnMouseMove); + $(document).bind("mouseup", this.$FnMouseUp); this.oApp.exec("MSG_EDITING_AREA_RESIZE_STARTED", [this.$FnMouseDown, this.$FnMouseMove, this.$FnMouseUp]); }, @@ -3381,8 +3379,8 @@ xe.XE_EditingAreaVerticalResizer = jQuery.Class({ }, _mouseup : function(oEvent){ - jQuery(document).unbind("mousemove", this.$FnMouseMove); - jQuery(document).unbind("mouseup", this.$FnMouseUp); + $(document).unbind("mousemove", this.$FnMouseMove); + $(document).unbind("mouseup", this.$FnMouseUp); this.oApp.exec("MSG_EDITING_AREA_RESIZE_ENDED", [this.$FnMouseDown, this.$FnMouseMove, this.$FnMouseUp]); } @@ -3393,7 +3391,7 @@ xe.XE_EditingAreaVerticalResizer = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the basic editor commands * @name hp_XE_ExecCommand.js */ -xe.XE_ExecCommand = jQuery.Class({ +xe.XE_ExecCommand = $.Class({ name : "XE_ExecCommand", oEditingArea : null, @@ -3466,7 +3464,7 @@ xe.XE_ExecCommand = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to wrapping the sentence around with a

    tag when enter key is pressed * @name hp_XE_WYSIWYGEnterKey.js */ -xe.XE_WYSIWYGEnterKey = jQuery.Class({ +xe.XE_WYSIWYGEnterKey = $.Class({ name : "XE_WYSIWYGEnterKey", // IE/Opera do not need this unsupportedBrowser : ['ie', 'opera'], @@ -3539,7 +3537,7 @@ xe.XE_WYSIWYGEnterKey = jQuery.Class({ * @name hp_XE_WYSIWYGStyler.js * @required XE_EditingArea_WYSIWYG, XpressRangeManager */ -xe.XE_WYSIWYGStyler = jQuery.Class({ +xe.XE_WYSIWYGStyler = $.Class({ name : "XE_WYSIWYGStyler", $PRECONDITION : function(sFullCommand, aArgs){ @@ -3571,7 +3569,7 @@ xe.XE_WYSIWYGStyler = jQuery.Class({ oSelection.select(); // FF3 will actually display %uFEFF when it is followed by a number AND certain font-family is used(like Gulim), so remove the chcaracter for FF3 - if(jQuery.browser.mozilla && jQuery.browser.nVersion == 3) + if($.browser.mozilla && $.browser.nVersion == 3) oSpan.innerHTML = ""; return; @@ -3593,7 +3591,7 @@ xe.XE_WYSIWYGStyler = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to detecting the style change * @name hp_XE_WYSIWYGStyleGetter.js */ -xe.XE_WYSIWYGStyleGetter = jQuery.Class({ +xe.XE_WYSIWYGStyleGetter = $.Class({ name : "XE_WYSIWYGStyleGetter", hKeyUp : null, @@ -3668,7 +3666,7 @@ xe.XE_WYSIWYGStyleGetter = jQuery.Class({ $ON_MSG_APP_READY : function(){ this.oDocument = this.oApp.getWYSIWYGDocument(); - this.oApp.exec("ADD_APP_PROPERTY", ["getCurrentStyle", jQuery.fnBind(this.getCurrentStyle, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getCurrentStyle", $.fnBind(this.getCurrentStyle, this)]); }, $ON_EVENT_EDITING_AREA_MOUSEUP : function(oEvnet){ @@ -3694,7 +3692,7 @@ xe.XE_WYSIWYGStyleGetter = jQuery.Class({ if(this.hKeyUp) clearTimeout(this.hKeyUp); - this.hKeyUp = setTimeout(jQuery.fnBind(this.oApp.exec, this.oApp, "CHECK_STYLE_CHANGE", []), this.getStyleInterval); + this.hKeyUp = setTimeout($.fnBind(this.oApp.exec, this.oApp, "CHECK_STYLE_CHANGE", []), this.getStyleInterval); }, $ON_CHECK_STYLE_CHANGE : function(){ @@ -3766,7 +3764,7 @@ xe.XE_WYSIWYGStyleGetter = jQuery.Class({ if(oNode.nodeType == 3) oNode = oNode.parentNode; - var welNode = jQuery(oNode); + var welNode = $(oNode); var attribute, cssName; for(var styleName in this.oStyle){ attribute = this.oStyleMap[styleName]; @@ -3812,7 +3810,7 @@ xe.XE_WYSIWYGStyleGetter = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to changing the font size using Select element * @name hp_XE_FontSizeWithSelectUI.js */ -xe.XE_FontSizeWithSelectUI = jQuery.Class({ +xe.XE_FontSizeWithSelectUI = $.Class({ name : "XE_FontSizeWithSelectUI", $init : function(elAppContainer){ @@ -3820,7 +3818,7 @@ xe.XE_FontSizeWithSelectUI = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer){ - this.elFontSizeSelect = jQuery("SELECT.xpress_xeditor_ui_fontSize_select", elAppContainer).get(0); + this.elFontSizeSelect = $("SELECT.xpress_xeditor_ui_fontSize_select", elAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -3849,7 +3847,7 @@ xe.XE_FontSizeWithSelectUI = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to changing the font name using Select element * @name hp_XE_FontNameWithSelectUI.js */ -xe.XE_FontNameWithSelectUI = jQuery.Class({ +xe.XE_FontNameWithSelectUI = $.Class({ name : "XE_FontNameWithSelectUI", $init : function(elAppContainer){ @@ -3857,7 +3855,7 @@ xe.XE_FontNameWithSelectUI = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer){ - this.elFontNameSelect = jQuery("SELECT.xpress_xeditor_ui_fontName_select", elAppContainer).get(0); + this.elFontNameSelect = $("SELECT.xpress_xeditor_ui_fontName_select", elAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -3886,7 +3884,7 @@ xe.XE_FontNameWithSelectUI = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to setting/changing the lineheight * @name hp_XE_LineHeight.js */ -xe.XE_LineHeight = jQuery.Class({ +xe.XE_LineHeight = $.Class({ name : "XE_LineHeight", $init : function(oAppContainer){ @@ -3942,7 +3940,7 @@ xe.XE_LineHeight = jQuery.Class({ var lastNode = this.oSelection.getEndNode(); - selectText = jQuery.fnBind(function(firstNode, lastNode){ + selectText = $.fnBind(function(firstNode, lastNode){ this.oSelection.setEndNodes(firstNode, lastNode); this.oSelection.select(); }, this, firstNode, lastNode); @@ -4016,7 +4014,7 @@ xe.XE_LineHeight = jQuery.Class({ endNode = curWrapper || startNode; - setTimeout(jQuery.fnBind(function(startNode, endNode){ + setTimeout($.fnBind(function(startNode, endNode){ this.oSelection.setEndNodes(startNode, endNode); this.oSelection.select(); this.oApp.exec("RECORD_UNDO_AFTER_ACTION", ["LINEHEIGHT"]); @@ -4102,11 +4100,11 @@ xe.XE_LineHeight = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to changing the lineheight using Select element * @name hp_XE_LineHeightWithSelectUI.js */ -xe.XE_LineHeightWithSelectUI = jQuery.Class({ +xe.XE_LineHeightWithSelectUI = $.Class({ name : "XE_LineHeightWithSelectUI", _assignHTMLObjects : function(elAppContainer){ - this.elLineHeightSelect = jQuery("SELECT.xpress_xeditor_ui_lineHeight_select", elAppContainer).get(0); + this.elLineHeightSelect = $("SELECT.xpress_xeditor_ui_lineHeight_select", elAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -4136,7 +4134,7 @@ xe.XE_LineHeightWithSelectUI = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations directly related to the color palette * @name hp_XE_ColorPalette.js */ - xe.XE_ColorPalette = jQuery.Class({ + xe.XE_ColorPalette = $.Class({ name : "XE_ColorPalette", rxRGBColorPattern : /rgb\((\d+), ?(\d+), ?(\d+)\)/i, @@ -4145,7 +4143,7 @@ xe.XE_LineHeightWithSelectUI = jQuery.Class({ }, _assignHTMLObjects : function(oAppContainer){ - this.elColorPaletteLayer = jQuery("UL.xpress_xeditor_color_palette", oAppContainer).get(0); + this.elColorPaletteLayer = $("UL.xpress_xeditor_color_palette", oAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -4195,7 +4193,7 @@ xe.XE_LineHeightWithSelectUI = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to changing the font color * @name hp_XE_FontColor.js */ -xe.XE_FontColor = jQuery.Class({ +xe.XE_FontColor = $.Class({ name : "XE_FontColor", rxColorPattern : /^#?[0-9a-fA-F]{6}$|^rgb\(\d+, ?\d+, ?\d+\)$/i, @@ -4204,7 +4202,7 @@ xe.XE_FontColor = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer){ - this.elDropdownLayer = jQuery("DIV.xpress_xeditor_fontcolor_layer", elAppContainer).get(0); + this.elDropdownLayer = $("DIV.xpress_xeditor_fontcolor_layer", elAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -4232,7 +4230,7 @@ xe.XE_FontColor = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of changing the background color * @name hp_XE_BGColor.js */ -xe.XE_BGColor = jQuery.Class({ +xe.XE_BGColor = $.Class({ name : "XE_BGColor", rxColorPattern : /^#?[0-9a-fA-F]{6}$|^rgb\(\d+, ?\d+, ?\d+\)$/i, @@ -4241,7 +4239,7 @@ xe.XE_BGColor = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer){ - this.elDropdownLayer = jQuery("DIV.xpress_xeditor_bgcolor_layer", elAppContainer).get(0); + this.elDropdownLayer = $("DIV.xpress_xeditor_bgcolor_layer", elAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -4290,7 +4288,7 @@ xe.XE_BGColor = jQuery.Class({ * @name hp_XE_Quote.js * @required XE_EditingArea_WYSIWYG */ -xe.XE_Quote = jQuery.Class({ +xe.XE_Quote = $.Class({ name : "XE_Quote", $init : function(elAppContainer){ @@ -4298,7 +4296,7 @@ xe.XE_Quote = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer){ - this.elDropdownLayer = jQuery("DIV.xpress_xeditor_blockquote_layer", elAppContainer).get(0); + this.elDropdownLayer = $("DIV.xpress_xeditor_blockquote_layer", elAppContainer).get(0); }, $ON_MSG_APP_READY: function(){ @@ -4444,11 +4442,11 @@ xe.XE_Quote = jQuery.Class({ * @name hp_XE_SCharacter.js * @required XpressRangeManager */ -xe.XE_SCharacter = jQuery.Class({ +xe.XE_SCharacter = $.Class({ name : "XE_SCharacter", $init : function(oAppContainer){ - this.bIE = jQuery.browser.msie; + this.bIE = $.browser.msie; this._assignHTMLObjects(oAppContainer); @@ -4462,27 +4460,27 @@ xe.XE_SCharacter = jQuery.Class({ }, _assignHTMLObjects : function(oAppContainer){ - oAppContainer = jQuery.$(oAppContainer) || document; + oAppContainer = $.$(oAppContainer) || document; - this.elDropdownLayer = jQuery("DIV.xpress_xeditor_sCharacter_layer", oAppContainer).get(0); + this.elDropdownLayer = $("DIV.xpress_xeditor_sCharacter_layer", oAppContainer).get(0); - this.oTextField = jQuery("INPUT", this.elDropdownLayer).get(0); - this.oInsertButton = jQuery("+ BUTTON", this.oTextField).get(0); - this.aCloseButton = jQuery("BUTTON.close", this.elDropdownLayer).get(); - this.aSCharList = jQuery(".list", this.elDropdownLayer).get(); - var oLabelUL = jQuery(">UL", this.elDropdownLayer).get(0); - this.aLabelA = jQuery("A", oLabelUL).get(); + this.oTextField = $("INPUT", this.elDropdownLayer).get(0); + this.oInsertButton = $("+ BUTTON", this.oTextField).get(0); + this.aCloseButton = $("BUTTON.close", this.elDropdownLayer).get(); + this.aSCharList = $(".list", this.elDropdownLayer).get(); + var oLabelUL = $(">UL", this.elDropdownLayer).get(0); + this.aLabelA = $("A", oLabelUL).get(); }, $ON_MSG_APP_READY : function(){ - var funcInsert = jQuery.fnBind(this.oApp.exec, this.oApp, "INSERT_SCHARACTERS", [this.oTextField.value]); - jQuery(this.oInsertButton).click(funcInsert, this); + var funcInsert = $.fnBind(this.oApp.exec, this.oApp, "INSERT_SCHARACTERS", [this.oTextField.value]); + $(this.oInsertButton).click(funcInsert, this); this.oApp.exec("SET_SCHARACTER_LIST", [this.charSet]); for(var i=0; iLI>BUTTON", this.aSCharList[i])]).get(); +// this.oApp.exec("ATTACH_HOVER_EVENTS", [$(">LI>BUTTON", this.aSCharList[i])]).get(); }, _stopBrowserEvent : function(obj, sEvent){ - jQuery(obj).bind(sEvent, function(e){e.stopPropagation();e.preventDefault();} ) + $(obj).bind(sEvent, function(e){e.stopPropagation();e.preventDefault();} ) } }); //} @@ -4596,7 +4594,7 @@ xe.XE_SCharacter = jQuery.Class({ * @name hp_XE_UndoRedo.js * @required XE_EditingAreaManager, XpressRangeManager */ -xe.XE_UndoRedo = jQuery.Class({ +xe.XE_UndoRedo = $.Class({ name : "XE_UndoRedo", actionHistory : null, // this may also be called, lastAdded/lastRestored @@ -4626,10 +4624,10 @@ xe.XE_UndoRedo = jQuery.Class({ }, $ON_MSG_APP_READY : function(){ - this.bFF = jQuery.browser.mozilla; + this.bFF = $.browser.mozilla; - this.oApp.exec("ADD_APP_PROPERTY", ["getUndoHistory", jQuery.fnBind(this.getUndoHistory, this)]); - this.oApp.exec("ADD_APP_PROPERTY", ["getUndoStateIdx", jQuery.fnBind(this.getUndoStateIdx, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getUndoHistory", $.fnBind(this.getUndoHistory, this)]); + this.oApp.exec("ADD_APP_PROPERTY", ["getUndoStateIdx", $.fnBind(this.getUndoStateIdx, this)]); this.oApp.exec("REGISTER_UI_EVENT", ["undo", "click", "UNDO"]); this.oApp.exec("REGISTER_UI_EVENT", ["redo", "click", "REDO"]); @@ -4816,7 +4814,7 @@ xe.XE_UndoRedo = jQuery.Class({ * @fileOverview This file contains Xpress plugin that takes care of the operations related to Find/Replace * @name hp_XE_FindReplacePlugin.js */ -xe.XE_FindReplacePlugin = jQuery.Class({ +xe.XE_FindReplacePlugin = $.Class({ name : "XE_FindReplacePlugin", oEditingWindow : null, oFindReplace : null, @@ -4828,34 +4826,34 @@ xe.XE_FindReplacePlugin = jQuery.Class({ }, _assignHTMLObjects : function(oAppContainer){ - oAppContainer = jQuery.$(oAppContainer) || document; + oAppContainer = $.$(oAppContainer) || document; - this.oEditingWindow = jQuery("IFRAME", oAppContainer).get(0); - this.oUILayer = jQuery("DIV.xpress_xeditor_findAndReplace_layer", oAppContainer).get(0); + this.oEditingWindow = $("IFRAME", oAppContainer).get(0); + this.oUILayer = $("DIV.xpress_xeditor_findAndReplace_layer", oAppContainer).get(0); - var oTmp = jQuery("LI", this.oUILayer).get(); + var oTmp = $("LI", this.oUILayer).get(); this.oFindTab = oTmp[0]; this.oReplaceTab = oTmp[1]; - oTmp = jQuery(".container > .bx", this.oUILayer).get(); + oTmp = $(".container > .bx", this.oUILayer).get(); this.oFindInputSet = oTmp[0]; this.oReplaceInputSet = oTmp[1]; - this.oFindInput_Keyword = jQuery("INPUT", this.oFindInputSet).get(0); + this.oFindInput_Keyword = $("INPUT", this.oFindInputSet).get(0); - oTmp = jQuery("INPUT", this.oReplaceInputSet).get(); + oTmp = $("INPUT", this.oReplaceInputSet).get(); this.oReplaceInput_Original = oTmp[0]; this.oReplaceInput_Replacement = oTmp[1]; - this.oFindNextButton = jQuery("BUTTON.find_next", this.oUILayer).get(0); - this.oCancelButton = jQuery("BUTTON.cancel", this.oUILayer).get(0); + this.oFindNextButton = $("BUTTON.find_next", this.oUILayer).get(0); + this.oCancelButton = $("BUTTON.cancel", this.oUILayer).get(0); - this.oReplaceButton = jQuery("BUTTON.replace", this.oUILayer).get(0); - this.oReplaceAllButton = jQuery("BUTTON.replace_all", this.oUILayer).get(0); + this.oReplaceButton = $("BUTTON.replace", this.oUILayer).get(0); + this.oReplaceAllButton = $("BUTTON.replace_all", this.oUILayer).get(0); - this.aCloseButtons = jQuery("BUTTON.close", this.oUILayer).get(); + this.aCloseButtons = $("BUTTON.close", this.oUILayer).get(); this.aCloseButtons[this.aCloseButtons.length] = this.oCancelButton; }, @@ -4871,16 +4869,16 @@ xe.XE_FindReplacePlugin = jQuery.Class({ } for(var i=0; i" + sURL + ""; - this.oSelection.pasteHTML(str); - }else{ - var nSession = Math.ceil(Math.random()*10000); - var arg = ( sURL == "" ? ["unlink"] : ["createLink", false, this.sATagMarker+nSession+sURL] ); - this.oApp.exec("EXECCOMMAND", arg); + if(this.oSelection.collapsed){ + var str = "" + sURL + ""; + this.oSelection.pasteHTML(str); + }else{ + var nSession = Math.ceil(Math.random()*10000); + var arg = ( sURL == "" ? ["unlink"] : ["createLink", false, this.sATagMarker+nSession+sURL] ); + this.oApp.exec("EXECCOMMAND", arg); - this.oSelection.setFromSelection(); + this.oSelection.setFromSelection(); - var oDoc = this.oApp.getWYSIWYGDocument(); - var aATags = oDoc.body.getElementsByTagName("A"); - var nLen = aATags.length; - var rxMarker = new RegExp(this.sRXATagMarker+nSession, "i"); - var elATag; - for(var i=0; i/ig, regex_meanless_css2 = /(?:(?:margin|padding)\s*:\s*0(?:px)?|\-(?:moz|ms|webkit|opera)\-[\w-]+\s*:\s*.*?|[\w-]+\s*:\s*\-(?:moz|ms|webkit|opera)\-[\w-]+|(?:line-height|font-variant|font-stretch|font-size-adjust|font-size)\s*:\s*[a-z_-]+)\s*;?\s*|font-(?:weight|style)\s*:\s*normal;?/ig, @@ -5457,7 +5452,7 @@ var regex_font_weight = /font-weight\s*:\s*([a-z]+);?/i, regex_font_style = /font-style\s*:\s*italic;?/i, regex_font_decoration = /text-decoration\s*:\s*([a-z -]+);?/i, - regex_jquery = /jQuery\d+\s*=(\s*"\d+"|\d+)/ig, + regex_$ = /$\d+\s*=(\s*"\d+"|\d+)/ig, regex_quote_attr = /([\w-]+\s*=(?:\s*"[^"]+"|\s*'[^']+'))|([\w-]+)=([^\s]+)/g; //" var @@ -5485,29 +5480,29 @@ xe.XE_XHTMLFormatter = $.Class({ TO_IR : function(sContent) { var stack = []; - // remove xeHandled attrs - /* - sContent = sContent.replace(/xeHandled="YES"/ig,''); - */ + // remove xeHandled attrs + /* + sContent = sContent.replace(/xeHandled="YES"/ig,''); + */ // remove all useless styles - /* + /* sContent = sContent.replace(regex_meanless_css1, function(m0,m1,m2,m3){ m2 = m2.replace(regex_meanless_css2, ''); return '<'+m1+(m2?' style="'+m2+'"':'')+m3+'>'; }); - */ + */ // remove all useless classes - /* + /* sContent = sContent.replace(regex_class, function(m0,m1,m2,m3,m4,m5){ - var cls = jQuery.trim((m2 || m3 || m4 || "").replace(regex_class2, '')); + var cls = $.trim((m2 || m3 || m4 || "").replace(regex_class2, '')); return '<'+(m1||"")+(cls?' class="'+cls+'"':'')+(m5||"")+'>'; }); - */ + */ // remove all event handler //sContent = sContent.replace(regex_handler, '<$1$2>'); @@ -5518,16 +5513,16 @@ xe.XE_XHTMLFormatter = $.Class({ // remove all scripts //sContent = sContent.replace(regex_script, ''); - if (jQuery.browser.msie) { - // remove jQuery attributes - sContent = sContent.replace(regex_jquery, ''); + if ($.browser.msie) { + // remove $ attributes + sContent = sContent.replace(regex_$, ''); // quote all attrs sContent = sContent.replace(/<(\w+) ([^>]+)>/g, function(m0,m1,m2){ return '<'+m1+' '+ m2.replace(regex_quote_attr, function(s0,s1,s2,s3){ if (s1) return s1; - if(/^"/.test(s3)||/"$/.test(s3)) return s2+'='+s3; + if(/^"/.test(s3)||/"$/.test(s3)) return s2+'='+s3; return s2+'="'+s3+'"'; }) + '>'; }); @@ -5552,7 +5547,7 @@ xe.XE_XHTMLFormatter = $.Class({ return '<'+m2+' '+m3+'>'; } - /* + /* if (replace_tags[m2]) { stack.push({tag:m2, state:'deleted'}); @@ -5631,10 +5626,10 @@ xe.XE_XHTMLFormatter = $.Class({ return (!m3&&!style?'':'')+tmptag; } } else { - state = (jQuery.inArray(m2,allow_tags) < 0)?'deleted':''; + state = ($.inArray(m2,allow_tags) < 0)?'deleted':''; if (state == 'deleted') return ''; } - */ + */ stack.push({tag:m2, state:state}); } else { @@ -5672,15 +5667,13 @@ xe.XE_XHTMLFormatter = $.Class({ return sContent; } }); - // center, font, b, i, s, strike -})(jQuery); /** * Support XE extensions * @author gony */ -xe.XE_Extension = jQuery.Class({ +xe.XE_Extension = $.Class({ name : "XE_Extension", seq : '', last_doc : '', @@ -5691,7 +5684,7 @@ xe.XE_Extension = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer) { - this.elDropdownLayer = jQuery('DIV.xpress_xeditor_extension_layer', elAppContainer).get(0); + this.elDropdownLayer = $('DIV.xpress_xeditor_extension_layer', elAppContainer).get(0); }, _removeAttrs : function(sContent) { @@ -5704,16 +5697,16 @@ xe.XE_Extension = jQuery.Class({ var doc = this.oApp.getWYSIWYGDocument(); var seq = this.seq; var fn = function(){ - var obj = jQuery(this); + var obj = $(this); var comp = obj.attr('editor_component'); - if (comp && jQuery.isFunction(openComponent)) { + if (comp && $.isFunction(openComponent)) { editorPrevNode = obj.get(0); openComponent(comp, seq); } }; - jQuery('img,div[editor_component]', doc).each(function(){ - var obj = jQuery(this); + $('img,div[editor_component]', doc).each(function(){ + var obj = $(this); if(this.nodeName == 'IMG' && !obj.attr('editor_component')) { obj.attr('editor_component','image_link'); } @@ -5730,8 +5723,8 @@ xe.XE_Extension = jQuery.Class({ var functn = function(){ oApp.exec("HIDE_ACTIVE_LAYER", []); }; - jQuery('a', this.elDropdownLayer).each(function(){ - var obj = jQuery(this); + $('a', this.elDropdownLayer).each(function(){ + var obj = $(this); if(!obj.attr('component_onclick_event_added')) { obj.click(functn); obj.attr('component_onclick_event_added','Y'); @@ -5767,7 +5760,7 @@ xe.XE_Extension = jQuery.Class({ * Auto saving * @author gony */ -xe.XE_AutoSave = jQuery.Class({ +xe.XE_AutoSave = $.Class({ name : "XE_AutoSave", form : null, textarea : null, @@ -5780,19 +5773,19 @@ xe.XE_AutoSave = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer) { - this.welMessageBox = jQuery('autosave_message'); + this.welMessageBox = $('autosave_message'); }, $ON_MSG_APP_READY : function() { - var elTitle = jQuery(this.form._saved_doc_title); - var elContent = jQuery(this.form._saved_doc_content); + var elTitle = $(this.form._saved_doc_title); + var elContent = $(this.form._saved_doc_content); - var title = jQuery.trim(elTitle.val()); - var content = jQuery.trim(elContent.val()); + var title = $.trim(elTitle.val()); + var content = $.trim(elContent.val()); if (title || content) { if (confirm(this.form._saved_doc_message.value)) { - jQuery(this.form.title).val(title); + $(this.form.title).val(title); this.oApp.setIR(content); if(typeof(editorGetAutoSavedDoc) == 'function') editorGetAutoSavedDoc(this.form); } else { @@ -5800,7 +5793,7 @@ xe.XE_AutoSave = jQuery.Class({ } } - editorEnableAutoSave(this.form, jQuery(this.form).attr("editor_sequence")); + editorEnableAutoSave(this.form, $(this.form).attr("editor_sequence")); // register hotkey this.oApp.exec('REGISTER_HOTKEY', ['ctrl+shift+s','AUTO_SAVE']); @@ -5814,7 +5807,7 @@ xe.XE_AutoSave = jQuery.Class({ * Format Block plugin * @author gony */ -xe.XE_FormatWithSelectUI = jQuery.Class({ +xe.XE_FormatWithSelectUI = $.Class({ name : "XE_FormatWithSelectUI", $init : function(elAppContainer){ @@ -5822,7 +5815,7 @@ xe.XE_FormatWithSelectUI = jQuery.Class({ }, _assignHTMLObjects : function(elAppContainer){ - this.elFormatSelect = jQuery("SELECT.xpress_xeditor_ui_format_select", elAppContainer).get(0); + this.elFormatSelect = $("SELECT.xpress_xeditor_ui_format_select", elAppContainer).get(0); }, $ON_MSG_APP_READY : function(){ @@ -5834,7 +5827,7 @@ xe.XE_FormatWithSelectUI = jQuery.Class({ var blockName = this.oApp.getWYSIWYGDocument().queryCommandValue("FormatBlock"); if (!blockName) return (this.elFormatSelect.selectedIndex = 0); - if (jQuery.browser.msie && /([0-9])/.test(blockName)) blockName = 'h'+(RegExp.$1); + if ($.browser.msie && /([0-9])/.test(blockName)) blockName = 'h'+(RegExp.$1); this.elFormatSelect.value = blockName.toLowerCase(); if(this.elFormatSelect.selectedIndex < 0) this.elFormatSelect.selectedIndex = 0; @@ -5844,7 +5837,7 @@ xe.XE_FormatWithSelectUI = jQuery.Class({ $ON_SET_FORMAT_FROM_SELECT_UI : function(){ var sFormat = this.elFormatSelect.value; if(!sFormat) return; - if(jQuery.browser.msie) sFormat = '<'+sFormat+'>'; + if($.browser.msie) sFormat = '<'+sFormat+'>'; this.oApp.exec("EXECCOMMAND", ["FormatBlock", false, sFormat]); this.oApp.exec("CHECK_STYLE_CHANGE", []); @@ -5856,16 +5849,16 @@ xe.XE_FormatWithSelectUI = jQuery.Class({ */ // 표 편집 확장 기능 -xe.XE_Table = jQuery.Class({ +xe.XE_Table = $.Class({ _startSel : null, _endSel : null, $ON_MSG_APP_READY : function() { - this._doc = jQuery(this.oApp.getWYSIWYGDocument()); + this._doc = $(this.oApp.getWYSIWYGDocument()); - this.$FnMouseDown = jQuery.fnBind(this._mousedown, this); - this.$FnMouseUp = jQuery.fnBind(this._mouseup, this); - this.$FnMouseMove = jQuery.fnBind(this._mousemove, this); + this.$FnMouseDown = $.fnBind(this._mousedown, this); + this.$FnMouseUp = $.fnBind(this._mouseup, this); + this.$FnMouseMove = $.fnBind(this._mousemove, this); this._doc.mousedown(this.$FnMouseDown); @@ -5887,7 +5880,7 @@ xe.XE_Table = jQuery.Class({ $ON_MERGE_CELLS : function() { var html = ""; - var cell = jQuery('.xe_selected_cell', this.oApp.getWYSIWYGDocument()).filter('td,th'); + var cell = $('.xe_selected_cell', this.oApp.getWYSIWYGDocument()).filter('td,th'); var self = this; // 선택된 셀이 없으면 종료 @@ -5897,7 +5890,7 @@ xe.XE_Table = jQuery.Class({ this.oApp.exec("RECORD_UNDO_ACTION", ["Cell:Merge"]); // 선택한 모든 셀의 데이터를 첫번째 셀로 복사 - cell.each(function(){ html += jQuery(this).html() }).eq(0).html(html); + cell.each(function(){ html += $(this).html() }).eq(0).html(html); // 첫번째 셀 가로 확장 var colspan = 0; @@ -5920,7 +5913,7 @@ xe.XE_Table = jQuery.Class({ }, $ON_CELL_SPLIT_BY_ROW : function(many) { - var cell = jQuery('.xe_selected_cell', this.oApp.getWYSIWYGDocument()).filter('td,th'); + var cell = $('.xe_selected_cell', this.oApp.getWYSIWYGDocument()).filter('td,th'); var table = cell.parents('table').eq(0); var self = this; @@ -5931,19 +5924,19 @@ xe.XE_Table = jQuery.Class({ this.oApp.exec("RECORD_UNDO_ACTION", ["Cell:Split By Row"]); // 선택 영역의 상하 좌표 구함 - var _top = this._getRect(cell.eq(0)).top; + var _top = this._getRect(cell.eq(0)).top; var _bottom = this._getRect(cell.eq(cell.length-1)).bottom; // 테이블의 모든 셀에서 선택영역에 해당하는 셀을 구한다(상하 기준). (cell = table.find('td,th').filter(function(){ - var rect = self._getRect(jQuery(this)); + var rect = self._getRect($(this)); return !(rect.bottom <= _top || rect.top >= _bottom); })).filter('.xe_selected_cell').each(function(){ - var t = jQuery(this); - var row = t.parent('tr'); + var t = $(this); + var row = t.parent('tr'); var rowspan = self._getSpan(t, 'row'); - var rect = self._getRect(t); + var rect = self._getRect(t); var queue = []; var clone = t.clone().html('
    '); var topspan = 1, botspan = 1; @@ -5964,7 +5957,7 @@ xe.XE_Table = jQuery.Class({ cell.filter(function(){ if (t.get(0) == this) return false; - var tt = jQuery(this); + var tt = $(this); var rc = self._getRect(tt); // 범위를 넘은 부분은 제외 @@ -5972,7 +5965,7 @@ xe.XE_Table = jQuery.Class({ return true; }).each(function(){ - var tt = jQuery(this); + var tt = $(this); var sp = self._getSpan(tt, 'row')+1; // rowspan 1 추가 @@ -5982,7 +5975,7 @@ xe.XE_Table = jQuery.Class({ }); // 새 줄을 추가한다. - if (jQuery.browser.msie) { + if ($.browser.msie) { // Fix bug for IE row.after(row.clone().empty().get(0).outerHTML); } else { @@ -5997,10 +5990,10 @@ xe.XE_Table = jQuery.Class({ row.after(row.clone().empty().append(clone)); } else { var next_sib = rows.eq(topspan - 1).children('td,th').filter(function(){ - return ( self._getRect(jQuery(this)).left > rect.left ); + return ( self._getRect($(this)).left > rect.left ); }); - if (jQuery.browser.msie) { + if ($.browser.msie) { next_sib.length? next_sib.eq(0).before(clone.get(0).outerHTML): rows.eq(topspan-1).append(clone.get(0).outerHTML); @@ -6012,13 +6005,13 @@ xe.XE_Table = jQuery.Class({ } // 함수를 바로 실행하면 좌표가 틀어지므로, 큐에 넣은 후 실행 - jQuery.each(queue, function(){ this(); }); + $.each(queue, function(){ this(); }); }); }, $ON_CELL_SPLIT_BY_COL : function(many) { - var cell = jQuery('.xe_selected_cell', this.oApp.getWYSIWYGDocument()).filter('td,th'); + var cell = $('.xe_selected_cell', this.oApp.getWYSIWYGDocument()).filter('td,th'); var table = cell.parents('table').slice(0,1); var self = this; var ie_bug = [], tmpId = (new Date).getTime(), tmpStr = ''; @@ -6036,11 +6029,11 @@ xe.XE_Table = jQuery.Class({ // 테이블의 모든 셀에서 선택영역에 해당하는 셀을 구한다(좌우 기준). (cell = table.find('td,th').filter(function(){ - var rect = self._getRect(jQuery(this)); + var rect = self._getRect($(this)); return !(rect.right <= _left || rect.left >= _right); })).filter('.xe_selected_cell').each(function(idx){ - var t = jQuery(this); + var t = $(this); var colspan = self._getSpan(t, 'col'); var clone = t.clone().html('
    '); @@ -6058,7 +6051,7 @@ xe.XE_Table = jQuery.Class({ cell.filter(function(){ if (t.get(0) == this) return false; - var tt = jQuery(this); + var tt = $(this); var rc = self._getRect(tt); // 범위를 넘은 부분은 제외 @@ -6066,7 +6059,7 @@ xe.XE_Table = jQuery.Class({ return true; }).each(function(){ - var tt = jQuery(this); + var tt = $(this); // colspan 1 추가 tt.attr('colSpan', self._getSpan(tt, 'col')+1); @@ -6075,7 +6068,7 @@ xe.XE_Table = jQuery.Class({ clone.attr('colSpan', 1); } - if (jQuery.browser.msie) { + if ($.browser.msie) { // Fix for IE bug t.after(clone.get(0).outerHTML); } else { @@ -6089,17 +6082,17 @@ xe.XE_Table = jQuery.Class({ var app = this.oApp; var command = (this._startSel && this._startSel.is('.xe_selected_cell'))?'ENABLE_UI':'DISABLE_UI'; - jQuery.each(ui, function(){ app.exec(command, [this]); }); + $.each(ui, function(){ app.exec(command, [this]); }); }, _mousedown : function(event) { - var cur = jQuery(event.target); + var cur = $(event.target); var sel = cur.parents().andSelf().filter('td,th,table'); var app = this.oApp; var self = this; // 모든 선택영역 해제 - jQuery('td.xe_selected_cell', this.oApp.getWYSIWYGDocument()).removeClass('xe_selected_cell'); + $('td.xe_selected_cell', this.oApp.getWYSIWYGDocument()).removeClass('xe_selected_cell'); this._startSel = null; this._endSel = null; @@ -6109,7 +6102,7 @@ xe.XE_Table = jQuery.Class({ function delayed(){ sel = app.getSelection().cloneRange(); sel.collapseToStart(); - sel = jQuery(sel.startContainer).parents().andSelf().filter('td,th').eq(0); + sel = $(sel.startContainer).parents().andSelf().filter('td,th').eq(0); if (!sel.length) return self._removeAllListener()||true; @@ -6134,7 +6127,7 @@ xe.XE_Table = jQuery.Class({ }, _mousemove : function(event) { - var cur = jQuery(event.target); + var cur = $(event.target); var cell = cur.parents().andSelf().filter('td,th').eq(0); var self = this; @@ -6147,7 +6140,7 @@ xe.XE_Table = jQuery.Class({ this._getRect(this._endSel = cell); // 선택 범위를 구한다 - var _top = Math.min(this._startSel.rect.top, this._endSel.rect.top); + var _top = Math.min(this._startSel.rect.top, this._endSel.rect.top); var _left = Math.min(this._startSel.rect.left, this._endSel.rect.left); var _bottom = Math.max(this._startSel.rect.bottom, this._endSel.rect.bottom); var _right = Math.max(this._startSel.rect.right, this._endSel.rect.right); @@ -6157,23 +6150,23 @@ xe.XE_Table = jQuery.Class({ var i = 0; // 복잡한 모양의 테이블을 위한 반복 처리 - var selected = jQuery(); + var selected = $(); do { // 선택한 셀로 최대 영역 재계산 selected.each(function(){ - var rect = self._getRect(jQuery(this)); + var rect = self._getRect($(this)); // 영역 재계산 if (rect.right > _right) _right = rect.right; if (rect.left < _left) _left = rect.left; - if (rect.top < _top) _top = rect.top; + if (rect.top < _top) _top = rect.top; if (rect.bottom > _bottom) _bottom = rect.bottom; }); // 좌표 범위 안에 있는 선택할 셀을 추린다. cells = cells.filter(':not(.xe_selected_cell)'); selected = cells.filter(function(){ - var rect = self._getRect(jQuery(this)); + var rect = self._getRect($(this)); if (rect.right <= _left || rect.left >= _right || rect.bottom <= _top || rect.top >= _bottom) return false; @@ -6182,7 +6175,7 @@ xe.XE_Table = jQuery.Class({ } while(selected.length); // 브라우저의 기본 선택영역 해제 : FF 제외 - 기본 기능이 충분히 좋아서 + 이 부분을 실행하면 오류가 발생해서 - if (!jQuery.browser.mozilla) { + if (!$.browser.mozilla) { function delayed() { var sel = self.oApp.getSelection(); @@ -6207,14 +6200,14 @@ xe.XE_Table = jQuery.Class({ }, _isLeftClicked : function(value) { - return jQuery.browser.msie?!!(value & 1):(value == 0); + return $.browser.msie?!!(value & 1):(value == 0); }, _getRect : function(obj) { var el = obj.get(0); obj.rect = {}; - obj.rect.top = el.offsetTop; + obj.rect.top = el.offsetTop; obj.rect.left = el.offsetLeft; obj.rect.bottom = obj.rect.top + el.offsetHeight; obj.rect.right = obj.rect.left + el.offsetWidth; @@ -6223,8 +6216,10 @@ xe.XE_Table = jQuery.Class({ }, _getSpan : function(obj, type) { - var span = parseInt(jQuery(obj).attr(type+'span')); + var span = parseInt($(obj).attr(type+'span')); return isNaN(span)?1:span; } }).extend(xe.XE_Table); + +})(jQuery); \ No newline at end of file diff --git a/modules/editor/skins/xpresseditor/js/xe_interface.js b/modules/editor/skins/xpresseditor/js/xe_interface.js index 17e275ce0..05d5a4201 100644 --- a/modules/editor/skins/xpresseditor/js/xe_interface.js +++ b/modules/editor/skins/xpresseditor/js/xe_interface.js @@ -3,182 +3,163 @@ if (!window.xe) xe = {}; xe.Editors = []; function editorStart_xe(editor_sequence, primary_key, content_key, editor_height, colorset, content_style, content_font, content_font_size) { - if(typeof(colorset)=='undefined') colorset = 'white'; - if(typeof(content_style)=='undefined') content_style = 'xeStyle'; - if(typeof(content_font)=='undefined') content_font= ''; - if(typeof(content_font_size)=='undefined') content_font_size= ''; + if(typeof(colorset)=='undefined') colorset = 'white'; + if(typeof(content_style)=='undefined') content_style = 'xeStyle'; + if(typeof(content_font)=='undefined') content_font= ''; + if(typeof(content_font_size)=='undefined') content_font_size= ''; - var target_src = request_uri+'modules/editor/styles/'+content_style+'/editor.html'; + var target_src = request_uri+'modules/editor/styles/'+content_style+'/editor.html'; - var textarea = jQuery("#xpress-editor-"+editor_sequence); - var iframe = jQuery('