From f1b149a52d8568e00b0905f50bc92abb75628f3a Mon Sep 17 00:00:00 2001 From: supershop Date: Thu, 19 Jun 2008 11:42:58 +0000 Subject: [PATCH 01/71] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4311 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/session/conf/info.xml | 6 ++++++ modules/session/lang/en.lang.php | 13 +++++++++++++ widgets/logged_members/conf/info.xml | 11 +++++++++++ 3 files changed, 30 insertions(+) create mode 100644 modules/session/lang/en.lang.php diff --git a/modules/session/conf/info.xml b/modules/session/conf/info.xml index 40dd67cbe..6d844a3ed 100644 --- a/modules/session/conf/info.xml +++ b/modules/session/conf/info.xml @@ -1,13 +1,19 @@ 세션 관리자 + Session 会话管理 zero + zero zero 접속자의 세션을 관리하는 모듈입니다. 기본적인 세션 설정과 사용뿐 아니라 세션 정보를 이용하여 접속자등의 세션 기반의 정보를 제공하는 기능도 있습니다. + + + This module manages session data. + You will get not only session setting or using but also session-level data such as visitors by using session data. 管理在线会员会话(session)功能的模块。 diff --git a/modules/session/lang/en.lang.php b/modules/session/lang/en.lang.php new file mode 100644 index 000000000..6597109fe --- /dev/null +++ b/modules/session/lang/en.lang.php @@ -0,0 +1,13 @@ + + * @brief 한국어 언어팩 (기본적인 내용만 수록) + **/ + + $lang->session = 'Session'; + $lang->about_session = "This module manages sessions\nFrequent session arrangement will provide better environment for your site."; + + $lang->cmd_clear_session = 'Arrange Session'; + $lang->session_cleared = 'Session data have been arranged succesfully'; +?> diff --git a/widgets/logged_members/conf/info.xml b/widgets/logged_members/conf/info.xml index 472731158..0da3d42de 100644 --- a/widgets/logged_members/conf/info.xml +++ b/widgets/logged_members/conf/info.xml @@ -1,12 +1,17 @@ 로그인 사용자 출력 위젯 + Display On-Line Members 在线会员列表 zero + zero zero 로그인 사용자를 출력하는 위젯입니다. + + + This widget displays on-line members. 显示在线会员列表的控件。 @@ -15,24 +20,30 @@ 목록수 + List Count 目录数 text 출력될 목록의 수를 정하실 수 있습니다. (기본 5개) + You may set number of list to be displayed. (default 5) 可设置要显示的目录数。 (默认为5个) 대상 지정 + Target 模块对象 select 대상을 전체로 하면 홈페이지 접속자 모두가 출력되고 Mid 구분으로 하게 되면 접속한 Mid에 같이 접속한 회원만 출력이 됩니다. + All on-line members will be displayed when you set target as 'All', or members in same Mid will be displayed when target is 'By Mid'. 选择“全部”将显示全部在线会员,“区分Mid”为显示各模块中的在线会员。 전체 + All 全部 total Mid 구분 + By Mid 区分Mid mid From 3704a8c89dbc0babaedc6168afced9feba6aff81 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 20 Jun 2008 01:46:49 +0000 Subject: [PATCH 02/71] =?UTF-8?q?getRequestArgument()=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=B0=B0=EC=97=B4=EB=A1=9C=20=EB=90=9C=20?= =?UTF-8?q?=EC=BF=A0=ED=82=A4=EA=B0=92=EC=9D=84=20=EC=9E=98=EB=AA=BB=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=95=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(simulz=EB=8B=98=20=EA=B0=90=EC=82=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@4312 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 8acfff40c..f2038af1a 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -478,10 +478,11 @@ foreach($_REQUEST as $key => $val) { if($key == "page" || $key == "cpage" || substr($key,-3)=="srl") $val = (int)$val; - if(is_array($val)) { - for($i=0;$i $v) { + if(get_magic_quotes_gpc()) $v = stripslashes($v); + $v = trim($v); + $val[$k] = $v; } } else { if(get_magic_quotes_gpc()) $val = stripslashes($val); From ee5b0aacba11be94fcf57182ccdbb51895124f20 Mon Sep 17 00:00:00 2001 From: duvent Date: Fri, 20 Jun 2008 15:12:48 +0000 Subject: [PATCH 03/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4313 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/lang/fr.lang.php | 6 +++--- modules/board/lang/fr.lang.php | 6 +++--- modules/comment/lang/fr.lang.php | 2 +- modules/document/lang/fr.lang.php | 2 +- modules/editor/lang/fr.lang.php | 2 +- modules/importer/lang/fr.lang.php | 2 +- modules/install/lang/fr.lang.php | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index c04fc4626..88611ec97 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -62,7 +62,7 @@ $lang->cmd_publish = "Publier"; $lang->cmd_layout_setup = 'Configurer la Mise en page'; $lang->cmd_layout_edit = 'Editer la Mise en page'; - $lang->cmd_search_by_ipaddress = 'IP주소로 검색'; + $lang->cmd_search_by_ipaddress = 'Recherce par l\'Address IP'; $lang->enable = 'Valide'; $lang->disable = 'Invalide'; @@ -83,7 +83,7 @@ $lang->writer = 'Auteur'; $lang->user_name = 'Nom d\'utilisateur'; $lang->nick_name = 'Surnom'; - $lang->email_address = 'Courriel'; + $lang->email_address = 'Mél'; $lang->homepage = 'Page d\'accueil'; $lang->blog = 'Blogue'; $lang->birthday = 'Anniversaire'; @@ -222,7 +222,7 @@ $lang->column_type = 'Types des colonnes'; $lang->column_type_list['text'] = 'Texte en une seul ligne'; $lang->column_type_list['homepage'] = 'URL'; - $lang->column_type_list['email_address'] = 'Courriel'; + $lang->column_type_list['email_address'] = 'Mél'; $lang->column_type_list['tel'] = 'Numéro de Telephone'; $lang->column_type_list['textarea'] = 'Texte en plusieurs lignes'; $lang->column_type_list['checkbox'] = 'Case à cocher (multichoix)'; diff --git a/modules/board/lang/fr.lang.php b/modules/board/lang/fr.lang.php index 344c52e93..10efb30e2 100644 --- a/modules/board/lang/fr.lang.php +++ b/modules/board/lang/fr.lang.php @@ -20,7 +20,7 @@ $lang->category_group_srls = 'Groupe Accessible'; $lang->search_result = 'Résultat de la Recherche'; $lang->consultation = 'Consultation'; - $lang->admin_mail = '관리자 메일'; + $lang->admin_mail = 'Mél de l\'administrateur'; // Mots utiliss en bouton $lang->cmd_board_list = 'Liste des Panneaux'; @@ -30,11 +30,11 @@ // blah blah.. $lang->about_category_title = 'Entrez le nom de la catégorie, SVP.'; $lang->about_expand = 'Si vous cochez la case, ce sera toujours tendu'; - $lang->about_category_group_srls = '선택하신 그룹만 현재 카테고리를 지정할 수 있도록 합니다'; + $lang->about_category_group_srls = 'Le groupe choisi seulement pourront utiliser la catégorie courrante'; $lang->about_layout_setup = 'Vous pouvez manuellement modifier le code de Mise en Page du Panneau. Insérez ou arrangez le code de Widget n\'importe où vous voulez.'; $lang->about_board_category = 'Vous pouvez créer des catégories d\'affichage dans le tableau. Quand la catégorie d\'affichage est cassé, essayez manuellement rétablir la cachette du fichier.'; $lang->about_except_notice = "L'Article de Notice ne sera exposé sur la liste normale."; $lang->about_board = "Ce module se sert à créer et arranger des Panneaux.\nAprés avoir créé un module, si vous cliquez le nom sur le liste, vous pouvez configurer spécifiquement.\nFaites attention quand vous nomer un module du Panneau, car ce sera URL. (ex : http://domain/zb/?mid=nom_de_module)"; $lang->about_consultation = "Les membres non-administratifs verront seulement les ariticles d\'eux-même.\nNon-membres ne pourraient pas écrire des articles quand la Consultation est appliqué."; - $lang->about_admin_mail = '글이나 댓글이 등록될때 등록된 메일주소로 메일이 발송됩니다
,(콤마)로 연결시 다수의 메일주소로 발송할 수 있습니다.'; + $lang->about_admin_mail = 'Un message eletronique sera envoyé pour l\'address inscrite quand un article ou commentaire se soumet
On peut inscrire multiple addresses délimité par les virgules.'; ?> diff --git a/modules/comment/lang/fr.lang.php b/modules/comment/lang/fr.lang.php index 351105280..a6d326e84 100644 --- a/modules/comment/lang/fr.lang.php +++ b/modules/comment/lang/fr.lang.php @@ -23,7 +23,7 @@ 'user_name' => 'Nom', 'nick_name' => 'Surnom', 'member_srl' => 'Member Serial', - 'email_address' => 'Courriel', + 'email_address' => 'Mél', 'homepage' => 'Page d\'Accueil', 'regdate' => 'Jour', 'last_update' => 'Mise à Jour', diff --git a/modules/document/lang/fr.lang.php b/modules/document/lang/fr.lang.php index 14b685e0b..b12331d05 100644 --- a/modules/document/lang/fr.lang.php +++ b/modules/document/lang/fr.lang.php @@ -35,7 +35,7 @@ 'member_srl' => 'Nombre Sériel du Membre', 'user_name' => 'Nom', 'nick_name' => 'Surnom', - 'email_address' => 'Courriel', + 'email_address' => 'Mél', 'homepage' => 'Page d\'accueil', 'is_notice' => 'Notice', 'is_secret' => 'Secret', diff --git a/modules/editor/lang/fr.lang.php b/modules/editor/lang/fr.lang.php index da42d1378..dbe70fa03 100644 --- a/modules/editor/lang/fr.lang.php +++ b/modules/editor/lang/fr.lang.php @@ -17,7 +17,7 @@ $lang->about_component = "Sur le Composant"; $lang->about_component_grant = 'Vous pouvez configurer l\'autorisation à utiliser des composants tendus de l\'Editeur.
(Tout le monde aura l\'autorisation si vous ne cochez rien)'; - $lang->about_component_mid = "에디터 컴포넌트가 사용될 대상을 지정할 수 있습니다.
(모두 해제시 모든 대상에서 사용 가능합니다)"; + $lang->about_component_mid = "Vous pouvez indiquer les objectifs que les composants s'appliquer
(Tous les objectifs seront choisis quand rien est choisi.)"; $lang->msg_component_is_not_founded = 'Ne peut pas trouver Composant %s'; $lang->msg_component_is_inserted = 'Composant choisi est déjà inséré'; diff --git a/modules/importer/lang/fr.lang.php b/modules/importer/lang/fr.lang.php index ae27da5a3..c482f14be 100644 --- a/modules/importer/lang/fr.lang.php +++ b/modules/importer/lang/fr.lang.php @@ -54,5 +54,5 @@ $lang->about_type_syncmember = 'Sélectionnez cette option si vous voulez synchroniser les informations des membres après le trensfert des informations des membres et des articles.'; $lang->about_importer = "Vous pouvez transeférer les données de Zeroboard4, de Zeroboard5 Beta ou d\'autres logiciels en les données de ZeroboardXE.\nPour tranférer, vous devez utiliser Exporteur de XML pour convertir les données en fichier de XML, et puis téléchargez-le."; - $lang->about_target_path = "Pour obtenir les attachés de Zeroboard4, Insérez l\'addresse ou Zeroboard4 est installé.\nSi ça se trouve dans le même serveur, entrez le chemin comme \'/home/USERID/public_html/bbs\'\nSi ça ne se trouve pas dans le même serveur, entrez l\'address où Zeroboard4 est installé comme \'http://Domain/bbs\'"; + $lang->about_target_path = "Pour obtenir les attachés de Zeroboard4, Insérez l\'addresse ou Zeroboard4 est installé.\nSi ça se trouve dans le même serveur, entrez le chemin comme '/home/USERID/public_html/bbs'\nSi ça ne se trouve pas dans le même serveur, entrez l\'address où Zeroboard4 est installé comme 'http://Domain/bbs'"; ?> diff --git a/modules/install/lang/fr.lang.php b/modules/install/lang/fr.lang.php index ed24c4448..9e9f85685 100644 --- a/modules/install/lang/fr.lang.php +++ b/modules/install/lang/fr.lang.php @@ -224,8 +224,8 @@ EndOfLicense; $lang->about_rewrite = "Si le serveur de web est capable d'utiliser le mode de récrire, URL longue comme http://blah/?document_srl=123 peut être abrégé comme http://blah/123"; $lang->time_zone = 'Fuseau horaire'; $lang->about_time_zone = "Si l'heure de serveur et celle de votre emplacement ne s'accordent pas, vous pouvez remettre l'heure comme le même heure de votre lieu en configurant le fuseau horaire "; - $lang->qmail_compatibility = 'Qmail 호환'; - $lang->about_qmail_compatibility = 'Qmail등 CRLF를 줄 구분자로 인식하지 못하는 MTA에서 메일이 발송되도록 합니다.'; + $lang->qmail_compatibility = 'Compatible avec Qmail'; + $lang->about_qmail_compatibility = 'Le mél sera envoyer en MTA qui ne peut pas reconnaître le CRLF comme délimiteur des lignes comme le Qmail.'; $lang->about_database_file = 'Sqlite conserve des données dans le fichier. Vous devez placer le fichier de la base de données où l\'on ne peut pas accéder par web.
Le fichier des Donées doit être en dedans la permission 707.'; From 8d69152ccbe1863303087aded568379d594ee93b Mon Sep 17 00:00:00 2001 From: duvent Date: Fri, 20 Jun 2008 15:17:00 +0000 Subject: [PATCH 04/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4314 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/communication/lang/fr.lang.php | 48 ++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 modules/communication/lang/fr.lang.php diff --git a/modules/communication/lang/fr.lang.php b/modules/communication/lang/fr.lang.php new file mode 100644 index 000000000..a6788867c --- /dev/null +++ b/modules/communication/lang/fr.lang.php @@ -0,0 +1,48 @@ +communication = 'Communication'; + $lang->about_communication = 'Ce module exécute fonctions communicatives comme les messages ou les amis'; + + $lang->allow_message = 'Recevoir les Messages'; + $lang->allow_message_type = array( + 'Y' => 'Recevoir tout', + 'N' => 'Refuser tout', + 'F' => 'Amis seulement', + ); + + $lang->message_box = array( + 'R' => 'Reçu', + 'S' => 'Envoyé', + 'T' => 'Boîte aux Lettres', + ); + $lang->readed_date = "Jour"; + + $lang->sender = 'Envoyeur'; + $lang->receiver = 'Receveur'; + $lang->friend_group = 'Groupe des Amis'; + $lang->default_friend_group = 'Groupe pas assigné '; + + $lang->cmd_send_message = 'Envoyer un Message'; + $lang->cmd_reply_message = 'Répondre à un Message'; + $lang->cmd_view_friend = 'Amis'; + $lang->cmd_add_friend = 'Inscrire des Amis'; + $lang->cmd_view_message_box = 'Lire des Messages'; + $lang->cmd_store = "Conserver"; + $lang->cmd_add_friend_group = 'Ajouter Groupe des Amis'; + $lang->cmd_rename_friend_group = 'Modifier le Nom du Groupe des Amis'; + + $lang->msg_no_message = 'Aucun Message'; + $lang->message_received = 'Nouveau message'; + + $lang->msg_title_is_null = 'Entrez le titre du message, S.V.P.'; + $lang->msg_content_is_null = 'Entrez le contenu, S.V.P.'; + $lang->msg_allow_message_to_friend = "Echoué à envoyer parce que le receveur permet seulement les messages des amis."; + $lang->msg_disallow_message = 'Echoué à envoyer parce que le receveur refuse la réception des messages'; + + $lang->about_allow_message = 'Vous pouvez décider la réception des messages'; +?> From 7fd72f31930b50a946a670914a70a96d4e947afc Mon Sep 17 00:00:00 2001 From: duvent Date: Fri, 20 Jun 2008 15:31:18 +0000 Subject: [PATCH 05/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4315 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/lang/fr.lang.php | 185 ++++++++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 modules/member/lang/fr.lang.php diff --git a/modules/member/lang/fr.lang.php b/modules/member/lang/fr.lang.php new file mode 100644 index 000000000..90c189b0c --- /dev/null +++ b/modules/member/lang/fr.lang.php @@ -0,0 +1,185 @@ +member = 'Membre'; + $lang->member_default_info = 'Informations fondamentales'; + $lang->member_extend_info = 'Informations additionnelles'; + $lang->default_group_1 = "Membre Associé"; + $lang->default_group_2 = "Membre Régulier"; + $lang->admin_group = "Groupe des administrateurs"; + $lang->keep_signed = 'Gardez la session ouverte'; + $lang->remember_user_id = 'Mémorisez mon Compte'; + $lang->already_logged = "Vous avez déjà ouvert une session"; + $lang->denied_user_id = 'Vous avez entré un comte interdit.'; + $lang->null_user_id = 'Entrez votre compte'; + $lang->null_password = 'Entrez le mot de passe'; + $lang->invalid_authorization = 'Votre compte n\'est pas certifié.'; + $lang->invalid_user_id= "Vous avez entré un compte invalide"; + $lang->invalid_password = 'Vous avez entré un mot de passe invalide'; + $lang->allow_mailing = 'Joindre au Mailing'; + $lang->denied = 'Interdit'; + $lang->is_admin = 'Permission Superadministrative'; + $lang->group = 'Groupe assigné'; + $lang->group_title = 'Nom du Groupe'; + $lang->group_srl = 'Numéro du Groupe'; + $lang->signature = 'Signature'; + $lang->profile_image = 'Image du profil'; + $lang->profile_image_max_width = 'Largeur Maximum'; + $lang->profile_image_max_height = 'Hauteur Maximum'; + $lang->image_name = 'Nom en Image'; + $lang->image_name_max_width = 'Largeur Maximum'; + $lang->image_name_max_height = 'Hauteur Maximum'; + $lang->image_mark = 'Marque en Image'; + $lang->image_mark_max_width = 'Largeur Maximum'; + $lang->image_mark_max_height = 'Hauteur Maximum'; + $lang->signature_max_height = 'Hauteur Maximum de la Signature'; + $lang->enable_openid = 'Permettre OpenID'; + $lang->enable_join = 'Permettre à s\'inscrire'; + $lang->enable_confirm = 'Utiliser Authentification par mél'; + $lang->enable_ssl = 'Utiliser SSL'; + $lang->security_sign_in = 'Ouvrir une Session en utilisant sécurité rehaussé'; + $lang->limit_day = 'Jour de Limite Temporaire'; + $lang->limit_date = 'Jour de Limite'; + $lang->after_login_url = 'URL après la connexion'; + $lang->after_logout_url = 'URL après la déconnexion '; + $lang->redirect_url = 'URL après Inscription'; + $lang->agreement = 'Accord d\'Inscription comme Membre'; + $lang->accept_agreement = 'D\'accord'; + $lang->member_info = 'Informations du Membre'; + $lang->current_password = 'Mot de Passe courrant'; + $lang->openid = 'OpenID'; + + $lang->webmaster_name = "Nom de Webmestre"; + $lang->webmaster_email = "Mél de Webmestre"; + + $lang->about_keep_signed = 'Malgré que le navigateur est fermé, votre session peut être ouverte. \n\nSi vous utilisez cette fonction sur l\'ordinateur commun, vos informations privé peut être exposé. Nous vous recommandons de ne pas utiliser cette fonctions sur l\'ordinateur commun.'; + $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\'address du mél de webmestre, S.V.P."; + + $lang->search_target_list = array( + 'user_id' => 'Compte', + 'user_name' => 'Nom', + 'nick_name' => 'Surnom', + 'email_address' => 'Mél', + 'regdate' => 'Jour d\'enregistrer', + 'last_login' => 'Jour de la connexion dernière', + 'extra_vars' => 'Variables extra ', + ); + + $lang->cmd_login = 'Login'; + $lang->cmd_logout = 'Logout'; + $lang->cmd_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_member_list = 'Member List'; + $lang->cmd_module_config = 'Default Setting'; + $lang->cmd_member_group = 'Manage Groups'; + $lang->cmd_send_mail = 'Send Mail'; + $lang->cmd_manage_id = 'Manage Prohibited IDs'; + $lang->cmd_manage_form = 'Manage Join Form'; + $lang->cmd_view_own_document = 'Written Articles'; + $lang->cmd_trace_document = 'Trace Written Articles'; + $lang->cmd_trace_comment = 'Trace Written Comments'; + $lang->cmd_view_scrapped_document = 'Scraps'; + $lang->cmd_view_saved_document = 'Saved Articles'; + $lang->cmd_send_email = 'Send Mail'; + + $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 certification 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 certification.
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_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 certification'; + $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_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_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_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_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 certification 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_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_profile_image = 'Allow users to use profile images'; + $lang->about_accept_agreement = "I have read the agreement and agree"; + + $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 certification 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.
'; +?> From abaa76af4417d43756e65fb0aaad552dcadfabc6 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 23 Jun 2008 01:07:15 +0000 Subject: [PATCH 06/71] =?UTF-8?q?XSS=20=EC=8B=9C=EB=8F=84=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=20=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EA=B0=80=20?= =?UTF-8?q?=EB=8F=99=EC=9E=91=ED=95=98=EC=A7=80=20=EC=95=8A=EA=B2=8C=20?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4316 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 3044ac8d4..c2f53c381 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -425,7 +425,7 @@ function removeJSEvent($matches) { $tag = strtolower($matches[1]); if($tag == "a" && preg_match('/href=("|\'?)javascript:/i',$matches[2])) $matches[0] = preg_replace('/href=("|\'?)javascript:/i','href=$1_javascript:', $matches[0]); - return preg_replace('/on([a-z]+)=/i','_on$1=',$matches[0]); + return preg_replace('/ on([a-z]+)=/i',' _on$1=',$matches[0]); } // hexa값을 RGB로 변환 From 009d74143f5e7569e12e3e1e5e31674fcf3aa069 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 23 Jun 2008 02:39:56 +0000 Subject: [PATCH 07/71] =?UTF-8?q?communication=EB=AA=A8=EB=8D=B8=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=B9=9C=EA=B5=AC=ED=99=95=EC=9D=B8=EC=9D=84=20?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=BD=94=EB=93=9C=EC=9D=98=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4317 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/communication/communication.controller.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/communication/communication.controller.php b/modules/communication/communication.controller.php index a2f4ce821..4343a8883 100644 --- a/modules/communication/communication.controller.php +++ b/modules/communication/communication.controller.php @@ -53,6 +53,7 @@ // 받을 회원이 있는지에 대한 검사 $oMemberModel = &getModel('member'); + $oCommunicationModel = &getModel('communication'); $receiver_member_info = $oMemberModel->getMemberInfoByMemberSrl($receiver_srl); if($receiver_member_info->member_srl != $receiver_srl) return new Object(-1, 'msg_not_exists_member'); From 819f5e7709af488b8ad2e663129965db200756de Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 23 Jun 2008 08:38:32 +0000 Subject: [PATCH 08/71] =?UTF-8?q?mobileXE=20=EC=8B=9C=ED=97=98=EB=B2=84?= =?UTF-8?q?=EC=A0=84=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@4318 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/mobile/classes/hdml.class.php | 96 ++++++++++ addons/mobile/classes/mhtml.class.php | 63 +++++++ addons/mobile/classes/mobile.class.php | 247 +++++++++++++++++++++++++ addons/mobile/classes/mobile.func.php | 17 ++ addons/mobile/classes/wml.class.php | 74 ++++++++ addons/mobile/conf/info.xml | 21 +++ addons/mobile/lang/ko.lang.php | 10 + addons/mobile/mobile.addon.php | 155 ++++++++++++++++ 8 files changed, 683 insertions(+) create mode 100644 addons/mobile/classes/hdml.class.php create mode 100644 addons/mobile/classes/mhtml.class.php create mode 100644 addons/mobile/classes/mobile.class.php create mode 100644 addons/mobile/classes/mobile.func.php create mode 100644 addons/mobile/classes/wml.class.php create mode 100644 addons/mobile/conf/info.xml create mode 100644 addons/mobile/lang/ko.lang.php create mode 100644 addons/mobile/mobile.addon.php diff --git a/addons/mobile/classes/hdml.class.php b/addons/mobile/classes/hdml.class.php new file mode 100644 index 000000000..827da8441 --- /dev/null +++ b/addons/mobile/classes/hdml.class.php @@ -0,0 +1,96 @@ + + **/ + class wap extends mobileXE { + + /** + * @brief hdml 헤더 출력 + **/ + function printHeader() { + header("Content-Type:text/x-hdml; charset=".$this->charset); + header("Cache-Control: no-store, no-cache, must-revalidate"); + header("Cache-Control: post-check=0, pre-check=0", false); + header("Pragma: no-cache"); + + print ''; + print "\n"; + print $this->hasChilds()?'':''; + print "\n"; + + if($this->upperUrl) { + $url = $this->upperUrl; + printf('%s', $url->url, $url->text, "\n"); + } + } + + /** + * @brief 제목을 출력 + **/ + function printTitle() { + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf('<%s%s>%s', $this->title,$titlePageStr,"\n"); + } + + /** + * @brief 내용을 출력 + * hasChilds()가 있으면 목록형을 그렇지 않으면 컨텐츠를 출력 + **/ + function printContent() { + if($this->hasChilds()) { + foreach($this->getChilds() as $key => $val) { + if(!$val['link']) continue; + printf('%s%s',Context::getLang('cmd_select'), $val['href'], $val['text'], "\n"); + } + } else { + printf('%s
%s', $this->getContent(),"\n"); + } + } + + /** + * @brief 버튼을 출력함 + **/ + function printBtn() { + // 메뉴 형식 + if($this->hasChilds()) { + if($this->prevUrl) { + $url = $this->prevUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + if($this->nextUrl) { + $url = $this->nextUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + if($this->homeUrl) { + $url = $this->homeUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + // 컨텐츠 형식 + } else { + if($this->prevUrl) { + $url = $this->prevUrl; + printf('%s', $url->text, $url->url, $url->text); + } + if($this->nextUrl) { + $url = $this->nextUrl; + printf('%s', $url->text, $url->url, $url->text); + } + if($this->homeUrl) { + $url = $this->homeUrl; + printf('%s', $url->text, $url->url, $url->text); + } + } + } + + /** + * @brief 푸터 정보를 출력 + **/ + function printFooter() { + print $this->hasChilds()?'
':''; + print "\n"; + print("
"); + } + + } +?> diff --git a/addons/mobile/classes/mhtml.class.php b/addons/mobile/classes/mhtml.class.php new file mode 100644 index 000000000..b78174b62 --- /dev/null +++ b/addons/mobile/classes/mhtml.class.php @@ -0,0 +1,63 @@ + + **/ + class wap extends mobileXE { + + /** + * @brief hdml 헤더 출력 + **/ + function printHeader() { + print("\n"); + } + + // 제목을 출력 + function printTitle() { + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf('<%s%s>
%s', $this->title,$titlePageStr,"\n"); + } + + /** + * @brief 내용을 출력 + * hasChilds()가 있으면 목록형을 그렇지 않으면 컨텐츠를 출력 + **/ + function printContent() { + if($this->hasChilds()) { + foreach($this->getChilds() as $key => $val) { + if(!$val['link']) continue; + printf('%s
%s', $val['href'], $this->getNo(), $val['text'], "\n"); + } + } else { + print $this->getContent()."\n"; + } + } + + /** + * @brief 버튼을 출력함 + **/ + function printBtn() { + if($this->prevUrl) { + $url = $this->prevUrl; + printf('%s
%s', $url->url, $url->text, "\n"); + } + if($this->nextUrl) { + $url = $this->nextUrl; + printf('%s
%s', $url->url, $url->text, "\n"); + } + if($this->upperUrl) { + $url = $this->upperUrl; + printf('%s', $url->url, $url->text, "\n"); + } + if($this->homeUrl) { + $url = $this->homeUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + } + + // 푸터 정보를 출력 + function printFooter() { + print("\n"); + } + } +?> diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php new file mode 100644 index 000000000..fe1de3518 --- /dev/null +++ b/addons/mobile/classes/mobile.class.php @@ -0,0 +1,247 @@ + + * @brief WAP 태그 출력을 위한 라이브러리 + **/ + + class mobileXE { + + // 기본 url + var $homeUrl = NULL; + var $upperUrl = NULL; + var $nextUrl = NULL; + var $prevUrl = NULL; + + // 메뉴 네비게이션을 위한 변수 + var $childs = null; + + // 기본 변수 + var $title = NULL; + var $content = NULL; + var $mobilePage = 0; + var $totalPage = 1; + var $charset = 'euc-kr'; + var $no = 0; + + // Deck size + var $deckSize = 500; + + // getInstance + function &getInstance() { + static $instance = null; + + if(!$instance) { + + $browserType = mobileXE::getBrowserType(); + if(!$browserType) return; + + $class_file = sprintf('%saddons/mobile/classes/%s.class.php', _XE_PATH_, $browserType); + require_once($class_file); + + Context::loadLang(_XE_PATH_.'addons/mobile/lang'); + + $instance = new wap(); + + $mobilePage = (int)Context::get('mpage'); + if(!$mobilePage) $mobilePage = 1; + $instance->setMobilePage($mobilePage); + } + + return $instance; + } + + /** + * @brief 접속 브라우저의 헤더를 판단하여 브라우저 타입을 return + * 모바일 브라우저가 아닐 경우 null return + **/ + function getBrowserType() { + // 브라우저 타입을 판별 + $browserAccept = $_SERVER['HTTP_ACCEPT']; + $userAgent = $_SERVER['HTTP_USER_AGENT']; + $wap_sid = $_SERVER['HTTP_X_UP_SUBNO']; + + if(eregi("SKT11", $userAgent)) $browserType = "wml"; + elseif(eregi("hdml", $browserAccept)) $browserType = "hdml"; + elseif(eregi("CellPhone", $userAgent)) $browserType = "mhtml"; + else $browserType = "html"; + +$browserType = 'mhtml'; + // class 지정 (html일 경우 동작 하지 않도록 함) + if($browserType == 'html') return null; + + return $browserType; + } + + // charset 지정 + function setCharSet($charset = 'utf-8') { + if(!$charset) $charset = 'utf-8'; + $this->charset = $charset; + } + + // 모바일 기기의 용량 제한에 다른 가상 페이지 지정 + function setMobilePage($page=1) { + if(!$page) $page = 1; + $this->mobilePage = $page; + } + + // 목록형 데이터 설정을 위한 child menu지정 + function setChilds($childs) { + // menu개수가 9개 이상일 경우 자체 페이징 처리 + $menu_count = count($childs); + if($menu_count>9) { + $startNum = ($this->mobilePage-1)*9; + $idx = 0; + $new_childs = array(); + foreach($childs as $k => $v) { + if($idx >= $startNum && $idx < $startNum+9) { + $new_childs[$k] = $v; + } + $idx ++; + } + $childs = $new_childs; + + $this->totalPage = (int)(($menu_count-1)/9)+1; + + // next/prevUrl 지정 + if($this->mobilePage>1) { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $this->mobilePage-1, $this->totalPage); + $this->setPrevUrl($url, $text); + } + + if($this->mobilePage<$this->totalPage) { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $this->mobilePage+1, $this->totalPage); + $this->setNextUrl($url, $text); + } + } + $this->childs = $childs; + } + + // menu 출력대상이 있는지 확인 + function hasChilds() { + return count($this->childs)?true:0; + } + + // child menu반환 + function getChilds() { + return $this->childs; + } + + // title 지정 + function setTitle($title) { + $this->title = $title; + } + + // title 반환 + function getTitle() { + return $this->title; + } + + // 컨텐츠 지정 + function setContent($content) { + $content = str_replace(array('&','<','>','"','&nbsp;'), array('&','<','>','"',' '), strip_tags($content)); + + // 모바일의 경우 한 덱에 필요한 사이즈가 적어서 내용을 모두 페이지로 나눔 + $contents = array(); + while($content) { + $tmp = cut_str($content, $this->deckSize, ''); + $contents[] = $tmp; + $content = substr($content, strlen($tmp)); + } + + $this->totalPage = count($contents); + + // next/prevUrl 지정 + if($this->mobilePage>1) { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $this->mobilePage-1, $this->totalPage); + $this->setPrevUrl($url, $text); + } + + if($this->mobilePage<$this->totalPage) { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $this->mobilePage+1, $this->totalPage); + $this->setNextUrl($url, $text); + } + + $this->content = $contents[$this->mobilePage-1]; + } + + // 컨텐츠 반환 + function getContent() { + return $this->content; + } + + // home url 지정 + function setHomeUrl($url, $text) { + if(!$url) $url = '#'; + $this->homeUrl->url = $url; + $this->homeUrl->text = $text; + } + + // upper url 지정 + function setUpperUrl($url, $text) { + if(!$url) $url = '#'; + $this->upperUrl->url = $url; + $this->upperUrl->text = $text; + } + + // prev url 지정 + function setPrevUrl($url, $text) { + if(!$url) $url = '#'; + $this->prevUrl->url = $url; + $this->prevUrl->text = $text; + } + + // next url 지정 + function setNextUrl($url, $text) { + if(!$url) $url = '#'; + $this->nextUrl->url = $url; + $this->nextUrl->text = $text; + } + + // display + function display() { + ob_start(); + + // 헤더를 출력 + $this->printHeader(); + + // 제목을 출력 + $this->printTitle(); + + // 내용 출력 + $this->printContent(); + + // 버튼 출력 + $this->printBtn(); + + // 푸터를 출력 + $this->printFooter(); + + $content = ob_get_clean(); + + debugPrint($content); + // 변환 후 출력 + if(strtolower($this->charset) == 'utf-8') print $content; + else print iconv('UTF-8',$this->charset, $content); + + exit(); + } + + // 페이지 이동 + function movepage($url) { + header("location:$url"); + exit(); + } + + // 목록등에서 일련 번호를 리턴한다 + function getNo() { + $this->no++; + $str = $this->no; + return $str; + } + } +?> diff --git a/addons/mobile/classes/mobile.func.php b/addons/mobile/classes/mobile.func.php new file mode 100644 index 000000000..d286ac71c --- /dev/null +++ b/addons/mobile/classes/mobile.func.php @@ -0,0 +1,17 @@ + $item) { + if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $item['url'])) { + $mid = $item['mid'] = $item['url']; + $mid_list[$node_srl] = $mid; + } else { + $mid = $item['mid'] = null; + } + + $listed_items[$mid] = $item; + getListedItems($item['list'], $listed_items, $mid_list); + } + } + +?> diff --git a/addons/mobile/classes/wml.class.php b/addons/mobile/classes/wml.class.php new file mode 100644 index 000000000..6a1a5dbb6 --- /dev/null +++ b/addons/mobile/classes/wml.class.php @@ -0,0 +1,74 @@ + + **/ + class wap extends mobileXE { + + /** + * @brief wml 헤더 출력 + **/ + function printHeader() { + header("Content-Type: text/vnd.wap.wml"); + header("charset: ".$this->charset); + print("charset."\"?>\n"); + print("\n\n

\n"); + } + + /** + * @brief 제목을 출력 + **/ + function printTitle() { + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf('<%s%s>
%s', $this->title,$titlePageStr,"\n"); + } + + /** + * @brief 내용을 출력 + * hasChilds()가 있으면 목록형을 그렇지 않으면 컨텐츠를 출력 + **/ + function printContent() { + if($this->hasChilds()) { + foreach($this->getChilds() as $key => $val) { + if(!$val['link']) continue; + printf('%s', $this->getNo(), $val['text'], $val['href'], "\n"); + } + } else { + printf('%s
%s', str_replace("
","
",$this->getContent()),"\n"); + } + } + + /** + * @brief 버튼을 출력함 + **/ + function printBtn() { + if($this->prevUrl) { + $url = $this->prevUrl; + printf('%s', $this->getNo(), $url->text, $url->url, "\n"); + } + if($this->nextUrl) { + $url = $this->nextUrl; + printf('%s', $this->getNo(), $url->text, $url->url, "\n"); + } + if($this->homeUrl) { + $url = $this->homeUrl; + printf('%s', $url->text, $url->url, "\n"); + } + if($this->upperUrl) { + $url = $this->upperUrl; + printf('%s', $url->text, $url->url, "\n"); + } + } + + // 푸터 정보를 출력 + function printFooter() { + print("

\n
\n
"); + } + + // 목록등에서 일련 번호를 리턴한다 + function getNo() { + return "vnd.skmn".parent::getNo(); + return $str; + } + } +?> diff --git a/addons/mobile/conf/info.xml b/addons/mobile/conf/info.xml new file mode 100644 index 000000000..e0a92e682 --- /dev/null +++ b/addons/mobile/conf/info.xml @@ -0,0 +1,21 @@ + + + 모바일XE 애드온 + + zero + + 모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다. + wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다. + + + + + 문자셋 + + 모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다. + 문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. + 기본값은 utf-8입니다. + + + + diff --git a/addons/mobile/lang/ko.lang.php b/addons/mobile/lang/ko.lang.php new file mode 100644 index 000000000..43d0b4504 --- /dev/null +++ b/addons/mobile/lang/ko.lang.php @@ -0,0 +1,10 @@ +cmd_go_upper = '상위'; + $lang->cmd_go_home = '홈으로'; +?> diff --git a/addons/mobile/mobile.addon.php b/addons/mobile/mobile.addon.php new file mode 100644 index 000000000..b597804c6 --- /dev/null +++ b/addons/mobile/mobile.addon.php @@ -0,0 +1,155 @@ +module == 'board') { + $this->list_count = $this->module_info->list_count = 9; + return; + } + + /** + * 동작 조건 + * 1. called_position == after_module_proc 일 경우에만 동작 + * 2. 관리자 페이지가 아닐 경우 + * 3. Context::getRequestMethod()!=='XMLRPC' 일 경우에만 + * 4. Context::getResponseMethod()!=='XMLRPC' 일 경우에만 + **/ + if($called_position != 'after_module_proc') return; + + $oMobile = &mobileXE::getInstance(); + if(!$oMobile) return; + + $oMobile->setCharSet($addon_info->charset); + + // 모듈의 정보를 구함 + $module_info = $this->module_info; + + // 메뉴 정보가 있는지 검사 + if($module_info->menu_srl) { + + // menu php cache 파일을 호출 + $menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $module_info->menu_srl); + if(file_exists($menu_cache_file)) { + include $menu_cache_file; + + // 정리된 menu들을 1차원으로 변경 + getListedItems($menu->list, $listed_items, $mid_list); + + // url request parameter에 mid값이 없을 경우, 즉 첫페이지 인경우 전체 목록을 구함 + if(!isset($_GET['mid'])) $childs = $menu->list; + // mid가 명시되어 있으면 해당 mid의 childs를 구함 + else $childs = $listed_items[$module_info->mid]['list']; + + // 현재 메뉴의 depth가 1이상이면 상위 버튼을 지정 + if($module_info->is_default != 'Y') { + $cur_menu_item = $listed_items[$module_info->mid]; + if($cur_menu_item['parent_srl']) { + $parent_srl = $cur_menu_item['parent_srl']; + if($parent_srl && $mid_list[$parent_srl]) { + $parent_item = $listed_items[$mid_list[$parent_srl]]; + if($parent_item) $oMobile->setUpperUrl(getUrl('','mid',$parent_item['mid']), Context::getLang('cmd_go_upper') ); + } + } else { + $oMobile->setUpperUrl(getUrl(), Context::getLang('cmd_go_upper')); + } + } + + // childs 메뉴들을 지정 + $oMobile->setChilds($childs); + } + } + + // 만약 childs가 없을 경우 컨텐츠 입력 + if(!$oMobile->hasChilds()) { + + // 현재 모듈이 게시판일 경우 (다른 모듈의 경우는 차후에..) + if($module_info->module == 'board') { + + // 선택된 게시글이 있으면 게시글의 내용을 출력 + $oDocument = Context::get('oDocument'); + if($oDocument && $oDocument->isExists()) { + // 내용 지정 (태그를 모두 제거한 내용을 설정) + $content = strip_tags($oDocument->getContent(false,false,false)); + $oMobile->setContent( $content ); + + // 상위 페이지를 목록으로 돌아가기로 지정 + $oMobile->setUpperUrl( getUrl('document_srl',''), Context::getLang('cmd_list') ); + + // 선택된 게시글이 없으면 목록을 출력 + } else { + $document_list = Context::get('document_list'); + $childs = array(); + if($document_list && count($document_list)) { + foreach($document_list as $key => $val) { + $href = getUrl('mid',$_GET['mid'],'document_srl',$val->document_srl); + $text = $val->getTitleText(10); + $obj = null; + $obj['href'] = $href; + $obj['link'] = $obj['text'] = $text; + $childs[] = $obj; + } + $oMobile->setChilds($childs); + } + + $page_navigation = Context::get('page_navigation'); + $totalPage = $page_navigation->last_page; + $page = (int)Context::get('page'); + if(!$page) $page = 1; + + // next/prevUrl 지정 + if($page>1) $oMobile->setPrevUrl(getUrl('mid',$_GET['mid'],'page',$page-1), sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $page-1, $totalPage)); + + if($page<$totalPage) $oMobile->setNextUrl(getUrl('mid',$_GET['mid'],'page',$page+1), sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $page+1, $totalPage)); + + $oMobile->mobilePage = $page; + $oMobile->totalPage = $totalPage; + } + // 게시판 이외의 경우 + } else { + // 레이아웃은 사용하지 않도록 함 + Context::set('layout','none'); + + // 템플릿 컴파일 + $oTemplate = new TemplateHandler(); + $oContext = &Context::getInstance(); + + $content = $oTemplate->compile($this->getTemplatePath(), $this->getTemplateFile()); + $content = $oContext->transContent($content); + $oMobile->setContent( $content); + } + } + + // 홈버튼 지정 + $oMobile->setHomeUrl(getUrl(), Context::getLang('cmd_go_home')); + + // 제목 지정 + $oMobile->setTitle(Context::getBrowserTitle()); + + // 출력 + $oMobile->display(); +?> From a0b374aa25b5143cd558cfcacdcec3a03ce0c7fc Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 23 Jun 2008 08:38:53 +0000 Subject: [PATCH 09/71] =?UTF-8?q?mobileXE=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4319 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/mobile/classes/mobile.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php index fe1de3518..ce0e5d11e 100644 --- a/addons/mobile/classes/mobile.class.php +++ b/addons/mobile/classes/mobile.class.php @@ -66,7 +66,6 @@ elseif(eregi("CellPhone", $userAgent)) $browserType = "mhtml"; else $browserType = "html"; -$browserType = 'mhtml'; // class 지정 (html일 경우 동작 하지 않도록 함) if($browserType == 'html') return null; From 1cb113afc3f8f99e651d97f472c21c2e54f2a893 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 23 Jun 2008 08:52:02 +0000 Subject: [PATCH 10/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4320 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/mobile/classes/mobile.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php index ce0e5d11e..9d26da87b 100644 --- a/addons/mobile/classes/mobile.class.php +++ b/addons/mobile/classes/mobile.class.php @@ -62,6 +62,7 @@ $wap_sid = $_SERVER['HTTP_X_UP_SUBNO']; if(eregi("SKT11", $userAgent)) $browserType = "wml"; + elseif(eregi("skt", $browserAccept)) $browserType = "wml"; elseif(eregi("hdml", $browserAccept)) $browserType = "hdml"; elseif(eregi("CellPhone", $userAgent)) $browserType = "mhtml"; else $browserType = "html"; @@ -222,7 +223,6 @@ $content = ob_get_clean(); - debugPrint($content); // 변환 후 출력 if(strtolower($this->charset) == 'utf-8') print $content; else print iconv('UTF-8',$this->charset, $content); From d63ec8515309ad75ae84fedcb75ee0bd7606322b Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 23 Jun 2008 08:54:09 +0000 Subject: [PATCH 11/71] =?UTF-8?q?mobileXE=20charset=EC=9D=84=20utf-8?= =?UTF-8?q?=EC=9D=B4=20=EC=95=84=EB=8B=8C=20euc-kr=EB=A1=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=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@4321 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/mobile/classes/mobile.class.php | 4 ++-- addons/mobile/conf/info.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php index 9d26da87b..2a1d59766 100644 --- a/addons/mobile/classes/mobile.class.php +++ b/addons/mobile/classes/mobile.class.php @@ -74,8 +74,8 @@ } // charset 지정 - function setCharSet($charset = 'utf-8') { - if(!$charset) $charset = 'utf-8'; + function setCharSet($charset = 'euc-kr') { + if(!$charset) $charset = 'euc-kr'; $this->charset = $charset; } diff --git a/addons/mobile/conf/info.xml b/addons/mobile/conf/info.xml index e0a92e682..93d61dd5b 100644 --- a/addons/mobile/conf/info.xml +++ b/addons/mobile/conf/info.xml @@ -14,7 +14,7 @@ 모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다. 문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. - 기본값은 utf-8입니다. + 기본값은 euc-kr입니다.
From 9c468847b16960f7a7225305db7130fff61cc269 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 24 Jun 2008 01:45:45 +0000 Subject: [PATCH 12/71] =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=EB=B3=84=20?= =?UTF-8?q?=EC=9C=84=EC=A0=AF=20=EC=BA=90=EC=8B=9C=20=EC=9E=AC=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=8B=9C=20=ED=95=9C=EA=B8=80=20=EC=A0=9C=EB=AA=A9?= =?UTF-8?q?=EB=93=B1=EC=9D=B4=20=EA=B9=A8=EC=96=B4=EC=A7=80=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@4322 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/widget/WidgetHandler.class.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index bf05bd2f7..da0779b77 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -20,6 +20,15 @@ $widget_sequence = $args->widget_sequence; $widget_cache = $args->widget_cache; + // args값에서 urldecode를 해줌 + $object_vars = get_object_vars($args); + if(count($object_vars)) { + foreach($object_vars as $key => $val) { + if(in_array($key, array('body','class','style','widget_sequence','widget','widget_padding_left','widget_padding_top','widget_padding_bottom','widget_padding_right'))) continue; + $args->{$key} = utf8RawUrlDecode($val); + } + } + /** * 캐시 번호와 캐시 값이 아예 없으면 바로 데이터를 추출해서 리턴 **/ From 6f96e28d074f2adfaa25f6298182fcd567bd97b5 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 24 Jun 2008 02:30:00 +0000 Subject: [PATCH 13/71] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=EB=90=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=9C=84=EC=A0=AF=EC=9D=98=20default=EC=8A=A4=ED=82=A8?= =?UTF-8?q?=EC=9D=98=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C=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@4323 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/login_info/skins/default/css/default.css | 7 ++----- .../skins/default/images/default/icon_friend.gif | Bin 77 -> 0 bytes .../default/images/default/icon_friend_list.gif | Bin 556 -> 0 bytes .../default/images/default/icon_message_box.gif | Bin 559 -> 0 bytes .../skins/default/images/default/icon_note.gif | Bin 82 -> 0 bytes .../skins/default/images/default/icon_profile.gif | Bin 73 -> 0 bytes widgets/login_info/skins/default/login_info.html | 8 ++++---- 7 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 widgets/login_info/skins/default/images/default/icon_friend.gif delete mode 100644 widgets/login_info/skins/default/images/default/icon_friend_list.gif delete mode 100644 widgets/login_info/skins/default/images/default/icon_message_box.gif delete mode 100644 widgets/login_info/skins/default/images/default/icon_note.gif delete mode 100644 widgets/login_info/skins/default/images/default/icon_profile.gif diff --git a/widgets/login_info/skins/default/css/default.css b/widgets/login_info/skins/default/css/default.css index 597c82d9d..3879a64e6 100644 --- a/widgets/login_info/skins/default/css/default.css +++ b/widgets/login_info/skins/default/css/default.css @@ -48,13 +48,10 @@ .default_login .hr_dot_01 { background:url(../images/default/hr_dot_01.gif) repeat-x; height:2px; overflow:hidden; clear:both; margin:6px; } -.default_login .item { background:url(../images/default/bul_01.gif) no-repeat 5px 5px; height:16px; padding:3px 0px 0px 20px; margin-left:5px; margin-top:2px; } +.default_login .item { float:left; background:url(../images/default/bul_01.gif) no-repeat 5px 5px; height:16px; padding:3px 0px 0px 20px; margin-left:5px; margin-top:2px; } .default_login .item a { color:#666666; text-decoration:none; } .default_login .item { font-size:11px; letter-spacing:-1px; margin-right:10px; padding:3px 0px 0px 20px; white-space:nowrap; } -.default_login .profile { width:70px; float:left; background:url(../images/default/icon_profile.gif) no-repeat left; } -.default_login .message { width:70px; float:left; background:url(../images/default/icon_note.gif) no-repeat left; } -.default_login .friend { float:left; background:url(../images/default/icon_friend.gif) no-repeat left; } -.default_login .administrative { float:left; background:url(../images/default/icon_key.gif) no-repeat left; margin-right:0px; } +.default_login .administrative { background:url(../images/default/icon_key.gif) no-repeat left; margin-right:0px; } .default_login .administrative a { color:#D80D0F; } .default_login .lastlogin { clear:both; padding:5px; white-space:wrap; font-size:8pt; } diff --git a/widgets/login_info/skins/default/images/default/icon_friend.gif b/widgets/login_info/skins/default/images/default/icon_friend.gif deleted file mode 100644 index fc3d863762fdde4ddb77c44af57c13339562b2a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmZ?wbhEHb6krfwn8?KN|NsBhE0zIC1_lPjpDc_F3``66^LiEx#Z` dpkI{!x!qOPg;Gm;{VHuUer)A`%*o1N4FIj$7=Qo( diff --git a/widgets/login_info/skins/default/images/default/icon_friend_list.gif b/widgets/login_info/skins/default/images/default/icon_friend_list.gif deleted file mode 100644 index adabcfc6e6a451c6bcf7617ce7512d9ca9430cc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 556 zcmV+{0@M9RNk%w1VGIBa0Ooc8;i6IZ@6_R=Q*VT-_~L`yx0Q}qKDeZYoo7zJs*&;H zv(mJGooP>>t)POl=jOw6{P48Zvwh{hcJ$qF@4t@N>f8PI&iCGQiCIDI=;Gm{Qsdgy z_~L=)$$9wRYiO;~p=?jnvzot_ck0=)W2eV=yzSEG-Q=)u<+*nE?$TU|()Z(u@afa{ z;DF`h*Uzwi-0j@%%cJ@3-1_m<`02mz(WLFhXxyk>!PcX&igo$rlC8Pb`Q?$Odt=?V zl=0%V;G$cZtk(0~UFF4g|I(o1r(OK@%9NLg{PDTIqLKC4Wcb#R+RenJm5cxJx8%^6 z^3tdF;C!T`vUtGZw!yx~)S3SJ;nl^w(zAl#!C2vO#qGe9(%75x=D6XZPXE@Wx2~Yzpi|JET+r;}_~V9vkiX>J zl;qmF?!}VE!JGg8{{R30000000000000000000000000000000A^8LW004FXEC2ui z01N;O000MxfOdj{8$AdNNn3-1IbI+J7*~seA_ZqYWg&Jc0Rb~EO%!WHWK4Eh3O{Le z18fIeQbBedT~2dx4pSr_B`P~ZG&W&w5ieK^Hw|D9GBr>vFcl_mBS#4mRuD*Ia%fdJ uPgEHwMg(viQ4?Q6OJ;T_7CJmDEf-22Vsv&uMFIjE0JNw9&?bhRKma=qOD$;t diff --git a/widgets/login_info/skins/default/images/default/icon_message_box.gif b/widgets/login_info/skins/default/images/default/icon_message_box.gif deleted file mode 100644 index 5a05d50e2c2fdd8872bb46f3ad77f1c309f8ea36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmV+~0?_?ONk%w1VGIBa0OooC^Y{Pq`2Vxa@7e1A^ZEa_&+)m>@1eNdeWlHPrq8|5 z?4Y^a&D-#{&+w$%SD;OqFy+VI@#|IF?G+Ux(Nyx#Kp|I*_5 z(dqjB{QUj>{;kvU!_@Dv(E0!V{IkyRd85;it=iz~_sQ)4vdHGo;`y$^<8PGB-|hbH z^ZTv9-{R``@%8-j_xy;e*y{59hp^e-=kwX*_N2Yx=F%`2Xhc``hUF%HH^jL7%kJgv`t0=keV^6+`}^VP^o*|Ce4)^^$>)Qu*SF5?pt|0D zq|5jD{lC=kah%z`&+Yg2_r~h~-s|^%sML+G-m1ant=EFA)b{!PaErNsqttz+ z)a2~*@a|Q-?gNYSoFmE739)n_a5^NMEI0{cKdQuZxU{DzcE(aK5G$k5LNhn=FctjyAUQq-oUjhXM x0u4PvZCEp78x{it7)T>WK1wlG1ONd607XVx2yj6=B;=&A6^LiE&t*v i3vRt~*b%WhFE>u8Nx4Y&rTQ}UQ;C;-{Ci><7_0$vG#sq} diff --git a/widgets/login_info/skins/default/images/default/icon_profile.gif b/widgets/login_info/skins/default/images/default/icon_profile.gif deleted file mode 100644 index a750c0ad00231b6ca3172517e6cc88e915fba79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb6krfwn8?KN|NsBhE0zIC1_lPjpDc_F3``66^LiEx$60 ZgHl%UqN_!{sq@9Np1m}f7Qnz@4FFQr7j^&u diff --git a/widgets/login_info/skins/default/login_info.html b/widgets/login_info/skins/default/login_info.html index d37cd7c85..fd117a472 100644 --- a/widgets/login_info/skins/default/login_info.html +++ b/widgets/login_info/skins/default/login_info.html @@ -16,11 +16,11 @@
- - - + + + -
{$lang->last_login} : {zDate($logged_info->last_login, "Y-m-d H:i")}
+
{$lang->last_login}
{zDate($logged_info->last_login, "Y-m-d H:i")}
From e58b3a92dc5efe5e05c28ca5fbd72fa6de80afde Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 24 Jun 2008 09:09:30 +0000 Subject: [PATCH 14/71] =?UTF-8?q?document/comment=EC=9D=98=20ip=20?= =?UTF-8?q?=EC=A3=BC=EC=86=8C=20=EB=85=B8=EC=B6=9C=EC=8B=9C=20A=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=9D=98=20=EC=88=AB=EC=9E=90=EB=A5=BC=20?= =?UTF-8?q?=EA=B0=90=EC=B6=9C=EB=95=8C=20=ED=91=9C=EC=8B=9C=EA=B0=80=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=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@4324 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/comment/comment.item.php | 2 +- modules/document/document.item.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index bd7389ff8..ad667ba07 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -127,7 +127,7 @@ function getIpaddress() { if($this->isGranted()) return $this->get('ipaddress'); - return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$1.$2.$3', $this->get('ipaddress')); + return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$2.$3.$4', $this->get('ipaddress')); } function isExistsHomepage() { diff --git a/modules/document/document.item.php b/modules/document/document.item.php index d572e2dcf..76b1e7863 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -173,7 +173,7 @@ function getIpaddress() { if($this->isGranted()) return $this->get('ipaddress'); - return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$1.$2.$3', $this->get('ipaddress')); + return preg_replace('/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/','*.$2.$3.$4', $this->get('ipaddress')); } From 56f7c52f7dc8c9fe448e6a5e3b4574bc7c6a82f9 Mon Sep 17 00:00:00 2001 From: supershop Date: Tue, 24 Jun 2008 10:12:05 +0000 Subject: [PATCH 15/71] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4325 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/mobile/conf/info.xml | 12 ++++++++++++ addons/mobile/lang/en.lang.php | 10 ++++++++++ 2 files changed, 22 insertions(+) create mode 100644 addons/mobile/lang/en.lang.php diff --git a/addons/mobile/conf/info.xml b/addons/mobile/conf/info.xml index 93d61dd5b..9b7782257 100644 --- a/addons/mobile/conf/info.xml +++ b/addons/mobile/conf/info.xml @@ -1,20 +1,32 @@ 모바일XE 애드온 + Mobile XE zero + zero 모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다. wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다. + + + This addon displays WAP tag by analyzing header information on mobile connection. + Only wml, hdml, mhtml formats are provided. 문자셋 + Charset 모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다. 문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. 기본값은 euc-kr입니다. + + + utf-8 cannot be read for mobile tools. + Mobile tools will display correct charset when you input charset you want. + Default charset is euc-kr. diff --git a/addons/mobile/lang/en.lang.php b/addons/mobile/lang/en.lang.php new file mode 100644 index 000000000..1b27f09c6 --- /dev/null +++ b/addons/mobile/lang/en.lang.php @@ -0,0 +1,10 @@ +cmd_go_upper = 'Upper'; + $lang->cmd_go_home = 'Go Home'; +?> From de2b57c2d2f53f09a34bd485171948a25fa81b0d Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 25 Jun 2008 23:12:36 +0000 Subject: [PATCH 16/71] =?UTF-8?q?#484=20*=20=EB=8C=93=EA=B8=80=EC=95=8C?= =?UTF-8?q?=EB=A6=AC=EB=AF=B8=20module=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@4326 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/tccommentnotify/ReleaseNote | 3 + modules/tccommentnotify/conf/info.xml | 8 + modules/tccommentnotify/conf/module.xml | 11 + modules/tccommentnotify/lang/ko.lang.php | 5 + .../tccommentnotify/queries/deleteChild.xml | 8 + .../queries/deleteChildren.xml | 8 + .../queries/deleteFromQueue.xml | 8 + .../tccommentnotify/queries/deleteParent.xml | 8 + modules/tccommentnotify/queries/getChild.xml | 11 + .../tccommentnotify/queries/getChildren.xml | 11 + .../tccommentnotify/queries/getFromQueue.xml | 10 + .../queries/getNotifiedList.xml | 26 ++ .../tccommentnotify/queries/getParentId.xml | 14 + modules/tccommentnotify/queries/getSite.xml | 11 + .../queries/insertCommentNotified.xml | 25 ++ .../queries/insertCommentNotifiedChild.xml | 22 ++ .../tccommentnotify/queries/insertQueue.xml | 8 + .../tccommentnotify/queries/insertSite.xml | 12 + .../tccommentnotify/queries/updateParent.xml | 12 + .../tccommentnotify/schemas/tcnotified.xml | 20 ++ .../schemas/tcnotifiedchildren.xml | 17 + .../schemas/tcnotifiedsites.xml | 7 + .../tccommentnotify/schemas/tcnotifyqueue.xml | 3 + .../tccommentnotify.admin.controller.php | 68 ++++ .../tccommentnotify.admin.view.php | 64 ++++ .../tccommentnotify/tccommentnotify.class.php | 61 ++++ .../tccommentnotify.controller.php | 319 ++++++++++++++++++ .../tccommentnotify/tccommentnotify.model.php | 102 ++++++ .../tpl/commentnotify_list.html | 82 +++++ .../tccommentnotify/tpl/css/commentnotify.css | 2 + .../tpl/filter/delete_checked.xml | 12 + .../tpl/filter/delete_child.xml | 13 + .../tpl/filter/delete_parent.xml | 13 + modules/tccommentnotify/tpl/header.html | 7 + .../tpl/images/buttonDeleteX.gif | Bin 0 -> 61 bytes .../tpl/images/iconReplyArrow.gif | Bin 0 -> 54 bytes .../tccommentnotify/tpl/js/commentnotify.js | 25 ++ 37 files changed, 1036 insertions(+) create mode 100644 modules/tccommentnotify/ReleaseNote create mode 100644 modules/tccommentnotify/conf/info.xml create mode 100644 modules/tccommentnotify/conf/module.xml create mode 100644 modules/tccommentnotify/lang/ko.lang.php create mode 100644 modules/tccommentnotify/queries/deleteChild.xml create mode 100644 modules/tccommentnotify/queries/deleteChildren.xml create mode 100644 modules/tccommentnotify/queries/deleteFromQueue.xml create mode 100644 modules/tccommentnotify/queries/deleteParent.xml create mode 100644 modules/tccommentnotify/queries/getChild.xml create mode 100644 modules/tccommentnotify/queries/getChildren.xml create mode 100644 modules/tccommentnotify/queries/getFromQueue.xml create mode 100644 modules/tccommentnotify/queries/getNotifiedList.xml create mode 100644 modules/tccommentnotify/queries/getParentId.xml create mode 100644 modules/tccommentnotify/queries/getSite.xml create mode 100644 modules/tccommentnotify/queries/insertCommentNotified.xml create mode 100644 modules/tccommentnotify/queries/insertCommentNotifiedChild.xml create mode 100644 modules/tccommentnotify/queries/insertQueue.xml create mode 100644 modules/tccommentnotify/queries/insertSite.xml create mode 100644 modules/tccommentnotify/queries/updateParent.xml create mode 100644 modules/tccommentnotify/schemas/tcnotified.xml create mode 100644 modules/tccommentnotify/schemas/tcnotifiedchildren.xml create mode 100644 modules/tccommentnotify/schemas/tcnotifiedsites.xml create mode 100644 modules/tccommentnotify/schemas/tcnotifyqueue.xml create mode 100644 modules/tccommentnotify/tccommentnotify.admin.controller.php create mode 100644 modules/tccommentnotify/tccommentnotify.admin.view.php create mode 100644 modules/tccommentnotify/tccommentnotify.class.php create mode 100644 modules/tccommentnotify/tccommentnotify.controller.php create mode 100644 modules/tccommentnotify/tccommentnotify.model.php create mode 100644 modules/tccommentnotify/tpl/commentnotify_list.html create mode 100644 modules/tccommentnotify/tpl/css/commentnotify.css create mode 100644 modules/tccommentnotify/tpl/filter/delete_checked.xml create mode 100644 modules/tccommentnotify/tpl/filter/delete_child.xml create mode 100644 modules/tccommentnotify/tpl/filter/delete_parent.xml create mode 100644 modules/tccommentnotify/tpl/header.html create mode 100644 modules/tccommentnotify/tpl/images/buttonDeleteX.gif create mode 100644 modules/tccommentnotify/tpl/images/iconReplyArrow.gif create mode 100644 modules/tccommentnotify/tpl/js/commentnotify.js diff --git a/modules/tccommentnotify/ReleaseNote b/modules/tccommentnotify/ReleaseNote new file mode 100644 index 000000000..8d9fab0a6 --- /dev/null +++ b/modules/tccommentnotify/ReleaseNote @@ -0,0 +1,3 @@ +2008.06.18 v0.1.3 queue에서 잘 안 빠지는 문제 수정 +2008.06.18 v0.1.2 page module로 들어오는 noti가 반영이 안되는 문제 수정 +2008.06.17 v0.1.1 tag strip안되는 문제 수정 diff --git a/modules/tccommentnotify/conf/info.xml b/modules/tccommentnotify/conf/info.xml new file mode 100644 index 000000000..8f2ac3d79 --- /dev/null +++ b/modules/tccommentnotify/conf/info.xml @@ -0,0 +1,8 @@ + + + 댓글알리미 + + haneul + 댓글알리미 모듈입니다. + + diff --git a/modules/tccommentnotify/conf/module.xml b/modules/tccommentnotify/conf/module.xml new file mode 100644 index 000000000..ddc60d5af --- /dev/null +++ b/modules/tccommentnotify/conf/module.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/modules/tccommentnotify/lang/ko.lang.php b/modules/tccommentnotify/lang/ko.lang.php new file mode 100644 index 000000000..9d4913abe --- /dev/null +++ b/modules/tccommentnotify/lang/ko.lang.php @@ -0,0 +1,5 @@ +commentnotify = '댓글알리미'; + $lang->msg_checked_comment_is_deleted = '%d개의 알림글이 삭제되었습니다'; + $lang->cmd_delete_checked_comment = '선택삭제'; +?> diff --git a/modules/tccommentnotify/queries/deleteChild.xml b/modules/tccommentnotify/queries/deleteChild.xml new file mode 100644 index 000000000..18618e3be --- /dev/null +++ b/modules/tccommentnotify/queries/deleteChild.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/tccommentnotify/queries/deleteChildren.xml b/modules/tccommentnotify/queries/deleteChildren.xml new file mode 100644 index 000000000..ed56920f3 --- /dev/null +++ b/modules/tccommentnotify/queries/deleteChildren.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/tccommentnotify/queries/deleteFromQueue.xml b/modules/tccommentnotify/queries/deleteFromQueue.xml new file mode 100644 index 000000000..c41446480 --- /dev/null +++ b/modules/tccommentnotify/queries/deleteFromQueue.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/tccommentnotify/queries/deleteParent.xml b/modules/tccommentnotify/queries/deleteParent.xml new file mode 100644 index 000000000..d671dcc0a --- /dev/null +++ b/modules/tccommentnotify/queries/deleteParent.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/tccommentnotify/queries/getChild.xml b/modules/tccommentnotify/queries/getChild.xml new file mode 100644 index 000000000..4686dcf79 --- /dev/null +++ b/modules/tccommentnotify/queries/getChild.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/tccommentnotify/queries/getChildren.xml b/modules/tccommentnotify/queries/getChildren.xml new file mode 100644 index 000000000..3e3171257 --- /dev/null +++ b/modules/tccommentnotify/queries/getChildren.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/tccommentnotify/queries/getFromQueue.xml b/modules/tccommentnotify/queries/getFromQueue.xml new file mode 100644 index 000000000..dd156c565 --- /dev/null +++ b/modules/tccommentnotify/queries/getFromQueue.xml @@ -0,0 +1,10 @@ + + +
+ + + + + + + diff --git a/modules/tccommentnotify/queries/getNotifiedList.xml b/modules/tccommentnotify/queries/getNotifiedList.xml new file mode 100644 index 000000000..9b3dad3b2 --- /dev/null +++ b/modules/tccommentnotify/queries/getNotifiedList.xml @@ -0,0 +1,26 @@ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/tccommentnotify/queries/getParentId.xml b/modules/tccommentnotify/queries/getParentId.xml new file mode 100644 index 000000000..fe27ee479 --- /dev/null +++ b/modules/tccommentnotify/queries/getParentId.xml @@ -0,0 +1,14 @@ + + +
+ + + + + + + + + + + diff --git a/modules/tccommentnotify/queries/getSite.xml b/modules/tccommentnotify/queries/getSite.xml new file mode 100644 index 000000000..0821081bd --- /dev/null +++ b/modules/tccommentnotify/queries/getSite.xml @@ -0,0 +1,11 @@ + + +
+ + + + + + + + diff --git a/modules/tccommentnotify/queries/insertCommentNotified.xml b/modules/tccommentnotify/queries/insertCommentNotified.xml new file mode 100644 index 000000000..e73c39d95 --- /dev/null +++ b/modules/tccommentnotify/queries/insertCommentNotified.xml @@ -0,0 +1,25 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/tccommentnotify/queries/insertCommentNotifiedChild.xml b/modules/tccommentnotify/queries/insertCommentNotifiedChild.xml new file mode 100644 index 000000000..df1a26ce2 --- /dev/null +++ b/modules/tccommentnotify/queries/insertCommentNotifiedChild.xml @@ -0,0 +1,22 @@ + + +
+ + + + + + + + + + + + + + + + + + + diff --git a/modules/tccommentnotify/queries/insertQueue.xml b/modules/tccommentnotify/queries/insertQueue.xml new file mode 100644 index 000000000..e4593389b --- /dev/null +++ b/modules/tccommentnotify/queries/insertQueue.xml @@ -0,0 +1,8 @@ + + +
+ + + + + diff --git a/modules/tccommentnotify/queries/insertSite.xml b/modules/tccommentnotify/queries/insertSite.xml new file mode 100644 index 000000000..2bf165598 --- /dev/null +++ b/modules/tccommentnotify/queries/insertSite.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/tccommentnotify/queries/updateParent.xml b/modules/tccommentnotify/queries/updateParent.xml new file mode 100644 index 000000000..98598ef62 --- /dev/null +++ b/modules/tccommentnotify/queries/updateParent.xml @@ -0,0 +1,12 @@ + + +
+ + + + + + + + + diff --git a/modules/tccommentnotify/schemas/tcnotified.xml b/modules/tccommentnotify/schemas/tcnotified.xml new file mode 100644 index 000000000..db5d8a4cd --- /dev/null +++ b/modules/tccommentnotify/schemas/tcnotified.xml @@ -0,0 +1,20 @@ +
+ + + + + + + + + + + + + + + + + + +
diff --git a/modules/tccommentnotify/schemas/tcnotifiedchildren.xml b/modules/tccommentnotify/schemas/tcnotifiedchildren.xml new file mode 100644 index 000000000..864cba50e --- /dev/null +++ b/modules/tccommentnotify/schemas/tcnotifiedchildren.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
diff --git a/modules/tccommentnotify/schemas/tcnotifiedsites.xml b/modules/tccommentnotify/schemas/tcnotifiedsites.xml new file mode 100644 index 000000000..0276988bb --- /dev/null +++ b/modules/tccommentnotify/schemas/tcnotifiedsites.xml @@ -0,0 +1,7 @@ + + + + + + +
diff --git a/modules/tccommentnotify/schemas/tcnotifyqueue.xml b/modules/tccommentnotify/schemas/tcnotifyqueue.xml new file mode 100644 index 000000000..434f0598d --- /dev/null +++ b/modules/tccommentnotify/schemas/tcnotifyqueue.xml @@ -0,0 +1,3 @@ + + +
diff --git a/modules/tccommentnotify/tccommentnotify.admin.controller.php b/modules/tccommentnotify/tccommentnotify.admin.controller.php new file mode 100644 index 000000000..8081cd636 --- /dev/null +++ b/modules/tccommentnotify/tccommentnotify.admin.controller.php @@ -0,0 +1,68 @@ +stop('msg_cart_is_null'); + $comment_srl_list= explode('|@|', $cart); + $comment_count = count($comment_srl_list); + if(!$comment_count) return $this->stop('msg_cart_is_null'); + + for($i=0;$i<$comment_count;$i++) { + $notified_srl = trim($comment_srl_list[$i]); + if(!$notified_srl) continue; + + $output = $this->deleteParent($notified_srl); + if(!$output->toBool()) continue; + + $deleted_count ++; + } + + $this->setMessage( sprintf(Context::getLang('msg_checked_comment_is_deleted'), $deleted_count) ); + } + + function deleteParent($parent_srl) + { + $args->notified_srl = $parent_srl; + executeQuery('tccommentnotify.deleteParent', $args); + $newargs->parent_srl = $args->notified_srl; + return executeQuery('tccommentnotify.deleteChildren', $newargs); + } + + function procCommentNotifyAdminDeleteParent() + { + $notified_srl = Context::get('notified_srl'); + $this->deleteParent($notified_srl); + } + + function procCommentNotifyAdminDeleteChild() + { + $args->notified_srl = Context::get('notified_srl'); + $oModel = &getModel('tccommentnotify'); + $output = $oModel->GetChild($args->notified_srl); + if(!$output->toBool()) + { + return; + } + $parent_srl = $output->data->parent_srl; + executeQuery('tccommentnotify.deleteChild', $args); + if(!$oModel->GetChildren($parent_srl)) + { + $newarg->notified_srl = $parent_srl; + executeQuery('tccommentnotify.deleteParent', $newarg); + } + } + } +?> diff --git a/modules/tccommentnotify/tccommentnotify.admin.view.php b/modules/tccommentnotify/tccommentnotify.admin.view.php new file mode 100644 index 000000000..ecc66b2c0 --- /dev/null +++ b/modules/tccommentnotify/tccommentnotify.admin.view.php @@ -0,0 +1,64 @@ +setTemplatePath($this->module_path.'tpl'); + } + + /** + * @brief 관리자 페이지 초기화면 + **/ + function dispCommentNotifyAdminIndex() { + $this->dispCommentNotifyAdminList(); + } + + function dispCommentNotifyAdminList() { + + // 목록을 구하기 위한 옵션 + $args->page = Context::get('page'); ///< 페이지 + + $args->sort_index = 'list_order'; ///< 소팅 값 + + $oCommentNotifyModel = &getModel('tccommentnotify'); + $output = $oCommentNotifyModel->GetNotifiedList($args); + + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + $notify_list = array(); + if(!$output->data) + { + $output->data = array(); + } + foreach($output->data as $notifyparent) + { + $item = null; + $item->parent = $notifyparent; + $item->children = $oCommentNotifyModel->GetChildren($notifyparent->notified_srl); + $notify_list[] = $item; + } + Context::set('notify_list', $notify_list); + Context::set('page_navigation', $output->page_navigation); + + // 템플릿 지정 + $this->setTemplatePath($this->module_path.'tpl'); + $this->setTemplateFile('commentnotify_list'); + } + + function dispCommentNotifyAdminDeleteChild() + { + $notified_srl = Context::get('notified_srl'); + $this->setTemplateFile('delete_child'); + } + } +?> diff --git a/modules/tccommentnotify/tccommentnotify.class.php b/modules/tccommentnotify/tccommentnotify.class.php new file mode 100644 index 000000000..dba1bb393 --- /dev/null +++ b/modules/tccommentnotify/tccommentnotify.class.php @@ -0,0 +1,61 @@ +insertActionForward('tccommentnotify', 'view', 'dispCommentNotifyAdminIndex'); + + // notify를 위한 트리거 추가 + $oModuleController->insertTrigger('comment.insertComment', 'tccommentnotify', 'controller', 'triggerInsertComment', 'after'); + + return new Object(); + } + + /** + * @brief 설치가 이상이 없는지 체크하는 method + **/ + function checkUpdate() { + $oModuleModel = &getModel('module'); + if(!$oModuleModel->getTrigger('comment.insertComment', 'tccommentnotify', 'controller', 'triggerInsertComment', 'after')) + { + return true; + } + + return false; + } + + /** + * @brief 업데이트 실행 + **/ + function moduleUpdate() { + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + if(!$oModuleModel->getTrigger('comment.insertComment', 'tccommentnotify', 'controller', 'triggerInsertComment', 'after')) + { + $oModuleController->insertTrigger('comment.insertComment', 'tccommentnotify', 'controller', 'triggerInsertComment', 'after'); + } + + return new Object(0, 'success_updated'); + } + + /** + * @brief 캐시 파일 재생성 + **/ + function recompileCache() { + } + } +?> diff --git a/modules/tccommentnotify/tccommentnotify.controller.php b/modules/tccommentnotify/tccommentnotify.controller.php new file mode 100644 index 000000000..0f17c292d --- /dev/null +++ b/modules/tccommentnotify/tccommentnotify.controller.php @@ -0,0 +1,319 @@ +id = $id; + $args->title = $title; + $args->name = $name; + $args->url = $url; + $output = executeQuery("tccommentnotify.insertSite", $args); + if(!$output->toBool()) + { + return -1; + } + else + { + return $id; + } + } + + function insertParent($obj, $siteid, $module_srl) + { + $parentid = getNextSequence(); + $args->notified_srl = $parentid; + $args->module_srl = $module_srl; + $args->name = $obj->r1_name; + $args->homepage = $obj->r1_homepage; + $args->written = date('YmdHis', $obj->r1_regdate); + $args->comment = $obj->r1_body; + $args->entry = $obj->s_no; + $args->siteid = $siteid; + $args->url = $obj->r1_url; + $args->remoteid = $obj->r1_no; + $args->entrytitle = $obj->s_post_title; + $args->entryurl = $obj->s_url; + $args->list_order = $parentid * -1; + $output = executeQuery("tccommentnotify.insertCommentNotified", $args); + if(!$output->toBool()) + { + return -1; + } + return $parentid; + } + + function procDoNotify() + { + $lockFilePath = $this->cachedir.$this->lockfile; + if(file_exists($lockFilePath)) + { + return; + } + + $fp = null; + if(version_compare(PHP_VERSION, "4.3.2", '<')) + { + $fp = fopen($lockFilePath, "a"); + } + else + { + $fp = fopen($lockFilePath, "x"); + if(!$fp) + { + return; + } + } + + fwrite($fp, "lock"); + fclose($fp); + + if( file_exists($this->cachedir.$this->cachefile) ) + { + unlink($this->cachedir.$this->cachefile); + } + + $oModel = &getModel('tccommentnotify'); + $output = $oModel->GetCommentsFromNotifyQueue(); + if(!$output->toBool()) + { + debugPrint("Error"); + debugPrint($output); + } + if($output->data) + { + foreach($output->data as $data) + { + $this->deleteFromQueue($data->comment_srl); + $this->sendCommentNotify($data->comment_srl); + } + } + unlink($lockFilePath); + } + + function deleteFromQueue($comment_srl) + { + $args->comment_srl = $comment_srl; + executeQuery("tccommentnotify.deleteFromQueue", $args); + } + + function triggerInsertComment($obj) + { + $oCommentModel = &getModel('comment'); + $oComment = $oCommentModel->getComment($obj->comment_srl); + if($oComment->get('parent_srl')) + { + $output = $this->insertCommentNotifyQueue($obj->comment_srl); + if($output->toBool()) + { + if(!file_exists($this->cachedir.$this->cachefile)) + { + if(!file_exists($this->cachedir)) + { + mkdir($this->cachedir); + } + $fp = fopen($this->cachedir.$this->cachefile, "w"); + fwrite($fp, "aa"); + fclose($fp); + } + } + } + return new Object(); + } + + function insertCommentNotifyQueue($comment_srl) + { + $args->comment_srl = $comment_srl; + return executeQuery("tccommentnotify.insertQueue", $args); + } + + function sendCommentNotify($comment_srl) + { + set_include_path("./libs/PEAR"); + require_once('PEAR.php'); + require_once('HTTP/Request.php'); + + $oCommentModel = &getModel('comment'); + $oChild = $oCommentModel->getComment($comment_srl); + if(!$oChild->isExists()) + { + return; + } + + $parent_srl = $oChild->get('parent_srl'); + if(!$parent_srl) + { + return; + } + $oParent = $oCommentModel->getComment($parent_srl); + if(!$oParent->isExists()) + { + return; + } + $parentHomepage = $oParent->getHomepageUrl(); + $oMemberModel = &getModel('member'); + if(!$parentHomepage) + { + $parent_member = $oParent->getMemberSrl(); + if(!$parent_member) + return; + $member_info = $oMemberModel->getMemberInfoByMemberSrl($parent_member); + $parentHomepage = $member_info->homepage; + if(!$parentHomepage) + return; + } + + $childHomepage = $oChild->getHomepageUrl(); + if(!$childHomepage) + { + $child_member = $oChild->getMemberSrl(); + if($child_member) + { + $child_info = $oMemberModel->getMemberInfoByMemberSrl($child_member); + $childHomepage = $member_info->homepage; + } + } + + $document_srl = $oChild->get('document_srl'); + + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + + $oModuleModel = &getModel('module'); + $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl); + if($this->SendNotifyRequest($parentHomepage, &$module_info, &$oDocument, &$oParent, $parentHomepage, &$oChild, $childHomepage) != 200) + { + $indexedPage = rtrim($parentHomepage, '/').'/index.php'; + $this->SendNotifyRequest($indexedPage, &$module_info, &$oDocument, &$oParent, $parentHomepage, &$oChild, $childHomepage); + } + } + + function SendNotifyRequest($target, $module_info, $oDocument, $oParent, $parentHomepage, $oChild, $childHomepage) + { + $oReq = new HTTP_Request(); + $oReq->setURL($target); + $oReq->setMethod("POST"); + $oReq->addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); + $oReq->addPostData('mode', 'fb'); + $oReq->addPostData('url', getUrl('mid', $module_info->mid,'act','','module','')); + $oReq->addPostData('s_home_title', $module_info->browser_title); + $oReq->addPostData('s_post_title', $oDocument->getTitleText()); + $oReq->addPostData('s_name', $oDocument->getNickName()); + $oReq->addPostData('s_url', $oDocument->getPermanentUrl()); + $oReq->addPostData('s_no', $oDocument->document_srl); + $oReq->addPostData('r1_name', $oParent->getNickName()); + $oReq->addPostData('r1_no', $oParent->comment_srl); + $oReq->addPostData('r1_pno', $oDocument->document_srl); + $oReq->addPostData('r1_rno', '0'); + $oReq->addPostData('r1_homepage', $parentHomepage); + $oReq->addPostData('r1_regdate', ztime($oParent->get('regdate'))); + $oReq->addPostData('r1_url', sprintf("%s#comment_%s", $oDocument->getPermanentUrl(), $oParent->comment_srl)); + $oReq->addPostData('r2_name', $oChild->getNickName()); + $oReq->addPostData('r2_no', $oChild->comment_srl); + $oReq->addPostData('r2_pno', $oDocument->document_srl); + $oReq->addPostData('r2_rno', $oParent->comment_srl); + $oReq->addPostData('r2_homepage', $childHomepage); + $oReq->addPostData('r2_regdate', ztime($oChild->get('regdate'))); + $oReq->addPostData('r2_url', sprintf("%s#comment_%s", $oDocument->getPermanentUrl(), $oChild->comment_srl)); + $oReq->addPostData('r1_body', strip_tags($oParent->get('content'))); + $oReq->addPostData('r2_body', strip_tags($oChild->get('content'))); + + $oReq->sendRequest(false); + $code = $oReq->getResponseCode(); + return $code; + } + + function insertCommentNotify($obj, $siteid, $parentid, $module_srl) + { + $myid = getNextSequence(); + $args->notified_srl = $myid; + $args->module_srl = $module_srl; + $args->parent_srl = $parentid; + $args->name = $obj->r2_name; + $args->homepage = $obj->r2_homepage; + $args->written = date('YmdHis', $obj->r2_regdate); + $args->comment = $obj->r2_body; + $args->url = $obj->r2_url; + $args->remoteid = $obj->r2_no; + $args->list_order = $myid * -1; + $output = executeQuery("tccommentnotify.insertCommentNotifiedChild", $args); + $bRet = $output->toBool(); + return $bRet; + } + + function updateParent($parentid) + { + $args->notified_srl = $parentid; + $args->list_order = -1 * getNextSequence(); + $output = executeQuery("tccommentnotify.updateParent", $args); + } + + function procNotifyReceived() { + + $obj = Context::getRequestVars(); + $oModel = &getModel('tccommentnotify'); + + $oDB = &DB::getInstance(); + $oDB -> begin(); + $siteid = $oModel->GetSite( $obj->url ); + $module_info = Context::get('current_module_info'); + $module_srl = $module_info->module_srl; + + if( $siteid == -2 ) + { + $oDB->rollback(); + return; + } + else if( $siteid == -1 ) + { + $siteid = $this->insertSite($obj->s_home_title, $obj->s_name, $obj->url); + if($siteid == -1) + { + $oDB->rollback(); + return; + } + } + + $parentid = $oModel->GetParentID( $obj->s_no, $siteid, $module_srl, $obj->r1_no ); + if( $parentid == -2 ) + { + $oDB->rollback(); + return; + } + else if ( $parentid == -1 ) + { + $parentid = $this->insertParent( &$obj, $siteid, $module_srl ); + if($parentid == -1) + { + $oDB->rollback(); + return; + } + } + else + { + $this->updateParent($parentid); + } + + if(!$this->insertCommentNotify(&$obj, $siteid, $parentid, $module_srl)) + { + $oDB->rollback(); + return; + } + + $oDB->commit(); + } + } +?> diff --git a/modules/tccommentnotify/tccommentnotify.model.php b/modules/tccommentnotify/tccommentnotify.model.php new file mode 100644 index 000000000..44b0871eb --- /dev/null +++ b/modules/tccommentnotify/tccommentnotify.model.php @@ -0,0 +1,102 @@ +cachedir.$this->cachefile) ) + { + return true; + } + else + { + return false; + } + } + + function GetSite($url) + { + if(!$url) return new Object(-1, "parameter error"); + + $args->url = $url; + $output = executeQuery('tccommentnotify.getSite', $args); + if(!$output->toBool()) + { + return -2; + } + if(!$output->data) + { + return -1; + } + + $siteid = $output->data->id; + + if( is_array($siteid) ) + { + $siteid = array_shift($siteid); + } + + return $siteid; + } + + function GetParentID( $entry, $siteid, $module_srl, $remoteid ) + { + $args->entry = $entry; + $args->siteid = $siteid; + $args->module_srl = $module_srl; + $args->remoteid = $remoteid; + $output = executeQuery('tccommentnotify.getParentId', $args); + + if(!$output->toBool()) + { + return -2; + } + if(!$output->data) + { + return -1; + } + + $parentid = $output->data->notified_srl; + + if( is_array($parentid) ) + { + $parentid = array_shift($parentid); + } + return $parentid; + } + + function GetNotifiedList($args) + { + $args->parent_srl = 0; + return executeQuery("tccommentnotify.getNotifiedList", $args); + } + + function GetChildren($parentid) + { + $args->parent_srl = $parentid; + $output = executeQueryArray("tccommentnotify.getChildren", $args); + return $output->data; + } + + function GetChild($notified_srl) + { + $args->notified_srl = $notified_srl; + $output = executeQuery("tccommentnotify.getChild", $args); + return $output; + } + + function GetCommentsFromNotifyQueue() + { + $output = executeQueryArray("tccommentnotify.getFromQueue"); + return $output; + } + } +?> diff --git a/modules/tccommentnotify/tpl/commentnotify_list.html b/modules/tccommentnotify/tpl/commentnotify_list.html new file mode 100644 index 000000000..2ceb10ee8 --- /dev/null +++ b/modules/tccommentnotify/tpl/commentnotify_list.html @@ -0,0 +1,82 @@ + + + + + + + +
+ Total {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)} +
+ +
+ + + + +{@ $col_width = array(40,85, 150,65,0,45)} + + +width="{$width}" /> + + + + + + + + + + + + + + {@ $parent = $val->parent; } + + + + + + + + + + + + + + + + + + + + + +
등록일자사이트명이름내용삭제
{zdate($parent->written, "Y/m/d")}{$parent->title?$parent->title:"[No title]"}{$parent->name}{$parent->entrytitle} {$parent->comment}
{zdate($child->written, "Y/m/d")}{$parent->title?$parent->title:"[No title]"}{$child->name} {$child->comment}
+ + + + +
+
+ +
+ + + + diff --git a/modules/tccommentnotify/tpl/css/commentnotify.css b/modules/tccommentnotify/tpl/css/commentnotify.css new file mode 100644 index 000000000..873f595b8 --- /dev/null +++ b/modules/tccommentnotify/tpl/css/commentnotify.css @@ -0,0 +1,2 @@ +.parent td { background-color : #fff9ff; } +.date { font-size : 0.9em; } diff --git a/modules/tccommentnotify/tpl/filter/delete_checked.xml b/modules/tccommentnotify/tpl/filter/delete_checked.xml new file mode 100644 index 000000000..db9f95dd4 --- /dev/null +++ b/modules/tccommentnotify/tpl/filter/delete_checked.xml @@ -0,0 +1,12 @@ + +
+ + + + + + + + + +
diff --git a/modules/tccommentnotify/tpl/filter/delete_child.xml b/modules/tccommentnotify/tpl/filter/delete_child.xml new file mode 100644 index 000000000..953a0693b --- /dev/null +++ b/modules/tccommentnotify/tpl/filter/delete_child.xml @@ -0,0 +1,13 @@ + +
+ + + + + + + + + + +
diff --git a/modules/tccommentnotify/tpl/filter/delete_parent.xml b/modules/tccommentnotify/tpl/filter/delete_parent.xml new file mode 100644 index 000000000..9483684ee --- /dev/null +++ b/modules/tccommentnotify/tpl/filter/delete_parent.xml @@ -0,0 +1,13 @@ + +
+ + + + + + + + + + +
diff --git a/modules/tccommentnotify/tpl/header.html b/modules/tccommentnotify/tpl/header.html new file mode 100644 index 000000000..df63b4b22 --- /dev/null +++ b/modules/tccommentnotify/tpl/header.html @@ -0,0 +1,7 @@ + +

{$lang->commentnotify} {$lang->cmd_management}

+ +
+
    +
+
diff --git a/modules/tccommentnotify/tpl/images/buttonDeleteX.gif b/modules/tccommentnotify/tpl/images/buttonDeleteX.gif new file mode 100644 index 0000000000000000000000000000000000000000..c066e49be9d50d49daaf3a1c500142e171a25687 GIT binary patch literal 61 zcmZ?wbhEHbN%7tf3>tvlao HGFSrug{Tj~ literal 0 HcmV?d00001 diff --git a/modules/tccommentnotify/tpl/js/commentnotify.js b/modules/tccommentnotify/tpl/js/commentnotify.js new file mode 100644 index 000000000..6bee927d7 --- /dev/null +++ b/modules/tccommentnotify/tpl/js/commentnotify.js @@ -0,0 +1,25 @@ +function deleteChild(notified_srl) +{ + var e = xGetElementById('notified'); + e.value=notified_srl; + var hF = xGetElementById("deleteChildForm"); + procFilter(hF, delete_child); +} + +function deleteParent(notified_srl) +{ + var e = xGetElementById('notified'); + e.value=notified_srl; + var hF = xGetElementById("deleteChildForm"); + procFilter(hF, delete_parent); +} + +function completeDelete(ret_obj) +{ + var error = ret_obj['error']; + var message = ret_obj['message']; + alert(message); + + var url = current_url.setQuery('act','dispCommentNotifyAdminIndex'); + location.href = url; +} From 22368001d8237d822adc2e73cdb20202840b1b51 Mon Sep 17 00:00:00 2001 From: haneul Date: Wed, 25 Jun 2008 23:13:45 +0000 Subject: [PATCH 17/71] =?UTF-8?q?#484=20*=20=EB=8C=93=EA=B8=80=EC=95=8C?= =?UTF-8?q?=EB=A6=AC=EB=AF=B8=20=EC=95=A0=EB=93=9C=EC=98=A8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4327 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/tccommentnotify/conf/info.xml | 10 ++++++ .../tccommentnotify/tccommentnotify.addon.php | 36 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 addons/tccommentnotify/conf/info.xml create mode 100644 addons/tccommentnotify/tccommentnotify.addon.php diff --git a/addons/tccommentnotify/conf/info.xml b/addons/tccommentnotify/conf/info.xml new file mode 100644 index 000000000..50e540319 --- /dev/null +++ b/addons/tccommentnotify/conf/info.xml @@ -0,0 +1,10 @@ + + + 댓글알리미 애드온 + + haneul + + 댓글알리미를 지원하는 애드온입니다. + + + diff --git a/addons/tccommentnotify/tccommentnotify.addon.php b/addons/tccommentnotify/tccommentnotify.addon.php new file mode 100644 index 000000000..ed178628b --- /dev/null +++ b/addons/tccommentnotify/tccommentnotify.addon.php @@ -0,0 +1,36 @@ +procNotifyReceived(); + return; + } + + if($called_position == "after_module_proc") + { + $oModel = &getModel('tccommentnotify'); + if($oModel->checkShouldNotify()) + { + $scriptCode = << + // + + +EndOfScript; + Context::addHtmlHeader($scriptCode); + } + } +?> From c5765c2853cc6f1c8464ff653ca1602d94e40d46 Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 26 Jun 2008 01:19:07 +0000 Subject: [PATCH 18/71] =?UTF-8?q?#484=20*.=20=EA=B8=80=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20=EB=8C=93=EA=B8=80=EB=8F=84=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4328 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../queries/getNotifiedList.xml | 1 + .../tccommentnotify.controller.php | 68 +++++++++++++------ .../tpl/commentnotify_list.html | 2 +- .../tccommentnotify/tpl/css/commentnotify.css | 3 +- 4 files changed, 52 insertions(+), 22 deletions(-) diff --git a/modules/tccommentnotify/queries/getNotifiedList.xml b/modules/tccommentnotify/queries/getNotifiedList.xml index 9b3dad3b2..70cc2dd87 100644 --- a/modules/tccommentnotify/queries/getNotifiedList.xml +++ b/modules/tccommentnotify/queries/getNotifiedList.xml @@ -13,6 +13,7 @@ + diff --git a/modules/tccommentnotify/tccommentnotify.controller.php b/modules/tccommentnotify/tccommentnotify.controller.php index 0f17c292d..1dd9e9edf 100644 --- a/modules/tccommentnotify/tccommentnotify.controller.php +++ b/modules/tccommentnotify/tccommentnotify.controller.php @@ -114,21 +114,18 @@ { $oCommentModel = &getModel('comment'); $oComment = $oCommentModel->getComment($obj->comment_srl); - if($oComment->get('parent_srl')) + $output = $this->insertCommentNotifyQueue($obj->comment_srl); + if($output->toBool()) { - $output = $this->insertCommentNotifyQueue($obj->comment_srl); - if($output->toBool()) + if(!file_exists($this->cachedir.$this->cachefile)) { - if(!file_exists($this->cachedir.$this->cachefile)) + if(!file_exists($this->cachedir)) { - if(!file_exists($this->cachedir)) - { - mkdir($this->cachedir); - } - $fp = fopen($this->cachedir.$this->cachefile, "w"); - fwrite($fp, "aa"); - fclose($fp); + mkdir($this->cachedir); } + $fp = fopen($this->cachedir.$this->cachefile, "w"); + fwrite($fp, "aa"); + fclose($fp); } } return new Object(); @@ -148,21 +145,34 @@ $oCommentModel = &getModel('comment'); $oChild = $oCommentModel->getComment($comment_srl); + if(!$oChild->isExists()) { return; } + $document_srl = $oChild->get('document_srl'); + + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + + $oParent = null; $parent_srl = $oChild->get('parent_srl'); if(!$parent_srl) { - return; + $oParent = $oDocumentModel->getDocument($document_srl); } - $oParent = $oCommentModel->getComment($parent_srl); + else + { + $oParent = $oCommentModel->getComment($parent_srl); + } + if(!$oParent->isExists()) { return; } + + $parentHomepage = $oParent->getHomepageUrl(); $oMemberModel = &getModel('member'); if(!$parentHomepage) @@ -176,6 +186,7 @@ return; } + $childHomepage = $oChild->getHomepageUrl(); if(!$childHomepage) { @@ -187,11 +198,6 @@ } } - $document_srl = $oChild->get('document_srl'); - - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - $oModuleModel = &getModel('module'); $module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl); if($this->SendNotifyRequest($parentHomepage, &$module_info, &$oDocument, &$oParent, $parentHomepage, &$oChild, $childHomepage) != 200) @@ -214,8 +220,17 @@ $oReq->addPostData('s_name', $oDocument->getNickName()); $oReq->addPostData('s_url', $oDocument->getPermanentUrl()); $oReq->addPostData('s_no', $oDocument->document_srl); + $oReq->addPostData('r1_name', $oParent->getNickName()); - $oReq->addPostData('r1_no', $oParent->comment_srl); + if($oChild->get('parent_srl')) + { + $oReq->addPostData('r1_no', $oParent->comment_srl); + } + else + { + $oReq->addPostData('r1_no', '-1'); + } + $oReq->addPostData('r1_pno', $oDocument->document_srl); $oReq->addPostData('r1_rno', '0'); $oReq->addPostData('r1_homepage', $parentHomepage); @@ -228,7 +243,16 @@ $oReq->addPostData('r2_homepage', $childHomepage); $oReq->addPostData('r2_regdate', ztime($oChild->get('regdate'))); $oReq->addPostData('r2_url', sprintf("%s#comment_%s", $oDocument->getPermanentUrl(), $oChild->comment_srl)); - $oReq->addPostData('r1_body', strip_tags($oParent->get('content'))); + + if($oChild->get('parent_srl')) + { + $oReq->addPostData('r1_body', strip_tags($oParent->get('content'))); + } + else + { + $oReq->addPostData('r1_body', $oParent->getContentText(250)); + } + $oReq->addPostData('r2_body', strip_tags($oChild->get('content'))); $oReq->sendRequest(false); @@ -271,6 +295,10 @@ $siteid = $oModel->GetSite( $obj->url ); $module_info = Context::get('current_module_info'); $module_srl = $module_info->module_srl; + if(!$obj->r1_no) + { + $obj->r1_no = -1; + } if( $siteid == -2 ) { diff --git a/modules/tccommentnotify/tpl/commentnotify_list.html b/modules/tccommentnotify/tpl/commentnotify_list.html index 2ceb10ee8..ee6bd17f2 100644 --- a/modules/tccommentnotify/tpl/commentnotify_list.html +++ b/modules/tccommentnotify/tpl/commentnotify_list.html @@ -32,7 +32,7 @@ {@ $parent = $val->parent; } - + remoteid == -1)--> class="parentDocument" class="parent" > {zdate($parent->written, "Y/m/d")} {$parent->title?$parent->title:"[No title]"} diff --git a/modules/tccommentnotify/tpl/css/commentnotify.css b/modules/tccommentnotify/tpl/css/commentnotify.css index 873f595b8..02d6a67c1 100644 --- a/modules/tccommentnotify/tpl/css/commentnotify.css +++ b/modules/tccommentnotify/tpl/css/commentnotify.css @@ -1,2 +1,3 @@ -.parent td { background-color : #fff9ff; } +.parent td { background-color : #fff0ff; } +.parentDocument td { background-color : #f0ffff; } .date { font-size : 0.9em; } From bafe9df2a14a53bbb0b5a4b189dc091e502c9b4f Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 26 Jun 2008 05:07:08 +0000 Subject: [PATCH 19/71] =?UTF-8?q?rno=EC=84=A4=EC=A0=95=20=EC=A0=9C?= =?UTF-8?q?=EB=8C=80=EB=A1=9C=20=EC=95=88=EB=90=9C=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20->=20textcube=EB=A1=9C=EB=8F=84=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=EC=9D=B4=20=EA=B0=90.?= 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@4329 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/tccommentnotify/tccommentnotify.controller.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/tccommentnotify/tccommentnotify.controller.php b/modules/tccommentnotify/tccommentnotify.controller.php index 1dd9e9edf..20fdabb72 100644 --- a/modules/tccommentnotify/tccommentnotify.controller.php +++ b/modules/tccommentnotify/tccommentnotify.controller.php @@ -225,21 +225,23 @@ if($oChild->get('parent_srl')) { $oReq->addPostData('r1_no', $oParent->comment_srl); + $oReq->addPostData('r1_url', sprintf("%s#comment_%s", $oDocument->getPermanentUrl(), $oParent->comment_srl)); + $oReq->addPostData('r2_rno', $oParent->comment_srl); } else { $oReq->addPostData('r1_no', '-1'); + $oReq->addPostData('r1_url', $oParent->getPermanentUrl()); + $oReq->addPostData('r2_rno', '-1'); } $oReq->addPostData('r1_pno', $oDocument->document_srl); $oReq->addPostData('r1_rno', '0'); $oReq->addPostData('r1_homepage', $parentHomepage); $oReq->addPostData('r1_regdate', ztime($oParent->get('regdate'))); - $oReq->addPostData('r1_url', sprintf("%s#comment_%s", $oDocument->getPermanentUrl(), $oParent->comment_srl)); $oReq->addPostData('r2_name', $oChild->getNickName()); $oReq->addPostData('r2_no', $oChild->comment_srl); $oReq->addPostData('r2_pno', $oDocument->document_srl); - $oReq->addPostData('r2_rno', $oParent->comment_srl); $oReq->addPostData('r2_homepage', $childHomepage); $oReq->addPostData('r2_regdate', ztime($oChild->get('regdate'))); $oReq->addPostData('r2_url', sprintf("%s#comment_%s", $oDocument->getPermanentUrl(), $oChild->comment_srl)); @@ -255,7 +257,7 @@ $oReq->addPostData('r2_body', strip_tags($oChild->get('content'))); - $oReq->sendRequest(false); + $oReq->sendRequest(true); $code = $oReq->getResponseCode(); return $code; } @@ -297,7 +299,7 @@ $module_srl = $module_info->module_srl; if(!$obj->r1_no) { - $obj->r1_no = -1; + $obj->r1_no = 0; } if( $siteid == -2 ) From 5d1999011194aff2105a3f5f2ab81086ef2f33a1 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 27 Jun 2008 02:27:32 +0000 Subject: [PATCH 20/71] =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=8B=9C=20=EB=A9=94=EB=89=B4=EB=AA=85=EC=97=90=20=EC=97=AD?= =?UTF-8?q?=EC=8A=AC=EB=9E=98=EC=8B=9C=20=EC=B6=94=EA=B0=80=EC=8B=9C=20?= =?UTF-8?q?=EB=B0=9C=EC=83=9D=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@4330 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/menu/menu.admin.controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 0d215d10e..8a99451b4 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -422,7 +422,7 @@ // 변수 정리 $names = $oMenuAdminModel->getMenuItemNames($node->name); foreach($names as $key => $val) { - $name_arr_str .= sprintf('"%s"=>"%s",',$key, htmlspecialchars($val)); + $name_arr_str .= sprintf('"%s"=>"%s",',$key, str_replace('\\','\\\\',htmlspecialchars($val))); } $name_str = sprintf('$_names = array(%s); print $_names[$lang_type];', $name_arr_str); @@ -505,7 +505,7 @@ // 변수 정리 $names = $oMenuAdminModel->getMenuItemNames($node->name); foreach($names as $key => $val) { - $name_arr_str .= sprintf('"%s"=>"%s",',$key, htmlspecialchars($val)); + $name_arr_str .= sprintf('"%s"=>"%s",',$key, str_replace('\\','\\\\',htmlspecialchars($val))); } $name_str = sprintf('$_menu_names[%d] = array(%s); %s', $node->menu_item_srl, $name_arr_str, $child_output['name']); From bdc194ab1db9bda88ec7e0e2ddd336f7ce50f578 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 27 Jun 2008 08:23:23 +0000 Subject: [PATCH 21/71] =?UTF-8?q?=EC=BA=90=EC=8B=9C=EB=A5=BC=20=EC=A7=80?= =?UTF-8?q?=EC=9A=B0=EB=8A=94=20=EC=99=B8=EB=B6=80=20=ED=88=B4=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=B6=94=EA=B0=80.=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=9D=84=20=ED=95=B8=EB=93=A4=EB=A7=81=ED=95=A0?= =?UTF-8?q?=EB=95=8C=20=EA=B2=BD=EB=A1=9C=EB=A5=BC=20=EC=A0=9C=EB=8C=80?= =?UTF-8?q?=EB=A1=9C=20=EC=B0=BE=EC=95=84=EC=84=9C=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=BD=94?= =?UTF-8?q?=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@4331 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 1 + .../member_communication.addon.php | 2 +- classes/context/Context.class.php | 8 +++ classes/db/DB.class.php | 2 +- classes/file/FileHandler.class.php | 57 +++++++++++++++--- classes/template/TemplateHandler.class.php | 10 ++-- classes/widget/WidgetHandler.class.php | 2 +- config/func.inc.php | 9 ++- modules/admin/admin.class.php | 4 +- modules/board/board.admin.controller.php | 2 +- modules/comment/comment.class.php | 2 +- modules/comment/comment.model.php | 2 +- modules/communication/communication.view.php | 2 +- .../document/document.admin.controller.php | 2 +- modules/document/document.class.php | 33 +++++------ modules/document/document.controller.php | 4 +- modules/document/document.item.php | 4 +- modules/file/file.controller.php | 4 +- modules/importer/extract.class.php | 4 +- .../importer/importer.admin.controller.php | 10 ++-- modules/importer/ttimport.class.php | 6 +- .../integration_search.admin.controller.php | 2 +- modules/layout/layout.admin.controller.php | 10 ++-- modules/layout/layout.admin.view.php | 2 +- modules/layout/layout.class.php | 2 +- modules/lifepod/lifepod.admin.controller.php | 2 +- modules/member/member.controller.php | 10 ++-- .../member/openid_lib/class_HTTPRetriever.php | 2 +- .../member/openid_lib/libcurlexternal.inc.php | 6 +- .../member/openid_lib/libcurlnative.inc.php | 2 +- modules/menu/menu.admin.controller.php | 10 ++-- modules/module/module.controller.php | 2 +- modules/opage/opage.admin.controller.php | 2 +- modules/opage/opage.view.php | 2 +- modules/point/point.admin.controller.php | 5 +- .../springnote.admin.controller.php | 2 +- .../tccommentnotify.controller.php | 4 +- modules/widget/widget.controller.php | 6 +- tools/cache_cleaner/form.html | 32 ++++++++++ tools/cache_cleaner/index.php | 58 +++++++++++++++++++ tools/cache_cleaner/style.css | 10 ++++ 41 files changed, 246 insertions(+), 95 deletions(-) create mode 100644 tools/cache_cleaner/form.html create mode 100644 tools/cache_cleaner/index.php create mode 100644 tools/cache_cleaner/style.css diff --git a/.htaccess b/.htaccess index 3b31f0629..89fcec0fc 100644 --- a/.htaccess +++ b/.htaccess @@ -12,6 +12,7 @@ RewriteRule ^(.+)/common/tpl/(.*) ./common/tpl/$2 [L] RewriteRule ^(.+)/widgets/(.*) ./widgets/$2 [L] RewriteRule ^(.+)/layouts/(.*) ./layouts/$2 [L] RewriteRule ^(.+)/addons/(.*) ./addons/$2 [L] +RewriteRule ^(.+)/tools/(.*) ./tools/$2 [L] # page RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)page$ ./index.php?mid=$1&page=$2 [L] diff --git a/addons/member_communication/member_communication.addon.php b/addons/member_communication/member_communication.addon.php index ca0bd2c21..26563ce0a 100644 --- a/addons/member_communication/member_communication.addon.php +++ b/addons/member_communication/member_communication.addon.php @@ -33,7 +33,7 @@ $flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl); if(file_exists($flag_file)) { - @unlink($flag_file); + FileHandler::removeFile($flag_file); Context::loadLang('./addons/member_communication/lang'); $script = sprintf('', Context::getLang('alert_new_message_arrived'), Context::getRequestUri().'?module=communication&act=dispCommunicationNewMessage'); diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index f2038af1a..6be9ec809 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -185,6 +185,14 @@ if(is_object($oDB)&&method_exists($oDB, 'close')) $oDB->close(); } + /** + * @brief DB의 및 기타 정보 load + **/ + function loadDBInfo() { + $oContext = &Context::getInstance(); + return $oContext->_loadDBInfo(); + } + /** * @brief DB 정보를 설정하고 DB Type과 DB 정보를 return **/ diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index e7cdb0e10..9e973a3b6 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -496,7 +496,7 @@ if(!is_array($tables)) $tables = array($tables); foreach($tables as $alias => $table) { $filename = sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table); - @unlink($filename); + FileHandler::removeFile($filename); FileHandler::writeFile( $filename, '' ); } diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 5742b9963..f89494940 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -9,10 +9,21 @@ class FileHandler extends Handler { + /** + * @brief 대상 파일이름이나 디렉토리의 위치를 확인함 + **/ + function getRealPath($source) { + if(substr($source,0,1)=='/') return $source; + if(substr($source,0,2)=='./') $source = substr($source,2); + return _XE_PATH_.$source; + } + /** * @brief 파일의 내용을 읽어서 return **/ function readFile($file_name) { + $file_name = FileHandler::getRealPath($file_name); + if(!file_exists($file_name)) return; $filesize = filesize($file_name); if($filesize<1) return; @@ -35,6 +46,8 @@ * @brief $buff의 내용을 파일에 쓰기 **/ function writeFile($file_name, $buff, $mode = "w") { + $file_name = FileHandler::getRealPath($file_name); + $pathinfo = pathinfo($file_name); $path = $pathinfo['dirname']; if(!is_dir($path)) FileHandler::makeDir($path); @@ -47,38 +60,58 @@ @chmod($file_name, 0644); } + /** + * @brief 파일 삭제 + **/ + function removeFile($file_name) { + $file_name = FileHandler::getRealPath($file_name); + if(file_exists($file_name)) @unlink($file_name); + } + + /** + * @brief 파일이름이나 디렉토리명이나 위치 변경 + **/ + function rename($source, $target) { + $source = FileHandler::getRealPath($source); + $target = FileHandler::getRealPath($target); + @rename($source, $target); + } + /** * @brief 특정 디렉토리를 이동 **/ function moveDir($source_dir, $target_dir) { - if(!is_dir($source_dir)) return; - - if(!is_dir($target_dir)) { - FileHandler::makeDir($target_dir); - @unlink($target_dir); - } - - @rename($source_dir, $target_dir); + FileHandler::rename($source_dir, $target_dir); } /** * @brief $path내의 파일들을 return ('.', '..', '.로 시작하는' 파일들은 제외) **/ function readDir($path, $filter = '', $to_lower = false, $concat_prefix = false) { + $path = FileHandler::getRealPath($path); + if(substr($path,-1)!='/') $path .= '/'; if(!is_dir($path)) return array(); + $oDir = dir($path); while($file = $oDir->read()) { if(substr($file,0,1)=='.') continue; + if($filter && !preg_match($filter, $file)) continue; + if($to_lower) $file = strtolower($file); + if($filter) $file = preg_replace($filter, '$1', $file); else $file = $file; - if($concat_prefix) $file = $path.$file; + if($concat_prefix) { + $file = sprintf('%s%s', str_replace(_XE_PATH_, '', $path), $file); + } + $output[] = $file; } if(!$output) return array(); + return $output; } @@ -108,6 +141,7 @@ * @brief 지정된 디렉토리 이하 모두 파일을 삭제 **/ function removeDir($path) { + $path = FileHandler::getRealPath($path); if(!is_dir($path)) return; $directory = dir($path); while($entry = $directory->read()) { @@ -145,6 +179,8 @@ * @brief 원격파일을 다운받아서 특정 위치에 저장 **/ function getRemoteFile($url, $target_filename) { + $target_filename = FileHandler::getRealPath($target_filename); + $url_info = parse_url($url); if(!$url_info['port']) $url_info['port'] = 80; @@ -191,6 +227,9 @@ * @brief 특정 이미지 파일을 특정 위치로 옮김 (옮길때 이미지의 크기를 리사이징할 수 있음..) **/ function createImageFile($source_file, $target_file, $resize_width = 0, $resize_height = 0, $target_type = '', $thumbnail_type = 'crop') { + $source_file = FileHandler::getRequestUri($source_file); + $target_file = FileHandler::getRequestUri($target_file); + if(!file_exists($source_file)) return; if(!$resize_width) $resize_width = 100; if(!$resize_height) $resize_height = $resize_width; diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 3a69da858..fe163ffeb 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -45,17 +45,17 @@ if(!$tpl_file) $tpl_file = $tpl_path.$tpl_filename; // tpl_file이 비어 있거나 해당 파일이 없으면 return - if(!$tpl_file || !file_exists($tpl_file)) return; + if(!$tpl_file || !file_exists(FileHandler::getRealPath($tpl_file))) return; $this->tpl_path = $tpl_path; $this->tpl_file = $tpl_file; // compiled된(or 될) 파일이름을 구함 - $compiled_tpl_file = $this->_getCompiledFileName($tpl_file); + $compiled_tpl_file = FileHandler::getRealPath($this->_getCompiledFileName($tpl_file)); // 일단 컴파일 $buff = $this->_compile($tpl_file, $compiled_tpl_file); - + // Context와 compiled_tpl_file로 컨텐츠 생성 $output = $this->_fetch($compiled_tpl_file, $buff, $tpl_path); @@ -83,9 +83,9 @@ function _compile($tpl_file, $compiled_tpl_file) { if(!file_exists($compiled_tpl_file)) return $this->_compileTplFile($tpl_file, $compiled_tpl_file); - $source_ftime = filemtime($tpl_file); + $source_ftime = filemtime(FileHandler::getRealPath($tpl_file)); $target_ftime = filemtime($compiled_tpl_file); - if($source_ftime>$target_ftime || $target_ftime < filemtime('./classes/template/TemplateHandler.class.php') ) return $this->_compileTplFile($tpl_file, $compiled_tpl_file); + if($source_ftime>$target_ftime || $target_ftime < filemtime(_XE_PATH_.'classes/template/TemplateHandler.class.php') ) return $this->_compileTplFile($tpl_file, $compiled_tpl_file); } /** diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index da0779b77..d1c2c0161 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -74,7 +74,7 @@ FileHandler::writeFile($cache_file, $widget_content); // lock 파일 제거 - @unlink($lock_file); + FileHandler::removeFile($lock_file); return $widget_content; } diff --git a/config/func.inc.php b/config/func.inc.php index c2f53c381..cf34e214d 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -472,8 +472,13 @@ * 현재 요청받은 스크립트 경로를 return **/ function getScriptPath() { - $url = $_SERVER['PHP_SELF']?$_SERVER['PHP_SELF']:($_SERVER['REQUEST_URI']?$_SERVER['REQUEST_URI']:$_SERVER['URL']); - return preg_replace('/index.php/i','',$url); + static $url = null; + if($url === null) { + $document_root = str_replace('\\','/',$_SERVER['DOCUMENT_ROOT']); + $file = str_replace('\\','/',__FILE__); + $url = preg_replace('/index.php/i','',str_replace('config/func.inc.php','',str_replace($document_root, '', $file))); + } + return $url; } /** diff --git a/modules/admin/admin.class.php b/modules/admin/admin.class.php index a373b8db2..003c0585f 100644 --- a/modules/admin/admin.class.php +++ b/modules/admin/admin.class.php @@ -46,9 +46,9 @@ FileHandler::removeFilesInDir("./files/cache/queries"); // ./files/cache/news* 파일 삭제 - $directory = dir("./files/cache/"); + $directory = dir(_XE_PATH_."files/cache/"); while($entry = $directory->read()) { - if(substr($entry,0,11)=='newest_news') @unlink("./files/cache/".$entry); + if(substr($entry,0,11)=='newest_news') FileHandler::removeFile("./files/cache/".$entry); } $directory->close(); } diff --git a/modules/board/board.admin.controller.php b/modules/board/board.admin.controller.php index 5022e7237..cb31848ec 100644 --- a/modules/board/board.admin.controller.php +++ b/modules/board/board.admin.controller.php @@ -67,7 +67,7 @@ $del_var = $obj->{"del_".$vars->name}; unset($obj->{"del_".$vars->name}); if($del_var == 'Y') { - @unlink($module_info->{$vars->name}); + FileHandler::removeFile($module_info->{$vars->name}); continue; } diff --git a/modules/comment/comment.class.php b/modules/comment/comment.class.php index a59119792..a91565427 100644 --- a/modules/comment/comment.class.php +++ b/modules/comment/comment.class.php @@ -5,7 +5,7 @@ * @brief comment 모듈의 high class **/ - require_once('./modules/comment/comment.item.php'); + require_once(_XE_PATH_.'modules/comment/comment.item.php'); class comment extends ModuleObject { diff --git a/modules/comment/comment.model.php b/modules/comment/comment.model.php index 13cf50051..d396142ce 100644 --- a/modules/comment/comment.model.php +++ b/modules/comment/comment.model.php @@ -285,7 +285,7 @@ } // 성공시 lock파일 제거 - @unlink($lock_file); + FileHandler::removeFile($lock_file); } /** diff --git a/modules/communication/communication.view.php b/modules/communication/communication.view.php index bfb8a0d9b..58ea86774 100644 --- a/modules/communication/communication.view.php +++ b/modules/communication/communication.view.php @@ -78,7 +78,7 @@ // 플래그 삭제 $flag_path = './files/communication_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl); $flag_file = sprintf('%s%s', $flag_path, $logged_info->member_srl); - @unlink($flag_file); + FileHandler::removeFile($flag_file); $this->setTemplateFile('new_message'); } diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index 016250d3d..e00155cdd 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -397,7 +397,7 @@ $this->deleteThumbnailFile($path."/".$entry); } else { if(!preg_match('/^thumbnail_([^\.]*)\.jpg$/i',$entry)) continue; - @unlink($path.'/'.$entry); + FileHandler::removeFile($path.'/'.$entry); } } } diff --git a/modules/document/document.class.php b/modules/document/document.class.php index 6339c4632..671577d46 100644 --- a/modules/document/document.class.php +++ b/modules/document/document.class.php @@ -5,7 +5,7 @@ * @brief document 모듈의 high 클래스 **/ - require_once('./modules/document/document.item.php'); + require_once(_XE_PATH_.'modules/document/document.item.php'); class document extends ModuleObject { @@ -31,7 +31,7 @@ $oDB->addIndex("documents","idx_module_voted_count", array("module_srl","voted_count")); $oDB->addIndex("documents","idx_module_notice", array("module_srl","is_notice")); $oDB->addIndex("documents","idx_module_document_srl", array("module_srl","document_srl")); - $oDB->addIndex("documents","idx_module_blamed_count", array("module_srl","blamed_count")); + $oDB->addIndex("documents","idx_module_blamed_count", array("module_srl","blamed_count")); // 2007. 10. 17 모듈이 삭제될때 등록된 글도 모두 삭제하는 트리거 추가 $oModuleController->insertTrigger('module.deleteModule', 'document', 'controller', 'triggerDeleteModuleDocuments', 'after'); @@ -182,30 +182,27 @@ **/ if(!$oDB->isIndexExists("documents","idx_module_document_srl")) $oDB->addIndex("documents","idx_module_document_srl", array("module_srl","document_srl")); - // 2008. 04. 23 blamed count 컬럼 추가 - if(!$oDB->isColumnExists("documents", "blamed_count")) - { - $oDB->addColumn('documents', 'blamed_count', 'number', 11, 0, true); - $oDB->addIndex('documents', 'idx_blamed_count', array('blamed_count')); - } + // 2008. 04. 23 blamed count 컬럼 추가 + if(!$oDB->isColumnExists("documents", "blamed_count")) { + $oDB->addColumn('documents', 'blamed_count', 'number', 11, 0, true); + $oDB->addIndex('documents', 'idx_blamed_count', array('blamed_count')); + } - if(!$oDB->isIndexExists("documents","idx_module_blamed_count")) - { - $oDB->addIndex('documents', 'idx_module_blamed_count', array('module_srl', 'blamed_count')); - } + if(!$oDB->isIndexExists("documents","idx_module_blamed_count")) { + $oDB->addIndex('documents', 'idx_module_blamed_count', array('module_srl', 'blamed_count')); + } - if(!$oDB->isColumnExists("document_voted_log", "point")) - $oDB->addColumn('document_voted_log', 'point', 'number', 11, 0, true); - - return new Object(0,'success_updated'); - } + if(!$oDB->isColumnExists("document_voted_log", "point")) + $oDB->addColumn('document_voted_log', 'point', 'number', 11, 0, true); + return new Object(0,'success_updated'); + } /** * @brief 캐시 파일 재생성 **/ function recompileCache() { // 게시글 분류 캐시 파일 삭제 - FileHandler::removeFilesInDir("./files/cache/document_category"); + FileHandler::removeFilesInDir(_XE_PATH_."files/cache/document_category"); } /** diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 089f3757c..3d9912f48 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -762,8 +762,8 @@ $category_list = $output->data; if(!$category_list) { - @unlink($xml_file); - @unlink($php_file); + FileHandler::removeFile($xml_file); + FileHandler::removeFile($php_file); return false; } if(!is_array($category_list)) $category_list = array($category_list); diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 76b1e7863..ad48e925f 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -455,7 +455,7 @@ if(file_exists($thumbnail_file)) { $file_created_time = date("YmdHis",filemtime($thumbnail_file)); $modified_time = $this->get('last_update'); - if($modified_time > $file_created_time) @unlink($thumbnail_file); + if($modified_time > $file_created_time) FileHandler::removeFile($thumbnail_file); } if(file_exists($thumbnail_file)&&filesize($thumbnail_file)<1) return; @@ -500,7 +500,7 @@ $tmp_file = sprintf('%sthumbnail_%d.tmp.jpg', $document_path, $width); FileHandler::getRemoteFile($target_src, $tmp_file); FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $config->thumbnail_type); - @unlink($tmp_file); + FileHandler::removeFile($tmp_file); return Context::getRequestUri().$thumbnail_file; } diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 902411888..29d7a016c 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -346,7 +346,7 @@ if(!$trigger_output->toBool()) return $trigger_output; // 삭제 성공하면 파일 삭제 - @unlink($uploaded_filename); + FileHandler::removeFile($uploaded_filename); return $output; } @@ -415,7 +415,7 @@ FileHandler::makeDir($path); // 파일 이동 - @rename($old_file, $new_file); + FileHandler::rename($old_file, $new_file); // DB 정보도 수정 unset($args); diff --git a/modules/importer/extract.class.php b/modules/importer/extract.class.php index 9d43b75fd..8f16060fc 100644 --- a/modules/importer/extract.class.php +++ b/modules/importer/extract.class.php @@ -50,7 +50,7 @@ * @brief 지정된 파일의 지시자를 염 **/ function openFile() { - @unlink($this->cache_index_file); + FileHandler::removeFile($this->cache_index_file); $this->index_fd = fopen($this->cache_index_file,"a"); // local 파일일 경우 @@ -140,7 +140,7 @@ $buff = FileHandler::readFile($target_file); fwrite($fd, FileHandler::readFile($target_file)); - @unlink($target_file); + FileHandler::removeFile($target_file); } fwrite($fd, ''); fclose($fd); diff --git a/modules/importer/importer.admin.controller.php b/modules/importer/importer.admin.controller.php index 5789f5563..170458fcb 100644 --- a/modules/importer/importer.admin.controller.php +++ b/modules/importer/importer.admin.controller.php @@ -190,7 +190,7 @@ // 대상 파일을 읽여서 파싱후 입력 $xmlObj = $oXmlParser->loadXmlFile($target_file); - @unlink($target_file); + FileHandler::removeFile($target_file); if(!$xmlObj) continue; // 객체 정리 @@ -326,7 +326,7 @@ // 대상 파일을 읽여서 파싱후 입력 $xmlObj = $oXmlParser->loadXmlFile($target_file); - @unlink($target_file); + FileHandler::removeFile($target_file); if(!$xmlObj) continue; // 객체 정리 @@ -433,7 +433,7 @@ $oDocumentController = &getController('document'); $oDocumentController->makeCategoryFile($module_srl); } - @unlink($category_file); + FileHandler::removeFile($category_file); } $category_list = $category_titles = array(); @@ -558,7 +558,7 @@ } fclose($fp); - @unlink($target_file); + FileHandler::removeFile($target_file); } fclose($f); @@ -793,7 +793,7 @@ // 디렉토리 생성 if(!FileHandler::makeDir($path)) continue; - if(preg_match('/^\.\/files\/cache\/tmp/i',$file_obj->file)) @rename($file_obj->file, $filename); + if(preg_match('/^\.\/files\/cache\/tmp/i',$file_obj->file)) FileHandler::rename($file_obj->file, $filename); else @copy($file_obj->file, $filename); // DB입력 diff --git a/modules/importer/ttimport.class.php b/modules/importer/ttimport.class.php index d8f6c5319..8d3b14881 100644 --- a/modules/importer/ttimport.class.php +++ b/modules/importer/ttimport.class.php @@ -55,7 +55,7 @@ } $oDocumentController->makeCategoryFile($module_srl); } - @unlink($category_file); + FileHandler::removeFile($category_file); } $category_list = $category_titles = array(); $category_list = $oDocumentModel->getCategoryList($module_srl); @@ -239,7 +239,7 @@ } fclose($fp); - @unlink($target_file); + FileHandler::removeFile($target_file); } fclose($f); @@ -298,7 +298,7 @@ // 디렉토리 생성 if(!FileHandler::makeDir($path)) continue; - @rename($file_obj->file, $filename); + FileHandler::rename($file_obj->file, $filename); // DB입력 unset($file_obj->file); diff --git a/modules/integration_search/integration_search.admin.controller.php b/modules/integration_search/integration_search.admin.controller.php index e536ba756..1e03bdb3a 100644 --- a/modules/integration_search/integration_search.admin.controller.php +++ b/modules/integration_search/integration_search.admin.controller.php @@ -61,7 +61,7 @@ $del_var = $obj->{"del_".$vars->name}; unset($obj->{"del_".$vars->name}); if($del_var == 'Y') { - @unlink($module_info->{$vars->name}); + FileHandler::removeFile($module_info->{$vars->name}); continue; } diff --git a/modules/layout/layout.admin.controller.php b/modules/layout/layout.admin.controller.php index 4ae95fcb0..6cddda824 100644 --- a/modules/layout/layout.admin.controller.php +++ b/modules/layout/layout.admin.controller.php @@ -92,7 +92,7 @@ unset($extra_vars->{"del_".$name}); if($del_var == 'Y') { $extra_vars->{$name} = ''; - @unlink($extra_vars->{$name}); + FileHandler::removeFile($extra_vars->{$name}); continue; } @@ -140,7 +140,7 @@ $output = executeQuery('layout.updateLayout', $args); if($output->toBool()) { $cache_file = sprintf('./files/cache/layout/%s.%s.cache.php', $args->layout_srl, Context::getLangType()); - @unlink($cache_file); + FileHandler::removeFile($cache_file); } return $output; } @@ -157,12 +157,12 @@ if(count($cache_list)) { foreach($cache_list as $cache_file) { $pos = strpos($cache_file, $layout_srl.'_'); - if($pos>0) unlink($cache_file); + if($pos>0)FileHandler::removeFile($cache_file); } } $layout_file = sprintf('./files/cache/layout/%d.html', $layout_srl); - if(file_exists($layout_file)) @unlink($layout_file); + if(file_exists($layout_file)) FileHandler::removeFile($layout_file); // 레이아웃 삭제 $args->layout_srl = $layout_srl; @@ -200,7 +200,7 @@ if(!$layout_srl) return new Object(-1, 'msg_invalid_request'); $layout_file = sprintf('./files/cache/layout/%d.html', $layout_srl); - @unlink($layout_file); + FileHandler::removeFile($layout_file); $this->setMessage('success_reset'); } diff --git a/modules/layout/layout.admin.view.php b/modules/layout/layout.admin.view.php index f29142a7e..10bc47936 100644 --- a/modules/layout/layout.admin.view.php +++ b/modules/layout/layout.admin.view.php @@ -155,7 +155,7 @@ Context::set('layout_tpl', $layout_tpl); // 임시 파일 삭제 - @unlink($edited_layout_file); + FileHandler::removeFile($edited_layout_file); $this->setTemplateFile('layout_preview'); } diff --git a/modules/layout/layout.class.php b/modules/layout/layout.class.php index cff9e0c72..93def1d09 100644 --- a/modules/layout/layout.class.php +++ b/modules/layout/layout.class.php @@ -53,7 +53,7 @@ $directory = dir($path); while($entry = $directory->read()) { if ($entry == "." || $entry == ".." || preg_match('/\.html$/i',$entry) ) continue; - @unlink($path."/".$entry); + FileHandler::removeFile($path."/".$entry); } $directory->close(); } diff --git a/modules/lifepod/lifepod.admin.controller.php b/modules/lifepod/lifepod.admin.controller.php index 40b9d2434..46f55c901 100644 --- a/modules/lifepod/lifepod.admin.controller.php +++ b/modules/lifepod/lifepod.admin.controller.php @@ -183,7 +183,7 @@ $del_var = $obj->{"del_".$vars->name}; unset($obj->{"del_".$vars->name}); if($del_var == 'Y') { - @unlink($module_info->{$vars->name}); + FileHandler::removeFile($module_info->{$vars->name}); continue; } diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 2eff8ac47..51bb88b49 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -617,7 +617,7 @@ if($logged_info->is_admin == 'Y' || $logged_info->member_srl == $member_srl) { $oMemberModel = &getModel('member'); $profile_image = $oMemberModel->getProfileImage($member_srl); - @unlink($profile_image->file); + FileHandler::removeFile($profile_image->file); } return new Object(0,'success'); } @@ -640,7 +640,7 @@ if($logged_info->is_admin == 'Y' || $logged_info->member_srl == $member_srl) { $oMemberModel = &getModel('member'); $image_name = $oMemberModel->getImageName($member_srl); - @unlink($image_name->file); + FileHandler::removeFile($image_name->file); } return new Object(0,'success'); } @@ -705,7 +705,7 @@ if($logged_info->is_admin == 'Y' || $logged_info->member_srl == $member_srl) { $oMemberModel = &getModel('member'); $image_mark = $oMemberModel->getImageMark($member_srl); - @unlink($image_mark->file); + FileHandler::removeFile($image_mark->file); } return new Object(0,'success'); } @@ -830,7 +830,7 @@ $path = sprintf('files/member_extra_info/signature/%s/', getNumberingPath($member_srl)); $filename = sprintf('%s%d.signature.php', $path, $member_srl); - if(!$check_signature) return @unlink($filename); + if(!$check_signature) return FileHandler::removeFile($filename); $buff = sprintf('%s', $signature); FileHandler::makeDir($path); @@ -842,7 +842,7 @@ **/ function delSignature($member_srl) { $filename = sprintf('files/member_extra_info/signature/%s%d.gif', getNumberingPath($member_srl), $member_srl); - @unlink($filename); + FileHandler::removeFile($filename); } /** diff --git a/modules/member/openid_lib/class_HTTPRetriever.php b/modules/member/openid_lib/class_HTTPRetriever.php index 58f841bd7..5f5d79434 100755 --- a/modules/member/openid_lib/class_HTTPRetriever.php +++ b/modules/member/openid_lib/class_HTTPRetriever.php @@ -443,7 +443,7 @@ class HTTPRetriever { if (time()-filemtime($filename)>$this->caching) { $this->progress(HRP_DEBUG,"Page in cache is expired"); - @unlink($filename); + FileHandler::removeFile($filename); return false; } diff --git a/modules/member/openid_lib/libcurlexternal.inc.php b/modules/member/openid_lib/libcurlexternal.inc.php index f0e8d23ad..96ad7caee 100755 --- a/modules/member/openid_lib/libcurlexternal.inc.php +++ b/modules/member/openid_lib/libcurlexternal.inc.php @@ -341,7 +341,7 @@ function curl_setopt($ch,$option,$value) { } fclose($fp); // if a temporary file was previously created, unlink it - if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"])) unlink($settings["upload-file"]["value"]); + 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; @@ -581,7 +581,7 @@ function curl_close($ch) { $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"])) unlink($settings["upload-file"]["value"]); + if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"]))FileHandler::removeFile($settings["upload-file"]["value"]); } unset($GLOBALS["_CURLEXT_OPT"][$ch]); @@ -634,4 +634,4 @@ function curl_version() { } } -?> \ No newline at end of file +?> diff --git a/modules/member/openid_lib/libcurlnative.inc.php b/modules/member/openid_lib/libcurlnative.inc.php index d1c3884a3..445ab3faf 100755 --- a/modules/member/openid_lib/libcurlnative.inc.php +++ b/modules/member/openid_lib/libcurlnative.inc.php @@ -399,7 +399,7 @@ function curl_close($ch) { $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"])) unlink($settings["upload-file"]["value"]); + if ($settings["upload-file"]["value"] && file_exists($settings["upload-file"]["value"]))FileHandler::removeFile($settings["upload-file"]["value"]); } unset($GLOBALS["_CURLNAT_OPT"][$ch]); diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 8a99451b4..7d4713fd0 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -55,7 +55,7 @@ if(count($cache_list)) { foreach($cache_list as $cache_file) { $pos = strpos($cache_file, $menu_srl.'_'); - if($pos>0) unlink($cache_file); + if($pos>0)FileHandler::removeFile($cache_file); } } @@ -196,9 +196,9 @@ $xml_file = $this->makeXmlFile($args->menu_srl); // 이미지 버튼 모두 삭제 - if($item_info->normal_btn) @unlink($item_info->normal_btn); - if($item_info->hover_btn) @unlink($item_info->hover_btn); - if($item_info->active_btn) @unlink($item_info->active_btn); + if($item_info->normal_btn) FileHandler::removeFile($item_info->normal_btn); + if($item_info->hover_btn) FileHandler::removeFile($item_info->hover_btn); + if($item_info->active_btn) FileHandler::removeFile($item_info->active_btn); $this->add('xml_file', $xml_file); $this->add('menu_title', $menu_title); @@ -305,7 +305,7 @@ $menu_item_srl = Context::get('menu_item_srl'); $target = Context::get('target'); $filename = Context::get('filename'); - @unlink($filename); + FileHandler::removeFile($filename); $this->add('target', $target); } diff --git a/modules/module/module.controller.php b/modules/module/module.controller.php index 5181ec57d..c1ff3a0ab 100644 --- a/modules/module/module.controller.php +++ b/modules/module/module.controller.php @@ -61,7 +61,7 @@ $output = executeQuery('module.deleteModuleConfig', $args); if(!$output->toBool()) return $output; - @unlink( sprintf('./files/cache/module_info/%s.config.php',$module) ); + FileHandler::removeFile( sprintf('./files/cache/module_info/%s.config.php',$module) ); // 변수 정리후 query 실행 $output = executeQuery('module.insertModuleConfig', $args); diff --git a/modules/opage/opage.admin.controller.php b/modules/opage/opage.admin.controller.php index 1bf5ad0bb..d809425e0 100644 --- a/modules/opage/opage.admin.controller.php +++ b/modules/opage/opage.admin.controller.php @@ -71,7 +71,7 @@ // 캐시 파일 삭제 $cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl); - if(file_exists($cache_file)) @unlink($cache_file); + if(file_exists($cache_file)) FileHandler::removeFile($cache_file); // 등록 성공후 return될 메세지 정리 $this->add("module_srl", $module_args->module_srl); diff --git a/modules/opage/opage.view.php b/modules/opage/opage.view.php index 3b700edfb..72114bcaa 100644 --- a/modules/opage/opage.view.php +++ b/modules/opage/opage.view.php @@ -101,7 +101,7 @@ // 캐시 검사 if($caching_interval <1 || !file_exists($cache_file) || filemtime($cache_file) + $caching_interval*60 <= time() || filemtime($cache_file){"del_".$vars->name}; unset($obj->{"del_".$vars->name}); if($del_var == 'Y') { - @unlink($module_info->{$vars->name}); + FileHandler::removeFile($module_info->{$vars->name}); continue; } diff --git a/modules/tccommentnotify/tccommentnotify.controller.php b/modules/tccommentnotify/tccommentnotify.controller.php index 20fdabb72..9013866a6 100644 --- a/modules/tccommentnotify/tccommentnotify.controller.php +++ b/modules/tccommentnotify/tccommentnotify.controller.php @@ -83,7 +83,7 @@ if( file_exists($this->cachedir.$this->cachefile) ) { - unlink($this->cachedir.$this->cachefile); + FileHandler::removeFile($this->cachedir.$this->cachefile); } $oModel = &getModel('tccommentnotify'); @@ -101,7 +101,7 @@ $this->sendCommentNotify($data->comment_srl); } } - unlink($lockFilePath); + FileHandler::removeFile($lockFilePath); } function deleteFromQueue($comment_srl) diff --git a/modules/widget/widget.controller.php b/modules/widget/widget.controller.php index 3b843971e..01d49be59 100644 --- a/modules/widget/widget.controller.php +++ b/modules/widget/widget.controller.php @@ -31,7 +31,7 @@ if($vars->widget_sequence) { $cache_path = './files/cache/widget_cache/'; $cache_file = sprintf('%s%d.%s.cache', $cache_path, $vars->widget_sequence, Context::getLangType()); - @unlink($cache_file); + FileHandler::removeFile($cache_file); } if($vars->widget_cache>0) $vars->widget_sequence = getNextSequence(); @@ -50,7 +50,7 @@ $cache_path = './files/cache/widget_cache/'; $cache_file = sprintf('%s%d.%s.cache', $cache_path, $vars->widget_sequence, Context::getLangType()); - @unlink($cache_file); + FileHandler::removeFile($cache_file); // 코드 출력 $this->add('widget_code', $widget_code); @@ -75,7 +75,7 @@ if($vars->widget_sequence) { $cache_path = './files/cache/widget_cache/'; $cache_file = sprintf('%s%d.%s.cache', $cache_path, $vars->widget_sequence, Context::getLangType()); - @unlink($cache_file); + FileHandler::removeFile($cache_file); } if($vars->widget_cache>0) $vars->widget_sequence = getNextSequence(); diff --git a/tools/cache_cleaner/form.html b/tools/cache_cleaner/form.html new file mode 100644 index 000000000..5a4ff3a1b --- /dev/null +++ b/tools/cache_cleaner/form.html @@ -0,0 +1,32 @@ + + + + + + XE Cache Cleaner + + + + +

XE Cache Cleaner

+
+ + +
{$msg}
+ + +
+ + + + + + + + + + + +
+ + diff --git a/tools/cache_cleaner/index.php b/tools/cache_cleaner/index.php new file mode 100644 index 000000000..fcad6ea92 --- /dev/null +++ b/tools/cache_cleaner/index.php @@ -0,0 +1,58 @@ + + * @brief XE 캐시파일 및 불필요한 파일 정리 + **/ + + /** + * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 + **/ + define('__ZBXE__', true); + + /** + * @brief 필요한 설정 파일들을 include + **/ + require_once('../../config/config.inc.php'); + + // id/ password 구함 + $id = $_POST['id']; + $pw = $_POST['pw']; + + // 저장되어 있는 비밀번호와 비교 + $oContext = &Context::getInstance(); + $oContext->init(); + $db_info = $oContext->getDBInfo(); + + // install 모듈의 언어파일을 로드 + Context::loadLang(_XE_PATH_.'modules/install/lang'); + + // 설치가 되어 있지 않을 경우 + if(!Context::isInstalled()) { + + $msg = Context::getLang('msg_db_not_setted'); + + // 인증 정보가 없을 경우 + } elseif(!isset($id) || !isset($pw)) { + + + // 입력된 정보와 저장된 정보 비교 + } else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) { + + if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id')); + else $msg = sprintf($lang->filter->equalto, Context::getLang('password')); + + // 캐시 파일 제거 + } else if($id === $db_info->db_userid && $pw === $db_info->db_password) { + + $oAdminController = &getAdminController('admin'); + $oAdminController->procAdminRecompileCacheFile(); + $msg = Context::getLang('success_reset'); + + } + + Context::set('msg', $msg); + + $oTemplate = &TemplateHandler::getInstance(); + print $oTemplate->compile('./tools/cache_cleaner/','form'); +?> diff --git a/tools/cache_cleaner/style.css b/tools/cache_cleaner/style.css new file mode 100644 index 000000000..228b7fd70 --- /dev/null +++ b/tools/cache_cleaner/style.css @@ -0,0 +1,10 @@ +h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; } +hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; } +blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;} + +code { display:block; clear:both; margin-bottom:10px;} +code label { float:left; display:block; width:150px; } +code input { display:block; width:150px; border:1px solid #AAAAAA; } + +input.submit { width:300px; border:1px solid #AAAAAA;} + From a0991ceeb1573a2a59611acc82c88079e8aeed32 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 27 Jun 2008 08:31:40 +0000 Subject: [PATCH 22/71] =?UTF-8?q?sym=20link=EC=9D=BC=20=EA=B2=BD=EC=9A=B0?= =?UTF-8?q?=20getScriptPath()=EA=B0=80=20=EC=98=A4=EB=8F=99=EC=9E=91?= =?UTF-8?q?=ED=95=98=EB=8D=98=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@4332 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 cf34e214d..ae687f46f 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -474,7 +474,7 @@ function getScriptPath() { static $url = null; if($url === null) { - $document_root = str_replace('\\','/',$_SERVER['DOCUMENT_ROOT']); + $document_root = str_replace('\\','/',realpath($_SERVER['DOCUMENT_ROOT'])); $file = str_replace('\\','/',__FILE__); $url = preg_replace('/index.php/i','',str_replace('config/func.inc.php','',str_replace($document_root, '', $file))); } From ac63084a3b733958fc4abeb2c56b9db73aaaed91 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 27 Jun 2008 08:39:49 +0000 Subject: [PATCH 23/71] =?UTF-8?q?=EC=BA=90=EC=8B=9C=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=9E=AC=EC=83=9D=EC=84=B1=EC=8B=9C=20=EC=95=A0=EB=93=9C?= =?UTF-8?q?=EC=98=A8=20=ED=99=9C=EC=84=B1=ED=99=94=20=EC=BA=90=EC=8B=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=B4=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8D=98=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@4333 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/addon/addon.admin.controller.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/addon/addon.admin.controller.php b/modules/addon/addon.admin.controller.php index e4c3ec1f0..506f25da7 100644 --- a/modules/addon/addon.admin.controller.php +++ b/modules/addon/addon.admin.controller.php @@ -57,7 +57,7 @@ $oAddonModel = &getAdminModel('addon'); $addon_list = $oAddonModel->getInsertedAddons(); foreach($addon_list as $addon => $val) { - if($val->is_used != 'Y' || !is_dir('./addons/'.$addon) ) continue; + if($val->is_used != 'Y' || !is_dir(_XE_PATH_.'addons/'.$addon) ) continue; $extra_vars = unserialize($val->extra_vars); $mid_list = $extra_vars->mid_list; @@ -69,7 +69,7 @@ $extra_vars = base64_encode($val->extra_vars); } - $buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); if(file_exists("./addons/%s/%s.addon.php") && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "./addons/%s/"; @include("./addons/%s/%s.addon.php"); }', $mid_list, $addon, $addon, $extra_vars, $addon, $addon, $addon); + $buff .= sprintf(' $_ml = unserialize(base64_decode("%s")); if(file_exists("%saddons/%s/%s.addon.php") && (!is_array($_ml) || in_array($_m, $_ml))) { unset($addon_info); $addon_info = unserialize(base64_decode("%s")); $addon_path = "%saddons/%s/"; @include("%saddons/%s/%s.addon.php"); }', $mid_list, _XE_PATH_, $addon, $addon, $extra_vars, _XE_PATH_, $addon, _XE_PATH_, $addon, $addon); } $buff = sprintf('', $buff); From 92d7bea7804e983fb00867426b8a3531d1466a91 Mon Sep 17 00:00:00 2001 From: supershop Date: Fri, 27 Jun 2008 11:00:33 +0000 Subject: [PATCH 24/71] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B2=88=EC=97=AD=20=EB=B0=8F=20=EA=B8=B0=EC=A1=B4?= =?UTF-8?q?=20=EB=B2=88=EC=97=AD=EB=B3=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4334 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/tccommentnotify/conf/info.xml | 5 +++++ modules/tccommentnotify/conf/info.xml | 3 +++ modules/tccommentnotify/lang/en.lang.php | 5 +++++ 3 files changed, 13 insertions(+) create mode 100644 modules/tccommentnotify/lang/en.lang.php diff --git a/addons/tccommentnotify/conf/info.xml b/addons/tccommentnotify/conf/info.xml index 50e540319..ede120376 100644 --- a/addons/tccommentnotify/conf/info.xml +++ b/addons/tccommentnotify/conf/info.xml @@ -1,10 +1,15 @@ 댓글알리미 애드온 + Comment Notifier Addon haneul + haneul 댓글알리미를 지원하는 애드온입니다. + + + This addon enables Comment Notifier module. diff --git a/modules/tccommentnotify/conf/info.xml b/modules/tccommentnotify/conf/info.xml index 8f2ac3d79..baace56ac 100644 --- a/modules/tccommentnotify/conf/info.xml +++ b/modules/tccommentnotify/conf/info.xml @@ -1,8 +1,11 @@ 댓글알리미 + Comment Notifier haneul + haneul 댓글알리미 모듈입니다. + Comment Notifier will tell you when there's a new comment diff --git a/modules/tccommentnotify/lang/en.lang.php b/modules/tccommentnotify/lang/en.lang.php new file mode 100644 index 000000000..117219e7c --- /dev/null +++ b/modules/tccommentnotify/lang/en.lang.php @@ -0,0 +1,5 @@ +commentnotify = 'Comment Notifier'; + $lang->msg_checked_comment_is_deleted = '%d comment(s) has(have) been deleted'; + $lang->cmd_delete_checked_comment = 'Delete Selected Items'; +?> From 379f3f4758f6c3479fcb1e18d0b628c74b4039f1 Mon Sep 17 00:00:00 2001 From: zero Date: Fri, 27 Jun 2008 12:43:42 +0000 Subject: [PATCH 25/71] =?UTF-8?q?=EB=AC=B8=EC=84=9C=EC=9D=98=20=EC=8D=B8?= =?UTF-8?q?=EB=84=A4=EC=9D=BC=20=EC=83=9D=EC=84=B1=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@4335 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/file/FileHandler.class.php | 4 ++-- modules/document/document.item.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index f89494940..9e6fe2a5e 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -227,8 +227,8 @@ * @brief 특정 이미지 파일을 특정 위치로 옮김 (옮길때 이미지의 크기를 리사이징할 수 있음..) **/ function createImageFile($source_file, $target_file, $resize_width = 0, $resize_height = 0, $target_type = '', $thumbnail_type = 'crop') { - $source_file = FileHandler::getRequestUri($source_file); - $target_file = FileHandler::getRequestUri($target_file); + $source_file = FileHandler::getRealPath($source_file); + $target_file = FileHandler::getRealPath($target_file); if(!file_exists($source_file)) return; if(!$resize_width) $resize_width = 100; diff --git a/modules/document/document.item.php b/modules/document/document.item.php index ad48e925f..42086c35c 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -444,8 +444,8 @@ } // 문서의 이미지 첨부파일 위치를 구함 - $document_path = sprintf('./files/attach/images/%d/%d/',$this->get('module_srl'), $this->get('document_srl')); - if(!is_dir($document_path)) FileHandler::makeDir($document_path); + $document_path = sprintf("./files/attach/images/%s/%s", $this->get('module_srl'), getNumberingPath($this->get('document_srl'),3)); + if(!is_dir($document_path)) return; // 썸네일 임시 파일명을 구함 if($width != $height) $thumbnail_file = sprintf('%sthumbnail_%dx%d_%s.jpg', $document_path, $width, $height, $thumbnail_type); From a99dd0e8694934ab3657a07a7b1256ca1e5dd1fc Mon Sep 17 00:00:00 2001 From: bnu Date: Mon, 30 Jun 2008 16:42:17 +0000 Subject: [PATCH 26/71] =?UTF-8?q?=EC=A0=88=EB=8C=80=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EB=B0=98=ED=99=98=EC=9D=B4=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=EB=90=98=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4336 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/file/FileHandler.class.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 9e6fe2a5e..130e81d8b 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -10,12 +10,12 @@ class FileHandler extends Handler { /** - * @brief 대상 파일이름이나 디렉토리의 위치를 확인함 + * @brief 대상 파일, 디렉토리의 절대경로를 반환 **/ function getRealPath($source) { - if(substr($source,0,1)=='/') return $source; - if(substr($source,0,2)=='./') $source = substr($source,2); - return _XE_PATH_.$source; + $temp = explode('/', $source); + if($temp[0] == '.') $source = _XE_PATH_.substr($source, 2); + return $source; } /** @@ -203,7 +203,7 @@ } */ - $header = sprintf("GET %s%s HTTP/1.0\r\nHost: %s\r\nAccept-Charset: utf-8;q=0.7,*;q=0.7\r\nReferer: %s://%s\r\nRequestUrl: %s\r\nConnection: Close\r\n\r\n", $url_info['path'], $url_info['query']?'?'.$url_info['query']:'', $url_info['host'], $url_info['scheme'], $url_info['host'], Context::getRequestUri()); + $header = sprintf("GET %s%s HTTP/1.0\r\nHost: %s\r\nAccept-Charset: utf-8;q=0.7,*;q=0.7\r\nReferer: %s://%s\r\nRequestUrl: %s\r\nConnection: Close\r\n\r\n", $url_info['path'], $url_info['query']?'?'.$url_info['query']:'', $url_info['host'], $url_info['scheme'], $url_info['host'], Context::getRequestUri()); @fwrite($fp, $header); @@ -288,21 +288,21 @@ // 원본 이미지의 타입으로 임시 이미지 생성 switch($type) { - case 'gif' : + case 'gif' : $source = @imagecreatefromgif($source_file); break; // jpg - case 'jpeg' : - case 'jpg' : + case 'jpeg' : + case 'jpg' : $source = @imagecreatefromjpeg($source_file); break; // png - case 'png' : + case 'png' : $source = @imagecreatefrompng($source_file); break; // bmp - case 'wbmp' : - case 'bmp' : + case 'wbmp' : + case 'bmp' : $source = @imagecreatefromwbmp($source_file); break; default : From 83ad4860482cfabc35d6598c776441b9aa2890a4 Mon Sep 17 00:00:00 2001 From: supershop Date: Wed, 2 Jul 2008 11:21:53 +0000 Subject: [PATCH 27/71] =?UTF-8?q?=EC=98=81=EC=96=B4=20-=20=EA=B8=B0?= =?UTF-8?q?=EC=A1=B4=20=EB=B2=88=EC=97=AD=EB=B3=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4337 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/opage/lang/en.lang.php | 2 +- modules/session/lang/en.lang.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/opage/lang/en.lang.php b/modules/opage/lang/en.lang.php index a1aae74a7..7ff45e629 100644 --- a/modules/opage/lang/en.lang.php +++ b/modules/opage/lang/en.lang.php @@ -7,7 +7,7 @@ $lang->opage = "External Page"; $lang->opage_path = "Location of External Document"; - $lang->opage_caching_interval = "Set Caching Time"; + $lang->opage_caching_interval = "Caching Time"; $lang->about_opage = "This module enables usage of external html or php files in Zeroboard XE.
It allows absolute or relative path, and if the url starts with 'http://' , it can display the external page of the server."; $lang->about_opage_path= "Please input the location of external document.
Both absolute path such as '/path1/path2/sample.php' or relative path such as '../path2/sample.php' can be used.
If you input the path like 'http://url/sample.php' , the result will be received and then displayed.
This is current Zeroboard Xe's absolute path.
"; diff --git a/modules/session/lang/en.lang.php b/modules/session/lang/en.lang.php index 6597109fe..f357ee2b2 100644 --- a/modules/session/lang/en.lang.php +++ b/modules/session/lang/en.lang.php @@ -2,7 +2,7 @@ /** * @file modules/session/lang/ko.lang.php * @author zero - * @brief 한국어 언어팩 (기본적인 내용만 수록) + * @brief Korean Language Pack (Basic Contents Only) **/ $lang->session = 'Session'; From 2583f3a46ee5010cda3be7a71ccd580b0b86e507 Mon Sep 17 00:00:00 2001 From: haneul Date: Thu, 3 Jul 2008 04:37:35 +0000 Subject: [PATCH 28/71] =?UTF-8?q?info=20=EC=88=98=EC=A0=95,=20ReleaseNote?= =?UTF-8?q?=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@4338 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/tccommentnotify/ReleaseNote | 1 + modules/tccommentnotify/conf/info.xml | 4 ++-- modules/tccommentnotify/tccommentnotify.controller.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/tccommentnotify/ReleaseNote b/modules/tccommentnotify/ReleaseNote index 8d9fab0a6..c82be839d 100644 --- a/modules/tccommentnotify/ReleaseNote +++ b/modules/tccommentnotify/ReleaseNote @@ -1,3 +1,4 @@ +2008.06.26 v0.2.0 본문에 대한 댓글알림 추가- 기본패키지에 추가 2008.06.18 v0.1.3 queue에서 잘 안 빠지는 문제 수정 2008.06.18 v0.1.2 page module로 들어오는 noti가 반영이 안되는 문제 수정 2008.06.17 v0.1.1 tag strip안되는 문제 수정 diff --git a/modules/tccommentnotify/conf/info.xml b/modules/tccommentnotify/conf/info.xml index baace56ac..50fab0a13 100644 --- a/modules/tccommentnotify/conf/info.xml +++ b/modules/tccommentnotify/conf/info.xml @@ -4,8 +4,8 @@ Comment Notifier haneul - haneul + haneul 댓글알리미 모듈입니다. - Comment Notifier will tell you when there's a new comment + Comment Notifier will tell you when there's a new comment
diff --git a/modules/tccommentnotify/tccommentnotify.controller.php b/modules/tccommentnotify/tccommentnotify.controller.php index 9013866a6..dd6c47f39 100644 --- a/modules/tccommentnotify/tccommentnotify.controller.php +++ b/modules/tccommentnotify/tccommentnotify.controller.php @@ -257,7 +257,7 @@ $oReq->addPostData('r2_body', strip_tags($oChild->get('content'))); - $oReq->sendRequest(true); + $oReq->sendRequest(false); $code = $oReq->getResponseCode(); return $code; } From 96b6fb972790ccae7a7c9fa9cccb1053b075a54a Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 3 Jul 2008 08:40:19 +0000 Subject: [PATCH 29/71] =?UTF-8?q?=EC=8D=B8=EB=84=A4=EC=9D=BC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95.=20?= =?UTF-8?q?=EC=8D=B8=EB=84=A4=EC=9D=BC=EC=9D=98=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=EB=A5=BC=20=EA=B8=B0=EC=A1=B4=EC=9D=98=20?= =?UTF-8?q?=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=EC=97=90=EC=84=9C=20./files/cache/thumbnails/=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=EB=B2=88=ED=98=B8=EC=9D=98=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4339 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../document/document.admin.controller.php | 5 +- modules/document/document.item.php | 76 +++++++++---------- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index e00155cdd..e35c4dea8 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -383,9 +383,12 @@ **/ function procDocumentAdminDeleteAllThumbnail() { - // files/attaches/images/ 디렉토리를 순환하면서 thumbnail_*.jpg 파일을 모두 삭제 + // files/attaches/images/ 디렉토리를 순환하면서 thumbnail_*.jpg 파일을 모두 삭제 (1.0.4 이전까지) $this->deleteThumbnailFile('./files/attach/images'); + // files/cache/thumbnails 디렉토리 자체를 삭제 (1.0.5 이후 변경된 썸네일 정책) + FileHandler::removeFilesInDir('./files/cache/thumbnails'); + $this->setMessage('success_deleted'); } diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 42086c35c..7c879ed6e 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -428,10 +428,15 @@ } function getThumbnail($width = 80, $height = 0, $thumbnail_type = '') { + // 존재하지 않는 문서일 경우 return false if(!$this->document_srl) return; + // 높이 지정이 별도로 없으면 정사각형으로 생성 if(!$height) $height = $width; - + + // 첨부파일이 없거나 내용중 이미지가 없으면 return false; + if(!$this->hasUploadedFiles() && !preg_match("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg|bmp)!is", $this->get('content'))) return; + // 문서 모듈의 기본 설정에서 Thumbnail의 생성 방법을 구함 if(!in_array($thumbnail_type, array('crop','ratio'))) { $config = $GLOBALS['__document_config__']; @@ -443,68 +448,55 @@ $thumbnail_type = $config->thumbnail_type; } - // 문서의 이미지 첨부파일 위치를 구함 - $document_path = sprintf("./files/attach/images/%s/%s", $this->get('module_srl'), getNumberingPath($this->get('document_srl'),3)); - if(!is_dir($document_path)) return; + // 썸네일 정보 정의 + $thumbnail_path = sprintf('files/cache/thumbnails/%s',getNumberingPath($this->document_srl, 3)); + $thumbnail_file = sprintf('%s%dx%d.%s.jpg', $thumbnail_path, $width, $height, $thumbnail_type); + $thumbnail_url = Context::getRequestUri().$thumbnail_file; - // 썸네일 임시 파일명을 구함 - if($width != $height) $thumbnail_file = sprintf('%sthumbnail_%dx%d_%s.jpg', $document_path, $width, $height, $thumbnail_type); - else $thumbnail_file = sprintf('%sthumbnail_%d_%s.jpg', $document_path, $width, $thumbnail_type); - - // 썸네일이 있더라도 글의 수정시간과 비교해서 다르면 다시 생성함 + // 썸네일 파일이 있을 경우 글의 시간과 비교하고 크기를 비교하여 true | false를 return if(file_exists($thumbnail_file)) { $file_created_time = date("YmdHis",filemtime($thumbnail_file)); $modified_time = $this->get('last_update'); - if($modified_time > $file_created_time) FileHandler::removeFile($thumbnail_file); + + // 만약 글의 수정시간보다 이후에 만들어진 썸네일이라면 썸네일 크기에 따라서 경로 또는 빈 문자열을 return + if($modified_time < $file_created_time) return filesize($thumbnail_file)>0?$thumbnail_url:''; } - if(file_exists($thumbnail_file)&&filesize($thumbnail_file)<1) return; + FileHandler::writeFile($thumbnail_file, '','w'); - // 썸네일 파일이 있으면 url return - if(file_exists($thumbnail_file)) return Context::getRequestUri().$thumbnail_file; + // 문서에 첨부된 파일이 있으면 첫번째 멀티미디어 파일을 구함 + if($this->hasUploadedFiles()) { + $file_list = $this->getUploadedFiles(); + if(count($file_list)) { + foreach($file_list as $file) { + if($file->direct_download!='Y') continue; + if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$file->source_filename)) continue; - // 생성 시작 - FileHandler::writeFile($thumbnail_file, '', 'w'); + $filename = $file->uploaded_filename; + if(!file_exists($filename)) continue; - // 첨부파일이 있는지 확인하고 있으면 썸네일 만듬 - $oFile = &getModel('file'); - $file_list = $oFile->getFiles($this->document_srl); - if(count($file_list)) { - foreach($file_list as $file) { - if($file->direct_download!='Y') continue; - if(!preg_match("/(jpg|png|jpeg|gif)$/i",$file->source_filename)) continue; - - $filename = $file->uploaded_filename; - if(!file_exists($filename)) continue; - - FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); - if(file_exists($thumbnail_file)) return Context::getRequestUri().$thumbnail_file; + FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); + if(file_exists($thumbnail_file) && filesize($thumbnail_file)>0) return Context::getRequestUri().$thumbnail_file; + } } } - // 첨부파일이 없으면 내용에서 추출 + // 첨부된 파일이 없으면 내용중 이미지 파일을 구함 $content = $this->get('content'); - $target_src = null; - preg_match_all("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg)!is", $content, $matches, PREG_SET_ORDER); + preg_match_all("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg|bmp)!is", $content, $matches, PREG_SET_ORDER); for($i=0;$idocument_srl)); + FileHandler::getRemoteFile($target_src, $tmp_file); + if(file_exists($tmp_file)) FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); + FileHandler::removeFile($tmp_file); + if(file_exists($thumbnail_file) && filesize($thumbnail_file)>0) return Context::getRequestUri().$thumbnail_file; } } - if($target_src) { - $tmp_file = sprintf('%sthumbnail_%d.tmp.jpg', $document_path, $width); - FileHandler::getRemoteFile($target_src, $tmp_file); - FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $config->thumbnail_type); - FileHandler::removeFile($tmp_file); - return Context::getRequestUri().$thumbnail_file; - } - - FileHandler::writeFile($thumbnail_file,''); return; } From c4fdd3fc4773571e4adebf9cb78f8c97dcd14858 Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 5 Jul 2008 15:17:05 +0000 Subject: [PATCH 30/71] =?UTF-8?q?=EC=99=B8=EB=B6=80=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=EC=9D=98=20=EC=8D=B8=EB=84=A4=EC=9D=BC=EC=9D=84=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95=20(?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=AA=85=20=EC=98=A4=ED=83=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@4340 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 7c879ed6e..6f0ce9184 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -486,8 +486,8 @@ $target_src = null; preg_match_all("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg|bmp)!is", $content, $matches, PREG_SET_ORDER); for($i=0;$idocument_srl)); FileHandler::getRemoteFile($target_src, $tmp_file); From b0cd9370c6c13b20275a323e41b4d4e23b47d6a5 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 13:09:01 +0000 Subject: [PATCH 31/71] =?UTF-8?q?#356=20switch=20=EA=B5=AC=EB=AC=B8=20?= =?UTF-8?q?=EC=A7=80=EC=9B=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@4341 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 34 +++++++++++++++------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index fe163ffeb..c6c7769f2 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -55,13 +55,13 @@ // 일단 컴파일 $buff = $this->_compile($tpl_file, $compiled_tpl_file); - + // Context와 compiled_tpl_file로 컨텐츠 생성 $output = $this->_fetch($compiled_tpl_file, $buff, $tpl_path); if(__DEBUG__==3 ) $GLOBALS['__template_elapsed__'] += getMicroTime() - $start; - return $output; + return $output; } /** @@ -103,7 +103,7 @@ // include 변경 //$buff = preg_replace_callback('!<\!--#include\(([^\)]*?)\)-->!is', array($this, '_compileIncludeToCode'), $buff); - // 이미지 태그 img의 src의 값이 http:// 나 / 로 시작하지 않으면 제로보드의 root경로부터 시작하도록 변경 + // 이미지 태그 img의 src의 값이 http:// 나 / 로 시작하지 않으면 제로보드의 root경로부터 시작하도록 변경 $buff = preg_replace_callback('/(img|input)([^>]*)src=[\'"]{1}(?!http)(.*?)[\'"]{1}/is', array($this, '_compileImgPath'), $buff); // 변수를 변경 @@ -176,19 +176,33 @@ case 'endif' : case 'endfor' : case 'endforeach' : + case 'endswitch' : $output = '}'; break; + case 'break' : + $output = 'break;'; + break; + case 'default' : + $output = 'default :'; + break; default : - if(substr($code,0,4)=='else') { + $suffix = '{'; + + if(substr($code, 0, 4) == 'else') { $code = '}'.$code; - } elseif(substr($code,0,7)=='foreach') { - $tmp_str = substr($code,8); + } elseif(substr($code, 0, 7) == 'foreach') { + $tmp_str = substr($code, 8); $tmp_arr = explode(' ', $tmp_str); $var_name = $tmp_arr[0]; - if(substr($var_name,0,1)=='$') $prefix = sprintf('if(count($__Context->%s)) ', substr($var_name,1)); - else $prefix = sprintf('if(count(%s)) ', $var_name); - } - $output = preg_replace('/\$([a-zA-Z0-9\_\-]+)/i','$__Context->\\1', $code).'{'; + if(substr($var_name, 0, 1) == '$') { + $prefix = sprintf('if(count($__Context->%s)) ', substr($var_name, 1)); + } else { + $prefix = sprintf('if(count(%s)) ', $var_name); + } + } elseif(substr($code, 0, 4) == 'case') { + $suffix = ':'; + } + $output = preg_replace('/\$([a-zA-Z0-9\_\-]+)/i', '$__Context->\\1', $code.$suffix); break; } From cc7622fefcb90f88862e071ad883743fb5fb8157 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 13:25:05 +0000 Subject: [PATCH 32/71] =?UTF-8?q?#356=20switch=20=EB=AC=B8=EB=B2=95=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20('@break@case...'=20=3D>=20break;=20case..?= =?UTF-8?q?.)?= 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@4342 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index c6c7769f2..bdd376e20 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -201,6 +201,9 @@ } } elseif(substr($code, 0, 4) == 'case') { $suffix = ':'; + } elseif(substr($code, 0, 10) == 'break@case') { + $code = 'break; case'.substr($code, 10); + $suffix = ':'; } $output = preg_replace('/\$([a-zA-Z0-9\_\-]+)/i', '$__Context->\\1', $code.$suffix); break; From 210775b6e9e65aaa06a7632c195b9458f89d687f Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 13:31:58 +0000 Subject: [PATCH 33/71] =?UTF-8?q?#356=20switch=20=EB=AC=B8=EB=B2=95=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20('@break@default'=20=3D>=20break;=20defaul?= =?UTF-8?q?t:)?= 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@4343 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/template/TemplateHandler.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index bdd376e20..ec6ad652f 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -185,6 +185,9 @@ case 'default' : $output = 'default :'; break; + case 'break@default' : + $output = 'break; default :'; + break; default : $suffix = '{'; From c31b14928904eef9d4550bbe6f0067a9d7885108 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 15:29:32 +0000 Subject: [PATCH 34/71] =?UTF-8?q?getNumberingPath()=20=EB=B0=98=ED=99=98?= =?UTF-8?q?=20=EA=B0=92=EC=9D=98=20=EC=98=88=EB=A5=BC=20=EC=9E=98=EB=AA=BB?= =?UTF-8?q?=20=ED=91=9C=EA=B8=B0=ED=95=9C=20=EC=A3=BC=EC=84=9D=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@4344 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/config/func.inc.php b/config/func.inc.php index ae687f46f..f68de7fce 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -382,9 +382,6 @@ * @brief 주어진 숫자를 주어진 크기로 recursive하게 잘라줌 * @param no 주어진 숫자 * @param size 잘라낼 크기 - * - * ex) 12, 3 => 012/ - * ex) 1234, 3 => 123/004/ **/ function getNumberingPath($no, $size=3) { $mod = pow(10, $size); From 47580801dcdee239f034fab20aeda6b64ad5a68e Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 16:51:41 +0000 Subject: [PATCH 35/71] =?UTF-8?q?#489=20=EB=B0=A9=EB=AA=85=EB=A1=9D=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A8=EC=97=90=EC=84=9C=20'=EC=9E=84=EC=8B=9C?= =?UTF-8?q?=EC=A0=80=EC=9E=A5/=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0'?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=9D=B4=20=EC=9E=91=EB=8F=99=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B3=A0=EC=B9=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@4345 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 4 +++- modules/member/member.controller.php | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/common/js/common.js b/common/js/common.js index d3ff24680..0ea9da3fb 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -536,6 +536,7 @@ function doDocumentSave(obj) { var oFilter = new XmlJsFilter(obj.form, "member", "procMemberSaveDocument", completeDocumentSave); oFilter.addResponseItem("error"); oFilter.addResponseItem("message"); + oFilter.addResponseItem("document_srl"); oFilter.proc(); editorRelKeys[editor_sequence]['content'].value = prev_content; @@ -543,6 +544,7 @@ function doDocumentSave(obj) { } function completeDocumentSave(ret_obj) { + xGetElementsByAttribute('input', 'name', 'document_srl')[0].value = ret_obj['document_srl']; alert(ret_obj['message']); } @@ -562,7 +564,7 @@ function doDocumentSelect(document_srl) { } // 게시글을 가져와서 등록하기 - opener.location.href = opener.current_url.setQuery('document_srl', document_srl); + opener.location.href = opener.current_url.setQuery('document_srl', document_srl).setQuery('act', 'dispBoardWrite'); window.close(); } diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 51bb88b49..2ca7a8c14 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -221,6 +221,11 @@ // 글의 대상 모듈을 회원 정보로 변경 $obj->module_srl = $logged_info->member_srl; + // 제목을 사용하지 않는 방명록 등에서 내용 앞 부분을 제목 가져오기 + if(!$obj->title) { + $obj->title = cut_str(strip_tags($obj->content), 20, '...'); + } + $oDocumentModel = &getModel('document'); $oDocumentController = &getController('document'); @@ -248,6 +253,7 @@ } $this->setMessage('success_saved'); + $this->add('document_srl', $obj->document_srl); } /** From 4bf7de701e53a68672366fdac6dc208df18931e0 Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 17:11:20 +0000 Subject: [PATCH 36/71] =?UTF-8?q?=EC=82=AC=EC=86=8C=ED=95=9C=20CSS=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=20=20*=20http://www.zeroboard.com/1684539?= =?UTF-8?q?2?= 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@4346 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/board/skins/xe_board/css/common.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/board/skins/xe_board/css/common.css b/modules/board/skins/xe_board/css/common.css index 6eca0b181..ca3d9527a 100644 --- a/modules/board/skins/xe_board/css/common.css +++ b/modules/board/skins/xe_board/css/common.css @@ -277,7 +277,7 @@ html:not([lang*=""]) .boardList th { height:33px; } .boardWrite .tag { margin-top:10px; margin-left:10px; } .boardWrite .tag .inputTypeText { width:90%; background:#FFFFFF url(../images/common/iconTag.gif) no-repeat 5px 5px; padding-left:30px;} .boardWrite .tag .help { vertical-align:middle;} -.boardWrite .tag .info { font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat left center; margin-top:5px;} +.boardWrite .tag .info { font-size:.9em; color:#999999; background:url(../images/common/iconArrowD8.gif) no-repeat 0% 40%; margin-top:5px; padding-left:5px;} .boardWrite .extraVarsList { width:100%; border-top:1px solid #e0e1db; border-bottom:none; margin:10px 0 10px 0; table-layout:fixed;} .boardWrite .extraVarsList th { font-weight:normal; color:#555555; text-align:left; padding:4px 0 4px 10px; border-bottom:1px solid #e0e1db; border-right:1px solid #e0e1db;} From 5bd934bd4d11f27a6ef04339ab17de4da4979a4f Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 9 Jul 2008 17:18:14 +0000 Subject: [PATCH 37/71] =?UTF-8?q?=EC=97=90=EB=94=94=ED=84=B0=EC=97=90?= =?UTF-8?q?=EC=84=9C=20ol,=20ul=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EB=B0=94=EB=A1=9C=20=EC=9E=A1=EC=9D=8C=20=20=20*?= =?UTF-8?q?=20http://www.zeroboard.com/17013695?= 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@4347 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/skins/default/editor.html | 2 +- modules/editor/skins/default_black/editor.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/skins/default/editor.html b/modules/editor/skins/default/editor.html index 92f0ea4ae..154dcec80 100644 --- a/modules/editor/skins/default/editor.html +++ b/modules/editor/skins/default/editor.html @@ -73,8 +73,8 @@
- {$lang->edit->help_list_number} {$lang->edit->help_list_bullet} + {$lang->edit->help_list_number}
class="{$tag_class}" > - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} diff --git a/modules/board/skins/xe_board/view_document.html b/modules/board/skins/xe_board/view_document.html index 925f45fb5..f1df6cde3 100644 --- a/modules/board/skins/xe_board/view_document.html +++ b/modules/board/skins/xe_board/view_document.html @@ -25,7 +25,7 @@
- +
@@ -123,7 +123,7 @@
@@ -142,7 +142,7 @@ - +
{$lang->cmd_list} diff --git a/modules/board/skins/xe_guestbook/tag_list.html b/modules/board/skins/xe_guestbook/tag_list.html index 3f8df1795..66206c6bb 100644 --- a/modules/board/skins/xe_guestbook/tag_list.html +++ b/modules/board/skins/xe_guestbook/tag_list.html @@ -22,9 +22,9 @@ diff --git a/widgets/tag_list/skins/blog_tag_list/tags.html b/widgets/tag_list/skins/blog_tag_list/tags.html index 8b1e1a6c6..d1a443df1 100644 --- a/widgets/tag_list/skins/blog_tag_list/tags.html +++ b/widgets/tag_list/skins/blog_tag_list/tags.html @@ -43,9 +43,9 @@ class="{$tag_class}" > - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} - {htmlspecialchars($val->tag)} + {htmlspecialchars($val->tag)} From 3d75af48709a128b46cf3d9bad3fe808b4dbc7d2 Mon Sep 17 00:00:00 2001 From: bnu Date: Sat, 12 Jul 2008 15:34:40 +0000 Subject: [PATCH 40/71] =?UTF-8?q?#492=20=EC=8A=A4=ED=81=AC=EB=9E=A9,=20?= =?UTF-8?q?=EC=AA=BD=EC=A7=80=ED=95=A8=20=EB=93=B1=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=9D=B4=EB=8F=99=20=EB=AC=B8?= =?UTF-8?q?=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@4350 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .../skins/default/common_header.html | 15 +++++++-------- .../communication/skins/default/css/common.css | 2 +- modules/member/skins/default/common_header.html | 17 ++++++++--------- modules/member/skins/default/css/common.css | 2 +- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/modules/communication/skins/default/common_header.html b/modules/communication/skins/default/common_header.html index e00686ee9..622f194bf 100644 --- a/modules/communication/skins/default/common_header.html +++ b/modules/communication/skins/default/common_header.html @@ -18,19 +18,18 @@
-
-

{$member_title}

+
+

{$member_title}

-
- - - -
+ +
-
+
diff --git a/modules/communication/skins/default/css/common.css b/modules/communication/skins/default/css/common.css index d683fe0c1..a4fedcaf8 100644 --- a/modules/communication/skins/default/css/common.css +++ b/modules/communication/skins/default/css/common.css @@ -17,7 +17,7 @@ .boardInformation strong { font:bold 11px Tahoma; color:#ff6600;} .boardHeader { position:relative; _width:100%; border-top:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} -.boardHeader .member_option { float:right; position:relative; top:1em; right:1em; } +.boardHeader .member_option { float:right; position:relative; top:0.5em; right:1em; } .boardHeader select { vertical-align:bottom; } .boardHeader input { vertical-align:bottom; _padding-bottom:1px;} .boardHeader .essential { position:absolute; top:1.5em; right:1em; color:#54564b; font-size:.9em;} diff --git a/modules/member/skins/default/common_header.html b/modules/member/skins/default/common_header.html index 5154adb27..9479fa329 100644 --- a/modules/member/skins/default/common_header.html +++ b/modules/member/skins/default/common_header.html @@ -18,19 +18,18 @@
-
-

{$member_title}

+
+

{$member_title}

-
- - - -
+ +
-
- +
+ \ No newline at end of file diff --git a/modules/member/skins/default/css/common.css b/modules/member/skins/default/css/common.css index d683fe0c1..a4fedcaf8 100644 --- a/modules/member/skins/default/css/common.css +++ b/modules/member/skins/default/css/common.css @@ -17,7 +17,7 @@ .boardInformation strong { font:bold 11px Tahoma; color:#ff6600;} .boardHeader { position:relative; _width:100%; border-top:1px solid #e1e1dd; border-bottom:none; background:#ffffff url(../images/common/bgH3.gif) no-repeat right bottom; overflow:hidden;} -.boardHeader .member_option { float:right; position:relative; top:1em; right:1em; } +.boardHeader .member_option { float:right; position:relative; top:0.5em; right:1em; } .boardHeader select { vertical-align:bottom; } .boardHeader input { vertical-align:bottom; _padding-bottom:1px;} .boardHeader .essential { position:absolute; top:1.5em; right:1em; color:#54564b; font-size:.9em;} From 3c880b67906729843be681087f1a2f46f390bbf8 Mon Sep 17 00:00:00 2001 From: bnu Date: Sun, 13 Jul 2008 17:28:25 +0000 Subject: [PATCH 41/71] =?UTF-8?q?module=20=EB=AA=A8=EB=93=88=EC=9D=98=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=EB=90=9C=20=EC=84=A4=EB=AA=85=EB=AC=B8(about?= =?UTF-8?q?=5Fmodule)=20=EC=A0=9C=EA=B1=B0=20=20=20*=20=EA=B5=AC=20UI?= =?UTF-8?q?=EC=97=90=EC=84=9C=EC=9D=98=20'=EB=B0=94=EB=A1=9C=EA=B0=80?= =?UTF-8?q?=EA=B8=B0'=EA=B4=80=EB=A0=A8=20=EC=84=A4=EB=AA=85=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@4351 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/lang/en.lang.php | 2 +- modules/module/lang/es.lang.php | 2 +- modules/module/lang/jp.lang.php | 2 +- modules/module/lang/ko.lang.php | 2 +- modules/module/lang/ru.lang.php | 2 +- modules/module/lang/zh-CN.lang.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/module/lang/en.lang.php b/modules/module/lang/en.lang.php index 578267cd0..48bd027bc 100644 --- a/modules/module/lang/en.lang.php +++ b/modules/module/lang/en.lang.php @@ -59,7 +59,7 @@ $lang->about_page_count = 'You can set the number of page link to move pages in a bottom of page.(default is 10)'; $lang->about_admin_id = 'You can grant a manager to have all permissions to the module.\n You can enter multiple IDs using
,(comma) \n(but the module manager cannot access the site admin page.)'; $lang->about_grant = 'If you disable all permissions for a specific object, members who has not logged in would get permission.'; - $lang->about_module = "Zeroboard XE consists of modules except basic library.\n [Module Manage] module will show all installed modules and help you to manage them.\nThrough [Add Shortcuts] feature, you can manage frequently used modules easily."; + $lang->about_module = "Zeroboard XE consists of modules except basic library.\n [Module Manage] module will show all installed modules and help you to manage them."; $lang->about_extra_vars_default_value = 'If multiple default values are needed, you can link them with comma(,).'; ?> diff --git a/modules/module/lang/es.lang.php b/modules/module/lang/es.lang.php index dbb3fefe9..f8330d0c9 100644 --- a/modules/module/lang/es.lang.php +++ b/modules/module/lang/es.lang.php @@ -59,7 +59,7 @@ $lang->about_page_count = 'Usted puede definir el número de página enlazada para mover páginas en un botón de la página.(Predefinido es 10)'; $lang->about_admin_id = 'Usted puede definir el administrador de atribuciones superiores al módulo.\n Usted puede asignar múltiples IDs,
utilizando una ","(coma) \n(pero el administrador del módulo no puede acceder al sitio de la pógina del administrador.)'; $lang->about_grant = 'Si usted desea desactivar a todos los objetos teniendo atribuciones especificas, incluso el usuario no conectado pueden tener atribuciones.'; - $lang->about_module = "Zeroboard XE consiste de módulos excepto la librería básica.\n Módulo del Manejo del Módulo muestra todos los módulos instalados y ayuda el manejo de ellos.\nLos módulos usados frecuentemente puede manejar fácilmente a través de función de [Añadir acceso directo]."; + $lang->about_module = "Zeroboard XE consiste de módulos excepto la librería básica.\n Módulo del Manejo del Módulo muestra todos los módulos instalados y ayuda el manejo de ellos."; $lang->about_extra_vars_default_value = 'Si múltiples valores predefinidos son requeridos, usted puede enlazar con la coma(,).'; ?> diff --git a/modules/module/lang/jp.lang.php b/modules/module/lang/jp.lang.php index ec36adb99..1b5c4cda8 100644 --- a/modules/module/lang/jp.lang.php +++ b/modules/module/lang/jp.lang.php @@ -59,7 +59,7 @@ $lang->about_page_count = 'リストの下段に移動できるページのリンク数が指定できます(デフォルト10個)。'; $lang->about_admin_id = '該当するモジュールに対して最高権限を持つ管理者を指定することができます。「,(コンマ)」で区切って多数のIDが指定できます(管理者ページへのアクセスはできません)。'; $lang->about_grant = '特定権限の対象をすべて解除するとログインしていない会員ユーザまで権限が与えられます。'; - $lang->about_module = "ゼロボードXEは、基本ライブラリの他は、すべてモジュールで構成されています。モジュール管理用のモジュールはインストールされたすべてを表示し、管理できるようにします。頻繁に使うモジュールは、【ショットカット追加】で行うと管理しやすなります。"; + $lang->about_module = "ゼロボードXEは、基本ライブラリの他は、すべてモジュールで構成されています。モジュール管理用のモジュールはインストールされたすべてを表示し、管理できるようにします。"; $lang->about_extra_vars_default_value = '多重・単一選択などのデフォルト値が、複数必要な場合は、「, (コンマ)」で区切って追加することができます。'; ?> diff --git a/modules/module/lang/ko.lang.php b/modules/module/lang/ko.lang.php index 0e82d98b2..9bb059f6d 100644 --- a/modules/module/lang/ko.lang.php +++ b/modules/module/lang/ko.lang.php @@ -59,7 +59,7 @@ $lang->about_page_count = '목록 하단 페이지 이동 하는 링크의 수를 지정하실 수 있습니다. (기본 10개)'; $lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.
,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)'; $lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다'; - $lang->about_module = "제로보드XE는 기본 라이브러리를 제외한 나머지는 모두 모듈로 구성되어 있습니다.\n모듈관리 모듈은 설치된 모든 모듈을 보여주고 관리를 도와줍니다.\n자주 쓰는 모듈은 [바로가기 추가]를 통해서 편하게 관리하실 수 있습니다."; + $lang->about_module = "제로보드XE는 기본 라이브러리를 제외한 나머지는 모두 모듈로 구성되어 있습니다.\n모듈관리 모듈은 설치된 모든 모듈을 보여주고 관리를 도와줍니다."; $lang->about_extra_vars_default_value = '다중/단일 선택등 기본값이 여러개가 필요한 경우 , (콤마)로 연결하시면 됩니다'; ?> diff --git a/modules/module/lang/ru.lang.php b/modules/module/lang/ru.lang.php index 58da44d84..17f05a66c 100644 --- a/modules/module/lang/ru.lang.php +++ b/modules/module/lang/ru.lang.php @@ -59,7 +59,7 @@ $lang->about_page_count = 'Вы можете установить число страниц внизу. (по умолчанию: 10)'; $lang->about_admin_id = 'Вы можете разрешить менеджеру иметь полные права доступа к этому модулю.\nВы можете ввести несколько ID, используя
запятую \n(но менеджер модуля не имеет права доступа к странице администрирования сайта.)'; $lang->about_grant = 'Если Вы отключите все права доступа для отдельного объекта, не прошедшие процедуру входа на сайт пользователи получат доступ.'; - $lang->about_module = "Zeroboard XE состоит из модулей, за исключением базовой библиотеки.\n Управление модулем покажет все установленные модули и поможет управлять ими.\nПосредством функции добавления ярлыка, Вы можете легче управлять часто используемыми модулями."; + $lang->about_module = "Zeroboard XE состоит из модулей, за исключением базовой библиотеки.\n Управление модулем покажет все установленные модули и поможет управлять ими."; $lang->about_extra_vars_default_value = 'Если нужно несколько значений по умолчанию, разделите их запятыми(,).'; ?> diff --git a/modules/module/lang/zh-CN.lang.php b/modules/module/lang/zh-CN.lang.php index e2c46dea7..46fe2b022 100644 --- a/modules/module/lang/zh-CN.lang.php +++ b/modules/module/lang/zh-CN.lang.php @@ -59,7 +59,7 @@ $lang->about_page_count = '可以指定显示在目录下方的页面数(默认为10个)。 '; $lang->about_admin_id = '可以对该模块指定最高管理权限。
有多名管理员时,可以用,(逗号)来分隔(不能访问管理页面)。 '; $lang->about_grant = '全部解除特定权限的对象时,没有登录的会员也将具有相关权限。'; - $lang->about_module = "除基本library以外Zeroboard XE全部由模块组成。\n模块管理中列出所有已安装的模块,因此易于管理。\n常用模块可以通过『添加到快捷菜单』来方便管理。"; + $lang->about_module = "除基本library以外Zeroboard XE全部由模块组成。\n模块管理中列出所有已安装的模块,因此易于管理。"; $lang->about_extra_vars_default_value = '复选/单选缺省值需要多个时,用,(逗号)来分隔。'; ?> From e81b6af95a1a3dbd2da8a55d6c226fbc97d1f102 Mon Sep 17 00:00:00 2001 From: bnu Date: Sun, 13 Jul 2008 17:41:24 +0000 Subject: [PATCH 42/71] =?UTF-8?q?#493=20=EB=AA=A8=EB=93=88=20=EB=B0=94?= =?UTF-8?q?=EB=A1=9C=EA=B0=80=EA=B8=B0=20=EB=A7=81=ED=81=AC=EC=97=90=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=84=A4=EB=AA=85=EC=9D=84=20=ED=92=8D?= =?UTF-8?q?=EC=84=A0=EB=8F=84=EC=9B=80=EB=A7=90=EB=A1=9C=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4352 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/tpl/layout.html | 2 +- modules/module/tpl/module_list.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/admin/tpl/layout.html b/modules/admin/tpl/layout.html index e919d609f..a3fe864ab 100644 --- a/modules/admin/tpl/layout.html +++ b/modules/admin/tpl/layout.html @@ -33,7 +33,7 @@
  • actions))-->class="on" onclick="location.href='{getUrl('','module','admin','act',$v->admin_index_act)}'; return false;"> - {$v->title} + {$v->title}
  • diff --git a/modules/module/tpl/module_list.html b/modules/module/tpl/module_list.html index 382a30373..fa566f3ef 100644 --- a/modules/module/tpl/module_list.html +++ b/modules/module/tpl/module_list.html @@ -43,9 +43,9 @@ - {$val->title} ({$val->module}) + {$val->title} ({$val->module}) - {$val->title} ({$val->module}) + {$val->title} ({$val->module}) {$val->version} From de22070cee65177abf16f126bc56ae438d900a94 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 14 Jul 2008 07:33:24 +0000 Subject: [PATCH 43/71] =?UTF-8?q?#486=20=EA=B2=8C=EC=8B=9C=EA=B8=80=20?= =?UTF-8?q?=EB=8B=A4=EC=88=98=20=EC=84=A0=ED=83=9D=EC=8B=9C=20=EC=A0=95?= =?UTF-8?q?=EC=83=81=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=84=A0=ED=83=9D?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4353 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- common/js/common.js | 10 ++++++++- common/js/xml_handler.js | 22 +++++++++---------- .../document/document.admin.controller.php | 15 +++++++------ 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/common/js/common.js b/common/js/common.js index 0ea9da3fb..4788dee02 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -605,11 +605,19 @@ function clickCheckBoxAll(form, name) { } /* 관리자가 문서를 관리하기 위해서 선택시 세션에 넣음 */ +var addedDocument = new Array(); function doAddDocumentCart(obj) { var srl = obj.value; + addedDocument[addedDocument.length] = srl; + setTimeout(function() { callAddDocumentCart(addedDocument.length); }, 100); +} + +function callAddDocumentCart(document_length) { + if(addedDocument.length<1 || document_length != addedDocument.length) return; var params = new Array(); - params["srl"] = srl; + params["srls"] = addedDocument.join(","); exec_xml("document","procDocumentAdminAddCart", params, null); + addedDocument = new Array(); } /* ff의 rgb(a,b,c)를 #... 로 변경 */ diff --git a/common/js/xml_handler.js b/common/js/xml_handler.js index 28f08730d..4a5f24905 100644 --- a/common/js/xml_handler.js +++ b/common/js/xml_handler.js @@ -50,7 +50,7 @@ function xml_response_filter(oXml, callback_func, response_tags, callback_func_a // xml handler function xml_handler() { - this.obj_xmlHttp = null; + this.objXmlHttp = null; this.method_name = null; this.xml_path = request_uri+"index.php"; @@ -65,7 +65,7 @@ function xml_handler() { this.toZMsgObject = xml_handlerToZMsgObject; this.parseXMLDoc = xml_parseXmlDoc; - this.obj_xmlHttp = this.getXmlHttp(); + this.objXmlHttp = this.getXmlHttp(); } function zGetXmlHttp() { @@ -106,16 +106,16 @@ function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, } } - if(this.obj_xmlHttp.readyState!=0) { - this.obj_xmlHttp.abort(); - this.obj_xmlHttp = this.getXmlHttp(); + if(this.objXmlHttp.readyState!=0) { + this.objXmlHttp.abort(); + this.objXmlHttp = this.getXmlHttp(); } - this.obj_xmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj)}; + this.objXmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj)}; // 모든 xml데이터는 POST방식으로 전송. try-cacht문으로 오류 발생시 대처 try { - this.obj_xmlHttp.open("POST", this.xml_path, true); + this.objXmlHttp.open("POST", this.xml_path, true); } catch(e) { alert(e); @@ -132,7 +132,7 @@ function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, waiting_obj.style.visibility = "visible"; } - this.obj_xmlHttp.send(rd); + this.objXmlHttp.send(rd); } function xml_handlerSetPath(path) { @@ -141,7 +141,7 @@ function xml_handlerSetPath(path) { function xml_handlerReset() { - this.obj_xmlHttp = this.getXmlHttp(); + this.objXmlHttp = this.getXmlHttp(); this.params = new Array(); } @@ -150,8 +150,8 @@ function xml_handlerAddParam(key, val) { } function xml_handlerGetResponseXML() { - if(this.obj_xmlHttp && this.obj_xmlHttp.readyState == 4 && isDef(this.obj_xmlHttp.responseXML)) { - var xmlDoc = this.obj_xmlHttp.responseXML; + if(this.objXmlHttp && this.objXmlHttp.readyState == 4 && isDef(this.objXmlHttp.responseXML)) { + var xmlDoc = this.objXmlHttp.responseXML; this.reset(); return xmlDoc; } diff --git a/modules/document/document.admin.controller.php b/modules/document/document.admin.controller.php index e35c4dea8..e60f79191 100644 --- a/modules/document/document.admin.controller.php +++ b/modules/document/document.admin.controller.php @@ -40,13 +40,14 @@ * @brief 관리자가 글 선택시 세션에 담음 **/ function procDocumentAdminAddCart() { - $document_srl = Context::get('srl'); - - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - if(!$oDocument->isExists()) return; - - $oDocument->doCart(); + $document_srls = explode(',',Context::get('srls')); + $cnt = count($document_srls); + for($i=0;$i<$cnt;$i++) { + $document_srl = (int)trim($document_srls[$i]); + if(!$document_srls) continue; + if($_SESSION['document_management'][$document_srl]) unset($_SESSION['document_management'][$document_srl]); + else $_SESSION['document_management'][$document_srl] = true; + } } /** From a557a12e42dda28ddb0016c72f18c9c89323dc7f Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 14 Jul 2008 08:15:57 +0000 Subject: [PATCH 44/71] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=84=B8?= =?UTF-8?q?=EC=85=98=EC=9D=84=20=EC=95=85=EC=9A=A9=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EB=8A=94=20img,=20embed,=20input=EB=93=B1=EC=9D=98=20?= =?UTF-8?q?src=20=EA=B0=92=20=EB=B3=80=EC=A1=B0=20=EC=8B=9C=EB=8F=84?= =?UTF-8?q?=EB=A5=BC=20=EC=82=AC=EC=A0=84=20=EC=A0=9C=EA=B1=B0=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4354 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/context/Context.class.php | 9 +------ config/func.inc.php | 42 ++++++++++++++++++++++++++++++ modules/opage/opage.controller.php | 13 +-------- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 6be9ec809..989a3156b 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1022,17 +1022,10 @@ /** * @brief 내용의 에디터 컴포넌트 코드를 변환 **/ - function _fixQuotation($matches) { - $key = $matches[1]; - $val = $matches[2]; - if(substr($val,0,1)!='"') $val = '"'.$val.'"'; - return sprintf('%s=%s', $key, $val); - } - function transEditorComponent($matches) { // IE에서는 태그의 특성중에서 " 를 빼어 버리는 경우가 있기에 정규표현식으로 추가해줌 $buff = $matches[0]; - $buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', array($this, _fixQuotation), $buff); + $buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $buff); $buff = str_replace("&","&",$buff); // 에디터 컴포넌트에서 생성된 코드 diff --git a/config/func.inc.php b/config/func.inc.php index f68de7fce..3e2e01f0b 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -416,6 +416,9 @@ // XSS 사용을 위한 이벤트 제거 $content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeJSEvent, $content); + // 이미지나 동영상등의 태그에서 src에 관리자 세션을 악용하는 코드를 제거 + $content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeSrcHack, $content); + return $content; } @@ -425,6 +428,45 @@ return preg_replace('/ on([a-z]+)=/i',' _on$1=',$matches[0]); } + function removeSrcHack($matches) { + $tag = $matches[1]; + + $buff = trim(preg_replace('/(\/>|>)/','/>',$matches[0])); + $buff = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $buff); + + $oXmlParser = new XmlParser(); + $xml_doc = $oXmlParser->parse($buff); + + // src값에 module=admin이라는 값이 입력되어 있으면 이 값을 무효화 시킴 + $src = $xml_doc->{$tag}->attrs->src; + if($src) { + $url_info = parse_url($src); + $query = $url_info['query']; + $queries = explode('&', $query); + $cnt = count($queries); + for($i=0;$i<$cnt;$i++) { + $pos = strpos($queries[$i],'='); + if($pos === false) continue; + $key = strtolower(trim(substr($queries[$i], 0, $pos))); + $val = strtolower(trim(substr($queries[$i] ,$pos+1))); + if(($key == 'module' && $val == 'admin') || $key == 'act' && preg_match('/admin/i',$val)) return sprintf("<%s>",$tag); + } + } + + return $matches[0]; + + } + + /** + * @brief attribute의 value를 " 로 둘러싸도록 처리하는 함수 + **/ + function fixQuotation($matches) { + $key = $matches[1]; + $val = $matches[2]; + if(substr($val,0,1)!='"') $val = '"'.$val.'"'; + return sprintf('%s=%s', $key, $val); + } + // hexa값을 RGB로 변환 if(!function_exists('hexrgb')) { function hexrgb($hexstr) { diff --git a/modules/opage/opage.controller.php b/modules/opage/opage.controller.php index d23bb1528..177b663fb 100644 --- a/modules/opage/opage.controller.php +++ b/modules/opage/opage.controller.php @@ -72,7 +72,7 @@ $this->target_path = $path; // element의 속성중 value에 " 로 안 묶여 있는 것을 검사하여 묶어줌 - $content = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', array($this, '_fixQuotation'), $content); + $content = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $content); // img, input, a, link등의 href, src값 변경 $content = preg_replace_callback('!(script|link|a|img|input)([^>]*)(href|src)=[\'"](.*?)[\'"]!is', array($this, '_replaceSrc'), $content); @@ -104,16 +104,5 @@ $buff = sprintf('url(%s)', $href); return $buff; } - - /** - * @brief 태그의 속성에 " 를 추가 - **/ - function _fixQuotation($matches) { - $key = $matches[1]; - $val = $matches[2]; - if(substr($val,0,1)!='"') $val = '"'.$val.'"'; - return sprintf('%s=%s', $key, $val); - } - } ?> From e768a4f4cd4db1faa24190e85b8cefb363596283 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 14 Jul 2008 08:21:53 +0000 Subject: [PATCH 45/71] =?UTF-8?q?src=EA=B0=92=EC=97=90=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=20=EC=84=B8=EC=85=98=20=EC=95=85=EC=9A=A9?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=EC=B7=A8=EC=95=BD?= =?UTF-8?q?=EC=A0=90=20=EB=B3=B4=EA=B3=A0=EC=9E=90=20=EA=B8=B0=EB=A1=9D=20?= =?UTF-8?q?(=EA=B9=80=EC=83=81=EC=9B=90=EB=8B=98=20=EC=B7=A8=EC=95=BD?= =?UTF-8?q?=EC=A0=90=20=EC=A0=9C=EB=B3=B4)?= 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@4355 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/func.inc.php b/config/func.inc.php index 3e2e01f0b..209127f7e 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -416,7 +416,10 @@ // XSS 사용을 위한 이벤트 제거 $content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeJSEvent, $content); - // 이미지나 동영상등의 태그에서 src에 관리자 세션을 악용하는 코드를 제거 + /** + * 이미지나 동영상등의 태그에서 src에 관리자 세션을 악용하는 코드를 제거 + * - 취약점 제보 : 김상원님 + **/ $content = preg_replace_callback("!<([a-z]+)(.*?)>!is", removeSrcHack, $content); return $content; From ebbaf54a3d1a29e1bffde49cb96eb6c96e1074eb Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 14 Jul 2008 08:40:30 +0000 Subject: [PATCH 46/71] =?UTF-8?q?widget=EC=9D=98=20=EC=9D=B8=EC=9E=90?= =?UTF-8?q?=EC=A4=91=20url=20encode=EB=90=98=EC=96=B4=20=EC=9E=88=EB=8A=94?= =?UTF-8?q?=20=EA=B0=92=EB=95=8C=EB=AC=B8=EC=97=90=20=ED=8A=B9=EC=A0=95=20?= =?UTF-8?q?=EC=9C=84=EC=A0=AF=EC=9D=98=20=EC=88=98=EB=8F=99=20=EC=BA=90?= =?UTF-8?q?=EC=8B=9C=ED=8C=8C=EC=9D=BC=20=EC=9E=AC=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9D=B4=20=EC=95=88=EB=90=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4356 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/widget/widget.controller.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/widget/widget.controller.php b/modules/widget/widget.controller.php index 01d49be59..33383e2e9 100644 --- a/modules/widget/widget.controller.php +++ b/modules/widget/widget.controller.php @@ -190,8 +190,9 @@ $oWidget = new WidgetHandler(); $oXmlParser = new XmlParser(); - for($i=0;$iparse(trim($buff)); $args = $xml_doc->img->attrs; @@ -203,6 +204,10 @@ $cache = $args->widget_cache; if(!$sequence || !$cache) continue; + if(count($args)) { + foreach($args as $k => $v) $args->{$k} = urldecode($v); + } + // 언어별로 위젯 캐시 파일이 있을 경우 재생성 foreach($lang_list as $lang_type => $val) { $cache_file = sprintf('%s%d.%s.cache', $cache_path, $sequence, $lang_type); From 88ed871193b351f362ea44b09addcd81691774ea Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 14 Jul 2008 08:42:52 +0000 Subject: [PATCH 47/71] =?UTF-8?q?rss=5Freader=EC=9C=84=EC=A0=AF=EC=97=90?= =?UTF-8?q?=EC=84=9C=20item=EC=9D=98=20key=EA=B0=80=202=EA=B0=9C=20?= =?UTF-8?q?=EC=9D=B4=EC=83=81=20=EC=A4=91=EB=B3=B5=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EB=B0=B0=EC=97=B4=EC=9D=84=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EC=97=B4=EB=A1=9C=20=EB=B3=80=ED=99=98=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=ED=95=98=EC=97=AC=20=EA=B0=92=EC=9D=84=20?= =?UTF-8?q?=EC=A0=9C=EB=8C=80=EB=A1=9C=20=EC=96=BB=EC=A7=80=20=EB=AA=BB?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4357 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- widgets/rss_reader/rss_reader.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/widgets/rss_reader/rss_reader.class.php b/widgets/rss_reader/rss_reader.class.php index a460e3d72..81e4aa0ca 100644 --- a/widgets/rss_reader/rss_reader.class.php +++ b/widgets/rss_reader/rss_reader.class.php @@ -68,9 +68,10 @@ foreach ($items as $key => $value) { if($key >= $PAGE_LIMIT) break; - unset($item); + foreach($value as $key2 => $value2) { + if(is_array($value2)) $value2 = array_shift($value2); $item->{$key2} = $value2->body; } From 02dd06a661bd7917af3f734aa9125fb5eec51e0c Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 04:27:07 +0000 Subject: [PATCH 48/71] =?UTF-8?q?#492=20addon=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=83=88=20XML=20=ED=8F=AC=EB=A7=B7=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4358 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/addon/addon.admin.model.php | 92 ++++++++++++++++++++++------- modules/addon/lang/en.lang.php | 1 + modules/addon/lang/es.lang.php | 1 + modules/addon/lang/fr.lang.php | 1 + modules/addon/lang/jp.lang.php | 1 + modules/addon/lang/ko.lang.php | 7 ++- modules/addon/lang/ru.lang.php | 1 + modules/addon/lang/zh-CN.lang.php | 1 + modules/addon/tpl/addon_info.html | 56 ++++++++++++++++-- modules/addon/tpl/addon_list.html | 10 +++- modules/addon/tpl/setup_addon.html | 12 ++-- modules/admin/tpl/css/admin.css | 7 ++- 12 files changed, 153 insertions(+), 37 deletions(-) diff --git a/modules/addon/addon.admin.model.php b/modules/addon/addon.admin.model.php index 760c1c071..99d695e17 100644 --- a/modules/addon/addon.admin.model.php +++ b/modules/addon/addon.admin.model.php @@ -84,30 +84,82 @@ if(!$xml_obj) return; - $info->title = $xml_obj->title->body; - // 작성자 정보 - $addon_info->addon_name = $addon; - $addon_info->title = $xml_obj->title->body; - $addon_info->version = $xml_obj->attrs->version; - $addon_info->author->name = $xml_obj->author->name->body; - $addon_info->author->email_address = $xml_obj->author->attrs->email_address; - $addon_info->author->homepage = $xml_obj->author->attrs->link; - $addon_info->author->date = $xml_obj->author->attrs->date; - $addon_info->author->description = trim($xml_obj->author->description->body); + // 애드온 정보 + if($xml_obj->version && $xml_obj->attrs->version == '0.2') { + // addon format 0.2 + $addon_info->title = $xml_obj->title->body; + $addon_info->description = trim($xml_obj->description->body); + $addon_info->version = $xml_obj->version->body; + $addon_info->homepage = $xml_obj->link->body; + sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d); + $addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $addon_info->license = $xml_obj->license->body; + $addon_info->license_link = $xml_obj->license->attrs->link; + + if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author; + else $author_list = $xml_obj->author; + + foreach($author_list as $author) { + unset($author_obj); + $author_obj->name = $author->name->body; + $author_obj->email_address = $author->attrs->email_address; + $author_obj->homepage = $author->attrs->link; + $addon_info->author[] = $author_obj; + } + + } else { + // addon format 0.1 + $addon_info->addon_name = $addon; + $addon_info->title = $xml_obj->title->body; + $addon_info->description = trim($xml_obj->author->description->body); + $addon_info->version = $xml_obj->attrs->version; + sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d); + $addon_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $author_obj->name = $xml_obj->author->name->body; + $author_obj->email_address = $xml_obj->author->attrs->email_address; + $author_obj->homepage = $xml_obj->author->attrs->link; + $addon_info->author[] = $author_obj; + + } // history - if(!is_array($xml_obj->history->author)) $history[] = $xml_obj->history->author; - else $history = $xml_obj->history->author; + if($xml_obj->history) { + if(!is_array($xml_obj->history)) $history[] = $xml_obj->history; + else $history = $xml_obj->history; - foreach($history as $item) { - unset($obj); - $obj->name = $item->name->body; - $obj->email_address = $item->attrs->email_address; - $obj->homepage = $item->attrs->link; - $obj->date = $item->attrs->date; - $obj->description = $item->description->body; - $addon_info->history[] = $obj; + foreach($history as $item) { + unset($obj); + + if($item->author) { + (!is_array($item->author)) ? $obj->author_list[] = $item->author : $obj->author_list = $item->author; + + foreach($obj->author_list as $author) { + unset($author_obj); + $author_obj->name = $author->name->body; + $author_obj->email_address = $author->attrs->email_address; + $author_obj->homepage = $author->attrs->link; + $obj->author[] = $author_obj; + } + } + + $obj->name = $item->name->body; + $obj->email_address = $item->attrs->email_address; + $obj->homepage = $item->attrs->link; + $obj->version = $item->attrs->version; + $obj->date = $item->attrs->date; + $obj->description = $item->description->body; + + if($item->log) { + (!is_array($item->log)) ? $obj->log[] = $item->log : $obj->log = $item->log; + + foreach($obj->log as $log) { + $obj->logs[] = $log->body; + } + } + + $addon_info->history[] = $obj; + } } // DB에 설정된 내역을 가져온다 diff --git a/modules/addon/lang/en.lang.php b/modules/addon/lang/en.lang.php index 10cb2ab68..4029e1bcc 100644 --- a/modules/addon/lang/en.lang.php +++ b/modules/addon/lang/en.lang.php @@ -9,6 +9,7 @@ $lang->addon_info = 'Summary of this Addon'; $lang->addon_maker = 'Author of this Addon'; + $lang->addon_license = 'License'; $lang->addon_history = 'Addon History'; $lang->about_addon_mid = "Addons can select targets.
    (All targets will be selected when nothing is selected)"; diff --git a/modules/addon/lang/es.lang.php b/modules/addon/lang/es.lang.php index b814f6398..ffa27627f 100644 --- a/modules/addon/lang/es.lang.php +++ b/modules/addon/lang/es.lang.php @@ -9,6 +9,7 @@ $lang->addon_info = 'Información de Addon'; $lang->addon_maker = 'Autor de Addon'; + $lang->addon_license = 'License'; $lang->addon_history = 'Historia de Addon '; $lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.
    (모두 해제시 모든 대상에서 사용 가능합니다)"; diff --git a/modules/addon/lang/fr.lang.php b/modules/addon/lang/fr.lang.php index 148b4a59d..7feae3b77 100644 --- a/modules/addon/lang/fr.lang.php +++ b/modules/addon/lang/fr.lang.php @@ -9,6 +9,7 @@ $lang->addon_info = 'Le résumé de la Compagnon'; $lang->addon_maker = 'L\'Auteur de la Compagnon'; + $lang->addon_license = 'License'; $lang->addon_history = 'L\'Histoire de la Compagnon'; $lang->about_addon_mid = "On peut choisir des objets dans lesquels la Compagnon soit utilisé.
    (Tout sera choisi quand rien n'est choisi.)"; diff --git a/modules/addon/lang/jp.lang.php b/modules/addon/lang/jp.lang.php index 081305285..1cd5e1719 100644 --- a/modules/addon/lang/jp.lang.php +++ b/modules/addon/lang/jp.lang.php @@ -9,6 +9,7 @@ $lang->addon_info = 'アドオン情報'; $lang->addon_maker = 'アドオン作者'; + $lang->addon_license = 'License'; $lang->addon_history = '変更内容'; $lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.
    (모두 해제시 모든 대상에서 사용 가능합니다)"; diff --git a/modules/addon/lang/ko.lang.php b/modules/addon/lang/ko.lang.php index 5ec6e43f1..0b471e5fa 100644 --- a/modules/addon/lang/ko.lang.php +++ b/modules/addon/lang/ko.lang.php @@ -2,14 +2,15 @@ /** * @file ko.lang.php * @author zero (zero@nzeo.com) - * @brief 한국어 언어팩 + * @brief 한국어 언어팩 **/ - $lang->addon = "애드온"; + $lang->addon = '애드온'; $lang->addon_info = '애드온정보'; $lang->addon_maker = '애드온 제작자'; - $lang->addon_history = '변경 사항 '; + $lang->addon_license = '라이센스'; + $lang->addon_history = '변경 이력'; $lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.
    (모두 해제시 모든 대상에서 사용 가능합니다)"; $lang->about_addon = '애드온은 html결과물을 출력하기 보다 동작을 제어하는 역할을 합니다.
    원하시는 애드온을 on/ off하시는 것만으로 사이트 운영에 유용한 기능을 연동할 수 있습니다.'; diff --git a/modules/addon/lang/ru.lang.php b/modules/addon/lang/ru.lang.php index c87c767b7..8c1c02f78 100644 --- a/modules/addon/lang/ru.lang.php +++ b/modules/addon/lang/ru.lang.php @@ -9,6 +9,7 @@ $lang->addon_info = 'Информация об аддоне'; $lang->addon_maker = 'Автор аддона'; + $lang->addon_license = 'License'; $lang->addon_history = 'История аддона'; $lang->about_addon_mid = "애드온이 사용될 대상을 지정할 수 있습니다.
    (모두 해제시 모든 대상에서 사용 가능합니다)"; diff --git a/modules/addon/lang/zh-CN.lang.php b/modules/addon/lang/zh-CN.lang.php index acd4f2a73..f7f6fc7d5 100644 --- a/modules/addon/lang/zh-CN.lang.php +++ b/modules/addon/lang/zh-CN.lang.php @@ -9,6 +9,7 @@ $lang->addon_info = '插件信息'; $lang->addon_maker = '插件作者'; + $lang->addon_license = 'License'; $lang->addon_history = '更新纪录 '; $lang->about_addon_mid = "可以指定使用插件的对象。
    (全部解除表示可用在所有对象。)"; diff --git a/modules/addon/tpl/addon_info.html b/modules/addon/tpl/addon_info.html index ac66289d9..d4553c6a7 100644 --- a/modules/addon/tpl/addon_info.html +++ b/modules/addon/tpl/addon_info.html @@ -13,24 +13,72 @@ {$lang->author} - {$addon_info->author->name} + + + {$author->name} ({$author->homepage}, {$author->email_address})
    + + {$lang->homepage} - {$addon_info->author->homepage} + {$addon_info->homepage} {$lang->regdate} - {$addon_info->author->date} + {zdate($addon_info->date, 'Y-m-d')} + + + {$lang->addon_license} + + {nl2br(trim($addon_info->license))} + +

    {$addon_info->license_link}

    + + {$lang->description} - {nl2br(trim($addon_info->author->description))} + {nl2br(trim($addon_info->description))}
    + +
    +

    {$lang->addon_history}

    +
    + +
    + + + + + + + + + + +
    + {$history->version}
    + {$history->date} +
    + +

    {$author->name} ({$author->homepage} / {$author->email_address})

    + + +

    {nl2br(trim($history->description))}

    + + +
      +
    • {$log}
    • +
    + +
    +
    + + diff --git a/modules/addon/tpl/addon_list.html b/modules/addon/tpl/addon_list.html index 92915285f..409a26a50 100644 --- a/modules/addon/tpl/addon_list.html +++ b/modules/addon/tpl/addon_list.html @@ -50,8 +50,12 @@ ({$val->addon}) {$val->version} - {$val->author->name} - {$val->author->date} + + + {$author->name} + + + {zdate($val->date, 'Y-m-d')} {$val->path} {$lang->cmd_setup} @@ -64,7 +68,7 @@ - {nl2br($val->author->description)} + {nl2br($val->description)} diff --git a/modules/addon/tpl/setup_addon.html b/modules/addon/tpl/setup_addon.html index af0c7f410..cb9b8eb95 100644 --- a/modules/addon/tpl/setup_addon.html +++ b/modules/addon/tpl/setup_addon.html @@ -15,15 +15,19 @@ - {$addon_info->title} ver. {$addon_info->version} + {$addon_info->title} ver. {$addon_info->version} ({zdate($addon_info->date, 'Y-m-d')}) - - {$addon_info->author->name} + {$lang->author} + + + {$author->name} ({$author->homepage}, {$author->email_address})
    + + - {$addon_info->author->homepage} + {$addon_info->homepage} diff --git a/modules/admin/tpl/css/admin.css b/modules/admin/tpl/css/admin.css index bc70ad913..8b97208d4 100644 --- a/modules/admin/tpl/css/admin.css +++ b/modules/admin/tpl/css/admin.css @@ -125,9 +125,10 @@ h4 .view { color:#158692; padding-right:.6em; font:bold .9em Tahoma; background: .buttonTypeGo { border:none; cursor:pointer; width:24px; height:20px; position:relative; top:-1px; font:.75em Tahoma; text-align:center; background:url(../images/buttonTypeInput24.gif) no-repeat; } -#popHeadder { height:40px; background:url(../images/popupTopBg.png) repeat-x left top; padding:10px;} -#popHeadder h1 { background:url("../images/top_head_title_bg.gif") repeat-x left top; font-size:1em; border:1px solid #E3E3E2; padding:9px; color:#555555; margin:0; } -#popBody { width:600px; padding:10px; background:#ffffff;} +#popHeadder, #popHistoryHeadder { height:40px; background:url(../images/popupTopBg.png) repeat-x left top; padding:10px;} +#popHeadder h1, #popHistoryHeadder h1 { background:url("../images/top_head_title_bg.gif") repeat-x left top; font-size:1em; border:1px solid #E3E3E2; padding:9px; color:#555555; margin:0; } +#popBody, #popHistoryBody { width:600px; padding:10px; background:#ffffff;} +#popHistoryBody { height: 200px; overflow: auto; padding-right:0; } #popFooter { width:620px; background:#f7f7f6; border-top:1px solid #e8e8e7; padding:.5em 0 .5em 0; overflow:hidden; } #popFooter .close { position:relative; left:50%; margin-left:-1em; float:left;} From c2e451cbad28dcb029ab9ee24459b27e474f7559 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 05:01:41 +0000 Subject: [PATCH 49/71] =?UTF-8?q?#495=20addon=20=EC=83=88=20=ED=8F=AC?= =?UTF-8?q?=EB=A7=B7=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4359 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/autolink/conf/info.xml | 47 +++++++------ addons/blogapi/conf/info.xml | 45 ++++++------ addons/counter/conf/info.xml | 49 ++++++------- addons/lemonpen/conf/info.xml | 66 +++++++++--------- addons/member_communication/conf/info.xml | 43 ++++++------ addons/member_extra_info/conf/info.xml | 41 ++++++----- addons/mobile/conf/info.xml | 40 ++++++----- addons/openid_delegation_id/conf/info.xml | 84 ++++++++++++----------- addons/point_level_icon/conf/info.xml | 45 ++++++------ addons/rainbow_link/conf/info.xml | 45 ++++++------ addons/referer/conf/info.xml | 69 ++++++++----------- addons/resize_image/conf/info.xml | 49 ++++++------- addons/tccommentnotify/conf/info.xml | 27 ++++---- 13 files changed, 337 insertions(+), 313 deletions(-) diff --git a/addons/autolink/conf/info.xml b/addons/autolink/conf/info.xml index e800c35cc..9158cfeb1 100644 --- a/addons/autolink/conf/info.xml +++ b/addons/autolink/conf/info.xml @@ -1,35 +1,38 @@ - - - 자동 링크 애드온 - Auto Link - 自动链接插件 - auto vínculo addon - авто ссылка аддон - Auto-Link Addon - - zero - zero - zero - zero - zero - zero + + + 자동 링크 애드온 + Auto Link + 自动链接插件 + auto vínculo addon + авто ссылка аддон + Auto-Link Addon 게시글과 댓글의 내용중 http로 시작되는 일반 문자열에 자동으로 링크를 걸고 각 링크에 마우스 오버시 새창과 현재창 메뉴가 나타나도록 꾸미는 애드온입니다. - + This addon makes a link to a string that starts with http. - + 主题及评论中以http开始的字符串,自动转换为链接。并且鼠标移到链接上方时,将出现可选(新窗/本页面)提示框。 - + Los comentarios que comienzan con http naeyongjung tema común de la cadena para vincular automáticamente a colgar el puntero del ratón sobre cada uno de los vínculos y saechang Ciudad y aparecen en el menú de add-on de decoración. - + Комментарии, которые начинаются с http naeyongjung темой общей строки автоматически ссылку повесить мышь над каждой ссылке и saechang Сити и появляться на меню добавить-на украшения. - + Kommentare beginnen mit http naeyongjung Thema der gemeinsamen String automatisch Link zu hängen Sie mit der Maus über die einzelnen Links und saechang Stadt und auf dem Menü des Add-On Dekoration. - - + 0.1 + 2008-04-22 + + + zero + zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/blogapi/conf/info.xml b/addons/blogapi/conf/info.xml index 65f4a9d20..3a76ed3f5 100644 --- a/addons/blogapi/conf/info.xml +++ b/addons/blogapi/conf/info.xml @@ -1,20 +1,12 @@ - - - BlogAPI 애드온 - BlogAPI アドオン - BlogAPI - Addon for BlogAPI - Addon für BlogAPI - Addon para BlogAPI - Аддон для BlogAPI - - 제로 - Zero - zero - zero - zero - zero - zero + + + BlogAPI 애드온 + BlogAPI アドオン + BlogAPI + Addon for BlogAPI + Addon für BlogAPI + Addon para BlogAPI + Аддон для BlogAPI metaWeblog를 지원하는 blogApi애드온입니다. 사용으로 설정하시면 각 모듈마다 RSD 태그를 노출합니다. @@ -37,9 +29,9 @@ This blogApi addon supports metaWeblog. By using this option, it lets the RSD tag to be exposed to each module. URL to the api is http://setup_path/module_name/api. - RSD tag and the api will work only if u use this addon. + RSD tag and the api will work only if u use this addon. - + Diese blogApi addon metaWeblog unterstützt. Durch die Verwendung dieser Option, die es ermöglicht RSD Tag ausgesetzt werden jedes Modul. URL der api ist http://setup_path/module_name/api. @@ -57,5 +49,16 @@ URL для api - http://setup_path/module_name/api. Только выбор опции использовать включает поведение RSD тега и api. - - + 0.1 + 2007-02-28 + + + 제로 + Zero + zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/counter/conf/info.xml b/addons/counter/conf/info.xml index 4c95a6a91..862cb8e71 100644 --- a/addons/counter/conf/info.xml +++ b/addons/counter/conf/info.xml @@ -1,20 +1,12 @@ - - - 기본 카운터 애드온 - 接続カウンターアドオン - 网站访问统计 - Counter Addon - Counter Addon - Addon contador básico - Аддон для базового счетчика - - 제로 - Zero - zero - zero - zero - zero - zero + + + 기본 카운터 애드온 + 接続カウンターアドオン + 网站访问统计 + Counter Addon + Counter Addon + Addon contador básico + Аддон для базового счетчика 제로보드XE의 기본 카운터 모듈을 이용하여 접속 정보를 기록합니다. 이 애드온을 켜셔야 접속 정보 수집이 됩니다. @@ -24,24 +16,35 @@ このアドオンを「使用」に設定しておくと接続(アクセス)情報が記録されます。 - 利用ZeroboardXE的网站访问统计模块记录网站访问信息。 + 利用ZeroboardXE的网站访问统计模块记录网站访问信息。 把状态设置为"使用"时,才会记录网站访问信息. This addon logs access information based on the basic counter module within Zeroboard XE. - The access information will be collected only if you turn on this addon. + The access information will be collected only if you turn on this addon. - + Dieses Addon-Logs Zugriff auf Informationen basiert auf den grundlegenden Zähler-Modul innerhalb Zeroboard XE. Der Zugang zu Informationen wird nur erhoben, wenn Sie über dieses Addon. Este addon contador básico de Zeroboard XE permite llevar la información de acceso a la página web de los visitantes. - Es necesario activar este addon para agregar la información de acceso. + Es necesario activar este addon para agregar la información de acceso. Этот аддон пишет в лог информацию о доступе к сайту, основанную на базовом модуле счетчика в Zeroboard XE. Для сбора информации необходимо включить этот аддон. - - + 0.1 + 2007-02-28 + + + 제로 + Zero + zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/lemonpen/conf/info.xml b/addons/lemonpen/conf/info.xml index 25a0cbf52..8da4835f6 100644 --- a/addons/lemonpen/conf/info.xml +++ b/addons/lemonpen/conf/info.xml @@ -1,44 +1,48 @@ - - + + LemonPen XE 애드온 LemonPen XE插件 - LemonPen XE Addon - LemonPen XE Addon - LemonPen XE addon - LemonPen XE Addon + LemonPen XE Addon + LemonPen XE Addon + LemonPen XE addon + LemonPen XE Addon LemonPen XE アドオン - + 활성화 하시면 레몬펜을 사이트에 달 수 있습니다. + 要想在网站使用LemonPen插件,请将此插件激活。 + Sie können LemonPen auf der Website, wenn Sie diese aktivieren. + You can insert LemonPen to the site when you enable this. + Puede insertar LemonPen al sitio cuando este se activa. + Вы можете вставить LemonPen к месту, когда вы позволили это. + 機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供) + 0.1 + 2007-12-10 + + zero zero - zero - zero - zero - zero + zero + zero + zero + zero zero - 활성화 하시면 레몬펜을 사이트에 달 수 있습니다. - 要想在网站使用LemonPen插件,请将此插件激活。 - Sie können LemonPen auf der Website, wenn Sie diese aktivieren. - You can insert LemonPen to the site when you enable this. - Puede insertar LemonPen al sitio cuando este se activa. - Вы можете вставить LemonPen к месту, когда вы позволили это. - 機能をオンにすると、レモンペンをサイト上で使うことが出来ます。 (LemonPen:Openmaru社提供) + sid sid - sid - sid - sid - sid + sid + sid + sid + sid sid - 레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요. - 请输入注册LemonPen网站时,发放的sid值。 - Please input sid value that you got after registering at the LemonPen website. - Bitte geben Sie Ihre SID-Wert ein, die Sie nach Registrierung auf der Website LemonPen. - Por favor, de entrada sid valor que había que hacer después de registrarse en el sitio web LemonPen. - Введите замороженный ценности, которые вы получили после регистрации на сайте LemonPen. - レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) - + 레몬펜에서 사이트 등록시 발급받은 sid값을 입력해주세요. + 请输入注册LemonPen网站时,发放的sid值。 + Please input sid value that you got after registering at the LemonPen website. + Bitte geben Sie Ihre SID-Wert ein, die Sie nach Registrierung auf der Website LemonPen. + Por favor, de entrada sid valor que había que hacer después de registrarse en el sitio web LemonPen. + Введите замороженный ценности, которые вы получили после регистрации на сайте LemonPen. + レモンペンのサイトで発行されたsidを入力してください。 (LemonPen:Openmaru社提供) + - + \ No newline at end of file diff --git a/addons/member_communication/conf/info.xml b/addons/member_communication/conf/info.xml index a6b50a3c3..951ce2cc9 100644 --- a/addons/member_communication/conf/info.xml +++ b/addons/member_communication/conf/info.xml @@ -1,20 +1,12 @@ - - - 커뮤니케이션 - 커뮤니케이션 - 会员交流 - Communication - 커뮤니케이션 - 커뮤니케이션 - 커뮤니케이션 - - 제로 - Zero - zero - zero - zero - zero - zero + + + 커뮤니케이션 + 커뮤니케이션 + 会员交流 + Communication + 커뮤니케이션 + 커뮤니케이션 + 커뮤니케이션 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. @@ -30,7 +22,7 @@ This addon enables communication module in order to use message or friend function. Please enable this addon in case you want to use those functions. - + 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. @@ -42,5 +34,16 @@ 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. - - + 0.1 + 2008-05-28 + + + 제로 + Zero + zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/member_extra_info/conf/info.xml b/addons/member_extra_info/conf/info.xml index dc19e20db..a5bdfae58 100644 --- a/addons/member_extra_info/conf/info.xml +++ b/addons/member_extra_info/conf/info.xml @@ -1,20 +1,12 @@ - + - 회원 확장 정보 출력 - 회원 확장 정보 출력 - 用户扩展信息 - Extra Member Info - 회원 확장 정보 출력 - 회원 확장 정보 출력 - 회원 확장 정보 출력 - - 제로 - Zero - zero - zero - zero - zero - zero + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 用户扩展信息 + Extra Member Info + 회원 확장 정보 출력 + 회원 확장 정보 출력 + 회원 확장 정보 출력 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. @@ -27,7 +19,7 @@ This addon displays a member's image name, image mark. - + 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. @@ -36,5 +28,16 @@ 회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요. - - + 0.2 + 2007-02-28 + + + 제로 + Zero + zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/mobile/conf/info.xml b/addons/mobile/conf/info.xml index 9b7782257..8767ed857 100644 --- a/addons/mobile/conf/info.xml +++ b/addons/mobile/conf/info.xml @@ -1,33 +1,37 @@ - - + + 모바일XE 애드온 - Mobile XE - - zero + Mobile XE + + 모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다. + wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다. + + + This addon displays WAP tag by analyzing header information on mobile connection. + Only wml, hdml, mhtml formats are provided. + + 0.1 + 2008-06-20 + + + 제로 zero - - 모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다. - wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다. - - - This addon displays WAP tag by analyzing header information on mobile connection. - Only wml, hdml, mhtml formats are provided. - + 문자셋 - Charset - + Charset + 모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다. 문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. 기본값은 euc-kr입니다. - + utf-8 cannot be read for mobile tools. Mobile tools will display correct charset when you input charset you want. Default charset is euc-kr. - + - + \ No newline at end of file diff --git a/addons/openid_delegation_id/conf/info.xml b/addons/openid_delegation_id/conf/info.xml index 121a9cb3c..bedba16c7 100644 --- a/addons/openid_delegation_id/conf/info.xml +++ b/addons/openid_delegation_id/conf/info.xml @@ -1,62 +1,66 @@ - - + + OpenID delegation ID OpenID OpenID Delegation ID - OpenID Delegation ID + OpenID Delegation ID Delegación ID para OpenID OpenIDアドオン Аддон для делигирования доменного имени к OpenID - + + 본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다. + 꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요. + + + 可以把本人的域名当分散式身份验证系统(OpenID)来使用。 + 必须在设置中输入openid provider相关值后再使用。 + + + This addon enables you to use your own domain name as an OpenID. + Just be sure to set the values related with openid provider before using. + + + Dieses Addon ermöglicht es Ihnen, mit Ihrem eigenen Domain-Namen als OpenID. + Einfach sicher sein, dass die Werte im Zusammenhang mit OpenID-Provider, bevor Sie. + + + Utlizando su propio dominio puede usar como OpenID. + Debe utilizar luego de ingresar los valores relacionado con openid provider a través de la configuracion. + + + 保有するドメインをオープンIDとして活用することができます。 + 必ず設定で、OpenIDのプロバイダー関連情報を入力してから使用してください。 + + + Этот аддон позволяет Вам использовать Вашу доменное имя как OpenID. + Прежде, чем использовать, просто убедитесь, что установлены значения, имеющие отношение к провайдеру openid. + + 0.1 + 2007-02-28 + + 제로 zero zero - zero + zero zero Zero Zero - - 본인의 도메인을 사용하여 오픈아이디로 활용할 수 있도록 합니다. - 꼭 설정을 통해서 openid provider관련 값을 입력후 사용해주세요. - - - 可以把本人的域名当分散式身份验证系统(OpenID)来使用。 - 必须在设置中输入openid provider相关值后再使用。 - - - This addon enables you to use your own domain name as an OpenID. - Just be sure to set the values related with openid provider before using. - - - Dieses Addon ermöglicht es Ihnen, mit Ihrem eigenen Domain-Namen als OpenID. - Einfach sicher sein, dass die Werte im Zusammenhang mit OpenID-Provider, bevor Sie. - - - Utlizando su propio dominio puede usar como OpenID. - Debe utilizar luego de ingresar los valores relacionado con openid provider a través de la configuracion. - - - 保有するドメインをオープンIDとして活用することができます。 - 必ず設定で、OpenIDのプロバイダー関連情報を入力してから使用してください。 - - - Этот аддон позволяет Вам использовать Вашу доменное имя как OpenID. - Прежде, чем использовать, просто убедитесь, что установлены значения, имеющие отношение к провайдеру openid. - + server server server - server + server Servidor server server openid.server 값을 입력해 주세요. 请输入 openid.server 值。 Please input your openid.server value. - Bitte geben Sie Ihre openid.server Wert. + Bitte geben Sie Ihre openid.server Wert. Ingrese el valor del openid.server. openid.server の値を入力してください。 Пожалуйста, введите Ваше значение openid сервера. @@ -64,7 +68,7 @@ delegate delegate - delegate + delegate delegate delegado delegate @@ -72,7 +76,7 @@ openid.delegate값을 입력해주세요. 请输入 openid.delegate 值。 Please input your openid.delegate value. - Bitte geben Sie Ihre openid.delegate Wert. + Bitte geben Sie Ihre openid.delegate Wert. Ingresar el valor del openid.delegate openid.delegate の値を入力してください。 Пожалуйста, введите Ваше значение openid делегата. @@ -81,17 +85,17 @@ xrds xrds xrds - xrds + xrds xrds xrds xrds X-XRDS-Location값을 입력해주세요. 请输入 X-XRDS-Location 值。 Please input your X-XRDS-Location value. - Bitte geben Sie Ihre X-XRDS-Standort Wert. + Bitte geben Sie Ihre X-XRDS-Standort Wert. Ingresar el valor de X-XRDS-Location X-XRDS-Location の値を入力してください。 Пожалуйста, введите Ваше значение X-XRDS-Локации. - + \ No newline at end of file diff --git a/addons/point_level_icon/conf/info.xml b/addons/point_level_icon/conf/info.xml index 4ad8d6c69..d78ffba65 100644 --- a/addons/point_level_icon/conf/info.xml +++ b/addons/point_level_icon/conf/info.xml @@ -1,20 +1,12 @@ - - - 포인트 레벨 아이콘 표시 애드온 - 积分级别图标 - ポイントレベルアイコン表示アドオン - Point Level Icon - Point-Level-Symbol - Addon para mostar el nivel del ícono - Аддон для отображения иконки уровня - - 제로 - Zero - Zero - zero - zero - zero - zero + + + 포인트 레벨 아이콘 표시 애드온 + 积分级别图标 + ポイントレベルアイコン表示アドオン + Point Level Icon + Point-Level-Symbol + Addon para mostar el nivel del ícono + Аддон для отображения иконки уровня 포인트 시스템을 사용중일 경우 사용자 이름 앞에 레벨 아이콘을 표시하도록 합니다. 레벨 아이콘은 모듈 > 포인트시스템에서 선택 가능합니다. @@ -31,11 +23,11 @@ This addon displays level icon in front of the user name when you are using the point system. You can choose the level icon on Module > Point System. - + Dieses Addon zeigt Level Icon vor dem Benutzernamen, wenn Sie die Punkte-System. Sie können wählen, der Level Icon in Modul> Point-System. - + Este addon muestra el nivel del ícono delante del nombre del usuario cuando es usado el sistema de puntos. Tu puedes elegir los icono de cada nivel en el módulo > Sistema de Puntos. @@ -43,5 +35,16 @@ Этот аддон отображает иконку уровня напротив имени пользователя, когда используется система поинтов. Вы можете выбрать иконку уровня на Модуле Системы Поинтов. - - + 0.1 + 2007-07-26 + + + 제로 + Zero + Zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/rainbow_link/conf/info.xml b/addons/rainbow_link/conf/info.xml index 5f16a09cc..1afb115f2 100644 --- a/addons/rainbow_link/conf/info.xml +++ b/addons/rainbow_link/conf/info.xml @@ -1,20 +1,12 @@ - - - 레인보우 링크 애드온 - Rainbow链接 - Rainbow Link Addon - Rainbow Link Addon - Adición Enlace Arco Iris - レインボーリンクアドオン - Аддон для радужных ссылок - - dynamicdrive.com - dynamicdrive.com - dynamicdrive.com - dynamicdrive.com - dynamicdrive.com - dynamicdrive.com - dynamicdrive.com + + + 레인보우 링크 애드온 + Rainbow链接 + Rainbow Link Addon + Rainbow Link Addon + Adición Enlace Arco Iris + レインボーリンクアドオン + Аддон для радужных ссылок rainbow.js를 header에 추가하여 링크가 걸린 글의 색을 무지개색으로 나타냅니다. 이 애드온의 rainbow.js는 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>에 저작권이 있습니다. @@ -27,13 +19,13 @@ This addon will insert the "rainbow.js" file to the header, which will make the linked text to get the chameleon(rainbow) color change effect. "rainbow.js" Copyrightⓒ2007 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>. - + Dieses Addon wird ersetzt durch die "rainbow.js"-Datei auf den Kopf, wodurch der verlinkten Text, um das Chamäleon (Regenbogen) Farbwechsel-Effekt. "rainbow.js" Copyright ⓒ 2007 <a href="http://www.dynamicdrive.com" target="_blank"> Dynamicdrive.com </a>. incluye rainbow.js en header para mostrar enlaces en colores de arco iris. - <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a> tiene derecho de autor sobre rainbow.js + <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a> tiene derecho de autor sobre rainbow.js 「rainbow.js」をヘッダーに追加し、リンクされている文字列の色を虹色で表示します。この機能拡張の「 rainbow.js」は「<a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>」に著作権があります。 @@ -42,5 +34,16 @@ Этот аддон добавляет файл с именем "rainbow.js" в заголовки HTML, и тогда связанный текс приобретает эффект смены цвета, подобно радуге или хамелеону. "rainbow.js" Copyrightⓒ2007 <a href="http://www.dynamicdrive.com" target="_blank">Dynamicdrive.com</a>. - - + 0.1 + 2007-02-28 + + + dynamicdrive.com + dynamicdrive.com + dynamicdrive.com + dynamicdrive.com + dynamicdrive.com + dynamicdrive.com + dynamicdrive.com + + \ No newline at end of file diff --git a/addons/referer/conf/info.xml b/addons/referer/conf/info.xml index c1c540a40..7bb8c674a 100644 --- a/addons/referer/conf/info.xml +++ b/addons/referer/conf/info.xml @@ -1,40 +1,29 @@ - - - 리퍼러 수집기 - リファラー コレクター - 反向链接统计 - Referer Collector - Referer Collector - Referer Collector - Сборщик рефералов - - haneul - Haneul - haneul - haneul - haneul - haneul - haneul - - Referer log를 수집합니다. - - - リファラーログを収集します。 - - - 记录反向链接统计数据。 - - - Collect referer log and statistics. - - - Sammeln Sie Referer-Log und Statistik. - - - Recoger referer log y estadísticas. - - - Собирает лог рефералов и статистику. - - - + + + 리퍼러 수집기 + リファラー コレクター + 反向链接统计 + Referer Collector + Referer Collector + Referer Collector + Сборщик рефералов + Referer log를 수집합니다. + リファラーログを収集します。 + 记录反向链接统计数据。 + Collect referer log and statistics. + Sammeln Sie Referer-Log und Statistik. + Recoger referer log y estadísticas. + Собирает лог рефералов и статистику. + 0.1 + 2007-11-26 + + + haneul + Haneul + haneul + haneul + haneul + haneul + haneul + + \ No newline at end of file diff --git a/addons/resize_image/conf/info.xml b/addons/resize_image/conf/info.xml index 1ee0462ba..e5985dccf 100644 --- a/addons/resize_image/conf/info.xml +++ b/addons/resize_image/conf/info.xml @@ -1,37 +1,40 @@ - - - 본문내 이미지 조절 애드온 - 内容区图片缩放插件 - Image Resizer - Imagen de control add-on bonmunnae - Image контроля добавить-на bonmunnae - Image-Add-on bonmunnae - - zero - zero - zero - zero - zero - zero - zero - zero + + + 본문내 이미지 조절 애드온 + 内容区图片缩放插件 + Image Resizer + Imagen de control add-on bonmunnae + Image контроля добавить-на bonmunnae + Image-Add-on bonmunnae 본문내에 삽입된 이미지의 크기를 본문크기에 맞게 하고 클릭시 원본을 보여주는 애드온입니다. 自动调整主题内容区内的图片大小,点击将显示原始大小的插件。 - + This addon resizes images inserted in the article, and shows original image when you click on them. - + La imagen corporal se inserta dentro del cuerpo para que se adapte al tamaño de la muestra original cuando hago clic en los add-ons. - + Орган изображение вставляется внутрь тела с учетом размера первоначального шоу, когда я нажимаю на надстройки. - + Body Bild eingefügt im Inneren des Körpers zu passen die Größe des Originals zeigen, wenn ich darauf klicke auf das Add-ons. - - + 0.1 + 2008-04-22 + + + zero + zero + zero + zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/addons/tccommentnotify/conf/info.xml b/addons/tccommentnotify/conf/info.xml index ede120376..1444320d9 100644 --- a/addons/tccommentnotify/conf/info.xml +++ b/addons/tccommentnotify/conf/info.xml @@ -1,15 +1,14 @@ - + - 댓글알리미 애드온 - Comment Notifier Addon - - haneul - haneul - - 댓글알리미를 지원하는 애드온입니다. - - - This addon enables Comment Notifier module. - - - + 댓글알리미 애드온 + Comment Notifier Addon + 댓글알리미를 지원하는 애드온입니다. + This addon enables Comment Notifier module. + 0.2 + 2008-06-02 + + + haneul + haneul + + \ No newline at end of file From 6664cfd28f24c133fa3971b03057fc4abac33b56 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 06:05:11 +0000 Subject: [PATCH 50/71] =?UTF-8?q?#495=20module=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=83=88=20XML=20=ED=8F=AC=EB=A7=B7=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4360 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/module/lang/en.lang.php | 1 + modules/module/lang/es.lang.php | 1 + modules/module/lang/jp.lang.php | 1 + modules/module/lang/ko.lang.php | 3 +- modules/module/lang/ru.lang.php | 1 + modules/module/lang/zh-CN.lang.php | 1 + modules/module/module.model.php | 100 +++++++++++++++++++++------- modules/module/tpl/module_info.html | 62 +++++++++++++++-- modules/module/tpl/module_list.html | 10 ++- 9 files changed, 147 insertions(+), 33 deletions(-) diff --git a/modules/module/lang/en.lang.php b/modules/module/lang/en.lang.php index 48bd027bc..cb32ff66c 100644 --- a/modules/module/lang/en.lang.php +++ b/modules/module/lang/en.lang.php @@ -12,6 +12,7 @@ $lang->add_shortcut = "Add Shortcuts"; $lang->module_action = "Actions"; $lang->module_maker = "Module Developer"; + $lang->module_license = 'License'; $lang->module_history = "Update history"; $lang->category_title = "Category Title"; $lang->header_text = 'Header Text'; diff --git a/modules/module/lang/es.lang.php b/modules/module/lang/es.lang.php index f8330d0c9..dffe52186 100644 --- a/modules/module/lang/es.lang.php +++ b/modules/module/lang/es.lang.php @@ -12,6 +12,7 @@ $lang->add_shortcut = "Añadir en el menú del administrador"; $lang->module_action = "Acción"; $lang->module_maker = "Módulo del desarrollador"; + $lang->module_license = 'License'; $lang->module_history = "Historia de actualización"; $lang->category_title = "Título de categoría"; $lang->header_text = 'Encabezado'; diff --git a/modules/module/lang/jp.lang.php b/modules/module/lang/jp.lang.php index 1b5c4cda8..fbead5517 100644 --- a/modules/module/lang/jp.lang.php +++ b/modules/module/lang/jp.lang.php @@ -12,6 +12,7 @@ $lang->add_shortcut = "管理者メニューに追加する"; $lang->module_action = "動作"; $lang->module_maker = "モジュール作者"; + $lang->module_license = 'License'; $lang->module_history = "変更内容 "; $lang->category_title = "カテゴリ名"; $lang->header_text = 'ヘッダー内容'; diff --git a/modules/module/lang/ko.lang.php b/modules/module/lang/ko.lang.php index 9bb059f6d..b4502dd91 100644 --- a/modules/module/lang/ko.lang.php +++ b/modules/module/lang/ko.lang.php @@ -12,7 +12,8 @@ $lang->add_shortcut = "관리자 메뉴에 추가"; $lang->module_action = "동작"; $lang->module_maker = "모듈 제작자"; - $lang->module_history = "변경 사항 "; + $lang->module_license = '라이센스'; + $lang->module_history = '변경 이력 '; $lang->category_title = "분류 이름"; $lang->header_text = '상단 내용'; $lang->footer_text = '하단 내용'; diff --git a/modules/module/lang/ru.lang.php b/modules/module/lang/ru.lang.php index 17f05a66c..39870fa44 100644 --- a/modules/module/lang/ru.lang.php +++ b/modules/module/lang/ru.lang.php @@ -12,6 +12,7 @@ $lang->add_shortcut = "Добавить ярлыки"; $lang->module_action = "Действия"; $lang->module_maker = "Разработчик модуля"; + $lang->module_license = 'License'; $lang->module_history = "История обновлений"; $lang->category_title = "Название категории"; $lang->header_text = 'Верхний колонтитул'; diff --git a/modules/module/lang/zh-CN.lang.php b/modules/module/lang/zh-CN.lang.php index 46fe2b022..6bae1a39c 100644 --- a/modules/module/lang/zh-CN.lang.php +++ b/modules/module/lang/zh-CN.lang.php @@ -12,6 +12,7 @@ $lang->add_shortcut = "添加到快捷菜单"; $lang->module_action = "动作"; $lang->module_maker = "模块作者"; + $lang->module_license = 'License'; $lang->module_history = "更新事项 "; $lang->category_title = "分类名称"; $lang->header_text = '上端内容'; diff --git a/modules/module/module.model.php b/modules/module/module.model.php index 30f5f6767..d3e75a860 100644 --- a/modules/module/module.model.php +++ b/modules/module/module.model.php @@ -196,7 +196,7 @@ } /** - * @brief 주어진 곳의 스킨 목록을 구함 + * @brief 주어진 곳의 스킨 목록을 구함 * 스킨과 skin.xml 파일을 분석 정리한 결과를 return **/ function getSkins($path) { @@ -445,7 +445,7 @@ return $info; } - @include($cache_file); + @include($cache_file); return $info; } @@ -495,31 +495,83 @@ if(!$xml_obj) return; - $info->title = $xml_obj->title->body; + // 모듈 정보 + if($xml_obj->version && $xml_obj->attrs->version == '0.2') { + // module format 0.2 + $module_info->title = $xml_obj->title->body; + $module_info->description = $xml_obj->description->body; + $module_info->version = $xml_obj->version->body; + $module_info->homepage = $xml_obj->link->body; + $module_info->category = $xml_obj->category->body; + if(!$module_info->category) $module_info->category = 'service'; + sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d); + $module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $module_info->license = $xml_obj->license->body; + $module_info->license_link = $xml_obj->license->attrs->link; - // 작성자 정보 - $module_info->title = $xml_obj->title->body; - $module_info->version = $xml_obj->attrs->version; - $module_info->category = $xml_obj->attrs->category; - if(!$module_info->category) $module_info->category = 'service'; - $module_info->author->name = $xml_obj->author->name->body; - $module_info->author->email_address = $xml_obj->author->attrs->email_address; - $module_info->author->homepage = $xml_obj->author->attrs->link; - $module_info->author->date = $xml_obj->author->attrs->date; - $module_info->author->description = $xml_obj->author->description->body; + if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author; + else $author_list = $xml_obj->author; - // history - if(!is_array($xml_obj->history->author)) $history[] = $xml_obj->history->author; - else $history = $xml_obj->history->author; + foreach($author_list as $author) { + unset($author_obj); + $author_obj->name = $author->name->body; + $author_obj->email_address = $author->attrs->email_address; + $author_obj->homepage = $author->attrs->link; + $module_info->author[] = $author_obj; + } - foreach($history as $item) { - unset($obj); - $obj->name = $item->name->body; - $obj->email_address = $item->attrs->email_address; - $obj->homepage = $item->attrs->link; - $obj->date = $item->attrs->date; - $obj->description = $item->description->body; - $module_info->history[] = $obj; + } else { + // module format 0.1 + $module_info->title = $xml_obj->title->body; + $module_info->description = $xml_obj->author->description->body; + $module_info->version = $xml_obj->attrs->version; + $module_info->category = $xml_obj->attrs->category; + if(!$module_info->category) $module_info->category = 'service'; + sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d); + $module_info->date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $author_obj->name = $xml_obj->author->name->body; + $author_obj->email_address = $xml_obj->author->attrs->email_address; + $author_obj->homepage = $xml_obj->author->attrs->link; + $module_info->author[] = $author_obj; + } + + // history + if($xml_obj->history) { + if(!is_array($xml_obj->history)) $history[] = $xml_obj->history; + else $history = $xml_obj->history; + + foreach($history as $item) { + unset($obj); + + if($item->author) { + (!is_array($item->author)) ? $obj->author_list[] = $item->author : $obj->author_list = $item->author; + + foreach($obj->author_list as $author) { + unset($author_obj); + $author_obj->name = $author->name->body; + $author_obj->email_address = $author->attrs->email_address; + $author_obj->homepage = $author->attrs->link; + $obj->author[] = $author_obj; + } + } + + $obj->name = $item->name->body; + $obj->email_address = $item->attrs->email_address; + $obj->homepage = $item->attrs->link; + $obj->version = $item->attrs->version; + $obj->date = $item->attrs->date; + $obj->description = $item->description->body; + + if($item->log) { + (!is_array($item->log)) ? $obj->log[] = $item->log : $obj->log = $item->log; + + foreach($obj->log as $log) { + $obj->logs[] = $log->body; + } + } + + $module_info->history[] = $obj; + } } // action 정보를 얻어서 admin_index를 추가 diff --git a/modules/module/tpl/module_info.html b/modules/module/tpl/module_info.html index 86384a94a..8301904a9 100644 --- a/modules/module/tpl/module_info.html +++ b/modules/module/tpl/module_info.html @@ -13,24 +13,76 @@ {$lang->author} - {$module_info->author->name} + + + {$author->name} ({$author->homepage}, {$author->email_address})
    + + + {$lang->homepage} - {$module_info->author->homepage} + {$module_info->homepage} + {$lang->regdate} - {$module_info->author->date} + {zdate($module_info->date, 'Y-m-d')} + + + {$lang->module_license} + + {nl2br(trim($module_info->license))} + +

    {$module_info->license_link}

    + + + + {$lang->description} - {nl2br(trim($module_info->author->description))} + {nl2br(trim($module_info->description))} + +
    +

    {$lang->module_history}

    +
    + +
    + + + + + + + + + + +
    + {$history->version}
    + {$history->date} +
    + +

    {$author->name} ({$author->homepage} / {$author->email_address})

    + + +

    {nl2br(trim($history->description))}

    + + +
      +
    • {$log}
    • +
    + +
    +
    + + + \ No newline at end of file diff --git a/modules/module/tpl/module_list.html b/modules/module/tpl/module_list.html index fa566f3ef..d0caee098 100644 --- a/modules/module/tpl/module_list.html +++ b/modules/module/tpl/module_list.html @@ -45,12 +45,16 @@ {$val->title} ({$val->module}) - {$val->title} ({$val->module}) + {$val->title} ({$val->module}) {$val->version} - {$val->author->name} - {$val->author->date} + + + {$author->name} + + + {zdate($val->date, 'Y-m-d')} {$val->created_table_count}/{$val->table_count} From a6983c449265431a964813b4aa61806d1af59912 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 06:43:11 +0000 Subject: [PATCH 51/71] =?UTF-8?q?#495=20module=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=83=88=20XML=20=ED=8F=AC=EB=A7=B7=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4361 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/tpl/layout.html | 2 +- modules/module/tpl/module_list.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/admin/tpl/layout.html b/modules/admin/tpl/layout.html index a3fe864ab..50a94b785 100644 --- a/modules/admin/tpl/layout.html +++ b/modules/admin/tpl/layout.html @@ -33,7 +33,7 @@
  • actions))-->class="on" onclick="location.href='{getUrl('','module','admin','act',$v->admin_index_act)}'; return false;"> - {$v->title} + {$v->title}
  • diff --git a/modules/module/tpl/module_list.html b/modules/module/tpl/module_list.html index d0caee098..464210ce4 100644 --- a/modules/module/tpl/module_list.html +++ b/modules/module/tpl/module_list.html @@ -43,7 +43,7 @@ - {$val->title} ({$val->module}) + {$val->title} ({$val->module}) {$val->title} ({$val->module}) From ed6b132fe86f106c0470abf9d3f10f142b47de8b Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 06:43:51 +0000 Subject: [PATCH 52/71] =?UTF-8?q?#495=20module=20=EC=83=88=20=ED=8F=AC?= =?UTF-8?q?=EB=A7=B7=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4362 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/addon/conf/info.xml | 44 +++++++------- modules/admin/conf/info.xml | 24 ++++---- modules/board/conf/info.xml | 24 ++++---- modules/comment/conf/info.xml | 50 +++++++++------- modules/communication/conf/info.xml | 26 ++++---- modules/counter/conf/info.xml | 22 ++++--- modules/document/conf/info.xml | 24 ++++---- modules/editor/conf/info.xml | 24 ++++---- modules/file/conf/info.xml | 24 ++++---- modules/importer/conf/info.xml | 24 ++++---- modules/install/conf/info.xml | 24 ++++---- modules/integration_search/conf/info.xml | 66 ++++++++++---------- modules/krzip/conf/info.xml | 64 ++++++++++---------- modules/layout/conf/info.xml | 26 ++++---- modules/lifepod/conf/info.xml | 29 +++++---- modules/member/conf/info.xml | 26 ++++---- modules/menu/conf/info.xml | 28 +++++---- modules/message/conf/info.xml | 28 +++++---- modules/module/conf/info.xml | 40 +++++++------ modules/opage/conf/info.xml | 28 +++++---- modules/page/conf/info.xml | 28 +++++---- modules/point/conf/info.xml | 76 +++++++++++++----------- modules/poll/conf/info.xml | 28 +++++---- modules/referer/conf/info.xml | 22 ++++--- modules/rss/conf/info.xml | 28 +++++---- modules/session/conf/info.xml | 40 +++++++------ modules/spamfilter/conf/info.xml | 28 +++++---- modules/springnote/conf/info.xml | 38 ++++++------ modules/tag/conf/info.xml | 28 +++++---- modules/tccommentnotify/conf/info.xml | 14 +++-- modules/trackback/conf/info.xml | 28 +++++---- modules/widget/conf/info.xml | 28 +++++---- 32 files changed, 579 insertions(+), 452 deletions(-) diff --git a/modules/addon/conf/info.xml b/modules/addon/conf/info.xml index 5626239e4..bbe4c58b6 100644 --- a/modules/addon/conf/info.xml +++ b/modules/addon/conf/info.xml @@ -1,26 +1,30 @@ - - - 애드온 - Addon - Addon - 插件 - アドオン - Additions - Аддоны - - 제로 - zero - zero - zero - Zero - Zero - Zero + + + 애드온 + Addon + Addon + 插件 + アドオン + Additions + Аддоны 애드온을 등록하거나 사용/미사용을 설정하는 애드온 관리 모듈입니다. This module is for maintaining addons which can toggle use and disuse states. Este Módulo es para agregar Addons, como también el manejo de ellos. 登录插件或设置启用/禁用插件的管理模块。 アドオンの「登録、使用、未使用」などを設定する管理モジュールです。 - Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. + Ce module est pour les Additions de maintien qui peuvent basculer des états d'utilisation et de désuétude. Этот модуль служит для управления аддонами, использование которых Вы можете включать и выключать. - - + 0.1 + 2007-02-28 + manager + + + 제로 + zero + zero + zero + Zero + Zero + Zero + + \ No newline at end of file diff --git a/modules/admin/conf/info.xml b/modules/admin/conf/info.xml index 51667c631..c75bd3b0b 100644 --- a/modules/admin/conf/info.xml +++ b/modules/admin/conf/info.xml @@ -1,23 +1,27 @@ - - + + 관리자 모듈 Administrator Module Módulo del administrador 管理员模块 管理者用モジュール Модуль администратора - + 각 모듈들의 기능을 나열하고 관리자용 레이아웃을 적용하여 관리 기능을 사용할 수 있도록 하는 모듈입니다. + This module shows a list of features of each module, and enables you to use a quite few of managers by applying layout for 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 + 2007-02-28 + base + + 제로 zero zero zero Zero zero - 각 모듈들의 기능을 나열하고 관리자용 레이아웃을 적용하여 관리 기능을 사용할 수 있도록 하는 모듈입니다. - This module shows a list of features of each module, and enables you to use a quite few of managers by applying layout for 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. - 列出各模块的功能并使用管理员布局,可以让其使用管理功能的模块。 - 各モジュールの機能を羅列し、管理者用のレイアウトを適用させ、管理機能が使用できるようにするモジュールです。 - Этот модуль показывает список возможностей каждого модуля, и позволяет Вам использовать несколько менеджеров, применяя лейаут для администратора. - + \ No newline at end of file diff --git a/modules/board/conf/info.xml b/modules/board/conf/info.xml index 36c7c5d92..17a77d529 100644 --- a/modules/board/conf/info.xml +++ b/modules/board/conf/info.xml @@ -1,23 +1,27 @@ - - + + 게시판 版面 Board Tablero 掲示板 Форум - + 게시판의 기능을 담당하는 모듈. 게시판의 생성/추가 관리등의 관리자 기능도 포함합니다. + 给用户提供相应版面功能,将包含版面的生成/添加及版面管理等管理员功能。 + Module in charge of function of the board. Also includes administrator functions such as creating/managing boards. + Módulo para la función del tablero. Incluye funciones de administración como crear/ agregar o el manejo de los tableros. + 掲示板の機能を担うモジュールです。掲示板の生成・追加・管理などの管理者機能も含まれています。 + Модуль для функционирования форума. Также включает в себя функции администратора такие как создание/управление форумами. + 0.1 + 2007-02-28 + service + + 제로 zero zero zero Zero zero - 게시판의 기능을 담당하는 모듈. 게시판의 생성/추가 관리등의 관리자 기능도 포함합니다. - 给用户提供相应版面功能,将包含版面的生成/添加及版面管理等管理员功能。 - Module in charge of function of the board. Also includes administrator functions such as creating/managing boards. - Módulo para la función del tablero. Incluye funciones de administración como crear/ agregar o el manejo de los tableros. - 掲示板の機能を担うモジュールです。掲示板の生成・追加・管理などの管理者機能も含まれています。 - Модуль для функционирования форума. Также включает в себя функции администратора такие как создание/управление форумами. - + \ No newline at end of file diff --git a/modules/comment/conf/info.xml b/modules/comment/conf/info.xml index 082db878a..fed10ca33 100644 --- a/modules/comment/conf/info.xml +++ b/modules/comment/conf/info.xml @@ -1,23 +1,27 @@ - - - 댓글 - コメント - 评论 - Comment - Commentarios - Комментарии - - 제로 - Zero - zero - zero - zero - zero - 게시판이나 블로그등의 댓글을 관리하는 모듈입니다. - 掲示板やブログなどのコメントを管理するモジュールです。 - 管理版面或博客评论的模块。 - Module for managing board/blog's comments - Es el módulo para manejar commentarios en blog o boletínes. - Модуль для управления комментариями форума/блога. - - + + + 댓글 + コメント + 评论 + Comment + Commentarios + Комментарии + 게시판이나 블로그등의 댓글을 관리하는 모듈입니다. + 掲示板やブログなどのコメントを管理するモジュールです。 + 管理版面或博客评论的模块。 + Module for managing board/blog's comments + Es el módulo para manejar commentarios en blog o boletínes. + Модуль для управления комментариями форума/блога. + 0.1 + 2007-02-28 + utility + + + 제로 + Zero + zero + zero + zero + zero + + \ No newline at end of file diff --git a/modules/communication/conf/info.xml b/modules/communication/conf/info.xml index 868621ed2..c4f26bb7b 100644 --- a/modules/communication/conf/info.xml +++ b/modules/communication/conf/info.xml @@ -1,14 +1,18 @@ - - - 커뮤니케이션 - 会员交流 + + + 커뮤니케이션 + 会员交流 Communication - - 제로 + 회원들간의 쪽지, 친구기능을 담당하는 모듈입니다. + 管理在线会员间短信息及好友功能的模块。 + This module is for managing message, friend functions. + 0.1 + 2008-05-30 + utility + + + 제로 Zero Zero - 회원들간의 쪽지, 친구기능을 담당하는 모듈입니다. - 管理在线会员间短信息及好友功能的模块。 - This module is for managing message, friend functions. - - + + \ No newline at end of file diff --git a/modules/counter/conf/info.xml b/modules/counter/conf/info.xml index 6fc070104..01dbb31f3 100644 --- a/modules/counter/conf/info.xml +++ b/modules/counter/conf/info.xml @@ -1,23 +1,27 @@ - - + + 기본 카운터 访问统计 Basic Counter Contador Básico デフォルト接続カウンター Базовый счетчик - + 기본 접속 통계 프로그램입니다. + 默认访问统计程序。 + Basic connection statistics program. + Programa básico para la estadística de la conección. + デフォルト接続統計のプログラムです。 + Базовая программа статистики подключений. + 0.1 + 2007-02-28 + accessory + + 제로 Zero Zero zero Zero zero - 기본 접속 통계 프로그램입니다. - 默认访问统计程序。 - Basic connection statistics program. - Programa básico para la estadística de la conección. - デフォルト接続統計のプログラムです。 - Базовая программа статистики подключений. diff --git a/modules/document/conf/info.xml b/modules/document/conf/info.xml index 1f5eeb249..a4ae58316 100644 --- a/modules/document/conf/info.xml +++ b/modules/document/conf/info.xml @@ -1,23 +1,27 @@ - - + + 문서 Document Documento 主题 ドキュメント Документы - + 게시판, 블로그등의 모듈에서 사용되는 문서를 관리하는 모듈입니다. + Module for managing documents used in board, blog, etc. + Módulo para manejar los documentos en blog y en los tableros. + 管理版面,博客等处主题的模块。 + 掲示板、ブログなどのモジュールで使用されるドキュメント(書き込み)を管理するモジュルです。 + Модуль для управления документами в форуме, блоге и прочее. + 0.1 + 2007-02-28 + utility + + 제로 Zero zero zero Zero zero - 게시판, 블로그등의 모듈에서 사용되는 문서를 관리하는 모듈입니다. - Module for managing documents used in board, blog, etc. - Módulo para manejar los documentos en blog y en los tableros. - 管理版面,博客等处主题的模块。 - 掲示板、ブログなどのモジュールで使用されるドキュメント(書き込み)を管理するモジュルです。 - Модуль для управления документами в форуме, блоге и прочее. - + \ No newline at end of file diff --git a/modules/editor/conf/info.xml b/modules/editor/conf/info.xml index 163eaed58..0e9574302 100644 --- a/modules/editor/conf/info.xml +++ b/modules/editor/conf/info.xml @@ -1,23 +1,27 @@ - - + + 위지윅 에디터 WYSIWYG Editor Editor WYSIWYG 网页编辑器 ウイジウイグエディター WYSIWYG-редактор - + 위지윅 에디터를 출력하거나 에디터 컴포넌트들을 관리/중계하는 모듈입니다. + Module for displaying WYSIWYG editor and managing/relaying editor components. + Módulo para mostrar en la pantalla el editor de WYSIWYG y para el manejo/relato de los componentes del editor. + 显示网页编辑器或管理/传递编辑器组件的模块。 + ウイジウイグエディター を出力したり、エディターのコンポーネントを管理・中継するモジュールです。 + Модуль для отображения WYSIWYG-редактора и управления/смены комментариев редактора. + 0.1 + 2007-02-28 + utility + + 제로 Zero zero zero Zero zero - 위지윅 에디터를 출력하거나 에디터 컴포넌트들을 관리/중계하는 모듈입니다. - Module for displaying WYSIWYG editor and managing/relaying editor components. - Módulo para mostrar en la pantalla el editor de WYSIWYG y para el manejo/relato de los componentes del editor. - 显示网页编辑器或管理/传递编辑器组件的模块。 - ウイジウイグエディター を出力したり、エディターのコンポーネントを管理・中継するモジュールです。 - Модуль для отображения WYSIWYG-редактора и управления/смены комментариев редактора. - + \ No newline at end of file diff --git a/modules/file/conf/info.xml b/modules/file/conf/info.xml index 97f1a9c31..ee1b44c6f 100644 --- a/modules/file/conf/info.xml +++ b/modules/file/conf/info.xml @@ -1,23 +1,27 @@ - - + + 첨부파일 上传附件 Attachment Adjuntar archivos 添付ファイル Вложения - + 첨부 파일 관리하는 모듈입니다. + 管理附件的模块。 + Module for managing attachments. + Módulo para manejar los archivos adjuntos. + 添付ファイルを管理するモジュールです。 + Модуль для управления вложениями. + 0.1 + 2007-02-28 + utility + + 제로 zero Zero zero Zero zero - 첨부 파일 관리하는 모듈입니다. - 管理附件的模块。 - Module for managing attachments. - Módulo para manejar los archivos adjuntos. - 添付ファイルを管理するモジュールです。 - Модуль для управления вложениями. - + \ No newline at end of file diff --git a/modules/importer/conf/info.xml b/modules/importer/conf/info.xml index 5c005e528..68f68d456 100644 --- a/modules/importer/conf/info.xml +++ b/modules/importer/conf/info.xml @@ -1,23 +1,27 @@ - - + + 제로보드 데이터 이전 Zeroboard data transferation 数据导入 ZBデータ移転 Transferencia de los datos de ZeroBoard Трансферинг данных Zeroboard - + XML파일을 이용하여 회원정보 또는 게시판등의 데이터를 입력합니다. + Inputting member information or board's data using XML file. + 利用XML文件导入会员信息或版面数据。 + XMLファイルを用いて会員情報または掲示板などの情報を入力します。 + Ingresa la información del usuario o los datos del tablero utilizando el archivo XML. + Запись информации пользователей или форума, используя XML-файл. + 0.2 + 2007-12-13 + accessory + + 제로 Zero zero Zero Zero zero - XML파일을 이용하여 회원정보 또는 게시판등의 데이터를 입력합니다. - Inputting member information or board's data using XML file. - 利用XML文件导入会员信息或版面数据。 - XMLファイルを用いて会員情報または掲示板などの情報を入力します。 - Ingresa la información del usuario o los datos del tablero utilizando el archivo XML. - Запись информации пользователей или форума, используя XML-файл. - + \ No newline at end of file diff --git a/modules/install/conf/info.xml b/modules/install/conf/info.xml index e32c55f3a..e0f2fb6ed 100644 --- a/modules/install/conf/info.xml +++ b/modules/install/conf/info.xml @@ -1,23 +1,27 @@ - - + + 설치관리 Manage installation 安装管理 インストール管理 Manajo de la Instalación Управление установкой - + 설치 관리 모듈 + Module for managing installation + 安装管理模块。 + インストール管理モジュール + Módulo para el manejo de la instalación + Модуль для управления установкой + 0.1 + 2007-02-28 + base + + 제로 Zero Zero Zero Zero zero - 설치 관리 모듈 - Module for managing installation - 安装管理模块。 - インストール管理モジュール - Módulo para el manejo de la instalación - Модуль для управления установкой - + \ No newline at end of file diff --git a/modules/integration_search/conf/info.xml b/modules/integration_search/conf/info.xml index c265ab9f3..2d436c52f 100644 --- a/modules/integration_search/conf/info.xml +++ b/modules/integration_search/conf/info.xml @@ -1,41 +1,45 @@ - - + + 통합검색 - 搜索 + 搜索 統合検索 Integrated Search - Búsqueda Integrada + Búsqueda Integrada Интегрируемый поиск + + 선택한 모듈들을 대상으로 통합검색을 지원합니다. + 선택된 모듈의 글중 비밀글만 검색을 하지 않고 나머지는 모두 검색을 하기에 공개되지 않은 모듈은 대상에 포함하지 않도록 하셔야 합니다. + + + 把被选模块作为搜索对象进行搜索。 + 被选模块当中只有密帖不会被搜索,因此请注意选择您不想搜索的模块。 + + + 選択されたモジュールを対象に統合検索を行う機能をサポートします。 + 選択されたモジュールのコンテンツ(書き込み)の中で、非公開コンテンツのみ検索から除外されますので、未公開のモジュールは対象にしないようにしてください。 + + + It supports integration search for chosen modules. + All articles except secret articles will be searched, so you need to be careful not to include secret module to target. + + + Soporta la búsqueda integrada de los módulos elegidos. + Todo los documentos excepto los secretos serán buscados, y es necesario tener cuidado de no incluir módulo secreto como objetivo. + + + Поддерживает интеграцию поиска в выбранные модули. + Все статьи, за исключением секретных, будут подлежать поиску, поэтому Вам нужно быть осторожным с тем, чтобы не включить модуль секретов в назначение. + + 0.1 + 2007-07-24 + service + 제로 - Zero + Zero Zero zero - zero + zero zero - - 선택한 모듈들을 대상으로 통합검색을 지원합니다. - 선택된 모듈의 글중 비밀글만 검색을 하지 않고 나머지는 모두 검색을 하기에 공개되지 않은 모듈은 대상에 포함하지 않도록 하셔야 합니다. - - - 把被选模块作为搜索对象进行搜索。 - 被选模块当中只有密帖不会被搜索,因此请注意选择您不想搜索的模块。 - - - 選択されたモジュールを対象に統合検索を行う機能をサポートします。 - 選択されたモジュールのコンテンツ(書き込み)の中で、非公開コンテンツのみ検索から除外されますので、未公開のモジュールは対象にしないようにしてください。 - - - It supports integration search for chosen modules. - All articles except secret articles will be searched, so you need to be careful not to include secret module to target. - - - Soporta la búsqueda integrada de los módulos elegidos. - Todo los documentos excepto los secretos serán buscados, y es necesario tener cuidado de no incluir módulo secreto como objetivo. - - - Поддерживает интеграцию поиска в выбранные модули. - Все статьи, за исключением секретных, будут подлежать поиску, поэтому Вам нужно быть осторожным с тем, чтобы не включить модуль секретов в назначение. - - + \ No newline at end of file diff --git a/modules/krzip/conf/info.xml b/modules/krzip/conf/info.xml index 6e9d9773a..9457bdb3d 100644 --- a/modules/krzip/conf/info.xml +++ b/modules/krzip/conf/info.xml @@ -1,41 +1,45 @@ - - + + 한국 우편번호 Korean Zip Code - Código postal de Corea + Código postal de Corea 韩国邮编 韓国郵便番号 Корейский почтовый индекс - + + 제로보드에서 운영하는 우편번호서버를 이용하여 우편번호 검색을 합니다. + 우편번호 검색 서버는 설정을 통해 변경하실 수 있습니다. + + + Searching the zip code via zip code server operated by zeroboard. + You can change the zip code server by setting. + + + Busca el código postal a través del servidor operado por Zeroboard. + Usted puede cambiar la configuración del servidor de código postal. + + + 利用zeroboard运营的邮编服务器搜索邮编。 + 通过设置可以修改邮编搜索服务器。 + + + ゼロボードで運用している郵便番号サーバを利用して韓国の郵便番号を検索します。 + 郵便番号検索サーバは設定によって変更することができます。 + + + Поиск индекса через сервер почтовый индексов, оперируемый zeroboard. + Вы можете изменить сервер почтовых индексов в настройках. + + 0.1 + 2007-02-28 + accessory + + 제로 Zero - Zero + Zero Zero Zero zero - - 제로보드에서 운영하는 우편번호서버를 이용하여 우편번호 검색을 합니다. - 우편번호 검색 서버는 설정을 통해 변경하실 수 있습니다. - - - Searching the zip code via zip code server operated by zeroboard. - You can change the zip code server by setting. - - - Busca el código postal a través del servidor operado por Zeroboard. - Usted puede cambiar la configuración del servidor de código postal. - - - 利用zeroboard运营的邮编服务器搜索邮编。 - 通过设置可以修改邮编搜索服务器。 - - - ゼロボードで運用している郵便番号サーバを利用して韓国の郵便番号を検索します。 - 郵便番号検索サーバは設定によって変更することができます。 - - - Поиск индекса через сервер почтовый индексов, оперируемый zeroboard. - Вы можете изменить сервер почтовых индексов в настройках. - - + \ No newline at end of file diff --git a/modules/layout/conf/info.xml b/modules/layout/conf/info.xml index f79f79b33..11d79f945 100644 --- a/modules/layout/conf/info.xml +++ b/modules/layout/conf/info.xml @@ -1,23 +1,27 @@ - - + + 레이아웃 布局 レイアウト Layout Diseño Лейаут - + 레이아웃을 생성/관리하는 모듈입니다. + 生成/管理布局的模块。 + レイアウトを生成・管理するモジュールです。 + This module is for creating/managing of layouts. + Este módulo es para crear y manejar el diseño. + Этот модуль служит для создания/управления лейаутами. + 0.1 + 2007-02-28 + manager + + 제로 Zero Zero zero - zero + zero zero - 레이아웃을 생성/관리하는 모듈입니다. - 生成/管理布局的模块。 - レイアウトを生成・管理するモジュールです。 - This module is for creating/managing of layouts. - Este módulo es para crear y manejar el diseño. - Этот модуль служит для создания/управления лейаутами. - + \ No newline at end of file diff --git a/modules/lifepod/conf/info.xml b/modules/lifepod/conf/info.xml index 4d25da8e5..f0c4d3f63 100644 --- a/modules/lifepod/conf/info.xml +++ b/modules/lifepod/conf/info.xml @@ -1,22 +1,25 @@ - - + + 라이프팟 연동 Lifepod Lifepod連動 - Лайфпод - Lifepod - Lifepod API + Лайфпод + Lifepod + Lifepod API + 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. + Este módulo muestra calendario de lifepod. + 把Lifepod日历连接到zbXE的模块。 + This module displays calendar from lifepod. + (Openmaru社提供の)LifepodサービスのカレンダーをゼロボードXEに連動して出力するモジュールです。 + Этот модуль отображает календать с lifepod'а. + 0.12 + 2007-12-10 + service - + haneul haneul haneul haneul - 라이프팟의 calendar를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. - Este módulo muestra calendario de lifepod. - 把Lifepod日历连接到zbXE的模块。 - This module displays calendar from lifepod. - (Openmaru社提供の)LifepodサービスのカレンダーをゼロボードXEに連動して出力するモジュールです。 - Этот модуль отображает календать с lifepod'а. - + \ No newline at end of file diff --git a/modules/member/conf/info.xml b/modules/member/conf/info.xml index 8c7d341e3..957486bac 100644 --- a/modules/member/conf/info.xml +++ b/modules/member/conf/info.xml @@ -1,23 +1,27 @@ - - + + 회원 会员 会員 Member - Usuario + Usuario Пользователи + 회원 관리 및 회원 관련 설정등을 하는 모듈입니다. + 对会员进行管理及相关设置的模块。 + 会員管理及び会員関連設定などを行うモジュールです。 + This module is for managing or configuring members. + Este módulo es para el manejo y la configuración de los usuarios. + Этот модуль служит для управления и конфигурирования пользователей. + 0.1 + 2007-02-28 + service + 제로 Zero Zero zero - zero + zero zero - 회원 관리 및 회원 관련 설정등을 하는 모듈입니다. - 对会员进行管理及相关设置的模块。 - 会員管理及び会員関連設定などを行うモジュールです。 - This module is for managing or configuring members. - Este módulo es para el manejo y la configuración de los usuarios. - Этот модуль служит для управления и конфигурирования пользователей. - + \ No newline at end of file diff --git a/modules/menu/conf/info.xml b/modules/menu/conf/info.xml index 33eaca4d5..abde57a47 100644 --- a/modules/menu/conf/info.xml +++ b/modules/menu/conf/info.xml @@ -1,23 +1,27 @@ - - + + 메뉴 菜单 メニュー Menu - Menú + Menú Меню - + 레이아웃, 모듈을 연결하는 메뉴를 생성/관리하는 모듈입니다. + 此模块将生成并管理连接布局,模块的菜单。 + レイアウト、モジュールを連動させるメニューを作成・管理するモジュールです。 + This module is for creating/managering menues that linking layouts or modules. + Este módulo es para crear/manejar los menús que que son conectados con los diseños o módulos. + Этот модуль служит создания/управления меню, которые соединяют лейауты и модули. + 0.1 + 2007-02-28 + manager + + 제로 Zero Zero zero - zero + zero zero - 레이아웃, 모듈을 연결하는 메뉴를 생성/관리하는 모듈입니다. - 此模块将生成并管理连接布局,模块的菜单。 - レイアウト、モジュールを連動させるメニューを作成・管理するモジュールです。 - This module is for creating/managering menues that linking layouts or modules. - Este módulo es para crear/manejar los menús que que son conectados con los diseños o módulos. - Этот модуль служит создания/управления меню, которые соединяют лейауты и модули. - + \ No newline at end of file diff --git a/modules/message/conf/info.xml b/modules/message/conf/info.xml index c23f52631..312b702d6 100644 --- a/modules/message/conf/info.xml +++ b/modules/message/conf/info.xml @@ -1,23 +1,27 @@ - - + + 오류 표시 エラー表示 错误信息 Display Errors - Mostrar el error + Mostrar el error Отображение ошибок - + 오류 및 각종 시스템 메세지 관리 모듈 + エラー及びシステムメッセージ管理モジュール + 管理错误信息及各种系统信息的模块。 + This module managers erros and system messages. + Este módulo es para manejar los errores y mensajes del sistema. + Этот модуль управляет ошибками и системными сообщениями. + 0.1 + 2007-02-28 + base + + 제로 Zero zero zero - zero + zero zero - 오류 및 각종 시스템 메세지 관리 모듈 - エラー及びシステムメッセージ管理モジュール - 管理错误信息及各种系统信息的模块。 - This module managers erros and system messages. - Este módulo es para manejar los errores y mensajes del sistema. - Этот модуль управляет ошибками и системными сообщениями. - + \ No newline at end of file diff --git a/modules/module/conf/info.xml b/modules/module/conf/info.xml index 3f637ef1d..ccddd9976 100644 --- a/modules/module/conf/info.xml +++ b/modules/module/conf/info.xml @@ -1,23 +1,27 @@ - - - 모듈 - 模块 - モジュール - Module - Módulo - Модули - - 제로 - Zero - Zero - zero - zero - zero + + + 모듈 + 模块 + モジュール + Module + Módulo + Модули 모듈 생성 및 관리하는 모듈입니다. 生成及管理模块的模块。 モジュールの生成、管理するモジュールです。 This module is for creating/managering the other modules. - Este módulo is para crear y manejar los otros módulos. + Este módulo is para crear y manejar los otros módulos. Этот модуль служит для создания/управления другими модулями. - - + 0.1 + 2007-02-28 + base + + + 제로 + Zero + Zero + zero + zero + zero + + \ No newline at end of file diff --git a/modules/opage/conf/info.xml b/modules/opage/conf/info.xml index 63998abe5..5053ceb21 100644 --- a/modules/opage/conf/info.xml +++ b/modules/opage/conf/info.xml @@ -1,23 +1,27 @@ - - + + 외부 페이지 外部页面 外部ページ External Page - Afuera Página + Afuera Página Внешние страницы - + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + 可以把外部页面插入到 Zeroboard XE内部的模块。 + 外部ページをゼロボードXE内部に挿入させるモジュール + Module for inserting external pages into inside of Zeroboard XE. + 외부페이지를 제로보드XE내부로 삽입시키는 모듈 + Модуль для вставки внешних страниц внутрь Zeroboard XE. + 0.1 + 2007-09-17 + service + + 제로 zero Zero Zero - zero + zero zero - 외부페이지를 제로보드XE내부로 삽입시키는 모듈 - 可以把外部页面插入到 Zeroboard XE内部的模块。 - 外部ページをゼロボードXE内部に挿入させるモジュール - Module for inserting external pages into inside of Zeroboard XE. - 외부페이지를 제로보드XE내부로 삽입시키는 모듈 - Модуль для вставки внешних страниц внутрь Zeroboard XE. - + \ No newline at end of file diff --git a/modules/page/conf/info.xml b/modules/page/conf/info.xml index 4706fc8c2..fafb2d91e 100644 --- a/modules/page/conf/info.xml +++ b/modules/page/conf/info.xml @@ -1,23 +1,27 @@ - - + + 페이지 页面 ページ Page - Página + Página Страницы - + 페이지를 제작하여 컨텐츠로 연결할 수 있는 모듈 + 制作页面并能连接到内容区的模块。 + ページを作成してコンテンツとしてリンクできるようにするモジュールです。 + This module is for creating pages to link with contents. + Este módulo is para crear página para enlazar con contenidos. + Этот модуль служит для создания страниц, чтобы связать их с содержимым. + 0.1 + 2007-02-28 + service + + 제로 Zero Zero zero - zero + zero zero - 페이지를 제작하여 컨텐츠로 연결할 수 있는 모듈 - 制作页面并能连接到内容区的模块。 - ページを作成してコンテンツとしてリンクできるようにするモジュールです。 - This module is for creating pages to link with contents. - Este módulo is para crear página para enlazar con contenidos. - Этот модуль служит для создания страниц, чтобы связать их с содержимым. - + \ No newline at end of file diff --git a/modules/point/conf/info.xml b/modules/point/conf/info.xml index f95d39975..0f800330b 100644 --- a/modules/point/conf/info.xml +++ b/modules/point/conf/info.xml @@ -1,47 +1,51 @@ - - + + 포인트 시스템 积分系统 ポイントシステム Point System - Sistema de Punto + Sistema de Punto Система поитов - + + 글작성/삭제/댓글작성/삭제시에 포인트를 부여할 수 있습니다. + 포인트마다 레벨을 지정하여 사용자 이름 앞에 아이콘을 표시할 수도 있습니다. + 단 포인트 관련 애드온을 활성화 시키셔야 됩니다. + + + 可以在发表/删除新帖,发表/删除评论时,付与相应积分。 + 也可以以积分设置级别,并在用户名前显示级别图标。 + 必须是先激活积分系统才可以使用。 + + + 書き込み作成・削除/コメント作成・削除の活動に対するポイントを計算するシステムです。 + ポイントごとレベルを指定してユーザ名の前にアイコンを表示させることができます。 + 但し、ポイントシステムアドオンを「使用」に設定しないと作動しません。 + + + You can grant point on writing/deleting/adding comments/deleting comments. + You can also display point icon in front of user name by selecting level on each point. + But to enable these functions, you need to activate point related addons. + + + Usted puede entregar puntos a las acciones de escribir/eliminar/agregar comentarios/eliminar comentarios. + Usted también puede mostrar el ícono de punto delande del nombre del usuario seleccionando el nivel sobre cada puntos. + Pero para activar esas funciones, Usted necesita activar addon relacionado a los puntos. + + + Вы можете назначать поинты за написание/удаление/добавление комментариев/удаление комментариев. + Вы также можете отображать икнку поинтов напротив имени пользователя, установив уровени для поинтов. + Но чтобы включить эти функции, Вам надо активировать аддоны, относящиеся к поинтам. + + 0.1 + 2007-07-26 + accessory + + 제로 Zero Zero zero - zero + zero zero - - 글작성/삭제/댓글작성/삭제시에 포인트를 부여할 수 있습니다. - 포인트마다 레벨을 지정하여 사용자 이름 앞에 아이콘을 표시할 수도 있습니다. - 단 포인트 관련 애드온을 활성화 시키셔야 됩니다. - - - 可以在发表/删除新帖,发表/删除评论时,付与相应积分。 - 也可以以积分设置级别,并在用户名前显示级别图标。 - 必须是先激活积分系统才可以使用。 - - - 書き込み作成・削除/コメント作成・削除の活動に対するポイントを計算するシステムです。 - ポイントごとレベルを指定してユーザ名の前にアイコンを表示させることができます。 - 但し、ポイントシステムアドオンを「使用」に設定しないと作動しません。 - - - You can grant point on writing/deleting/adding comments/deleting comments. - You can also display point icon in front of user name by selecting level on each point. - But to enable these functions, you need to activate point related addons. - - - Usted puede entregar puntos a las acciones de escribir/eliminar/agregar comentarios/eliminar comentarios. - Usted también puede mostrar el ícono de punto delande del nombre del usuario seleccionando el nivel sobre cada puntos. - Pero para activar esas funciones, Usted necesita activar addon relacionado a los puntos. - - - Вы можете назначать поинты за написание/удаление/добавление комментариев/удаление комментариев. - Вы также можете отображать икнку поинтов напротив имени пользователя, установив уровени для поинтов. - Но чтобы включить эти функции, Вам надо активировать аддоны, относящиеся к поинтам. - - + \ No newline at end of file diff --git a/modules/poll/conf/info.xml b/modules/poll/conf/info.xml index 73622ddf8..9e3938fe5 100644 --- a/modules/poll/conf/info.xml +++ b/modules/poll/conf/info.xml @@ -1,23 +1,27 @@ - - + + 설문조사 投票调查 アンケート Poll - Encuesta + Encuesta Опрос - + 설문조사 관리 모듈 + 管理投票调查的模块。 + アンケート管理モジュール + This module is for managering polls. + Este módulo es para manejar las encuestas. + Этот модуль служит для управления опросами. + 0.1 + 2007-02-28 + accessory + + 제로 Zero Zero zero - zero + zero zero - 설문조사 관리 모듈 - 管理投票调查的模块。 - アンケート管理モジュール - This module is for managering polls. - Este módulo es para manejar las encuestas. - Этот модуль служит для управления опросами. - + \ No newline at end of file diff --git a/modules/referer/conf/info.xml b/modules/referer/conf/info.xml index da4ee8c5b..31e6a9070 100644 --- a/modules/referer/conf/info.xml +++ b/modules/referer/conf/info.xml @@ -1,20 +1,24 @@ - - + + 리퍼러 통계 リファラー統計 反向链接统计 Referer Statistics Статистика рефералов - + 기본 리퍼러 통계 프로그램입니다. + デフォルトのリファラー統計プログラムです。 + 反向链接统计模块。 + Basic referer statistics program. + Базовая программа статистики рефералов. + 0.15 + 2007-11-29 + accessory + + haneul haneul haneul haneul haneul - 기본 리퍼러 통계 프로그램입니다. - デフォルトのリファラー統計プログラムです。 - 反向链接统计模块。 - Basic referer statistics program. - Базовая программа статистики рефералов. - + \ No newline at end of file diff --git a/modules/rss/conf/info.xml b/modules/rss/conf/info.xml index 784bf95b2..17fc45e4b 100644 --- a/modules/rss/conf/info.xml +++ b/modules/rss/conf/info.xml @@ -1,23 +1,27 @@ - - + + RSS RSS RSS RSS - RSS + RSS RSS - + RSS 출력을 담당하는 모듈 + 负责输出RSS的模块。 + RSS出力を担うモジュールです。 + This modules is for printing RSS. + Este módulo es para imprimir RSS. + Этот модуль служит для печати RSS. + 0.1 + 2007-02-28 + utility + + 제로 Zero Zero zero - zero + zero zero - RSS 출력을 담당하는 모듈 - 负责输出RSS的模块。 - RSS出力を担うモジュールです。 - This modules is for printing RSS. - Este módulo es para imprimir RSS. - Этот модуль служит для печати RSS. - + \ No newline at end of file diff --git a/modules/session/conf/info.xml b/modules/session/conf/info.xml index 6d844a3ed..8c5a4f3bb 100644 --- a/modules/session/conf/info.xml +++ b/modules/session/conf/info.xml @@ -1,23 +1,27 @@ - - + + 세션 관리자 - Session + Session 会话管理 - + + 접속자의 세션을 관리하는 모듈입니다. + 기본적인 세션 설정과 사용뿐 아니라 세션 정보를 이용하여 접속자등의 세션 기반의 정보를 제공하는 기능도 있습니다. + + + This module manages session data. + You will get not only session setting or using but also session-level data such as visitors by using session data. + + + 管理在线会员会话(session)功能的模块。 + 提供最基本的会话设置及使用,并且还可以获得基于会话功能的在线会员信息。 + + 0.1 + 2008-06-18 + base + + zero - zero + zero zero - - 접속자의 세션을 관리하는 모듈입니다. - 기본적인 세션 설정과 사용뿐 아니라 세션 정보를 이용하여 접속자등의 세션 기반의 정보를 제공하는 기능도 있습니다. - - - This module manages session data. - You will get not only session setting or using but also session-level data such as visitors by using session data. - - - 管理在线会员会话(session)功能的模块。 - 提供最基本的会话设置及使用,并且还可以获得基于会话功能的在线会员信息。 - - + \ No newline at end of file diff --git a/modules/spamfilter/conf/info.xml b/modules/spamfilter/conf/info.xml index 49d1da8e8..c69f43b70 100644 --- a/modules/spamfilter/conf/info.xml +++ b/modules/spamfilter/conf/info.xml @@ -1,23 +1,27 @@ - - + + 스팸필터 垃圾过滤 Spam Filter - Filtro de Spam + Filtro de Spam スパムフィルター Фильтр спама - + 제로보드 XE의 기본 스팸필터입니다. + Zeroboard XE的基本垃圾过滤模块。 + A default spam filter of Zeroboard XE. + Filtro de Span predefinido de Zeroboard XE. + ゼロボードXEのスパムフィルターです。 + Стандартный фильтр спама Zeroboard XE. + 0.1 + 2007-02-28 + accessory + + 제로 Zero zero - zero + zero Zero zero - 제로보드 XE의 기본 스팸필터입니다. - Zeroboard XE的基本垃圾过滤模块。 - A default spam filter of Zeroboard XE. - Filtro de Span predefinido de Zeroboard XE. - ゼロボードXEのスパムフィルターです。 - Стандартный фильтр спама Zeroboard XE. - + \ No newline at end of file diff --git a/modules/springnote/conf/info.xml b/modules/springnote/conf/info.xml index 01397eada..9cac8a273 100644 --- a/modules/springnote/conf/info.xml +++ b/modules/springnote/conf/info.xml @@ -1,23 +1,27 @@ - - + + 스프링노트 연동 スプリングノート連動 Springnote API - Springnote - Springnote - Спрингноут - + Springnote + Springnote + Спрингноут + 스프링노트의 페이지를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. + スプリングノートのページをゼロボードXEと連動させて出力する機能のモジュールです。 + 把Springnote网站页面整合到Zeroboard XE的模块。 + This modules links pages of Springnote with ZeroboardXE, and display them. + Esta módulos de enlaces de páginas Springnote con ZeroboardXE, y lo muestra. + Этот модуль связывает страницы Springnote с ZeroboardXE, и отображает их. + 0.1 + 2007-11-30 + service + + 제로 Zero - Zero - Zero - Zero - Zero - 스프링노트의 페이지를 제로보드XE에서 연동하여 출력하는 기능을 가지고 있는 모듈입니다. - スプリングノートのページをゼロボードXEと連動させて出力する機能のモジュールです。 - 把Springnote网站页面整合到Zeroboard XE的模块。 - This modules links pages of Springnote with ZeroboardXE, and display them. - Esta módulos de enlaces de páginas Springnote con ZeroboardXE, y lo muestra. - Этот модуль связывает страницы Springnote с ZeroboardXE, и отображает их. + Zero + Zero + Zero + Zero - + \ No newline at end of file diff --git a/modules/tag/conf/info.xml b/modules/tag/conf/info.xml index b717eb113..41e6bcdf0 100644 --- a/modules/tag/conf/info.xml +++ b/modules/tag/conf/info.xml @@ -1,23 +1,27 @@ - - + + 꼬리표 标签 タグ Tag - Etiqueta + Etiqueta Теги - + 꼬리표 관리 모듈 + 标签管理模块。 + タグ管理用のモジュールです。 + Module for managing tags. + Módulo para manejar etiquetas. + Модуль для управления тегами. + 0.1 + 2007-02-28 + utility + + 제로 Zero Zero Zero - Zero + Zero zero - 꼬리표 관리 모듈 - 标签管理模块。 - タグ管理用のモジュールです。 - Module for managing tags. - Módulo para manejar etiquetas. - Модуль для управления тегами. - + \ No newline at end of file diff --git a/modules/tccommentnotify/conf/info.xml b/modules/tccommentnotify/conf/info.xml index 50fab0a13..02d27b7e0 100644 --- a/modules/tccommentnotify/conf/info.xml +++ b/modules/tccommentnotify/conf/info.xml @@ -1,11 +1,15 @@ - + 댓글알리미 Comment Notifier - + 댓글알리미 모듈입니다. + Comment Notifier will tell you when there's a new comment + 0.2 + 2008-06-02 + accessory + + haneul haneul - 댓글알리미 모듈입니다. - Comment Notifier will tell you when there's a new comment - + \ No newline at end of file diff --git a/modules/trackback/conf/info.xml b/modules/trackback/conf/info.xml index b89c6c468..9c08aed8d 100644 --- a/modules/trackback/conf/info.xml +++ b/modules/trackback/conf/info.xml @@ -1,23 +1,27 @@ - - + + 엮인글 引用 トラックバック - Trackback + Trackback Trackback Трекбек - + 엮인글 관리 모듈 + 管理引用模块。 + トラックバック管理モジュール + Module for managing trackbacks. + Módulo para el manejo de trackbacks. + Модуль для управления трекбеками. + 0.1 + 2007-02-28 + utility + + 제로 zero Zero Zero - Zero + Zero zero - 엮인글 관리 모듈 - 管理引用模块。 - トラックバック管理モジュール - Module for managing trackbacks. - Módulo para el manejo de trackbacks. - Модуль для управления трекбеками. - + \ No newline at end of file diff --git a/modules/widget/conf/info.xml b/modules/widget/conf/info.xml index 8f1e4cd53..a9b427af9 100644 --- a/modules/widget/conf/info.xml +++ b/modules/widget/conf/info.xml @@ -1,23 +1,27 @@ - - + + 위젯 控件 ウィジェット Widget - Widget + Widget Виджеты - + 위젯 관리 모듈 + 控件管理模块。 + ウィジェット管理モジュール + Module for managing widgets. + Módulo para el manejo de widgets. + Модуль для управления виджетами. + 0.1 + 2007-02-28 + manager + + 제로 zero Zero Zero - Zero + Zero zero - 위젯 관리 모듈 - 控件管理模块。 - ウィジェット管理モジュール - Module for managing widgets. - Módulo para el manejo de widgets. - Модуль для управления виджетами. - + \ No newline at end of file From 5a135acfa656ac5fae69550544c0a4b287c1f196 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 08:03:06 +0000 Subject: [PATCH 53/71] =?UTF-8?q?#495=20layout=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=83=88=20XML=20=ED=8F=AC=EB=A7=B7=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4363 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/layout/lang/en.lang.php | 1 + modules/layout/lang/es.lang.php | 1 + modules/layout/lang/fr.lang.php | 1 + modules/layout/lang/jp.lang.php | 1 + modules/layout/lang/ko.lang.php | 3 +- modules/layout/lang/ru.lang.php | 1 + modules/layout/lang/zh-CN.lang.php | 1 + modules/layout/layout.model.php | 99 +++++++++++++++---- .../layout/tpl/downloaded_layout_list.html | 10 +- modules/layout/tpl/layout_detail_info.html | 66 ++++++++++++- 10 files changed, 159 insertions(+), 25 deletions(-) diff --git a/modules/layout/lang/en.lang.php b/modules/layout/lang/en.lang.php index 6502eec08..d543116b2 100644 --- a/modules/layout/lang/en.lang.php +++ b/modules/layout/lang/en.lang.php @@ -10,6 +10,7 @@ $lang->layout_name = 'Layout Name'; $lang->layout_maker = "Layout Developer"; + $lang->layout_license = 'License'; $lang->layout_history = "Updates"; $lang->layout_info = "Layout Info"; $lang->layout_list = 'Layout List'; diff --git a/modules/layout/lang/es.lang.php b/modules/layout/lang/es.lang.php index e738c7bc0..8a0e4aeeb 100644 --- a/modules/layout/lang/es.lang.php +++ b/modules/layout/lang/es.lang.php @@ -10,6 +10,7 @@ $lang->layout_name = 'Nombre del Diseño'; $lang->layout_maker = "Desarrollador del Diseño"; + $lang->layout_license = 'License'; $lang->layout_history = "Actualización"; $lang->layout_info = "Información del Diseño"; $lang->layout_list = 'Lista de los Diseños'; diff --git a/modules/layout/lang/fr.lang.php b/modules/layout/lang/fr.lang.php index dbc05a351..7676f1f71 100644 --- a/modules/layout/lang/fr.lang.php +++ b/modules/layout/lang/fr.lang.php @@ -10,6 +10,7 @@ $lang->layout_name = 'Nom du Mise en Page'; $lang->layout_maker = "Développeur du Mise en Page"; + $lang->layout_license = 'License'; $lang->layout_history = "Mise à Jour"; $lang->layout_info = "Informations du Mise en Page"; $lang->layout_list = 'Liste des Mises en Page'; diff --git a/modules/layout/lang/jp.lang.php b/modules/layout/lang/jp.lang.php index 003137a7a..fbc4d6dca 100644 --- a/modules/layout/lang/jp.lang.php +++ b/modules/layout/lang/jp.lang.php @@ -10,6 +10,7 @@ $lang->layout_name = 'レイアウト名'; $lang->layout_maker = "レイアウト作者"; + $lang->layout_license = 'License'; $lang->layout_history = "変更内容 "; $lang->layout_info = "レイアウト情報"; $lang->layout_list = 'レイアウトリスト'; diff --git a/modules/layout/lang/ko.lang.php b/modules/layout/lang/ko.lang.php index 1fba3d8e9..2bd20c936 100644 --- a/modules/layout/lang/ko.lang.php +++ b/modules/layout/lang/ko.lang.php @@ -10,7 +10,8 @@ $lang->layout_name = '레이아웃 이름'; $lang->layout_maker = "레이아웃 제작자"; - $lang->layout_history = "변경 사항 "; + $lang->layout_license = '라이센스'; + $lang->layout_history = '변경 이력'; $lang->layout_info = "레이아웃 정보"; $lang->layout_list = '레이아웃 목록'; $lang->menu_count = '메뉴수'; diff --git a/modules/layout/lang/ru.lang.php b/modules/layout/lang/ru.lang.php index 20a59c2a7..45deeb30a 100644 --- a/modules/layout/lang/ru.lang.php +++ b/modules/layout/lang/ru.lang.php @@ -10,6 +10,7 @@ $lang->layout_name = 'Имя лейаута'; $lang->layout_maker = "Разработчик лейаута"; + $lang->layout_license = 'License'; $lang->layout_history = "Обновления"; $lang->layout_info = "Информация лейаута"; $lang->layout_list = 'Список лейаутов'; diff --git a/modules/layout/lang/zh-CN.lang.php b/modules/layout/lang/zh-CN.lang.php index 6f81d7372..d8b62d824 100644 --- a/modules/layout/lang/zh-CN.lang.php +++ b/modules/layout/lang/zh-CN.lang.php @@ -12,6 +12,7 @@ $lang->layout_name = '布局名'; $lang->layout_maker = "布局作者"; + $lang->layout_license = 'License'; $lang->layout_history = "更新记录 "; $lang->layout_info = "布局信息"; $lang->layout_list = '布局目录'; diff --git a/modules/layout/layout.model.php b/modules/layout/layout.model.php index a1d87caf6..daf6d7a01 100644 --- a/modules/layout/layout.model.php +++ b/modules/layout/layout.model.php @@ -16,7 +16,7 @@ /** * @brief DB 에 생성된 레이아웃의 목록을 구함 - * 생성되었다는 것은 DB에 등록이 되었다는 것을 의미 + * 생성되었다는 것은 DB에 등록이 되었다는 것을 의미 **/ function getLayoutList() { $output = executeQuery('layout.getLayoutList'); @@ -46,7 +46,7 @@ **/ function getLayoutPath($layout_name) { $class_path = sprintf('./layouts/%s/', $layout_name); - if(is_dir($class_path)) return $class_path; + if(is_dir($class_path)) return $class_path; return ""; } @@ -76,7 +76,7 @@ /** * @brief 모듈의 conf/info.xml 을 읽어서 정보를 구함 - * 이것 역시 캐싱을 통해서 xml parsing 시간을 줄인다.. + * 이것 역시 캐싱을 통해서 xml parsing 시간을 줄인다.. **/ function getLayoutInfo($layout, $info = null) { if($info) { @@ -89,7 +89,7 @@ $layout_path = preg_replace('/([a-zA-Z0-9\_\.]+)(\.html)$/','',$info->layout_path); $xml_file = sprintf('%sskin.xml', $layout_path); } - } + } // 요청된 모듈의 경로를 구한다. 없으면 return if(!$layout_path) $layout_path = $this->getLayoutPath($layout); @@ -131,20 +131,85 @@ $buff = ''; - // 레이아웃의 제목, 버전 - $buff .= sprintf('$layout_info->layout = "%s";', $layout); - $buff .= sprintf('$layout_info->path = "%s";', $layout_path); - $buff .= sprintf('$layout_info->title = "%s";', $xml_obj->title->body); - $buff .= sprintf('$layout_info->version = "%s";', $xml_obj->attrs->version); - $buff .= sprintf('$layout_info->layout_srl = $layout_srl;'); - $buff .= sprintf('$layout_info->layout_title = $layout_title;'); + if($xml_obj->version && $xml_obj->attrs->version == '0.2') { + // 레이아웃의 제목, 버전 + sscanf($xml_obj->date->body, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d); + $date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $buff .= sprintf('$layout_info->layout = "%s";', $layout); + $buff .= sprintf('$layout_info->path = "%s";', $layout_path); + $buff .= sprintf('$layout_info->title = "%s";', $xml_obj->title->body); + $buff .= sprintf('$layout_info->description = "%s";', $xml_obj->description->body); + $buff .= sprintf('$layout_info->version = "%s";', $xml_obj->version->body); + $buff .= sprintf('$layout_info->date = "%s";', $date); + $buff .= sprintf('$layout_info->layout_srl = $layout_srl;'); + $buff .= sprintf('$layout_info->layout_title = $layout_title;'); + $buff .= sprintf('$layout_info->license = "%s";', $xml_obj->license->body); + $buff .= sprintf('$layout_info->license_link = "%S";', $xml_obj->license->attrs->link); - // 작성자 정보 - $buff .= sprintf('$layout_info->author->name = "%s";', $xml_obj->author->name->body); - $buff .= sprintf('$layout_info->author->email_address = "%s";', $xml_obj->author->attrs->email_address); - $buff .= sprintf('$layout_info->author->homepage = "%s";', $xml_obj->author->attrs->link); - $buff .= sprintf('$layout_info->author->date = "%s";', $xml_obj->author->attrs->date); - $buff .= sprintf('$layout_info->author->description = "%s";', $xml_obj->author->description->body); + // 작성자 정보 + if(!is_array($xml_obj->author)) $author_list[] = $xml_obj->author; + else $author_list = $xml_obj->author; + + for($i=0; $i < count($author_list); $i++) { + $buff .= sprintf('$layout_info->author['.$i.']->name = "%s";', $author_list[$i]->name->body); + $buff .= sprintf('$layout_info->author['.$i.']->email_address = "%s";', $author_list[$i]->attrs->email_address); + $buff .= sprintf('$layout_info->author['.$i.']->homepage = "%s";', $author_list[$i]->attrs->link); + } + + // history + if($xml_obj->history) { + if(!is_array($xml_obj->history)) $history_list[] = $xml_obj->history; + else $history_list = $xml_obj->history; + + for($i=0; $i < count($history_list); $i++) { + sscanf($history_list[$i]->attrs->date, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d); + $date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $buff .= sprintf('$layout_info->history['.$i.']->description = "%s";', $history_list[$i]->description->body); + $buff .= sprintf('$layout_info->history['.$i.']->version = "%s";', $history_list[$i]->attrs->version); + $buff .= sprintf('$layout_info->history['.$i.']->date = "%s";', $date); + + if($history_list[$i]->author) { + (!is_array($history_list[$i]->author)) ? $obj->author_list[] = $history_list[$i]->author : $obj->author_list = $history_list[$i]->author; + + for($j=0; $j < count($obj->author_list); $j++) { + $buff .= sprintf('$layout_info->history['.$i.']->author['.$j.']->name = "%s";', $obj->author_list[$j]->name->body); + $buff .= sprintf('$layout_info->history['.$i.']->author['.$j.']->email_address = "%s";', $obj->author_list[$j]->attrs->email_address); + $buff .= sprintf('$layout_info->history['.$i.']->author['.$j.']->homepage = "%s";', $obj->author_list[$j]->attrs->link); + } + } + + if($history_list[$i]->log) { + (!is_array($history_list[$i]->log)) ? $obj->log_list[] = $history_list[$i]->log : $obj->log_list = $history_list[$i]->log; + + for($j=0; $j < count($obj->log_list); $j++) { + $buff .= sprintf('$layout_info->history['.$i.']->logs['.$j.']->text = "%s";', $obj->log_list[$j]->body); + $buff .= sprintf('$layout_info->history['.$i.']->logs['.$j.']->link = "%s";', $obj->log_list[$j]->attrs->link); + } + } + } + } + + + + } else { + + // 레이아웃의 제목, 버전 + sscanf($xml_obj->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d); + $date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $buff .= sprintf('$layout_info->layout = "%s";', $layout); + $buff .= sprintf('$layout_info->path = "%s";', $layout_path); + $buff .= sprintf('$layout_info->title = "%s";', $xml_obj->title->body); + $buff .= sprintf('$layout_info->description = "%s";', $xml_obj->author->description->body); + $buff .= sprintf('$layout_info->version = "%s";', $xml_obj->attrs->version); + $buff .= sprintf('$layout_info->date = "%s";', $date); + $buff .= sprintf('$layout_info->layout_srl = $layout_srl;'); + $buff .= sprintf('$layout_info->layout_title = $layout_title;'); + + // 작성자 정보 + $buff .= sprintf('$layout_info->author[0]->name = "%s";', $xml_obj->author->name->body); + $buff .= sprintf('$layout_info->author[0]->email_address = "%s";', $xml_obj->author->attrs->email_address); + $buff .= sprintf('$layout_info->author[0]->homepage = "%s";', $xml_obj->author->attrs->link); + } // 추가 변수 (템플릿에서 사용할 제작자 정의 변수) $extra_var_groups = $xml_obj->extra_vars->group; diff --git a/modules/layout/tpl/downloaded_layout_list.html b/modules/layout/tpl/downloaded_layout_list.html index 563b74cbb..be28f4344 100644 --- a/modules/layout/tpl/downloaded_layout_list.html +++ b/modules/layout/tpl/downloaded_layout_list.html @@ -43,15 +43,19 @@ ({$val->layout}) {$val->version} - {$val->author->name} + + + {$author->name} + + {$val->menu_count} - {$val->author->date} + {zdate($val->date, 'Y-m-d')} {$val->path} {$lang->cmd_make} - {nl2br(trim($val->author->description))} + {nl2br(trim($val->description))} diff --git a/modules/layout/tpl/layout_detail_info.html b/modules/layout/tpl/layout_detail_info.html index a785e83b6..661c12df3 100644 --- a/modules/layout/tpl/layout_detail_info.html +++ b/modules/layout/tpl/layout_detail_info.html @@ -12,23 +12,81 @@ {$lang->author} - {$layout_info->author->name} + + + {$author->name} ({$author->homepage}, {$author->email_address})
    + + + {$lang->homepage} - {$layout_info->author->homepage} + {$layout_info->homepage} + {$lang->regdate} - {$layout_info->author->date} + {zdate($layout_info->date, 'Y-m-d')} + + + {$lang->layout_license} + + {nl2br(trim($layout_info->license))} + +

    {$layout_info->license_link}

    + + + + {$lang->description} - {nl2br(trim($layout_info->author->description))} + {nl2br(trim($layout_info->description))} + +
    +

    {$lang->layout_history}

    +
    + +
    + + + + + + + + + + +
    + {$history->version}
    + {zdate($history->date, 'Y-m-d')} +
    + +

    {$author->name} ({$author->homepage} / {$author->email_address})

    + + +

    {nl2br(trim($history->description))}

    + + + + +
    +
    + +
    {$lang->cmd_close} From cd8512a84618f18493ed28ebbf27bfeb76044596 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 15 Jul 2008 08:04:22 +0000 Subject: [PATCH 54/71] =?UTF-8?q?=EC=8D=B8=EB=84=A4=EC=9D=BC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=8B=9C=202=EB=B2=88=EC=A7=B8=20=EC=B2=A8=EB=B6=80?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=98=20=EC=8D=B8=EB=84=A4=EC=9D=BC?= =?UTF-8?q?=EC=9D=B4=20=EC=83=9D=EC=84=B1=EB=90=98=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=EC=99=80=20=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=97=86=EC=9D=B4=20=EB=82=B4=EC=9A=A9=EC=97=90=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EB=A7=81=ED=81=AC=EB=90=98=EC=97=88?= =?UTF-8?q?=EC=9D=84=EB=95=8C=20=EC=8D=B8=EB=84=A4=EC=9D=BC=EC=9D=B4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4364 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/file/FileHandler.class.php | 13 +++++++++---- modules/document/document.item.php | 15 ++++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 130e81d8b..4ed2c7ab8 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -333,21 +333,26 @@ // 파일을 쓰고 끝냄 switch($target_type) { case 'gif' : - @imagegif($thumb, $target_file, 100); + $output = @imagegif($thumb, $target_file); break; case 'jpeg' : case 'jpg' : - @imagejpeg($thumb, $target_file, 100); + $output = @imagejpeg($thumb, $target_file, 100); break; case 'png' : - @imagepng($thumb, $target_file, 9); + $output = @imagepng($thumb, $target_file, 9); break; case 'wbmp' : case 'bmp' : - @imagewbmp($thumb, $target_file, 100); + $output = @imagewbmp($thumb, $target_file, 100); break; } + + if(!$output) return false; + @chmod($target_file, 0644); + + return true; } } ?> diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 6f0ce9184..2acd1a880 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -435,7 +435,7 @@ if(!$height) $height = $width; // 첨부파일이 없거나 내용중 이미지가 없으면 return false; - if(!$this->hasUploadedFiles() && !preg_match("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg|bmp)!is", $this->get('content'))) return; + if(!$this->hasUploadedFiles() && !preg_match("!get('content'))) return; // 문서 모듈의 기본 설정에서 Thumbnail의 생성 방법을 구함 if(!in_array($thumbnail_type, array('crop','ratio'))) { @@ -475,8 +475,7 @@ $filename = $file->uploaded_filename; if(!file_exists($filename)) continue; - FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); - if(file_exists($thumbnail_file) && filesize($thumbnail_file)>0) return Context::getRequestUri().$thumbnail_file; + if(FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type)) return Context::getRequestUri().$thumbnail_file; } } } @@ -484,16 +483,18 @@ // 첨부된 파일이 없으면 내용중 이미지 파일을 구함 $content = $this->get('content'); $target_src = null; - preg_match_all("!http:\/\/([^ ^\"^']*?)\.(jpg|png|gif|jpeg|bmp)!is", $content, $matches, PREG_SET_ORDER); + preg_match_all("!src=(\"|')([^\"' ]*?)(\"|')!is", $content, $matches, PREG_SET_ORDER); for($i=0;$idocument_srl)); FileHandler::getRemoteFile($target_src, $tmp_file); - if(file_exists($tmp_file)) FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); + if(!file_exists($tmp_file)) continue; + $output = FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); FileHandler::removeFile($tmp_file); - if(file_exists($thumbnail_file) && filesize($thumbnail_file)>0) return Context::getRequestUri().$thumbnail_file; + if($output) return Context::getRequestUri().$thumbnail_file; } } From d9a95be429584e43b16d887307a711b3792260d2 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 08:04:42 +0000 Subject: [PATCH 55/71] =?UTF-8?q?#495=20layout=20=EC=83=88=20XML=20?= =?UTF-8?q?=ED=8F=AC=EB=A7=B7=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4365 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- layouts/xe_blog/conf/info.xml | 177 +++++++++++++++--------------- layouts/xe_official/conf/info.xml | 159 ++++++++++++++------------- 2 files changed, 173 insertions(+), 163 deletions(-) diff --git a/layouts/xe_blog/conf/info.xml b/layouts/xe_blog/conf/info.xml index fc1f9ecfc..b162bffe1 100644 --- a/layouts/xe_blog/conf/info.xml +++ b/layouts/xe_blog/conf/info.xml @@ -1,78 +1,82 @@ - - + + 제로보드XE 블로그 기본 스킨 ZBXEブログのデフォルトスキン Zeroboard XE博客默认皮肤 Default Skin of Zeroboard XE blog - Standard-Skin von Zeroboard XE Blog - Cuidado de la Piel por defecto de Zeroboard XE blog - По умолчанию Кожа Zeroboard XE блоге - + Standard-Skin von Zeroboard XE Blog + Cuidado de la Piel por defecto de Zeroboard XE blog + По умолчанию Кожа Zeroboard XE блоге + + 제로보드XE 블로그 기본 스킨입니다. + 디자인 : 서기정 (http://blog.naver.com/addcozy) + HTML/CSS : 소지훈 + + + ゼロボードXEブログの基本スキンです。 + デザイン:ソギジョン (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + Zeroboard XE博客默认皮肤。 + 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + This is default skin of Zeroboard XE blog. + Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + Dies ist der Standard-Skin Zeroboard XE-Blog. + Design: Ki-Seo Jeong (http://blog.naver.com/addcozy) + HTML / CSS: Ju-Hoon Also + + + Esto es por defecto de la piel Zeroboard XE blog. + Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + Это умолчанию кожи Zeroboard XE блоге. + Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + 0.1 + 2008-02-26 + + zero zero zero zero - zero - zero - zero - - 제로보드XE 블로그 기본 스킨입니다. - 디자인 : 서기정 (http://blog.naver.com/addcozy) - HTML/CSS : 소지훈 - - - ゼロボードXEブログの基本スキンです。 - デザイン:ソギジョン (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - Zeroboard XE博客默认皮肤。 - 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - This is default skin of Zeroboard XE blog. - Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - Dies ist der Standard-Skin Zeroboard XE-Blog. - Design: Ki-Seo Jeong (http://blog.naver.com/addcozy) - HTML / CSS: Ju-Hoon Also - - - Esto es por defecto de la piel Zeroboard XE blog. - Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - Это умолчанию кожи Zeroboard XE блоге. - Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - + zero + zero + zero + 컬러셋 カラーセット 颜色 Colorset - Colorset + Colorset Set de Colores - Colorset + Colorset 원하시는 컬러셋을 선택해주세요. 希望するカラーセットを選択してください。 请选择颜色。 Please select a colorset you want. - Bitte wählen Sie ein colorset Sie wollen. - Выберите colorset хотите. + Bitte wählen Sie ein colorset Sie wollen. + Выберите colorset хотите. Seleccione set de colores que desea. 파란색 (기본) 青 (default) 蓝色 (default) Blue (default) - Blue (Standard) + Blue (Standard) Azul (default) Blue (default) blue @@ -82,7 +86,7 @@ 灰色背景 灰色背景 Gray - Gray + Gray Gray Gray gray @@ -92,9 +96,9 @@ Orange Orange Orange - Orange - Orange - Orange + Orange + Orange + Orange orange @@ -102,9 +106,9 @@ Violet Violet Violet - Violett - Violet - Violet + Violett + Violet + Violet violet @@ -112,9 +116,9 @@ 绿色 Green - Grün - Verde - Green + Grün + Verde + Green green @@ -123,75 +127,76 @@ 기본 모듈 默认模块 Basic module - Basismodul - Módulo Básico - Основной модуль + Basismodul + Módulo Básico + Основной модуль 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 기본 모듈을 지정해주시면 레이아웃에서 표시되는 위젯들이 정상적으로 동작을 하게 됩니다 为了让博客系统中的控件正常运作,在这里必须得指定默认版面模块名。 The widgets that are being displayed in the layout will work properly if you select the basic module - Die Widgets, die angezeigt werden im Layout wird ordnungsgemäß funktionieren, wenn Sie das Basismodul - Los reproductores que se muestran en el diseño funcionará correctamente si selecciona el módulo básico - В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль + Die Widgets, die angezeigt werden im Layout wird ordnungsgemäß funktionieren, wenn Sie das Basismodul + Los reproductores que se muestran en el diseño funcionará correctamente si selecciona el módulo básico + В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль 배경 이미지 背景イメージ 背景图片 Background Image - Imagen de fondo - Фоновое изображение + Imagen de fondo + Фоновое изображение 배경 이미지를 사용하시려면 등록해주세요. 背景イメージを使う場合は、登録してください。 要想使用背景图片请在这里上传。 Please input if you want to use background image. - Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild. - Entre, por favor, si desea utilizar la imagen de fondo. - Введите, если вы хотите использовать фоновое изображение. + Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild. + Entre, por favor, si desea utilizar la imagen de fondo. + Введите, если вы хотите использовать фоновое изображение. 프로필 이미지 プロフィールイメージ 博客头像 Profile Image - Profil Bilder - Perfil de Imagen - Профиль Изображение + Profil Bilder + Perfil de Imagen + Профиль Изображение 프로필 이미지를 입력해 주세요 (가로 사이즈는 160px이 가장 보기 좋습니다) プロフィールイメージを入力してください(横幅は「160px」が一番適しています)。 请上传博客个性头像(推荐宽度为160px)。 Please input profile image (It is recommended to set width as 160px) - itte geben Sie Ihre Image-Profil (Es wird empfohlen, Breite 160px) - Por favor, el perfil de entrada de imagen (Se recomienda configurar el ancho de 160px) - Введите профиля изображения (Рекомендуется устанавливать ширину, 160px) + itte geben Sie Ihre Image-Profil (Es wird empfohlen, Breite 160px) + Por favor, el perfil de entrada de imagen (Se recomienda configurar el ancho de 160px) + Введите профиля изображения (Рекомендуется устанавливать ширину, 160px) 프로필 プロフィール 简介 Profile - Profil - Perfil - Профиль + Profil + Perfil + Профиль 간단한 프로필을 입력해주세요 簡単なプロフィールを入力してください。 请输入简单介绍。 Please input your simple profile - Bitte geben Sie Ihre Simple Profile - Por favor, introduzca su perfil simple - Введите простое профиль + Bitte geben Sie Ihre Simple Profile + Por favor, introduzca su perfil simple + Введите простое профиль + 상단 메뉴 上段メニュー 菜单 Top Menu - Top-Menü - Menú superior - Главное меню + Top-Menü + Menú superior + Главное меню 1 - + \ No newline at end of file diff --git a/layouts/xe_official/conf/info.xml b/layouts/xe_official/conf/info.xml index cac06e112..5382f5ce9 100644 --- a/layouts/xe_official/conf/info.xml +++ b/layouts/xe_official/conf/info.xml @@ -1,85 +1,89 @@ - - + + ZBXE 공식 사이트 레이아웃 ZBXEオフィシャルレイアウト ZBXE Official website layout - ZBXE Offizielle Website-Layout - ZBXE Официальный сайт макет + ZBXE Offizielle Website-Layout + ZBXE Официальный сайт макет Diseño oficial de la página web de ZBXE ZBXE 官方网站布局 - + + 제로보드XE 공식 사이트 레이아웃입니다. + 디자인 : 이소라 + 퍼블리싱 : 정찬명 + 레이아웃 제작 : zero + + + ゼロボードXEのオフィシャルサイトのレイアウトです。 + デザイン:イ ソラ + パブリシング:ジョン チャンミョン + レイアウト作成:Zero + + + This layout is the Zeroboard XE Official website layout. + Designer : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + Layout producer : zero + + + Dieses Layout ist das Zeroboard XE Offizielle Website-Layout. + Designer: So-Ra Lee + HTML / CSS: Chan-Myung Jeong + Layout Hersteller: Zero + + + Этот формат является Zeroboard XE Официальный сайт компоновку. + Дизайнер: So-Ra Lee + HTML / CSS: Chan-Myung Jeong + Макет производителя: ноль + + + Este diseño is el diseño oficial de la página web de Zerobard XE. + Deseñador : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + Productor del diseño : zero + + + Zeroboard XE官方网站布局。 + 设计 : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + 布局 : zero + + 0.1 + 2007-08-01 + + zero Zero zero - zero - zero + zero + zero zero zero - - 제로보드XE 공식 사이트 레이아웃입니다. - 디자인 : 이소라 - 퍼블리싱 : 정찬명 - 레이아웃 제작 : zero - - - ゼロボードXEのオフィシャルサイトのレイアウトです。 - デザイン:イ ソラ - パブリシング:ジョン チャンミョン - レイアウト作成:Zero - - - This layout is the Zeroboard XE Official website layout. - Designer : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - Layout producer : zero - - - Dieses Layout ist das Zeroboard XE Offizielle Website-Layout. - Designer: So-Ra Lee - HTML / CSS: Chan-Myung Jeong - Layout Hersteller: Zero - - - Этот формат является Zeroboard XE Официальный сайт компоновку. - Дизайнер: So-Ra Lee - HTML / CSS: Chan-Myung Jeong - Макет производителя: ноль - - - Este diseño is el diseño oficial de la página web de Zerobard XE. - Deseñador : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - Productor del diseño : zero - - - Zeroboard XE官方网站布局。 - 设计 : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - 布局 : zero - + 컬러셋 カラーセット 颜色 Colorset - Colorset - Colorset + Colorset + Colorset Set de colores 원하시는 컬러셋을 선택해주세요. 希望するカラーセットを選択してください。 请选择颜色。 Please select a colorset you want. - Bitte wählen Sie ein colorset Sie wollen. - Выберите colorset хотите. + Bitte wählen Sie ein colorset Sie wollen. + Выберите colorset хотите. Seleccione set de colores que desea. 기본 デフォルト Basic - Basic - Базовые + Basic + Базовые Básico 默认 default @@ -88,8 +92,8 @@ 검은색 Black - Schwarz - Черного + Schwarz + Черного Negro 黑色 black @@ -98,8 +102,8 @@ 하얀색 white - weiß - белый + weiß + белый Blanco 白色 white @@ -110,15 +114,15 @@ ロゴイメージ LOGO图片 Logo image - Logobildes - Изображения логотипа + Logobildes + Изображения логотипа Imagen del logotipo 레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 23px인 투명이미지가 가장 어울립니다) レイアウトの上段に表示されるロゴイメージを入力してください。 (縦幅が23pxである透明イメージが最も合います。) 请输入显示在布局顶部的LOGO图片。(高度为23px的透明图片为适。) Please input a logo image which will be displayed on the top of layout. (Transparent image with height of 23px is recommended.) - Bitte geben Sie ein Logo das Bild wird auf dem oberen Layout. (Transparent Bild mit einer Höhe von 23px wird empfohlen). - Введите логотип изображение, которое будет отображаться в верхней части формы. (Прозрачный изображение с высотой 23px рекомендуется.) + Bitte geben Sie ein Logo das Bild wird auf dem oberen Layout. (Transparent Bild mit einer Höhe von 23px wird empfohlen). + Введите логотип изображение, которое будет отображаться в верхней части формы. (Прозрачный изображение с высотой 23px рекомендуется.) Ingresar una imagen para logotipo. ( Se recomienda una imagen de fondo transparente con una altura de 23px. @@ -126,15 +130,15 @@ ホームページURL 主页地址 Homepage URL - Homepage URL - Домашняя страница URL + Homepage URL + Домашняя страница URL URL de la página web 로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요. ロゴをクリックした時に移動するホームページのURLを入力してください。 点击网站LOGO时要移动的页面URL。 Please input the URL to redirect when user clicks the logo - Bitte geben Sie die URL umzuleiten, wenn Benutzer klickt das Logo - Пожалуйста, введите URL для перенаправления, когда пользователь нажимает логотип + Bitte geben Sie die URL umzuleiten, wenn Benutzer klickt das Logo + Пожалуйста, введите URL для перенаправления, когда пользователь нажимает логотип Ingresar el URL de la página web para redireccionar al pulsar el logotipo @@ -142,26 +146,27 @@ 背景イメージ 背景图片 Background Image - Hintergrundbild - Фоновое изображение - Imagen de fondo + Hintergrundbild + Фоновое изображение + Imagen de fondo 배경 이미지를 사용하시려면 등록해주세요. 背景イメージを使う場合は、登録してください。 要想使用背景图片请在这里上传。 Please input if you want to use background image. - Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild. - Введите, если вы хотите использовать фоновое изображение. + Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild. + Введите, если вы хотите использовать фоновое изображение. Ingresar imagen de fondo si desea usar. + 상단 메뉴 上段メニュー 主菜单 Top menu - Top Menü - Верхнее меню + Top Menü + Верхнее меню Menú Principal 3 @@ -170,10 +175,10 @@ 下段メニュー 底部菜单 Bottom menu - Bottom-Menü - Внизу меню + Bottom-Menü + Внизу меню Menú Inferior 1 - + \ No newline at end of file From a9782e833f57ab2dc7f8b0eac720c00e132424d9 Mon Sep 17 00:00:00 2001 From: zero Date: Tue, 15 Jul 2008 08:18:42 +0000 Subject: [PATCH 56/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4366 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 2acd1a880..b10b184eb 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -484,11 +484,12 @@ $content = $this->get('content'); $target_src = null; preg_match_all("!src=(\"|')([^\"' ]*?)(\"|')!is", $content, $matches, PREG_SET_ORDER); - for($i=0;$idocument_srl)); FileHandler::getRemoteFile($target_src, $tmp_file); if(!file_exists($tmp_file)) continue; From c8e9338c07cebd6b6a61a392b0504434a2337311 Mon Sep 17 00:00:00 2001 From: bnu Date: Tue, 15 Jul 2008 08:56:43 +0000 Subject: [PATCH 57/71] =?UTF-8?q?#495=20editor=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=83=88=20XML=20=ED=8F=AC=EB=A7=B7=20=EC=B2=98=EB=A6=AC=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80,=20editor=20=EC=83=88?= =?UTF-8?q?=20XML=20=ED=8F=AC=EB=A7=B7=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4367 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/editor/components/cc_license/info.xml | 43 +++--- .../editor/components/colorpicker_bg/info.xml | 27 ++-- .../components/colorpicker_text/info.xml | 27 ++-- modules/editor/components/emoticon/info.xml | 29 ++-- .../editor/components/image_gallery/info.xml | 27 ++-- modules/editor/components/image_link/info.xml | 27 ++-- .../components/multimedia_link/info.xml | 27 ++-- modules/editor/components/naver_map/info.xml | 32 +++-- modules/editor/components/poll_maker/info.xml | 27 ++-- modules/editor/components/quotation/info.xml | 27 ++-- .../editor/components/table_maker/info.xml | 27 ++-- modules/editor/components/url_link/info.xml | 27 ++-- modules/editor/editor.model.php | 124 +++++++++++++----- modules/editor/lang/en.lang.php | 2 + modules/editor/lang/es.lang.php | 2 + modules/editor/lang/fr.lang.php | 2 + modules/editor/lang/jp.lang.php | 2 + modules/editor/lang/ko.lang.php | 2 + modules/editor/lang/ru.lang.php | 2 + modules/editor/lang/zh-CN.lang.php | 2 + modules/editor/tpl/admin_index.html | 8 +- modules/editor/tpl/setup_component.html | 10 +- modules/editor/tpl/view_component.html | 67 +++++++++- 23 files changed, 377 insertions(+), 193 deletions(-) diff --git a/modules/editor/components/cc_license/info.xml b/modules/editor/components/cc_license/info.xml index 9d638c541..c612a9bd9 100755 --- a/modules/editor/components/cc_license/info.xml +++ b/modules/editor/components/cc_license/info.xml @@ -1,23 +1,26 @@ - - + + Creative Commons Licenses - Licencias Creative Commons - Creative Commons Licenses - クリエイティブコモンズライセンス - 知识共享许可协议 - Creative Commons Licenses - + Licencias Creative Commons + Creative Commons Licenses + クリエイティブコモンズライセンス + 知识共享许可协议 + Creative Commons Licenses + CCL 라이센스를 출력합니다. + CCL licencia de producto + CCL 라이센스를 출력합니다. + CCLライセンスを表示します。 + 显示知识共享许可协议。 + Output CCL license + 0.1 + 2008-01-07 + + zero - zero - zero - Zero - zero - zero - CCL 라이센스를 출력합니다. - CCL licencia de producto - CCL 라이센스를 출력합니다. - CCLライセンスを表示します。 - 显示知识共享许可协议。 - Output CCL license + zero + zero + Zero + zero + zero - + \ No newline at end of file diff --git a/modules/editor/components/colorpicker_bg/info.xml b/modules/editor/components/colorpicker_bg/info.xml index 33851f099..6ae19f25f 100644 --- a/modules/editor/components/colorpicker_bg/info.xml +++ b/modules/editor/components/colorpicker_bg/info.xml @@ -1,23 +1,26 @@ - - + + 글의 배경색 변경 文字の背景色変更 背景颜色 Change the background color of article - Cambiar el color de fondo del artículo + Cambiar el color de fondo del artículo Изменение цвета фона статьи - + 글의 배경색을 변경합니다. + 文字の背景色を変更します。 + 可修改字体背景颜色。 + It will change the background color of article. + Se cambiará el color de fondo del artículo. + Позволяет изменение цвета фона статьи. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 글의 배경색을 변경합니다. - 文字の背景色を変更します。 - 可修改字体背景颜色。 - It will change the background color of article. - Se cambiará el color de fondo del artículo. - Позволяет изменение цвета фона статьи. - + \ No newline at end of file diff --git a/modules/editor/components/colorpicker_text/info.xml b/modules/editor/components/colorpicker_text/info.xml index 0f8493883..6f46a6b56 100644 --- a/modules/editor/components/colorpicker_text/info.xml +++ b/modules/editor/components/colorpicker_text/info.xml @@ -1,23 +1,26 @@ - - + + 글자색 변경 文字色変更 字体颜色 Change the color of text - Cambiar el color de texto + Cambiar el color de texto Изменение цвета текста - + 글자색을 변경합니다. + 文字色を変更します。 + 可修改字体颜色。 + It will change the color of text. + Se va a cambiar el color del texto. + Позволяет изменение цвета текста. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 글자색을 변경합니다. - 文字色を変更します。 - 可修改字体颜色。 - It will change the color of text. - Se va a cambiar el color del texto. - Позволяет изменение цвета текста. - + \ No newline at end of file diff --git a/modules/editor/components/emoticon/info.xml b/modules/editor/components/emoticon/info.xml index dd8eb546f..c2c4bb72c 100644 --- a/modules/editor/components/emoticon/info.xml +++ b/modules/editor/components/emoticon/info.xml @@ -1,23 +1,26 @@ - - + + 이모티콘 출력 顔文字(イモティコン) 表情图标 Display Emoticons - Mostrar iconos gestuales + Mostrar iconos gestuales Отображение смайлов - + 이모티콘을 에디터에 삽입할 수 있습니다. + 顔文字(イモティコン)をエディターに追加することができます。 + 可以插入表情图标到编辑器。 + You may insert emoticons to editor. + Usted puede insertar emoticonos para el editor. + Вы можете вставить смыйлы в редактор. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero - zero - 이모티콘을 에디터에 삽입할 수 있습니다. - 顔文字(イモティコン)をエディターに追加することができます。 - 可以插入表情图标到编辑器。 - You may insert emoticons to editor. - Usted puede insertar emoticonos para el editor. - Вы можете вставить смыйлы в редактор. + zero + zero - + \ No newline at end of file diff --git a/modules/editor/components/image_gallery/info.xml b/modules/editor/components/image_gallery/info.xml index 175088971..a1302d874 100644 --- a/modules/editor/components/image_gallery/info.xml +++ b/modules/editor/components/image_gallery/info.xml @@ -1,23 +1,26 @@ - - + + 기본 이미지 갤러리 デフォルトイメージギャラリー 图片相册 Basic Image Gallery - Galería de imágenes básicos + Galería de imágenes básicos Базовая галлерея изображений - + 첨부된 이미지파일을 이용하여 슬라이드/목록형 이미지 갤러리를 만들 수 있습니다. + 添付されたイメージファイルを利用して、スライド型・リスト型のイメージギャラリーが作成できます。 + 利用上传的图片文件实现幻灯片式或目录型相册图片。 + It can create image gallery of slide/list style by using attached image file. + It can create image gallery of slide/list style by using attached image file. + Это может создать гллерею изображений в стиле слайдов/списка, используя вложенный файл изображения. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 첨부된 이미지파일을 이용하여 슬라이드/목록형 이미지 갤러리를 만들 수 있습니다. - 添付されたイメージファイルを利用して、スライド型・リスト型のイメージギャラリーが作成できます。 - 利用上传的图片文件实现幻灯片式或目录型相册图片。 - It can create image gallery of slide/list style by using attached image file. - It can create image gallery of slide/list style by using attached image file. - Это может создать гллерею изображений в стиле слайдов/списка, используя вложенный файл изображения. - + \ No newline at end of file diff --git a/modules/editor/components/image_link/info.xml b/modules/editor/components/image_link/info.xml index 1bf14dcae..4fd2c62be 100644 --- a/modules/editor/components/image_link/info.xml +++ b/modules/editor/components/image_link/info.xml @@ -1,23 +1,26 @@ - - + + 이미지 추가 イメージ追加 插入图像 Add Images - Añadir imágenes + Añadir imágenes Добавление изображений - + 에디터에 이미지를 추가하거나 속성을 변경할 수 있습니다. + エディターでイメージの追加、属性の変更ができます。 + 可以插入图像或编辑其相应属性。 + It can add an image to editor or change the attribution of image. + Se puede añadir una imagen a editor o cambiar la atribución de la imagen. + Это может добавить изображение в редактор или изменить параметры изображения. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 에디터에 이미지를 추가하거나 속성을 변경할 수 있습니다. - エディターでイメージの追加、属性の変更ができます。 - 可以插入图像或编辑其相应属性。 - It can add an image to editor or change the attribution of image. - Se puede añadir una imagen a editor o cambiar la atribución de la imagen. - Это может добавить изображение в редактор или изменить параметры изображения. - + \ No newline at end of file diff --git a/modules/editor/components/multimedia_link/info.xml b/modules/editor/components/multimedia_link/info.xml index c4b11db55..68ed22857 100644 --- a/modules/editor/components/multimedia_link/info.xml +++ b/modules/editor/components/multimedia_link/info.xml @@ -1,23 +1,26 @@ - - + + 멀티미디어 자료 관리 マルチメディア管理 多媒体 Manage Multimedia Data - Administrar datos multimedia + Administrar datos multimedia Управление мультимедиа данными - + 에디터에 wmv,avi,flv등의 멀티미디어 자료를 추가하거나 속성을 수정할 수 있습니다. + エディターに拡張子が「wmv,avi,flv」などのマルチメディアコンテンツを追加、または属性の修正ができます。 + 插入wmv,avi,flv等多媒体文件或修改其相应属性 。 + It can add multimedia data like wmv,avi,flv to editor or change the attribution of multimedia data. + Se pueden agregar datos multimedia como wmv, avi, flv al editor o cambiar la atribución de datos multimedia. + Это может добавить мультимедиа данные как wmv,avi,flv в редактор или изменить параметры данных мультимедиа. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 에디터에 wmv,avi,flv등의 멀티미디어 자료를 추가하거나 속성을 수정할 수 있습니다. - エディターに拡張子が「wmv,avi,flv」などのマルチメディアコンテンツを追加、または属性の修正ができます。 - 插入wmv,avi,flv等多媒体文件或修改其相应属性 。 - It can add multimedia data like wmv,avi,flv to editor or change the attribution of multimedia data. - Se pueden agregar datos multimedia como wmv, avi, flv al editor o cambiar la atribución de datos multimedia. - Это может добавить мультимедиа данные как wmv,avi,flv в редактор или изменить параметры данных мультимедиа. - + \ No newline at end of file diff --git a/modules/editor/components/naver_map/info.xml b/modules/editor/components/naver_map/info.xml index 96776ad46..1f3e47003 100644 --- a/modules/editor/components/naver_map/info.xml +++ b/modules/editor/components/naver_map/info.xml @@ -1,39 +1,43 @@ - - + + 네이버맵 연동 ネイバーマップ NAVER 地图 Naver Map Open Api - Naver mapa abierto api + Naver mapa abierto api Открытые API карт Naver - + 네이버에서 제공하는 네이버 지도 open api를 이용하여 에디터에 원하는 곳의 지도를 추가하거나 수정할 수 있습니다.\n네이버 지도 open api키를 발급 받아서 등록을 해주셔야 정상적인 사용이 가능합니다. + ネイバーから提供されるネイバーマップのOpenAPIを利用してエディターに表示したい地図を追加したり、修正したりすることができます。ネイバーマップは、OpenAPIキーを取得して登録すれば使用することができます。 + naver提供的naver地图,利用open api在编辑器里添加或修改您所需要的地图。\n为了使用naver地图首先要取得open api key,然后登录此key才可正常使用。 + You can add a map to the editor or modify it by using Naver Map open api provided by Naver.\nYou would be able to use it when you register Naver Map api key after you get it from http://www.naver.com. + Puede poner un mapa para el editor o modificarlo utilizando Naver Mapa abierta api proporcionada por Naver. \ NSe se podrá hacer uso del mismo cuando se registra Naver Mapa api clave se obtiene después de http://www.naver.com . + Вы можете добавить карту в редактор или изменить ее, используя Naver Map open api, предлагаемые Naver.\nВы сможете использовать это после регистрации ключа Naver Map API, полученного с http://www.naver.com. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 네이버에서 제공하는 네이버 지도 open api를 이용하여 에디터에 원하는 곳의 지도를 추가하거나 수정할 수 있습니다.\n네이버 지도 open api키를 발급 받아서 등록을 해주셔야 정상적인 사용이 가능합니다. - ネイバーから提供されるネイバーマップのOpenAPIを利用してエディターに表示したい地図を追加したり、修正したりすることができます。ネイバーマップは、OpenAPIキーを取得して登録すれば使用することができます。 - naver提供的naver地图,利用open api在编辑器里添加或修改您所需要的地图。\n为了使用naver地图首先要取得open api key,然后登录此key才可正常使用。 - You can add a map to the editor or modify it by using Naver Map open api provided by Naver.\nYou would be able to use it when you register Naver Map api key after you get it from http://www.naver.com. - Puede poner un mapa para el editor o modificarlo utilizando Naver Mapa abierta api proporcionada por Naver. \ NSe se podrá hacer uso del mismo cuando se registra Naver Mapa api clave se obtiene después de http://www.naver.com . - Вы можете добавить карту в редактор или изменить ее, используя Naver Map open api, предлагаемые Naver.\nВы сможете использовать это после регистрации ключа Naver Map API, полученного с http://www.naver.com. + 네이버지도 api key ネイバーマップAPIキー naver地图 api key Naver Map api key - Naver Map api key + Naver Map api key Naver Map API Ключ http://www.naver.com/ 에서 네이버 지도 API key를 발급 받으신 후 입력해주세요. http://www.naver.com/ からネイバーマップのAPIキーを取得してから入力してください。 在http://www.naver.com/ 取得naver地图 API key后输入。 Please get Naver Map API key from http://www.naver.com first and then input the key. - Por favor Naver Mapa clave de la API de http://www.naver.com primero y luego ingrese la clave. + Por favor Naver Mapa clave de la API de http://www.naver.com primero y luego ingrese la clave. Пожалуйста, получите ключ Naver Map API с http://www.naver.com и введите его. - + \ No newline at end of file diff --git a/modules/editor/components/poll_maker/info.xml b/modules/editor/components/poll_maker/info.xml index 9103daa93..31507e7cf 100644 --- a/modules/editor/components/poll_maker/info.xml +++ b/modules/editor/components/poll_maker/info.xml @@ -1,23 +1,26 @@ - - + + 설문조사 컴포넌트 アンケート調査 投票调查 Poll Component - Componente Poll + Componente Poll Компонент опросов - + 글 작성시에 설문조사를 첨부하실 수 있습니다. 설문조사 컴포넌트는 설문조사 모듈의 설정에 영향을 받습니다. + 書き込みの時、アンケート機能の追加ができます。アンケートモジュールの影響を受けます。 + 发表主题时可以附加投票调查。投票调查组件受投票调查模块设置的影响。 + You can attach a poll on writing articles. Poll component is affected by setting of poll module. + Puede adjuntar una encuesta sobre la redacción de artículos. Encuesta componente se ve afectada por la configuración de módulo de encuesta. + Вы можете присоединить опрос при написании статей. Компонент опросов зависит от настроек модуля отпросов. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 글 작성시에 설문조사를 첨부하실 수 있습니다. 설문조사 컴포넌트는 설문조사 모듈의 설정에 영향을 받습니다. - 書き込みの時、アンケート機能の追加ができます。アンケートモジュールの影響を受けます。 - 发表主题时可以附加投票调查。投票调查组件受投票调查模块设置的影响。 - You can attach a poll on writing articles. Poll component is affected by setting of poll module. - Puede adjuntar una encuesta sobre la redacción de artículos. Encuesta componente se ve afectada por la configuración de módulo de encuesta. - Вы можете присоединить опрос при написании статей. Компонент опросов зависит от настроек модуля отпросов. - + \ No newline at end of file diff --git a/modules/editor/components/quotation/info.xml b/modules/editor/components/quotation/info.xml index a1fc12438..b137ead82 100644 --- a/modules/editor/components/quotation/info.xml +++ b/modules/editor/components/quotation/info.xml @@ -1,23 +1,26 @@ - - + + 인용구 작성 引用文作成 引用 Citas célebres - Quotations + Quotations Цитаты - + 특정 범위를 인용문으로 꾸밀 수 있습니다. 외곽선의 종류나 색상, 굵기를 수정할 수 있으며 열기/닫기 기능을 가진 폴더기능을 만들 수 있습니다. + 特定範囲を引用文として表示できます。ボーダーの種類、色、太さを修正することができ、「展開・折りたたみ」の機能も可能です。 + 可以把要发表的主题特定范围用引用布置。可以修改外围线的种类或粗细,还支持展开/折叠功能。 + You can decorate specific range as quotation. The style, color or thickness of outline can be modified and folder system which has open/close function can be made. + Puedes decorar rango específico como cita. El estilo, el color o el grosor de esquema puede ser modificado y carpeta de sistema que tiene abrir / cerrar la función se puede hacer. + Вы можете украсить определенную область цитаты. Стиль, цвет или толщина внешней линии может быть изменена, и система папок, которая имеет функцию открыть/закрыть может быть создана. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 특정 범위를 인용문으로 꾸밀 수 있습니다. 외곽선의 종류나 색상, 굵기를 수정할 수 있으며 열기/닫기 기능을 가진 폴더기능을 만들 수 있습니다. - 特定範囲を引用文として表示できます。ボーダーの種類、色、太さを修正することができ、「展開・折りたたみ」の機能も可能です。 - 可以把要发表的主题特定范围用引用布置。可以修改外围线的种类或粗细,还支持展开/折叠功能。 - You can decorate specific range as quotation. The style, color or thickness of outline can be modified and folder system which has open/close function can be made. - Puedes decorar rango específico como cita. El estilo, el color o el grosor de esquema puede ser modificado y carpeta de sistema que tiene abrir / cerrar la función se puede hacer. - Вы можете украсить определенную область цитаты. Стиль, цвет или толщина внешней линии может быть изменена, и система папок, которая имеет функцию открыть/закрыть может быть создана. - + \ No newline at end of file diff --git a/modules/editor/components/table_maker/info.xml b/modules/editor/components/table_maker/info.xml index 98725ee7a..a2fb98623 100644 --- a/modules/editor/components/table_maker/info.xml +++ b/modules/editor/components/table_maker/info.xml @@ -1,23 +1,26 @@ - - + + 표(table) 생성 テーブル作成 表格 Create Table - Crear Tabla + Crear Tabla Создание таблиц - + 에디터에 표(table)을 생성하거나 표(table) 또는 칸(td)의 속성을 변경할 수 있습니다. + エディターでテーブル(table)の作成、テーブル(table)またはセル(td)の属性の変更ができます。 + 插入表格(table)或编辑表格属性。 + It can create a table on editor or modify the attribution of table or td. + Se puede crear una tabla en editor o modificar la atribución de la mesa o td. + Это может создать таблицу в редакторе или изменить ее параметры или ячейки. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 에디터에 표(table)을 생성하거나 표(table) 또는 칸(td)의 속성을 변경할 수 있습니다. - エディターでテーブル(table)の作成、テーブル(table)またはセル(td)の属性の変更ができます。 - 插入表格(table)或编辑表格属性。 - It can create a table on editor or modify the attribution of table or td. - Se puede crear una tabla en editor o modificar la atribución de la mesa o td. - Это может создать таблицу в редакторе или изменить ее параметры или ячейки. - + \ No newline at end of file diff --git a/modules/editor/components/url_link/info.xml b/modules/editor/components/url_link/info.xml index df681109c..12d3028d6 100644 --- a/modules/editor/components/url_link/info.xml +++ b/modules/editor/components/url_link/info.xml @@ -1,23 +1,26 @@ - - + + 링크 생성 リンク生成 链接 Create Link - Crear Link + Crear Link Создание ссылок - + 에디터에 링크를 추가하거나 링크의 속성을 변경할 수 있습니다. + エディターでリンクの追加、属性の変更ができます。 + 插入链接或编辑链接属性。 + It can add a link to editor or modify the attribution of link. + Puede añadir un enlace al editor o modificar la atribución de enlace. + Это может добавить ссылку в редактор или изменить ее параметры. + 0.1 + 2007-02-28 + + 제로 Zero zero zero - zero + zero zero - 에디터에 링크를 추가하거나 링크의 속성을 변경할 수 있습니다. - エディターでリンクの追加、属性の変更ができます。 - 插入链接或编辑链接属性。 - It can add a link to editor or modify the attribution of link. - Puede añadir un enlace al editor o modificar la atribución de enlace. - Это может добавить ссылку в редактор или изменить ее параметры. - + \ No newline at end of file diff --git a/modules/editor/editor.model.php b/modules/editor/editor.model.php index 9250aa6ab..af218ab1d 100644 --- a/modules/editor/editor.model.php +++ b/modules/editor/editor.model.php @@ -15,7 +15,7 @@ * 에디터의 경우 내부적으로 1~30까지의 임시 editor_seuqnece를 생성한다. * 즉 한페이지에 30개 이상의 에디터를 출력하지는 못하도록 제한되어 있다. * - * 단, 수정하는 경우 또는 파일업로드를 한 자동저장본의 경우는 getNextSequence() 값으로 저장된 editor_seqnece가 + * 단, 수정하는 경우 또는 파일업로드를 한 자동저장본의 경우는 getNextSequence() 값으로 저장된 editor_seqnece가 * 설정된다. **/ @@ -64,7 +64,7 @@ if(!$option->allow_fileupload) $allow_fileupload = false; else $allow_fileupload = true; - // 자동 저장 유무 옵션 설정 + // 자동 저장 유무 옵션 설정 if(!$option->enable_autosave) $enable_autosave = false; else $enable_autosave = true; @@ -146,16 +146,16 @@ // 에디터 동작을 위한 editor_sequence값 설정 Context::set('editor_sequence', $editor_sequence); - // 파일 첨부 관련 행동을 하기 위해 문서 번호를 upload_target_srl로 설정 + // 파일 첨부 관련 행동을 하기 위해 문서 번호를 upload_target_srl로 설정 // 신규문서일 경우 upload_target_srl=0 이고 첨부파일 관련 동작이 요청될때 이 값이 변경됨 - Context::set('upload_target_srl', $upload_target_srl); + Context::set('upload_target_srl', $upload_target_srl); // 문서 혹은 댓글의 primary key값을 세팅한다. Context::set('editor_primary_key_name', $option->primary_key_name); // 내용을 sync 맞추기 위한 content column name을 세팅한다 Context::set('editor_content_key_name', $option->content_key_name); - + /** * 에디터 컴포넌트 체크 @@ -238,7 +238,7 @@ } else { $group_list = array(); } - + // 에디터 옵션 변수를 미리 설정 $option->skin = $config->editor_skin; @@ -247,18 +247,18 @@ if(count($config->upload_file_grant)) { foreach($group_list as $group_srl => $group_info) { if(in_array($group_srl, $config->upload_file_grant)) { - $option->allow_fileupload = true; + $option->allow_fileupload = true; break; } } } else $option->allow_fileupload = true; - // 기본 컴포넌트 사용 권한 + // 기본 컴포넌트 사용 권한 $option->enable_default_component = false; if(count($config->enable_default_component_grant)) { foreach($group_list as $group_srl => $group_info) { if(in_array($group_srl, $config->enable_default_component_grant)) { - $option->enable_default_component = true; + $option->enable_default_component = true; break; } } @@ -269,18 +269,18 @@ if(count($config->enable_component_grant)) { foreach($group_list as $group_srl => $group_info) { if(in_array($group_srl, $config->enable_component_grant)) { - $option->enable_component = true; + $option->enable_component = true; break; } } } else $option->enable_component = true; - // HTML 편집 권한 + // HTML 편집 권한 $enable_html = false; if(count($config->enable_html_grant)) { foreach($group_list as $group_srl => $group_info) { if(in_array($group_srl, $config->enable_html_grant)) { - $enable_html = true; + $enable_html = true; break; } } @@ -295,7 +295,7 @@ // 높이 조절 옵션 설정 $option->resizable = $config->enable_height_resizable=='Y'?true:false; - // 자동 저장 유무 옵션 설정 + // 자동 저장 유무 옵션 설정 $option->enable_autosave = $config->enable_autosave=='Y'?true:false; // 기타 설정 @@ -422,7 +422,7 @@ $is_granted = false; foreach($group_list as $group_srl) { if(in_array($group_srl, $target_group)) { - $is_granted = true; + $is_granted = true; break; } } @@ -537,24 +537,86 @@ $xml_doc = $oParser->loadXmlFile($xml_file); // 정보 정리 - $xml_info->component_name = $component; - $xml_info->version = $xml_doc->component->attrs->version; - $xml_info->title = $xml_doc->component->title->body; - $xml_info->author->name = $xml_doc->component->author->name->body; - $xml_info->author->email_address = $xml_doc->component->author->attrs->email_address; - $xml_info->author->link = $xml_doc->component->author->attrs->link; - $xml_info->author->date = $xml_doc->component->author->attrs->date; - $xml_info->description = str_replace('\n', "\n", $xml_doc->component->author->description->body); + if($xml_doc->component->version && $xml_doc->component->attrs->version == '0.2') { + $component_info->component_name = $component; + $component_info->title = $xml_doc->component->title->body; + $component_info->description = str_replace('\n', "\n", $xml_doc->component->description->body); + $component_info->version = $xml_doc->component->version->body; + $component_info->date = $xml_doc->component->date->body; - $buff = 'component_name = "%s";', $component); - $buff .= sprintf('$xml_info->version = "%s";', $xml_info->version); - $buff .= sprintf('$xml_info->title = "%s";', $xml_info->title); - $buff .= sprintf('$xml_info->author->name = "%s";', $xml_info->author->name); - $buff .= sprintf('$xml_info->author->email_address = "%s";', $xml_info->author->email_address); - $buff .= sprintf('$xml_info->author->link = "%s";', $xml_info->author->link); - $buff .= sprintf('$xml_info->author->date = "%s";', $xml_info->author->date); - $buff .= sprintf('$xml_info->description = "%s";', $xml_info->description); + $buff = 'component_name = "%s";', $component_info->component_name); + $buff .= sprintf('$xml_info->title = "%s";', $component_info->title); + $buff .= sprintf('$xml_info->description = "%s";', $component_info->description); + $buff .= sprintf('$xml_info->version = "%s";', $component_info->version); + $buff .= sprintf('$xml_info->date = "%s";', $component_info->date); + + // 작성자 정보 + if(!is_array($xml_doc->component->author)) $author_list[] = $xml_doc->component->author; + else $author_list = $xml_doc->component->author; + + for($i=0; $i < count($author_list); $i++) { + $buff .= sprintf('$xml_info->author['.$i.']->name = "%s";', $author_list[$i]->name->body); + $buff .= sprintf('$xml_info->author['.$i.']->email_address = "%s";', $author_list[$i]->attrs->email_address); + $buff .= sprintf('$xml_info->author['.$i.']->homepage = "%s";', $author_list[$i]->attrs->link); + } + + // history + if($xml_doc->component->history) { + if(!is_array($xml_doc->component->history)) $history_list[] = $xml_doc->component->history; + else $history_list = $xml_doc->component->history; + + for($i=0; $i < count($history_list); $i++) { + sscanf($history_list[$i]->attrs->date, '%d-%d-%d', $date_obj->y, $date_obj->m, $date_obj->d); + $date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $buff .= sprintf('$xml_info->history['.$i.']->description = "%s";', $history_list[$i]->description->body); + $buff .= sprintf('$xml_info->history['.$i.']->version = "%s";', $history_list[$i]->attrs->version); + $buff .= sprintf('$xml_info->history['.$i.']->date = "%s";', $date); + + if($history_list[$i]->author) { + (!is_array($history_list[$i]->author)) ? $obj->author_list[] = $history_list[$i]->author : $obj->author_list = $history_list[$i]->author; + + for($j=0; $j < count($obj->author_list); $j++) { + $buff .= sprintf('$xml_info->history['.$i.']->author['.$j.']->name = "%s";', $obj->author_list[$j]->name->body); + $buff .= sprintf('$xml_info->history['.$i.']->author['.$j.']->email_address = "%s";', $obj->author_list[$j]->attrs->email_address); + $buff .= sprintf('$xml_info->history['.$i.']->author['.$j.']->homepage = "%s";', $obj->author_list[$j]->attrs->link); + } + } + + if($history_list[$i]->log) { + (!is_array($history_list[$i]->log)) ? $obj->log_list[] = $history_list[$i]->log : $obj->log_list = $history_list[$i]->log; + + for($j=0; $j < count($obj->log_list); $j++) { + $buff .= sprintf('$xml_info->history['.$i.']->logs['.$j.']->text = "%s";', $obj->log_list[$j]->body); + $buff .= sprintf('$xml_info->history['.$i.']->logs['.$j.']->link = "%s";', $obj->log_list[$j]->attrs->link); + } + } + } + } + + + } else { + sscanf($xml_doc->component->author->attrs->date, '%d. %d. %d', $date_obj->y, $date_obj->m, $date_obj->d); + $date = sprintf('%04d%02d%02d', $date_obj->y, $date_obj->m, $date_obj->d); + $xml_info->component_name = $component; + $xml_info->title = $xml_doc->component->title->body; + $xml_info->description = str_replace('\n', "\n", $xml_doc->component->author->description->body); + $xml_info->version = $xml_doc->component->attrs->version; + $xml_info->date = $date; + $xml_info->author->name = $xml_doc->component->author->name->body; + $xml_info->author->email_address = $xml_doc->component->author->attrs->email_address; + $xml_info->author->homepage = $xml_doc->component->author->attrs->link; + + $buff = 'component_name = "%s";', $xml_info->component_name); + $buff .= sprintf('$xml_info->title = "%s";', $xml_info->title); + $buff .= sprintf('$xml_info->description = "%s";', $xml_info->description); + $buff .= sprintf('$xml_info->version = "%s";', $xml_info->version); + $buff .= sprintf('$xml_info->date = "%s";', $xml_info->date); + $buff .= sprintf('$xml_info->author[0]->name = "%s";', $xml_info->author->name); + $buff .= sprintf('$xml_info->author[0]->email_address = "%s";', $xml_info->author->email_address); + $buff .= sprintf('$xml_info->author[0]->homepage = "%s";', $xml_info->author->homepage); + } // 추가 변수 정리 (에디터 컴포넌트에서는 text형만 가능) $extra_vars = $xml_doc->component->extra_vars->var; diff --git a/modules/editor/lang/en.lang.php b/modules/editor/lang/en.lang.php index b068b1ef7..b46a911f9 100644 --- a/modules/editor/lang/en.lang.php +++ b/modules/editor/lang/en.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "Developer"; $lang->component_link = "Link"; $lang->component_date = "Date"; + $lang->component_license = 'License'; + $lang->component_history = 'Updates'; $lang->component_description = "Description"; $lang->component_extra_vars = "Option Variable"; $lang->component_grant = "Permission Setting"; diff --git a/modules/editor/lang/es.lang.php b/modules/editor/lang/es.lang.php index 20b209619..29a251679 100644 --- a/modules/editor/lang/es.lang.php +++ b/modules/editor/lang/es.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "Autor"; $lang->component_link = "Enlace"; $lang->component_date = "Fecha"; + $lang->component_license = 'License'; + $lang->component_history = "History"; $lang->component_description = "Descripción"; $lang->component_extra_vars = "Varibles Extras"; $lang->component_grant = "Ajuste de las atribuciones"; diff --git a/modules/editor/lang/fr.lang.php b/modules/editor/lang/fr.lang.php index dbe70fa03..9630a2fa0 100644 --- a/modules/editor/lang/fr.lang.php +++ b/modules/editor/lang/fr.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "Développeur"; $lang->component_link = "Lien"; $lang->component_date = "Jour de Création"; + $lang->component_license = 'License'; + $lang->component_history = "History"; $lang->component_description = "Description"; $lang->component_extra_vars = "Variables d'Option"; $lang->component_grant = "Configuration de l'Autorisation"; diff --git a/modules/editor/lang/jp.lang.php b/modules/editor/lang/jp.lang.php index e4794928f..241516005 100644 --- a/modules/editor/lang/jp.lang.php +++ b/modules/editor/lang/jp.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "作者"; $lang->component_link = "リンク"; $lang->component_date = "作成日"; + $lang->component_license = 'License'; + $lang->component_history = "History"; $lang->component_description = "説明"; $lang->component_extra_vars = "設定変数"; $lang->component_grant = "権限設定"; diff --git a/modules/editor/lang/ko.lang.php b/modules/editor/lang/ko.lang.php index 24d9c1572..b66e81e4e 100644 --- a/modules/editor/lang/ko.lang.php +++ b/modules/editor/lang/ko.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "제작자 "; $lang->component_link = "링크"; $lang->component_date = "제작일"; + $lang->component_license = '라이센스'; + $lang->component_history = '변경 이력'; $lang->component_description = "설명"; $lang->component_extra_vars = "설정 변수"; $lang->component_grant = "권한설정"; diff --git a/modules/editor/lang/ru.lang.php b/modules/editor/lang/ru.lang.php index 6f1dab729..844ec247b 100644 --- a/modules/editor/lang/ru.lang.php +++ b/modules/editor/lang/ru.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "Разработчик"; $lang->component_link = "Ссылка"; $lang->component_date = "Дата"; + $lang->component_license = 'License'; + $lang->component_history = "History"; $lang->component_description = "Описание"; $lang->component_extra_vars = "Экстра перем."; $lang->component_grant = "Настройки прав доступа"; diff --git a/modules/editor/lang/zh-CN.lang.php b/modules/editor/lang/zh-CN.lang.php index 66cdfd8ca..fa38d1f03 100644 --- a/modules/editor/lang/zh-CN.lang.php +++ b/modules/editor/lang/zh-CN.lang.php @@ -11,6 +11,8 @@ $lang->component_author = "作者"; $lang->component_link = "链接"; $lang->component_date = "编写日期"; + $lang->component_license = 'License'; + $lang->component_history = "History"; $lang->component_description = "说明"; $lang->component_extra_vars = "变数设置"; $lang->component_grant = "权限设置"; diff --git a/modules/editor/tpl/admin_index.html b/modules/editor/tpl/admin_index.html index 9aa8ebbdf..b88752268 100644 --- a/modules/editor/tpl/admin_index.html +++ b/modules/editor/tpl/admin_index.html @@ -38,8 +38,12 @@ {$xml_info->title}
    ({$component_name}) {$xml_info->version} - {$xml_info->author->name} - {$xml_info->author->date} + + + {$author->name} + + + {zdate($xml_info->date, 'Y-m-d')} {$lang->cmd_setup} diff --git a/modules/editor/tpl/setup_component.html b/modules/editor/tpl/setup_component.html index a10773e30..0d1f117a2 100644 --- a/modules/editor/tpl/setup_component.html +++ b/modules/editor/tpl/setup_component.html @@ -20,12 +20,18 @@ {$lang->component_author} - {$component->author->name} + + + {$author->name} ({$author->homepage}, {$author->email_address})
    + + + {$lang->component_link} - {$component->author->link} + {$component->link} + diff --git a/modules/editor/tpl/view_component.html b/modules/editor/tpl/view_component.html index f1898e826..9b4946c19 100644 --- a/modules/editor/tpl/view_component.html +++ b/modules/editor/tpl/view_component.html @@ -11,12 +11,32 @@ {$lang->component_author} - {$component->author->name} + + + {$author->name} ({$author->homepage}, {$author->email_address})
    + + - {$lang->component_link} - {$component->author->link} + {$lang->homepage} + {$component->homepage} + + + {$lang->regdate} + {zdate($component->date, 'Y-m-d')} + + + + {$lang->layout_license} + + {nl2br(trim($component->license))} + +

    {$component->license_link}

    + + + + {$lang->component_description} {nl2br(trim($component->description))} @@ -24,6 +44,47 @@
    + +
    +

    {$lang->component_history}

    +
    + +
    + + + + + + + + + + +
    + {$history->version}
    + {zdate($history->date, 'Y-m-d')} +
    + +

    {$author->name} ({$author->homepage} / {$author->email_address})

    + + +

    {nl2br(trim($history->description))}

    + + + + +
    +
    + + From e8d0fc51018b52ed105004d7ab5b55d1a0d50e9c Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 03:49:04 +0000 Subject: [PATCH 58/71] #494 git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4368 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/config/func.inc.php b/config/func.inc.php index 209127f7e..1570b3fb4 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -515,11 +515,7 @@ **/ function getScriptPath() { static $url = null; - if($url === null) { - $document_root = str_replace('\\','/',realpath($_SERVER['DOCUMENT_ROOT'])); - $file = str_replace('\\','/',__FILE__); - $url = preg_replace('/index.php/i','',str_replace('config/func.inc.php','',str_replace($document_root, '', $file))); - } + if($url == null) $url = preg_replace('/index.php$/i','',str_replace('\\','/',$_SERVER['SCRIPT_NAME'])); return $url; } From 1e69961d55c16b626654013ad2346a22999b2601 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 05:07:48 +0000 Subject: [PATCH 59/71] =?UTF-8?q?=EC=8D=B8=EB=84=A4=EC=9D=BC=20=EB=A7=8C?= =?UTF-8?q?=EB=93=9C=EB=8A=94=20=EB=A1=9C=EC=A7=81=EC=9D=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=ED=95=98=EC=97=AC=20=ED=95=9C=EB=B2=88=EC=97=90=20?= =?UTF-8?q?=EC=8D=B8=EB=84=A4=EC=9D=BC=EC=9D=84=20=EB=A7=8C=EB=93=A4=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95.?= =?UTF-8?q?=20=EC=8D=B8=EB=84=A4=EC=9D=BC=20=ED=81=AC=EA=B8=B0=EB=B3=B4?= =?UTF-8?q?=EB=8B=A4=20=EC=9E=91=EC=9D=80=20=EC=99=B8=EB=B6=80=20=EB=A7=81?= =?UTF-8?q?=ED=81=AC=20=EC=9D=B4=EB=AF=B8=EC=A7=80=EB=8A=94=20=EB=AC=B4?= =?UTF-8?q?=EC=8B=9C=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4369 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/file/FileHandler.class.php | 18 +++++---- modules/document/document.item.php | 65 +++++++++++++++++++----------- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 4ed2c7ab8..f32811b8e 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -258,10 +258,10 @@ // 이미지 정보가 정해진 크기보다 크면 크기를 바꿈 (%를 구해서 처리) if($resize_width > 0 && $width >= $resize_width) $width_per = $resize_width / $width; - else $width_per = $width / $resize_width; + else $width_per = 1; if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height; - else $height_per = $height / $resize_height; + else $height_per = 1; if($thumbnail_type == 'ratio') { if($width_per>$height_per) $per = $height_per; @@ -309,10 +309,6 @@ return; } - // 디렉토리 생성 - $path = preg_replace('/\/([^\.^\/]*)\.(gif|png|jpg|jpeg|bmp|wbmp)$/i','',$target_file); - FileHandler::makeDir($path); - // 원본 이미지의 크기를 조절해서 임시 이미지에 넣음 $new_width = (int)($width * $per); $new_height = (int)($height * $per); @@ -328,7 +324,11 @@ if($source) { if(function_exists('imagecopyresampled')) @imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); else @imagecopyresized($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); - } + } else return false; + + // 디렉토리 생성 + $path = dirname($target_file); + if(!is_dir($path)) FileHandler::makeDir($path); // 파일을 쓰고 끝냄 switch($target_type) { @@ -348,8 +348,10 @@ break; } - if(!$output) return false; + @imagedestroy($thumb); + @imagedestroy($source); + if(!$output) return false; @chmod($target_file, 0644); return true; diff --git a/modules/document/document.item.php b/modules/document/document.item.php index b10b184eb..13e8a5612 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -459,12 +459,15 @@ $modified_time = $this->get('last_update'); // 만약 글의 수정시간보다 이후에 만들어진 썸네일이라면 썸네일 크기에 따라서 경로 또는 빈 문자열을 return - if($modified_time < $file_created_time) return filesize($thumbnail_file)>0?$thumbnail_url:''; + if($modified_time < $file_created_time && filesize($thumbnail_file)>0) return $thumbnail_url; + else return false; } - FileHandler::writeFile($thumbnail_file, '','w'); + // 대상 파일 + $source_file = null; + $is_tmp_file = false; - // 문서에 첨부된 파일이 있으면 첫번째 멀티미디어 파일을 구함 + // 첨부된 파일중 이미지 파일이 있으면 찾음 if($this->hasUploadedFiles()) { $file_list = $this->getUploadedFiles(); if(count($file_list)) { @@ -472,33 +475,49 @@ if($file->direct_download!='Y') continue; if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$file->source_filename)) continue; - $filename = $file->uploaded_filename; - if(!file_exists($filename)) continue; - - if(FileHandler::createImageFile($filename, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type)) return Context::getRequestUri().$thumbnail_file; + $source_file = $file->uploaded_filename; + if(!file_exists($source_file)) continue; + else break; } } } // 첨부된 파일이 없으면 내용중 이미지 파일을 구함 - $content = $this->get('content'); - $target_src = null; - preg_match_all("!src=(\"|')([^\"' ]*?)(\"|')!is", $content, $matches, PREG_SET_ORDER); - $cnt = count($matches); - for($i=0;$i<$cnt;$i++) { - $target_src = $matches[$i][2]; - if(preg_match('/\/(common|modules|widgets|addons|layouts)\//i', $target_src)) continue; - else { - if(!preg_match('/^(http|https):\/\//i',$target_src)) $target_src = Context::getRequestUri().$target_src; - $tmp_file = sprintf('./files/cache/tmp/%d', md5(rand(111111,999999).$this->document_srl)); - FileHandler::getRemoteFile($target_src, $tmp_file); - if(!file_exists($tmp_file)) continue; - $output = FileHandler::createImageFile($tmp_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); - FileHandler::removeFile($tmp_file); - if($output) return Context::getRequestUri().$thumbnail_file; + if(!$source_file) { + $content = $this->get('content'); + $target_src = null; + preg_match_all("!src=(\"|')([^\"' ]*?)(\"|')!is", $content, $matches, PREG_SET_ORDER); + $cnt = count($matches); + for($i=0;$i<$cnt;$i++) { + $target_src = $matches[$i][2]; + if(preg_match('/\/(common|modules|widgets|addons|layouts)\//i', $target_src)) continue; + else { + if(!preg_match('/^(http|https):\/\//i',$target_src)) $target_src = Context::getRequestUri().$target_src; + $tmp_file = sprintf('./files/cache/tmp/%d', md5(rand(111111,999999).$this->document_srl)); + FileHandler::getRemoteFile($target_src, $tmp_file); + if(!file_exists($tmp_file)) continue; + else { + list($_w, $_h, $_t, $_a) = @getimagesize($tmp_file); + if($_w<$width || $_h<$height) continue; + + $source_file = $tmp_file; + $is_tmp_file = true; + break; + } + } } } + $output = FileHandler::createImageFile($source_file, $thumbnail_file, $width, $height, 'jpg', $thumbnail_type); + + if($is_tmp_file) FileHandler::removeFile($source_file); + + // 썸네일 생성 성공시 경로 return + if($output) return $thumbnail_url; + + // 차후 다시 썸네일 생성을 시도하지 않기 위해 빈 파일을 생성 + else FileHandler::writeFile($thumbnail_file, '','w'); + return; } @@ -530,7 +549,7 @@ preg_match_all('!]*?)>!is', $content, $matches); $cnt = count($matches[0]); for($i=0;$i<$cnt;$i++) { - if(preg_match('/src=("|\'|\.|\/)*(common|modules|widgets|layouts)/i', $matches[0][$i])) continue; + if(preg_match('/src=("|\'|\.|\/)*(common|modules|widgets|addons|layouts)/i', $matches[0][$i])) continue; $buffs[] = "image"; $check_files = true; break; From 5e4347ca0bda7c6ab4c90a0c38aac2cad9dc5254 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 05:12:34 +0000 Subject: [PATCH 60/71] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=EC=9D=98=20?= =?UTF-8?q?=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC=20=EC=9C=A0=EB=AC=B4?= =?UTF-8?q?=EB=93=B1=EC=9D=98=20=ED=91=9C=EC=8B=9C=EC=8B=9C=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=EC=9D=98=20=EC=9D=B4=EB=AF=B8=EC=A7=80=EC=99=80=20?= =?UTF-8?q?=EC=B2=A8=EB=B6=80=EB=90=9C=20=ED=8C=8C=EC=9D=BC=20=EC=9C=A0?= =?UTF-8?q?=EB=AC=B4=20=EC=95=84=EC=9D=B4=EC=BD=98=EC=9D=84=20=EB=B3=84?= =?UTF-8?q?=EB=8F=84=EB=A1=9C=20=ED=91=9C=EC=8B=9C=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4370 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 13e8a5612..57085512f 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -562,8 +562,7 @@ } // 첨부파일 체크 - if(!$check_files && $this->hasUploadedFiles()) $buffs[] = "file"; - + if($this->hasUploadedFiles()) $buffs[] = "file"; return $buffs; } From 60f8e724b9bb1123d5311bad5abec76bec31853d Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 05:49:54 +0000 Subject: [PATCH 61/71] =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=EC=8B=9C=20=EC=98=81=EB=AC=B8=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=9D=B4=20=EC=95=84=EB=8B=88=EB=9D=BC=EC=84=9C=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=EA=B0=80=20=EC=95=88=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=ED=8C=8C=EC=9D=BC=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EC=9D=84=20=EB=B3=80=ED=99=98=ED=95=98=EC=97=AC=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD.=20=EC=9C=88=EB=8F=84=EC=9A=B0?= =?UTF-8?q?=EC=84=9C=EB=B2=84=EC=97=90=EC=84=9C=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=EB=A5=BC=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=BD=94=EB=93=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@4371 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/file/file.controller.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 29d7a016c..17d0e6d76 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -279,8 +279,14 @@ if(!FileHandler::makeDir($path)) return false; // 파일 이동 - if(!$manual_insert&&!move_uploaded_file($file_info['tmp_name'], $filename)) return false; - elseif($manual_insert) @copy($file_info['tmp_name'], $filename); + if($manual_insert) @copy($file_info['tmp_name'], $filename); + else { + if(!@move_uploaded_file($file_info['tmp_name'], $filename)) { + $ext = substr(strrchr($file_info['name'],'.'),1); + $filename = $path. md5(crypt(rand(1000000,900000).$file_info['name'])).'.'.$ext; + if(!@move_uploaded_file($file_info['tmp_name'], $filename)) return false; + } + } // 사용자 정보를 구함 $oMemberModel = &getModel('member'); From 943b24282715d75c9cddf7dcd210a4bbd369b4a4 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 06:04:08 +0000 Subject: [PATCH 62/71] =?UTF-8?q?=EA=B8=80=EC=9D=84=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=ED=95=98=EA=B1=B0=EB=82=98=20=EC=82=AD=EC=A0=9C=EC=8B=9C?= =?UTF-8?q?=EC=97=90=20=EC=8D=B8=EB=84=A4=EC=9D=BC=20=EB=94=94=EB=A0=89?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=EB=A5=BC=20=EC=A0=9C=EA=B1=B0=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4372 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.controller.php | 6 ++++++ modules/document/document.item.php | 10 +++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index 3d9912f48..8eebfa227 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -265,6 +265,9 @@ // commit $oDB->commit(); + // 썸네일 파일 제거 + FileHandler::removeDir(sprintf('files/cache/thumbnails/%s',getNumberingPath($obj->document_srl, 3))); + $output->add('document_srl',$obj->document_srl); return $output; } @@ -316,6 +319,9 @@ } } + // 썸네일 파일 제거 + FileHandler::removeDir(sprintf('files/cache/thumbnails/%s',getNumberingPath($document_srl, 3))); + // commit $oDB->commit(); diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 57085512f..ccaec2f04 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -453,14 +453,10 @@ $thumbnail_file = sprintf('%s%dx%d.%s.jpg', $thumbnail_path, $width, $height, $thumbnail_type); $thumbnail_url = Context::getRequestUri().$thumbnail_file; - // 썸네일 파일이 있을 경우 글의 시간과 비교하고 크기를 비교하여 true | false를 return + // 썸네일 파일이 있을 경우 파일의 크기가 0 이면 return false 아니면 경로 return if(file_exists($thumbnail_file)) { - $file_created_time = date("YmdHis",filemtime($thumbnail_file)); - $modified_time = $this->get('last_update'); - - // 만약 글의 수정시간보다 이후에 만들어진 썸네일이라면 썸네일 크기에 따라서 경로 또는 빈 문자열을 return - if($modified_time < $file_created_time && filesize($thumbnail_file)>0) return $thumbnail_url; - else return false; + if(filesize($thumbnail_file)<1) return false; + else return $thumbnail_url; } // 대상 파일 From e3ec34e1aa7e197d80fc2afad2d3bd21891d2ee8 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 06:06:52 +0000 Subject: [PATCH 63/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4373 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/document/document.item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/document/document.item.php b/modules/document/document.item.php index ccaec2f04..3d7c66913 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -472,7 +472,7 @@ if(!preg_match("/\.(jpg|png|jpeg|gif|bmp)$/i",$file->source_filename)) continue; $source_file = $file->uploaded_filename; - if(!file_exists($source_file)) continue; + if(!file_exists($source_file)) $source_file = null; else break; } } From f1a891558ee9bb57c2ba919488d68f8ec83fa6fd Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 09:57:29 +0000 Subject: [PATCH 64/71] =?UTF-8?q?=EC=84=A4=EC=B9=98=EB=90=9C=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EA=B3=BC=20=EC=84=A4=EC=B9=98=EB=90=9C=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=EC=9D=98=20=EA=B3=B5=EC=8B=9D=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=EC=9D=98=20=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EB=B9=84?= =?UTF-8?q?=EA=B5=90=ED=95=98=EB=8A=94=20tool=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@4374 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/admin/admin.admin.view.php | 2 +- modules/lifepod/skins/xe_official/.temp.swp | Bin 12288 -> 0 bytes modules/point/tpl/.action_config.html.swp | Bin 12288 -> 0 bytes tools/validator/index.php | 135 ++++++++++++++++++++ tools/validator/lang/ko.lang.php | 13 ++ tools/validator/style.css | 18 +++ tools/validator/validator.html | 92 +++++++++++++ 7 files changed, 259 insertions(+), 1 deletion(-) delete mode 100644 modules/lifepod/skins/xe_official/.temp.swp delete mode 100644 modules/point/tpl/.action_config.html.swp create mode 100644 tools/validator/index.php create mode 100644 tools/validator/lang/ko.lang.php create mode 100644 tools/validator/style.css create mode 100644 tools/validator/validator.html diff --git a/modules/admin/admin.admin.view.php b/modules/admin/admin.admin.view.php index 90dea6c00..dd95887ce 100644 --- a/modules/admin/admin.admin.view.php +++ b/modules/admin/admin.admin.view.php @@ -54,7 +54,7 @@ function dispAdminIndex() { // 공식사이트에서 최신 뉴스를 가져옴 $newest_news_url = sprintf("http://news.zeroboard.com/%s/news.php", Context::getLangType()); - $cache_file = sprintf("./files/cache/newest_news.%s.cache.php", Context::getLangType()); + $cache_file = sprintf("%sfiles/cache/newest_news.%s.cache.php", _XE_PATH_,Context::getLangType()); // 1시간 단위로 캐싱 체크 if(!file_exists($cache_file) || filemtime($cache_file)+ 60*60 < time()) { diff --git a/modules/lifepod/skins/xe_official/.temp.swp b/modules/lifepod/skins/xe_official/.temp.swp deleted file mode 100644 index c6e28cb67893d1beb46b620f97bfe0f8a6120956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&Pfx-y7zXgd$%}uYUtmsSG;u5H0i&?Qlkwom;K_t^YZnS*Yt|y5(U0Pn@uHu} z19mbl27+gN-lSRfK3%u|j@!c8{mrdY_iMz~79nqI57(dX)yl^KA$r_lY0+O&f0|_1 zc>P(BszI2@sNFIBgg%8MLHijWBtp|f#zJMB>YhwB9f@`p$1;*Ep+@x8l7~PH0SGJ> z7?{{QUvHhAp49f-U1w*zwRkQP2tWV=5P$##AOHafKwu>WjH-}{-C4C96?-fO3IY&- z00bZa0SG_<0uX=z1Rwx`)e&HvkoqPecXkxt|BLqklk)s)V|Dh4oj?Er5P$##AOHaf zKmY;|fWW^MXy_=H$~b1MMAJ25WN4Q?vT4_KbRIR`jxp+j(&2FEmw%`GQReq@%9NxL zOGL_9?sv5tH0bogfH<~nbjA7M^FC*Wd4c32H8PeW_ku9v~0@U&sMDKqzX dXm2tnGSVbsPM?eEgUBqMlNOtuwT~_d`36w~gR}qu diff --git a/modules/point/tpl/.action_config.html.swp b/modules/point/tpl/.action_config.html.swp deleted file mode 100644 index 156b9fe588f5b3ebbeb8f14e3be53a5f5cda8aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2O>fjj7{`ZRpyjPpr4kneoKmg4_IN$**kjq_ydjW4 zocIJ>xgn6s+ks2fOFu!+s22|OP$7ZTQ+sIt_BybeYzfFGqQ}xt*>xU2^E|&K&qT=# zyO++M<0m^^hU-(t{#m(mX6~Eo>{`Ourp!%sd$-F(kqTs|3eV!K6Bs-@>$+M+xUmgQ zP`H~zH!)$UW#MKd= z@y|cI_?`(UoD7fwGC&5%02v?yWPl8ife+n)&GxZ>(Zol<0s9*8fi5yY2FL&zAOmE8 z43GgbKnBPF86X2>V2>E^L&l!%XYB3)G=%^ESAPTe?I>dpztn_& z_yK$mR=~I582APCJ_e6KRr?)47a1S}WPl8i0Wz@140xU!nLO#^R|{O88>-cQ{jz>r zWPZv6?H5H)3`=WGD*B#Ev(j?Ak;$GY%3-3c;H$na@%Hi;+D}JLKS;tsE=Q`cxnCVU zydtL;i$G;66gemIDfmIEA&oTz<#KGNy$h(Y;{gu3?&X#E0m z^0lRIcian>d}GbV{Vfso8O*^{!YiJOfI8aSDjT=nxdExAm2WM7I-+&)Z_>3az07tq zzb&F|=@aQ%mL85J;0$geQ~Q74H#>sbHZZ+x%N|r($lT%-@Y{OW8Pv9i>5MIVXoTRX zbGiE$Vlt|27uyzY*+%1JvcMU0Xhu}qHnydl*+yVA=JR+!Rj=1nXycw(9?!aFa8<*X z2U2TH@j#`cp1>q*hGadNt0B2OHO41~yh*M9Gt9#tGq2J>m!Vw1DzWrKnb$|<#bUMTQ~_VABr~~P5ZF7A-`$b9v!3X2_ + * @brief 현재 설치된 버전에 해당하는 XE 파일 비교 + **/ + + /** + * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 + **/ + define('__ZBXE__', true); + + /** + * @brief 필요한 설정 파일들을 include + **/ + require_once('../../config/config.inc.php'); + + // id/ password 구함 + $id = $_POST['id']; + $pw = $_POST['pw']; + + // 저장되어 있는 비밀번호와 비교 + $oContext = &Context::getInstance(); + $oContext->init(); + $db_info = $oContext->getDBInfo(); + + // install 모듈의 언어파일을 로드 + Context::loadLang(_XE_PATH_.'modules/install/lang'); + Context::loadLang(_XE_PATH_.'modules/admin/lang'); + Context::loadLang(_XE_PATH_.'tools/validator/lang'); + + // 설치가 되어 있지 않을 경우 + if(!Context::isInstalled()) { + + $msg = Context::getLang('msg_db_not_setted'); + + // 인증 정보가 없을 경우 + } elseif(!isset($id) || !isset($pw)) { + + + // 입력된 정보와 저장된 정보 비교 + } else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) { + + if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id')); + else $msg = sprintf($lang->filter->equalto, Context::getLang('password')); + + // 출력 + } else if($id === $db_info->db_userid && $pw === $db_info->db_password) { + + // 현재 버전을 구함 + $ver = __ZBXE_VERSION__; + + // 현재 버전에 맞는 배포 정보를 구함 + $header = "GET /validatorLogs/{$ver}.log HTTP/1.0\r\nHost: news.zeroboard.com\r\n\r\n"; + $is_started = false; + $f = fsockopen('news.zeroboard.com', 80); + fputs($f, $header); + while($buff = fgets($f, 1024)) { + if(!trim($buff)) $is_started = true; + if($is_started && trim($buff)) { + $buff = trim($buff); + $pos = strpos($buff,','); + $size = (int)substr($buff,0,$pos); + $filename = substr($buff,$pos+1); + if($filename && $size) $source[$filename] = $size; + } + } + fclose($f); + + if(!count($source)) $msg = Context::getLang('msg_cannot_get_source_files'); + else { + + // 현재 설치된 디렉토리와 비교 + $avoid_path = array(_XE_PATH_.'files'); + getFiles(_XE_PATH_, _XE_PATH_, $avoid_path, $target); + if(!count($target)) $msg = Context::getLang('msg_cannot_get_target_files'); + else { + // 파일 수를 지정 + Context::set('source_cnt', count($source)); + Context::set('target_cnt', count($target)); + + // 최신 버전 정보 구함 + $oAdminView = &getAdminView('admin'); + $oAdminView->dispAdminIndex(); + + // 누락된 파일 구함 + $leaveouts = array(); + foreach($source as $key => $val) { + if(!isset($target[$key])) $leaveouts[] = $key; + } + Context::set('leaveouts', $leaveouts); + + // 수정된 파일 구함 + $modified = array(); + foreach($source as $key => $val) { + if(isset($target[$key]) && $val!=$target[$key]) $modified[] = $key; + } + Context::set('modified', $modified); + + // 추가된 파일 구함 + $added = array(); + foreach($target as $key => $val) { + if(!isset($source[$key])) $added[] = $key; + } + Context::set('added', $added); + } + } + } + + Context::set('msg', $msg); + + $oTemplate = &TemplateHandler::getInstance(); + print $oTemplate->compile('./tools/validator/','validator'); + + // recursive하게 돌면서 파일 정보 수집 + function getFiles($path, $base_path, $avoid_path, &$buff) { + if(substr($path,-1)=='/') $path = substr($path,0,-1); + if(substr($base_path,-1)=='/') $base_path = substr($base_path,0,-1); + if(in_array($path, $avoid_path)) return; + + $oDir = dir($path); + while($item = $oDir->read()) { + if(substr($item,0,1)=='.' && $item != '.htaccess' ) continue; + $new_path = $path.'/'.$item; + if(!is_dir($new_path)) { + $filesize = filesize($new_path); + $filename = substr($new_path, strlen($base_path)+1); + $buff[$filename] = $filesize; + } else { + getFiles($new_path, $base_path, $avoid_path, $buff); + } + } + $oDir->close(); + } +?> diff --git a/tools/validator/lang/ko.lang.php b/tools/validator/lang/ko.lang.php new file mode 100644 index 000000000..9abd02b6f --- /dev/null +++ b/tools/validator/lang/ko.lang.php @@ -0,0 +1,13 @@ +msg_cannot_get_source_files = '원본 파일을 다운로드 하지 못했습니다'; + $lang->msg_cannot_get_target_files = '설치된 대상 파일의 목록을 구하지 못했습니다'; + + $lang->files_count = '파일 수'; + $lang->source_files = '원본 파일'; + $lang->target_files = '대상 파일'; + + $lang->leaveout_files = '누락된 파일'; + $lang->modified_files = '수정된 파일'; + $lang->additional_files = '추가된 파일'; +?> diff --git a/tools/validator/style.css b/tools/validator/style.css new file mode 100644 index 000000000..68e48c237 --- /dev/null +++ b/tools/validator/style.css @@ -0,0 +1,18 @@ +h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; } +hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; } +blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;} + +code { display:block; clear:both; margin-bottom:10px;} +code label { float:left; display:block; width:150px; } +code input { display:block; width:150px; border:1px solid #AAAAAA; } + +input.submit { width:300px; border:1px solid #AAAAAA;} + +div.back { font-size:9pt; text-align:right; margin-bottom:10px; } +div.back a { text-decoration:none; color:#888888; } + +table { width:100%; border:none; font-size:9pt; background-color:#CCCCCC; } +table thead th { background-color:#EFEFEF; padding:3px 0 3px 0; } +table tbody th { background-color:#F3F3F3; vertical-align:top; color:#888888; padding:3px 0 3px 0; } +table tbody td { background-color:#FFFFFF; font-family:verdana; padding:3px; } + diff --git a/tools/validator/validator.html b/tools/validator/validator.html new file mode 100644 index 000000000..05c6877d8 --- /dev/null +++ b/tools/validator/validator.html @@ -0,0 +1,92 @@ + + + + + + XE Cache Cleaner + + + + +

    XE File Validator

    +
    + + +
    {$msg}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     {$lang->source_files}{$lang->target_files}
    {$lang->current_version}{__ZBXE_VERSION__}
    {$lang->released_version}{$released_version}
    {$lang->current_path}{_XE_PATH_}
    {$lang->files_count}{$source_cnt}{$target_cnt}
    {$lang->leaveout_files} ({count($leaveouts)}) + + {$val}
    + +
    {$lang->modified_files} ({count($modified)})  + + {$val}
    + +
    {$lang->additional_files} ({count($added)})  + + {$val}
    + +
    + +
    + + + + + + + + + + + +
    + + + From 349b25586c193db6fb3d5808ca6da5348b6df921 Mon Sep 17 00:00:00 2001 From: zero Date: Wed, 16 Jul 2008 10:16:39 +0000 Subject: [PATCH 65/71] =?UTF-8?q?tools=EC=97=90=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=ED=95=9C=20=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC=9D=84=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=EC=8B=9C=20getScriptPath()=EA=B0=80=20?= =?UTF-8?q?=EC=98=A4=EB=8F=99=EC=9E=91=ED=95=98=EB=8A=94=20=EA=B2=83?= =?UTF-8?q?=EC=9D=84=20=EB=A7=89=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4375 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 1570b3fb4..9430d113b 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -515,7 +515,7 @@ **/ function getScriptPath() { static $url = null; - if($url == null) $url = preg_replace('/index.php$/i','',str_replace('\\','/',$_SERVER['SCRIPT_NAME'])); + if($url == null) $url = preg_replace('/\/tools\/([a-z\_]+)/i','',preg_replace('/index.php$/i','',str_replace('\\','/',$_SERVER['SCRIPT_NAME']))); return $url; } From d98583921d1b265202c078090715861b179ecc8e Mon Sep 17 00:00:00 2001 From: bnu Date: Wed, 16 Jul 2008 14:47:20 +0000 Subject: [PATCH 66/71] =?UTF-8?q?#490=20=EC=9D=BC=EB=B0=98ID=EA=B0=80=20Op?= =?UTF-8?q?enID=EB=A1=9C=20=EC=9D=B8=EC=8B=9D=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=EC=88=98=EC=A0=95=20=20=20*=20OpenID?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B8=EC=8B=9D=EB=90=98=EC=96=B4=20=EB=B9=84?= =?UTF-8?q?=EB=B0=80=EB=B2=88=ED=98=B8=20=EB=B3=80=EA=B2=BD=EC=9D=B4=20?= =?UTF-8?q?=EB=B6=88=EA=B0=80=ED=95=9C=20=EB=AC=B8=EC=A0=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4376 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/member/member.controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index 2ca7a8c14..40c228def 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -978,7 +978,7 @@ } // 오픈아이디인지 체크 (일단 아이디 형식으로만 결정) - if(preg_match("/^([0-9a-z]+)$/is", $member_info->user_id)) $member_info->is_openid = false; + if(preg_match("/^([_0-9a-zA-Z]+)$/is", $member_info->user_id)) $member_info->is_openid = false; else $member_info->is_openid = true; // 로그인 처리를 위한 세션 설정 From b206a075247b9348ffc57bf2ba8c6d4227def249 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 17 Jul 2008 02:17:01 +0000 Subject: [PATCH 67/71] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80/=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=82=AD=EC=A0=9C=EC=8B=9C=20=EC=B2=A8=EB=B6=80?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EC=9D=84=20=EC=A0=95=ED=99=95=ED=9E=88=20?= =?UTF-8?q?=EC=B6=94=EC=A0=81=ED=95=98=EC=97=AC=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4377 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/file/FileHandler.class.php | 19 ++++++++++++++++ modules/file/file.admin.controller.php | 29 ++++++++++++++++++++----- modules/file/file.controller.php | 14 +++++++----- modules/file/queries/getModuleFiles.xml | 8 +++++++ 4 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 modules/file/queries/getModuleFiles.xml diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index f32811b8e..72c65984a 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -157,6 +157,25 @@ @rmdir($path); } + /** + * @brief 지정된 디렉토리에 내용이 없으면 삭제 + **/ + function removeBlankDir($path) { + $item_cnt = 0; + + $path = FileHandler::getRealPath($path); + if(!is_dir($path)) return; + $directory = dir($path); + while($entry = $directory->read()) { + if ($entry == "." || $entry == "..") continue; + if (is_dir($path."/".$entry)) $item_cnt = FileHandler::removeBlankDir($path.'/'.$entry); + } + $directory->close(); + + if($item_cnt < 1) @rmdir($path); + } + + /** * @biref 지정된 디렉토리를 제외한 모든 파일을 삭제 **/ diff --git a/modules/file/file.admin.controller.php b/modules/file/file.admin.controller.php index 48c1709e9..cc984d708 100644 --- a/modules/file/file.admin.controller.php +++ b/modules/file/file.admin.controller.php @@ -17,15 +17,34 @@ * @brief 특정 모두의 첨부파일 모두 삭제 **/ function deleteModuleFiles($module_srl) { + // 전체 첨부파일 목록을 구함 + $args->module_srl = $module_srl; + $output = executeQuery('file.getModuleFiles',$args); + if(!$output) return $output; + $files = $output->data; + + // DB에서 삭제 $args->module_srl = $module_srl; $output = executeQuery('file.deleteModuleFiles', $args); if(!$output->toBool()) return $output; - // 실제 파일 삭제 - $path[0] = sprintf("./files/attach/images/%s/", $module_srl); - $path[1] = sprintf("./files/attach/binaries/%s/", $module_srl); - FileHandler::removeDir($path[0]); - FileHandler::removeDir($path[1]); + // 실제 파일 삭제 (일단 약속에 따라서 한번에 삭제) + FileHandler::removeDir( sprintf("./files/attach/images/%s/", $module_srl) ) ; + FileHandler::removeDir( sprintf("./files/attach/binaries/%s/", $module_srl) ); + + // DB에서 구한 파일 목록을 삭제 + $path = array(); + $cnt = count($files); + for($i=0;$i<$cnt;$i++) { + $uploaded_filename = $files[$i]->uploaded_filename; + FileHandler::removeFile($uploaded_filename); + + $path_info = pathinfo($uploaded_filename); + if(!in_array($path_info['dirname'], $path)) $path[] = $path_info['dirname']; + } + + // 해당 글의 첨부파일 디렉토리 삭제 + for($i=0;$itoBool()) return $output; // 실제 파일 삭제 + $path = array(); $file_count = count($file_list); - for($i=0;$iuploaded_filename; + FileHandler::removeFile($uploaded_filename); $module_srl = $file_list[$i]->module_srl; - $path[0] = sprintf("./files/attach/images/%s/%s/", $module_srl, $upload_target_srl); - $path[1] = sprintf("./files/attach/binaries/%s/%s/", $module_srl, $upload_target_srl); - FileHandler::removeDir($path[0]); - FileHandler::removeDir($path[1]); + $path_info = pathinfo($uploaded_filename); + if(!in_array($path_info['dirname'], $path)) $path[] = $path_info['dirname']; } + // 해당 글의 첨부파일 디렉토리 삭제 + for($i=0;$i + + + + + + + From 0fddaf252fb712ec40f9dbc1564e5d07074f77a9 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 17 Jul 2008 03:30:49 +0000 Subject: [PATCH 68/71] =?UTF-8?q?tool=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=ED=95=98=EC=97=AC=20=EC=A0=84=EC=B2=B4=20too?= =?UTF-8?q?l=EA=B4=80=EB=A6=AC=20=EA=B0=80=EB=8A=A5=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD(=EC=A3=BC=EC=86=8C/tools=20?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=91=EC=86=8D=ED=95=98=EC=97=AC=20=EC=84=A0?= =?UTF-8?q?=ED=83=9D).=20=EB=B9=88=20=EB=94=94=EB=A0=89=ED=86=A0=EB=A6=AC?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4378 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 6 +- tools/blank_cleaner/blank_cleaner.php | 16 +++ tools/blank_cleaner/lang/ko.lang.php | 3 + tools/cache_cleaner/cache_cleaner.php | 17 +++ tools/cache_cleaner/form.html | 32 ------ tools/cache_cleaner/index.php | 58 ----------- tools/cache_cleaner/style.css | 10 -- tools/validator/index.php | 135 ------------------------ tools/validator/lang/ko.lang.php | 1 + tools/validator/style.css | 15 +-- tools/validator/validator.html | 143 ++++++++++---------------- tools/validator/validator.php | 100 ++++++++++++++++++ 12 files changed, 196 insertions(+), 340 deletions(-) create mode 100644 tools/blank_cleaner/blank_cleaner.php create mode 100644 tools/blank_cleaner/lang/ko.lang.php create mode 100644 tools/cache_cleaner/cache_cleaner.php delete mode 100644 tools/cache_cleaner/form.html delete mode 100644 tools/cache_cleaner/index.php delete mode 100644 tools/cache_cleaner/style.css delete mode 100644 tools/validator/index.php create mode 100644 tools/validator/validator.php diff --git a/.htaccess b/.htaccess index 89fcec0fc..a17e471ff 100644 --- a/.htaccess +++ b/.htaccess @@ -12,7 +12,11 @@ RewriteRule ^(.+)/common/tpl/(.*) ./common/tpl/$2 [L] RewriteRule ^(.+)/widgets/(.*) ./widgets/$2 [L] RewriteRule ^(.+)/layouts/(.*) ./layouts/$2 [L] RewriteRule ^(.+)/addons/(.*) ./addons/$2 [L] -RewriteRule ^(.+)/tools/(.*) ./tools/$2 [L] + +# tools +RewriteRule ^tools/([a-zA-Z0-9_]+)$ ./tools/$1 [L] +RewriteRule ^tools/$ ./tools/index.php [L] +RewriteRule ^tools$ ./tools/index.php [L] # page RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)page$ ./index.php?mid=$1&page=$2 [L] diff --git a/tools/blank_cleaner/blank_cleaner.php b/tools/blank_cleaner/blank_cleaner.php new file mode 100644 index 000000000..8b39a6034 --- /dev/null +++ b/tools/blank_cleaner/blank_cleaner.php @@ -0,0 +1,16 @@ + + * @brief 첨부파일 디렉토리의 빈 디렉토리 삭제 + **/ + + // 인증이 되지 않은 접근이면 종료 + if(!defined('__XE_TOOL_AUTH__') || !__XE_TOOL_AUTH__) exit(); + + // 캐시 파일 제거 + FileHandler::removeBlankDir(_XE_PATH_.'files'); + $output = Context::getLang('success_deleted'); + + Context::set('output', $output); +?> diff --git a/tools/blank_cleaner/lang/ko.lang.php b/tools/blank_cleaner/lang/ko.lang.php new file mode 100644 index 000000000..ba0cdd512 --- /dev/null +++ b/tools/blank_cleaner/lang/ko.lang.php @@ -0,0 +1,3 @@ +blank_cleaner = '빈디렉토리 삭제'; +?> diff --git a/tools/cache_cleaner/cache_cleaner.php b/tools/cache_cleaner/cache_cleaner.php new file mode 100644 index 000000000..e6fba631a --- /dev/null +++ b/tools/cache_cleaner/cache_cleaner.php @@ -0,0 +1,17 @@ + + * @brief XE 캐시파일 및 불필요한 파일 정리 + **/ + + // 인증이 되지 않은 접근이면 종료 + if(!defined('__XE_TOOL_AUTH__') || !__XE_TOOL_AUTH__) exit(); + + // 캐시 파일 제거 + $oAdminController = &getAdminController('admin'); + $oAdminController->procAdminRecompileCacheFile(); + $output = Context::getLang('success_reset'); + + Context::set('output', $output); +?> diff --git a/tools/cache_cleaner/form.html b/tools/cache_cleaner/form.html deleted file mode 100644 index 5a4ff3a1b..000000000 --- a/tools/cache_cleaner/form.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - XE Cache Cleaner - - - - -

    XE Cache Cleaner

    -
    - - -
    {$msg}
    - - -
    - - - - - - - - - - - - - - diff --git a/tools/cache_cleaner/index.php b/tools/cache_cleaner/index.php deleted file mode 100644 index fcad6ea92..000000000 --- a/tools/cache_cleaner/index.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @brief XE 캐시파일 및 불필요한 파일 정리 - **/ - - /** - * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 - **/ - define('__ZBXE__', true); - - /** - * @brief 필요한 설정 파일들을 include - **/ - require_once('../../config/config.inc.php'); - - // id/ password 구함 - $id = $_POST['id']; - $pw = $_POST['pw']; - - // 저장되어 있는 비밀번호와 비교 - $oContext = &Context::getInstance(); - $oContext->init(); - $db_info = $oContext->getDBInfo(); - - // install 모듈의 언어파일을 로드 - Context::loadLang(_XE_PATH_.'modules/install/lang'); - - // 설치가 되어 있지 않을 경우 - if(!Context::isInstalled()) { - - $msg = Context::getLang('msg_db_not_setted'); - - // 인증 정보가 없을 경우 - } elseif(!isset($id) || !isset($pw)) { - - - // 입력된 정보와 저장된 정보 비교 - } else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) { - - if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id')); - else $msg = sprintf($lang->filter->equalto, Context::getLang('password')); - - // 캐시 파일 제거 - } else if($id === $db_info->db_userid && $pw === $db_info->db_password) { - - $oAdminController = &getAdminController('admin'); - $oAdminController->procAdminRecompileCacheFile(); - $msg = Context::getLang('success_reset'); - - } - - Context::set('msg', $msg); - - $oTemplate = &TemplateHandler::getInstance(); - print $oTemplate->compile('./tools/cache_cleaner/','form'); -?> diff --git a/tools/cache_cleaner/style.css b/tools/cache_cleaner/style.css deleted file mode 100644 index 228b7fd70..000000000 --- a/tools/cache_cleaner/style.css +++ /dev/null @@ -1,10 +0,0 @@ -h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; } -hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; } -blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;} - -code { display:block; clear:both; margin-bottom:10px;} -code label { float:left; display:block; width:150px; } -code input { display:block; width:150px; border:1px solid #AAAAAA; } - -input.submit { width:300px; border:1px solid #AAAAAA;} - diff --git a/tools/validator/index.php b/tools/validator/index.php deleted file mode 100644 index 1d8081950..000000000 --- a/tools/validator/index.php +++ /dev/null @@ -1,135 +0,0 @@ - - * @brief 현재 설치된 버전에 해당하는 XE 파일 비교 - **/ - - /** - * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 - **/ - define('__ZBXE__', true); - - /** - * @brief 필요한 설정 파일들을 include - **/ - require_once('../../config/config.inc.php'); - - // id/ password 구함 - $id = $_POST['id']; - $pw = $_POST['pw']; - - // 저장되어 있는 비밀번호와 비교 - $oContext = &Context::getInstance(); - $oContext->init(); - $db_info = $oContext->getDBInfo(); - - // install 모듈의 언어파일을 로드 - Context::loadLang(_XE_PATH_.'modules/install/lang'); - Context::loadLang(_XE_PATH_.'modules/admin/lang'); - Context::loadLang(_XE_PATH_.'tools/validator/lang'); - - // 설치가 되어 있지 않을 경우 - if(!Context::isInstalled()) { - - $msg = Context::getLang('msg_db_not_setted'); - - // 인증 정보가 없을 경우 - } elseif(!isset($id) || !isset($pw)) { - - - // 입력된 정보와 저장된 정보 비교 - } else if($id !== $db_info->db_userid || $pw !== $db_info->db_password) { - - if($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id')); - else $msg = sprintf($lang->filter->equalto, Context::getLang('password')); - - // 출력 - } else if($id === $db_info->db_userid && $pw === $db_info->db_password) { - - // 현재 버전을 구함 - $ver = __ZBXE_VERSION__; - - // 현재 버전에 맞는 배포 정보를 구함 - $header = "GET /validatorLogs/{$ver}.log HTTP/1.0\r\nHost: news.zeroboard.com\r\n\r\n"; - $is_started = false; - $f = fsockopen('news.zeroboard.com', 80); - fputs($f, $header); - while($buff = fgets($f, 1024)) { - if(!trim($buff)) $is_started = true; - if($is_started && trim($buff)) { - $buff = trim($buff); - $pos = strpos($buff,','); - $size = (int)substr($buff,0,$pos); - $filename = substr($buff,$pos+1); - if($filename && $size) $source[$filename] = $size; - } - } - fclose($f); - - if(!count($source)) $msg = Context::getLang('msg_cannot_get_source_files'); - else { - - // 현재 설치된 디렉토리와 비교 - $avoid_path = array(_XE_PATH_.'files'); - getFiles(_XE_PATH_, _XE_PATH_, $avoid_path, $target); - if(!count($target)) $msg = Context::getLang('msg_cannot_get_target_files'); - else { - // 파일 수를 지정 - Context::set('source_cnt', count($source)); - Context::set('target_cnt', count($target)); - - // 최신 버전 정보 구함 - $oAdminView = &getAdminView('admin'); - $oAdminView->dispAdminIndex(); - - // 누락된 파일 구함 - $leaveouts = array(); - foreach($source as $key => $val) { - if(!isset($target[$key])) $leaveouts[] = $key; - } - Context::set('leaveouts', $leaveouts); - - // 수정된 파일 구함 - $modified = array(); - foreach($source as $key => $val) { - if(isset($target[$key]) && $val!=$target[$key]) $modified[] = $key; - } - Context::set('modified', $modified); - - // 추가된 파일 구함 - $added = array(); - foreach($target as $key => $val) { - if(!isset($source[$key])) $added[] = $key; - } - Context::set('added', $added); - } - } - } - - Context::set('msg', $msg); - - $oTemplate = &TemplateHandler::getInstance(); - print $oTemplate->compile('./tools/validator/','validator'); - - // recursive하게 돌면서 파일 정보 수집 - function getFiles($path, $base_path, $avoid_path, &$buff) { - if(substr($path,-1)=='/') $path = substr($path,0,-1); - if(substr($base_path,-1)=='/') $base_path = substr($base_path,0,-1); - if(in_array($path, $avoid_path)) return; - - $oDir = dir($path); - while($item = $oDir->read()) { - if(substr($item,0,1)=='.' && $item != '.htaccess' ) continue; - $new_path = $path.'/'.$item; - if(!is_dir($new_path)) { - $filesize = filesize($new_path); - $filename = substr($new_path, strlen($base_path)+1); - $buff[$filename] = $filesize; - } else { - getFiles($new_path, $base_path, $avoid_path, $buff); - } - } - $oDir->close(); - } -?> diff --git a/tools/validator/lang/ko.lang.php b/tools/validator/lang/ko.lang.php index 9abd02b6f..68d57576f 100644 --- a/tools/validator/lang/ko.lang.php +++ b/tools/validator/lang/ko.lang.php @@ -1,4 +1,5 @@ validator = '설치파일 검증'; $lang->msg_cannot_get_source_files = '원본 파일을 다운로드 하지 못했습니다'; $lang->msg_cannot_get_target_files = '설치된 대상 파일의 목록을 구하지 못했습니다'; diff --git a/tools/validator/style.css b/tools/validator/style.css index 68e48c237..1c6cfc00a 100644 --- a/tools/validator/style.css +++ b/tools/validator/style.css @@ -1,18 +1,5 @@ -h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; } -hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; } -blockquote { border:1px solid red; color:red; width:280px; margin:0 0 10px 0; padding:10px;} - -code { display:block; clear:both; margin-bottom:10px;} -code label { float:left; display:block; width:150px; } -code input { display:block; width:150px; border:1px solid #AAAAAA; } - -input.submit { width:300px; border:1px solid #AAAAAA;} - -div.back { font-size:9pt; text-align:right; margin-bottom:10px; } -div.back a { text-decoration:none; color:#888888; } - table { width:100%; border:none; font-size:9pt; background-color:#CCCCCC; } table thead th { background-color:#EFEFEF; padding:3px 0 3px 0; } table tbody th { background-color:#F3F3F3; vertical-align:top; color:#888888; padding:3px 0 3px 0; } -table tbody td { background-color:#FFFFFF; font-family:verdana; padding:3px; } +table tbody td { font-weight:normal; background-color:#FFFFFF; font-family:verdana; padding:3px; } diff --git a/tools/validator/validator.html b/tools/validator/validator.html index 05c6877d8..2bc97beb2 100644 --- a/tools/validator/validator.html +++ b/tools/validator/validator.html @@ -1,92 +1,55 @@ - - - - - - XE Cache Cleaner - - - - -

    XE File Validator

    -
    - - -
    {$msg}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     {$lang->source_files}{$lang->target_files}
    {$lang->current_version}{__ZBXE_VERSION__}
    {$lang->released_version}{$released_version}
    {$lang->current_path}{_XE_PATH_}
    {$lang->files_count}{$source_cnt}{$target_cnt}
    {$lang->leaveout_files} ({count($leaveouts)}) + + {$val}
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     {$lang->source_files}{$lang->target_files}
    {$lang->current_version}{__ZBXE_VERSION__}
    {$lang->released_version}{$released_version}
    {$lang->current_path}{_XE_PATH_}
    {$lang->files_count}{$source_cnt}{$target_cnt}
    {$lang->leaveout_files} ({count($leaveouts)}) - - {$val}
    - -
    {$lang->modified_files} ({count($modified)})  - - {$val}
    - -
    {$lang->additional_files} ({count($added)})  - - {$val}
    - -
    - -
    - - - - - - - - - - - -
    +
    {$lang->modified_files} ({count($modified)})  + + {$val}
    - - +
    {$lang->additional_files} ({count($added)})  + + {$val}
    + +
    diff --git a/tools/validator/validator.php b/tools/validator/validator.php new file mode 100644 index 000000000..64463b10c --- /dev/null +++ b/tools/validator/validator.php @@ -0,0 +1,100 @@ + + * @brief 현재 설치된 버전에 해당하는 XE 파일 비교 + **/ + + // 인증이 되지 않은 접근이면 종료 + if(!defined('__XE_TOOL_AUTH__') || !__XE_TOOL_AUTH__) exit(); + + // 언어파일을 로드 + Context::loadLang(_XE_PATH_.'modules/admin/lang'); + + // 현재 버전을 구함 + $ver = __ZBXE_VERSION__; + + // 현재 버전에 맞는 배포 정보를 구함 + $header = "GET /validatorLogs/{$ver}.log HTTP/1.0\r\nHost: news.zeroboard.com\r\n\r\n"; + $is_started = false; + $f = fsockopen('news.zeroboard.com', 80); + fputs($f, $header); + while($buff = fgets($f, 1024)) { + if(!trim($buff)) $is_started = true; + if($is_started && trim($buff)) { + $buff = trim($buff); + $pos = strpos($buff,','); + $size = (int)substr($buff,0,$pos); + $filename = substr($buff,$pos+1); + if($filename && $size) $source[$filename] = $size; + } + } + fclose($f); + + if(!count($source)) $output = Context::getLang('msg_cannot_get_source_files'); + else { + // 현재 설치된 디렉토리와 비교 + $avoid_path = array(_XE_PATH_.'files'); + getFiles(_XE_PATH_, _XE_PATH_, $avoid_path, $target); + if(!count($target)) $output = Context::getLang('msg_cannot_get_target_files'); + else { + // 파일 수를 지정 + Context::set('source_cnt', count($source)); + Context::set('target_cnt', count($target)); + + // 최신 버전 정보 구함 + $oAdminView = &getAdminView('admin'); + $oAdminView->dispAdminIndex(); + + // 누락된 파일 구함 + $leaveouts = array(); + foreach($source as $key => $val) { + if(!isset($target[$key])) $leaveouts[] = $key; + } + Context::set('leaveouts', $leaveouts); + + // 수정된 파일 구함 + $modified = array(); + foreach($source as $key => $val) { + if(isset($target[$key]) && $val!=$target[$key]) $modified[] = $key; + } + Context::set('modified', $modified); + + // 추가된 파일 구함 + $added = array(); + foreach($target as $key => $val) { + if(!isset($source[$key])) $added[] = $key; + } + Context::set('added', $added); + + // CSS 지정 + Context::addCssFile('./validator/style.css', false); + + // 결과물을 구함 + $oTemplate = &TemplateHandler::getInstance(); + $output = $oTemplate->compile('./tools/validator/','validator'); + } + } + Context::set('output', $output); + + // recursive하게 돌면서 파일 정보 수집 + function getFiles($path, $base_path, $avoid_path, &$buff) { + if(substr($path,-1)=='/') $path = substr($path,0,-1); + if(substr($base_path,-1)=='/') $base_path = substr($base_path,0,-1); + if(in_array($path, $avoid_path)) return; + + $oDir = dir($path); + while($item = $oDir->read()) { + if(substr($item,0,1)=='.' && $item != '.htaccess' ) continue; + $new_path = $path.'/'.$item; + if(!is_dir($new_path)) { + $filesize = filesize($new_path); + $filename = substr($new_path, strlen($base_path)+1); + $buff[$filename] = $filesize; + } else { + getFiles($new_path, $base_path, $avoid_path, $buff); + } + } + $oDir->close(); + } +?> From 42cb1bcfaa0e4483ac7d51d58018ed7d11b9e3f5 Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 17 Jul 2008 03:36:36 +0000 Subject: [PATCH 69/71] =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=EA=B0=80=20?= =?UTF-8?q?=EC=95=84=EB=8B=8C=20=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EC=9D=98=20=EC=84=9C=EB=B2=84=EB=82=B4=20=EB=B3=B5=EC=82=AC(?= =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EB=B3=B5=EC=82=AC/=EC=9D=B4?= =?UTF-8?q?=EB=8F=99)=EC=8B=9C=EC=97=90=EB=8F=84=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=EB=AA=85=EC=97=90=20=EC=9D=98=ED=95=9C=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=EC=B2=98=ED=95=98=EB=8F=84=EB=A1=9D=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@4379 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- config/func.inc.php | 2 +- modules/file/file.controller.php | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/config/func.inc.php b/config/func.inc.php index 9430d113b..e3690d9d5 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -515,7 +515,7 @@ **/ function getScriptPath() { static $url = null; - if($url == null) $url = preg_replace('/\/tools\/([a-z\_]+)/i','',preg_replace('/index.php$/i','',str_replace('\\','/',$_SERVER['SCRIPT_NAME']))); + if($url == null) $url = preg_replace('/\/tools\//i','/',preg_replace('/index.php$/i','',str_replace('\\','/',$_SERVER['SCRIPT_NAME']))); return $url; } diff --git a/modules/file/file.controller.php b/modules/file/file.controller.php index 7b49d0846..7b85a2946 100644 --- a/modules/file/file.controller.php +++ b/modules/file/file.controller.php @@ -279,8 +279,14 @@ if(!FileHandler::makeDir($path)) return false; // 파일 이동 - if($manual_insert) @copy($file_info['tmp_name'], $filename); - else { + if($manual_insert) { + @copy($file_info['tmp_name'], $filename); + if(!file_exists($filename)) { + $ext = substr(strrchr($file_info['name'],'.'),1); + $filename = $path. md5(crypt(rand(1000000,900000).$file_info['name'])).'.'.$ext; + @copy($file_info['tmp_name'], $filename); + } + } else { if(!@move_uploaded_file($file_info['tmp_name'], $filename)) { $ext = substr(strrchr($file_info['name'],'.'),1); $filename = $path. md5(crypt(rand(1000000,900000).$file_info['name'])).'.'.$ext; From 97728fcb2c93c80a3a6164b5a4726e2565bb557b Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 17 Jul 2008 03:39:34 +0000 Subject: [PATCH 70/71] git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4380 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- tools/cache_cleaner/lang/ko.lang.php | 3 ++ tools/form.html | 65 +++++++++++++++++++++++++++ tools/index.php | 66 ++++++++++++++++++++++++++++ tools/style.css | 27 ++++++++++++ 4 files changed, 161 insertions(+) create mode 100644 tools/cache_cleaner/lang/ko.lang.php create mode 100644 tools/form.html create mode 100644 tools/index.php create mode 100644 tools/style.css diff --git a/tools/cache_cleaner/lang/ko.lang.php b/tools/cache_cleaner/lang/ko.lang.php new file mode 100644 index 000000000..562e4167d --- /dev/null +++ b/tools/cache_cleaner/lang/ko.lang.php @@ -0,0 +1,3 @@ +cache_cleaner = '캐시파일 재생성'; +?> diff --git a/tools/form.html b/tools/form.html new file mode 100644 index 000000000..da25f6c9a --- /dev/null +++ b/tools/form.html @@ -0,0 +1,65 @@ + + + + + + XE Tools + +{@ $js_files = Context::getJsFile() } + + + + + + + + + +{@ $css_files = Context::getCssFile() } + + + + + + + + + + + + +

    XE Tools

    +
    + + +
    {$msg}
    + + +
    +
    + + + + + +
    +
    + + + + + + + + + +
    +
    + + +
    {$output}
    + + + diff --git a/tools/index.php b/tools/index.php new file mode 100644 index 000000000..407a8212e --- /dev/null +++ b/tools/index.php @@ -0,0 +1,66 @@ + + * @brief 각종 tools 목록을 보여주기 인증 시도 + **/ + + /** + * @brief 기본적인 상수 선언, 웹에서 직접 호출되는 것을 막기 위해 체크하는 상수 선언 + **/ + define('__ZBXE__', true); + + /** + * @brief 필요한 설정 파일들을 include + **/ + require_once('../config/config.inc.php'); + + // id/ password/ tool 구함 + $id = $_POST['id']; + $pw = $_POST['pw']; + $tool = $_POST['tool']; + + // 저장되어 있는 비밀번호와 비교 + $oContext = &Context::getInstance(); + $oContext->init(); + $db_info = $oContext->getDBInfo(); + + // 툴 목록을 구하고 언어파일 로그, 변수 설정 + Context::loadLang(_XE_PATH_.'modules/install/lang'); + $list = FileHandler::readDir(_XE_PATH_.'tools/'); + $filters = array('index.php','style.css','form.html'); + for($i=0;$idb_userid || $pw !== $db_info->db_password) { + + if(!$tool) $msg = Context::getLang('msg_not_founded'); + elseif($id !== $db_info->db_userid) $msg = sprintf($lang->filter->equalto, Context::getLang('user_id')); + else $msg = sprintf($lang->filter->equalto, Context::getLang('password')); + + // tool 실행 + } else if($id === $db_info->db_userid && $pw === $db_info->db_password) { + + define('__XE_TOOL_AUTH__', true); + include(_XE_PATH_.'tools/'.$tool.'/'.$tool.'.php'); + } + + Context::set('msg', $msg); + + $oTemplate = &TemplateHandler::getInstance(); + print $oTemplate->compile('./tools','form'); +?> diff --git a/tools/style.css b/tools/style.css new file mode 100644 index 000000000..73d85fbee --- /dev/null +++ b/tools/style.css @@ -0,0 +1,27 @@ +body { margin:10px !important; } +h1 { font-size:1.5em; font-family:tahoma; margin:0; padding:0; } +hr { border:none; border-top:1px solid #555555; border-bottom:1px solid #888888; margin:0; margin-bottom:10px; padding:0; } +blockquote.message { border:2px solid red; color:red; margin:0 0 10px 0; padding:10px; font-size:9pt; font-weight:bold; clear:both; } +blockquote.output { border:2px solid blue; margin:10px 0 0 0; padding:10px; font-size:9pt; font-weight:bold; clear:both; } + +form { margin:0; padding:0; clear:both; overflow:hidden; } + +div.tools { float:left; margin-right:20px; padding-right:20px; border-right:1px dotted #AAAAAA; } +div.tools code label { display:block; white-space:nowrap; margin-bottom:5px; font-size:9pt; } +div.tools code label input { display:inline; } + +div.auth { float:left; } +div.auth code label { font-size:9pt; } +div.auth code { display:block; clear:both; margin-bottom:10px;} +div.auth code label { float:left; display:block; width:100px; } +div.auth code input { display:block; width:150px; border:1px solid #AAAAAA; } +div.auth input.submit { width:252px; border:1px solid #AAAAAA;} + +div.back { font-size:9pt; text-align:right; margin-bottom:10px; } +div.back a { text-decoration:none; color:#888888; } + +table { width:100%; border:none; font-size:9pt; background-color:#CCCCCC; } +table thead th { background-color:#EFEFEF; padding:3px 0 3px 0; } +table tbody th { background-color:#F3F3F3; vertical-align:top; color:#888888; padding:3px 0 3px 0; } +table tbody td { background-color:#FFFFFF; font-family:verdana; padding:3px; } + From 00502f84f7a5f14467bf1511e6f1bbc29f85ebbe Mon Sep 17 00:00:00 2001 From: zero Date: Thu, 17 Jul 2008 05:50:25 +0000 Subject: [PATCH 71/71] =?UTF-8?q?=EB=B2=84=EC=A0=84=EC=9D=84=201.0.5?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4381 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 357bbdd34..19177c439 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -14,7 +14,7 @@ * 이 내용은 제로보드XE의 버전을 관리자 페이지에 표시하기 위한 용도이며 * config.inc.php의 수정이 없더라도 공식 릴리즈시에 수정되어 함께 배포되어야 함 **/ - define('__ZBXE_VERSION__', '1.0.4'); + define('__ZBXE_VERSION__', '1.0.5'); /** * @brief 디버깅 메세지 출력