diff --git a/.htaccess b/.htaccess index 1915f7476..c14fdb5a8 100644 --- a/.htaccess +++ b/.htaccess @@ -25,6 +25,9 @@ RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+)page$ ./index.php?mid=$1&page=$2 [L] RewriteRule ^rss/([[:digit:]]+){0,14}/([[:digit:]]+){0,14}/([[:digit:]]+)$ ./index.php?module=rss&act=rss&start_date=$1&end_date=$2&page=$3 [L] RewriteRule ^rss/([[:digit:]]+)$ ./index.php?module=rss&act=rss&page=$1 [L] RewriteRule ^rss$ ./index.php?module=rss&act=rss [L] +RewriteRule ^atom/([[:digit:]]+){0,14}/([[:digit:]]+){0,14}/([[:digit:]]+)$ ./index.php?module=rss&act=atom&start_date=$1&end_date=$2&page=$3 [L] +RewriteRule ^atom/([[:digit:]]+)$ ./index.php?module=rss&act=atom&page=$1 [L] +RewriteRule ^atom$ ./index.php?module=rss&act=atom [L] # administrator page RewriteRule ^admin$ ./index.php?module=admin [L] diff --git a/addons/keyword_link/conf/info.xml b/addons/keyword_link/conf/info.xml index 285e83d16..fbc3a9ce6 100644 --- a/addons/keyword_link/conf/info.xml +++ b/addons/keyword_link/conf/info.xml @@ -2,6 +2,7 @@ 키워드 링크 애드온 關鍵字連結 + キーワードリンクアドオン 게시글과 댓글의 내용중 등록된 키워드에 링크를 걸어주는 애드온입니다. 키워드는 콤마(,)로 구분하여 여러개 등록할 수 있습니다. @@ -12,6 +13,11 @@ 可用逗號(,)區隔多個關鍵字。 以第一關鍵字為主。 + + 本文とコメントの内容中、登録されたキーワードにリンクを貼りつける機能を行います。 + キーワードは半角コンマ(,)区切りで複数登録が出来ます。 + 先に登録されるキーワードが優先度が高いです。 + 0.1 2008-12-20 @@ -28,68 +34,85 @@ cssquery cssquery + cssquery 치환할 부분의 jQuery cssquery입니다. xe_board 게시판 스킨이면 공백으로 두면 됩니다. 치환할 부분의 jQuery cssquery입니다. xe_board 게시판 스킨이면 공백으로 두면 됩니다. + 置き換える部分のjQuery cssqueryです。 + xe_board掲示板スキンの場合、空白にして下さい。 링크 방법 連結方式 + リンクの貼りつけ方 키워드가 여러개 있을때 "첫번째 키워드"에만 링크를 걸 것인지 "모든 키워드"에 걸 것인지 선택합니다. 키워드가 여러개 있을때 "첫번째 키워드"에만 링크를 걸 것인지 "모든 키워드"에 걸 것인지 선택합니다. - + 複数のキーワードの場合、"最初のキーワード"のみ、もしくは "全てのキーワード"にリンクを貼りつけるかを選択します。 + 첫번째 키워드 第一關鍵字 + 最初のキーワード 모든 키워드 所有關鍵字 + 全てのキーワード 키워드 關鍵字 + キーワード 링크 連結 + リンク 키워드 關鍵字 + キーワード 링크 連結 + リンク 키워드 關鍵字 + キーワード 링크 連結 + リンク 키워드 關鍵字 + キーワード 링크 連結 + リンク 키워드 關鍵字 + キーワード 링크 連結 + リンク diff --git a/addons/member_extra_info/member_extra_info.lib.php b/addons/member_extra_info/member_extra_info.lib.php index f08ae0a05..88ba3cce3 100644 --- a/addons/member_extra_info/member_extra_info.lib.php +++ b/addons/member_extra_info/member_extra_info.lib.php @@ -14,8 +14,8 @@ // 전역변수에 미리 설정한 데이터가 있다면 그걸 return if(!$GLOBALS['_transImageNameList'][$member_srl]->cached) { $GLOBALS['_transImageNameList'][$member_srl]->cached = true; - $image_name_file = sprintf('./files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); - $image_mark_file = sprintf('./files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); + $image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); + $image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); if(file_exists($image_name_file)) $GLOBALS['_transImageNameList'][$member_srl]->image_name_file = $image_name_file; else $image_name_file = ''; if(file_exists($image_mark_file)) $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file = $image_mark_file; @@ -28,8 +28,8 @@ // 이미지이름이나 마크가 없으면 원본 정보를 세팅 if(!$image_name_file && !$image_mark_file) return $matches[0]; - if($image_name_file) $nick_name = sprintf('id: %s', $image_name_file, strip_tags($nick_name), strip_tags($nick_name)); - if($image_mark_file) $nick_name = sprintf('id: %s%s', $image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name); + if($image_name_file) $nick_name = sprintf('id: %s', Context::getRequestUri(),$image_name_file, strip_tags($nick_name), strip_tags($nick_name)); + if($image_mark_file) $nick_name = sprintf('id: %s%s', Context::getRequestUri(),$image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name); $orig_text = preg_replace('/'.preg_quote($matches[5],'/').'<\/'.$matches[6].'>$/', '', $matches[0]); return $orig_text.$nick_name.''; diff --git a/addons/mobile/classes/hdml.class.php b/addons/mobile/classes/hdml.class.php index 827da8441..24a51a440 100644 --- a/addons/mobile/classes/hdml.class.php +++ b/addons/mobile/classes/hdml.class.php @@ -5,6 +5,13 @@ **/ class wap extends mobileXE { + /** + * @brief constructor + **/ + function wap() { + parent::mobileXE(); + } + /** * @brief hdml 헤더 출력 **/ @@ -54,28 +61,28 @@ 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->prevUrl) { + $url = $this->prevUrl; + 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->prevUrl) { + $url = $this->prevUrl; + printf('%s', $url->text, $url->url, $url->text); + } if($this->homeUrl) { $url = $this->homeUrl; printf('%s', $url->text, $url->url, $url->text); diff --git a/addons/mobile/classes/mhtml.class.php b/addons/mobile/classes/mhtml.class.php index b78174b62..b34a7f9cb 100644 --- a/addons/mobile/classes/mhtml.class.php +++ b/addons/mobile/classes/mhtml.class.php @@ -5,6 +5,13 @@ **/ class wap extends mobileXE { + /** + * @brief constructor + **/ + function wap() { + parent::mobileXE(); + } + /** * @brief hdml 헤더 출력 **/ @@ -37,14 +44,14 @@ * @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->prevUrl) { + $url = $this->prevUrl; + printf('%s
%s', $url->url, $url->text, "\n"); + } if($this->upperUrl) { $url = $this->upperUrl; printf('%s', $url->url, $url->text, "\n"); diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php index 2a1d59766..2a655b0bf 100644 --- a/addons/mobile/classes/mobile.class.php +++ b/addons/mobile/classes/mobile.class.php @@ -2,7 +2,7 @@ /** * Mobile XE Library Class ver 0.1 * @author zero - * @brief WAP 태그 출력을 위한 라이브러리 + * @brief WAP 태그 출력을 위한 XE 라이브러리 **/ class mobileXE { @@ -24,10 +24,27 @@ var $charset = 'euc-kr'; var $no = 0; - // Deck size - var $deckSize = 500; + // 네비게이션 관련 변수 + var $menu = null; + var $listed_items = null; + var $node_list = null; + var $index_mid = null; - // getInstance + // Navigation On/ Off 상태 값 + var $navigationMode = 0; + + // 현재 요청된 XE 모듈 정보 + var $module_info = null; + + // 현재 실행중인 모듈의 instance + var $oModule = null; + + // Deck size + var $deckSize = 1024; + + /** + * @brief getInstance + **/ function &getInstance() { static $instance = null; @@ -45,12 +62,77 @@ $mobilePage = (int)Context::get('mpage'); if(!$mobilePage) $mobilePage = 1; + $instance->setMobilePage($mobilePage); } return $instance; } + /** + * @brief constructor + **/ + function mobileXE() { + // navigation mode 체크 + if(Context::get('nm')) $this->navigationMode = 1; + $this->cmid = (int)Context::get('cmid'); + } + + /** + * @brief navigation mode 체크 + * navigationMode 세팅과 모듈 정보의 menu_srl이 있어야 navigation mode = true로 return + **/ + function isNavigationMode() { + return ($this->navigationMode && $this->module_info->menu_srl)?true:false; + } + + /** + * @brief 현재 요청된 모듈 정보 세팅 + **/ + function setModuleInfo(&$module_info) { + if($this->module_info) return; + $this->module_info = $module_info; + } + + /** + * @brief 현재 실행중인 모듈 instance 세팅 + **/ + function setModuleInstance(&$oModule) { + if($this->oModule) return; + + // instance 저장 + $this->oModule = $oModule; + + // 현재 모듈의 메뉴가 설정되어 있으면 메뉴 정리 + $menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $this->module_info->menu_srl); + if(!file_exists($menu_cache_file)) return; + + include $menu_cache_file; + + // 정리된 menu들을 1차원으로 변경 + $this->getListedItems($menu->list, $listed_items, $node_list); + + $this->listed_items = $listed_items; + $this->node_list = $node_list; + $this->menu = $menu->list; + + $k = array_keys($node_list); + $v = array_values($node_list); + $this->index_mid = $k[0]; + + // 현재 메뉴의 depth가 1이상이면 상위 버튼을 지정 + $cur_menu_item = $listed_items[$node_list[$this->module_info->mid]]; + if($cur_menu_item['parent_srl']) { + $parent_srl = $cur_menu_item['parent_srl']; + if($parent_srl && $listed_items[$parent_srl]) { + $parent_item = $listed_items[$parent_srl]; + if($parent_item) $this->setUpperUrl(getUrl('','mid',$parent_item['mid']), Context::getLang('cmd_go_upper')); + } + } elseif (!$this->isNavigationMode()) { + $this->setUpperUrl(getUrl('','mid',$this->index_mid,'nm','1','cmid',0), Context::getLang('cmd_view_sitemap')); + } + } + /** * @brief 접속 브라우저의 헤더를 판단하여 브라우저 타입을 return * 모바일 브라우저가 아닐 경우 null return @@ -61,31 +143,32 @@ $userAgent = $_SERVER['HTTP_USER_AGENT']; $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"; - - // class 지정 (html일 경우 동작 하지 않도록 함) - if($browserType == 'html') return null; - - return $browserType; + if(eregi("SKT11", $userAgent)) return "wml"; + elseif(eregi("skt", $browserAccept)) return "wml"; + elseif(eregi("hdml", $browserAccept)) return "hdml"; + elseif(eregi("CellPhone", $userAgent)) return "mhtml"; + return null; } - // charset 지정 + /** + * @brief charset 지정 + **/ function setCharSet($charset = 'euc-kr') { if(!$charset) $charset = 'euc-kr'; $this->charset = $charset; } - // 모바일 기기의 용량 제한에 다른 가상 페이지 지정 + /** + * @brief 모바일 기기의 용량 제한에 다른 가상 페이지 지정 + **/ function setMobilePage($page=1) { if(!$page) $page = 1; $this->mobilePage = $page; } - // 목록형 데이터 설정을 위한 child menu지정 + /** + * @brief 목록형 데이터 설정을 위한 child menu지정 + **/ function setChilds($childs) { // menu개수가 9개 이상일 경우 자체 페이징 처리 $menu_count = count($childs); @@ -119,36 +202,71 @@ $this->childs = $childs; } - // menu 출력대상이 있는지 확인 + /** + * @brief menu 출력대상이 있는지 확인 + **/ function hasChilds() { return count($this->childs)?true:0; } - // child menu반환 + /** + * @brief child menu반환 + **/ function getChilds() { return $this->childs; } - // title 지정 + /** + * @brief title 지정 + **/ function setTitle($title) { $this->title = $title; } - // title 반환 + /** + * @brief title 반환 + **/ function getTitle() { return $this->title; } - // 컨텐츠 지정 + /** + * @brief 컨텐츠 정리 + * HTML 컨텐츠에서 텍스트와 링크만 추출하는 기능 + **/ function setContent($content) { - $content = str_replace(array('&','<','>','"','&nbsp;'), array('&','<','>','"',' '), strip_tags($content)); + // 링크/줄바꿈을 임의의 문자열로 변경하고 태그 모두 제거 + $content = strip_tags(preg_replace('/<(\/?)(a|br)/i','[$1$2', $content)); + + // 링크/줄바꿈을 다시 원위치 + $content = preg_replace('/\[(\/?)(a|br)/i','<$1$2', $content); + + // 탭 여백 제거 + $content = str_replace("\t", "", $content); + + // 2번 이상 반복되는 공백과 줄나눔을 제거 + $content = preg_replace('/( ){2,}/s', '', $content); + $content = preg_replace("/([\r\n]+)/s", "\r\n", $content); + $content = str_replace(array("","
","
"), array("","
","
"), $content); + while(strpos($content, '

')) { + $content = str_replace('

','
',$content); + } // 모바일의 경우 한 덱에 필요한 사이즈가 적어서 내용을 모두 페이지로 나눔 $contents = array(); while($content) { - $tmp = cut_str($content, $this->deckSize, ''); + $tmp = $this->cutStr($content, $this->deckSize, ''); $contents[] = $tmp; $content = substr($content, strlen($tmp)); + + //$content = str_replace(array('&','<','>','"','&nbsp;'), array('&','<','>','"',' '), $content); + + $tag_open_pos = strpos($content, ''); + if($tag_open_pos!==false && $tag_close_pos || $tag_close_pos < $tag_open_pos) { + $contents[count($contents)-1] .= substr($content, 0, $tag_close_pos+4); + $content = substr($content, $tag_close_pos+4); + } } $this->totalPage = count($contents); @@ -169,41 +287,66 @@ $this->content = $contents[$this->mobilePage-1]; } - // 컨텐츠 반환 + /** + * @brief byte수로 자르는 함수 + **/ + function cutStr($string, $cut_size) { + return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0] : $string; + } + + /** + * @brief 컨텐츠 반환 + **/ function getContent() { return $this->content; } - // home url 지정 + /** + * @brief home url 지정 + **/ function setHomeUrl($url, $text) { if(!$url) $url = '#'; $this->homeUrl->url = $url; $this->homeUrl->text = $text; } - // upper url 지정 + /** + * @brief upper url 지정 + **/ function setUpperUrl($url, $text) { if(!$url) $url = '#'; $this->upperUrl->url = $url; $this->upperUrl->text = $text; } - // prev url 지정 + /** + * @brief prev url 지정 + **/ function setPrevUrl($url, $text) { if(!$url) $url = '#'; $this->prevUrl->url = $url; $this->prevUrl->text = $text; } - // next url 지정 + /** + * @brief next url 지정 + **/ function setNextUrl($url, $text) { if(!$url) $url = '#'; $this->nextUrl->url = $url; $this->nextUrl->text = $text; } - // display + /** + * @brief display + **/ function display() { + // 홈버튼 지정 + $this->setHomeUrl(getUrl(), Context::getLang('cmd_go_home')); + + // 제목 지정 + $this->setTitle(Context::getBrowserTitle()); + ob_start(); // 헤더를 출력 @@ -230,17 +373,118 @@ exit(); } - // 페이지 이동 + /** + * @brief 페이지 이동 + **/ function movepage($url) { header("location:$url"); exit(); } - // 목록등에서 일련 번호를 리턴한다 + /** + * @brief 목록등에서 일련 번호를 리턴한다 + **/ function getNo() { $this->no++; $str = $this->no; return $str; } + + /** + * @brief XE의 Menu 모듈이 값을 사용하기 쉽게 정리해주는 함수 + **/ + function getListedItems($menu, &$listed_items, &$node_list) { + if(!count($menu)) return; + foreach($menu as $node_srl => $item) { + if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $item['url'])) { + $mid = $item['mid'] = $item['url']; + $node_list[$mid] = $node_srl; + } else { + $mid = $item['mid'] = null; + } + + $listed_items[$node_srl] = $item; + $this->getListedItems($item['list'], $listed_items, $node_list); + } + } + + /** + * @brief XE 네비게이션 출력 + **/ + function displayNavigationContent() { + $childs = array(); + + if($this->cmid) { + $cur_item = $this->listed_items[$this->cmid]; + $upper_srl = $cur_item['parent_srl'];; + $list = $cur_item['list'];; + $this->setUpperUrl(getUrl('cmid',$upper_srl), Context::getLang('cmd_go_upper')); + if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $cur_item['url'])) { + $obj = null; + $obj['href'] = getUrl('','mid',$cur_item['url']); + $obj['link'] = $obj['text'] = '['.$cur_item['text'].']'; + $childs[] = $obj; + } + + } else { + $list = $this->menu; + $upper_srl = 0; + } + + + if(count($list)) { + foreach($list as $key => $val) { + if(!$val['text']) continue; + $obj = null; + if(!count($val['list'])) { + $obj['href'] = getUrl('','mid',$val['url']); + } else { + $obj['href'] = getUrl('cmid',$val['node_srl']); + } + $obj['link'] = $obj['text'] = $val['text']; + $childs[] = $obj; + } + $this->setChilds($childs); + } + + // 출력 + $this->display(); + } + + /** + * @brief 모듈의 WAP 클래스 객체 생성하여 WAP 준비 + **/ + function displayModuleContent() { + // 선택된 모듈의 WAP class 객체 생성 + $oModule = &getWap($this->module_info->module); + if(!$oModule || !method_exists($oModule, 'procWAP') ) return; + + $vars = get_object_vars($this->oModule); + if(count($vars)) foreach($vars as $key => $val) $oModule->{$key} = $val; + + // 실행 + $oModule->procWAP($this); + + // 출력 + $this->display(); + } + + /** + * @brief WAP 컨텐츠를 별도로 구할 수 없으면 최종 결과물을 출력 + **/ + function displayContent() { + Context::set('layout','none'); + + // 템플릿 컴파일 + $oTemplate = new TemplateHandler(); + $oContext = &Context::getInstance(); + + $content = $oTemplate->compile($this->oModule->getTemplatePath(), $this->oModule->getTemplateFile()); + $content = $oContext->transContent($content); + $this->setContent($content); + + // 출력 + $this->display(); + } } ?> diff --git a/addons/mobile/classes/mobile.func.php b/addons/mobile/classes/mobile.func.php deleted file mode 100644 index d286ac71c..000000000 --- a/addons/mobile/classes/mobile.func.php +++ /dev/null @@ -1,17 +0,0 @@ - $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 index 6a1a5dbb6..c01365e41 100644 --- a/addons/mobile/classes/wml.class.php +++ b/addons/mobile/classes/wml.class.php @@ -5,6 +5,13 @@ **/ class wap extends mobileXE { + /** + * @brief constructor + **/ + function wap() { + parent::mobileXE(); + } + /** * @brief wml 헤더 출력 **/ @@ -42,14 +49,14 @@ * @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->prevUrl) { + $url = $this->prevUrl; + printf('%s', $this->getNo(), $url->text, $url->url, "\n"); + } if($this->homeUrl) { $url = $this->homeUrl; printf('%s', $url->text, $url->url, "\n"); diff --git a/addons/mobile/lang/en.lang.php b/addons/mobile/lang/en.lang.php index 1b27f09c6..977217ca8 100644 --- a/addons/mobile/lang/en.lang.php +++ b/addons/mobile/lang/en.lang.php @@ -7,4 +7,5 @@ $lang->cmd_go_upper = 'Upper'; $lang->cmd_go_home = 'Go Home'; + $lang->cmd_view_sitemap = 'View site map'; ?> diff --git a/addons/mobile/lang/jp.lang.php b/addons/mobile/lang/jp.lang.php index dc98ff6e0..760fe1431 100644 --- a/addons/mobile/lang/jp.lang.php +++ b/addons/mobile/lang/jp.lang.php @@ -6,4 +6,5 @@ **/ $lang->cmd_go_upper = '上位'; $lang->cmd_go_home = 'トップへ'; + $lang->cmd_view_sitemap = 'サイトマップ'; ?> diff --git a/addons/mobile/lang/ko.lang.php b/addons/mobile/lang/ko.lang.php index 43d0b4504..6b20e1f0f 100644 --- a/addons/mobile/lang/ko.lang.php +++ b/addons/mobile/lang/ko.lang.php @@ -7,4 +7,5 @@ $lang->cmd_go_upper = '상위'; $lang->cmd_go_home = '홈으로'; + $lang->cmd_view_sitemap = '사이트맵 보기'; ?> diff --git a/addons/mobile/lang/zh-CN.lang.php b/addons/mobile/lang/zh-CN.lang.php index 715c11ec1..8af552dc7 100644 --- a/addons/mobile/lang/zh-CN.lang.php +++ b/addons/mobile/lang/zh-CN.lang.php @@ -7,4 +7,5 @@ $lang->cmd_go_upper = '上一级'; $lang->cmd_go_home = '首页'; + $lang->cmd_view_sitemap = 'View site map'; ?> diff --git a/addons/mobile/lang/zh-TW.lang.php b/addons/mobile/lang/zh-TW.lang.php index fa5c6934b..7f838ce55 100644 --- a/addons/mobile/lang/zh-TW.lang.php +++ b/addons/mobile/lang/zh-TW.lang.php @@ -7,4 +7,5 @@ $lang->cmd_go_upper = '回上頁'; $lang->cmd_go_home = '回首頁'; + $lang->cmd_view_sitemap = 'View site map'; ?> diff --git a/addons/mobile/mobile.addon.php b/addons/mobile/mobile.addon.php index b597804c6..02169f752 100644 --- a/addons/mobile/mobile.addon.php +++ b/addons/mobile/mobile.addon.php @@ -7,149 +7,50 @@ * @brief 모바일XE 애드온 * * 헤더정보를 가로채서 모바일에서의 접속일 경우 WAP 태그로 컨텐츠를 출력함 - **/ - - // 재호출을 막기 위한 코드 - - // 관련 클래스 파일을 읽음 - require_once(_XE_PATH_.'addons/mobile/classes/mobile.class.php'); - require_once(_XE_PATH_.'addons/mobile/classes/mobile.func.php'); - - // 모바일 브라우저가 아니면 return - if(!mobileXE::getBrowserType()) return; - - // 관리자 페이지이거나 입출력이 XMLRPC일 경우에도 return - if(Context::get('module')=='admin' || Context::getRequestMethod()=='XMLRPC' || Context::getResponseMethod()=='XMLRPC' ) return; - - /** - * 전처리 - * 게시판의 경우 목록과 내용을 제대로 보여주기 위해서 모듈 정보를 조작함 - * 게시판 외의 경우 그냥 첫페이지의 내용을 출력함 - * 게시판 이외의 모듈 결과값은 차후 적용예정 - **/ - if($called_position == 'before_module_proc' && $this->module == 'board') { - $this->list_count = $this->module_info->list_count = 9; - return; - } - - /** + * + * 동작 시점 + * + * before_module_proc > 모바일 처리를 위해 모듈의 일반 설정을 변경해야 할 경우 호출 + * + * after_module_proc > 모바일 컨텐츠 출력 * 동작 조건 - * 1. called_position == after_module_proc 일 경우에만 동작 - * 2. 관리자 페이지가 아닐 경우 - * 3. Context::getRequestMethod()!=='XMLRPC' 일 경우에만 - * 4. Context::getResponseMethod()!=='XMLRPC' 일 경우에만 **/ - if($called_position != 'after_module_proc') return; + // 관리자 페이지는 무시 + if(Context::get('module')=='admin') return; + + // 동작 시점 관리 + if($called_position != 'before_module_proc' && $called_position != 'after_module_proc' ) return; + + // 모바일 브라우저가 아니라면 무시 + require_once(_XE_PATH_.'addons/mobile/classes/mobile.class.php'); + if(!mobileXE::getBrowserType()) return; + + // mobile instance 생성 $oMobile = &mobileXE::getInstance(); if(!$oMobile) return; + // 애드온 설정에서 지정된 charset으로 지정 $oMobile->setCharSet($addon_info->charset); - // 모듈의 정보를 구함 - $module_info = $this->module_info; + // 모듈의 정보를 세팅 + $oMobile->setModuleInfo($this->module_info); - // 메뉴 정보가 있는지 검사 - if($module_info->menu_srl) { + // 현재 모듈 객체 등록 + $oMobile->setModuleInstance($this); - // 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); + // 네비게이트 모드이거나 WAP class가 있을 경우 미리 컨텐츠를 추출하여 출력/ 종료 + if($called_position == 'before_module_proc') { - // url request parameter에 mid값이 없을 경우, 즉 첫페이지 인경우 전체 목록을 구함 - if(!isset($_GET['mid'])) $childs = $menu->list; - // mid가 명시되어 있으면 해당 mid의 childs를 구함 - else $childs = $listed_items[$module_info->mid]['list']; + // 네비게이트 모드이면 네비게이션 컨텐츠 출력 + if($oMobile->isNavigationMode()) $oMobile->displayNavigationContent(); - // 현재 메뉴의 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')); - } - } + // WAP class가 있으면 WAP class를 통해 컨텐츠 출력 + else $oMobile->displayModuleContent(); - // 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); - } + // 네비게이트 모드가 아니고 WAP 클래스가 아니면 모듈의 결과를 출력 + } else if($called_position == 'after_module_proc') { + // 내용 준비 + $oMobile->displayContent(); } - - // 홈버튼 지정 - $oMobile->setHomeUrl(getUrl(), Context::getLang('cmd_go_home')); - - // 제목 지정 - $oMobile->setTitle(Context::getBrowserTitle()); - - // 출력 - $oMobile->display(); ?> diff --git a/addons/point_level_icon/point_level_icon.lib.php b/addons/point_level_icon/point_level_icon.lib.php index 55b4b5458..471025c80 100644 --- a/addons/point_level_icon/point_level_icon.lib.php +++ b/addons/point_level_icon/point_level_icon.lib.php @@ -26,15 +26,19 @@ $text = $matches[5]; // 레벨 아이콘의 위치를 구함 - $level_icon = sprintf('./modules/point/icons/%s/%d.gif', $config->level_icon, $level); + $level_icon = sprintf('%smodules/point/icons/%s/%d.gif', Context::getRequestUri(), $config->level_icon, $level); - // 최고 레벨이 아니면 다음 레벨로 가기 위한 per을 구함 + // 최고 레벨이 아니면 다음 레벨로 가기 위한 per을 구함 :: 주석과 실제 내용이 맞지 않아 실제 내용을 수정 if($level < $config->max_level) { $next_point = $config->level_step[$level+1]; - if($next_point > 0) $per = (int)($point / $next_point*100); + $present_point = $config->level_step[$level]; + if($next_point > 0) { + $per = (int)(($point - $present_point) / ($next_point - $present_point)*100); + $per = $per.'%'; + } } - $title = sprintf('%s:%s%s %s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?'('.$per.'%)':'', Context::getLang('level'), $level, $config->max_level); + $title = sprintf('%s:%s%s%s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?' ('.$per.')':'', Context::getLang('level'), $level, $config->max_level); $alt = sprintf('[%s:%s]', Context::getLang('level'), $level); $GLOBALS['_pointLevelIcon'][$member_srl] = sprintf('%s', $level_icon, $alt, $title); diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index cc516e1dc..dd3ecd111 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -1,349 +1,204 @@ /** * @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경 **/ -var imageGalleryIndex = new Array(); -function resizeImageContents() { - // 이미지 태그 정규 표현식 - var img_regx = new RegExp("") + .attr("id","xe_gallery_screen") + .css({ + position:"absolute", + display:"none", + backgroundColor:"black", + zIndex:500, + opacity:0.5 + }); + + // 이미지를 보여주고 컨트롤 버튼을 다룰 레이어 + controls = $("
") + .attr("id","xe_gallery_controls") + .css({ + position:"absolute", + display:"none", + overflow:"hidden", + zIndex:510 + }); + + // 닫기 버튼 + closebtn = $("") + .attr("id", "xe_gallery_closebtn") + .attr("src", request_uri+"addons/resize_image/iconClose.png") + .css({ + top : "10px" + }) + .click(function(){xScreen.xeHide()}) + .appendTo(controls); + + // 이전 버튼 + prevbtn = $("") + .attr("id", "xe_gallery_prevbtn") + .attr("src", request_uri+"addons/resize_image/iconLeft.png") + .css("left","10px") + .click(function(){xScreen.xePrev()}) + .appendTo(controls); + + // 다음 버튼 + nextbtn = $("") + .attr("id", "xe_gallery_nextbtn") + .attr("src", request_uri+"addons/resize_image/iconRight.png") + .css("right","10px") + .click(function(){xScreen.xeNext()}) + .appendTo(controls); + + // 버튼 공통 속성 + controls.find("img") + .attr({ + width : 60, + height : 60, + className : "iePngFix" + }) + .css({ + position : "absolute", + width : "60px", + height : "60px", + zIndex : 530, + cursor : "pointer" + }); + + // 이미지 홀더 + imgframe = $("") + .attr("id", "xe_gallery_holder") + .css("border", "7px solid white") + .css("zIndex", 520) + .appendTo(controls).draggable(); - var html = xInnerHtml(xe_objs[j]); - if(!img_regx.test(html)) continue; + body.append(xScreen).append(controls); + + // xScreen 객체를 확장한다. + xScreen.xeShow = function() { + var clientWidth = $(window).width(); + var clientHeight = $(window).height(); + + $("#xe_gallery_controls,#xe_gallery_screen").css({ + display:"block", + width : clientWidth + "px", + height : clientHeight + "px", + left : $(document).scrollLeft(), + top : $(document).scrollTop() + }); - // 모든 이미지에 대한 체크를 시작 - var objs = xGetElementsByTagName("IMG", xe_objs[j]); + closebtn.css("left", Math.round((clientWidth-60)/2) + "px"); - for(var i=0;i parent_width - 2) { - obj.style.cursor = "pointer"; - var new_w = parent_width - 2; - var new_h = Math.round(obj_height * new_w/obj_width); - xWidth(obj, new_w); - xHeight(obj, new_h); - } - - obj.style.cursor = "pointer"; - - // 만약 대상 이미지에 링크가 설정되어 있거나 onclick 이벤트가 부여되어 있으면 원본 보기를 하지 않음 - if(obj.parentNode.nodeName.toLowerCase()!='a' && !obj.getAttribute('onclick')) xAddEventListener(obj,"click", showOriginalImage); - - obj.setAttribute("rel", j+','+imageGalleryIndex[j].length); - imageGalleryIndex[j][imageGalleryIndex[j].length] = obj.src; - } - } - } -} -xAddEventListener(window, "load", function() { setTimeout(resizeImageContents,1500); }); - -/** - * @brief 본문내에서 컨텐츠 영역보다 큰 이미지의 경우 원본 크기를 보여줌 - **/ -function showOriginalImage(evt) { - var e = new xEvent(evt); - var obj = e.target; - var src = obj.src; - var rel = obj.getAttribute('rel'); - displayOriginalImage(src, rel); + prevbtn.css("visibility", (this.index>0)?"visible":"hidden"); + nextbtn.css("visibility", (this.index1) { - - var prev = i-1; - var next = i+1; - if(prev>=0) { - iconLeft.style.visibility = 'visible'; - iconLeft.onclick = function() { displayOriginalImage(imageGalleryIndex[j][prev], j+','+prev); } - } else { - iconLeft.style.visibility = 'hidden'; - } - - if(nextoffsetWidth) { + img.attr("width",offsetWidth-1); + img.attr("height",parseInt(offsetWidth/width*height,10)); } - } + // 링크가 설정되어 있거나 onclick 이벤트가 부여되어 있으면 원본 보기를 하지 않음 + if ( !img.parent("a").size() && !img.attr("onclick") ) { + // 스타일 설정 + img.css("cursor", "pointer"); + + // 클릭하면 슬라이드쇼 시작 + img.click(slideshow); + } - // 원본 이미지를 추가 - var origObj = xGetElementById("forOriginalImage"); - if(origObj) foreObj.removeChild(origObj); - - origObj = null; - origObj = xCreateElement("img"); - origObj.id = "forOriginalImage"; - origObj.style.border = "7px solid #ffffff"; - origObj.style.visibility = "hidden"; - origObj.style.cursor = "move"; - origObj.style.zIndex = 520; - foreObj.appendChild(origObj); - - origObj.style.position = "relative"; - origObj.src = src; - - var objWidth = xWidth(origObj); - var objHeight = xHeight(origObj); - - var posX = 0; - var posY = 0; - - if(objWidth < foreWidth) posX = parseInt( (foreWidth - objWidth) / 2, 10); - if(objHeight < foreHeight) posY = parseInt( (foreHeight - objHeight) / 2, 10); - - xLeft(origObj, posX); - xTop(origObj, posY); - - origObj.style.visibility = "visible"; - - var sel_list = xGetElementsByTagName("select"); - for (var i = 0; i < sel_list.length; ++i) sel_list[i].style.visibility = "hidden"; - - xAddEventListener(origObj, "mousedown", origImageDragEnable); - xAddEventListener(origObj, "dblclick", closeOriginalImage); - xAddEventListener(iconClose, "mousedown", closeOriginalImage); - xAddEventListener(window, "scroll", closeOriginalImage); - xAddEventListener(window, "resize", closeOriginalImage); - xAddEventListener(document, 'keydown',closeOriginalImage); -} - -/** - * @brief 원본 이미지 보여준 후 닫는 함수 - **/ -function closeOriginalImage(evt) { - var bgObj = xGetElementById("forOriginalImageBGArea"); - var foreObj = xGetElementById("forOriginalImageArea"); - var origObj = xGetElementById("forOriginalImage"); - var iconClose = xGetElementById("forOriginalImageIconClose"); - var iconLeft = xGetElementById("forOriginalImageIconLeft"); - var iconRight = xGetElementById("forOriginalImageIconRight"); - - var sel_list = xGetElementsByTagName("select"); - for (var i = 0; i < sel_list.length; ++i) sel_list[i].style.visibility = "visible"; - - xRemoveEventListener(origObj, "mousedown", origImageDragEnable); - xRemoveEventListener(origObj, "dblclick", closeOriginalImage); - xRemoveEventListener(iconClose, "mousedown", closeOriginalImage); - xRemoveEventListener(window, "scroll", closeOriginalImage); - xRemoveEventListener(window, "resize", closeOriginalImage); - xRemoveEventListener(document, 'keydown',closeOriginalImage); - - bgObj.style.visibility = "hidden"; - foreObj.style.visibility = "hidden"; - origObj.style.visibility = "hidden"; - iconClose.style.visibility = 'hidden'; - iconLeft.style.visibility = 'hidden'; - iconRight.style.visibility = 'hidden'; -} - -/** - * @brief 원본 이미지 드래그 - **/ -var origDragManager = {obj:null, isDrag:false} -function origImageDragEnable(evt) { - var e = new xEvent(evt); - var obj = e.target; - if(obj.id != "forOriginalImage") return; - - obj.draggable = true; - obj.startX = e.pageX; - obj.startY = e.pageY; - - if(!origDragManager.isDrag) { - origDragManager.isDrag = true; - xAddEventListener(document, "mousemove", origImageDragMouseMove, false); - } - - xAddEventListener(document, "mousedown", origImageDragMouseDown, false); -} - -function origImageDrag(obj, px, py) { - var x = px - obj.startX; - var y = py - obj.startY; - - var origObj = xGetElementById("forOriginalImage"); - xLeft(origObj, xLeft(origObj)+x); - xTop(origObj, xTop(origObj)+y); - - obj.startX = px; - obj.startY = py; -} - -function origImageDragMouseDown(evt) { - var e = new xEvent(evt); - var obj = e.target; - if(obj.id != "forOriginalImage" || !obj.draggable) return; - - if(obj) { - xPreventDefault(evt); - obj.startX = e.pageX; - obj.startY = e.pageY; - origDragManager.obj = obj; - xAddEventListener(document, 'mouseup', origImageDragMouseUp, false); - origImageDrag(obj, e.pageX, e.pageY); - } -} - -function origImageDragMouseUp(evt) { - if(origDragManager.obj) { - xPreventDefault(evt); - xRemoveEventListener(document, 'mouseup', origImageDragMouseUp, false); - xRemoveEventListener(document, 'mousemove', origImageDragMouseMove, false); - xRemoveEventListener(document, 'mousemdown', origImageDragMouseDown, false); - origDragManager.obj.draggable = false; - origDragManager.obj = null; - origDragManager.isDrag = false; - } -} - -function origImageDragMouseMove(evt) { - var e = new xEvent(evt); - var obj = e.target; - if(!obj) return; - if(obj.id != "forOriginalImage") { - xPreventDefault(evt); - xRemoveEventListener(document, 'mouseup', origImageDragMouseUp, false); - xRemoveEventListener(document, 'mousemove', origImageDragMouseMove, false); - xRemoveEventListener(document, 'mousemdown', origImageDragMouseDown, false); - origDragManager.obj.draggable = false; - origDragManager.obj = null; - origDragManager.isDrag = false; - return; - } - - xPreventDefault(evt); - origDragManager.obj = obj; - xAddEventListener(document, 'mouseup', origImageDragMouseUp, false); - origImageDrag(obj, e.pageX, e.pageY); -} + }); +}); +})(jQuery); diff --git a/addons/resize_image/resize_image.addon.php b/addons/resize_image/resize_image.addon.php index cb906ddad..dab03da71 100644 --- a/addons/resize_image/resize_image.addon.php +++ b/addons/resize_image/resize_image.addon.php @@ -7,7 +7,8 @@ * @brief 본문내 이미지 조절 애드온 **/ - if($called_position == 'after_module_proc' && Context::getResponseMethod()!="XMLRPC") { + if($called_position == 'after_module_proc' && Context::getResponseMethod()=="HTML") { + Context::loadJavascriptPlugin('ui'); Context::addJsFile('./addons/resize_image/js/resize_image.js',false); } ?> diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 401f09575..5469475d6 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1203,8 +1203,8 @@ // 코드 변환 $content = preg_replace('/<(img|br)([^>\/]*)(\/>|>)/i','<$1$2 />', $content); - // 주소/?mid등과 같은 index.php가 명시되지 않은 파일의 target 변경 - //$content = str_replace(Context::getRequestUri().'?',Context::getRequestUri().'index.php?',$content); + // templateHandler의 이미지 경로로 인하여 생기는 절대경로 이미지등의 경로 중복 처리 + $content = preg_replace('/src=(["|\']?)http:\/\/([^ ]+)http:\/\//is','src=$1http://', $content); return $content; } diff --git a/classes/db/DBFirebird.class.php b/classes/db/DBFirebird.class.php index e5181f810..71283b9af 100644 --- a/classes/db/DBFirebird.class.php +++ b/classes/db/DBFirebird.class.php @@ -623,8 +623,12 @@ $type = $this->getColumnType($column_type,$name); $pipe = $v['pipe']; - $value = $this->getConditionValue($name, $value, $operation, $type, $column_type); + $value = $this->getConditionValue('"'.$name.'"', $value, $operation, $type, $column_type); if(!$value) $value = $v['value']; + + $name = $this->autoQuotes($name); + $value = $this->autoValueQuotes($value, $output); + $str = $this->getConditionPart($name, $value, $operation); if($sub_condition) $sub_condition .= ' '.$pipe.' '; $sub_condition .= $str; diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index 0d12fca41..ea8e7fdcb 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -161,97 +161,44 @@ } /** - * @brief 디버그 모드일 경우 디버기 메세지 출력 + * @brief 디버그 모드일 경우 디버깅 메시지 출력 * - * __DEBUG__가 1이상일 경우 각 부분의 실행시간등을 debugPrint 함수를 이용해서 출력\n - * 개발시나 테스트시에 config/config.inc.php의 __DEBUG__를 세팅하고\n - * tail -f ./files/_debug_message.php로 하여 console로 확인하면 편리함\n + * __DEBUG__ 값이 1 이상이면 __DEBUG_OUTPUT__ 값에 따라 메시지 출력. + * __DEBUG__를 세팅하고, __DEBUG_OUTPUT__ == 0 이면 + * tail -f ./files/_debug_message.php로 하여 console로 확인하면 편리함 **/ function _debugOutput() { if(!__DEBUG__) return; $end = getMicroTime(); - if(__DEBUG_OUTPUT__ != 2 || (__DEBUG_OUTPUT__ == 2 && !version_compare(PHP_VERSION, '5.2.0', '>'))) { - // debug string 작성 시작 - $buff = "\n\n** Debug at ".date('Y-m-d H:i:s')." ************************************************************\n"; - - // Request/Response 정보 작성 - $buff .= "\n- Request/ Response info\n"; - $buff .= sprintf("\tRequest URI \t\t\t: %s:%s%s%s%s\n", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING']?'?':'', $_SERVER['QUERY_STRING']); - $buff .= sprintf("\tRequest method \t\t\t: %s\n", $_SERVER['REQUEST_METHOD']); - $buff .= sprintf("\tResponse method \t\t: %s\n", Context::getResponseMethod()); - $buff .= sprintf("\tResponse contents size\t\t: %d byte\n", $this->getContentSize()); - - // DB 로그 작성 - if(__DEBUG__ > 1) { - if($GLOBALS['__db_queries__']) { - $buff .= "\n- DB Queries\n"; - $num = 0; - foreach($GLOBALS['__db_queries__'] as $query) { - $buff .= sprintf("\t%02d. %s (%0.6f sec)\n", ++$num, $query['query'], $query['elapsed_time']); - if($query['result'] == 'Success') { - $buff .= "\t Query Success\n"; - } else { - $buff .= sprintf("\t Query $s : %d\n\t\t\t %s\n", $query['result'], $query['errno'], $query['errstr']); - } - } - } - $buff .= "\n- Elapsed time\n"; - - if($GLOBALS['__db_elapsed_time__']) $buff .= sprintf("\tDB queries elapsed time\t\t: %0.5f sec\n", $GLOBALS['__db_elapsed_time__']); - } - - // 기타 로그 작성 - if(__DEBUG__==3) { - $buff .= sprintf("\tclass file load elapsed time \t: %0.5f sec\n", $GLOBALS['__elapsed_class_load__']); - $buff .= sprintf("\tTemplate compile elapsed time\t: %0.5f sec (%d called)\n", $GLOBALS['__template_elapsed__'], $GLOBALS['__TemplateHandlerCalled__']); - $buff .= sprintf("\tXmlParse compile elapsed time\t: %0.5f sec\n", $GLOBALS['__xmlparse_elapsed__']); - $buff .= sprintf("\tPHP elapsed time \t\t: %0.5f sec\n", $end-__StartTime__-$GLOBALS['__template_elapsed__']-$GLOBALS['__xmlparse_elapsed__']-$GLOBALS['__db_elapsed_time__']-$GLOBALS['__elapsed_class_load__']); - - // 위젯 실행 시간 작성 - $buff .= sprintf("\n\tWidgets elapsed time \t\t: %0.5f sec", $GLOBALS['__widget_excute_elapsed__']); - - // 레이아웃 실행 시간 - $buff .= sprintf("\n\tLayout compile elapsed time \t: %0.5f sec", $GLOBALS['__layout_compile_elapsed__']); - - // 위젯, 에디터 컴포넌트 치환 시간 - $buff .= sprintf("\n\tTrans widget&editor elapsed time: %0.5f sec\n\n", $GLOBALS['__trans_widget_editor_elapsed__']); - } - - // 전체 실행 시간 작성 - $buff .= sprintf("\tTotal elapsed time \t\t: %0.5f sec", $end-__StartTime__); - } - - if(__DEBUG_OUTPUT__ == 1 && Context::getResponseMethod() == 'HTML') { - if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { - $buff = '허용되지 않은 IP 입니다. config/config.inc.php 파일의 __DEBUG_PROTECT_IP__ 상수 값을 자신의 IP로 변경하세요.'; - } - return ""; - } - - if(__DEBUG_OUTPUT__==0) debugPrint($buff, false); - // Firebug 콘솔 출력 - if(__DEBUG_OUTPUT__ == 2 && version_compare(PHP_VERSION, '5.2.0', '>')) { - debugPrint( - array('Request / Response info >>> '.Context::getResponseMethod().' / '.$_SERVER['REQUEST_METHOD'], - array( - array('Request URI', 'Request method', 'Response method', 'Response contents size'), - array( - sprintf("%s:%s%s%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING']?'?':'', $_SERVER['QUERY_STRING']), - $_SERVER['REQUEST_METHOD'], - Context::getResponseMethod(), - $this->getContentSize().' byte' - ) - ) - ), - 'TABLE' - ); + if(__DEBUG_OUTPUT__ == 2 && version_compare(PHP_VERSION, '5.2.0', '>=')) { + static $firephp; + if(!isset($firephp)) $firephp = FirePHP::getInstance(true); - // 기타 로그 작성 - if(__DEBUG__ == 3 || __DEBUG__ == 1) { - debugPrint( + if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { + $firephp->fb('Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php', 'The IP address is not allowed.'); + return; + } + + // 전체 실행 시간 출력, Request/Response info 출력 + if(__DEBUG__ & 2) { + $firephp->fb( + array('Request / Response info >>> '.$_SERVER['REQUEST_METHOD'].' / '.Context::getResponseMethod(), + array( + array('Request URI', 'Request method', 'Response method', 'Response contents size'), + array( + sprintf("%s:%s%s%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING']?'?':'', $_SERVER['QUERY_STRING']), + $_SERVER['REQUEST_METHOD'], + Context::getResponseMethod(), + $this->getContentSize().' byte' + ) + ) + ), + 'TABLE' + ); + $firephp->fb( array('Elapsed time >>> Total : '.sprintf('%0.5f sec', $end - __StartTime__), array(array('DB queries', 'class file load', 'Template compile', 'XmlParse compile', 'PHP', 'Widgets', 'Trans widget&editor'), array( @@ -269,21 +216,95 @@ ); } - // DB 쿼리 로그 - if(__DEBUG__ > 1) { + // DB 쿼리 내역 출력 + if((__DEBUG__ & 4) && $GLOBALS['__db_queries__']) { $queries_output = array(array('Query', 'Elapsed time', 'Result')); foreach($GLOBALS['__db_queries__'] as $query) { array_push($queries_output, array($query['query'], sprintf('%0.5f', $query['elapsed_time']), $query['result'])); } - debugPrint( - array('DB Queries >>> '.count($GLOBALS['__db_queries__']).' Queries, '.sprintf('%0.5f sec', $GLOBALS['__db_elapsed_time__']), $queries_output), + $firephp->fb( + array( + 'DB Queries >>> '.count($GLOBALS['__db_queries__']).' Queries, '.sprintf('%0.5f sec', $GLOBALS['__db_elapsed_time__']), + $queries_output + ), 'TABLE' ); } + + // 파일 및 HTML 주석으로 출력 + } else { + // debug string 작성 시작 + $buff = "** Debug at ".date('Y-m-d H:i:s').str_repeat('*', 60)."\n"; + + // 전체 실행 시간 출력, Request/Response info 출력 + if(__DEBUG__ & 2) { + // Request/Response 정보 작성 + $buff .= "\n- Request/ Response info\n"; + $buff .= sprintf("\tRequest URI \t\t\t: %s:%s%s%s%s\n", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING']?'?':'', $_SERVER['QUERY_STRING']); + $buff .= sprintf("\tRequest method \t\t\t: %s\n", $_SERVER['REQUEST_METHOD']); + $buff .= sprintf("\tResponse method \t\t: %s\n", Context::getResponseMethod()); + $buff .= sprintf("\tResponse contents size\t\t: %d byte\n", $this->getContentSize()); + + // 전체 실행 시간 + $buff .= sprintf("\n- Total elapsed time : %0.5f sec\n", $end-__StartTime__); + + $buff .= sprintf("\tclass file load elapsed time \t: %0.5f sec\n", $GLOBALS['__elapsed_class_load__']); + $buff .= sprintf("\tTemplate compile elapsed time\t: %0.5f sec (%d called)\n", $GLOBALS['__template_elapsed__'], $GLOBALS['__TemplateHandlerCalled__']); + $buff .= sprintf("\tXmlParse compile elapsed time\t: %0.5f sec\n", $GLOBALS['__xmlparse_elapsed__']); + $buff .= sprintf("\tPHP elapsed time \t\t: %0.5f sec\n", $end-__StartTime__-$GLOBALS['__template_elapsed__']-$GLOBALS['__xmlparse_elapsed__']-$GLOBALS['__db_elapsed_time__']-$GLOBALS['__elapsed_class_load__']); + + // 위젯 실행 시간 작성 + $buff .= sprintf("\n\tWidgets elapsed time \t\t: %0.5f sec", $GLOBALS['__widget_excute_elapsed__']); + + // 레이아웃 실행 시간 + $buff .= sprintf("\n\tLayout compile elapsed time \t: %0.5f sec", $GLOBALS['__layout_compile_elapsed__']); + + // 위젯, 에디터 컴포넌트 치환 시간 + $buff .= sprintf("\n\tTrans widget&editor elapsed time: %0.5f sec\n", $GLOBALS['__trans_widget_editor_elapsed__']); + } + + // DB 로그 작성 + if(__DEBUG__ & 4) { + if($GLOBALS['__db_queries__']) { + $buff .= sprintf("\n- DB Queries : %d Queries. %0.5f sec\n", count($GLOBALS['__db_queries__']), $GLOBALS['__db_elapsed_time__']); + $num = 0; + + foreach($GLOBALS['__db_queries__'] as $query) { + $buff .= sprintf("\t%02d. %s\n\t\t%0.6f sec. ", ++$num, $query['query'], $query['elapsed_time']); + if($query['result'] == 'Success') { + $buff .= "Query Success\n"; + } else { + $buff .= sprintf("Query $s : %d\n\t\t\t %s\n", $query['result'], $query['errno'], $query['errstr']); + } + } + } + } + + // HTML 주석으로 출력 + if(__DEBUG_OUTPUT__ == 1 && Context::getResponseMethod() == 'HTML') { + if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { + $buff = 'The IP address is not allowed. Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php'; + } + return ""; + } + + // 파일에 출력 + if(__DEBUG_OUTPUT__ == 0) { + $debug_file = _XE_PATH_.'files/_debug_message.php'; + $debug_output = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($debug_output, true)); + + if($display_option === true) $debug_output = str_repeat('=', 40)."\n".$debug_output.str_repeat('-', 40); + $debug_output = "\n\n"; + + if(@!$fp = fopen($debug_file, 'a')) return; + fwrite($fp, $debug_output); + fclose($fp); + } } } + /** * @brief RequestMethod에 맞춰 헤더 출력 ***/ diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 69d41c548..e0d4dd988 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -18,6 +18,39 @@ return $source; } + + + /** + * @brief 특정 디렉토리를 복사 + **/ + function copyDir($source_dir, $target_dir, $filter=null,$type=null){ + $source_dir = FileHandler::getRealPath($source_dir); + $target_dir = FileHandler::getRealPath($target_dir); + if(!is_dir($source_dir)) return false; + + // target이 없을땐 생성 + if(!file_exists($target_dir)) FileHandler::makeDir($target_dir); + + if(substr($source_dir, -1) != '/') $source_dir .= '/'; + if(substr($target_dir, -1) != '/') $target_dir .= '/'; + + $oDir = dir($source_dir); + while($file = $oDir->read()) { + if(substr($file,0,1)=='.') continue; + if($filter && preg_match($filter, $file)) continue; + if(is_dir($source_dir.$file)){ + FileHandler::copyDir($source_dir.$file,$target_dir.$file,$type); + }else{ + if($type == 'force'){ + @unlink($target_dir.$file); + }else{ + if(!file_exists($target_dir.$file)) @copy($source_dir.$file,$target_dir.$file); + } + } + } + } + + /** * @brief 파일의 내용을 읽어서 return **/ diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 0b2dc757f..4eef5fd67 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -331,6 +331,10 @@ $instance_name = sprintf("%s%s",$module,"API"); $class_file = sprintf('%s%s%s.api.php', _XE_PATH_, $class_path, $module); break; + case 'wap' : + $instance_name = sprintf("%s%s",$module,"WAP"); + $class_file = sprintf('%s%s%s.wap.php', _XE_PATH_, $class_path, $module); + break; case 'class' : $instance_name = $module; $class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module); diff --git a/classes/optimizer/Optimizer.class.php b/classes/optimizer/Optimizer.class.php index 376279249..ba6d603eb 100644 --- a/classes/optimizer/Optimizer.class.php +++ b/classes/optimizer/Optimizer.class.php @@ -66,7 +66,13 @@ array_unshift($files, array('file' => $path.'/'.$filename, 'media' => 'all')); - return $this->_getOptimizedRemoved($files); + $files = $this->_getOptimizedRemoved($files); + if(!count($files)) return $files; + + foreach($files as $key => $val) { + if(substr($val['file'],0,2)=='./') $files[$key]['file'] = Context::getRequestUri().substr($val['file'],2); + } + return $files; } /** @@ -208,10 +214,15 @@ if(!$cached) { } function _replaceCssPath($matches) { + static $abpath = null; + if(is_null($abpath)) { + $url_info = parse_url(Context::getRequestUri()); + $abpath = $url_info['path']; + } $path = str_replace(array('"',"'"),'',$matches[1]); if(preg_match('/^http|^\//i', $path) || preg_match('/\.htc$/i',$path) ) return $matches[0]; - return 'url("../../../../'.$this->tmp_css_path.$path.'")'; + return 'url("'.$abpath.$this->tmp_css_path.$path.'")'; } } diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index dd7f2e1a5..b00d16a0d 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -47,7 +47,7 @@ // tpl_file이 비어 있거나 해당 파일이 없으면 return if(!$tpl_file || !file_exists(FileHandler::getRealPath($tpl_file))) return; - $this->tpl_path = $tpl_path; + $this->tpl_path = preg_replace('/^\.\//','',$tpl_path); $this->tpl_file = $tpl_file; // compiled된(or 될) 파일이름을 구함 @@ -155,12 +155,11 @@ $str1 = $matches[0]; $str2 = $path = $matches[3]; - if(!preg_match('/^([a-z0-9\_\.])/i',$path)) return $str1; + if(substr($path,0,1)=='/') return $str1; - $path = preg_replace('/^(\.\/|\/)/','',$path); - $path = 'tpl_path?>'.$path; - $output = str_replace($str2, $path, $str1); - return $output; + if(substr($path,0,2)=='./') $path = substr($path,2); + $path = 'tpl_path; ?>'.$path; + return str_replace($str2, $path, $str1); } /** diff --git a/classes/widget/WidgetHandler.class.php b/classes/widget/WidgetHandler.class.php index 4bd1aa7df..d5afaab30 100644 --- a/classes/widget/WidgetHandler.class.php +++ b/classes/widget/WidgetHandler.class.php @@ -112,7 +112,7 @@ * 관리자가 지정한 위젯의 style을 구함 **/ // 가끔 잘못된 코드인 background-image:url(none)이 들어 있을 수가 있는데 이럴 경우 none에 대한 url을 요청하므로 무조건 제거함 - $style = preg_replace('/background\-image: url\(none\)/is','', $args->style); + $style = preg_replace('/background\-image: url\((.+)(\/?)none\)/is','', $args->style); // 내부 여백을 둔 것을 구해서 style문으로 미리 변경해 놓음 $widget_padding_left = $args->widget_padding_left; @@ -132,7 +132,7 @@ case 'widgetContent' : if($args->document_srl) { $oDocument = $oDocumentModel->getDocument($args->document_srl); - $body = $oDocument->getContent(false,false,false); + $body = $oDocument->getContent(false,false,false, false); } else { $body = base64_decode($args->body); } diff --git a/common/js/common.js b/common/js/common.js index e0078c0c8..f8ac5ef19 100644 --- a/common/js/common.js +++ b/common/js/common.js @@ -472,7 +472,7 @@ function displayMultimedia(src, width, height, options) { var codebase = ""; var html = ""; - if(/\.swf/i.test(src)) { + if(/\.swf$/i.test(src)) { clsid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0"; html = ''; @@ -485,10 +485,14 @@ function displayMultimedia(src, width, height, options) { html += '' + '' + ''; - } else if(/\.flv/i.test(src)) { - html = ''; - } else { - html = ''; + } else if(/\.flv$/i.test(src) || /\.mov$/i.test(src) || /\.moov$/i.test(src) || /\.m4v$/i.test(src)) { + html = ''; + } else { + html = '35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(b(C){C.j={1Z:{1z:b(E,D,H){c G=C.j[E].4t;28(c F 7C H){G.4K[F]=G.4K[F]||[];G.4K[F].3E([D,H[F]])}},1G:b(D,F,E){c H=D.4K[F];8(!H){k}28(c G=0;G\').1b(D).m({r:"1K",h:"-9K",f:"-9K",41:"5n"}).2f("1C");C.j.6Q[D]=!!((!(/2Z|69/).1h(E.m("1X"))||(/^[1-9]/).1h(E.m("o"))||(/^[1-9]/).1h(E.m("p"))||!(/4D/).1h(E.m("8b"))||!(/54|b5\\(0, 0, 0, 0\\)/).1h(E.m("5E"))));bZ{C("1C").3K(0).8H(E.3K(0))}bV(F){}k C.j.6Q[D]},5u:b(D){C(D).2i("6P","9M").m("9J","4D")},bQ:b(D){C(D).2i("6P","ch").m("9J","")},6A:b(G,D){c F=/h/.1h(D||"h")?"1V":"1U",E=v;8(G[F]>0){k 12}G[F]=1;E=G[F]>0?12:v;G[F]=0;k E}};c A=C.33.1P;C.33.1P=b(){C("*",6).1z(6).1R("1P");k A.1k(6,1j)};b B(F,D,G){c E=C[F][D].7F||[];E=(2W E=="5t"?E.6M(/,?\\s+/):E);k(C.5m(G,E)!=-1)}C.3i=b(D,E){c F=D.6M(".")[0];D=D.6M(".")[1];C.33[D]=b(J){c H=(2W J=="5t"),I=7y.4t.bu.1G(1j,1);8(H&&B(F,D,J)){c G=C.17(6[0],D);k(G?G[J].1k(G,I):21)}k 6.1i(b(){c K=C.17(6,D);8(H&&K&&C.67(K[J])){K[J].1k(K,I)}19{8(!H){C.17(6,D,89 C[F][D](6,J))}}})};C[F][D]=b(H,I){c G=6;6.57=D;6.9G=F+"-"+D;6.d=C.1E({},C.3i.3u,C[F][D].3u,I);6.l=C(H).2H("4s."+D,b(L,J,K){k G.4s(J,K)}).2H("8g."+D,b(K,J){k G.8g(J)}).2H("1P",b(){k G.2J()});6.3T()};C[F][D].4t=C.1E({},C.3i.4t,E)};C.3i.4t={3T:b(){},2J:b(){6.l.3l(6.57)},8g:b(D){k 6.d[D]},4s:b(D,E){6.d[D]=E;8(D=="1q"){6.l[E?"1b":"1w"](6.9G+"-1q")}},6o:b(){6.4s("1q",v)},4R:b(){6.4s("1q",12)}};C.3i.3u={1q:v};C.j.3n={68:b(){c D=6;6.l.2H("62."+6.57,b(E){k D.8a(E)});8(C.1Y.3e){6.9O=6.l.2i("6P");6.l.2i("6P","9M")}6.bG=v},6n:b(){6.l.36("."+6.57);(C.1Y.3e&&6.l.2i("6P",6.9O))},8a:b(F){(6.4H&&6.71(F));6.7w=F;c D=6,G=(F.bE==1),E=(2W 6.d.4L=="5t"?C(F.35).4q().1z(F.35).2K(6.d.4L).1e:v);8(!G||E||!6.6I(F)){k 12}6.7v=!6.d.5j;8(!6.7v){6.bA=5G(b(){D.7v=12},6.d.5j)}8(6.8B(F)&&6.8z(F)){6.4H=(6.4C(F)!==v);8(!6.4H){F.8R();k 12}}6.8t=b(H){k D.9P(H)};6.8h=b(H){k D.71(H)};C(Z).2H("ar."+6.57,6.8t).2H("8C."+6.57,6.8h);k v},9P:b(D){8(C.1Y.3e&&!D.7e){k 6.71(D)}8(6.4H){6.3W(D);k v}8(6.8B(D)&&6.8z(D)){6.4H=(6.4C(6.7w,D)!==v);(6.4H?6.3W(D):6.71(D))}k!6.4H},71:b(D){C(Z).36("ar."+6.57,6.8t).36("8C."+6.57,6.8h);8(6.4H){6.4H=v;6.4J(D)}k v},8B:b(D){k(11.22(11.3a(6.7w.2z-D.2z),11.3a(6.7w.2C-D.2C))>=6.d.3A)},8z:b(D){k 6.7v},4C:b(D){},3W:b(D){},4J:b(D){},6I:b(D){k 12}};C.j.3n.3u={4L:1c,3A:1,5j:0}})(1x);(b(A){A.3i("j.1D",A.1E({},A.j.3n,{3T:b(){c B=6.d;8(B.t=="8m"&&!(/(1I|1K|3Z)/).1h(6.l.m("r"))){6.l.m("r","1I")}6.l.1b("j-1D");(B.1q&&6.l.1b("j-1D-1q"));6.68()},4C:b(F){c H=6.d;8(6.t||H.1q||A(F.35).4i(".j-13-1n")){k v}c B=!6.d.1n||!A(6.d.1n,6.l).1e?12:v;A(6.d.1n,6.l).3L("*").5y().1i(b(){8(6==F.35){B=12}});8(!B){k v}8(A.j.2b){A.j.2b.4v=6}6.t=A.67(H.t)?A(H.t.1k(6.l[0],[F])):(H.t=="4O"?6.l.4O():6.l);8(!6.t.4q("1C").1e){6.t.2f((H.2f=="1a"?6.l[0].3h:H.2f))}8(6.t[0]!=6.l[0]&&!(/(3Z|1K)/).1h(6.t.m("r"))){6.t.m("r","1K")}6.2o={f:(u(6.l.m("5I"),10)||0),h:(u(6.l.m("5N"),10)||0)};6.3t=6.t.m("r");6.q=6.l.q();6.q={h:6.q.h-6.2o.h,f:6.q.f-6.2o.f};6.q.1o={f:F.2z-6.q.f,h:F.2C-6.q.h};6.1Q=6.t.1Q();c C=6.1Q.q();8(6.1Q[0]==Z.1C&&A.1Y.d1){C={h:0,f:0}}6.q.1a={h:C.h+(u(6.1Q.m("4c"),10)||0),f:C.f+(u(6.1Q.m("49"),10)||0)};c E=6.l.r();6.q.1I=6.3t=="1I"?{h:E.h-(u(6.t.m("h"),10)||0)+6.1Q[0].1V,f:E.f-(u(6.t.m("f"),10)||0)+6.1Q[0].1U}:{h:0,f:0};6.2g=6.6k(F);6.1y={p:6.t.2n(),o:6.t.2e()};8(H.2T){8(H.2T.f!=21){6.q.1o.f=H.2T.f+6.2o.f}8(H.2T.2u!=21){6.q.1o.f=6.1y.p-H.2T.2u+6.2o.f}8(H.2T.h!=21){6.q.1o.h=H.2T.h+6.2o.h}8(H.2T.2y!=21){6.q.1o.h=6.1y.o-H.2T.2y+6.2o.h}}8(H.1d){8(H.1d=="1a"){H.1d=6.t[0].3h}8(H.1d=="Z"||H.1d=="2R"){6.1d=[0-6.q.1I.f-6.q.1a.f,0-6.q.1I.h-6.q.1a.h,A(H.1d=="Z"?Z:2R).p()-6.q.1I.f-6.q.1a.f-6.1y.p-6.2o.f-(u(6.l.m("5d"),10)||0),(A(H.1d=="Z"?Z:2R).o()||Z.1C.3h.4S)-6.q.1I.h-6.q.1a.h-6.1y.o-6.2o.h-(u(6.l.m("5e"),10)||0)]}8(!(/^(Z|2R|1a)$/).1h(H.1d)){c D=A(H.1d)[0];c G=A(H.1d).q();6.1d=[G.f+(u(A(D).m("49"),10)||0)-6.q.1I.f-6.q.1a.f,G.h+(u(A(D).m("4c"),10)||0)-6.q.1I.h-6.q.1a.h,G.f+11.22(D.6R,D.3I)-(u(A(D).m("49"),10)||0)-6.q.1I.f-6.q.1a.f-6.1y.p-6.2o.f-(u(6.l.m("5d"),10)||0),G.h+11.22(D.4S,D.3J)-(u(A(D).m("4c"),10)||0)-6.q.1I.h-6.q.1a.h-6.1y.o-6.2o.h-(u(6.l.m("5e"),10)||0)]}}6.1H("1O",F);6.1y={p:6.t.2n(),o:6.t.2e()};8(A.j.2b&&!H.7Y){A.j.2b.7E(6,F)}6.t.1b("j-1D-6W");6.3W(F);k 12},3r:b(C,D){8(!D){D=6.r}c B=C=="1K"?1:-1;k{h:(D.h+6.q.1I.h*B+6.q.1a.h*B-(6.3t=="3Z"||(6.3t=="1K"&&6.1Q[0]==Z.1C)?0:6.1Q[0].1V)*B+(6.3t=="3Z"?A(Z).1V():0)*B+6.2o.h*B),f:(D.f+6.q.1I.f*B+6.q.1a.f*B-(6.3t=="3Z"||(6.3t=="1K"&&6.1Q[0]==Z.1C)?0:6.1Q[0].1U)*B+(6.3t=="3Z"?A(Z).1U():0)*B+6.2o.f*B)}},6k:b(E){c F=6.d;c B={h:(E.2C-6.q.1o.h-6.q.1I.h-6.q.1a.h+(6.3t=="3Z"||(6.3t=="1K"&&6.1Q[0]==Z.1C)?0:6.1Q[0].1V)-(6.3t=="3Z"?A(Z).1V():0)),f:(E.2z-6.q.1o.f-6.q.1I.f-6.q.1a.f+(6.3t=="3Z"||(6.3t=="1K"&&6.1Q[0]==Z.1C)?0:6.1Q[0].1U)-(6.3t=="3Z"?A(Z).1U():0))};8(!6.2g){k B}8(6.1d){8(B.f<6.1d[0]){B.f=6.1d[0]}8(B.h<6.1d[1]){B.h=6.1d[1]}8(B.f>6.1d[2]){B.f=6.1d[2]}8(B.h>6.1d[3]){B.h=6.1d[3]}}8(F.2d){c D=6.2g.h+11.2M((B.h-6.2g.h)/F.2d[1])*F.2d[1];B.h=6.1d?(!(D<6.1d[1]||D>6.1d[3])?D:(!(D<6.1d[1])?D-F.2d[1]:D+F.2d[1])):D;c C=6.2g.f+11.2M((B.f-6.2g.f)/F.2d[0])*F.2d[0];B.f=6.1d?(!(C<6.1d[0]||C>6.1d[2])?C:(!(C<6.1d[0])?C-F.2d[0]:C+F.2d[0])):C}k B},3W:b(B){6.r=6.6k(B);6.2B=6.3r("1K");6.r=6.1H("2S",B)||6.r;8(!6.d.23||6.d.23!="y"){6.t[0].2v.f=6.r.f+"2F"}8(!6.d.23||6.d.23!="x"){6.t[0].2v.h=6.r.h+"2F"}8(A.j.2b){A.j.2b.2S(6,B)}k v},4J:b(C){c D=v;8(A.j.2b&&!6.d.7Y){c D=A.j.2b.3V(6,C)}8((6.d.4j=="d3"&&!D)||(6.d.4j=="d2"&&D)||6.d.4j===12){c B=6;A(6.t).1l(6.2g,u(6.d.4j,10)||6a,b(){B.1H("1W",C);B.5K()})}19{6.1H("1W",C);6.5K()}k v},5K:b(){6.t.1w("j-1D-6W");8(6.d.t!="8m"&&!6.6e){6.t.1P()}6.t=1c;6.6e=v},4K:{},8k:b(B){k{t:6.t,r:6.r,70:6.2B,d:6.d}},1H:b(C,B){A.j.1Z.1G(6,C,[B,6.8k()]);8(C=="2S"){6.2B=6.3r("1K")}k 6.l.1R(C=="2S"?C:"2S"+C,[B,6.8k()],6.d[C])},2J:b(){8(!6.l.17("1D")){k}6.l.3l("1D").36(".1D").1w("j-1D");6.6n()}}));A.1E(A.j.1D,{3u:{2f:"1a",23:v,4L:":4P",5j:0,3A:1,t:"8m"}});A.j.1Z.1z("1D","1X",{1O:b(D,C){c B=A("1C");8(B.m("1X")){C.d.5U=B.m("1X")}B.m("1X",C.d.1X)},1W:b(C,B){8(B.d.5U){A("1C").m("1X",B.d.5U)}}});A.j.1Z.1z("1D","24",{1O:b(D,C){c B=A(C.t);8(B.m("24")){C.d.5R=B.m("24")}B.m("24",C.d.24)},1W:b(C,B){8(B.d.5R){A(B.t).m("24",B.d.5R)}}});A.j.1Z.1z("1D","1t",{1O:b(D,C){c B=A(C.t);8(B.m("1t")){C.d.5T=B.m("1t")}B.m("1t",C.d.1t)},1W:b(C,B){8(B.d.5T){A(B.t).m("1t",B.d.5T)}}});A.j.1Z.1z("1D","86",{1O:b(C,B){A(B.d.86===12?"cX":B.d.86).1i(b(){A(\'<29 4h="j-1D-86" 2v="7S: #cQ;">\').m({p:6.3I+"2F",o:6.3J+"2F",r:"1K",1t:"0.cS",24:6X}).m(A(6).q()).2f("1C")})},1W:b(C,B){A("29.df").1i(b(){6.3h.8H(6)})}});A.j.1Z.1z("1D","3X",{1O:b(D,C){c E=C.d;c B=A(6).17("1D");E.2O=E.2O||20;E.2P=E.2P||20;B.2D=b(F){do{8(/2Z|3X/.1h(F.m("2m"))||(/2Z|3X/).1h(F.m("2m-y"))){k F}F=F.1a()}6f(F[0].3h);k A(Z)}(6);B.2A=b(F){do{8(/2Z|3X/.1h(F.m("2m"))||(/2Z|3X/).1h(F.m("2m-x"))){k F}F=F.1a()}6f(F[0].3h);k A(Z)}(6);8(B.2D[0]!=Z&&B.2D[0].4w!="4Q"){B.5S=B.2D.q()}8(B.2A[0]!=Z&&B.2A[0].4w!="4Q"){B.5V=B.2A.q()}},2S:b(D,C){c E=C.d;c B=A(6).17("1D");8(B.2D[0]!=Z&&B.2D[0].4w!="4Q"){8((B.5S.h+B.2D[0].3J)-D.2C=0;H--){c E=I.5F[H].f,B=E+I.5F[H].p,R=I.5F[H].h,M=R+I.5F[H].o;8(!((E-L=L&&K<=G)||(H>=L&&H<=G)||(KG))&&((D>=F&&D<=B)||(C>=F&&C<=B)||(DB));2j;69:k v;2j}};A.j.2b={4v:1c,64:[],7E:b(D,F){c B=A.j.2b.64;c E=F?F.6v:1c;28(c C=0;C\').m({r:C.m("r"),p:C.2n(),o:C.2e(),h:C.m("h"),f:C.m("f")}));c J=6.l;6.l=6.l.1a();6.l.17("13",6);6.l.m({5I:J.m("5I"),5N:J.m("5N"),5d:J.m("5d"),5e:J.m("5e")});J.m({5I:0,5N:0,5d:0,5e:0});8(A.1Y.9t&&M.8R){J.m("1N","4D")}M.4G=J.m({r:"5a",ai:1,41:"5n"});6.l.m({3d:J.m("3d")});6.6E()}8(!M.2r){M.2r=!A(".j-13-1n",6.l).1e?"e,s,32":{n:".j-13-n",e:".j-13-e",s:".j-13-s",w:".j-13-w",32:".j-13-32",3c:".j-13-3c",3f:".j-13-3f",30:".j-13-30"}}8(M.2r.3j==93){M.24=M.24||6X;8(M.2r=="cv"){M.2r="n,e,s,w,32,3c,3f,30"}c O=M.2r.6M(",");M.2r={};c I={1n:"r: 1K; 41: 4D; 2m:3g;",n:"h: 5c; p:2Y%;",e:"2u: 5c; o:2Y%;",s:"2y: 5c; p:2Y%;",w:"f: 5c; o:2Y%;",32:"2y: 5c; 2u: 2l;",3c:"2y: 5c; f: 2l;",3f:"h: 5c; 2u: 2l;",30:"h: 5c; f: 2l;"};28(c Q=0;Q\'].5C("")).m(T);M.2r[N]=".j-13-"+N;6.l.6H(F.m(E?S:{}).m(M.4I?D:{}).1b(M.4I?"j-13-6Z-1n":"").1b(M.4I))}8(M.4I){6.l.1b("j-13-6Z").m(!A.j.m("j-13-6Z")?{}:{})}}6.a0=b(Y){Y=Y||6.l;28(c U 7C M.2r){8(M.2r[U].3j==93){M.2r[U]=A(M.2r[U],6.l).1g()}8(M.54){M.2r[U].m({1t:0})}8(6.l.4i(".j-9r")&&M.9f.5v(/7R|4P|5z|7e/i)){c W=A(M.2r[U],6.l),X=0;X=/3c|3f|30|32|n|s/.1h(U)?W.2e():W.2n();c V=["8F",/3f|30|n/.1h(U)?"cP":/32|3c|s/.1h(U)?"db":/^e$/.1h(U)?"d9":"d8"].5C("");8(!M.54){Y.m(V,X)}6.6E()}8(!A(M.2r[U]).1e){5g}}};6.a0(6.l);M.60=A(".j-13-1n",L.l);8(M.5u){M.60.1i(b(U,V){A.j.5u(V)})}M.60.dc(b(){8(!M.7q){8(6.5P){c U=6.5P.5v(/j-13-(32|3c|3f|30|n|e|s|w)/i)}L.23=M.23=U&&U[1]?U[1]:"32"}});8(M.a9){M.60.1m();A(L.l).1b("j-13-8D").7n(b(){A(6).1w("j-13-8D");M.60.1g()},b(){8(!M.7q){A(6).1b("j-13-8D");M.60.1m()}})}6.68()},4K:{},j:b(){k{9i:6.9i,l:6.l,t:6.t,r:6.r,1f:6.1f,d:6.d,3P:6.3P,2g:6.2g}},1H:b(C,B){A.j.1Z.1G(6,C,[B,6.j()]);8(C!="1N"){6.l.1R(["1N",C].5C(""),[B,6.j()],6.d[C])}},2J:b(){c C=6.l,B=C.dg(".j-13").3K(0);6.6n();c D=b(E){A(E).1w("j-13 j-13-1q").3l("13").36(".13").3L(".j-13-1n").1P()};D(C);8(C.4i(".j-9r")&&B){C.1a().6H(A(B).m({r:C.m("r"),p:C.2n(),o:C.2e(),h:C.m("h"),f:C.m("f")})).5x().1P();D(B)}},4C:b(J){8(6.d.1q){k v}c B=v;28(c G 7C 6.d.2r){8(A(6.d.2r[G])[0]==J.35){B=12}}8(!B){k v}c D=6.d,K=6.l.r(),C=6.l,H=b(O){k u(O,10)||0},F=A.1Y.3e&&A.1Y.6c<7;D.7q=12;D.9s={h:A(Z).1V(),f:A(Z).1U()};8(C.4i(".j-1D")||(/1K/).1h(C.m("r"))){c M=A.1Y.3e&&!D.1d&&(/1K/).1h(C.m("r"))&&!(/1I/).1h(C.1a().m("r"));c L=M?D.9s.h:0,E=M?D.9s.f:0;C.m({r:"1K",h:(K.h+L),f:(K.f+E)})}8(A.1Y.7m&&/1I/.1h(C.m("r"))){C.m({r:"1I",h:"2Z",f:"2Z"})}6.af();c N=H(6.t.m("f")),I=H(6.t.m("h"));8(D.1d){N+=A(D.1d).1U()||0;I+=A(D.1d).1V()||0}6.q=6.t.q();6.r={f:N,h:I};6.1f=D.t||F?{p:C.2n(),o:C.2e()}:{p:C.p(),o:C.o()};6.3P=D.t||F?{p:C.2n(),o:C.2e()}:{p:C.p(),o:C.o()};6.2g={f:N,h:I};6.5i={p:C.2n()-C.p(),o:C.2e()-C.o()};6.a6={f:J.2z,h:J.2C};D.3U=(2W D.3U=="8S")?D.3U:((6.3P.o/6.3P.p)||1);8(D.8T){A("1C").m("1X",6.23+"-1N")}6.1H("1O",J);k 12},3W:b(I){c C=6.t,D=6.d,J={},M=6,E=6.a6,K=6.23;c N=(I.2z-E.f)||0,L=(I.2C-E.h)||0;c H=6.4k[K];8(!H){k v}c G=H.1k(6,[I,N,L]),F=A.1Y.3e&&A.1Y.6c<7,B=6.5i;8(D.6z||I.7Q){G=6.a4(G,I)}G=6.a5(G,I);6.1H("1N",I);C.m({h:6.r.h+"2F",f:6.r.f+"2F",p:6.1f.p+"2F",o:6.1f.o+"2F"});8(!D.t&&D.4G){6.6E()}6.9d(G);6.l.1R("1N",[I,6.j()],6.d.1N);k v},4J:b(I){6.d.7q=v;c E=6.d,H=b(M){k u(M,10)||0},K=6;8(E.t){c D=E.4G,C=D&&(/7R/i).1h(D.3K(0).80),B=C&&A.j.6A(D.3K(0),"f")?0:K.5i.o,G=C?0:K.5i.p;c L={p:(K.1f.p-G),o:(K.1f.o-B)},F=(u(K.l.m("f"),10)+(K.r.f-K.2g.f))||1c,J=(u(K.l.m("h"),10)+(K.r.h-K.2g.h))||1c;8(!E.1l){6.l.m(A.1E(L,{h:J,f:F}))}8(E.t&&!E.1l){6.6E()}}8(E.8T){A("1C").m("1X","2Z")}6.1H("1W",I);8(E.t){6.t.1P()}k v},9d:b(B){c C=6.d;6.q=6.t.q();8(B.f){6.r.f=B.f}8(B.h){6.r.h=B.h}8(B.o){6.1f.o=B.o}8(B.p){6.1f.p=B.p}},a4:b(D,E){c F=6.d,G=6.r,C=6.1f,B=6.23;8(D.o){D.p=(C.o/F.3U)}19{8(D.p){D.o=(C.p*F.3U)}}8(B=="3c"){D.f=G.f+(C.p-D.p);D.h=1c}8(B=="30"){D.h=G.h+(C.o-D.o);D.f=G.f+(C.p-D.p)}k D},a5:b(H,J){c E=6.t,F=6.d,P=F.6z||J.7Q,M=6.23,N=H.p&&F.4W&&F.4WH.p,O=H.o&&F.4a&&F.4a>H.o;8(I){H.p=F.4d}8(O){H.o=F.4a}8(N){H.p=F.4W}8(D){H.o=F.59}c C=6.2g.f+6.3P.p,L=6.r.h+6.1f.o;c G=/3c|30|w/.1h(M),B=/30|3f|n/.1h(M);8(I&&G){H.f=C-F.4d}8(N&&G){H.f=C-F.4W}8(O&&B){H.h=L-F.4a}8(D&&B){H.h=L-F.59}c K=!H.p&&!H.o;8(K&&!H.f&&H.h){H.h=1c}19{8(K&&!H.h&&H.f){H.f=1c}}k H},6E:b(){c F=6.d;8(!F.4G){k}c D=F.4G,C=6.t||6.l;8(!F.66){c B=[D.m("4c"),D.m("7B"),D.m("7D"),D.m("49")],E=[D.m("aE"),D.m("bi"),D.m("bk"),D.m("bg")];F.66=A.5k(B,b(G,I){c H=u(G,10)||0,J=u(E[I],10)||0;k H+J})}D.m({o:(C.o()-F.66[0]-F.66[2])+"2F",p:(C.p()-F.66[1]-F.66[3])+"2F"})},af:b(){c C=6.l,E=6.d;6.8N=C.q();8(E.t){6.t=6.t||A(\'<29 2v="2m:3g;">\');c B=A.1Y.3e&&A.1Y.6c<7,F=(B?1:0),D=(B?2:-1);6.t.1b(E.t).m({p:C.2n()+D,o:C.2e()+D,r:"1K",f:6.8N.f-F+"2F",h:6.8N.h-F+"2F",24:++E.24});6.t.2f("1C");8(E.5u){A.j.5u(6.t.3K(0))}}19{6.t=C}},4k:{e:b(D,C,B){k{p:6.3P.p+C}},w:b(F,C,B){c G=6.d,D=6.3P,E=6.2g;k{f:E.f+C,p:D.p-C}},n:b(F,C,B){c G=6.d,D=6.3P,E=6.2g;k{h:E.h+B,o:D.o-B}},s:b(D,C,B){k{o:6.3P.o+B}},32:b(D,C,B){k A.1E(6.4k.s.1k(6,1j),6.4k.e.1k(6,[D,C,B]))},3c:b(D,C,B){k A.1E(6.4k.s.1k(6,1j),6.4k.w.1k(6,[D,C,B]))},3f:b(D,C,B){k A.1E(6.4k.n.1k(6,1j),6.4k.e.1k(6,[D,C,B]))},30:b(D,C,B){k A.1E(6.4k.n.1k(6,1j),6.4k.w.1k(6,[D,C,B]))}}}));A.1E(A.j.13,{3u:{4L:":4P",3A:1,5j:0,8R:12,54:v,4d:10,4a:10,3U:v,5u:12,8T:12,a9:v,4I:v}});A.j.1Z.1z("13","1d",{1O:b(I,J){c G=J.d,M=A(6).17("13"),E=M.l;c C=G.1d,F=(C bB A)?C.3K(0):(/1a/.1h(C))?E.1a().3K(0):C;8(!F){k}M.8L=A(F);8(/Z/.1h(C)||C==Z){M.6x={f:0,h:0};M.7U={f:0,h:0};M.6h={l:A(Z),f:0,h:0,p:A(Z).p(),o:A(Z).o()||Z.1C.3h.4S}}19{M.6x=A(F).q();M.7U=A(F).r();M.7W={o:A(F).8U(),p:A(F).9W()};c K=M.6x,B=M.7W.o,H=M.7W.p,D=(A.j.6A(F,"f")?F.6R:H),L=(A.j.6A(F)?F.4S:B);M.6h={l:F,f:K.f,h:K.h,p:D,o:L}}},1N:b(H,J){c E=J.d,N=A(6).17("13"),C=N.7W,K=N.6x,G=N.1f,I=N.r,M=E.6z||H.7Q,B={h:0,f:0},D=N.8L;8(D[0]!=Z&&/5a/.1h(D.m("r"))){B=N.7U}8(I.f<(E.t?K.f:B.f)){N.1f.p=N.1f.p+(E.t?(N.r.f-K.f):(N.r.f-B.f));8(M){N.1f.o=N.1f.p*E.3U}N.r.f=E.t?K.f:B.f}8(I.h<(E.t?K.h:0)){N.1f.o=N.1f.o+(E.t?(N.r.h-K.h):N.r.h);8(M){N.1f.p=N.1f.o/E.3U}N.r.h=E.t?K.h:0}c F=(E.t?N.q.f-K.f:(N.r.f-B.f))+N.5i.p,L=(E.t?N.q.h-K.h:N.r.h)+N.5i.o;8(F+N.1f.p>=N.6h.p){N.1f.p=N.6h.p-F;8(M){N.1f.o=N.1f.p*E.3U}}8(L+N.1f.o>=N.6h.o){N.1f.o=N.6h.o-L;8(M){N.1f.p=N.1f.o/E.3U}}},1W:b(G,I){c D=I.d,L=A(6).17("13"),H=L.r,J=L.6x,B=L.7U,C=L.8L;c F=A(L.t),M=F.q(),K=F.9W(),E=F.8U();8(D.t&&!D.1l&&/1I/.1h(C.m("r"))){A(6).m({f:(M.f-J.f),h:(M.h-J.h),p:K,o:E})}8(D.t&&!D.1l&&/5a/.1h(C.m("r"))){A(6).m({f:B.f+(M.f-J.f),h:B.h+(M.h-J.h),p:K,o:E})}}});A.j.1Z.1z("13","2d",{1N:b(H,J){c D=J.d,L=A(6).17("13"),G=L.1f,E=L.3P,F=L.2g,K=L.23,I=D.6z||H.7Q;D.2d=2W D.2d=="8S"?[D.2d,D.2d]:D.2d;c C=11.2M((G.p-E.p)/(D.2d[0]||1))*(D.2d[0]||1),B=11.2M((G.o-E.o)/(D.2d[1]||1))*(D.2d[1]||1);8(/^(32|s|e)$/.1h(K)){L.1f.p=E.p+C;L.1f.o=E.o+B}19{8(/^(3f)$/.1h(K)){L.1f.p=E.p+C;L.1f.o=E.o+B;L.r.h=F.h-B}19{8(/^(3c)$/.1h(K)){L.1f.p=E.p+C;L.1f.o=E.o+B;L.r.f=F.f-C}19{L.1f.p=E.p+C;L.1f.o=E.o+B;L.r.h=F.h-B;L.r.f=F.f-C}}}}});A.j.1Z.1z("13","1l",{1W:b(I,K){c F=K.d,L=A(6).17("13");c E=F.4G,C=E&&(/7R/i).1h(E.3K(0).80),B=C&&A.j.6A(E.3K(0),"f")?0:L.5i.o,H=C?0:L.5i.p;c D={p:(L.1f.p-H),o:(L.1f.o-B)},G=(u(L.l.m("f"),10)+(L.r.f-L.2g.f))||1c,J=(u(L.l.m("h"),10)+(L.r.h-L.2g.h))||1c;L.l.1l(A.1E(D,J&&G?{h:J,f:G}:{}),{1A:F.bn||"7J",1p:F.bo||"6C",8Y:b(){c M={p:u(L.l.m("p"),10),o:u(L.l.m("o"),10),h:u(L.l.m("h"),10),f:u(L.l.m("f"),10)};8(E){E.m({p:M.p,o:M.o})}L.9d(M);L.1H("1l",I)}})}});A.j.1Z.1z("13","3C",{1O:b(E,D){c F=D.d,B=A(6).17("13"),G=F.4G,C=B.1f;8(!G){B.3C=B.l.4O()}19{B.3C=G.4O()}B.3C.m({1t:0.25,41:"5n",r:"1I",o:C.o,p:C.p,3d:0,f:0,h:0}).1b("j-13-3C").1b(2W F.3C=="5t"?F.3C:"");B.3C.2f(B.t)},1N:b(D,C){c E=C.d,B=A(6).17("13"),F=E.4G;8(B.3C){B.3C.m({r:"1I",o:B.1f.o,p:B.1f.p})}},1W:b(D,C){c E=C.d,B=A(6).17("13"),F=E.4G;8(B.3C&&B.t){B.t.3K(0).8H(B.3C.3K(0))}}});A.j.1Z.1z("13","3S",{1O:b(D,C){c E=C.d,B=A(6).17("13"),F=b(G){A(G).1i(b(){A(6).17("13-8I",{p:u(A(6).p(),10),o:u(A(6).o(),10),f:u(A(6).m("f"),10),h:u(A(6).m("h"),10)})})};8(2W(E.3S)=="6s"){8(E.3S.1e){E.3S=E.3S[0];F(E.3S)}19{A.1i(E.3S,b(G,H){F(G)})}}19{F(E.3S)}},1N:b(F,E){c G=E.d,B=A(6).17("13"),D=B.3P,I=B.2g;c H={o:(B.1f.o-D.o)||0,p:(B.1f.p-D.p)||0,h:(B.r.h-I.h)||0,f:(B.r.f-I.f)||0},C=b(J,K){A(J).1i(b(){c N=A(6).17("13-8I"),M={},L=K&&K.1e?K:["p","o","h","f"];A.1i(L||["p","o","h","f"],b(O,Q){c P=(N[Q]||0)+(H[Q]||0);8(P&&P>=0){M[Q]=P||1c}});A(6).m(M)})};8(2W(G.3S)=="6s"){A.1i(G.3S,b(J,K){C(J,K)})}19{C(G.3S)}},1W:b(C,B){A(6).3l("13-8I-1O")}})})(1x);(b(A){A.3i("j.2G",A.1E({},A.j.3n,{3T:b(){c C=6;6.l.1b("j-2G");6.96=v;c B;6.6N=b(){B=A(C.d.2K,C.l[0]);B.1i(b(){c D=A(6);c E=D.q();A.17(6,"2G-2a",{l:6,$l:D,f:E.f,h:E.h,2u:E.f+D.p(),2y:E.h+D.o(),5M:v,1v:D.3R("j-1v"),3k:D.3R("j-3k"),2L:D.3R("j-2L")})})};6.6N();6.7z=B.1b("j-bH");6.68();6.t=A(Z.ci("29")).m({7u:"7T bM aS"})},3H:b(){8(6.d.1q){6.6o()}19{6.4R()}},2J:b(){6.l.1w("j-2G j-2G-1q").3l("2G").36(".2G");6.6n()},4C:b(E){c C=6;6.8J=[E.2z,E.2C];8(6.d.1q){k}c D=6.d;6.7z=A(D.2K,6.l[0]);6.l.1R("c7",[E,{2G:6.l[0],d:D}],D.1O);A("1C").6H(6.t);6.t.m({"z-2N":2Y,r:"1K",f:E.at,h:E.c6,p:0,o:0});8(D.9U){6.6N()}6.7z.2K(".j-1v").1i(b(){c F=A.17(6,"2G-2a");F.5M=12;8(!E.8V){F.$l.1w("j-1v");F.1v=v;F.$l.1b("j-2L");F.2L=12;C.l.1R("97",[E,{2G:C.l[0],2L:F.l,d:D}],D.2L)}});c B=v;A(E.35).4q().5y().1i(b(){8(A.17(6,"2G-2a")){B=12}});k 6.d.c4?!B:12},3W:b(I){c C=6;6.96=12;8(6.d.1q){k}c G=6.d;c D=6.8J[0],H=6.8J[1],B=I.2z,F=I.2C;8(D>B){c E=B;B=D;D=E}8(H>F){c E=F;F=H;H=E}6.t.m({f:D,h:H,p:B-D,o:F-H});6.7z.1i(b(){c J=A.17(6,"2G-2a");8(!J||J.l==C.l[0]){k}c K=v;8(G.3M=="98"){K=(!(J.f>B||J.2uF||J.2yD&&J.2uH&&J.2yK[6.4z?"p":"o"])){k(I+6.q.1o.h>J&&I+6.q.1o.hF&&E+6.q.1o.fK[6.4z?"p":"o"])){8(!(I+6.q.1o.h>J&&I+6.q.1o.hF&&E+6.q.1o.fF&&E+6.q.1o.fF+K.p/2&&E+6.q.1o.fJ&&I+6.q.1o.hJ+K.o/2&&I+6.q.1o.hF&&EC){k 1}}19{8(H>J&&IG){k 2}}}k v},6N:b(){6.7N();6.6T()},7N:b(){6.1J=[];6.1L=[6];c D=6.1J;c C=6;c F=[[B.67(6.d.1J)?6.d.1J.1G(6.l,1c,{d:6.d,2a:6.1r}):B(6.d.1J,6.l),6]];8(6.d.9a){28(c G=6.d.9a.1e-1;G>=0;G--){c I=B(6.d.9a[G]);28(c E=I.1e-1;E>=0;E--){c H=B.17(I[E],"2h");8(H&&!H.d.1q){F.3E([B.67(H.d.1J)?H.d.1J.1G(H.l):B(H.d.1J,H.l),H]);6.1L.3E(H)}}}}28(c G=F.1e-1;G>=0;G--){F[G][0].1i(b(){B.17(6,"2h-2a",F[G][1]);D.3E({2a:B(6),1s:F[G][1],p:0,o:0,f:0,h:0})})}},6T:b(D){8(6.1Q){c C=6.1Q.q();6.q.1a={h:C.h+6.6K.h,f:C.f+6.6K.f}}28(c F=6.1J.1e-1;F>=0;F--){8(6.1J[F].1s!=6.6J&&6.6J&&6.1J[F].2a[0]!=6.1r[0]){5g}c E=6.d.9E?B(6.d.9E,6.1J[F].2a):6.1J[F].2a;8(!D){6.1J[F].p=E[0].3I;6.1J[F].o=E[0].3J}c G=E.q();6.1J[F].f=G.f;6.1J[F].h=G.h}8(6.d.94&&6.d.94.9u){6.d.94.9u.1G(6)}19{28(c F=6.1L.1e-1;F>=0;F--){c G=6.1L[F].l.q();6.1L[F].3x.f=G.f;6.1L[F].3x.h=G.h;6.1L[F].3x.p=6.1L[F].l.2n();6.1L[F].3x.o=6.1L[F].l.2e()}}},2J:b(){6.l.1w("j-2h j-2h-1q").3l("2h").36(".2h");6.6n();28(c C=6.1J.1e-1;C>=0;C--){6.1J[C].2a.3l("2h-2a")}},8X:b(E){c D=E||6,F=D.d;8(F.2p.3j==93){c C=F.2p;F.2p={l:b(){k B("<29>").1b(C)[0]},6S:b(G,H){H.m(G.q()).m({p:G.2n(),o:G.2e()})}}}D.2p=B(F.2p.l.1G(D.l,D.1r)).2f("1C").m({r:"1K"});F.2p.6S.1G(D.l,D.1r,D.2p)},9N:b(F){28(c D=6.1L.1e-1;D>=0;D--){8(6.9T(6.1L[D].3x)){8(!6.1L[D].3x.3y){8(6.6J!=6.1L[D]){c I=eV;c H=1c;c E=6.2B[6.1L[D].4z?"f":"h"];28(c C=6.1J.1e-1;C>=0;C--){8(!A(6.1L[D].l[0],6.1J[C].2a[0])){5g}c G=6.1J[C][6.1L[D].4z?"f":"h"];8(11.3a(G-E)=0;E--){6.1L[E].1H("4m",H,6)}}8(B.j.2b){B.j.2b.4v=6}8(B.j.2b&&!J.7Y){B.j.2b.7E(6,H)}6.6W=12;6.3W(H);k 12},3r:b(D,E){8(!E){E=6.r}c C=D=="1K"?1:-1;k{h:(E.h+6.q.1a.h*C-(6.1Q[0]==Z.1C?0:6.1Q[0].1V)*C+6.2o.h*C),f:(E.f+6.q.1a.f*C-(6.1Q[0]==Z.1C?0:6.1Q[0].1U)*C+6.2o.f*C)}},6k:b(F){c G=6.d;c C={h:(F.2C-6.q.1o.h-6.q.1a.h+(6.1Q[0]==Z.1C?0:6.1Q[0].1V)),f:(F.2z-6.q.1o.f-6.q.1a.f+(6.1Q[0]==Z.1C?0:6.1Q[0].1U))};8(!6.2g){k C}8(6.1d){8(C.f<6.1d[0]){C.f=6.1d[0]}8(C.h<6.1d[1]){C.h=6.1d[1]}8(C.f>6.1d[2]){C.f=6.1d[2]}8(C.h>6.1d[3]){C.h=6.1d[3]}}8(G.2d){c E=6.2g.h+11.2M((C.h-6.2g.h)/G.2d[1])*G.2d[1];C.h=6.1d?(!(E<6.1d[1]||E>6.1d[3])?E:(!(E<6.1d[1])?E-G.2d[1]:E+G.2d[1])):E;c D=6.2g.f+11.2M((C.f-6.2g.f)/G.2d[0])*G.2d[0];C.f=6.1d?(!(D<6.1d[0]||D>6.1d[2])?D:(!(D<6.1d[0])?D-G.2d[0]:D+G.2d[0])):D}k C},3W:b(D){6.r=6.6k(D);6.2B=6.3r("1K");B.j.1Z.1G(6,"4o",[D,6.j()]);6.2B=6.3r("1K");6.t[0].2v.f=6.r.f+"2F";6.t[0].2v.h=6.r.h+"2F";28(c C=6.1J.1e-1;C>=0;C--){c E=6.9S(6.1J[C]);8(!E){5g}8(6.1J[C].2a[0]!=6.1r[0]&&6.1r[E==1?"4l":"5W"]()[0]!=6.1J[C].2a[0]&&!A(6.1r[0],6.1J[C].2a[0])&&(6.d.6v=="eo-eY"?!A(6.l[0],6.1J[C].2a[0]):12)){6.4u=E==1?"4g":"46";6.7P(D,6.1J[C]);6.1H("6q",D);2j}}6.9N(D);8(B.j.2b){B.j.2b.2S(6,D)}6.l.1R("4o",[D,6.j()],6.d.4o);k v},7P:b(H,G,D,F){D?D[0].9L(6.1r[0]):G.2a[0].3h.7c(6.1r[0],(6.4u=="4g"?G.2a[0]:G.2a[0].ex));6.6U=6.6U?++6.6U:1;c E=6,C=6.6U;2R.5G(b(){8(C==E.6U){E.6T(!F)}},0);8(6.d.2p){6.d.2p.6S.1G(6.l,6.1r,6.2p)}},4J:b(D,F){8(B.j.2b&&!6.d.7Y){B.j.2b.3V(6,D)}8(6.d.4j){c C=6;c E=C.1r.q();8(C.2p){C.2p.1l({1t:"1m"},(u(6.d.4j,10)||6a)-50)}B(6.t).1l({f:E.f-6.q.1a.f-C.2o.f+(6.1Q[0]==Z.1C?0:6.1Q[0].1U),h:E.h-6.q.1a.h-C.2o.h+(6.1Q[0]==Z.1C?0:6.1Q[0].1V)},u(6.d.4j,10)||6a,b(){C.5K(D)})}19{6.5K(D,F)}k v},5K:b(D,E){8(6.91.5W!=6.1r.5W().4X(".j-2h-t")[0]||6.91.1a!=6.1r.1a()[0]){6.1H("6S",D,1c,E)}8(!A(6.l[0],6.1r[0])){6.1H("1P",D,1c,E);28(c C=6.1L.1e-1;C>=0;C--){8(A(6.1L[C].l[0],6.1r[0])){6.1L[C].1H("6S",D,6,E);6.1L[C].1H("9Z",D,6,E)}}}28(c C=6.1L.1e-1;C>=0;C--){6.1L[C].1H("5D",D,6,E);8(6.1L[C].3x.3y){6.1L[C].1H("4U",D,6);6.1L[C].3x.3y=0}}6.6W=v;8(6.6e){6.1H("1W",D,1c,E);k v}B(6.1r).m("6i","");8(6.2p){6.2p.1P()}6.t.1P();6.t=1c;6.1H("1W",D,1c,E);k 12}}));B.1E(B.j.2h,{7F:"9I 9H",3u:{t:"4O",3M:"8Z",3A:1,5j:0,3X:12,2O:20,2P:20,4L:":4P",1J:"> *",24:6X,9F:12,2f:"1a"}});B.j.1Z.1z("2h","1X",{1O:b(E,D){c C=B("1C");8(C.m("1X")){D.d.5U=C.m("1X")}C.m("1X",D.d.1X)},1W:b(D,C){8(C.d.5U){B("1C").m("1X",C.d.5U)}}});B.j.1Z.1z("2h","24",{1O:b(E,D){c C=D.t;8(C.m("24")){D.d.5R=C.m("24")}C.m("24",D.d.24)},1W:b(D,C){8(C.d.5R){B(C.t).m("24",C.d.5R)}}});B.j.1Z.1z("2h","1t",{1O:b(E,D){c C=D.t;8(C.m("1t")){D.d.5T=C.m("1t")}C.m("1t",D.d.1t)},1W:b(D,C){8(C.d.5T){B(C.t).m("1t",C.d.5T)}}});B.j.1Z.1z("2h","3X",{1O:b(E,D){c F=D.d;c C=B(6).17("2h");C.2D=b(G){do{8(/2Z|3X/.1h(G.m("2m"))||(/2Z|3X/).1h(G.m("2m-y"))){k G}G=G.1a()}6f(G[0].3h);k B(Z)}(C.1r);C.2A=b(G){do{8(/2Z|3X/.1h(G.m("2m"))||(/2Z|3X/).1h(G.m("2m-x"))){k G}G=G.1a()}6f(G[0].3h);k B(Z)}(C.1r);8(C.2D[0]!=Z&&C.2D[0].4w!="4Q"){C.5S=C.2D.q()}8(C.2A[0]!=Z&&C.2A[0].4w!="4Q"){C.5V=C.2A.q()}},4o:b(E,D){c F=D.d;c C=B(6).17("2h");8(C.2D[0]!=Z&&C.2D[0].4w!="4Q"){8((C.5S.h+C.2D[0].3J)-E.2C").7c(H.3m);E("<58 4h=\'j-2U-2u\'/>").2f(H.3m);H.3m.1b("j-2U-6d").2i("dF","0")}c G;8(H.aq){G=6.l.1a().o();H.3m.1i(b(){G-=E(6).2e()});c I=0;H.3m.4l().1i(b(){I=11.22(I,E(6).8U()-E(6).o())}).o(G-I)}19{8(H.53){G=0;H.3m.4l().1i(b(){G=11.22(G,E(6).2e())}).o(G)}}H.3m.4X(H.2V||"").4l().1m();H.2V.1a().5y().1b(H.2E);8(H.3B){6.l.2H((H.3B)+".2U",F)}},4m:b(G){F.1G(6.l[0],{35:A(6.d.3m,G)[0]})},2J:b(){6.d.3m.4l().m("41","");8(6.d.aq||6.d.53){6.d.3m.4l().m("o","")}E.3l(6.l[0],"2U");6.l.1w("j-2U").36(".2U")}});b C(H,G){k b(){k H.1k(G,1j)}}b B(H){8(!E.17(6,"2U")){k}c G=E.17(6,"2U");c I=G.d;I.61=H?0:--I.61;8(I.61){k}8(I.dC){I.4E.1z(I.5A).m({o:"",2m:""})}E(6).1R("ao",[E.3B.aD({6v:"ao",35:G.l[0]}),I.17],I.6q)}b D(L,I,K,G,M){c H=E.17(6,"2U").d;H.4E=L;H.5A=I;H.17=K;c J=C(B,6);H.61=I.1f()===0?L.1f():I.1f();8(H.7X){8(!H.6r&&G){E.j.2U.8O[H.7X]({4E:1x([]),5A:I,4r:J,4g:M,53:H.53})}19{E.j.2U.8O[H.7X]({4E:L,5A:I,4r:J,4g:M,53:H.53})}}19{8(!H.6r&&G){L.3H()}19{I.1m();L.1g()}J(12)}}b F(K){c J=E.17(6,"2U").d;8(J.1q){k v}8(!K.35&&!J.6r){J.2V.1a().5y().7I(J.2E);c I=J.2V.4l(),M={d:J,am:1x([]),ab:J.2V,9Y:1x([]),9V:I},L=(J.2V=E([]));D.1G(6,L,I,M);k v}c H=E(K.35);H=E(H.4q(J.6d)[0]||H);c G=H[0]==J.2V[0];8(J.61||(J.6r&&G)){k v}8(!H.4i(J.6d)){k}J.2V.1a().5y().7I(J.2E);8(!G){H.1a().5y().1b(J.2E)}c L=H.4l(),I=J.2V.4l(),M={d:J,am:H,ab:J.2V,9Y:L,9V:I},N=J.3m.2N(J.2V[0])>J.3m.2N(H[0]);J.2V=G?E([]):H;D.1G(6,L,I,M,G,N);k v}b A(H,G){k G!=21?2W G=="8S"?H.2K(":eq("+G+")"):H.4X(H.4X(G)):G===v?E([]):H.2K(":eq(0)")}E.1E(E.j.2U,{3u:{2E:"1v",6r:12,7X:"4A",3B:"1o",6d:"a",53:12,61:0,a7:b(){k 6.34.90()==7a.34.90()}},8O:{4A:b(G,I){G=E.1E({1p:"6C",1A:9R},G,I);8(!G.5A.1f()){G.4E.1l({o:"1g"},G);k}c H=G.5A.o(),J=G.4E.o(),K=J/H;G.4E.m({o:0,2m:"3g"}).1g();G.5A.2K(":3g").1i(G.4r).5x().2K(":3G").1l({o:"1m"},{8Y:b(L){c M=(H-L)*K;8(E.1Y.3e||E.1Y.7m){M=11.dL(M)}G.4E.o(M)},1A:G.1A,1p:G.1p,4r:b(){8(!G.53){G.4E.m("o","2Z")}G.4r()}})},en:b(G){6.4A(G,{1p:G.4g?"dA":"6C",1A:G.4g?6X:ap})},dq:b(G){6.4A(G,{1p:"dr",1A:dp})}}});E.33.4m=b(G){k 6.2U("4m",G)}})(1x);(b(B){c A={9k:"1O.1D",2S:"2S.1D",9h:"1W.1D",59:"59.13",4a:"4a.13",4W:"4W.13",4d:"4d.13",87:"1O.13",1N:"2S.13",8c:"1W.13"};B.3i("j.1B",{3T:b(){c J=6,H=6.d,F=2W H.13=="5t"?H.13:"n,e,s,w,32,3c,3f,30",C=6.l.1b("j-1B-5H").6p("<29/>").6p("<29/>"),D=(6.9Q=C.1a().1b("j-1B-ds").m({r:"1I",p:"2Y%",o:"2Y%"})),I=H.5l||C.2i("5l")||"",G=(6.6L=B(\'<29 4h="j-1B-5Q"/>\')).6H(\'<58 4h="j-1B-5l">\'+I+"").6H(\'<58>X\').dt(D),K=(6.2Q=D.1a()).2f(Z.1C).1m().1b("j-1B").1b(H.dy).1b(C.2i("5P")).1w("j-1B-5H").m({r:"1K",p:H.p,o:H.o,2m:"3g",24:H.24}).2i("dz",-1).m("bc",0).5Y(b(L){8(H.an){c M=27;(L.6Y&&L.6Y==M&&J.4B())}}).62(b(){J.7k()}),E=(6.aa=B("<29/>")).1b("j-1B-dx").m({r:"1K",2y:0}).2f(K);6.9x=B(".j-1B-5Q-4B",G).7n(b(){B(6).1b("j-1B-5Q-4B-7n")},b(){B(6).1w("j-1B-5Q-4B-7n")}).62(b(L){L.du()}).1o(b(){J.4B();k v});6.6L.3L("*").1z(6.6L).1i(b(){B.j.5u(6)});8(B.33.1D){K.1D({4L:".j-1B-5H",t:H.dv,1n:".j-1B-5Q",1O:b(M,L){J.7k();(H.9k&&H.9k.1k(J.l[0],1j))},2S:b(M,L){(H.2S&&H.2S.1k(J.l[0],1j))},1W:b(M,L){(H.9h&&H.9h.1k(J.l[0],1j));B.j.1B.26.1N()}});(H.1D||K.1D("4R"))}8(B.33.13){K.13({4L:".j-1B-5H",t:H.ea,4W:H.4W,59:H.59,4d:H.4d,4a:H.4a,1O:b(){(H.87&&H.87.1k(J.l[0],1j))},1N:b(M,L){(H.7f&&J.1f.1k(J));(H.1N&&H.1N.1k(J.l[0],1j))},2r:F,1W:b(M,L){(H.7f&&J.1f.1k(J));(H.8c&&H.8c.1k(J.l[0],1j));B.j.1B.26.1N()}});(H.13||K.13("4R"))}6.8y(H.8r);6.7r=v;(H.5r&&B.33.5r&&K.5r());(H.a3&&6.88())},4s:b(C,D){(A[C]&&6.2Q.17(A[C],D));6m(C){2s"8r":6.8y(D);2j;2s"1D":6.2Q.1D(D?"6o":"4R");2j;2s"o":6.2Q.o(D);2j;2s"r":6.r(D);2j;2s"13":(2W D=="5t"&&6.2Q.17("2r.13",D));6.2Q.13(D?"6o":"4R");2j;2s"5l":B(".j-1B-5l",6.6L).a2(D);2j;2s"p":6.2Q.p(D);2j}B.3i.4t.4s.1k(6,1j)},r:b(H){c D=B(2R),F=B(Z),G=F.1V(),C=F.1U(),E=G;8(B.5m(H,["5J","h","2u","2y","f"])>=0){H=[H=="2u"||H=="f"?H:"5J",H=="h"||H=="2y"?H:"6w"]}8(H.3j!=7y){H=["5J","6w"]}8(H[0].3j==5w){C+=H[0]}19{6m(H[0]){2s"f":C+=0;2j;2s"2u":C+=D.p()-6.2Q.p();2j;69:2s"5J":C+=(D.p()-6.2Q.p())/2}}8(H[1].3j==5w){G+=H[1]}19{6m(H[1]){2s"h":G+=0;2j;2s"2y":G+=D.o()-6.2Q.o();2j;69:2s"6w":G+=(D.o()-6.2Q.o())/2}}G=11.22(G,E);6.2Q.m({h:G,f:C})},1f:b(){c F=6.9Q,D=6.6L,E=6.l,C=u(E.m("3d-h"),10)+u(E.m("3d-2y"),10),G=u(E.m("3d-f"),10)+u(E.m("3d-2u"),10);E.o(F.o()-D.2e()-C);E.p(F.p()-G)},88:b(){8(6.7r){k}6.26=6.d.7M?89 B.j.1B.26(6):1c;(6.2Q.4l().1e>0)&&6.2Q.2f("1C");6.r(6.d.r);6.2Q.1g(6.d.1g);6.d.7f&&6.1f();6.7k(12);c D=1c;c C={d:6.d};6.9x.3D();6.l.1R("ej",[D,C],6.d.88);6.7r=12},7k:b(E){8((6.d.7M&&!E)||(!6.d.4T&&!6.d.7M)){k 6.l.1R("ac",[1c,{d:6.d}],6.d.3D)}c D=6.d.24,C=6.d;B(".j-1B:3G").1i(b(){D=11.22(D,u(B(6).m("z-2N"),10)||C.24)});(6.26&&6.26.$el.m("z-2N",++D));6.2Q.m("z-2N",++D);6.l.1R("ac",[1c,{d:6.d}],6.d.3D)},4B:b(){(6.26&&6.26.2J());6.2Q.1m(6.d.1m);c D=1c;c C={d:6.d};6.l.1R("ei",[D,C],6.d.4B);B.j.1B.26.1N();6.7r=v},2J:b(){(6.26&&6.26.2J());6.2Q.1m();6.l.36(".1B").3l("1B").1w("j-1B-5H").1m().2f("1C");6.2Q.1P()},8y:b(F){c C=6,E=v,D=6.aa;D.e4().1m();B.1i(F,b(){k!(E=12)});8(E){D.1g();B.1i(F,b(G,H){B("<7e/>").a2(G).1o(b(){H.1k(C.l[0],1j)}).2f(D)})}}});B.1E(B.j.1B,{3u:{a3:12,7f:12,5r:v,8r:{},an:12,1D:12,o:ap,4a:2Y,4d:8u,7M:v,26:{},r:"5J",13:12,4T:12,p:9R,24:6X},26:b(C){6.$el=B.j.1B.26.9v(C)}});B.1E(B.j.1B.26,{5q:[],9w:B.5k("3D,62,8C,5Y,e3,1o".6M(","),b(C){k C+".1B-26"}).5C(" "),9v:b(C){8(6.5q.1e===0){5G(b(){B("a, :4P").2H(B.j.1B.26.9w,b(){c E=v;c H=B(6).4q(".j-1B");8(H.1e){c G=B(".j-1B-26");8(G.1e){c F=u(G.m("z-2N"),10);G.1i(b(){F=11.22(F,u(B(6).m("z-2N"),10))});E=u(H.m("z-2N"),10)>F}19{E=12}}k E})},1);B(Z).2H("5Y.1B-26",b(E){c F=27;(E.6Y&&E.6Y==F&&C.4B())});B(2R).2H("1N.1B-26",B.j.1B.26.1N)}c D=B("<29/>").2f(Z.1C).1b("j-1B-26").m(B.1E({e0:0,3d:0,8F:0,r:"1K",h:0,f:0,p:6.p(),o:6.o()},C.d.26));(C.d.5r&&B.33.5r&&D.5r());6.5q.3E(D);k D},2J:b(C){6.5q.8x(B.5m(6.5q,C),1);8(6.5q.1e===0){B("a, :4P").1z([Z,2R]).36(".1B-26")}C.1P()},o:b(){8(B.1Y.3e&&B.1Y.6c<7){c D=11.22(Z.81.4S,Z.1C.4S);c C=11.22(Z.81.3J,Z.1C.3J);8(D").1b("j-3p-1n").2f(B.l);8(6.3w){D.2i("3w",6.3w)}k D[0]})}c C=b(D){6.l=A(D);6.l.17("3n",6);6.d=B.d;6.l.2H("62",b(){8(B.1M){6.5h(B.1M)}B.3D(6,1)});6.68()};A.1E(C.4t,A.j.3n,{4C:b(D){k B.1O.1G(B,D,6.l[0])},4J:b(D){k B.1W.1G(B,D,6.l[0])},3W:b(D){k B.2S.1G(B,D,6.l[0])},6I:b(){k 12},9e:b(D){6.8a(D)}});A(6.1n).1i(b(){89 C(6)}).6p(\'\').1a().2H("3D",b(D){B.3D(6.8w)}).2H("5h",b(D){B.5h(6.8w)}).2H("5Y",b(D){8(!B.d.dY){B.5Y(D.6Y,6.8w)}});6.l.2H("62.3p",b(D){B.1o.1k(B,[D]);B.1M.17("3n").9e(D);B.83=B.83+1});A.1i(6.d.2r||[],b(E,D){B.6y(D.1O,E,12)});8(!4f(6.d.ba)){6.6y(6.d.ba,0,12)}6.5f=A(6.1n[0]);8(6.1n.1e==2&&6.d.7x){6.8A()}},8v:b(){c B=6.l[0],C=6.d;6.5b={p:6.l.2n(),o:6.l.2e()};A.1E(C,{23:C.23||(B.3I").1b("j-3p-7x").m({r:"1K"}).2f(6.l);6.7V()},bj:b(){6.44.1P();6.44=1c},7V:b(){c C=6.d.23=="2X"?"h":"f";c B=6.d.23=="2X"?"o":"p";6.44.m(C,(u(A(6.1n[0]).m(C),10)||0)+6.5p(0,6.d.23=="2X"?"y":"x")/2);6.44.m(B,(u(A(6.1n[1]).m(C),10)||0)-(u(A(6.1n[0]).m(C),10)||0))},bl:b(){k 6.44?6.48(u(6.44.m(6.d.23=="2X"?"o":"p"),10),6.d.23=="2X"?"y":"x"):1c},bh:b(){k 6.1n.2N(6.1M[0])},3q:b(B,D){8(6.1n.1e==1){6.1M=6.1n}8(!D){D=6.d.23=="2X"?"y":"x"}c C=A(B!=21&&B!==1c?6.1n[B]||B:6.1M);8(C.17("3n").77){k u(C.17("3n").77[D],10)}19{k u(((u(C.m(D=="x"?"f":"h"),10)/(6.5b[D=="x"?"p":"o"]-6.5p(B,D)))*6.d.4V[D])+6.d.2q[D],10)}},48:b(C,B){k 6.d.2q[B]+(C/(6.5b[B=="x"?"p":"o"]-6.5p(1c,B)))*6.d.4V[B]},3z:b(C,B){k((C-6.d.2q[B])/6.d.4V[B])*(6.5b[B=="x"?"p":"o"]-6.5p(1c,B))},6F:b(D,C){8(6.44){8(6.1M[0]==6.1n[0]&&D>=6.3z(6.3q(1),C)){D=6.3z(6.3q(1,C)-6.6G(C),C)}8(6.1M[0]==6.1n[1]&&D<=6.3z(6.3q(0),C)){D=6.3z(6.3q(0,C)+6.6G(C),C)}}8(6.d.2r){c B=6.d.2r[6.bh()];8(D<6.3z(B.2q,C)){D=6.3z(B.2q,C)}19{8(D>6.3z(B.22,C)){D=6.3z(B.22,C)}}}k D},6B:b(C,B){8(C>=6.5b[B=="x"?"p":"o"]-6.5p(1c,B)){C=6.5b[B=="x"?"p":"o"]-6.5p(1c,B)}8(C<=0){C=0}k C},5p:b(B,C){k A(B!=21&&B!==1c?6.1n[B]:6.1M)[0]["q"+(C=="x"?"dX":"dS")]},6G:b(B){k 6.d.2I[B]||1},1O:b(C,B){c D=6.d;8(D.1q){k v}6.5b={p:6.l.2n(),o:6.l.2e()};8(!6.1M){6.3D(6.5f,12)}6.q=6.l.q();6.8i=6.1M.q();6.5o={h:C.2C-6.8i.h,f:C.2z-6.8i.f};6.83=6.3q();6.1H("1O",C);6.2S(C,B);k 12},1W:b(B){6.1H("1W",B);8(6.83!=6.3q()){6.1H("6q",B)}6.3D(6.1M,12);k v},2S:b(E,C){c F=6.d;c B={h:E.2C-6.q.h-6.5o.h,f:E.2z-6.q.f-6.5o.f};8(!6.1M){6.3D(6.5f,12)}B.f=6.6B(B.f,"x");B.h=6.6B(B.h,"y");8(F.2I.x){c D=6.48(B.f,"x");D=11.2M(D/F.2I.x)*F.2I.x;B.f=6.3z(D,"x")}8(F.2I.y){c D=6.48(B.h,"y");D=11.2M(D/F.2I.y)*F.2I.y;B.h=6.3z(D,"y")}B.f=6.6F(B.f,"x");B.h=6.6F(B.h,"y");8(F.23!="2X"){6.1M.m({f:B.f})}8(F.23!="7i"){6.1M.m({h:B.h})}6.1M.17("3n").77={x:11.2M(6.48(B.f,"x"))||0,y:11.2M(6.48(B.h,"y"))||0};8(6.44){6.7V()}6.1H("4A",E);k v},6y:b(F,C,I){c G=6.d;6.5b={p:6.l.2n(),o:6.l.2e()};8(C==21&&!6.1M&&6.1n.1e!=1){k v}8(C==21&&!6.1M){C=0}8(C!=21){6.1M=6.5f=A(6.1n[C]||C)}8(F.x!==21&&F.y!==21){c B=F.x,H=F.y}19{c B=F,H=F}8(B!==21&&B.3j!=5w){c E=/^\\-\\=/.1h(B),D=/^\\+\\=/.1h(B);8(E||D){B=6.3q(1c,"x")+u(B.4Y(E?"=":"+=",""),10)}19{B=4f(u(B,10))?21:u(B,10)}}8(H!==21&&H.3j!=5w){c E=/^\\-\\=/.1h(H),D=/^\\+\\=/.1h(H);8(E||D){H=6.3q(1c,"y")+u(H.4Y(E?"=":"+=",""),10)}19{H=4f(u(H,10))?21:u(H,10)}}8(G.23!="2X"&&B!==21){8(G.2I.x){B=11.2M(B/G.2I.x)*G.2I.x}B=6.3z(B,"x");B=6.6B(B,"x");B=6.6F(B,"x");G.1l?6.1M.1W().1l({f:B},(11.3a(u(6.1M.m("f"))-B))*(!4f(u(G.1l))?G.1l:5)):6.1M.m({f:B})}8(G.23!="7i"&&H!==21){8(G.2I.y){H=11.2M(H/G.2I.y)*G.2I.y}H=6.3z(H,"y");H=6.6B(H,"y");H=6.6F(H,"y");G.1l?6.1M.1W().1l({h:H},(11.3a(u(6.1M.m("h"))-H))*(!4f(u(G.1l))?G.1l:5)):6.1M.m({h:H})}8(6.44){6.7V()}6.1M.17("3n").77={x:11.2M(6.48(B,"x"))||0,y:11.2M(6.48(H,"y"))||0};8(!I){6.1H("1O",1c);6.1H("1W",1c);6.1H("6q",1c);6.1H("4A",1c)}}});A.j.3p.7F="3q";A.j.3p.3u={1n:".j-3p-1n",3A:1,1l:v}})(1x);(b(A){A.3i("j.18",{3T:b(){6.d.3B+=".18";6.6V(12)},4s:b(B,C){8((/^1v/).1h(B)){6.5z(C)}19{6.d[B]=C;6.6V()}},1e:b(){k 6.$18.1e},8f:b(B){k B.5l&&B.5l.4Y(/\\s/g,"8s").4Y(/[^A-dR-dT-9\\-8s:\\.]/g,"")||6.d.aw+A.17(B)},j:b(C,B){k{d:6.d,dU:C,au:B,2N:6.$18.2N(C)}},6V:b(P){6.$3b=A("7h:dW(a[34])",6.l);6.$18=6.$3b.5k(b(){k A("a",6)[0]});6.$2w=A([]);c O=6,E=6.d;6.$18.1i(b(R,Q){8(Q.4F&&Q.4F.4Y("#","")){O.$2w=O.$2w.1z(Q.4F)}19{8(A(Q).2i("34")!="#"){A.17(Q,"34.18",Q.34);A.17(Q,"3O.18",Q.34);c T=O.8f(Q);Q.34="#"+T;c S=A("#"+T);8(!S.1e){S=A(E.9c).2i("3w",T).1b(E.6D).dV(O.$2w[R-1]||O.l);S.17("2J.18",12)}O.$2w=O.$2w.1z(S)}19{E.1q.3E(R+1)}}});8(P){6.l.1b(E.8P);6.$2w.1i(b(){c Q=A(6);Q.1b(E.6D)});8(E.1v===21){8(7a.4F){6.$18.1i(b(T,Q){8(Q.4F==7a.4F){E.1v=T;8(A.1Y.3e||A.1Y.7m){c S=A(7a.4F),R=S.2i("3w");S.2i("3w","");5G(b(){S.2i("3w",R)},6a)}e5(0,0);k v}})}19{8(E.5X){c I=u(A.5X("j-18"+A.17(O.l)),10);8(I&&O.$18[I]){E.1v=I}}19{8(O.$3b.2K("."+E.2E).1e){E.1v=O.$3b.2N(O.$3b.2K("."+E.2E)[0])}}}}E.1v=E.1v===1c||E.1v!==21?E.1v:0;E.1q=A.eg(E.1q.4N(A.5k(6.$3b.2K("."+E.5B),b(R,Q){k O.$3b.2N(R)}))).4o();8(A.5m(E.1v,E.1q)!=-1){E.1q.8x(A.5m(E.1v,E.1q),1)}6.$2w.1b(E.56);6.$3b.1w(E.2E);8(E.1v!==1c){6.$2w.eq(E.1v).1g().1w(E.56);6.$3b.eq(E.1v).1b(E.2E);c B=b(){A(O.l).1R("7d",[O.4x("7d"),O.j(O.$18[E.1v],O.$2w[E.1v])],E.1g)};8(A.17(6.$18[E.1v],"3O.18")){6.3O(E.1v,B)}19{B()}}A(2R).2H("ef",b(){O.$18.36(".18");O.$3b=O.$18=O.$2w=1c})}28(c H=0,N;N=6.$3b[H];H++){A(N)[A.5m(H,E.1q)!=-1&&!A(N).3R(E.2E)?"1b":"1w"](E.5B)}8(E.4Z===v){6.$18.3l("4Z.18")}c J,D,K={"2q-p":0,1A:1},F="7G";8(E.4b&&E.4b.3j==7y){J=E.4b[0]||K,D=E.4b[1]||K}19{J=D=E.4b||K}c C={41:"",2m:"",o:""};8(!A.1Y.3e){C.1t=""}b M(R,Q,S){Q.1l(J,J.1A||F,b(){Q.1b(E.56).m(C);8(A.1Y.3e&&J.1t){Q[0].2v.2K=""}8(S){L(R,S,Q)}})}b L(R,S,Q){8(D===K){S.m("41","5n")}S.1l(D,D.1A||F,b(){S.1w(E.56).m(C);8(A.1Y.3e&&D.1t){S[0].2v.2K=""}A(O.l).1R("7d",[O.4x("7d"),O.j(R,S[0])],E.1g)})}b G(R,T,Q,S){T.1b(E.2E).eh().1w(E.2E);M(R,Q,S)}6.$18.36(".18").2H(E.3B,b(){c T=A(6).4q("7h:eq(0)"),Q=O.$2w.2K(":3G"),S=A(6.4F);8((T.3R(E.2E)&&!E.74)||T.3R(E.5B)||A(6).3R(E.6u)||A(O.l).1R("bb",[O.4x("bb"),O.j(6,S[0])],E.5z)===v){6.5h();k v}O.d.1v=O.$18.2N(6);8(E.74){8(T.3R(E.2E)){O.d.1v=1c;T.1w(E.2E);O.$2w.1W();M(6,Q);6.5h();k v}19{8(!Q.1e){O.$2w.1W();c R=6;O.3O(O.$18.2N(6),b(){T.1b(E.2E).1b(E.8Q);L(R,S)});6.5h();k v}}}8(E.5X){A.5X("j-18"+A.17(O.l),O.d.1v,E.5X)}O.$2w.1W();8(S.1e){c R=6;O.3O(O.$18.2N(6),Q.1e?b(){G(R,T,Q,S)}:b(){T.1b(E.2E);L(R,S)})}19{ee"1x ed e7: e6 e8 e9."}8(A.1Y.3e){6.5h()}k v});8(!(/^1o/).1h(E.3B)){6.$18.2H("1o.18",b(){k v})}},1z:b(E,D,C){8(C==21){C=6.$18.1e}c G=6.d;c I=A(G.av.4Y(/#\\{34\\}/g,E).4Y(/#\\{7l\\}/g,D));I.17("2J.18",12);c H=E.7H("#")==0?E.4Y("#",""):6.8f(A("a:eb-2k",I)[0]);c F=A("#"+H);8(!F.1e){F=A(G.9c).2i("3w",H).1b(G.56).17("2J.18",12)}F.1b(G.6D);8(C>=6.$3b.1e){I.2f(6.l);F.2f(6.l[0].3h)}19{I.7c(6.$3b[C]);F.7c(6.$2w[C])}G.1q=A.5k(G.1q,b(K,J){k K>=C?++K:K});6.6V();8(6.$18.1e==1){I.1b(G.2E);F.1w(G.56);c B=A.17(6.$18[0],"3O.18");8(B){6.3O(C,B)}}6.l.1R("b8",[6.4x("b8"),6.j(6.$18[C],6.$2w[C])],G.1z)},1P:b(B){c D=6.d,E=6.$3b.eq(B).1P(),C=6.$2w.eq(B).1P();8(E.3R(D.2E)&&6.$18.1e>1){6.5z(B+(B+1<6.$18.1e?1:-1))}D.1q=A.5k(A.aH(D.1q,b(G,F){k G!=B}),b(G,F){k G>=B?--G:G});6.6V();6.l.1R("as",[6.4x("as"),6.j(E.3L("a")[0],C[0])],D.1P)},6o:b(B){c C=6.d;8(A.5m(B,C.1q)==-1){k}c D=6.$3b.eq(B).1w(C.5B);8(A.1Y.9t){D.m("41","dQ-5n");5G(b(){D.m("41","5n")},0)}C.1q=A.aH(C.1q,b(F,E){k F!=B});6.l.1R("aG",[6.4x("aG"),6.j(6.$18[B],6.$2w[B])],C.6o)},4R:b(C){c B=6,D=6.d;8(C!=D.1v){6.$3b.eq(C).1b(D.5B);D.1q.3E(C);D.1q.4o();6.l.1R("aF",[6.4x("aF"),6.j(6.$18[C],6.$2w[C])],D.4R)}},5z:b(B){8(2W B=="5t"){B=6.$18.2N(6.$18.2K("[34$="+B+"]")[0])}6.$18.eq(B).9e(6.d.3B)},3O:b(G,K){c L=6,D=6.d,E=6.$18.eq(G),J=E[0],H=K==21||K===v,B=E.17("3O.18");K=K||b(){};8(!B||!H&&A.17(J,"4Z.18")){K();k}c M=b(N){c O=A(N),P=O.3L("*:dP");k P.1e&&P.4i(":4X(aJ)")&&P||O};c C=b(){L.$18.2K("."+D.6u).1w(D.6u).1i(b(){8(D.7o){M(6).1a().7p(M(6).17("7l.18"))}});L.72=1c};8(D.7o){c I=M(J).7p();M(J).dw("").3L("em").17("7l.18",I).7p(D.7o)}c F=A.1E({},D.7j,{aK:B,9l:b(O,N){A(J.4F).7p(O);C();8(D.4Z){A.17(J,"4Z.18",12)}A(L.l).1R("aL",[L.4x("aL"),L.j(L.$18[G],L.$2w[G])],D.3O);D.7j.9l&&D.7j.9l(O,N);K()}});8(6.72){6.72.dm();C()}E.1b(D.6u);5G(b(){L.72=A.dl(F)},0)},aK:b(C,B){6.$18.eq(C).3l("4Z.18").17("3O.18",B)},2J:b(){c B=6.d;6.l.36(".18").1w(B.8P).3l("18");6.$18.1i(b(){c C=A.17(6,"34.18");8(C){6.34=C}c D=A(6).36(".18");A.1i(["34","3O","4Z"],b(F,E){D.3l(E+".18")})});6.$3b.1z(6.$2w).1i(b(){8(A.17(6,"2J.18")){A(6).1P()}19{A(6).1w([B.2E,B.8Q,B.5B,B.6D,B.56].5C(" "))}})},4x:b(B){k A.3B.aD({6v:B,35:6.l[0]})}});A.j.18.3u={74:v,3B:"1o",1q:[],5X:1c,7o:"dn&#dB;",4Z:v,aw:"j-18-",7j:{},4b:1c,av:\'<7h><58>#{7l}\',9c:"<29>",8P:"j-18-dK",2E:"j-18-1v",8Q:"j-18-74",5B:"j-18-1q",6D:"j-18-au",56:"j-18-1m",6u:"j-18-dM"};A.j.18.7F="1e";A.1E(A.j.18.4t,{8M:1c,dN:b(C,F){F=F||v;c B=6,E=6.d.1v;b G(){B.8M=dO(b(){E=++E\');c I=F.1a();8(F.m("r")=="5a"){I.m({r:"1I"});F.m({r:"1I"})}19{c H=F.m("h");8(4f(u(H))){H="2Z"}c G=F.m("f");8(4f(u(G))){G="2Z"}I.m({r:F.m("r"),h:H,f:G,24:F.m("z-2N")}).1g();F.m({r:"1I",h:0,f:0})}I.m(E);k I},4p:b(E){8(E.1a().2i("3w")=="8K"){k E.1a().dD(E)}k E},3Y:b(F,G,E,H){H=H||{};C.1i(G,b(J,I){84=F.b4(I);8(84[0]>0){H[I]=84[0]*E+84[1]}});k H},6O:b(G,J,I,H){c E=(2W I=="b"?I:(H?H:1c));c F=(2W I=="6s"?I:1c);k 6.1i(b(){c O={};c M=C(6);c N=M.2i("2v")||"";8(2W N=="6s"){N=N.95}8(G.3H){M.3R(G.3H)?G.1P=G.3H:G.1z=G.3H}c K=C.1E({},(Z.7O?Z.7O.ay(6,1c):6.aB));8(G.1z){M.1b(G.1z)}8(G.1P){M.1w(G.1P)}c L=C.1E({},(Z.7O?Z.7O.ay(6,1c):6.aB));8(G.1z){M.1w(G.1z)}8(G.1P){M.1b(G.1P)}28(c P 7C L){8(2W L[P]!="b"&&L[P]&&P.7H("dE")==-1&&P.7H("1e")==-1&&L[P]!=K[P]&&(P.5v(/73/i)||(!P.5v(/73/i)&&!4f(u(L[P],10))))&&(K.r!="5a"||(K.r=="5a"&&!P.5v(/f|h|2y|2u/)))){O[P]=L[P]}}M.1l(O,J,F,b(){8(2W C(6).2i("2v")=="6s"){C(6).2i("2v")["95"]="";C(6).2i("2v")["95"]=N}19{C(6).2i("2v",N)}8(G.1z){C(6).1b(G.1z)}8(G.1P){C(6).1w(G.1P)}8(E){E.1k(6,1j)}})})}});C.33.1E({aA:C.33.1g,az:C.33.1m,aO:C.33.3H,b2:C.33.1b,b1:C.33.1w,b0:C.33.7I,3N:b(E,H,F,G){k C.14[E]?C.14[E].1G(6,{dH:E,d:H||{},1A:F,1S:G}):1c},1g:b(){8(!1j[0]||(1j[0].3j==5w||/(7J|7G|99)/.1h(1j[0]))){k 6.aA.1k(6,1j)}19{c E=1j[1]||{};E.2c="1g";k 6.3N.1k(6,[1j[0],E,1j[2]||E.1A,1j[3]||E.1S])}},1m:b(){8(!1j[0]||(1j[0].3j==5w||/(7J|7G|99)/.1h(1j[0]))){k 6.az.1k(6,1j)}19{c E=1j[1]||{};E.2c="1m";k 6.3N.1k(6,[1j[0],E,1j[2]||E.1A,1j[3]||E.1S])}},3H:b(){8(!1j[0]||(1j[0].3j==5w||/(7J|7G|99)/.1h(1j[0]))||(1j[0].3j==aN)){k 6.aO.1k(6,1j)}19{c E=1j[1]||{};E.2c="3H";k 6.3N.1k(6,[1j[0],E,1j[2]||E.1A,1j[3]||E.1S])}},1b:b(H,E,G,F){k E?C.14.6O.1k(6,[{1z:H},E,G,F]):6.b2(H)},1w:b(H,E,G,F){k E?C.14.6O.1k(6,[{1P:H},E,G,F]):6.b1(H)},7I:b(H,E,G,F){k E?C.14.6O.1k(6,[{3H:H},E,G,F]):6.b0(H)},b3:b(F,I,E,H,G){k C.14.6O.1k(6,[{1z:I,1P:F},E,H,G])},ek:b(){k 6.b3.1k(6,1j)},b4:b(E){c F=6.m(E),G=[];C.1i(["em","2F","%","fb"],b(H,I){8(F.7H(I)>0){G=[7A(F),I]}});k G}});1x.1i(["5E","f8","f5","f0","fa","73","f4"],b(F,E){1x.4b.8Y[E]=b(G){8(G.f9==0){G.1O=D(G.b6,E);G.5x=A(G.5x)}G.b6.2v[E]="8W("+[11.22(11.2q(u((G.2t*(G.5x[0]-G.1O[0]))+G.1O[0]),1T),0),11.22(11.2q(u((G.2t*(G.5x[1]-G.1O[1]))+G.1O[1]),1T),0),11.22(11.2q(u((G.2t*(G.5x[2]-G.1O[2]))+G.1O[2]),1T),0)].5C(",")+")"}});b A(E){c F;8(E&&E.3j==7y&&E.1e==3){k E}8(F=/8W\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/.6g(E)){k[u(F[1]),u(F[2]),u(F[3])]}8(F=/8W\\(\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*,\\s*([0-9]+(?:\\.[0-9]+)?)\\%\\s*\\)/.6g(E)){k[7A(F[1])*2.55,7A(F[2])*2.55,7A(F[3])*2.55]}8(F=/#([a-6j-6b-9]{2})([a-6j-6b-9]{2})([a-6j-6b-9]{2})/.6g(E)){k[u(F[1],16),u(F[2],16),u(F[3],16)]}8(F=/#([a-6j-6b-9])([a-6j-6b-9])([a-6j-6b-9])/.6g(E)){k[u(F[1]+F[1],16),u(F[2]+F[2],16),u(F[3]+F[3],16)]}8(F=/b5\\(0, 0, 0, 0\\)/.6g(E)){k B.54}k B[1x.aZ(E).90()]}b D(G,E){c F;do{F=1x.f3(G,E);8(F!=""&&F!="54"||1x.80(G,"1C")){2j}E="5E"}6f(G=G.3h);k A(F)}c B={f2:[0,1T,1T],eZ:[aX,1T,1T],f7:[aY,aY,f1],aS:[0,0,0],f6:[0,0,1T],eX:[aT,42,42],eA:[0,1T,1T],ez:[0,0,6l],ey:[0,6l,6l],eB:[92,92,92],eC:[0,2Y,0],eE:[eD,ew,aP],er:[6l,0,6l],ep:[85,aP,47],es:[1T,8l,0],et:[ev,50,eu],eF:[6l,0,0],eG:[eS,8u,eR],eQ:[eT,0,7K],eU:[1T,0,1T],eW:[1T,eP,0],eO:[0,4M,0],eJ:[75,0,eI],eH:[aX,aV,8l],eK:[eL,eN,aV],dk:[aU,1T,1T],di:[aW,bW,aW],c1:[7K,7K,7K],c0:[1T,bU,bO],bN:[1T,1T,aU],bS:[0,1T,0],c2:[1T,0,1T],c3:[4M,0,0],cc:[0,0,4M],ce:[4M,4M,0],cf:[1T,aT,0],cb:[1T,82,ca],c5:[4M,0,4M],c8:[4M,0,4M],br:[1T,0,0],bq:[82,82,82],bs:[1T,1T,1T],bt:[1T,1T,0],54:[1T,1T,1T]};1x.1p.bp=1x.1p.6C;1x.1E(1x.1p,{aQ:"aR",6C:b(F,G,E,I,H){k 1x.1p[1x.1p.aQ](F,G,E,I,H)},bv:b(F,G,E,I,H){k I*(G/=H)*G+E},aR:b(F,G,E,I,H){k-I*(G/=H)*(G-2)+E},bm:b(F,G,E,I,H){8((G/=H/2)<1){k I/2*G*G+E}k-I/2*((--G)*(G-2)-1)+E},bL:b(F,G,E,I,H){k I*(G/=H)*G*G+E},bF:b(F,G,E,I,H){k I*((G=G/H-1)*G*G+1)+E},bw:b(F,G,E,I,H){8((G/=H/2)<1){k I/2*G*G*G+E}k I/2*((G-=2)*G*G+2)+E},bI:b(F,G,E,I,H){k I*(G/=H)*G*G*G+E},bK:b(F,G,E,I,H){k-I*((G=G/H-1)*G*G*G-1)+E},bJ:b(F,G,E,I,H){8((G/=H/2)<1){k I/2*G*G*G*G+E}k-I/2*((G-=2)*G*G*G-2)+E},bD:b(F,G,E,I,H){k I*(G/=H)*G*G*G*G+E},by:b(F,G,E,I,H){k I*((G=G/H-1)*G*G*G*G+1)+E},bx:b(F,G,E,I,H){8((G/=H/2)<1){k I/2*G*G*G*G*G+E}k I/2*((G-=2)*G*G*G*G+2)+E},bz:b(F,G,E,I,H){k-I*11.b7(G/H*(11.4n/2))+I+E},bC:b(F,G,E,I,H){k I*11.6t(G/H*(11.4n/2))+E},c9:b(F,G,E,I,H){k-I/2*(11.b7(11.4n*G/H)-1)+E},dj:b(F,G,E,I,H){k(G==0)?E:I*11.52(2,10*(G/H-1))+E},cZ:b(F,G,E,I,H){k(G==H)?E+I:I*(-11.52(2,-10*G/H)+1)+E},cY:b(F,G,E,I,H){8(G==0){k E}8(G==H){k E+I}8((G/=H/2)<1){k I/2*11.52(2,10*(G-1))+E}k I/2*(-11.52(2,-10*--G)+2)+E},cj:b(F,G,E,I,H){k-I*(11.63(1-(G/=H)*G)-1)+E},d0:b(F,G,E,I,H){k I*11.63(1-(G=G/H-1)*G)+E},cR:b(F,G,E,I,H){8((G/=H/2)<1){k-I/2*(11.63(1-G*G)-1)+E}k I/2*(11.63(1-(G-=2)*G)+1)+E},cT:b(F,H,E,L,K){c I=1.5Z;c J=0;c G=L;8(H==0){k E}8((H/=K)==1){k E+L}8(!J){J=K*0.3}8(G<11.3a(L)){G=L;c I=J/4}19{c I=J/(2*11.4n)*11.9p(L/G)}k-(G*11.52(2,10*(H-=1))*11.6t((H*K-I)*(2*11.4n)/J))+E},cV:b(F,H,E,L,K){c I=1.5Z;c J=0;c G=L;8(H==0){k E}8((H/=K)==1){k E+L}8(!J){J=K*0.3}8(G<11.3a(L)){G=L;c I=J/4}19{c I=J/(2*11.4n)*11.9p(L/G)}k G*11.52(2,-10*H)*11.6t((H*K-I)*(2*11.4n)/J)+L+E},cU:b(F,H,E,L,K){c I=1.5Z;c J=0;c G=L;8(H==0){k E}8((H/=K/2)==2){k E+L}8(!J){J=K*(0.3*1.5)}8(G<11.3a(L)){G=L;c I=J/4}19{c I=J/(2*11.4n)*11.9p(L/G)}8(H<1){k-0.5*(G*11.52(2,10*(H-=1))*11.6t((H*K-I)*(2*11.4n)/J))+E}k G*11.52(2,-10*(H-=1))*11.6t((H*K-I)*(2*11.4n)/J)*0.5+L+E},d4:b(F,G,E,J,I,H){8(H==21){H=1.5Z}k J*(G/=I)*G*((H+1)*G-H)+E},d5:b(F,G,E,J,I,H){8(H==21){H=1.5Z}k J*((G=G/I-1)*G*((H+1)*G+H)+1)+E},dh:b(F,G,E,J,I,H){8(H==21){H=1.5Z}8((G/=I/2)<1){k J/2*(G*G*(((H*=(1.b9))+1)*G-H))+E}k J/2*((G-=2)*G*(((H*=(1.b9))+1)*G+H)+2)+E},aC:b(F,G,E,I,H){k I-1x.1p.9n(F,H-G,0,I,H)+E},9n:b(F,G,E,I,H){8((G/=H)<(1/2.75)){k I*(7.79*G*G)+E}19{8(G<(2/2.75)){k I*(7.79*(G-=(1.5/2.75))*G+0.75)+E}19{8(G<(2.5/2.75)){k I*(7.79*(G-=(2.25/2.75))*G+0.d7)+E}19{k I*(7.79*(G-=(2.ct/2.75))*G+0.cs)+E}}}},cu:b(F,G,E,I,H){8(G").m({r:"1K",6i:"3G",f:-C*(F/D),h:-E*(H/I)}).1a().1b("14-9o").m({r:"1K",2m:"3g",p:F/D,o:H/I,f:J.f+C*(F/D)+(B.d.2c=="1g"?(C-11.76(D/2))*(F/D):0),h:J.h+E*(H/I)+(B.d.2c=="1g"?(E-11.76(I/2))*(H/I):0),1t:B.d.2c=="1g"?0:1}).1l({f:J.f+C*(F/D)+(B.d.2c=="1g"?0:(C-11.76(D/2))*(F/D)),h:J.h+E*(H/I)+(B.d.2c=="1g"?0:(E-11.76(I/2))*(H/I)),1t:B.d.2c=="1g"?1:0},B.1A||6a)}}5G(b(){B.d.2c=="1g"?G.m({6i:"3G"}):G.m({6i:"3G"}).1m();8(B.1S){B.1S.1k(G[0])}G.31();A(".14-9o").1P()},B.1A||6a)})}})(1x);(b(A){A.14.cp=b(B){k 6.2x(b(){c F=A(6),J=["r","h","f"];c I=A.14.3s(F,B.d.2c||"1m");c N=B.d.1f||15;c M=!(!B.d.co);A.14.43(F,J);F.1g();c D=A.14.4y(F).m({2m:"3g"});c H=((I=="1g")!=M);c G=H?["p","o"]:["o","p"];c C=H?[D.p(),D.o()]:[D.o(),D.p()];c E=/([0-9]+)%/.6g(N);8(E){N=u(E[1])/2Y*C[I=="1m"?0:1]}8(I=="1g"){D.m(M?{o:0,p:N}:{o:N,p:0})}c L={},K={};L[G[0]]=I=="1g"?C[0]:N;K[G[1]]=I=="1g"?C[1]:0;D.1l(L,B.1A/2,B.d.1p).1l(K,B.1A/2,B.d.1p,b(){8(I=="1m"){F.1m()}A.14.3o(F,J);A.14.4p(F);8(B.1S){B.1S.1k(F[0],1j)}F.31()})})}})(1x);(b(A){A.14.cJ=b(B){k 6.2x(b(){c E=A(6),D=["8b","5E","1t"];c H=A.14.3s(E,B.d.2c||"1g");c C=B.d.73||"#cI";c G=E.m("5E");A.14.43(E,D);E.1g();E.m({8b:"4D",5E:C});c F={5E:G};8(H=="1m"){F.1t=0}E.1l(F,{2x:v,1A:B.1A,1p:B.d.1p,4r:b(){8(H=="1m"){E.1m()}A.14.3o(E,D);8(H=="1g"&&1x.1Y.3e){6.2v.cK("2K")}8(B.1S){B.1S.1k(6,1j)}E.31()}})})}})(1x);(b(A){A.14.cL=b(B){k 6.2x(b(){c D=A(6);c F=A.14.3s(D,B.d.2c||"1g");c E=B.d.8j||5;8(F=="1m"){E--}8(D.4i(":3g")){D.m("1t",0);D.1g();D.1l({1t:1},B.1A/2,B.d.1p);E=E-2}28(c C=0;C\').2f(Z.1C);8(B.d.5P){D.1b(B.d.5P)}D.1b(B.d.5P);D.m({h:C.h,f:C.f,o:E.2e()-u(D.m("4c"))-u(D.m("7D")),p:E.2n()-u(D.m("49"))-u(D.m("7B")),r:"1K"});C=G.q();be={h:C.h,f:C.f,o:G.2e()-u(D.m("4c"))-u(D.m("7D")),p:G.2n()-u(D.m("49"))-u(D.m("7B"))};D.1l(be,B.1A,B.d.1p,b(){D.1P();8(B.1S){B.1S.1k(E[0],1j)}E.31()})})}})(1x);',62,942,'||||||this||if|||function|var|options||left||top||ui|return|element|css||height|width|offset|position||helper|parseInt|false||||||||||||||||||||||||||||||document||Math|true|resizable|effects|||data|tabs|else|parent|addClass|null|containment|length|size|show|test|each|arguments|apply|animate|hide|handle|click|easing|disabled|currentItem|instance|opacity|from|selected|removeClass|jQuery|helperProportions|add|duration|dialog|body|draggable|extend|to|call|propagate|relative|items|absolute|containers|currentHandle|resize|start|remove|offsetParent|triggerHandler|callback|255|scrollLeft|scrollTop|stop|cursor|browser|plugin||undefined|max|axis|zIndex||overlay||for|div|item|ddmanager|mode|grid|outerHeight|appendTo|originalPosition|sortable|attr|break|child|0px|overflow|outerWidth|margins|placeholder|min|handles|case|pos|right|style|panels|queue|bottom|pageX|overflowX|positionAbs|pageY|overflowY|selectedClass|px|selectable|bind|stepping|destroy|filter|unselecting|round|index|scrollSensitivity|scrollSpeed|uiDialog|window|drag|cursorAt|accordion|active|typeof|vertical|100|auto|nw|dequeue|se|fn|href|target|unbind||||abs|lis|sw|margin|msie|ne|hidden|parentNode|widget|constructor|selecting|removeData|headers|mouse|restore|slider|value|convertPositionTo|setMode|cssPosition|defaults|droppable|id|containerCache|over|translateValue|distance|event|ghost|focus|push|4px|visible|toggle|offsetWidth|offsetHeight|get|find|tolerance|effect|load|originalSize|isover|hasClass|alsoResize|init|aspectRatio|drop|mouseDrag|scroll|setTransition|fixed||display||save|rangeElement||up||convertValue|borderLeftWidth|minHeight|fx|borderTopWidth|minWidth|accept|isNaN|down|class|is|revert|_change|next|activate|PI|sort|removeWrapper|parents|complete|setData|prototype|direction|current|tagName|fakeEvent|createWrapper|floating|slide|close|mouseStart|none|toShow|hash|proportionallyResize|_mouseStarted|knobHandles|mouseStop|plugins|cancel|128|concat|clone|input|HTML|disable|scrollHeight|stack|out|realMax|maxWidth|not|replace|cache||isout|pow|autoHeight|transparent||hideClass|widgetName|span|maxHeight|static|actualSize|0pt|marginRight|marginBottom|previousHandle|continue|blur|sizeDiff|delay|map|title|inArray|block|clickOffset|handleSize|instances|bgiframe|steps|string|disableSelection|match|Number|end|andSelf|select|toHide|disabledClass|join|deactivate|backgroundColor|snapElements|setTimeout|content|marginLeft|center|clear|both|startselected|marginTop|isOver|className|titlebar|_zIndex|overflowYOffset|_opacity|_cursor|overflowXOffset|prev|cookie|keydown|70158|_handles|running|mousedown|sqrt|droppables|intersect|borderDif|isFunction|mouseInit|default|500|F0|version|header|cancelHelperRemoval|while|exec|parentData|visibility|fA|generatePosition|139|switch|mouseDestroy|enable|wrap|change|alwaysOpen|object|sin|loadingClass|type|middle|containerOffset|moveTo|_aspectRatio|hasScroll|translateLimits|swing|panelClass|_proportionallyResize|translateRange|oneStep|append|mouseCapture|currentContainer|offsetParentBorders|uiDialogTitlebar|split|refresh|animateClass|unselectable|cssCache|scrollWidth|update|refreshPositions|counter|tabify|dragging|1000|keyCode|knob|absolutePosition|mouseUp|xhr|color|unselect||floor|sliderValue|percent|5625|location|sortables|insertBefore|tabsshow|button|autoResize|activeClass|li|horizontal|ajaxOptions|moveToTop|label|opera|hover|spinner|html|resizing|isOpen|proportions|pieces|border|_mouseDelayMet|_mouseDownEvent|range|Array|selectees|parseFloat|borderRightWidth|in|borderBottomWidth|prepareOffsets|getter|normal|indexOf|toggleClass|slow|211|neg|modal|refreshItems|defaultView|rearrange|shiftKey|textarea|background|1px|containerPosition|updateRange|containerSize|animated|dropBehaviour|hoverClass|nodeName|documentElement|192|firstValue|unit||iframeFix|resizeStart|open|new|mouseDown|backgroundImage|resizeStop|generated|unwrap|tabId|getData|_mouseUpDelegate|handleOffset|times|uiHash|140|original|snap|origin|scale|_helper|buttons|_|_mouseMoveDelegate|150|initBoundaries|firstChild|splice|createButtons|mouseDelayMet|createRange|mouseDistanceMet|mouseup|autohide|borderBottom|padding|float|removeChild|alsoresize|opos|fxWrapper|containerElement|rotation|elementOffset|animations|navClass|unselectClass|preventDefault|number|preserveCursor|innerHeight|ctrlKey|rgb|createPlaceholder|step|guess|toLowerCase|domPosition|169|String|custom|cssText|dragged|selectableunselecting|touch|fast|connectWith|pointer|panelTemplate|_updateCache|trigger|_nodeName|knobTheme|dragStop|originalElement|borderTop|dragStart|success|borderLeft|easeOutBounce|explode|asin|borderRight|wrapper|documentScroll|safari|refreshContainers|create|events|uiDialogTitlebarClose|solid|compareDocumentPosition|sender|key|F2F2F2|expression|toleranceElement|dropOnEmpty|widgetBaseClass|toArray|serialize|MozUserSelect|5000px|appendChild|on|contactContainers|_mouseUnselectable|mouseMove|uiDialogContainer|300|intersectsWithEdge|intersectsWith|autoRefresh|oldContent|innerWidth|connectToSortable|newContent|receive|_renderAxis|snapMode|text|autoOpen|_updateRatio|_respectSize|originalMousePosition|navigationFilter|shouldRevert|autoHide|uiDialogButtonPane|oldHeader|dialogfocus|unselected|greedy|_renderProxy|greedyChild|contains|zoom|8px|fit|defaultTheme|newHeader|closeOnEscape|accordionchange|200|fillSpace|mousemove|tabsremove|clientX|panel|tabTemplate|idPrefix|storage|getComputedStyle|_hide|_show|currentStyle|easeInBounce|fix|paddingTop|tabsdisable|tabsenable|grep|fontSize|img|url|tabsload|fade|Function|__toggle|107|def|easeOutQuad|black|165|224|230|144|240|245|trim|_toggleClass|_removeClass|_addClass|morph|cssUnit|rgba|elem|cos|tabsadd|525|startValue|tabsselect|outline|getBaseline|animation|transfer|paddingLeft|handleIndex|paddingRight|removeRange|paddingBottom|getRange|easeInOutQuad|animateDuration|animateEasing|jswing|silver|red|white|yellow|slice|easeInQuad|easeInOutCubic|easeInOutQuint|easeOutQuint|easeInSine|_mouseDelayTimer|instanceof|easeOutSine|easeInQuint|which|easeOutCubic|started|selectee|easeInQuart|easeInOutQuart|easeOutQuart|easeInCubic|dotted|lightyellow|193|522|enableSelection|selectablestop|lime|selectableselected|182|catch|238|attribute|gen|try|lightpink|lightgrey|magenta|maroon|keyboard|purple|clientY|selectablestart|violet|easeInOutSine|203|pink|navy|selectableunselected|olive|orange|selectableselecting|off|createElement|easeInCirc|250|bounce|clip|IMG|horizFirst|fold|toSortable|808080|984375|625|easeInOutBounce|all|blind|canvas|DEDEDE|proxy|dropout|dropover|dropactivate|dropdeactivate|dragstart|sortactivate|group|makeArray|ffff99|highlight|removeAttribute|pulsate|fromSortable|puff|sortreceive|Top|fff|easeInOutCirc|001|easeInElastic|easeInOutElastic|easeOutElastic|shake|iframe|easeInOutExpo|easeOutExpo|easeOutCirc|mozilla|valid|invalid|easeInBack|easeOutBack|outer|9375|Left|Right|box|Bottom|mouseover|inner|snapTolerance|DragDropIframeFix|children|easeInOutBack|lightgreen|easeInExpo|lightcyan|ajax|abort|Loading||700|easeslide|easeinout|container|prependTo|stopPropagation|dragHelper|wrapInner|buttonpane|dialogClass|tabIndex|bounceout|8230|clearStyle|replaceWith|Moz|tabindex|navigation|method|font|clearInterval|nav|ceil|loading|rotate|setInterval|last|inline|Za|Height|z0|tab|insertAfter|has|Width|noKeyboard|after|borderWidth|javascript|void|keypress|empty|scrollTo|Mismatching|Tabs|fragment|identifier|resizeHelper|first||UI|throw|unload|unique|siblings|dialogclose|dialogopen|switchClass|||bounceslide|semi|darkolivegreen||darkmagenta|darkorange|darkorchid|204|153|183|nextSibling|darkcyan|darkblue|cyan|darkgrey|darkgreen|189|darkkhaki|darkred|darksalmon|khaki|130|indigo|lightblue|173|forcePointerForContainers|216|green|215|darkviolet|122|233|148|fuchsia|10000|gold|brown|dynamic|azure|borderRightColor|220|aqua|curCSS|outlineColor|borderLeftColor|blue|beige|borderBottomColor|state|borderTopColor|pt'.split('|'),0,{})) diff --git a/common/js/plugins/ui/plugin.load b/common/js/plugins/ui/plugin.load new file mode 100644 index 000000000..d55620848 --- /dev/null +++ b/common/js/plugins/ui/plugin.load @@ -0,0 +1 @@ +jquery-ui.packed.js \ No newline at end of file diff --git a/common/lang/en.lang.php b/common/lang/en.lang.php index f2257b8a1..9ddf9e5d9 100644 --- a/common/lang/en.lang.php +++ b/common/lang/en.lang.php @@ -126,6 +126,8 @@ $lang->colorset = 'Colorset'; $lang->extra_vars = 'Extra Vars'; + $lang->domain = "Domain Name"; + $lang->url = "URL"; $lang->document_url = 'Article URL'; $lang->trackback_url = 'Trackback URL'; $lang->blog_name = 'Blog Title'; diff --git a/common/lang/es.lang.php b/common/lang/es.lang.php index dc49ef3bb..2caeec1ce 100644 --- a/common/lang/es.lang.php +++ b/common/lang/es.lang.php @@ -125,6 +125,8 @@ $lang->colorset = 'Conjunto de Colores'; $lang->extra_vars = 'Variables Extra'; + $lang->domain = "Domain Name"; + $lang->url = "URL"; $lang->document_url = 'URL del Documento'; $lang->trackback_url = 'URL del Trackback'; $lang->blog_name = 'Titulo del Blog'; diff --git a/common/lang/fr.lang.php b/common/lang/fr.lang.php index 769047ae9..ae45d799f 100644 --- a/common/lang/fr.lang.php +++ b/common/lang/fr.lang.php @@ -126,6 +126,8 @@ $lang->colorset = 'Arrangement de couleur'; $lang->extra_vars = 'Variables Supplémentaires'; + $lang->domain = "Domain Name"; + $lang->url = "URL"; $lang->document_url = 'Document URL'; $lang->trackback_url = 'Rétrolien URL'; $lang->blog_name = 'Nom du Blogue'; diff --git a/common/lang/ge.lang.php b/common/lang/ge.lang.php index c5fa00e68..5d1340acc 100644 --- a/common/lang/ge.lang.php +++ b/common/lang/ge.lang.php @@ -126,6 +126,8 @@ $lang->colorset = 'Colorset'; $lang->extra_vars = 'Extra Vars'; + $lang->domain = "Domain Name"; + $lang->url = "URL"; $lang->document_url = 'Artikel-URL'; $lang->trackback_url = 'Trackback-URL'; $lang->blog_name = 'Blog-Titel'; diff --git a/common/lang/jp.lang.php b/common/lang/jp.lang.php index c1c44352d..bffbb3997 100644 --- a/common/lang/jp.lang.php +++ b/common/lang/jp.lang.php @@ -126,6 +126,8 @@ $lang->colorset = 'カラーセット'; $lang->extra_vars = '拡張変数'; + $lang->domain = "ドメイン"; + $lang->url = "URL"; $lang->document_url = '書き込みURL'; $lang->trackback_url = 'トラックバックURL'; $lang->blog_name = 'ブログ名'; diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index 3e1e254fc..6f8552625 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -126,6 +126,8 @@ $lang->colorset = '컬러셋'; $lang->extra_vars = '확장변수'; + $lang->domain = "도메인"; + $lang->url = "URL"; $lang->document_url = '게시글 주소'; $lang->trackback_url = '엮인글 주소'; $lang->blog_name = '블로그이름'; diff --git a/common/lang/ru.lang.php b/common/lang/ru.lang.php index b93002a45..eaee41067 100644 --- a/common/lang/ru.lang.php +++ b/common/lang/ru.lang.php @@ -126,6 +126,8 @@ $lang->colorset = 'Цветовой набор'; $lang->extra_vars = 'Доп. перем.'; + $lang->domain = "Domain Name"; + $lang->url = "URL"; $lang->document_url = 'Адрес статьи'; $lang->trackback_url = 'Адрес трекбек'; $lang->blog_name = 'Название блога'; diff --git a/common/lang/zh-CN.lang.php b/common/lang/zh-CN.lang.php index 3af0ffaf1..4f8d9da5f 100644 --- a/common/lang/zh-CN.lang.php +++ b/common/lang/zh-CN.lang.php @@ -126,6 +126,8 @@ $lang->colorset = '颜色设定'; $lang->extra_vars = '扩展变数'; + $lang->domain = "域名"; + $lang->url = "URL"; $lang->document_url = '文章地址'; $lang->trackback_url = '引用地址'; $lang->blog_name = '博客名称'; diff --git a/common/lang/zh-TW.lang.php b/common/lang/zh-TW.lang.php index 22ab9c775..42e567126 100644 --- a/common/lang/zh-TW.lang.php +++ b/common/lang/zh-TW.lang.php @@ -126,6 +126,8 @@ $lang->colorset = '顏色設定'; $lang->extra_vars = '延伸變數'; + $lang->domain = "域名"; + $lang->url = "網址"; $lang->document_url = '連結網址'; $lang->trackback_url = '引用'; $lang->blog_name = '部落格名稱'; diff --git a/common/tpl/common_layout.html b/common/tpl/common_layout.html index 96453daae..b20acd002 100644 --- a/common/tpl/common_layout.html +++ b/common/tpl/common_layout.html @@ -42,6 +42,10 @@ + + + + {@ $ssl_actions = Context::getSSLActions() } diff --git a/config/config.inc.php b/config/config.inc.php index 2cdc0b252..cd03e3aae 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -1,93 +1,100 @@ = 5.2.0. Firebug/FirePHP 플러그인 필요) + **/ + if(!defined('__DEBUG_OUTPUT__')) define('__DEBUG_OUTPUT__', 0); + + /** + * @brief FirePHP 콘솔 및 브라우저 주석 출력 보안 + * 0 : 제한 없음 (권장하지 않음) + * 1 : 지정한 IP 주소에만 허용 + **/ + if(!defined('__DEBUG_PROTECT__')) define('__DEBUG_PROTECT__', 1); + if(!defined('__DEBUG_PROTECT_IP__')) define('__DEBUG_PROTECT_IP__', '127.0.0.1'); + + /** + * @brief DB 오류 메세지 출력 정의 + * 0 : 출력하지 않음 + * 1 : files/_debug_db_query.php 에 연결하여 출력 + **/ + if(!defined('__DEBUG_DB_OUTPUT__')) define('__DEBUG_DB_OUTPUT__', 0); + + /** + * @brief DB 쿼리중 정해진 시간을 넘기는 쿼리의 로그 남김 + * 0 : 로그를 남기지 않음 + * 0 이상 : 단위를 초로 하여 지정된 초 이상의 실행시간이 걸린 쿼리를 로그로 남김 + * 로그파일은 ./files/_db_slow_query.php 파일로 저장됨 + **/ + if(!defined('__LOG_SLOW_QUERY__')) define('__LOG_SLOW_QUERY__', 0); + + /** + * @brief ob_gzhandler를 이용한 압축 기능을 강제로 사용하거나 끄는 옵션 + * 0 : 사용하지 않음 + * 1 : 사용함 + * 대부분의 서버에서는 문제가 없는데 특정 서버군에서 압축전송시 IE에서 오동작을 일으키는경우가 있음 + **/ + if(!defined('__OB_GZHANDLER_ENABLE__')) define('__OB_GZHANDLER_ENABLE__', 1); + + + /** * @brief Firebug 콘솔 출력 사용시 관련 파일 require **/ - if(__DEBUG_OUTPUT__ == 2 && version_compare(phpversion(), '5.2', '>') == 1) { - require_once _XE_PATH_.'libs/FirePHPCore/FirePHP.class.php'; + if((__DEBUG_OUTPUT__ == 2) && version_compare(PHP_VERSION, '5.2.0', '>=')) { + require _XE_PATH_.'libs/FirePHPCore/FirePHP.class.php'; } /** * @brief 간단하게 사용하기 위한 함수 정의한 파일 require **/ - require_once(_XE_PATH_.'config/func.inc.php'); + require_once(_XE_PATH_.'config/func.inc.php'); if(__DEBUG__) define('__StartTime__', getMicroTime()); /** * @brief 기본적인 class 파일 include - * - * php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상 + * @TODO : PHP5 기반으로 바꾸게 되면 _autoload()를 이용할 수 있기에 제거 대상 **/ if(__DEBUG__) define('__ClassLoadStartTime__', getMicroTime()); require_once(_XE_PATH_.'classes/object/Object.class.php'); diff --git a/config/func.inc.php b/config/func.inc.php index af406127c..d56b51c19 100644 --- a/config/func.inc.php +++ b/config/func.inc.php @@ -147,6 +147,15 @@ return getModule($module_name, 'api'); } + /** + * @brief module의 wap 객체 생성용 + * @param module_name 모듈이름 + * @return module wap class instance + **/ + function &getWAP($module_name) { + return getModule($module_name, 'wap'); + } + /** * @brief module의 상위 class 객체 생성용 * @param module_name 모듈이름 @@ -386,40 +395,44 @@ * ./files/_debug_message.php 파일에 $buff 내용을 출력한다. * tail -f ./files/_debug_message.php 하여 계속 살펴 볼 수 있다 **/ - function debugPrint($buff = null, $display_option = true) { + function debugPrint($debug_output = null, $display_option = true) { + if(!(__DEBUG__ & 1)) return; + static $firephp; $bt = debug_backtrace(); if(is_array($bt)) $first = array_shift($bt); $file_name = array_pop(explode(DIRECTORY_SEPARATOR, $first['file'])); $line_num = $first['line']; - if(__DEBUG_OUTPUT__ == 0 || (__DEBUG_OUTPUT__ == 2 && version_compare(phpversion(), '5.2', '>') != 1) ) { - $debug_file = _XE_PATH_.'files/_debug_message.php'; - $buff = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($buff, true)); - - if($display_option === true) $buff = "\n====================================\n".$buff."------------------------------------\n"; - $buff = "\n\n"; - if(@!$fp = fopen($debug_file, 'a')) return; - fwrite($fp, $buff); - fclose($fp); - - } elseif(__DEBUG_OUTPUT__ == 2 && version_compare(phpversion(), '5.2', '>') == 1) { + if(__DEBUG_OUTPUT__ == 2 && version_compare(PHP_VERSION, '5.2.0', '>=')) { if(!isset($firephp)) $firephp = FirePHP::getInstance(true); - $label = sprintf('%s:%d', $file_name, $line_num); - // FirePHP 옵션 - if($display_option === 'TABLE') { - $label = $display_option; - } + $label = sprintf('[%s:%d] ', $file_name, $line_num); - if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { - $buff = '허용되지 않은 IP 입니다. config/config.inc.php 파일의 __DEBUG_PROTECT_IP__ 상수 값을 자신의 IP로 변경하세요.'; + // FirePHP 옵션 체크 + if($display_option === 'TABLE') $label = $display_option; + + // __DEBUG_PROTECT__ 옵션으로 지정된 IP와 접근 IP가 동일한지 체크 + if(__DEBUG_PROTECT__ === 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { + $debug_output = 'The IP address is not allowed. Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php'; $label = null; } - $firephp->fb($buff, $label); + $firephp->fb($debug_output, $label); + + } else { + $debug_file = _XE_PATH_.'files/_debug_message.php'; + $debug_output = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($debug_output, true)); + + if($display_option === true) $debug_output = str_repeat('=', 40)."\n".$debug_output.str_repeat('-', 40); + $debug_output = "\n\n"; + + if(@!$fp = fopen($debug_file, 'a')) return; + fwrite($fp, $debug_output); + fclose($fp); } } + /** * @brief microtime() return * @return float @@ -712,4 +725,4 @@ } } -?> +?> \ No newline at end of file diff --git a/layouts/xe_blog/conf/info.xml b/layouts/xe_blog/conf/info.xml index e3d7f62de..2638a3037 100644 --- a/layouts/xe_blog/conf/info.xml +++ b/layouts/xe_blog/conf/info.xml @@ -1,219 +1,220 @@ - - - XE 블로그 기본 스킨 - XEブログのデフォルトスキン - XE博客默认皮肤 - Default Skin of XE blog - Standard-Skin von XE Blog - Cuidado de la Piel por defecto de XE blog - По умолчанию Кожа XE блоге - XE部落格預設面板 - - XE 블로그 기본 스킨입니다. - 디자인 : 서기정 (http://blog.naver.com/addcozy) - HTML/CSS : 소지훈 - - - XEブログの基本スキンです。 - デザイン:ソギジョン (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - XE博客默认皮肤。 - 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - This is default skin of XE blog. - Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - Dies ist der Standard-Skin XE-Blog. - Design: Ki-Seo Jeong (http://blog.naver.com/addcozy) - HTML / CSS: Ju-Hoon Also - - - Esto es por defecto de la piel XE blog. - Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - Это умолчанию кожи XE блоге. - Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy) - HTML/CSS : Ju-Hoon So - - - 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 - zero - - - - - 컬러셋 - カラーセット - 颜色 - Colorset - Colorset - Set de Colores - Colorset - 顏色設定 - 원하시는 컬러셋을 선택해주세요. - 希望するカラーセットを選択してください。 - 请选择颜色。 - Please select a colorset you want. - Bitte wählen Sie ein colorset Sie wollen. - Выберите colorset хотите. - Seleccione set de colores que desea. - 請選擇顏色。 - - 파란색 (기본) - 青 (default) - 蓝色 (default) - Blue (default) - Blue (Standard) - Azul (default) - Blue (default) - 藍色(預設) - - - 회색 - 灰色背景 - 灰色背景 - Gray - Gray - Gray - Gray - 灰色 - - - 오렌지 - Orange - Orange - Orange - Orange - Orange - Orange - 橘色 - - - 보라색 - Violet - Violet - Violet - Violett - Violet - Violet - 紫色 - - - 초록색 - - 绿色 - Green - Grün - Verde - Green - 綠色 - - - - 기본 모듈 - デフォルトモジュール - 默认模块 - Basic module - 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 - В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль - 要讓部落格系統中的控件正常運作,必須要指定預設討論板模組名稱。 - - - 배경 이미지 - 背景イメージ - 背景图片 - Background Image - 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. - Введите, если вы хотите использовать фоновое изображение. - 請在這裡上傳想要使用的背景圖片。 - - - 프로필 이미지 - プロフィールイメージ - 博客头像 - Profile Image - 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) - 請上傳部落格頭像(最適寬度 160px)。 - - - 프로필 - プロフィール - 简介 - Profile - Profil - Perfil - Профиль - 簡介 - 간단한 프로필을 입력해주세요 - 簡単なプロフィールを入力してください。 - 请输入简单介绍。 - Please input your simple profile - Bitte geben Sie Ihre Simple Profile - Por favor, introduzca su perfil simple - Введите простое профиль - 請輸入簡單說明。 - - - - - - 상단 메뉴 - 上段メニュー - 菜单 - Top Menu - Top-Menü - Menú superior - Главное меню - 主選單 - - - + + + XE 블로그 기본 스킨 + XEブログのデフォルトスキン + XE博客默认皮肤 + Default Skin of XE blog + Standard-Skin von XE Blog + Cuidado de la Piel por defecto de XE blog + По умолчанию Кожа XE блоге + XE部落格預設面板 + + XE 블로그 기본 스킨입니다. + 디자인 : 서기정 (http://blog.naver.com/addcozy) + HTML/CSS : 소지훈 + + + XEブログの基本スキンです。 + デザイン:ソギジョン (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + XE博客默认皮肤。 + 设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + This is default skin of XE blog. + Design : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + Dies ist der Standard-Skin XE-Blog. + Design: Ki-Seo Jeong (http://blog.naver.com/addcozy) + HTML / CSS: Ju-Hoon Also + + + Esto es por defecto de la piel XE blog. + Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + Это умолчанию кожи XE блоге. + Дизайн: Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + + XE部落格預設面板。 + 設計 : Ki-Jeong Seo (http://blog.naver.com/addcozy) + HTML/CSS : Ju-Hoon So + + 0.1 + 2008-02-26 + http://blog.nzeo.com + + + zero + zero + zero + zero + zero + zero + zero + zero + + + + + 컬러셋 + カラーセット + 颜色 + Colorset + Colorset + Set de Colores + Colorset + 顏色設定 + 원하시는 컬러셋을 선택해주세요. + 希望するカラーセットを選択してください。 + 请选择颜色。 + Please select a colorset you want. + Bitte wählen Sie ein colorset Sie wollen. + Выберите colorset хотите. + Seleccione set de colores que desea. + 請選擇顏色。 + + 파란색 (기본) + 青 (default) + 蓝色 (default) + Blue (default) + Blue (Standard) + Azul (default) + Blue (default) + 藍色(預設) + + + 회색 + 灰色背景 + 灰色背景 + Gray + Gray + Gray + Gray + 灰色 + + + 오렌지 + Orange + Orange + Orange + Orange + Orange + Orange + 橘色 + + + 보라색 + Violet + Violet + Violet + Violett + Violet + Violet + 紫色 + + + 초록색 + + 绿色 + Green + Grün + Verde + Green + 綠色 + + + + 기본 모듈 + デフォルトモジュール + 默认模块 + Basic module + 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 + В виджеты, которые отображаются в формате будет работать правильно, если вы выбираете основной модуль + 要讓部落格系統中的控件正常運作,必須要指定預設討論板模組名稱。 + + + 배경 이미지 + 背景イメージ + 背景图片 + Background Image + 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. + Введите, если вы хотите использовать фоновое изображение. + 請在這裡上傳想要使用的背景圖片。 + + + 프로필 이미지 + プロフィールイメージ + 博客头像 + Profile Image + 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) + 請上傳部落格頭像(最適寬度 160px)。 + + + 프로필 + プロフィール + 简介 + Profile + Profil + Perfil + Профиль + 簡介 + 간단한 프로필을 입력해주세요 + 簡単なプロフィールを入力してください。 + 请输入简单介绍。 + Please input your simple profile + Bitte geben Sie Ihre Simple Profile + Por favor, introduzca su perfil simple + Введите простое профиль + 請輸入簡單說明。 + + + + + + 상단 메뉴 + 上段メニュー + 菜单 + Top Menu + Top-Menü + Menú superior + Главное меню + 主選單 + + + diff --git a/layouts/xe_official/conf/info.xml b/layouts/xe_official/conf/info.xml index 414c2e271..2e674a9fc 100644 --- a/layouts/xe_official/conf/info.xml +++ b/layouts/xe_official/conf/info.xml @@ -1,200 +1,201 @@ - - - XE 공식 사이트 레이아웃 - XEオフィシャルレイアウト - XE Official website layout - XE Offizielle Website-Layout - XE Официальный сайт макет - Diseño oficial de la página web de XE - XE 官方网站布局 - XE 官方網站版面 - - XE 공식 사이트 레이아웃입니다. - 디자인 : 이소라 - 퍼블리싱 : 정찬명 - 레이아웃 제작 : zero - - - XEのオフィシャルサイトのレイアウトです。 - デザイン:イ ソラ - パブリシング:ジョン チャンミョン - レイアウト作成:Zero - - - This layout is the XE Official website layout. - Designer : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - Layout producer : zero - - - Dieses Layout ist das XE Offizielle Website-Layout. - Designer: So-Ra Lee - HTML / CSS: Chan-Myung Jeong - Layout Hersteller: Zero - - - Этот формат является 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 - - - XE官方网站布局。 - 设计 : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - 布局 : zero - - - XE官方網站版面。 - 設計 : So-Ra Lee - HTML/CSS : Chan-Myung Jeong - 版面設計 : zero - - 0.1 - 2007-08-01 - - - zero - zero - zero - zero - zero - zero - zero - zero - - - - - 컬러셋 - カラーセット - 颜色 - 顏色設定 - Colorset - Colorset - Colorset - Set de colores - 원하시는 컬러셋을 선택해주세요. - 希望するカラーセットを選択してください。 - 请选择颜色。 - 請選擇顏色。 - Please select a colorset you want. - Bitte wählen Sie ein colorset Sie wollen. - Выберите colorset хотите. - Seleccione set de colores que desea. - - 기본 - デフォルト - Basic - Basic - Базовые - Básico - 默认 - 預設 - - - 검은색 - - Black - Schwarz - Черного - Negro - 黑色 - 黑色 - - - 하얀색 - - white - weiß - белый - Blanco - 白色 - 白色 - - - - 로고이미지 - ロゴイメージ - LOGO图片 - LOGO圖片 - Logo image - Logobildes - Изображения логотипа - Imagen del logotipo - 레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 23px인 투명이미지가 가장 어울립니다) - レイアウトの上段に表示されるロゴイメージを入力してください。 (縦幅が23pxである透明イメージが最も合います。) - 请输入显示在布局顶部的LOGO图片。(高度为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 рекомендуется.) - Ingresar una imagen para logotipo. ( Se recomienda una imagen de fondo transparente con una altura de 23px. - - - 홈 페이지 URL - ホームページURL - 主页地址 - 主頁網址 - Homepage URL - Homepage URL - Домашняя страница URL - URL de la página web - 로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요. - ロゴをクリックした時に移動するホームページのURLを入力してください。 - 点击网站LOGO时要移动的页面URL。 - 請輸入當用戶按了網站LOGO後,要前往的頁面網址。 - Please input the URL to redirect when user clicks the logo - 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 - - - 배경 이미지 - 背景イメージ - 背景图片 - 背景圖片 - Background Image - Hintergrundbild - Фоновое изображение - Imagen de fondo - 배경 이미지를 사용하시려면 등록해주세요. - 背景イメージを使う場合は、登録してください。 - 要想使用背景图片请在这里上传。 - 請在這裡上傳想要使用的背景圖片。 - Please input if you want to use background image. - Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild. - Введите, если вы хотите использовать фоновое изображение. - Ingresar imagen de fondo si desea usar. - - - - - - 상단 메뉴 - 上段メニュー - 主菜单 - 主選單 - Top menu - Top Menü - Верхнее меню - Menú Principal - - - 하단 메뉴 - 下段メニュー - 底部菜单 - 底部選單 - Bottom menu - Bottom-Menü - Внизу меню - Menú Inferior - - - + + + XE 공식 사이트 레이아웃 + XEオフィシャルレイアウト + XE Official website layout + XE Offizielle Website-Layout + XE Официальный сайт макет + Diseño oficial de la página web de XE + XE 官方网站布局 + XE 官方網站版面 + + XE 공식 사이트 레이아웃입니다. + 디자인 : 이소라 + 퍼블리싱 : 정찬명 + 레이아웃 제작 : zero + + + XEのオフィシャルサイトのレイアウトです。 + デザイン:イ ソラ + パブリシング:ジョン チャンミョン + レイアウト作成:Zero + + + This layout is the XE Official website layout. + Designer : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + Layout producer : zero + + + Dieses Layout ist das XE Offizielle Website-Layout. + Designer: So-Ra Lee + HTML / CSS: Chan-Myung Jeong + Layout Hersteller: Zero + + + Этот формат является 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 + + + XE官方网站布局。 + 设计 : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + 布局 : zero + + + XE官方網站版面。 + 設計 : So-Ra Lee + HTML/CSS : Chan-Myung Jeong + 版面設計 : zero + + 0.1 + 2007-08-01 + http://blog.nzeo.com + + + zero + zero + zero + zero + zero + zero + zero + zero + + + + + 컬러셋 + カラーセット + 颜色 + 顏色設定 + Colorset + Colorset + Colorset + Set de colores + 원하시는 컬러셋을 선택해주세요. + 希望するカラーセットを選択してください。 + 请选择颜色。 + 請選擇顏色。 + Please select a colorset you want. + Bitte wählen Sie ein colorset Sie wollen. + Выберите colorset хотите. + Seleccione set de colores que desea. + + 기본 + デフォルト + Basic + Basic + Базовые + Básico + 默认 + 預設 + + + 검은색 + + Black + Schwarz + Черного + Negro + 黑色 + 黑色 + + + 하얀색 + + white + weiß + белый + Blanco + 白色 + 白色 + + + + 로고이미지 + ロゴイメージ + LOGO图片 + LOGO圖片 + Logo image + Logobildes + Изображения логотипа + Imagen del logotipo + 레이아웃의 상단에 표시될 로고이미지를 입력하세요. (세로길이가 23px인 투명이미지가 가장 어울립니다) + レイアウトの上段に表示されるロゴイメージを入力してください。 (縦幅が23pxである透明イメージが最も合います。) + 请输入显示在布局顶部的LOGO图片。(高度为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 рекомендуется.) + Ingresar una imagen para logotipo. ( Se recomienda una imagen de fondo transparente con una altura de 23px. + + + 홈 페이지 URL + ホームページURL + 主页地址 + 主頁網址 + Homepage URL + Homepage URL + Домашняя страница URL + URL de la página web + 로고를 클릭시에 이동할 홈 페이지 URL을 입력해 주세요. + ロゴをクリックした時に移動するホームページのURLを入力してください。 + 点击网站LOGO时要移动的页面URL。 + 請輸入當用戶按了網站LOGO後,要前往的頁面網址。 + Please input the URL to redirect when user clicks the logo + 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 + + + 배경 이미지 + 背景イメージ + 背景图片 + 背景圖片 + Background Image + Hintergrundbild + Фоновое изображение + Imagen de fondo + 배경 이미지를 사용하시려면 등록해주세요. + 背景イメージを使う場合は、登録してください。 + 要想使用背景图片请在这里上传。 + 請在這裡上傳想要使用的背景圖片。 + Please input if you want to use background image. + Bitte geben Sie, wenn Sie verwenden wollen Hintergrundbild. + Введите, если вы хотите использовать фоновое изображение. + Ingresar imagen de fondo si desea usar. + + + + + + 상단 메뉴 + 上段メニュー + 主菜单 + 主選單 + Top menu + Top Menü + Верхнее меню + Menú Principal + + + 하단 메뉴 + 下段メニュー + 底部菜单 + 底部選單 + Bottom menu + Bottom-Menü + Внизу меню + Menú Inferior + + + diff --git a/modules/addon/tpl/addon_info.html b/modules/addon/tpl/addon_info.html index fd25975a1..97441a3cd 100644 --- a/modules/addon/tpl/addon_info.html +++ b/modules/addon/tpl/addon_info.html @@ -3,7 +3,6 @@
- @@ -13,18 +12,20 @@ + - + + - + + - +
{$lang->title}
{$lang->author}
- {$author->name} ({$author->homepage}, {$author->email_address})
+ {$author->name} ({$author->homepage}, {$author->email_address})
{$lang->homepage}
{$addon_info->homepage}
{$lang->regdate}
{zdate($addon_info->date, 'Y-m-d')}
{$lang->addon_license}
@@ -33,11 +34,12 @@

{$addon_info->license_link}

{$lang->description}
{nl2br(trim($addon_info->description))}
diff --git a/modules/addon/tpl/addon_list.html b/modules/addon/tpl/addon_list.html index 225a8650c..0caa8f3fd 100644 --- a/modules/addon/tpl/addon_list.html +++ b/modules/addon/tpl/addon_list.html @@ -50,7 +50,7 @@ - {nl2br($val->description)} + {nl2br($val->description)}  diff --git a/modules/admin/lang/fr.lang.php b/modules/admin/lang/fr.lang.php index 299c3f7e2..8ffdb5730 100644 --- a/modules/admin/lang/fr.lang.php +++ b/modules/admin/lang/fr.lang.php @@ -54,16 +54,16 @@ $lang->yesterday = "Yesterday"; $lang->today = "Today"; - $lang->cmd_lang_select = "언어선택"; - $lang->about_cmd_lang_select = "선택된 언어들만 서비스 됩니다"; - $lang->about_recompile_cache = "쓸모없어졌거나 잘못된 캐시파일들을 정리할 수 있습니다"; - $lang->use_ssl = "SSL 사용"; + $lang->cmd_lang_select = "langue"; + $lang->about_cmd_lang_select = "La langue choisie seulement sera servie"; + $lang->about_recompile_cache = "Vous pouvez arranger les fichiers inutils ou les fichiers invalides d'antémémoire"; + $lang->use_ssl = "Utiliser SSL"; $lang->ssl_options = array( - 'none' => "사용안함", - 'optional' => "선택적으로", - 'always' => "항상사용" + 'none' => "Ne Pas utiliser", + 'optional' => "Optionnel", + 'always' => "Toujours" ); - $lang->about_use_ssl = "선택적으로에서는 회원가입/정보수정등의 지정된 action에서 SSL을 사용하고 항상 사용은 모든 서비스가 SSL을 이용하게 됩니다."; - $lang->server_ports = "서버포트지정"; - $lang->about_server_ports = "HTTP는 80, HTTPS는 443이외의 다른 포트를 사용하는 경우에 포트를 지정해주어야합니다."; + $lang->about_use_ssl = "Si l'on choisit 'Optionnel' , on utilise protocole SSL seulement dans quelques services comme inscription ou modification. Si l'on choisit 'Toujours', on utilise protocole SSL dans tous les services."; + $lang->server_ports = "déclarer le port de serveur"; + $lang->about_server_ports = "Si l'on ne veut pas utiliser le port 80 pour HTTP mais un autre port, ou bien, si l'on ne veut pas utiliser le port 443 pour HTTPS mais un autre port, on doit déclarer les ports."; ?> diff --git a/modules/admin/tpl/css/admin.css b/modules/admin/tpl/css/admin.css index bffc33d95..b58ebac07 100644 --- a/modules/admin/tpl/css/admin.css +++ b/modules/admin/tpl/css/admin.css @@ -89,7 +89,7 @@ ul.localNavigation li.on a { background-position:right top; padding:8px 15px 5px #popHeadder, #popHistoryHeadder { margin-bottom: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;} +#popBody, #popHistoryBody { width:600px; padding:10px; background:#ffffff; *zoom:1; position:relative;} #popHistoryBody { height: 200px; overflow: auto; padding-right:0; } #popFooter { width:620px; background:#70A2C6; border-top:1px solid #e8e8e7; padding:.5em 0 .5em 0; overflow:hidden; } #popFooter .close { position:relative; left:50%; margin-left:-1em; float:left;} diff --git a/modules/admin/tpl/index.html b/modules/admin/tpl/index.html index be488a4d2..35b4d1349 100644 --- a/modules/admin/tpl/index.html +++ b/modules/admin/tpl/index.html @@ -61,7 +61,7 @@ {$val->version} - {$author->name} + {$author->name} diff --git a/modules/board/board.api.php b/modules/board/board.api.php index f717cfa27..ff594f2eb 100644 --- a/modules/board/board.api.php +++ b/modules/board/board.api.php @@ -43,6 +43,15 @@ $oModule->add('oDocument',$this->arrangeContent(Context::get('oDocument'))); } + + /** + * @brief 컨텐츠의 파일 목록 + **/ + function dispBoardContentFileList(&$oModule) { + $oModule->add('file_list',$this->arrangeFile(Context::get('file_list'))); + } + + /** * @brief 태그 목록 **/ @@ -50,8 +59,10 @@ $oModule->add('tag_list',Context::get('tag_list')); } - - function dispBoardConentCommentList(&$oModule) { + /** + * @brief 컨텐츠의 코멘트 목록 + **/ + function dispBoardContentCommentList(&$oModule) { $oModule->add('comment_list',$this->arrangeComment(Context::get('comment_list'))); } @@ -83,5 +94,24 @@ } return $output; } + + + function arrangeFile($file_list) { + $output = array(); + if(count($file_list)) { + foreach($file_list as $key => $val){ + $item = null; + $item->sid = $val->sid; + $item->download_count = $val->download_count; + $item->source_filename = $val->source_filename; + $item->uploaded_filename = $val->uploaded_filename; + $item->file_size = $val->file_size; + $item->regdate = $val->regdate; + $item->download_url = $val->download_url; + $output[] = $item; + } + } + return $output; + } } ?> diff --git a/modules/board/board.controller.php b/modules/board/board.controller.php index c78217907..adaf4e49c 100644 --- a/modules/board/board.controller.php +++ b/modules/board/board.controller.php @@ -25,7 +25,8 @@ $obj->module_srl = $this->module_srl; if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N'; - if(!$obj->title) $obj->title = cut_str(strip_tags($obj->content),20,'...'); + settype($obj->title, "string"); + if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'...'); // 관리자가 아니라면 게시글 색상/굵기 제거 if(!$this->grant->manager) { diff --git a/modules/board/board.view.php b/modules/board/board.view.php index ec7f1f964..644ea1dbc 100644 --- a/modules/board/board.view.php +++ b/modules/board/board.view.php @@ -67,8 +67,7 @@ /** * 카테고리를 사용하는지 확인후 사용시 카테고리 목록을 구해와서 Context에 세팅 **/ - $this->dispBoardCatogoryList(); - + $this->dispBoardCategoryList(); /** * 목록이 노출될때 같이 나오는 검색 옵션을 정리하여 스킨에서 쓸 수 있도록 context set @@ -98,7 +97,7 @@ $this->setTemplateFile('list'); } - function dispBoardCatogoryList(){ + function dispBoardCategoryList(){ if($this->module_info->use_category=='Y') { $oDocumentModel = &getModel('document'); Context::set('category_list', $oDocumentModel->getCategoryList($this->module_srl)); @@ -113,10 +112,8 @@ $document_srl = Context::get('document_srl'); $page = Context::get('page'); - // document model 객체를 생성 - $oDocumentModel = &getModel('document'); - - // 혹시 선택된 문서가 있다면 해당 문서에 대한 객체를 생성함 (일단 빈객체를 만드는 것은 선택된 글이 없을때 스킨에서 object 오류발생하는 것을 막기 위함) + // 혹시 선택된 문서가 있다면 해당 문서에 대한 객체를 생성함 + // (일단 빈객체를 만드는 것은 선택된 글이 없을때 스킨에서 object 오류발생하는 것을 막기 위함) $oDocument = $oDocumentModel->getDocument(0); // document_srl이 있다면 해당 글을 구해와서 $oDocument로 세팅 @@ -177,6 +174,14 @@ Context::set('oDocument', $oDocument); } + + function dispBoardContentFileList(){ + $oDocumentModel = &getModel('document'); + $document_srl = Context::get('document_srl'); + $oDocument = $oDocumentModel->getDocument($document_srl); + Context::set('file_list',$oDocument->getUploadedFiles()); + } + function dispBoardContentCommentList(){ $oDocumentModel = &getModel('document'); $document_srl = Context::get('document_srl'); @@ -202,6 +207,7 @@ function dispBoardContentList(){ $oDocumentModel = &getModel('document'); $args->module_srl = $this->module_srl; ///< 현재 모듈의 module_srl + // 목록을 구하기 위한 대상 모듈/ 페이지 수/ 목록 수/ 페이지 목록 수에 대한 옵션 설정 $args->page = Context::get('page');; ///< 페이지 $args->list_count = $this->list_count; ///< 한페이지에 보여줄 글 수 diff --git a/modules/board/board.wap.php b/modules/board/board.wap.php new file mode 100644 index 000000000..1f96197ed --- /dev/null +++ b/modules/board/board.wap.php @@ -0,0 +1,115 @@ +grant->list || $this->module_info->consultation == 'Y') return $oMobile->setContent(Context::getLang('msg_not_permitted')); + + // document model 객체 생성 + $oDocumentModel = &getModel('document'); + + // 선택된 게시글이 있을 경우 + $document_srl = Context::get('document_srl'); + if($document_srl) { + $oDocument = $oDocumentModel->getDocument($document_srl); + if($oDocument->isExists()) { + // 권한 확인 + if(!$this->grant->view) return $oMobile->setContent(Context::getLang('msg_not_permitted')); + + // 글 제목 설정 + Context::setBrowserTitle($oDocument->getTitleText()); + + // 댓글 보기 일 경우 + if($this->act=='dispBoardContentCommentList') { + + $oCommentModel = &getModel('comment'); + $output = $oCommentModel->getCommentList($oDocument->document_srl, 0, false, $oDocument->getCommentCount()); + + $content = ''; + if(count($output->data)) { + foreach($output->data as $key => $val){ + $oComment = new commentItem(); + $oComment->setAttribute($val); + if(!$oComment->isAccessible()) continue; + $content .= "".$oComment->getNickName()." (".$oComment->getRegdate("Y-m-d").")
\r\n".$oComment->getContent(false,false)."
\r\n"; + } + } + + // 내용 설정 + $oMobile->setContent( $content ); + + // 상위 페이지를 목록으로 돌아가기로 지정 + $oMobile->setUpperUrl( getUrl('act',''), Context::getLang('cmd_go_upper') ); + + // 댓글 보기가 아니면 글 보여줌 + } else { + + // 내용 지정 (태그를 모두 제거한 내용을 설정) + $content = strip_tags($oDocument->getContent(false,false,false)); + + + // 내용 상단에 정보 출력 (댓글 보기 링크 포함) + $content = Context::getLang('replies').' : '.$oDocument->getCommentCount().'
'."\r\n".$content; + $content = ''.$oDocument->getNickName()." (".$oDocument->getRegdate("Y-m-d").")
\r\n".$content; + + // 내용 설정 + $oMobile->setContent( $content ); + + // 상위 페이지를 목록으로 돌아가기로 지정 + $oMobile->setUpperUrl( getUrl('document_srl',''), Context::getLang('cmd_list') ); + + } + + return; + } + } + + // 게시글 목록 + $args->module_srl = $this->module_srl; + $args->page = Context::get('page');; + $args->list_count = 9; + $args->sort_index = $this->module_info->order_target?$this->module_info->order_target:'list_order'; + $args->order_type = $this->module_info->order_type?$this->module_info->order_type:'asc'; + $output = $oDocumentModel->getDocumentList($args, $this->except_notice); + $document_list = $output->data; + $page_navigation = $output->page_navigation; + + $childs = array(); + if($document_list && count($document_list)) { + foreach($document_list as $key => $val) { + $href = getUrl('mid',$_GET['mid'],'document_srl',$val->document_srl); + $obj = null; + $obj['href'] = $val->getPermanentUrl(); + + $title = $val->getTitleText(); + if($val->getCommentCount()) $title .= ' ['.$val->getCommentCount().']'; + $obj['link'] = $obj['text'] = '['.$val->getNickName().'] '.$title; + $childs[] = $obj; + } + $oMobile->setChilds($childs); + } + + $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; + } + } + +?> diff --git a/modules/board/conf/module.xml b/modules/board/conf/module.xml index 65b1b6517..f51274914 100644 --- a/modules/board/conf/module.xml +++ b/modules/board/conf/module.xml @@ -86,7 +86,7 @@ - + diff --git a/modules/board/skins/xe_board/write_form.html b/modules/board/skins/xe_board/write_form.html index c951736e5..cee49c1e6 100644 --- a/modules/board/skins/xe_board/write_form.html +++ b/modules/board/skins/xe_board/write_form.html @@ -110,11 +110,11 @@ +
-
diff --git a/modules/board/skins/xe_guestbook/write_form.html b/modules/board/skins/xe_guestbook/write_form.html index 465767498..7668469dd 100644 --- a/modules/board/skins/xe_guestbook/write_form.html +++ b/modules/board/skins/xe_guestbook/write_form.html @@ -92,8 +92,12 @@ + + +
+  
diff --git a/modules/board/tpl/category_info.html b/modules/board/tpl/category_info.html index e679da5e1..faee29b33 100644 --- a/modules/board/tpl/category_info.html +++ b/modules/board/tpl/category_info.html @@ -22,7 +22,13 @@

{$lang->about_category_color}

- + +
{$lang->expand}
+ + expand=="Y")-->checked="checked" class="checkbox" /> +

{$lang->about_expand}

+ +
{$lang->category_group_srls}
diff --git a/modules/board/tpl/skin_info.html b/modules/board/tpl/skin_info.html index ad54348d1..36fede0b1 100644 --- a/modules/board/tpl/skin_info.html +++ b/modules/board/tpl/skin_info.html @@ -17,18 +17,20 @@
{$lang->skin_author}
- {$author->name} ({$author->homepage}, {$author->email_address})
+ {$author->name} ({$author->homepage}, {$author->email_address})
+
{$lang->homepage}
{$skin_info->homepage} - +
{$lang->date}
{zdate($skin_info->date, 'Y-m-d')}  +
{$lang->skin_license}
@@ -36,13 +38,13 @@

{$skin_info->license_link}

-   - + +
{$lang->description}
{nl2br(trim($skin_info->description))} - + diff --git a/modules/board/tpl/top_refresh.html b/modules/board/tpl/top_refresh.html index 2f4983d1d..a739609df 100644 --- a/modules/board/tpl/top_refresh.html +++ b/modules/board/tpl/top_refresh.html @@ -1,3 +1,4 @@ - diff --git a/modules/comment/comment.item.php b/modules/comment/comment.item.php index c1f863862..c867acf05 100644 --- a/modules/comment/comment.item.php +++ b/modules/comment/comment.item.php @@ -170,7 +170,7 @@ return htmlspecialchars($content); } - function getContent($add_popup_menu = true, $add_content_info = true) { + function getContent($add_popup_menu = true, $add_content_info = true, $add_xe_content_class = true) { if($this->isSecret() && !$this->isAccessible()) return Context::getLang('msg_is_secret'); $content = $this->get('content'); @@ -195,7 +195,7 @@ ); // 컨텐츠에 대한 조작이 필요하지 않더라도 xe_content라는 클래스명을 꼭 부여 } else { - $content = sprintf('
%s
', $content); + if($add_xe_content_class) $content = sprintf('
%s
', $content); } return $content; diff --git a/modules/counter/counter.controller.php b/modules/counter/counter.controller.php index 9f30c1963..86f3654d4 100644 --- a/modules/counter/counter.controller.php +++ b/modules/counter/counter.controller.php @@ -68,9 +68,8 @@ * @brief pageview 등록 **/ function insertPageView() { - $args->regdate = date("Ymd"); + $args->regdate = '0, '.date('Ymd'); executeQuery('counter.updateCounterPageview', $args); - executeQuery('counter.updateTotalCounterPageview'); } /** diff --git a/modules/counter/queries/updateCounterPageview.xml b/modules/counter/queries/updateCounterPageview.xml index d4ec933b4..a950964c0 100644 --- a/modules/counter/queries/updateCounterPageview.xml +++ b/modules/counter/queries/updateCounterPageview.xml @@ -6,6 +6,6 @@ - + diff --git a/modules/document/document.admin.view.php b/modules/document/document.admin.view.php index 71c66e3dd..0bc5357ee 100644 --- a/modules/document/document.admin.view.php +++ b/modules/document/document.admin.view.php @@ -112,58 +112,6 @@ $oModuleModel = &getModel('module'); - // 모듈 카테고리 목록을 구함 - $module_categories = $oModuleModel->getModuleCategories(); - - // 모듈의 목록을 가져옴 - $site_module_info = Context::get('site_module_info'); - $args->site_srl = $site_module_info->site_srl; - $module_list = $oModuleModel->getMidList($args); - - // 사이트 운영자가 아닌 경우 - if(!$oModuleModel->isSiteAdmin()) { - $logged_info = Context::get('logged_info'); - $user_id = $logged_info->user_id; - $group_list = $logged_info->group_list; - - if($logged_info->is_admin != 'Y') { - foreach($module_list as $key => $val) { - $info = $oModuleModel->arrangeModuleInfo($val); - - // 직접 최고 관리자로 지정이 안되어 있으면 그룹을 체크 - if(!in_array($user_id, $info->admin_id)) { - - $is_granted = false; - $manager_group = $info->grants['manager']; - if(count($group_list) && count($manager_group)) { - foreach($group_list as $group_srl => $group_info) { - if(in_array($group_srl, $manager_group)) { - $is_granted = true; - break; - } - } - } - if(!$is_granted) unset($module_list[$key]); - } - } - } - } - - // 게시판만 뽑자 - foreach($module_list as $module_srl => $module) { - if($module->module != 'board') unset($module_list[$module_srl]); - } - - // module_category와 module의 조합 - if($module_categories) { - foreach($module_list as $module_srl => $module) { - $module_categories[$module->module_category_srl]->list[$module_srl] = $module; - } - } else { - $module_categories[0]->list = $module_list; - } - - // 모듈 카테고리 목록과 모듈 목록의 조합 if(count($module_list)>1) Context::set('module_list', $module_categories); diff --git a/modules/document/document.controller.php b/modules/document/document.controller.php index d6c2265be..53b3dca23 100644 --- a/modules/document/document.controller.php +++ b/modules/document/document.controller.php @@ -137,7 +137,8 @@ } // 제목이 없으면 내용에서 추출 - if(!$obj->title) $obj->title = cut_str(strip_tags($obj->content),20,'...'); + settype($obj->title, "string"); + if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'...'); // 내용에서 XE만의 태그를 삭제 $obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content); @@ -238,7 +239,8 @@ } // 제목이 없으면 내용에서 추출 - if(!$obj->title) $obj->title = cut_str(strip_tags($obj->content),20,'...'); + settype($obj->title, "string"); + if($obj->title == '') $obj->title = cut_str(strip_tags($obj->content),20,'...'); // 내용에서 XE만의 태그를 삭제 $obj->content = preg_replace('!<\!--(Before|After)(Document|Comment)\(([0-9]+),([0-9]+)\)-->!is', '', $obj->content); diff --git a/modules/document/document.item.php b/modules/document/document.item.php index 28120daca..13a56d4db 100644 --- a/modules/document/document.item.php +++ b/modules/document/document.item.php @@ -235,7 +235,7 @@ return htmlspecialchars($content); } - function getContent($add_popup_menu = true, $add_content_info = true, $resource_realpath = false) { + function getContent($add_popup_menu = true, $add_content_info = true, $resource_realpath = false, $add_xe_content_class = true) { if(!$this->document_srl) return; if($this->isSecret() && !$this->isGranted()) return Context::getLang('msg_is_secret'); @@ -271,7 +271,7 @@ ); // 컨텐츠에 대한 조작이 필요하지 않더라도 xe_content라는 클래스명을 꼭 부여 } else { - $content = sprintf('
%s
', $content); + if($add_xe_content_class) $content = sprintf('
%s
', $content); } // resource_realpath가 true이면 내용내 이미지의 경로를 절대 경로로 변경 @@ -282,9 +282,21 @@ return $content; } + /** + * 에디터 코드가 변환된 내용 반환 + **/ + function getTransContent($add_popup_menu = true, $add_content_info = true, $resource_realpath = false, $add_xe_content_class = true) { + $oContext = &Context::getInstance(); + + $content = $this->getContent($add_popup_menu, $add_content_info, $resource_realpath, $add_xe_content_class); + $content = $oContext->transContent($content); + + return $content; + } + function getSummary($str_size = 50) { - // 영문이나 숫자가 연결되어서 20개 이상으로 연결시에 강제 띄움 시도 - $content = preg_replace('/([a-z0-9\-\+:\/\.\~,\|\!\@\#\$\%\^\&\*\(\)\_\+]){20,}/is',"$0 ",$this->getContent(false,false)); + // 영문이나 숫자가 연결되어서 20개 이상으로 연결시에 강제 띄움 시도 - {20,}으로 길이를 정하면, 20개 이상 문자열 맨 마지막에 스페이스를 추가할 뿐 원하는 의도는 달성되지 못함 + $content = preg_replace('/([a-z0-9\+:\/\.\~,\|\!\@\#\$\%\^\&\*\(\)\_]){20}/is',"$0-",$this->getContent(false,false)); // 태그 제거 $content = preg_replace('!<([^>]*?)>!is','', $content); diff --git a/modules/document/document.model.php b/modules/document/document.model.php index bc1248588..dade66bc0 100644 --- a/modules/document/document.model.php +++ b/modules/document/document.model.php @@ -485,7 +485,8 @@ * @brief 특정 카테고리에 child가 있는지 체크 **/ function getCategoryChlidCount($category_srl) { - $output = executeQuery('document.getChildCategoryCount'); + $args->category_srl = $category_srl; + $output = executeQuery('document.getChildCategoryCount',$args); if($output->data->count > 0) return true; return false; } diff --git a/modules/document/tpl/checked_list.html b/modules/document/tpl/checked_list.html index 3d3699b4c..8e53a9b2d 100644 --- a/modules/document/tpl/checked_list.html +++ b/modules/document/tpl/checked_list.html @@ -25,22 +25,12 @@ - +
diff --git a/modules/document/tpl/js/document_admin.js b/modules/document/tpl/js/document_admin.js index 442f0a5ce..59f2ccd5f 100644 --- a/modules/document/tpl/js/document_admin.js +++ b/modules/document/tpl/js/document_admin.js @@ -27,10 +27,7 @@ function completeManageDocument(ret_obj) { } /* 선택된 모듈의 카테고리 목록을 가져오는 함수 */ -function doGetCategoryFromModule(obj) { - if(!obj) return; - var module_srl = obj.options[obj.selectedIndex].value; - +function doGetCategoryFromModule(module_srl) { var params = new Array(); params['module_srl'] = module_srl; @@ -85,3 +82,11 @@ function doCancelDeclare() { function completeCancelDeclare(ret_obj) { location.reload(); } + +function insertSelectedModule(id, module_srl, mid, browser_title) { + var obj= xGetElementById('_'+id); + var sObj = xGetElementById(id); + sObj.value = module_srl; + obj.value = browser_title+' ('+mid+')'; + doGetCategoryFromModule(module_srl); +} diff --git a/modules/editor/components/image_link/image_link.class.php b/modules/editor/components/image_link/image_link.class.php index 996dde41e..8f91428b8 100644 --- a/modules/editor/components/image_link/image_link.class.php +++ b/modules/editor/components/image_link/image_link.class.php @@ -49,6 +49,7 @@ $link_url = $xml_obj->attrs->link_url; $open_window = $xml_obj->attrs->open_window; $style = $xml_obj->attrs->style; + $margin = (int)$xml_obj->attrs->margin; if(!$alt) { $tmp_arr = explode('/',$src); @@ -64,15 +65,26 @@ $attr_output[] = "alt=\"".$alt."\""; $attr_output[] = "title=\"".$alt."\""; } + if($margin) { + $style = trim(preg_replace('/margin[a-z\-]*[ ]*:[ ]*[0-9 a-z]+(;| )/i','', $style)).';'; + $style = str_replace(';;',';',$style); + if($style == ';') $style = ''; + $style .= ' margin:'.$margin.'px;'; + } if($align) $attr_output[] = "align=\"".$align."\""; if(preg_match("/\.png$/i",$src)) $attr_output[] = "class=\"iePngFix\""; if($width) $attr_output[] = 'width="'.$width.'"'; if($height) $attr_output[] = 'height="'.$height.'"'; - if($border) $attr_output[] = 'border="'.$border.'"'; + if($border) { + $style = trim(preg_replace('/border[a-z\-]*[ ]*:[ ]*[0-9 a-z]+(;| )/i','', $style)).';'; + $style = str_replace(';;',';',$style); + if($style == ';') $style = ''; + $style .= ' border-style: solid; border-width:'.$border.'px;'; + } - $code = sprintf("", implode(" ",$attr_output), $style); + $code = sprintf("", implode(' ',$attr_output), $style); if($link_url) { if($open_window =='Y') $code = sprintf('%s', $link_url, $code); diff --git a/modules/editor/components/image_link/lang/en.lang.php b/modules/editor/components/image_link/lang/en.lang.php index ecc125a8f..568914d1d 100644 --- a/modules/editor/components/image_link/lang/en.lang.php +++ b/modules/editor/components/image_link/lang/en.lang.php @@ -15,6 +15,7 @@ $lang->image_align_right = "Right of Article"; $lang->image_border = "Border Thickness"; $lang->urllink_url = "URL"; + $lang->image_margin = 'Image Margin'; $lang->about_url_link_open_window = "Make the link to open as a new window"; $lang->cmd_get_scale = "Get Image Size"; diff --git a/modules/editor/components/image_link/lang/es.lang.php b/modules/editor/components/image_link/lang/es.lang.php index 65b2606e2..221d794a0 100644 --- a/modules/editor/components/image_link/lang/es.lang.php +++ b/modules/editor/components/image_link/lang/es.lang.php @@ -15,6 +15,7 @@ $lang->image_align_right = "Derecho de articulo"; $lang->image_border = "Grosor de Fronteras"; $lang->urllink_url = "URL"; + $lang->image_margin = 'Image Margin'; $lang->about_url_link_open_window = "Hacer el vinculo para abrir una nueva ventana"; $lang->cmd_get_scale = "Obtener tamano de la imagen"; diff --git a/modules/editor/components/image_link/lang/jp.lang.php b/modules/editor/components/image_link/lang/jp.lang.php index 88aa8ac88..fe87b5f59 100644 --- a/modules/editor/components/image_link/lang/jp.lang.php +++ b/modules/editor/components/image_link/lang/jp.lang.php @@ -14,9 +14,10 @@ $lang->image_align_middle = "中央揃え"; $lang->image_align_right = "右揃え"; $lang->image_border = "ボーダー"; + $lang->image_margin = '外側の空白(Margin)'; $lang->urllink_open_window = "新しいウィンドウで開く"; - $lang->about_url_link_open_window = "チェックすると、リンクをクリックした時に新しいウィンドウで開きます。"; + $lang->about_url_link_open_window = "チェックすると、リンクをクリックする際、新しいウィンドウで開きます。"; - $lang->cmd_get_scale = "イメージサイズ表示"; + $lang->cmd_get_scale = "イメージサイズを計算"; ?> diff --git a/modules/editor/components/image_link/lang/ko.lang.php b/modules/editor/components/image_link/lang/ko.lang.php index d8f9bfbbe..20eeb8d87 100644 --- a/modules/editor/components/image_link/lang/ko.lang.php +++ b/modules/editor/components/image_link/lang/ko.lang.php @@ -5,18 +5,19 @@ * @brief 위지윅에디터(editor) 모듈 > 이미지링크(image_link) 컴포넌트의 언어팩 **/ - $lang->image_url = "이미지 경로"; - $lang->image_alt = "설명 입력"; - $lang->image_scale = "이미지크기"; - $lang->image_align = "정렬 방법 "; - $lang->image_align_normal = "한 문단을 차지"; - $lang->image_align_left = "글의 왼쪽으로"; - $lang->image_align_middle = "가운데"; - $lang->image_align_right = "글의 우측으로"; - $lang->image_border = "경계선 두께"; + $lang->image_url = '이미지 경로'; + $lang->image_alt = '설명 입력'; + $lang->image_scale = '이미지크기'; + $lang->image_align = '정렬 방법'; + $lang->image_align_normal = '한 문단을 차지'; + $lang->image_align_left = '글의 왼쪽으로'; + $lang->image_align_middle = '가운데'; + $lang->image_align_right = '글의 우측으로'; + $lang->image_border = '경계선 두께'; + $lang->image_margin = '바깥 여백'; - $lang->urllink_open_window = "새창열기"; - $lang->about_url_link_open_window = "선택하시면 링크 선택시 새창으로 열립니다"; + $lang->urllink_open_window = '새창열기'; + $lang->about_url_link_open_window = '선택하시면 링크 선택시 새창으로 열립니다'; - $lang->cmd_get_scale = "크기 구하기"; + $lang->cmd_get_scale = '크기 구하기'; ?> diff --git a/modules/editor/components/image_link/lang/ru.lang.php b/modules/editor/components/image_link/lang/ru.lang.php index 1d5ac7536..26424e0e1 100644 --- a/modules/editor/components/image_link/lang/ru.lang.php +++ b/modules/editor/components/image_link/lang/ru.lang.php @@ -15,6 +15,7 @@ $lang->image_align_right = "Право"; $lang->image_border = "Толщина рамки"; $lang->urllink_url = "URL"; + $lang->image_margin = 'Image Margin'; $lang->about_url_link_open_window = "Создайте ссылку для открытия в новом окне"; $lang->cmd_get_scale = "Получить размер изображения"; diff --git a/modules/editor/components/image_link/lang/zh-CN.lang.php b/modules/editor/components/image_link/lang/zh-CN.lang.php index 72163ad03..c936ab8d9 100644 --- a/modules/editor/components/image_link/lang/zh-CN.lang.php +++ b/modules/editor/components/image_link/lang/zh-CN.lang.php @@ -15,6 +15,7 @@ $lang->image_align_right = "内容右侧"; $lang->image_border = "边框粗细"; $lang->urllink_url = "URL"; + $lang->image_margin = 'Image Margin'; $lang->about_url_link_open_window = "将在新窗口中打开链接。"; $lang->cmd_get_scale = "获得图片大小"; diff --git a/modules/editor/components/image_link/lang/zh-TW.lang.php b/modules/editor/components/image_link/lang/zh-TW.lang.php index 70bd13441..355cd395f 100644 --- a/modules/editor/components/image_link/lang/zh-TW.lang.php +++ b/modules/editor/components/image_link/lang/zh-TW.lang.php @@ -15,6 +15,7 @@ $lang->image_align_right = "靠右"; $lang->image_border = "邊框粗細"; $lang->urllink_url = "網址"; + $lang->image_margin = 'Image Margin'; $lang->about_url_link_open_window = "開啟連結於新視窗。"; $lang->cmd_get_scale = "取得圖片大小"; diff --git a/modules/editor/components/image_link/tpl/popup.html b/modules/editor/components/image_link/tpl/popup.html index 6890d935c..85d3cf5f4 100644 --- a/modules/editor/components/image_link/tpl/popup.html +++ b/modules/editor/components/image_link/tpl/popup.html @@ -79,6 +79,10 @@ + + + +
{$lang->move_target_module}
- + + {$lang->cmd_select}
{$lang->image_border}
px
{$lang->image_margin}
px
diff --git a/modules/editor/components/image_link/tpl/popup.js b/modules/editor/components/image_link/tpl/popup.js index 6939bcdd7..357e82452 100644 --- a/modules/editor/components/image_link/tpl/popup.js +++ b/modules/editor/components/image_link/tpl/popup.js @@ -27,6 +27,8 @@ function getImage() { node.style.cssFloat : node.style.styleFloat; if(!align) align = node.style.verticalAlign? node.style.verticalAlign : node.getAttribute("align"); + var margin = node.style.margin ? + node.style.margin.match("[0-9]+") : node.getAttribute("margin"); var alt = node.getAttribute("alt"); var width = xWidth(node); var height = xHeight(node); @@ -51,7 +53,13 @@ function getImage() { default : xGetElementById("align_normal").checked = true; break; } - xGetElementById("image_border").value = border; + if(margin) { + xGetElementById('image_margin').value = margin; + } + + if(border) { + xGetElementById("image_border").value = border; + } xGetElementById("width").value = width; xGetElementById("height").value = height; @@ -87,6 +95,7 @@ function insertImage(obj) { else if(xGetElementById("align_middle").checked==true) align = "vertical-align: middle"; else if(xGetElementById("align_right").checked==true) align = "float: right"; var border = parseInt(xGetElementById("image_border").value,10); + var margin = parseInt(xGetElementById("image_margin").value,10); var width = xGetElementById("width").value; var height = xGetElementById("height").value; @@ -97,18 +106,21 @@ function insertImage(obj) { } url = url.replace(request_uri,''); - var text = "edit->fontsize = 'Size'; $lang->edit->use_paragraph = 'Paragraph Function'; $lang->edit->fontlist = array( - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = 'Style'; @@ -75,6 +75,26 @@ $lang->edit->submit = 'Submit'; + $lang->edit->fontcolor = 'Text Color'; + $lang->edit->fontbgcolor = 'Background Color'; + $lang->edit->bold = 'Bold'; + $lang->edit->italic = 'Italic'; + $lang->edit->underline = 'Underline'; + $lang->edit->strike = 'Strike'; + $lang->edit->sup = 'Sup'; + $lang->edit->sub = 'Sub'; + $lang->edit->redo = 'Re Do'; + $lang->edit->undo = 'Un Do'; + $lang->edit->align_left = 'Align Left'; + $lang->edit->align_center = 'Align Center'; + $lang->edit->align_right = 'Align Right'; + $lang->edit->align_justify = 'Align Justify'; + $lang->edit->add_indent = 'Indent'; + $lang->edit->remove_indent = 'Outdent'; + $lang->edit->list_number = 'Orderd List'; + $lang->edit->list_bullet = 'Unordered List'; + $lang->edit->remove_format = 'Style Remover'; + $lang->edit->help_remove_format = 'Tags in selected area will be removed'; $lang->edit->help_strike_through = 'Strike will be on the words'; $lang->edit->help_align_full = 'Align left and right'; @@ -85,8 +105,8 @@ $lang->edit->help_italic = 'Make italic font'; $lang->edit->help_underline = 'Underline font'; $lang->edit->help_strike = 'Strike font'; - $lang->edit->help_sup = 'Sup'; - $lang->edit->help_sub = 'Sub'; + $lang->edit->help_sup = 'Superscript'; + $lang->edit->help_sub = 'Subscript'; $lang->edit->help_redo = 'Redo'; $lang->edit->help_undo = 'Undo'; $lang->edit->help_align_left = 'Align left'; @@ -96,7 +116,14 @@ $lang->edit->help_remove_indent = 'Remove indent'; $lang->edit->help_list_number = 'Apply number list'; $lang->edit->help_list_bullet = 'Apply bullet list'; - $lang->edit->help_use_paragrapth = 'Press Ctrl+Enter to use paragraph. (Press Alt+S to submit)'; + $lang->edit->help_use_paragraph = 'Press Ctrl+Enter to use paragraph. (Press Alt+S to submit)'; + + $lang->edit->url = 'URL'; + $lang->edit->blockquote = 'Blockquote'; + $lang->edit->table = 'Table'; + $lang->edit->image = 'Image'; + $lang->edit->multimedia = 'Movie'; + $lang->edit->emoticon = 'Emoticon'; $lang->edit->upload = 'Attachment'; $lang->edit->upload_file = 'Attach'; diff --git a/modules/editor/lang/es.lang.php b/modules/editor/lang/es.lang.php index f3d575ec2..2d310ad4f 100644 --- a/modules/editor/lang/es.lang.php +++ b/modules/editor/lang/es.lang.php @@ -25,7 +25,7 @@ $lang->msg_component_is_inserted = 'El componente seleccionado ya esta insertado'; $lang->msg_component_is_first_order = 'El componente seleccionado se localiza en la primera posición'; $lang->msg_component_is_last_order = 'El componente seleccionado se localiza en la última posición'; - $lang->msg_load_saved_doc = 'Existe un documento guardado automáticamente ¿desea recuperarlo ?\nDespués de guardar el documento escrito, el documento autoguardado sera eliminado.'; + $lang->msg_load_saved_doc = "Existe un documento guardado automáticamente ¿desea recuperarlo ?\nDespués de guardar el documento escrito, el documento autoguardado sera eliminado."; $lang->msg_auto_saved = 'Documento guardado automáticamente'; $lang->cmd_disable = 'Desactivado'; @@ -52,15 +52,15 @@ $lang->edit->fontsize = 'Tamaño'; $lang->edit->use_paragraph = 'Párrafo'; $lang->edit->fontlist = array( - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = 'Estilo'; @@ -75,6 +75,26 @@ $lang->edit->submit = 'Confirmar'; + $lang->edit->fontcolor = 'Text Color'; + $lang->edit->fontbgcolor = 'Background Color'; + $lang->edit->bold = 'Bold'; + $lang->edit->italic = 'Italic'; + $lang->edit->underline = 'Underline'; + $lang->edit->strike = 'Strike'; + $lang->edit->sup = 'Sup'; + $lang->edit->sub = 'Sub'; + $lang->edit->redo = 'Re Do'; + $lang->edit->undo = 'Un Do'; + $lang->edit->align_left = 'Align Left'; + $lang->edit->align_center = 'Align Center'; + $lang->edit->align_right = 'Align Right'; + $lang->edit->align_justify = 'Align Justify'; + $lang->edit->add_indent = 'Indent'; + $lang->edit->remove_indent = 'Outdent'; + $lang->edit->list_number = 'Orderd List'; + $lang->edit->list_bullet = 'Unordered List'; + $lang->edit->remove_format = 'Style Remover'; + $lang->edit->help_fontcolor = 'Selecciona el color de las letras'; $lang->edit->help_fontbgcolor = 'Selecciona el color del fondo de la letras'; $lang->edit->help_bold = 'Letra gruesa'; @@ -92,7 +112,14 @@ $lang->edit->help_remove_indent = 'Quitar tabulación'; $lang->edit->help_list_number = 'Aplicar la lista con números'; $lang->edit->help_list_bullet = 'Aplicar la lista con símbolos'; - $lang->edit->help_use_paragrapth = 'Presiona Ctrl+Enter para usar el párrafo (Presiona Alt+S para guardar)'; + $lang->edit->help_use_paragraph = 'Presiona Ctrl+Enter para usar el párrafo (Presiona Alt+S para guardar)'; + + $lang->edit->url = 'URL'; + $lang->edit->blockquote = 'Blockquote'; + $lang->edit->table = 'Table'; + $lang->edit->image = 'Image'; + $lang->edit->multimedia = 'Movie'; + $lang->edit->emoticon = 'Emoticon'; $lang->edit->upload = 'Adjuntar'; $lang->edit->upload_file = 'Archivo adjunto'; diff --git a/modules/editor/lang/fr.lang.php b/modules/editor/lang/fr.lang.php index d0a009d26..94218b65e 100644 --- a/modules/editor/lang/fr.lang.php +++ b/modules/editor/lang/fr.lang.php @@ -25,7 +25,7 @@ $lang->msg_component_is_inserted = 'Composant choisi est déjà entré'; $lang->msg_component_is_first_order = 'Composant choisi est localisé à la première position'; $lang->msg_component_is_last_order = 'Composant choisi est localisé à la position dernière'; - $lang->msg_load_saved_doc = 'Il y a un article conservé automatiquement. Voulez-vous le réstaurer?\nL\'esquisse conservé automatiquement va être débarrasser après conserver l\'article courant.'; + $lang->msg_load_saved_doc = "Il y a un article conservé automatiquement. Voulez-vous le réstaurer?\nL'esquisse conservé automatiquement va être débarrasser après conserver l'article courant."; $lang->msg_auto_saved = 'Conservé automatiquement'; $lang->cmd_disable = 'Invalider'; @@ -52,15 +52,15 @@ $lang->edit->fontsize = 'Mesure'; $lang->edit->use_paragraph = 'Fonctions sur Paragraphe'; $lang->edit->fontlist = array( - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = 'Style'; @@ -75,6 +75,26 @@ $lang->edit->submit = 'Soumettre'; + $lang->edit->fontcolor = 'Text Color'; + $lang->edit->fontbgcolor = 'Background Color'; + $lang->edit->bold = 'Bold'; + $lang->edit->italic = 'Italic'; + $lang->edit->underline = 'Underline'; + $lang->edit->strike = 'Strike'; + $lang->edit->sup = 'Sup'; + $lang->edit->sub = 'Sub'; + $lang->edit->redo = 'Re Do'; + $lang->edit->undo = 'Un Do'; + $lang->edit->align_left = 'Align Left'; + $lang->edit->align_center = 'Align Center'; + $lang->edit->align_right = 'Align Right'; + $lang->edit->align_justify = 'Align Justify'; + $lang->edit->add_indent = 'Indent'; + $lang->edit->remove_indent = 'Outdent'; + $lang->edit->list_number = 'Orderd List'; + $lang->edit->list_bullet = 'Unordered List'; + $lang->edit->remove_format = 'Style Remover'; + $lang->edit->help_remove_format = 'Supprimer les balises dans l\'endroit sélectionné'; $lang->edit->help_strike_through = 'Représenter la ligne d\'annulation sur les lettres.'; $lang->edit->help_align_full = 'Aligner pleinement selon largeur'; @@ -96,7 +116,14 @@ $lang->edit->help_remove_indent = 'Enlever un Rentré'; $lang->edit->help_list_number = 'Appliquer la liste numroté'; $lang->edit->help_list_bullet = 'Appliquer la liste à puces'; - $lang->edit->help_use_paragrapth = 'Appuyez Ctrl+Enter pour séparer les paragraphe. (Appuyez Alt+S pour conserver)'; + $lang->edit->help_use_paragraph = 'Appuyez Ctrl+Enter pour séparer les paragraphe. (Appuyez Alt+S pour conserver)'; + + $lang->edit->url = 'URL'; + $lang->edit->blockquote = 'Blockquote'; + $lang->edit->table = 'Table'; + $lang->edit->image = 'Image'; + $lang->edit->multimedia = 'Movie'; + $lang->edit->emoticon = 'Emoticon'; $lang->edit->upload = 'Attacher'; $lang->edit->upload_file = 'Attacher un(des) Fichier(s)'; diff --git a/modules/editor/lang/jp.lang.php b/modules/editor/lang/jp.lang.php index 637903bd1..8dc64b532 100644 --- a/modules/editor/lang/jp.lang.php +++ b/modules/editor/lang/jp.lang.php @@ -25,7 +25,7 @@ $lang->msg_component_is_inserted = '選択されたコンポーネントは既に入力されています。'; $lang->msg_component_is_first_order = '選択されたコンポーネントは最初に位置しています。'; $lang->msg_component_is_last_order = '選択されたコンポーネントは最後に位置しています。'; - $lang->msg_load_saved_doc = '自動保存された書き込みがあります。復旧しますか?\n書き終わってから登録すると前の自動保存データは削除されます。'; + $lang->msg_load_saved_doc = "自動保存された書き込みがあります。復旧しますか?\n書き終わってから登録すると前の自動保存データは削除されます。"; $lang->msg_auto_saved = '自動保存されました。'; $lang->cmd_disable = '未使用'; @@ -37,33 +37,33 @@ $lang->enable_component_grant = 'コンポーネント使用権限'; $lang->enable_html_grant = 'HTML編集権限'; $lang->enable_autosave = '自動保存使用'; - $lang->height_resizable = '高さの調節'; + $lang->height_resizable = '高さの調整'; $lang->editor_height = 'エディターの高さ'; $lang->about_editor_skin = 'エディターのスキンの選択が出来ます。'; $lang->about_upload_file_grant = 'ファイル添付可能な権限の設定が出来ます。(選択なしの場合、誰でも添付が可能)'; $lang->about_default_component_grant = 'エディターでの基本コンポーネントを使用可能な権限の設定が出来ます。(選択なしの場合、誰でも利用可能)'; $lang->about_editor_height = 'エディターの基本高さを設定します。'; - $lang->about_editor_height_resizable = 'エディターの高さを直接変更出来るようにします。'; - $lang->about_enable_html_grant = 'HTML編集権限を付与します。'; + $lang->about_editor_height_resizable = 'エディターの高さを変更出来るようにします。'; + $lang->about_enable_html_grant = 'HTML編集権限を設定します。'; $lang->about_enable_autosave = '書き込みのとき、自動保存機能をオンにします。'; $lang->edit->fontname = 'フォント'; $lang->edit->fontsize = 'フォントサイズ'; $lang->edit->use_paragraph = '段落機能'; $lang->edit->fontlist = array( - 'MS Pゴシック', - 'MS P明朝', - 'MS UI Gothic', - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + 'MS PGothic'=>'MS Pゴシック', + 'MS PMincho'=>'MS P明朝', + 'MS UI Gothic'=>'MS UI Gothic', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = '見出し'; @@ -78,6 +78,26 @@ $lang->edit->submit = '送信'; + $lang->edit->fontcolor = 'テキストの色'; + $lang->edit->fontbgcolor = 'ハイライト カラー'; + $lang->edit->bold = '太字'; + $lang->edit->italic = '斜体'; + $lang->edit->underline = '下線'; + $lang->edit->strike = '取り消し線'; + $lang->edit->sup = '上付き文字'; + $lang->edit->sub = '下付き文字'; + $lang->edit->redo = '繰り返し'; + $lang->edit->undo = '元に戻す'; + $lang->edit->align_left = '左揃え'; + $lang->edit->align_center = '中央揃え'; + $lang->edit->align_right = '右揃え'; + $lang->edit->align_justify = '均等割付'; + $lang->edit->add_indent = 'インデント増'; + $lang->edit->remove_indent = 'インデント減'; + $lang->edit->list_number = '番号付リスト'; + $lang->edit->list_bullet = '箇条書き'; + $lang->edit->remove_format = '書式をクリア'; + $lang->edit->help_remove_format = '選択領域の中のタグを消します。'; $lang->edit->help_strike_through = 'テキストに取り消し線を表示します。'; $lang->edit->help_align_full = '左右の余白に合わせて文字列を配置します。'; @@ -88,8 +108,8 @@ $lang->edit->help_italic = 'テキストを斜体にします。'; $lang->edit->help_underline = 'テキストに下線(アンダーライン)を引きます。'; $lang->edit->help_strike = '取り消し線を引きます。'; - $lang->edit->help_sup = 'Sup'; - $lang->edit->help_sub = 'Sub'; + $lang->edit->help_sup = '上付き文字'; + $lang->edit->help_sub = '下付き文字'; $lang->edit->help_redo = '繰り返し'; $lang->edit->help_undo = '元に戻す'; $lang->edit->help_align_left = 'テキストを左揃えで表示します。'; @@ -97,9 +117,16 @@ $lang->edit->help_align_right = 'テキストを右揃えで表示します。'; $lang->edit->help_add_indent = 'インデントを増やします。'; $lang->edit->help_remove_indent = 'インデントを減らします。'; - $lang->edit->help_list_number = '段落番号'; + $lang->edit->help_list_number = '番号付リスト'; $lang->edit->help_list_bullet = '箇条書き'; - $lang->edit->help_use_paragrapth = '段落機能を使用する場合は、「Ctrl+Enter」を押します(書き終わった後、「Alt+S」を押すと保存されます)。'; + $lang->edit->help_use_paragraph = '段落機能を使用する場合は、「Ctrl+Enter」を押します(書き終わった後、「Alt+S」を押すと保存されます)。'; + + $lang->edit->url = 'リンク'; + $lang->edit->blockquote = '引用文'; + $lang->edit->table = '表'; + $lang->edit->image = 'イメージ'; + $lang->edit->multimedia = '動画'; + $lang->edit->emoticon = '絵文字'; $lang->edit->upload = '添付'; $lang->edit->upload_file = 'ファイル添付'; @@ -120,6 +147,4 @@ $lang->edit->help = 'ヘルプ'; $lang->edit->help_command = 'ショートカット‐キーの説明'; - - ?> diff --git a/modules/editor/lang/ko.lang.php b/modules/editor/lang/ko.lang.php index 4022e5119..a60c9579a 100644 --- a/modules/editor/lang/ko.lang.php +++ b/modules/editor/lang/ko.lang.php @@ -19,14 +19,14 @@ $lang->about_component = '컴포넌트 소개'; $lang->about_component_grant = '기본 컴포넌트외의 확장 컴포넌트 기능을 사용할 수 있는 권한을 지정할 수 있습니다.
(모두 해제시 아무나 사용 가능합니다)'; - $lang->about_component_mid = '에디터 컴포넌트가 사용될 대상을 지정할 수 있습니다.
(모두 해제시 모든 대상에서 사용 가능합니다)'; + $lang->about_component_mid = '에디터 컴포넌트가 사용될 대상을 지정할 수 있습니다.
(모두 해제 시 모든 대상에서 사용 가능합니다)'; - $lang->msg_component_is_not_founded = '%s 에디터 컴포넌트를 찾을 수 없습니다'; - $lang->msg_component_is_inserted = '선택하신 컴포넌트는 이미 입력되어 있습니다'; - $lang->msg_component_is_first_order = '선택하신 컴포넌트는 첫번째에 위치하고 있습니다'; - $lang->msg_component_is_last_order = '선택하신 컴포넌트는 마지막에 위치하고 있습니다'; - $lang->msg_load_saved_doc = "자동저장된 글이 있습니다. 복구하시겠습니까?\n글을 다 쓰신 후 저장하시면 자동저장본은 사라집니다"; - $lang->msg_auto_saved = "자동 저장되었습니다"; + $lang->msg_component_is_not_founded = '%s 에디터 컴포넌트를 찾을 수 없습니다.'; + $lang->msg_component_is_inserted = '선택하신 컴포넌트는 이미 입력되어 있습니다.'; + $lang->msg_component_is_first_order = '선택하신 컴포넌트는 첫번째에 위치하고 있습니다.'; + $lang->msg_component_is_last_order = '선택하신 컴포넌트는 마지막에 위치하고 있습니다.'; + $lang->msg_load_saved_doc = "자동 저장된 글이 있습니다. 복구하시겠습니까?\n글을 다 쓰신 후 저장하시면 자동 저장본은 사라집니다."; + $lang->msg_auto_saved = "자동 저장되었습니다."; $lang->cmd_disable = "비활성"; $lang->cmd_enable = "활성"; @@ -41,29 +41,29 @@ $lang->editor_height = '에디터 높이'; $lang->about_editor_skin = '에디터 스킨을 선택하실 수 있습니다'; - $lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다 (모두 해제시 아무나 첨부 가능합니다)'; - $lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제시 아무나 사용 가능합니다)'; - $lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다'; - $lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다'; + $lang->about_upload_file_grant = '파일을 첨부할 수 있는 권한을 지정하실 수 있습니다. (모두 해제 시 아무나 첨부 가능합니다)'; + $lang->about_default_component_grant = '에디터에서 사용되는 기본 컴포넌트를 사용할 수 있는 권한을 지정할 수 있습니다. (모두 해제 시 아무나 사용 가능합니다)'; + $lang->about_editor_height = '에디터의 기본 높이를 지정하실 수 있습니다.'; + $lang->about_editor_height_resizable = '에디터의 높이를 직접 변경할 수 있도록 허용합니다.'; $lang->about_enable_html_grant = 'HTML편집 권한을 부여할 수 있습니다.'; - $lang->about_enable_autosave = '글작성시 자동 저장 기능을 활성화 시킬 수 있습니다'; + $lang->about_enable_autosave = '글 작성시 자동 저장 기능을 활성화 시킬 수 있습니다.'; $lang->edit->fontname = '글꼴'; $lang->edit->fontsize = '크기'; $lang->edit->use_paragraph = '문단기능'; $lang->edit->fontlist = array( - 'Dotum', - 'Gulim', - 'Batang', - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + 'Dotum' => '돋움', + 'Gulim' => '굴림', + 'Batang' => '바탕', + 'Arial' => 'Arial', + 'Arial Black' => 'Arial Black', + 'Tahoma' => 'Tahoma', + 'Verdana' => 'Verdana', + 'Sans-serif' => 'Sans-serif', + 'Serif' => 'Serif', + 'Monospace' => 'Monospace', + 'Cursive' => 'Cursive', + 'Fantasy' => 'Fantasy', ); $lang->edit->header = '형식'; @@ -78,28 +78,55 @@ $lang->edit->submit = '확인'; - $lang->edit->help_remove_format = '선택된 영역 내의 태그를 지웁니다'; - $lang->edit->help_strike_through = '글자에 취소선을 표시합니다'; - $lang->edit->help_align_full = '좌우 폭에 맞게 정렬을 합니다'; + $lang->edit->fontcolor = '글자 색'; + $lang->edit->fontbgcolor = '글자 배경색'; + $lang->edit->bold = '진하게'; + $lang->edit->italic = '기울임'; + $lang->edit->underline = '밑줄'; + $lang->edit->strike = '취소선'; + $lang->edit->sup = '위 첨자'; + $lang->edit->sub = '아래 첨자'; + $lang->edit->redo = '다시 실행'; + $lang->edit->undo = '되돌리기'; + $lang->edit->align_left = '왼쪽 정렬'; + $lang->edit->align_center = '가운데 정렬'; + $lang->edit->align_right = '오른쪽 정렬'; + $lang->edit->align_justify = '양쪽 정렬'; + $lang->edit->add_indent = '들여쓰기'; + $lang->edit->remove_indent = '내어쓰기'; + $lang->edit->list_number = '번호 매기기'; + $lang->edit->list_bullet = '목록'; + $lang->edit->remove_format = '글맵시 지우기'; - $lang->edit->help_fontcolor = '글자의 색상을 지정합니다'; - $lang->edit->help_fontbgcolor = '글자의 배경색상을 지정합니다'; - $lang->edit->help_bold = '글자를 진하게 합니다'; - $lang->edit->help_italic = '글자를 기울이게 합니다'; - $lang->edit->help_underline = '밑줄을 긋습니다'; - $lang->edit->help_strike = '취소선을 긋습니다'; - $lang->edit->help_sup = '윗첨자를 입력합니다.'; - $lang->edit->help_sub = '아랫첨자를 입력합니다.'; - $lang->edit->help_redo = '다음 동작으로 돌아갑니다'; - $lang->edit->help_undo = '이전 동작으로 돌아갑니다'; - $lang->edit->help_align_left = '왼쪽 정렬을 합니다'; - $lang->edit->help_align_center = '가운데 정렬을 합니다'; - $lang->edit->help_align_right = '오른쪽 정렬을 합니다'; - $lang->edit->help_add_indent = '들여쓰기를 합니다'; - $lang->edit->help_remove_indent = '들여쓰기를 제거합니다'; - $lang->edit->help_list_number = '숫자로된 목록을 적용합니다'; - $lang->edit->help_list_bullet = '기호로된 목록을 적용합니다'; - $lang->edit->help_use_paragrapth = '문단 나누기를 하시려면 ctrl-엔터를 누르시면 됩니다. (글 작성완료후 alt-S를 누르면 저장이 됩니다)'; + $lang->edit->help_remove_format = '선택된 영역 내의 태그를 지웁니다.'; + $lang->edit->help_strike_through = '글자에 취소선을 표시합니다.'; + $lang->edit->help_align_full = '좌우 폭에 맞게 정렬을 합니다.'; + + $lang->edit->help_fontcolor = '글자의 색상을 지정합니다.'; + $lang->edit->help_fontbgcolor = '글자의 배경색상을 지정합니다.'; + $lang->edit->help_bold = '글자를 진하게 합니다.'; + $lang->edit->help_italic = '글자를 기울이게 합니다.'; + $lang->edit->help_underline = '밑줄을 긋습니다.'; + $lang->edit->help_strike = '취소선을 긋습니다.'; + $lang->edit->help_sup = '위 첨자를 입력합니다.'; + $lang->edit->help_sub = '아래 첨자를 입력합니다.'; + $lang->edit->help_redo = '다음 동작으로 돌아갑니다.'; + $lang->edit->help_undo = '이전 동작으로 돌아갑니다.'; + $lang->edit->help_align_left = '왼쪽 정렬을 합니다.'; + $lang->edit->help_align_center = '가운데 정렬을 합니다.'; + $lang->edit->help_align_right = '오른쪽 정렬을 합니다.'; + $lang->edit->help_add_indent = '단락의 들여쓰기 수준을 높입니다.'; + $lang->edit->help_remove_indent = '단락의 들여쓰기 수준을 낮춥니다.'; + $lang->edit->help_list_number = '숫자로된 목록을 적용합니다.'; + $lang->edit->help_list_bullet = '기호로된 목록을 적용합니다.'; + $lang->edit->help_use_paragraph = '문단 나누기를 하시려면 Ctrl+Enter를 누르시면 됩니다. (글 작성완료 후 Alt+S를 누르면 저장이 됩니다.)'; + + $lang->edit->url = '링크'; + $lang->edit->blockquote = '인용문'; + $lang->edit->table = '표'; + $lang->edit->image = '그림'; + $lang->edit->multimedia = '동영상'; + $lang->edit->emoticon = '이모티콘'; $lang->edit->upload = '첨부'; $lang->edit->upload_file = '파일 첨부'; @@ -111,7 +138,7 @@ $lang->edit->icon_align_middle = '가운데 정렬'; $lang->edit->icon_align_right = '글의 우측으로'; - $lang->about_dblclick_in_editor = '배경, 글자, 이미지, 인용문등에서 더블클릭을 하시면 상세한 컴포넌트 설정이 가능합니다'; + $lang->about_dblclick_in_editor = '배경, 글자, 이미지, 인용문등에서 더블클릭을 하시면 상세한 컴포넌트 설정이 가능합니다.'; $lang->edit->rich_editor = '스타일 편집기'; @@ -120,6 +147,4 @@ $lang->edit->help = '도움말'; $lang->edit->help_command = '단축키 안내'; - - ?> diff --git a/modules/editor/lang/ru.lang.php b/modules/editor/lang/ru.lang.php index cf734574f..7a7671421 100644 --- a/modules/editor/lang/ru.lang.php +++ b/modules/editor/lang/ru.lang.php @@ -25,7 +25,7 @@ $lang->msg_component_is_inserted = 'Выбранный компонент уже присутствует'; $lang->msg_component_is_first_order = 'Выбранный компонент находится на первой позиции'; $lang->msg_component_is_last_order = 'Выбранный компонент находится на последней позиции'; - $lang->msg_load_saved_doc = 'Существует автоматически сохраненная статья. Хотите ли Вы ее восстановить?\nАвтоматически сохраненный черновик будет отменен после сохранения текущей статьи'; + $lang->msg_load_saved_doc = "Существует автоматически сохраненная статья. Хотите ли Вы ее восстановить?\nАвтоматически сохраненный черновик будет отменен после сохранения текущей статьи"; $lang->msg_auto_saved = 'Автоматически сохранено'; $lang->cmd_disable = 'Неавтивно'; @@ -52,15 +52,15 @@ $lang->edit->fontsize = 'Размер'; $lang->edit->use_paragraph = 'Функции параграфа'; $lang->edit->fontlist = array( - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = 'Стиль'; @@ -75,6 +75,26 @@ $lang->edit->submit = 'Принять'; + $lang->edit->fontcolor = 'Text Color'; + $lang->edit->fontbgcolor = 'Background Color'; + $lang->edit->bold = 'Bold'; + $lang->edit->italic = 'Italic'; + $lang->edit->underline = 'Underline'; + $lang->edit->strike = 'Strike'; + $lang->edit->sup = 'Sup'; + $lang->edit->sub = 'Sub'; + $lang->edit->redo = 'Re Do'; + $lang->edit->undo = 'Un Do'; + $lang->edit->align_left = 'Align Left'; + $lang->edit->align_center = 'Align Center'; + $lang->edit->align_right = 'Align Right'; + $lang->edit->align_justify = 'Align Justify'; + $lang->edit->add_indent = 'Indent'; + $lang->edit->remove_indent = 'Outdent'; + $lang->edit->list_number = 'Orderd List'; + $lang->edit->list_bullet = 'Unordered List'; + $lang->edit->remove_format = 'Style Remover'; + $lang->edit->help_fontcolor = 'Выберать цвет шрифта'; $lang->edit->help_fontbgcolor = 'Выберать цвет фона шрифта'; $lang->edit->help_bold = 'Сделать шрифт жирным'; @@ -92,7 +112,14 @@ $lang->edit->help_remove_indent = 'Удалить отступ'; $lang->edit->help_list_number = 'Применить числовой список'; $lang->edit->help_list_bullet = 'Применить маркированный список'; - $lang->edit->help_use_paragrapth = 'Нажмите Ctrl+Enter, чтобы отметить параграф. (Нажмите Alt+S , чтобы сохранить)'; + $lang->edit->help_use_paragraph = 'Нажмите Ctrl+Enter, чтобы отметить параграф. (Нажмите Alt+S , чтобы сохранить)'; + + $lang->edit->url = 'URL'; + $lang->edit->blockquote = 'Blockquote'; + $lang->edit->table = 'Table'; + $lang->edit->image = 'Image'; + $lang->edit->multimedia = 'Movie'; + $lang->edit->emoticon = 'Emoticon'; $lang->edit->upload = 'Вложение'; $lang->edit->upload_file = 'Вложить'; diff --git a/modules/editor/lang/zh-CN.lang.php b/modules/editor/lang/zh-CN.lang.php index 54c427b5e..9f3c4888c 100644 --- a/modules/editor/lang/zh-CN.lang.php +++ b/modules/editor/lang/zh-CN.lang.php @@ -25,7 +25,7 @@ $lang->msg_component_is_inserted = '您选择的组件已插入!'; $lang->msg_component_is_first_order = '您选择的组件已到最上端位置!'; $lang->msg_component_is_last_order = '您选择的组件已到最下端位置!'; - $lang->msg_load_saved_doc = '有自动保存的内容, 确定要恢复吗?\n保存内容后,自动保存的文本将会被删除。'; + $lang->msg_load_saved_doc = "有自动保存的内容, 确定要恢复吗?\n保存内容后,自动保存的文本将会被删除。"; $lang->msg_auto_saved = '已自动保存!'; $lang->cmd_disable = '非激活'; @@ -52,19 +52,19 @@ $lang->edit->fontsize = '大小'; $lang->edit->use_paragraph = '段落功能'; $lang->edit->fontlist = array( - '仿宋_GB2312', - '黑体', - '楷体_GB2312', - '宋体', - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + '仿宋_GB2312'=>'仿宋_GB2312', + '黑体'=>'黑体', + '楷体_GB2312'=>'楷体_GB2312', + '宋体'=>'宋体', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = '样式'; @@ -79,6 +79,26 @@ $lang->edit->submit = '确认'; + $lang->edit->fontcolor = 'Text Color'; + $lang->edit->fontbgcolor = 'Background Color'; + $lang->edit->bold = 'Bold'; + $lang->edit->italic = 'Italic'; + $lang->edit->underline = 'Underline'; + $lang->edit->strike = 'Strike'; + $lang->edit->sup = 'Sup'; + $lang->edit->sub = 'Sub'; + $lang->edit->redo = 'Re Do'; + $lang->edit->undo = 'Un Do'; + $lang->edit->align_left = 'Align Left'; + $lang->edit->align_center = 'Align Center'; + $lang->edit->align_right = 'Align Right'; + $lang->edit->align_justify = 'Align Justify'; + $lang->edit->add_indent = 'Indent'; + $lang->edit->remove_indent = 'Outdent'; + $lang->edit->list_number = 'Orderd List'; + $lang->edit->list_bullet = 'Unordered List'; + $lang->edit->remove_format = 'Style Remover'; + $lang->edit->help_fontcolor = '文本颜色'; $lang->edit->help_fontbgcolor = '背景颜色'; $lang->edit->help_bold = '粗体'; @@ -96,7 +116,14 @@ $lang->edit->help_remove_indent = '清除缩进'; $lang->edit->help_list_number = '有序列表'; $lang->edit->help_list_bullet = '无序列表'; - $lang->edit->help_use_paragrapth = '分段请按 ctrl+回车. (发表主题快捷键:alt+S)'; + $lang->edit->help_use_paragraph = '分段请按 ctrl+回车. (发表主题快捷键:alt+S)'; + + $lang->edit->url = 'URL'; + $lang->edit->blockquote = 'Blockquote'; + $lang->edit->table = 'Table'; + $lang->edit->image = 'Image'; + $lang->edit->multimedia = 'Movie'; + $lang->edit->emoticon = 'Emoticon'; $lang->edit->upload = '上传'; $lang->edit->upload_file = '上传附件'; diff --git a/modules/editor/lang/zh-TW.lang.php b/modules/editor/lang/zh-TW.lang.php index d54676e75..2ac4f735e 100644 --- a/modules/editor/lang/zh-TW.lang.php +++ b/modules/editor/lang/zh-TW.lang.php @@ -25,7 +25,7 @@ $lang->msg_component_is_inserted = '您選擇的組件已插入!'; $lang->msg_component_is_first_order = '您選擇的組件已達最頂端位置!'; $lang->msg_component_is_last_order = '您選擇的組件已達最底端位置!'; - $lang->msg_load_saved_doc = '有自動儲存的內容,確定要恢復嗎?\n儲存內容後,自動儲存的內容將會被刪除。'; + $lang->msg_load_saved_doc = "有自動儲存的內容,確定要恢復嗎?\n儲存內容後,自動儲存的內容將會被刪除。"; $lang->msg_auto_saved = '已自動儲存!'; $lang->cmd_disable = '暫停'; @@ -52,18 +52,18 @@ $lang->edit->fontsize = '大小'; $lang->edit->use_paragraph = '段落功能'; $lang->edit->fontlist = array( - '新細明體', - '標楷體', - '細明體', - 'Arial', - 'Arial Black', - 'Tahoma', - 'Verdana', - 'Sans-serif', - 'Serif', - 'Monospace', - 'Cursive', - 'Fantasy', + '新細明體'=>'新細明體', + '標楷體'=>'標楷體', + '細明體'=>'細明體', + 'Arial'=>'Arial', + 'Arial Black'=>'Arial Black', + 'Tahoma'=>'Tahoma', + 'Verdana'=>'Verdana', + 'Sans-serif'=>'Sans-serif', + 'Serif'=>'Serif', + 'Monospace'=>'Monospace', + 'Cursive'=>'Cursive', + 'Fantasy'=>'Fantasy', ); $lang->edit->header = '樣式'; @@ -78,6 +78,26 @@ $lang->edit->submit = '確認'; + $lang->edit->fontcolor = 'Text Color'; + $lang->edit->fontbgcolor = 'Background Color'; + $lang->edit->bold = 'Bold'; + $lang->edit->italic = 'Italic'; + $lang->edit->underline = 'Underline'; + $lang->edit->strike = 'Strike'; + $lang->edit->sup = 'Sup'; + $lang->edit->sub = 'Sub'; + $lang->edit->redo = 'Re Do'; + $lang->edit->undo = 'Un Do'; + $lang->edit->align_left = 'Align Left'; + $lang->edit->align_center = 'Align Center'; + $lang->edit->align_right = 'Align Right'; + $lang->edit->align_justify = 'Align Justify'; + $lang->edit->add_indent = 'Indent'; + $lang->edit->remove_indent = 'Outdent'; + $lang->edit->list_number = 'Orderd List'; + $lang->edit->list_bullet = 'Unordered List'; + $lang->edit->remove_format = 'Style Remover'; + $lang->edit->help_remove_format = '移除格式'; $lang->edit->help_strike_through = '文字刪除線'; $lang->edit->help_align_full = '左右對齊'; @@ -99,7 +119,14 @@ $lang->edit->help_remove_indent = '凸排'; $lang->edit->help_list_number = '編號'; $lang->edit->help_list_bullet = '清單符號'; - $lang->edit->help_use_paragrapth = '換行請按 ctrl+backspace (快速發表主題:alt+S)'; + $lang->edit->help_use_paragraph = '換行請按 ctrl+backspace (快速發表主題:alt+S)'; + + $lang->edit->url = 'URL'; + $lang->edit->blockquote = 'Blockquote'; + $lang->edit->table = 'Table'; + $lang->edit->image = 'Image'; + $lang->edit->multimedia = 'Movie'; + $lang->edit->emoticon = 'Emoticon'; $lang->edit->upload = '上傳'; $lang->edit->upload_file = '上傳附檔'; diff --git a/modules/editor/skins/default/editor.html b/modules/editor/skins/default/editor.html index edc1741d9..c686d826d 100644 --- a/modules/editor/skins/default/editor.html +++ b/modules/editor/skins/default/editor.html @@ -1,16 +1,15 @@ - - - + + {@ $editor_class = "black" } -
+ nbr" />
+//]]> diff --git a/modules/member/member.model.php b/modules/member/member.model.php index 75e5a63c5..8e691295b 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -203,7 +203,7 @@ } /** - * @brief userid에 해당하는 member_srl을 구함 + * @brief EmailAddress에 해당하는 member_srl을 구함 **/ function getMemberSrlByEmailAddress($email_address) { $args->email_address = $email_address; @@ -212,7 +212,7 @@ } /** - * @brief userid에 해당하는 member_srl을 구함 + * @brief NickName에 해당하는 member_srl을 구함 **/ function getMemberSrlByNickName($nick_name) { $args->nick_name = $nick_name; diff --git a/modules/module/conf/module.xml b/modules/module/conf/module.xml index 7208be473..03561a901 100644 --- a/modules/module/conf/module.xml +++ b/modules/module/conf/module.xml @@ -8,6 +8,9 @@ + + + diff --git a/modules/module/lang/en.lang.php b/modules/module/lang/en.lang.php index 145475feb..63f45334a 100644 --- a/modules/module/lang/en.lang.php +++ b/modules/module/lang/en.lang.php @@ -5,6 +5,7 @@ * @brief English language pack **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "Modules List"; $lang->module_index = "Modules List"; $lang->module_category = "Module Category"; @@ -25,6 +26,7 @@ $lang->skin_license = 'License'; $lang->skin_history = 'Update history'; $lang->module_copy = "Duplicate Module"; + $lang->module_selector = "Module Selector"; $lang->header_script = "Header Script"; $lang->about_header_script = "You can input the html script between <header> and </header> by yourself.
You can use <script, <style or <meta tag"; @@ -65,4 +67,5 @@ $lang->about_module = "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(,).'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/es.lang.php b/modules/module/lang/es.lang.php index 530eefcdb..0fcf24fb1 100644 --- a/modules/module/lang/es.lang.php +++ b/modules/module/lang/es.lang.php @@ -5,6 +5,7 @@ * @sumario Paquete del idioma español **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "Lista de Módulos"; $lang->module_index = "Lista de Módulos"; $lang->module_category = "Categoría de Módulos "; @@ -25,6 +26,7 @@ $lang->skin_license = 'License'; $lang->skin_history = 'Historia de actualización'; $lang->module_copy = "Copy Module"; + $lang->module_selector = "Module Selector"; $lang->header_script = "헤더 스크립트"; $lang->about_header_script = "html의 <header>와 </header> 사이에 들어가는 코드를 직접 입력할 수 있습니다.
<script, <style 또는 <meta 태그등을 이용하실 수 있습니다"; @@ -64,4 +66,5 @@ $lang->about_module = "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(,).'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/fr.lang.php b/modules/module/lang/fr.lang.php index 2510dfff3..f0c3c5d0f 100644 --- a/modules/module/lang/fr.lang.php +++ b/modules/module/lang/fr.lang.php @@ -5,6 +5,7 @@ * @brief Paque du langage en français pour le module de Module **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "Liste des Modules"; $lang->module_index = "Liste des Modules"; $lang->module_category = "Catégorie des Modules"; @@ -25,6 +26,7 @@ $lang->skin_license = 'Licence'; $lang->skin_history = 'Histoire des Mises à jour'; $lang->module_copy = "Copier un Module"; + $lang->module_selector = "Module Selector"; $lang->header_script = "Script en-tête"; $lang->about_header_script = "Vous pouvez entrer un script en html par vous-même entre <header> et </header>.
Vous pouvez utiliser <script, <style ou <meta tag"; @@ -64,4 +66,5 @@ $lang->about_module = "XE se compose des modules sauf la bibliothèque fondamental.\nLe module [Administration des Modules] montera tous les modules installés et vous aidera les administrer."; $lang->about_extra_vars_default_value = 'Si plusieurs valeurs sont nécessaires, vous pouvez les connecter avec la virgule(,).'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/jp.lang.php b/modules/module/lang/jp.lang.php index ba35905bb..62f78802c 100644 --- a/modules/module/lang/jp.lang.php +++ b/modules/module/lang/jp.lang.php @@ -5,6 +5,7 @@ * @brief 日本語言語パッケージ **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "モジュールリスト"; $lang->module_index = "モジュールインデックス"; $lang->module_category = "モジュールカテゴリ"; @@ -25,6 +26,7 @@ $lang->skin_license = 'License'; $lang->skin_history = '変更内容'; $lang->module_copy = "モジュールコピー"; + $lang->module_selector = "Module Selector"; $lang->header_script = "ヘッダースクリプト"; $lang->about_header_script = "HTMLの<header>と</header>の間に入れるコードを直接入力できます。
<script、<styleまたは<metaタグなどが利用できます"; @@ -65,4 +67,5 @@ $lang->about_module = "XEは、基本ライブラリの他は、すべてモジュールで構成されています。モジュール管理用のモジュールはインストールされたすべてを表示し、管理できるようにします。"; $lang->about_extra_vars_default_value = '多重・単一選択などのデフォルト値が、複数必要な場合は、「, (コンマ)」で区切って追加することができます。'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/ko.lang.php b/modules/module/lang/ko.lang.php index 61c765539..43d16c9d9 100644 --- a/modules/module/lang/ko.lang.php +++ b/modules/module/lang/ko.lang.php @@ -5,6 +5,7 @@ * @brief 한국어 언어팩 **/ + $lang->virtual_site = "가상 사이트"; $lang->module_list = "모듈 목록"; $lang->module_index = "모듈 목록"; $lang->module_category = "모듈 분류"; @@ -25,6 +26,7 @@ $lang->skin_license = '라이선스'; $lang->skin_history = '변경 이력'; $lang->module_copy = "모듈 복사"; + $lang->module_selector = "모듈 선택기"; $lang->header_script = "헤더 스크립트"; $lang->about_header_script = "html의 <head>와 </head> 사이에 들어가는 코드를 직접 입력할 수 있습니다.
<script, <style 또는 <meta 태그등을 이용하실 수 있습니다"; @@ -63,6 +65,6 @@ $lang->about_admin_id = '해당 모듈에 대해 최고 권한을 가지는 관리자를 지정할 수 있습니다.
,(콤마)로 다수 아이디 지정이 가능합니다. (관리자페이지 접근은 불가능)'; $lang->about_grant = '특정 권한의 대상을 모두 해제하시면 로그인하지 않은 회원까지 권한을 가질 수 있습니다'; $lang->about_module = "XE는 기본 라이브러리를 제외한 나머지는 모두 모듈로 구성되어 있습니다.\n모듈관리 모듈은 설치된 모든 모듈을 보여주고 관리를 도와줍니다."; - $lang->about_extra_vars_default_value = '다중/단일 선택등 기본값이 여러개가 필요한 경우 , (콤마)로 연결하시면 됩니다'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/ru.lang.php b/modules/module/lang/ru.lang.php index e66dc4757..e04148d83 100644 --- a/modules/module/lang/ru.lang.php +++ b/modules/module/lang/ru.lang.php @@ -5,6 +5,7 @@ * @brief Russian basic language pack **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "Список модулей"; $lang->module_index = "Список модулей"; $lang->module_category = "Категория модуля"; @@ -24,6 +25,7 @@ $lang->skin_author = 'Разработчик скина'; $lang->skin_license = 'License'; $lang->skin_history = 'История обновлений'; + $lang->module_selector = "Module Selector"; $lang->module_copy = "Копировать модуль"; $lang->header_script = "헤더 스크립트"; @@ -64,4 +66,5 @@ $lang->about_module = "XE состоит из модулей, за исключением базовой библиотеки.\n Управление модулем покажет все установленные модули и поможет управлять ими."; $lang->about_extra_vars_default_value = 'Если нужно несколько значений по умолчанию, разделите их запятыми(,).'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/zh-CN.lang.php b/modules/module/lang/zh-CN.lang.php index 66c1bbaea..5ffaaffdc 100644 --- a/modules/module/lang/zh-CN.lang.php +++ b/modules/module/lang/zh-CN.lang.php @@ -5,6 +5,7 @@ * @brief 简体中文语言包 **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "模块目录"; $lang->module_index = "模块目录"; $lang->module_category = "模块分类"; @@ -25,6 +26,7 @@ $lang->skin_license = '版权'; $lang->skin_history = '更新日志'; $lang->module_copy = "Copy Module"; + $lang->module_selector = "Module Selector"; $lang->header_script = "文件头部脚本"; $lang->about_header_script = "可以直接输入插入到html中<head>区的代码。
可使用<script, <style 或 <meta 等标签。"; @@ -64,4 +66,5 @@ $lang->about_module = "除基本library以外XE全部由模块组成。\n模块管理中列出所有已安装的模块,因此易于管理。"; $lang->about_extra_vars_default_value = '复选/单选缺省值需要多个时,用,(逗号)来分隔。'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/lang/zh-TW.lang.php b/modules/module/lang/zh-TW.lang.php index 7f724b1fd..217d70a78 100644 --- a/modules/module/lang/zh-TW.lang.php +++ b/modules/module/lang/zh-TW.lang.php @@ -5,6 +5,7 @@ * @brief 正體中文語言 **/ + $lang->virtual_site = "Virtual Site"; $lang->module_list = "模組列表"; $lang->module_index = "模組列表"; $lang->module_category = "模組分類"; @@ -25,6 +26,7 @@ $lang->skin_license = '版權'; $lang->skin_history = '更新事項'; $lang->module_copy = "複製模組"; + $lang->module_selector = "Module Selector"; $lang->header_script = "Header Script"; $lang->about_header_script = "可以直接輸入,並插入到 HTML的<head>之間。
可使用<script>, <style> 或 <meta> 等標籤。"; @@ -65,4 +67,5 @@ $lang->about_module = "除基本函式庫以外XE全部由模組組成。\n模組管理中列出所有已安裝的模組,因此易於管理。"; $lang->about_extra_vars_default_value = '當復選或單選的預設值需要很多個時,用 (,) 區隔。'; + $lang->about_search_virtual_site = "가상 사이트(카페XE등)의 도메인을 입력하신 후 검색하세요.
가상 사이트이외의 모듈은 내용을 비우고 검색하시면 됩니다. (http:// 는 제외)"; ?> diff --git a/modules/module/module.admin.model.php b/modules/module/module.admin.model.php new file mode 100644 index 000000000..3f80d3e99 --- /dev/null +++ b/modules/module/module.admin.model.php @@ -0,0 +1,37 @@ +module_srls = Context::get('module_srls'); + $output = executeQueryArray('module.getModulesInfo', $args); + if(!$output->toBool() || !$output->data) return new Object(); + + foreach($output->data as $key => $val) { + $list[$val->module_srl] = array('module_srl'=>$val->module_srl,'mid'=>$val->mid,'browser_title'=>$val->browser_title); + } + $modules = explode(',',$args->module_srls); + for($i=0;$iadd('id', Context::get('id')); + $this->add('module_list', $module_list); + } + } +?> diff --git a/modules/module/module.admin.view.php b/modules/module/module.admin.view.php index 59bebf5ce..752fc37b2 100644 --- a/modules/module/module.admin.view.php +++ b/modules/module/module.admin.view.php @@ -97,5 +97,83 @@ $this->setTemplateFile('copy_module'); } + /** + * @brief 모듈 선택기 + **/ + function dispModuleAdminSelectList() { + $oModuleModel = &getModel('module'); + + // virtual site의 개수를 추출 + $output = executeQuery('module.getSiteCount'); + $site_count = $output->data->count; + Context::set('site_count', $site_count); + + // 사이트 검색어 변수 설정 + $site_keyword = Context::get('site_keyword'); + + // 사이트 검색어가 없으면 현재 가상 사이트의 정보를 설정 + $args = null; + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin == 'Y') { + $query_id = 'module.getSiteModules'; + $module_category_exists = false; + if(!$site_keyword) { + $site_module_info = Context::get('site_module_info'); + if($site_module_info && $logged_info->is_admin != 'Y') { + $site_keyword = $site_module_info->domain; + $args->site_srl = (int)$site_module_info->site_srl; + Context::set('site_keyword', $site_keyword); + } else { + $query_id = 'module.getDefaultModules'; + $args->site_srl = 0; + $module_category_exists = true; + } + // 사이트 검색어가 있으면 해당 사이트(들)의 정보를 추출 + } else { + $args->site_keyword = $site_keyword; + } + } else { + $query_id = 'module.getSiteModules'; + $site_module_info = Context::get('site_module_info'); + $args->site_srl = (int)$site_module_info->site_srl; + } + + // 지정된 사이트(혹은 전체)의 module 목록을 구함 + $output = executeQueryArray($query_id, $args); + $category_list = $mid_list = array(); + if(count($output->data)) { + foreach($output->data as $key => $val) { + $module = trim($val->module); + if(!$module) continue; + + $category = $val->category; + $obj = null; + $obj->module_srl = $val->module_srl; + $obj->browser_title = $val->browser_title; + $mid_list[$module]->list[$category][$val->mid] = $obj; + } + } + + $selected_module = Context::get('selected_module'); + if(count($mid_list)) { + foreach($mid_list as $module => $val) { + if(!$selected_module) $selected_module = $module; + $xml_info = $oModuleModel->getModuleInfoXml($module); + $mid_list[$module]->title = $xml_info->title; + } + } + + Context::set('mid_list', $mid_list); + Context::set('selected_module', $selected_module); + Context::set('selected_mids', $mid_list[$selected_module]->list); + Context::set('module_category_exists', $module_category_exists); + + // 레이아웃을 팝업으로 지정 + $this->setLayoutFile('popup_layout'); + + // 템플릿 파일 지정 + $this->setTemplateFile('module_selector'); + } + } ?> diff --git a/modules/module/module.class.php b/modules/module/module.class.php index 0a2c9dbfb..6e00c5360 100644 --- a/modules/module/module.class.php +++ b/modules/module/module.class.php @@ -113,6 +113,21 @@ return new Object(0, 'success_updated'); } + /** + * @brief Action중 Admin이 들어갔을 경우 권한 체크 + **/ + function checkAdminActionGrant() { + if(!Context::get('is_logged')) return false; + + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin=='Y') return true; + + $oModuleModel = &getModel('module'); + if($oModuleModel->isSiteAdmin()) return true; + + return false; + } + /** * @brief 캐시 파일 재생성 **/ diff --git a/modules/module/queries/getDefaultModules.xml b/modules/module/queries/getDefaultModules.xml new file mode 100644 index 000000000..dd847508e --- /dev/null +++ b/modules/module/queries/getDefaultModules.xml @@ -0,0 +1,26 @@ + + + +
+ + + +
+
+ + + + + + + + + + + + + + + + +
diff --git a/modules/module/queries/getSiteCount.xml b/modules/module/queries/getSiteCount.xml new file mode 100644 index 000000000..3a4de8838 --- /dev/null +++ b/modules/module/queries/getSiteCount.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/module/queries/getSiteModules.xml b/modules/module/queries/getSiteModules.xml new file mode 100644 index 000000000..9d34a6a12 --- /dev/null +++ b/modules/module/queries/getSiteModules.xml @@ -0,0 +1,23 @@ + + +
+
+ + + + + + + + + + + + + + + + + + + diff --git a/modules/module/tpl/js/module_admin.js b/modules/module/tpl/js/module_admin.js index 8c4143694..d6731da6c 100644 --- a/modules/module/tpl/js/module_admin.js +++ b/modules/module/tpl/js/module_admin.js @@ -56,3 +56,18 @@ function completeCopyModule() { if(typeof(opener)!='undefined') opener.location.href = opener.location.href; window.close(); } + +/* 모듈 선택기에서 선택된 모듈의 입력 */ +function insertModule(id, module_srl, mid, browser_title, multi_select) { + if(typeof(multi_select)=='undefined') multi_select = true; + if(!window.opener) window.close(); + + if(multi_select) { + if(typeof(opener.insertSelectedModules)=='undefined') return; + opener.insertSelectedModules(id, module_srl, mid, browser_title); + } else { + if(typeof(opener.insertSelectedModule)=='undefined') return; + opener.insertSelectedModule(id, module_srl, mid, browser_title); + window.close(); + } +} diff --git a/modules/module/tpl/module_info.html b/modules/module/tpl/module_info.html index 11f672569..34181d1ad 100644 --- a/modules/module/tpl/module_info.html +++ b/modules/module/tpl/module_info.html @@ -13,7 +13,7 @@ @@ -37,11 +37,12 @@ - + +
{$lang->author}
- {$author->name} ({$author->homepage}, {$author->email_address})
+ {$author->name} ({$author->homepage}, {$author->email_address})
{$lang->description}
{nl2br(trim($module_info->description))}
diff --git a/modules/module/tpl/module_list.html b/modules/module/tpl/module_list.html index badc09176..c76b9cef0 100644 --- a/modules/module/tpl/module_list.html +++ b/modules/module/tpl/module_list.html @@ -24,7 +24,7 @@ {$val->version} - {$author->name} + {$author->name} diff --git a/modules/module/tpl/module_selector.html b/modules/module/tpl/module_selector.html new file mode 100644 index 000000000..8f5e459fd --- /dev/null +++ b/modules/module/tpl/module_selector.html @@ -0,0 +1,80 @@ + + +
+

{$lang->module_selector}

+
+ +
+
+ + + + + + + + + + + + + + + + + +
{$lang->virtual_site}
+ +

{$lang->about_search_virtual_site}

+
{$lang->module}
+ +
+ + + + + + + + + + + + + + + {@ $_idx =0; } + + + + + + + {@ $_idx ++; } + + + + + + + + + + + + + + + +
{$lang->module_category}
{$lang->mid}
{$lang->browser_title}
{$type=='single'?$lang->cmd_select:$lang->cmd_insert}
{$key} 
{$k}{$v->browser_title}browser_title)}',{$type=='single'?'false':'true'}); return false;" class="button green">{$type=='single'?$lang->cmd_select:$lang->cmd_insert}
{$k}{$v->browser_title}browser_title)}',{$type=='single'?'false':'true'}); return false;" class="button green">{$type=='single'?$lang->cmd_select:$lang->cmd_insert}
+
+
+ +
+ +
+ diff --git a/modules/module/tpl/skin_info.html b/modules/module/tpl/skin_info.html index 41f90128d..9a99722f6 100644 --- a/modules/module/tpl/skin_info.html +++ b/modules/module/tpl/skin_info.html @@ -15,7 +15,7 @@ - {$author->name} ({$author->homepage}, {$author->email_address})
+ {$author->name} ({$author->homepage}, {$author->email_address})
@@ -40,10 +40,12 @@ + {$lang->description} {nl2br(trim($skin_info->description))} + diff --git a/modules/opage/opage.controller.php b/modules/opage/opage.controller.php index 177b663fb..b6599c748 100644 --- a/modules/opage/opage.controller.php +++ b/modules/opage/opage.controller.php @@ -71,11 +71,11 @@ if(substr($path,-1)!='/') $path.='/'; $this->target_path = $path; - // element의 속성중 value에 " 로 안 묶여 있는 것을 검사하여 묶어줌 - $content = preg_replace_callback('/([^=^"^ ]*)=([^ ^>]*)/i', fixQuotation, $content); + // element의 속성중 value에 " 로 안 묶여 있는 것을 검사하여 묶어줌 - 에러날 수 있음 ex) window.open('*','*','width=320, height=240 ,left=100,top=100') + //$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); + $content = preg_replace_callback('!<(script|link|a|img|input|iframe)([^>]*)(href|src)=[\'"](.*?)[\'"]!is', array($this, '_replaceSrc'), $content); // background:url의 값 변경 $content = preg_replace_callback('!url\((.*?)\)!is', array($this, '_replaceBackgroundUrl'), $content); @@ -90,7 +90,7 @@ if(substr($href,0,1)=='/') $href = substr($href,1); $href = $this->target_path.$href; - $buff = sprintf('%s%s%s="%s"', $matches[1], $matches[2], $matches[3], $href); + $buff = sprintf('<%s%s%s="%s"', $matches[1], $matches[2], $matches[3], $href); return $buff; } diff --git a/modules/opage/opage.view.php b/modules/opage/opage.view.php index 72114bcaa..2addbd7bc 100644 --- a/modules/opage/opage.view.php +++ b/modules/opage/opage.view.php @@ -35,7 +35,7 @@ $cache_file = sprintf("./files/cache/opage/%d.cache.php", $module_info->module_srl); // http 인지 내부 파일인지 점검 - if(preg_match("/^http:\/\//i",$path)) $content = $this->getHtmlPage($path, $caching_interval, $cache_file); + if(preg_match("/^([a-z]+):\/\//i",$path)) $content = $this->getHtmlPage($path, $caching_interval, $cache_file); else $content = $this->executeFile($path, $caching_interval, $cache_file); Context::set('opage_content', $content); diff --git a/modules/page/page.view.php b/modules/page/page.view.php index 4c2cfe99a..835f3d48e 100644 --- a/modules/page/page.view.php +++ b/modules/page/page.view.php @@ -34,6 +34,5 @@ $this->setTemplateFile('content'); } - } ?> diff --git a/modules/page/page.wap.php b/modules/page/page.wap.php new file mode 100644 index 000000000..ae3096b90 --- /dev/null +++ b/modules/page/page.wap.php @@ -0,0 +1,24 @@ +grant->view) return $oMobile->setContent(Context::getLang('msg_not_permitted')); + + // 위젯의 내용을 추출/ 정리해서 보여줌 + $oMobile->setContent( Context::transContent($this->module_info->content) ); + } + + } +?> diff --git a/modules/planet/planet.controller.php b/modules/planet/planet.controller.php index 22715aa5d..0de007c8a 100644 --- a/modules/planet/planet.controller.php +++ b/modules/planet/planet.controller.php @@ -126,7 +126,8 @@ $obj->content = str_replace(array('<','>'),array('<','>'),$obj->content); $obj->content = str_replace('...', '…', $obj->content); $obj->content = str_replace('--', '—', $obj->content); - $obj->content = preg_replace('/"([^"]*)":(http|ftp|https|mms)([^ ]+)/is','$1$4', $obj->content); + $obj->content = preg_replace('/"([^"]+)":([0-9]+)/i', '$1', $obj->content); + $obj->content = preg_replace('/"([^"]+)":(http|ftp|https|mms)([^ ]+)/is','$1$4', $obj->content); $oDocumentController = &getController('document'); $output = $oDocumentController->insertDocument($obj,$manual_inserted); if(!$output->toBool()) return $output; diff --git a/modules/planet/planet.view.php b/modules/planet/planet.view.php index cdfa77069..45a145932 100644 --- a/modules/planet/planet.view.php +++ b/modules/planet/planet.view.php @@ -12,13 +12,14 @@ **/ function init() { - if(!preg_match('/planet/i', $this->act)) return; + if(!preg_match('/planet/i', $this->act) && !in_array($this->act, array('favorite','countContentTagSearch','dispReplyList'))) return; + /** * @brief 플래닛 모듈의 기본 설정은 view에서는 언제든지 사용하도록 load하여 Context setting **/ $oPlanetModel = &getModel('planet'); Context::set('config',$this->config = $oPlanetModel->getPlanetConfig()); - $this->module_info->layout_srl = $this->config->layout_srl; + $this->module_info->layout_srl = $this->config->layout_srl; /** * 스킨이 없으면 플래닛 기본 설정의 스킨으로 설정 diff --git a/modules/planet/skins/xe_planet/content_list.html b/modules/planet/skins/xe_planet/content_list.html index 03e3aec1f..4f0f2b231 100644 --- a/modules/planet/skins/xe_planet/content_list.html +++ b/modules/planet/skins/xe_planet/content_list.html @@ -29,7 +29,7 @@
{@ $regdate = $item->get('regdate') } -

{getTimeGap($item->get('regdate'), sprintf('y/m/d a H%s i%s', $lang->unit_hour,$lang->unit_min))}

+

{getTimeGap($item->get('regdate'), sprintf('y/m/d a H%s i%s', $lang->unit_hour,$lang->unit_min))}

TAG
@@ -104,6 +104,11 @@ diff --git a/modules/planet/skins/xe_planet/css/default.css b/modules/planet/skins/xe_planet/css/default.css index ca504123d..7443c53e7 100644 --- a/modules/planet/skins/xe_planet/css/default.css +++ b/modules/planet/skins/xe_planet/css/default.css @@ -1,15 +1,7 @@ @charset "utf-8"; /* NHN > UIT Center > Open UI Platform Team > Jeong Chan Myeong(dece24@nhncorp.com) */ -/* xe layer */ -#waitingforserverresponse { border:2px solid #000000; font-weight:bold; color:#BBBBBB; padding: 7px 5px 5px 25px; background-color:#222222; top:40px; left:40px; position:absolute; z-index:100; visibility:hidden; } -#popup_menu_area { position:absolute; left:0px; top:0px; z-index:1003; visibility:hidden; border:2px solid #D9D9D9; background-color:#FFFFFF; padding:0; } -#popup_menu_area .box { border:1px solid #CACACA; background-color:#FFFFFF; padding:7px; } -#popup_menu_area .item { color:#333333; cursor:pointer; margin:0; padding:3px 0 3px 0; white-space:nowrap; } -#popup_menu_area .item_on { color:#333333; font-weight:bold; margin:0; cursor:pointer; padding:3px 0 3px 0; letter-spacing:-1px; white-space:nowrap;} - /* Reset */ -body{ margin:35px 30px; font-family:Sans-serif;} img, fieldset, button{border:0;} fieldset{ padding:0;} hr, button img{display:none;} @@ -27,68 +19,61 @@ button span{ position:absolute; width:0; height:0; font:0/0 Sans-serif; visibili .blind, legend {position:absolute; top:0; left:0; width:0; height:0; overflow:hidden; visibility:hidden; font-size:0 !important; line-height:0;} /* Layout */ +#planet {font-family:Sans-serif; margin:0; padding:0; } #container {} -#header{ position:relative; z-index:30; clear:both; margin:0 0 20px 0;} -#header *{ margin:0; padding:0;} -#header li{ list-style:none;} -#body{ clear:both; z-index:20;} -.nTop #navigation{ right:0; top:0 !important; z-index:100; } -.nTop #navigation .gnb ul{ margin:0;} -.nTop #navigation li{ list-style:none;} -.buttonArea{ text-align:center;} -.languageSelect { position:absolute; right:0; top:-30px; } -.languageSelect select{ font-size:12px;} +#planetHeader{ z-index:30; clear:both; margin:0 0 15px 0; overflow:hidden; *zoom:1;} +#planetHeader *{ margin:0; padding:0;} +#planetHeader li{ list-style:none;} +#planetBody{ clear:both; z-index:20;} /* Heading */ -h1 { position:relative; top:-10px; white-space:nowrap; font-family:"Malgun Gothic", AppleGothic, Dotum, Sans-serif;} -h1, x:-moz-any-link{ top:0;} -h1, x:-moz-any-link, x:default{ top:-10px;} -h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-decoration:none !important;} +#planetHeader h1 { white-space:nowrap; margin:0; padding:0;} +#planetHeader h1 a { font-weight:bold; font-size:26px; color:#000; text-decoration:none !important;} /* Time Navigation */ -.timeNav{ font:11px Dotum, Tahoma; white-space:nowrap; color:#999;} +.timeNav{ font:11px Dotum, Tahoma; white-space:nowrap; color:#999; float:left;} .timeNav *{ color:#000;} .timeNav strong{ font-family:Arial; font-size:18px;} .timeNav em{ font-style:normal; font-weight:bold; font-size:18px; font-family:"Malgun Gothic", AppleGothic, Dotum, Tahoma, Sans-serif;} .timeNav .prev, -.timeNav .next{ display:inline-block; font-size:18px; font-family:Arial; font-weight:bold; color:#000; padding:0 5px !important; text-decoration:none !important;} +.timeNav .next { display:inline-block; font-size:18px; font-family:Arial; font-weight:bold; color:#000; padding:0 5px !important; text-decoration:none !important;} +.timeNav span.prev, +.timeNav span.next { color:#AAA; } + +#navigation{ float:right; z-index:100; } +#navigation .gnb { clear:both; margin:0;} +#navigation .gnb ul{ margin:0;} +#navigation li{ list-style:none;} +.buttonArea{ text-align:center;} + /* Footer */ -#footer{margin:0; clear:both; text-align:center; padding:30px 0;} -#footer *{margin:0; padding:0; color:#444; list-style:none; font:9px Verdana; line-height:normal;} -#footer a{text-decoration:none; color:#444;} -#footer a:visited{text-decoration:none; color:#666;} -#footer a:hover{text-decoration:underline;} -#footer address a{font-weight:bold; font-family:Tahoma; color:#00535d;} +#planetFooter{margin:0; clear:both; text-align:center; padding:30px 0;} +#planetFooter *{margin:0; padding:0; color:#444; list-style:none; font:9px Verdana; line-height:normal;} +#planetFooter a{text-decoration:none; color:#444;} +#planetFooter a:visited{text-decoration:none; color:#666;} +#planetFooter a:hover{text-decoration:underline;} +#planetFooter address a{font-weight:bold; font-family:Tahoma; color:#00535d;} /* ---------- Navigation ---------- */ /* Search */ -#header .search{ position:relative; top:2px; float:right; margin:0; padding:0; white-space:nowrap; text-align:right; *zoom:1;} -#header .search .inputText{ padding:4px 5px 2px 5px; height:21px; width:160px; border:1px solid #e7e7e7; vertical-align:top; font:bold 14px AppleGothic, Dotum, Gulim, Sans-serif;} -#header .search .inputText.focus{ border:3px solid #4ba300; height:17px; width:156px;} -#header .search .button{ top:1px;} -#header .search .button button{ padding:0 10px 0 8px; font-family:Dotum;} -#header .search .suggestion{ position:absolute; top:3px; left:174px; /* border:1px solid; */} -#header .search .suggestion .autoComplete{ position:absolute; top:0; left:0; width:23px; height:23px; background:#fff url(../images/buttonAutoComplete.gif) no-repeat center -10px;} -#header .search .suggestion ul.recommendation{ display:none; position:absolute; top:26px; left:-174px; width:198px; border:1px solid #e7e7e7; border-top:none; background:#fff;} -#header .search .suggestion li button{ width:100%; text-align:left; padding:5px 4px 2px 4px; font:.75em AppleGothic, Gulim, Dotum, Sans-serif;} -#header .search .suggestion li button:hover, -#header .search .suggestion li button:active, -#header .search .suggestion li button:focus{ background:#eee;} -#header .search .suggestion.open .autoComplete{ background-position:center 10px;} -#header .search .suggestion.open ul.recommendation{ display:block;} +#planetHeader .search{ clear:both; padding:0; white-space:nowrap; text-align:right; *zoom:1; margin-right:2px; float:right;} +#planetHeader .search .inputText{ padding:4px 0 0 4px; height:17px; width:160px; border:1px solid #e7e7e7; vertical-align:top; font:12px AppleGothic, Dotum, Gulim, Sans-serif;} +#planetHeader .search .inputText.focus{padding:3px 0 1px 4px; border:3px solid #4ba300; height:13px; width:156px;} +#planetHeader .search .button{ *top:1px;} +#planetHeader .search .button button{ padding:0 10px 0 8px; font-family:Dotum;} /* GNB */ -#header .gnb{ position:relative; float:right; margin-left:20px; } -#header .gnb ul{ margin:0; padding:0; position:relative; float:left; overflow:hidden;} -#header .gnb ul li{ position:relative; float:left;} -#header .gnb ul li a{ position:relative; display:block; float:left; background:url(../images/buttonGnb.gif) no-repeat center top; padding:11px 25px 11px 25px; font:12px AppleGothic, Dotum, Gulim, Sans-serif; color:#fff !important; text-decoration:none !important; letter-spacing:-1px; white-space:nowrap;} -#header .gnb ul li.active a{ opacity:0.7; filter:alpha(opacity=70); font-weight:bold;} -#header .gnb ul li a:hover, -#header .gnb ul li a:active, -#header .gnb ul li a:focus{ opacity:0.9; filter:alpha(opacity=90);} -#header .gnb ul li.first a{ background-position:left top;} -#header .gnb ul li.last a{ background-position:right top;} +#planetHeader .gnb{ position:relative; float:right; margin-left:20px; margin-bottom:5px; } +#planetHeader .gnb ul{ margin:0; padding:0; position:relative; float:left; overflow:hidden;} +#planetHeader .gnb ul li{ position:relative; float:left;} +#planetHeader .gnb ul li a{ position:relative; display:block; float:left; background:url(../images/buttonGnb.gif) no-repeat center top; padding:11px 25px 11px 25px; font:12px AppleGothic, Dotum, Gulim, Sans-serif; color:#fff !important; text-decoration:none !important; letter-spacing:-1px; white-space:nowrap;} +#planetHeader .gnb ul li.active a{ opacity:0.7; filter:alpha(opacity=70); font-weight:bold;} +#planetHeader .gnb ul li a:hover, +#planetHeader .gnb ul li a:active, +#planetHeader .gnb ul li a:focus{ opacity:0.9; filter:alpha(opacity=90);} +#planetHeader .gnb ul li.first a{ background-position:left top;} +#planetHeader .gnb ul li.last a{ background-position:right top;} /* ---------- Content ---------- */ @@ -151,7 +136,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de /* Personal Header */ .personalHeader{ position:relative; height:90px; background:url(../images/boxTryPlanet.gif) repeat-x 0 0; margin-bottom:15px;} .personalHeader *{ margin:0; padding:0; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} -.personalHeader h2{ position:absolute; top:15px; left:30px; padding-top:15px; font-size:2em; _zoom:1; padding-left:30px; background:url(../images/bgPerson.png) no-repeat; _behavior:url(./common/js/iePngFix.htc); } +.personalHeader h2{ position:absolute; top:15px; left:30px; padding-top:15px; font-size:24px; _zoom:1; padding-left:30px; background:url(../images/bgPerson.png) no-repeat; _behavior:url(./common/js/iePngFix.htc); } .personalHeader p{ position:absolute; top:46px; left:220px;} .personalHeader .leftCap, .personalHeader .rightCap{ position:absolute; display:block; top:0; width:5px; height:90px; overflow:hidden; background:url(../images/boxTryPlanet.gif) no-repeat; white-space:nowrap;} @@ -162,7 +147,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .searchHeader{ position:relative; height:90px; background:url(../images/boxTryPlanet.gif) repeat-x 0 0; margin-bottom:30px;} .searchHeader *{ margin:0; padding:0;} .searchHeader p{ position:absolute; top:27px; margin-left:80px; font-family:NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#50606b;} -.searchHeader p strong{ font:bold 1.5em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.searchHeader p strong{ font:bold 18px NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} .searchHeader .leftCap, .searchHeader .rightCap{ position:absolute; display:block; top:0; width:5px; height:90px; overflow:hidden; background:url(../images/boxTryPlanet.gif) no-repeat; white-space:nowrap;} .searchHeader .leftCap{ left:0; background-position:left bottom;} @@ -186,7 +171,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .myInfo .bl{ bottom:-1px; left:-1px; background-position:0 -4px;} .myInfo .br{ bottom:-1px; right:-1px; background-position:-4px -4px;} .myInfo button{ width:90px; height:60px; position:absolute; top:90px; left:50%; margin-left:80px; background:url(../images/buttonLogin.gif) no-repeat;} -.myInfo button span{ position:relative; display:block; *padding-top:15px; visibility:visible; width:auto; height:auto; text-align:center; font:bold 1.2em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff;} +.myInfo button span{ position:relative; display:block; *padding-top:15px; visibility:visible; width:auto; height:auto; text-align:center; font:bold 14px NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff;} /* Tag Cloud */ .tagCloud{ display:none; padding:20px 20px 30px 20px; margin-bottom:15px; position:relative; border:1px solid #e9e9e9; *zoom:1;} @@ -236,7 +221,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .commentList .tagChoiceAfter{ display:none; position:absolute; top:45px; left:50%; width:289px; height:121px; text-align:center; margin-left:-145px;} .commentList .tagChoiceAfter.alert{ display:block;} -.commentList .tagChoiceAfter p{ position:absolute; top:0; left:0; width:289px; height:94px; _height /**/:121px; font-size:.75em; color:#fff; padding:37px 0 0 0; background:url(../images/boxTagChoice.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} +.commentList .tagChoiceAfter p{ position:absolute; top:0; left:0; width:289px; height:94px; _height /**/:121px; font-size:12px; color:#fff; padding:37px 0 0 0; background:url(../images/boxTagChoice.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} .commentList .tagChoiceAfter button, .commentList .tagChoiceAfter a{ position:relative; display:inline-block; top:60px; font-size:12px; color:#fff; text-decoration:none; vertical-align:top; cursor:pointer; _cursor /**/:hand;} .commentList .tagChoiceAfter button{ width:45px; height:23px; text-align:center; background:url(../images/buttonFixedBlack45.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} @@ -251,41 +236,42 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .commentBody{ position:relative; margin:10px 0; border:1px solid #d7dfe2; background:#fff; *zoom:1; clear:both;} .commentBody .comment{ position:relative; margin:0 15px; padding:15px 0 15px 0; clear:both; *zoom:1;} .commentBody .comment:after { content:""; display:block; width:0; height:0; font:0/0 Sans-serif; overflow:hidden; visibility:hidden; clear:both; float:none;} -.commentBody .comment .identity{ position:relative; width:98px; float:left; margin:0 -98px 0 0; font-size:1em; background:none; *zoom:1;} -.commentBody .comment .identity a{ position:relative; display:block; text-align:center; font-size:.75em; color:#fff !important; font-weight:bold;} +.commentBody .comment .identity{ position:relative; width:98px; float:left; margin:0 -98px 0 0; font-size:12px; background:none; *zoom:1;} +.commentBody .comment .identity a{ position:relative; display:block; text-align:center; font-size:12px; color:#fff !important; font-weight:bold;} .commentBody .comment .identity a img{ display:block; border:1px solid #ddd;} .commentBody .comment .identity a em{ position:absolute; width:96px; text-align:center; left:1px; bottom:1px; display:block; padding:5px 0; font-style:normal; background:#000; opacity:.6; filter:alpha(opacity=60); line-height:normal;} .commentBody .comment .tongue{ position:relative; margin-left:113px; *zoom:1;} -.commentBody .comment .tongue .post{ margin:0 0 7px 0; font:1.2em/1.4em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif;} +.commentBody .comment .tongue .post{ margin:0 0 7px 0; font:16px/1.6 NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; word-break:break-all; } .commentBody .comment .tongue .post a { font:1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#06C;} .commentBody .comment .tongue .post strong{ background:#f7b100; font:normal 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#fff;} -.commentBody .comment .tongue .postScript{ margin:0 0 10px 0; font-size:.75em; color:#999;} +.commentBody .comment .tongue .postScript{ margin:0 0 10px 0; font-size:12px; color:#999;} .commentBody .comment .tongue .postScript strong{ font-family:Arial; letter-spacing:-1px; margin-right:5px;} .commentBody .comment .tongue .postExtra{ overflow:hidden; padding-top:10px; border-top:1px dotted #ccc; *zoom:1;} .commentBody .comment .tongue .postExtra *{ margin:0; padding:0;} .commentBody .comment .tongue .postExtra .tag { float:left;} -.commentBody .comment .tongue .postExtra .tag .time{ display:inline; margin-right:5px; color:#999; font:.7em AppleGothic, Dotum, Gulim, Sans-serif;} +.commentBody .comment .tongue .postExtra .tag .time{ display:inline; margin-right:5px; color:#999; font:11px AppleGothic, Dotum, Gulim, Sans-serif;} +.commentBody .comment .tongue .postExtra .tag .time a{color:#999;} .commentBody .comment .tongue .postExtra .tag dl{ display:inline;} -.commentBody .comment .tongue .postExtra .tag dt{ text-align:center; padding:0 7px; margin-right:5px; display:inline; background:url(../images/bgTag.gif) no-repeat center; font:bold .7em Tahoma; color:#fff;} +.commentBody .comment .tongue .postExtra .tag dt{ text-align:center; padding:0 7px; margin-right:5px; display:inline; background:url(../images/bgTag.gif) no-repeat center; font:bold 11px Tahoma; color:#fff;} .commentBody .comment .tongue .postExtra .tag dd{ display:inline; position:relative;} -.commentBody .comment .tongue .postExtra .tag dd.tagRead a{ position:relative; margin-right:2px; font:.7em AppleGothic, Dotum, Gulim, Sans-serif; color:#999;} +.commentBody .comment .tongue .postExtra .tag dd.tagRead a{ position:relative; margin-right:2px; font:11px AppleGothic, Dotum, Gulim, Sans-serif; color:#999;} .commentBody .comment .tongue .postExtra .tag dd.tagRead a strong{ font:normal 1em AppleGothic, Dotum, Gulim, Sans-serif; background:#f7b100; color:#fff;} .commentBody .comment .tongue .postExtra .tag dd.tagRead .delete{ position:relative; top:-7px; left:-8px; display:none; width:12px; height:11px; margin-right:-12px; background:url(../images/buttonX.gif) no-repeat center;} .commentBody .comment .tongue .postExtra .tag dd.tagRead .delete.hover{ display:inline-block;} .commentBody .comment .tongue .postExtra .tag dd.tagRead .modify{ position:relative; width:13px; height:13px; background:url(../images/buttonModify.gif) no-repeat center; vertical-align:middle; *vertical-align:baseline; *top:-1px; *left:5px;} .commentBody .comment .tongue .postExtra .tag dd.tagModify{ display:none; top:2px;} .commentBody .comment .tongue .postExtra .tag dd.tagModify form{ display:inline;} -.commentBody .comment .tongue .postExtra .tag dd.tagModify .inputText{ border:1px solid #ccc; padding:2px 4px; height:13px; width:290px; font-size:.75em;} -.commentBody .comment .tongue .postExtra .tag dd.tagModify button{ height:19px; font-size:.7em; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} +.commentBody .comment .tongue .postExtra .tag dd.tagModify .inputText{ border:1px solid #ccc; padding:2px 4px; height:13px; width:290px; font-size:12px;} +.commentBody .comment .tongue .postExtra .tag dd.tagModify button{ height:19px; font-size:11px; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} .commentBody .comment .tongue .postExtra .tag.edit dd{ display:none;} .commentBody .comment .tongue .postExtra .tag.edit dd.tagModify{ display:inline;} .commentBody .comment .tongue .postExtra .sympathy{ float:right; position:relative; top:-2px;} .commentBody .comment .tongue .postExtra .sympathy span.btnPlus { display:block; float:left; margin-right:10px; padding-top:3px;} .commentBody .comment .tongue .postExtra .sympathy button { color:#999;} -.commentBody .comment .tongue .postExtra .sympathy .num{ position:relative; display:inline-block; width:22px; height:22px; padding-top:6px; letter-spacing:-1px; color:#fff; text-align:center; font:bold .7em AppleGothic, Dotum, Gulim, Sans-serif; background:url(../images/bgSympathy.gif) no-repeat center top; *margin-bottom:-10px;} +.commentBody .comment .tongue .postExtra .sympathy .num{ position:relative; display:inline-block; width:22px; height:22px; padding-top:6px; letter-spacing:-1px; color:#fff; text-align:center; font:bold 11px AppleGothic, Dotum, Gulim, Sans-serif; background:url(../images/bgSympathy.gif) no-repeat center top; *margin-bottom:-10px;} .commentBody .comment .tongue .postExtra .sympathy .num, x:-moz-any-link { padding-left:11px; padding-right:11px;} .commentBody .comment .tongue .postExtra .sympathy .num, x:-moz-any-link, x:default { padding-left:0; padding-right:0;} -.commentBody .comment .tongue .postExtra .sympathy a{ position:relative; *top:-2px; margin-right:1px; color:#999; padding-left:8px; font:.7em AppleGothic, Dotum, Gulim, Sans-serif; letter-spacing:-1px; background:url(../images/arrowReplyOpen.gif) no-repeat left 3px;} +.commentBody .comment .tongue .postExtra .sympathy a{ position:relative; *top:-2px; margin-right:1px; color:#999; padding-left:8px; font:11px AppleGothic, Dotum, Gulim, Sans-serif; letter-spacing:-1px; background:url(../images/arrowReplyOpen.gif) no-repeat left 3px;} /* Todo Manager */ .commentList .commentHeader h3.exTitle{ font-family:"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; line-height:normal; background:none; float:left;} @@ -301,9 +287,9 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .commentBody .reply{ display:none; clear:both; padding:15px; background:#f3f3f3; *zoom:1;} .commentBody .reply.open{ display:block;} .commentBody .reply dl{ position:relative; clear:both; overflow:hidden; *zoom:1; margin:0 0 5px 0;} -.commentBody .reply dt{ float:left; width:83px; padding-left:15px; margin-right:-98px; font-size:.75em; font-weight:bold; color:#666;} +.commentBody .reply dt{ float:left; width:83px; padding-left:15px; margin-right:-98px; font-size:12px; font-weight:bold; color:#666;} .commentBody .reply dt a{ color:#a5b2c2; } -.commentBody .reply dd{ margin:0 80px 0 113px; font-size:.75em; color:#666; line-height:1.4em;} +.commentBody .reply dd{ margin:0 80px 0 113px; font-size:12px; color:#666; line-height:1.4em;} .commentBody .reply dd a{ text-decoration:underline; color:#333;} .commentBody .reply dd .time{ position:absolute; top:0; right:0;} .commentBody .reply dd input{ position:relative; border:1px solid #ccc; padding:4px 5px; width:96%; height:14px; vertical-align:top; font-size:1em; *zoom:1;} @@ -333,7 +319,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .authorHeader .thumb a:hover span, .authorHeader .thumb a:active span, .authorHeader .thumb a:focus span{ display:block;} -.authorHeader .thumb .file{ display:none; position:absolute; top:0; left:115px; background:#fff; border:2px solid #eee; padding:15px; height:66px; _height /**/:100px; width:446px; font-size:.75em;} +.authorHeader .thumb .file{ display:none; position:absolute; top:0; left:115px; background:#fff; border:2px solid #eee; padding:15px; height:66px; _height /**/:100px; width:446px; font-size:12px;} .authorHeader .thumb .file p{ margin-bottom:5px;} .authorHeader .thumb .file input{ padding:2px 4px; width:400px;} .authorHeader .thumb .file .buttonArea{ padding-top:10px;} @@ -364,16 +350,16 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .authorHeader .title *.edit .inputText, .authorHeader .title *.edit button{ display:inline; vertical-align:top;} .authorHeader .title .authorPersonality{ float:left;} -.authorHeader .title .authorPersonality a{ position:relative; float:left; color:#fff; font-size:.75em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; text-decoration:none;} +.authorHeader .title .authorPersonality a{ position:relative; float:left; color:#fff; font-size:12px; font-family:AppleGothic, Dotum, Gulim, Sans-serif; text-decoration:none;} .authorHeader .title .addFavorite{ position:relative; top:-3px; float:right; clear:right; background:url(../images/iconAddFavorite.gif) no-repeat left center; padding-left:7px; } -.authorHeader .title .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:.7em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-align:right; letter-spacing:-1px;} +.authorHeader .title .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:11px; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-align:right; letter-spacing:-1px;} .authorHeader .authorTag{ position:relative; border-top:1px solid #ddd; margin-left:120px; padding-top:10px; *zoom:1;} .authorHeader .authorTag dl{ position:relative; display:block; float:left;} -.authorHeader .authorTag dt{ text-align:center; padding:0 7px; margin-right:5px; display:inline; background:url(../images/bgTag.png) no-repeat center; _behavior:url(./common/js/iePngFix.htc); font:bold .7em Tahoma; color:#fff; *zoom:1;} +.authorHeader .authorTag dt{ text-align:center; padding:0 7px; _padding:0 3px; margin-right:5px; display:inline; background:url(../images/bgTag.png) no-repeat center; _behavior:url(./common/js/iePngFix.htc); font:bold 11px Tahoma; color:#fff; *zoom:1;} .authorHeader .authorTag dd{ display:inline;} .authorHeader .authorTag.edit dd{ display:none;} -.authorHeader .authorTag dd a{ font-size:.7em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; margin-right:2px;} +.authorHeader .authorTag dd a{ font-size:11px; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; margin-right:2px;} .authorHeader .authorTag dd .delete{ position:relative; top:-7px; left:-8px; display:none; width:12px; height:11px; margin-right:-12px; background:url(../images/buttonX.gif) no-repeat center;} .authorHeader .authorTag dd .delete span{ display:inline-block; width:0; height:0; font:0/0 Sans-serif; visibility:hidden;} .authorHeader .authorTag dd .delete.hover{ display:inline-block;} @@ -381,8 +367,8 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .authorHeader .authorTag dd.tagModify{ display:none;} .authorHeader .authorTag.edit dd.tagModify{ display:inline;} .authorHeader .authorTag dd.tagModify .inputText{ border:1px solid #ccc; padding:2px 4px; height:13px; width:290px;} -.authorHeader .authorTag dd.tagModify button{ height:19px; font-size:.7em; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} -.authorHeader .authorTag .planetUri{ position:relative; float:right; color:#fff; font-size:.7em; font-family:Tahoma Sans-serif;} +.authorHeader .authorTag dd.tagModify button{ height:19px; font-size:11px; background:#eee; border:1px solid #ccc; margin-left:5px; vertical-align:top;} +.authorHeader .authorTag .planetUri{ position:relative; float:right; color:#fff; font-size:11px; font-family:Tahoma Sans-serif;} .authorHeader .authorTag .rssFeed{ float:right; display:block; margin:0 0 0 5px; width:12px; height:12px; cursor:pointer; background:url(../images/rssFeed.png) no-repeat; _behavior:url(./common/js/iePngFix.htc);} .authorHeader .authorTag .rssFeed span{ position:absolute; width:0; height:0; overflow:hidden;} .authorHeader .tl, @@ -419,7 +405,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .authorHeader .apiMe2day .apiProtocol.open{ display:block;} .authorHeader .apiMe2day .apiProtocol.close{ display:none;} .authorHeader .apiMe2day .apiProtocol .summary{ font-weight:bold; margin-bottom:10px;} -.authorHeader .apiMe2day .apiProtocol dl{ font-size:.75em; overflow:hidden;} +.authorHeader .apiMe2day .apiProtocol dl{ font-size:12px; overflow:hidden;} .authorHeader .apiMe2day .apiProtocol dt{ float:left; clear:left; margin:0 4px 0 0; padding-top:3px;} .authorHeader .apiMe2day .apiProtocol dd{ clear:right; margin-bottom:2px;} .authorHeader .apiMe2day .apiProtocol dd input{ width:120px; border:1px solid #ccc; padding:2px 4px; *margin:-1px 0;} @@ -478,12 +464,9 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .authorFooter .memoWrite .button, x:-moz-any-link, x:default{ padding:0;} .authorFooter .button *{ font-size:12px !important;} .authorFooter .nav{ float:right; } -.authorFooter .nav .button{ vertical-align:top;} -.authorFooter .nav .button, x:-moz-any-link { vertical-align:middle;} -.authorFooter .nav .button, x:-moz-any-link, x:default { vertical-align:top; } -.authorFooter .nav a.button, x:-moz-any-link{ padding:4px 0 6px 0;} -.authorFooter .nav a.button, x:-moz-any-link, x:default { padding:0;} -.authorFooter .nav span.button{ top:0;} +.authorFooter .nav *{ font:11px Dotum; letter-spacing:-1px; color:#333; text-decoration:none !important;} +.authorFooter .nav li{ list-style:none; text-align:right;} +.authorFooter .nav li button{ position:relative; height:16px; text-align:right; left:3px; *left:1px;} .authorFooter .tl, .authorFooter .tr{position:absolute; bottom:-1px; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxCommentOut.gif) no-repeat;} .authorFooter .tl{ left:-1px; background-position:left bottom;} @@ -498,15 +481,15 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .authorList .authorBody .title{ position:relative; margin-left:120px; margin-bottom:10px; *zoom:1;} .authorList .authorBody .title h2{ margin-bottom:5px;} .authorList .authorBody .title h2 a{ font:bold 1em NanumGothic,"Malgun Gothic", AppleGothic, Dotum, Gulim, Sans-serif; color:#465f7d;} -.authorList .authorBody .title p{ color:#a2afbe; font-size:.75em;} -.authorList .authorBody .title .planetUri{ position:absolute; right:0; bottom:0; font-size:.7em; color:#999;} -.authorList .authorBody .authorTag{ position:relative; padding-top:10px; margin-left:120px; border-top:1px dotted #ccc; font-size:.75em; *zoom:1;} +.authorList .authorBody .title p{ color:#a2afbe; font-size:12px;} +.authorList .authorBody .title .planetUri{ position:absolute; right:0; bottom:0; font-size:11px; color:#999;} +.authorList .authorBody .authorTag{ position:relative; padding-top:10px; margin-left:120px; border-top:1px dotted #ccc; font-size:12px; *zoom:1;} .authorList .authorBody .authorTag dt{ display:inline;} .authorList .authorBody .authorTag dd{ display:inline;} .authorList .authorBody .authorTag dd a{ color:#747474;} .authorList .authorBody .authorTag dd a strong{ font-weight:normal; color:#fff; background:#ffba00;} .authorList .authorBody .authorTag .addFavorite{ position:absolute; top:7px; right:0; background:url(../images/iconAddFavorite.gif) no-repeat left center;} -.authorList .authorBody .authorTag .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:.9em; color:#999; font-family:AppleGothic, Dotum, Gulim, Sans-serif; text-align:right; letter-spacing:-1px;} +.authorList .authorBody .authorTag .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:11px; color:#999; font-family:AppleGothic, Dotum, Gulim, Sans-serif; text-align:right; letter-spacing:-1px;} .authorList .tl, .authorList .tr, .authorList .bl, @@ -541,7 +524,7 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .writePost .writeBody dd .inputText{ padding:3px 10px;} .writePost .writeBody dd.preview{ display:block; clear:both;} .writePost .writeBody dd.preview.off{ display:none;} -.writePost .writeBody dd.preview p{ padding:5px 10px; border:1px solid #ccc; width:96%; background:#fff; color:#000; opacity:.5; filter:alpha(opacity=50);} +.writePost .writeBody dd.preview p{ padding:5px 10px; border:1px solid #ccc; width:96%; background:#fff; color:#000; opacity:.5; filter:alpha(opacity=50); font-size:12px;} .writePost .writeBody dd.preview p a{ color:#00f;} .writePost .writeBody .writeOptions{ position:absolute; top:-8px; left:100%; margin-left:-105px;} .writePost .writeBody .writeOptions p{ white-space:nowrap; margin:0; padding:0;} @@ -554,8 +537,8 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .writePost .br{ position:absolute; display:block; width:4px; height:4px; overflow:hidden; background:url(../images/boxAuthorHeader.png) no-repeat; _background:url(../images/boxAuthorHeader.gif) no-repeat;} .writePost .tl{ top:0; left:0; background-position:left top;} .writePost .tr{ top:0; right:0; background-position:right top;} -.writePost .bl{ bottom:0; left:0; background-position:left -4px;} -.writePost .br{ bottom:0; right:0; background-position:right -4px;} +.writePost .bl{ bottom:0; _bottom:-1px; left:0; background-position:left -4px;} +.writePost .br{ bottom:0; _bottom:-1px; right:0; background-position:right -4px;} /* My Favorite Tag */ .myFavoriteTag{ display:none; position:relative; background:#7b735d; margin-bottom:10px; *zoom:1; padding:15px 20px 15px 20px;} @@ -565,15 +548,15 @@ h1 a{ font-weight:bold; font-size:30px; color:#000; letter-spacing:-3px; text-de .myFavoriteTag ul{ position:relative; padding:5px 0; overflow:hidden; *zoom:1;} .myFavoriteTag li{ position:relative; padding:0 6px 0 10px; left:-11px; display:inline; background:url(../images/lineVccc.gif) no-repeat left center; line-height:18px;} .myFavoriteTag li a, -.myFavoriteTag li strong{ font-size:.75em; white-space:nowrap;} +.myFavoriteTag li strong{ font-size:12px; white-space:nowrap;} .myFavoriteTag li strong{ color:#ffba00;} .myFavoriteTag li .delete{ position:relative; top:-7px; left:-6px; display:none; width:12px; height:11px; margin-right:-12px; background:url(../images/buttonX.gif) no-repeat center;} .myFavoriteTag li .delete span{ display:inline-block; width:0; height:0; font:0/0 Sans-serif; visibility:hidden;} .myFavoriteTag li .delete.hover{ display:inline-block;} .myFavoriteTag .addTag{ text-align:right;} -.myFavoriteTag .addTag .inputText{ border:1px solid #ccc; padding:3px 4px; color:#000; font-size:.75em; margin-right:5px;} +.myFavoriteTag .addTag .inputText{ border:1px solid #ccc; padding:3px 4px; color:#000; font-size:12px; margin-right:5px;} .myFavoriteTag .addTag .addFavorite{ display:inline-block; position:relative; background:url(../images/iconAddFavorite.gif) no-repeat left center;} -.myFavoriteTag .addTag .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:.7em; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-align:right; letter-spacing:-1px;} +.myFavoriteTag .addTag .addFavorite button{ position:relative; *top:2px; width:80px; height:20px; font-size:11px; font-family:AppleGothic, Dotum, Gulim, Sans-serif; color:#fff; text-align:right; letter-spacing:-1px;} .myFavoriteTag .tl, .myFavoriteTag .tr, .myFavoriteTag .bl, diff --git a/modules/planet/skins/xe_planet/css/layout.css b/modules/planet/skins/xe_planet/css/layout.css deleted file mode 100644 index dcac00227..000000000 --- a/modules/planet/skins/xe_planet/css/layout.css +++ /dev/null @@ -1,391 +0,0 @@ -@charset "utf-8"; -/* NHN > UIT Center > Open UI Technology Team > Jeong Chan Myeong(dece24@nhncorp.com) */ - -/* Float Clear */ -.fClear { display:block; float:none; clear:both; margin:0; padding:0; width:0; height:0; overflow:hidden; font:0/0 Sans-serif; visibility:hidden; } /* Use it when you want to float clearing */ - -/* Container */ -#container { position:relative; margin:0 auto; height:auto !important; } /* alignCenter = margin:0 auto | alignLeft = margin:0 | alignRight = margin:0 0 0 auto */ - -/* Header */ -#header { } - -/* Body */ -#body { position:relative; } -#body:after { content:""; display:block; clear:both; } - -/* Content */ -#content { position:relative; } -#content .section { position:relative; } - -/* Navigation */ -#navigation { position:relative; } -#navigation .section { position:relative; } - -/* Extra */ -#extra { position:relative; } -#extra .section { position:relative; } - -/* Footer */ -#footer { position:relative; } - -/* ---------- Common Display ---------- */ -/* c = #content, n = #navigation, e = #extra */ -.c1 #navigation, -.c2 #navigation, -.c3 #navigation, -.c1 #extra, -.c2 #extra, -.c3 #extra -.cn #extra, -.nc #extra { display:none; } - -.cn #navigation, -.nc #navigation, -.ce #navigation, -.ec #navigation, -.ne #navigation, -.en #navigation, -.cne #navigation, -.ecn #navigation, -.nec #navigation, -.cen #navigation, -.nce #navigation, -.enc #navigation, -.cee #navigation, -.eec #navigation, -.ece #navigation, -.ce #extra, -.ec #extra, -.ne #extra, -.en #extra, -.cne #extra, -.ecn #extra, -.nec #extra, -.cen #extra, -.nce #extra, -.enc #extra, -.cee #extra, -.eec #extra, -.ece #extra { display:block; } - -#extra .section{ display:none; } -.e0 #extra { display:none;} -.e1 #extra, -.e2 #extra, -.e3 #extra, -.e4 #extra, -.e5 #extra, -.e1 #extra .extra1, -.e2 #extra .extra1, -.e2 #extra .extra2, -.e3 #extra .extra1, -.e3 #extra .extra2, -.e3 #extra .extra3, -.e4 #extra .extra1, -.e4 #extra .extra2, -.e4 #extra .extra3, -.e4 #extra .extra4, -.e5 #extra .extra1, -.e5 #extra .extra2, -.e5 #extra .extra3, -.e5 #extra .extra4, -.e5 #extra .extra5, -.cee #extra .section, -.eec #extra .section, -.ece #extra .section { display:block;} - -.nTop #navigation { display:block; } - -.ne #navigation, -.ne #extra, -.ne #extra .section { float:left; } -.en #navigation, -.en #extra, -.en #extra .section { float:right; } - -/* ---------- Fixed Layout Preset ---------- */ -/* c = #content, n = #navigation, e = #extra */ - -/* Width */ -.fixed #container { width:960px; } -.fixed #body { width:auto; } -.fixed #navigation, -.fixed #extra .section { width:200px; } -.fixed .c1 #content { width:100%; } -.fixed .c1 #navigation { width:300px; } -.fixed .c1 #extra { width:auto; } -.fixed .c1 #extra .section { width:300px; } -.fixed .c2 #content { width:740px; } -.fixed .c3 #content { width:520px;} -.fixed .cee #extra, -.fixed .eec #extra{ width:420px;} -.fixed .ece #extra { width:100%;} - -/* Floating 1 Columns */ -.fixed .c1 #content { clear:both; } - -.fixed .ne #navigation, -.fixed .ne #extra .extra1 { margin-right:30px; } - -.fixed .en #navigation, -.fixed .en #extra .extra1 { margin-left:30px; } - -/* Floating 2 Columns */ -.fixed .cn #content { float:left; } -.fixed .cn #navigation, -.fixed .cn #extra { float:right; } - -.fixed .nc #content { float:right; } -.fixed .nc #navigation, -.fixed .nc #extra { float:left; } - -.fixed .ce #content { float:left; } -.fixed .ce #navigation, -.fixed .ce #extra { float:right; *float:none; *left:20px; _left:17px; } - -.fixed .ec #content { float:right; } -.fixed .ec #navigation, -.fixed .ec #extra { float:left; *float:none; } - -/* Floating 3 Columns */ -.fixed .cne #content { float:left; margin-right:20px; } -.fixed .cne #navigation { float:left; } -.fixed .cne #extra { float:right; } - -.fixed .ecn #content { float:left; margin-right:-520px; left:220px; } -.fixed .ecn #navigation { float:right; } -.fixed .ecn #extra { float:left; } - -.fixed .nec #content { float:right; } -.fixed .nec #navigation { float:left; margin-right:20px; } -.fixed .nec #extra { float:left; } - -.fixed .cen #content { float:left; margin-right:20px; } -.fixed .cen #navigation { float:right; } -.fixed .cen #extra { float:left; } - -.fixed .nce #content { float:left; margin-right:-520px; left:220px; } -.fixed .nce #navigation { float:left; } -.fixed .nce #extra { float:right; } - -.fixed .enc #content { float:right; margin-left:20px; } -.fixed .enc #navigation { float:right; } -.fixed .enc #extra { float:left; } - -.fixed .cee #content { float:left; _margin-right:-3px; } -.fixed .cee #extra { float:right; *float:none; *left:20px; } -.fixed .cee .section { float:left; } -.fixed .cee .extra1 { margin-right:20px; } - -.fixed .eec #content { float:right; _margin-left:-3px; } -.fixed .eec #extra { float:left; *float:none; *left:0; } -.fixed .eec .section{ float:left;} -.fixed .eec .extra1{ margin-right:20px; } - -.fixed .ece #content { float:left; margin-right:-100%; left:220px;} -.fixed .ece #extra { float:none; } -.fixed .ece .extra1{ float:left; } -.fixed .ece .extra2{ float:right; } - -/* ---------- Liquid Layout Preset ---------- */ -/* c = #content, n = #navigation, e = #extra */ - -/* Width */ -.liquid #container { width:100%; } -.liquid #body { width:auto; } -.liquid .c1 #content { width:100%; } -.liquid .c1 #navigation { width:32%; } -.liquid .c1 #extra { width:66%; } -.liquid .c1 #extra .section { width:48.4%; } -.liquid .c2 #content { width:75%; } -.liquid .c2 #navigation, -.liquid .c2 #extra { width:23%; } -.liquid .c3 #content { width:56%; } -.liquid .c3 #navigation { width:20%; } -.liquid .c3 #extra { width:20%; } -.liquid .cee #extra, -.liquid .eec #extra { width:42%;} -.liquid .ece #extra { width:100%;} -.liquid .cee #extra .section, -.liquid .eec #extra .section{ width:48%; } -.liquid .ece #extra .section { width:20%; } - -/* Floating 1 Columns */ -.liquid .c1 #content { clear:both; } - -.liquid .ne #navigation { margin-right:2%; } -.liquid .ne #extra .extra1 { float:left; } -.liquid .ne #extra .extra2 { float:right; } - -.liquid .en #navigation { margin-left:2%; } -.liquid .en #extra .extra1 { float:right; } -.liquid .en #extra .extra2 { float:left; } - -/* Floating 2 Columns */ -.liquid .cn #content { float:left; } -.liquid .cn #navigation, -.liquid .cn #extra { float:right; } - -.liquid .nc #content { float:right; } -.liquid .nc #navigation, -.liquid .nc #extra { float:left; } - -.liquid .ce #content { float:left; _margin-right:-3px; } -.liquid .ce #navigation, -.liquid .ce #extra { float:right; *float:none; *left:2%; } - -.liquid .ec #content { float:right; } -.liquid .ec #navigation, -.liquid .ec #extra { float:left; *float:none; } - -/* Floating 3 Columns */ -.liquid .cne #content { float:left; margin-right:2%; } -.liquid .cne #navigation { float:left; } -.liquid .cne #extra { float:right; } - -.liquid .ecn #content { float:left; margin-right:-100%; left:22%; } -.liquid .ecn #navigation { float:right; } -.liquid .ecn #extra { float:left; } - -.liquid .nec #content { float:right; } -.liquid .nec #navigation { float:left; margin-right:2%; } -.liquid .nec #extra { float:left; } - -.liquid .cen #content { float:left; margin-right:2%; } -.liquid .cen #navigation { float:right; } -.liquid .cen #extra { float:left; } - -.liquid .nce #content { float:left; margin-right:-100%; left:22%; } -.liquid .nce #navigation { float:left; } -.liquid .nce #extra { float:right; } - -.liquid .enc #content { float:right; margin-left:2%; } -.liquid .enc #navigation { float:right; } -.liquid .enc #extra { float:left; } - -.liquid .cee #content { float:left; _margin-right:-3px; } -.liquid .cee #extra { float:right; *float:none; *left:2%; } -.liquid .cee .extra1 { float:left; } -.liquid .cee .extra2 { float:right; } - -.liquid .eec #content { float:right; _margin-left:-3px; } -.liquid .eec #extra { float:left; *float:none; *left:0; } -.liquid .eec .extra1{ float:left; } -.liquid .eec .extra2{ float:right; } - -.liquid .ece #content { float:left; margin-right:-100%; left:22%;} -.liquid .ece #extra { float:none; } -.liquid .ece .extra1{ float:left; } -.liquid .ece .extra2{ float:right; } - -/* ---------- Hybrid Layout Preset ---------- */ -/* c = #content, n = #navigation, e = #extra */ - -/* Width */ -.hybrid #container { width:100%; } -.hybrid #body { width:auto; } -.hybrid #content { width:100%; } -.hybrid #navigation { width:200px; } -.hybrid #extra { width:200px; } -.hybrid .c1 #navigation { width:300px; } -.hybrid .c1 #extra { width:auto; } -.hybrid .c1 #extra .section { width:300px; } -.hybrid .cee #extra, -.hybrid .eec #extra { width:420px;} -.hybrid .ece #extra { width:100%;} -.hybrid .cee #extra .section, -.hybrid .eec #extra .section, -.hybrid .ece #extra .section { width:200px; } - -/* Floating 1 Columns */ -.hybrid .c1 #content { clear:both; } - -.hybrid .ne #navigation, -.hybrid .ne #extra .extra1 { margin-right:30px; } - -.hybrid .en #navigation, -.hybrid .en #extra .extra1 { margin-left:30px; } - -/* Floating 2 Columns */ -.hybrid .cn #body { margin-right:220px; } -.hybrid .cn #content { float:left; margin-right:-100%; } -.hybrid .cn #navigation, -.hybrid .cn #extra { float:right; left:220px; clear:right; } - -.hybrid .nc #body { margin-left:220px; } -.hybrid .nc #content { float:right; margin-left:-100%; *margin-left:0; } -.hybrid .nc #navigation, -.hybrid .nc #extra { float:left; left:-220px; clear:left; } - -.hybrid .ce #body { margin-right:220px; } -.hybrid .ce #content { float:left; margin-right:-100%; } -.hybrid .ce #navigation, -.hybrid .ce #extra { float:right; left:220px; clear:right; *float:none; *left:100%; *margin-left:20px; *margin-right:-200px; } -.hybrid .ce #navigation { width:100% !important; right:-220px; } - -.hybrid .ec #body { margin-left:220px; } -.hybrid .ec #content { float:right; margin-left:-100%; _float:left; _margin-left:0; _margin-right:-100%; } -.hybrid .ec #navigation, -.hybrid .ec #extra { float:left; left:-220px; clear:left; *float:none; *margin-right:-200px; } -.hybrid .ec #navigation { width:100% !important; } - -/* Floating 3 Columns */ -.hybrid .cne #body { margin-right:440px; } -.hybrid .cne #content { float:left; } -.hybrid .cne #navigation { float:left; margin-right:-200px; left:20px; } -.hybrid .cne #extra { float:right; margin-left:-200px; left:440px; } - -.hybrid .ecn #body { margin-left:220px; margin-right:220px; } -.hybrid .ecn #content { float:left; margin-right:-100%; } -.hybrid .ecn #navigation { float:right; margin-left:-200px; left:220px; } -.hybrid .ecn #extra { float:left; left:-220px; } - -.hybrid .nec #body { margin-left:440px; } -.hybrid .nec #content { float:right; } -.hybrid .nec #navigation { float:left; margin-right:-200px; left:-440px; } -.hybrid .nec #extra { float:left; margin-right:-200px; left:-220px; } - -.hybrid .cen #body { margin-right:440px; } -.hybrid .cen #content { float:left; } -.hybrid .cen #navigation { float:right; margin-left:-200px; left:440px; } -.hybrid .cen #extra { float:left; margin-right:-200px; left:20px; } - -.hybrid .nce #body { margin-left:220px; margin-right:220px; } -.hybrid .nce #content { float:left; margin-right:-100%; } -.hybrid .nce #navigation { float:left; margin-right:-200px; left:-220px; } -.hybrid .nce #extra { float:right; right:-220px; } - -.hybrid .enc #body { margin-left:440px; } -.hybrid .enc #content { float:right; } -.hybrid .enc #navigation { float:right; margin-left:-200px; left:-20px; } -.hybrid .enc #extra { float:left; margin-right:-200px; left:-440px; } - -.hybrid .cee #body { margin-right:440px;} -.hybrid .cee #content { float:left; margin-right:-100%; } -.hybrid .cee #navigation { right:-440px;} -.hybrid .cee #extra { float:right; left:440px; *float:none; *left:100%; *margin-left:20px; *margin-right:-420px; } -.hybrid .cee .extra1 { float:left; } -.hybrid .cee .extra2 { float:right; } - -.hybrid .eec #body { margin-left:440px;} -.hybrid .eec #content { float:left; margin-right:-100%; } -.hybrid .eec #extra { float:left; left:-440px; *float:none; *margin-right:-420px; } -.hybrid .eec .section{ float:left;} -.hybrid .eec .extra1{ float:left; } -.hybrid .eec .extra2{ float:right; } - -.hybrid .ece #body { margin:0 220px; } -.hybrid .ece #content { float:left; margin-right:-100%; } -.hybrid .ece #navigation { right:-220px; } -.hybrid .ece #extra { float:none; } -.hybrid .ece .extra1{ float:left; left:-220px; margin-right:-200px; } -.hybrid .ece .extra2{ float:right; right:-220px; margin-left:-200px; } - -/* Navigation Top */ -.nTop #navigation { position:absolute; float:right !important; width:auto !important; margin:0 !important; *clear:none !important; overflow:visible; top:-4em; left:auto !important; right:0; } -.nTop #navigation .section { position:absolute; float:right; top:0; right:0; width:auto; margin:0; padding:0; } -.nTop #navigation .section:after { content:""; display:block; clear:both; width:0; height:0; overflow:hidden; visibility:hidden; font:0/0 Sans-serif;} -.nTop #navigation h2 { position:absolute; left:0; top:0; width:0; height:0; border:0; overflow:hidden; visibility:hidden; font:0/0 Sans-serif; } -.nTop #navigation ul.nav { position:relative; display:block; float:right; margin:0; padding:0; list-style:none; overflow:hidden; text-align:right; white-space:nowrap; } -.nTop #navigation ul.nav li { position:relative; left:-1px; display:inline; white-space:nowrap; border-left:1px solid #ccc; padding-left:5px; } diff --git a/modules/planet/skins/xe_planet/footer.html b/modules/planet/skins/xe_planet/footer.html index 64d09e3c9..c52c78da0 100644 --- a/modules/planet/skins/xe_planet/footer.html +++ b/modules/planet/skins/xe_planet/footer.html @@ -1,8 +1,10 @@
+
- diff --git a/modules/planet/skins/xe_planet/header.html b/modules/planet/skins/xe_planet/header.html index fa6880ce5..610e29b8c 100644 --- a/modules/planet/skins/xe_planet/header.html +++ b/modules/planet/skins/xe_planet/header.html @@ -1,5 +1,4 @@ - - + @@ -22,79 +21,83 @@ -
-
-