From 9296c680ac331e2aa9132b0dc5d710cbf5a5fe7a Mon Sep 17 00:00:00 2001 From: misol Date: Sat, 23 May 2009 08:43:32 +0000 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EC=96=B8?= =?UTF-8?q?=EC=96=B4=EC=84=A4=EC=A0=95=20=EB=AA=A8=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@6366 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- addons/mobile/classes/mhtml.class.php | 7 ++- addons/mobile/classes/mobile.class.php | 81 +++++++++++++++++++++++--- addons/mobile/classes/wml.class.php | 7 ++- addons/mobile/conf/info.xml | 20 ++++++- addons/mobile/lang/en.lang.php | 3 + addons/mobile/lang/ko.lang.php | 5 ++ addons/mobile/mobile.addon.php | 5 ++ 7 files changed, 114 insertions(+), 14 deletions(-) diff --git a/addons/mobile/classes/mhtml.class.php b/addons/mobile/classes/mhtml.class.php index adc93ee58..b8ec24c8c 100644 --- a/addons/mobile/classes/mhtml.class.php +++ b/addons/mobile/classes/mhtml.class.php @@ -1,7 +1,7 @@ + * @author zero / lang_select : misol **/ class wap extends mobileXE { @@ -24,7 +24,6 @@ // 제목을 출력 function printTitle() { if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - $this->title = str_replace(array('$','\'','_'), array('$$',''','­'), $this->title); printf('<%s%s>
%s', htmlspecialchars($this->title),htmlspecialchars($titlePageStr),"\n"); } @@ -59,6 +58,10 @@ $url = $this->upperUrl; printf('%s', $url->url, $url->text, "\n"); } + else { + $url = getUrl('','lcm','1','sel_lang',Context::getLangType()); + printf('%s', 'Language : '.Context::getLang('select_lang'), $url, "\n"); + } if($this->homeUrl) { $url = $this->homeUrl; printf('%s%s', $url->text, $url->url, $url->text, "\n"); diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php index 8fcb21cb9..a8fce04d1 100644 --- a/addons/mobile/classes/mobile.class.php +++ b/addons/mobile/classes/mobile.class.php @@ -1,7 +1,7 @@ + * @author zero / lang_select : misol * @brief WAP 태그 출력을 위한 XE 라이브러리 **/ @@ -21,7 +21,7 @@ var $content = NULL; var $mobilePage = 0; var $totalPage = 1; - var $charset = 'euc-kr'; + var $charset = 'UTF-8'; var $no = 0; // 네비게이션 관련 변수 @@ -42,6 +42,9 @@ // Deck size var $deckSize = 1024; + // 언어 설정 변경 + var $languageMode = 0; + var $lang = null; /** * @brief getInstance **/ @@ -56,6 +59,12 @@ $class_file = sprintf('%saddons/mobile/classes/%s.class.php', _XE_PATH_, $browserType); require_once($class_file); + // 모바일 언어설정 로드(쿠키가 안되어 생각해낸 방법...-캐시파일 재생성을 클릭하면 초기화된다..) + $this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_COOKIE']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + if($this->lang) { + $this->lang = str_replace(array(''),array('',''),$this->lang); + Context::setLangType($this->lang); + } Context::loadLang(_XE_PATH_.'addons/mobile/lang'); $instance = new wap(); @@ -64,6 +73,7 @@ if(!$mobilePage) $mobilePage = 1; $instance->setMobilePage($mobilePage); + } return $instance; @@ -74,8 +84,15 @@ **/ function mobileXE() { // navigation mode 체크 - if(Context::get('nm')) $this->navigationMode = 1; - $this->cmid = (int)Context::get('cmid'); + if(Context::get('nm')) { + $this->navigationMode = 1; + $this->cmid = (int)Context::get('cmid'); + } + + if(Context::get('lcm')) { + $this->languageMode = 1; + $this->lang = Context::get('sel_lang'); + } } /** @@ -86,6 +103,26 @@ return ($this->navigationMode && $this->module_info->menu_srl)?true:false; } + /** + * @brief langchange mode 체크 + * languageMode 세팅 있어야 true return + **/ + function isLangChange() { + if($this->languageMode) return true; + else return false; + } + + /** + * @brief 언어 설정 + * 쿠키가 안되기 때문에 휴대전화마다 고유한 파일로 언어설정을 저장하는 파일 생성 + **/ + function setLangType() { + $langbuff = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_COOKIE']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + if($langbuff) FileHandler::removeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_COOKIE']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + $langbuff = 'lang.'**/ ?>'; + FileHandler::writeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_COOKIE']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php',$langbuff); + } + /** * @brief 현재 요청된 모듈 정보 세팅 **/ @@ -108,7 +145,7 @@ if(!file_exists($menu_cache_file)) return; include $menu_cache_file; - + // 정리된 menu들을 1차원으로 변경 $this->getListedItems($menu->list, $listed_items, $node_list); @@ -265,8 +302,6 @@ $content = str_replace('

','
',$content); } - $content = str_replace(array('$','\''), array('$$','''), $content); - // 모바일의 경우 한 덱에 필요한 사이즈가 적어서 내용을 모두 페이지로 나눔 $contents = array(); while($content) { @@ -311,6 +346,7 @@ $this->content = $contents[$this->mobilePage-1]; $oModuleController->replaceDefinedLangCode($this->content); + $content = str_replace(array('$','\''), array('$$','''), $content); } /** @@ -477,6 +513,37 @@ $this->display(); } + /** + * @brief 언어설정 메뉴 출력 + **/ + function displayLangSelect() { + $childs = array(); + + $this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_COOKIE']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + if($this->lang) { + $this->lang = str_replace(array(''),array('',''),$this->lang); + Context::setLangType($this->lang); + } + $lang_supported = Context::get('lang_supported'); + $lang_type = Context::getLangType(); + $obj = null; + $obj['link'] = $obj['text'] = Context::getLang('president_lang').' : '.$lang_supported[$lang_type]; + $obj['href'] = getUrl('sel_lang',$lang_type); + $childs[] = $obj; + + if(is_array($lang_supported)) { + foreach($lang_supported as $key => $val) { + $obj = null; + $obj['link'] = $obj['text'] = $val; + $obj['href'] = getUrl('sel_lang',$key); + $childs[] = $obj; + } + } + $this->setChilds($childs); + + $this->display(); + } + /** * @brief 모듈의 WAP 클래스 객체 생성하여 WAP 준비 **/ diff --git a/addons/mobile/classes/wml.class.php b/addons/mobile/classes/wml.class.php index 69f0df62c..0dfb4d12c 100644 --- a/addons/mobile/classes/wml.class.php +++ b/addons/mobile/classes/wml.class.php @@ -1,7 +1,7 @@ + * @author zero / lang_select : misol **/ class wap extends mobileXE { @@ -29,7 +29,6 @@ **/ function printTitle() { if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - $this->title = str_replace(array('$','\'','_'), array('$$',''','­'), $this->title); printf('<%s%s>
%s', htmlspecialchars($this->title),htmlspecialchars($titlePageStr),"\n"); } @@ -68,6 +67,10 @@ $url = $this->upperUrl; printf('%s', $url->text, $url->url, "\n"); } + else { + $url = getUrl('','lcm','1','sel_lang',Context::getLangType()); + printf('%s', 'Language : '.Context::getLang('select_lang'), $url, "\n"); + } } // 푸터 정보를 출력 diff --git a/addons/mobile/conf/info.xml b/addons/mobile/conf/info.xml index a994a4c93..5dff68f47 100644 --- a/addons/mobile/conf/info.xml +++ b/addons/mobile/conf/info.xml @@ -25,8 +25,8 @@ 透過行動工具上網時,會將網頁轉換為WAP標籤顯示。 只限於 wml, hdml, mhtml格式。 - 0.1 - 2008-06-20 + 0.1.1 + 2009-05-23 zero @@ -36,6 +36,19 @@ zero + + + misol + misol + misol + misol + misol + + 언어선택 추가(WML, mHTML) + 인코딩 설정 개선 + 그 외 소소한 개선들 + + 문자셋 @@ -44,9 +57,10 @@ Charset 編碼 - 모바일 기기의 경우 utf-8 문자셋을 인식하지 못할 수 있습니다. + 모바일 기기의 경우 UTF-8 문자셋을 인식하지 못할 수 있습니다. 문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. 기본값은 UTF-8입니다. + (*SK Telecom 휴대전화의 경우 euc-kr인코딩만 지원하므로, 강제로 euc-kr인코딩만 지원합니다.) ある特定のモバイル機器ではutf-8文字コードの認識が出来ない場合があります。 diff --git a/addons/mobile/lang/en.lang.php b/addons/mobile/lang/en.lang.php index 977217ca8..210e5c1c3 100644 --- a/addons/mobile/lang/en.lang.php +++ b/addons/mobile/lang/en.lang.php @@ -4,6 +4,9 @@ * @author zero (zero@nzeo.com) * @brief English Language Pack (Basic Contents only) **/ + // lang select by misol + $lang->president_lang = 'selected Lang.'; + $lang->select_lang = 'select lang'; $lang->cmd_go_upper = 'Upper'; $lang->cmd_go_home = 'Go Home'; diff --git a/addons/mobile/lang/ko.lang.php b/addons/mobile/lang/ko.lang.php index 6b20e1f0f..75e48c39a 100644 --- a/addons/mobile/lang/ko.lang.php +++ b/addons/mobile/lang/ko.lang.php @@ -5,7 +5,12 @@ * @brief 한국어 언어팩 (기본적인 내용만 수록) **/ + // 언어 선택부분 by misol + $lang->president_lang = '현재 언어'; + $lang->select_lang = '언어 선택'; + $lang->cmd_go_upper = '상위'; $lang->cmd_go_home = '홈으로'; $lang->cmd_view_sitemap = '사이트맵 보기'; + ?> diff --git a/addons/mobile/mobile.addon.php b/addons/mobile/mobile.addon.php index 02169f752..3c1f2b50b 100644 --- a/addons/mobile/mobile.addon.php +++ b/addons/mobile/mobile.addon.php @@ -42,6 +42,11 @@ // 네비게이트 모드이거나 WAP class가 있을 경우 미리 컨텐츠를 추출하여 출력/ 종료 if($called_position == 'before_module_proc') { + if($oMobile->isLangChange()) { + $oMobile->setLangType(); + $oMobile->displayLangSelect(); + } + // 네비게이트 모드이면 네비게이션 컨텐츠 출력 if($oMobile->isNavigationMode()) $oMobile->displayNavigationContent();