From e336df77c1304aeee6cbf6bc7a1cc69e5fff9a60 Mon Sep 17 00:00:00 2001 From: zero Date: Mon, 11 Jun 2007 02:10:51 +0000 Subject: [PATCH] git-svn-id: http://xe-core.googlecode.com/svn/trunk@1585 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 17 +++++++++++++++++ classes/context/Context.class.php | 18 +++++++++++++++--- classes/module/ModuleHandler.class.php | 9 --------- common/js/tree_menu.js | 2 +- common/tpl/common_layout.html | 1 - config/config.inc.php | 2 +- modules/blog/blog.view.php | 7 ------- .../blog/skins/default/js/blog_tree_menu.js | 8 ++++---- modules/blog/skins/default/layout.html | 3 +-- modules/board/board.class.php | 2 +- modules/file/file.model.php | 2 +- modules/menu/lang/ko.lang.php | 2 +- modules/menu/menu.admin.controller.php | 14 ++++++++------ modules/menu/tpl/js/menu_admin.js | 2 +- .../skins/blog_archive_list/list.html | 2 +- .../skins/blog_calendar_list/list.html | 2 +- .../skins/blog_newest_document/list.html | 2 +- .../newest_document/skins/default/list.html | 2 +- 18 files changed, 55 insertions(+), 42 deletions(-) diff --git a/.htaccess b/.htaccess index e3047801f..956eb88c6 100644 --- a/.htaccess +++ b/.htaccess @@ -21,6 +21,23 @@ RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ ./index.php?mid=$1&act=$2 [L] # mid + page permanent link RewriteRule ^([a-zA-Z0-9_]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&page=$2 [L] +# mid + category permanent link +RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)$ ./index.php?mid=$1&category=$2 [L] + +# mid + category + page +RewriteRule ^([a-zA-Z0-9_]+)/category/([[:digit:]]+)/page/([[:digit:]]+)$ ./index.php?mid=$1&category=$2&page=$3 [L] + +# mid + search target regdate (year+month) +RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+){0,4}/([[:digit:]]+){0,2}$ ./index.php?mid=$1&search_target=regdate&search_keyword=$2$3 [L] + +# mid + search target regdate (year+month+day) +RewriteRule ^([a-zA-Z0-9_]+)/([[:digit:]]+){0,4}/([[:digit:]]+){0,2}/([[:digit:]]+){0,2}$ ./index.php?mid=$1&search_target=regdate&search_keyword=$2$3$4 [L] + +# mid + search target tag +RewriteRule ^([a-zA-Z0-9_]+)/tag/(.*)$ ./index.php?mid=$1&search_target=tag&search_keyword=$2 [L] + +# mid + search target writer +RewriteRule ^([a-zA-Z0-9_]+)/writer/(.*)$ ./index.php?mid=$1&search_target=nick_name&search_keyword=$2 [L] # module permanent link RewriteRule ^([a-zA-Z0-9_]+)(/){0,1}$ ./index.php?mid=$1 [L] diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 75aa38687..6f76854fc 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -491,8 +491,8 @@ $var_count = count($get_vars); if(!$var_count) return ''; - // rewrite모듈을 사용하고 인자의 값이 2개 이하일 경우 - if($this->allow_rewrite && $var_count < 3) { + // rewrite모듈을 사용하고 인자의 값이 4개 이하일 경우 + if($this->allow_rewrite && $var_count < 4) { $var_keys = array_keys($get_vars); if($var_count == 1) { @@ -504,7 +504,19 @@ if($target=='act.mid' && !ereg('([A-Z]+)',$get_vars['act'])) return sprintf('%s%s/%s',$this->path,$get_vars['mid'],$get_vars['act']); elseif($target=='document_srl.mid') return sprintf('%s%s/%s',$this->path,$get_vars['mid'],$get_vars['document_srl']); elseif($target=='act.document_srl') return sprintf('%s%s/%s',$this->path,$get_vars['document_srl'],$get_vars['act']); - //elseif($target=='mid.page') return sprintf('%s%s/page/%s',$this->path,$get_vars['mid'],$get_vars['page']); + elseif($target=='mid.page') return sprintf('%s%s/page/%s',$this->path,$get_vars['mid'],$get_vars['page']); + elseif($target=='category.mid') return sprintf('%s%s/category/%s',$this->path,$get_vars['mid'],$get_vars['category']); + } elseif($var_count == 3) { + asort($var_keys); + $target = implode('.',$var_keys); + if($target=='category.mid.page') { + return sprintf('%s%s/category/%s/page/%s',$this->path,$get_vars['mid'],$get_vars['category'],$get_vars['page']); + } elseif($target=='mid.search_keyword.search_target' && $get_vars['search_target']=='tag') { + return sprintf('%s%s/tag/%s',$this->path,$get_vars['mid'],str_replace(' ','-',$get_vars['search_keyword'])); + } elseif($target=='mid.search_keyword.search_target' && $get_vars['search_target']=='regdate') { + if(strlen($get_vars['search_keyword'])==8) return sprintf('%s%s/%04d/%02d/%02d',$this->path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2),substr($get_vars['search_keyword'],6,2)); + elseif(strlen($get_vars['search_keyword'])==6) return sprintf('%s%s/%04d/%02d',$this->path,$get_vars['mid'],substr($get_vars['search_keyword'],0,4),substr($get_vars['search_keyword'],4,2)); + } } } diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index e7d492605..a45bea47c 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -177,15 +177,6 @@ } } - // 현재 페이지의 정보를 $zbxe_url이라는 변수로 등록 (common/tpl/common_header.tpl에서 javascript 변수로 설정함) - if(!Context::get('zbxe_url')) { - if($this->mid) $zbxe_url = sprintf('mid=%s',$this->mid); - elseif($_REQUEST['module']) $zbxe_url = sprintf('module=%s',$_REQUEST['module']); - elseif($_REQUEST['document_srl']) $zbxe_url = sprintf('mid=%s', $this->mid); - else $zbxe_url = Context::getRequestUri(); - Context::set('zbxe_url', $zbxe_url); - } - // 해당 모듈에 layout_srl이 있는지 확인 if($oModule->module_info->layout_srl && !$oModule->getLayoutFile()) { // layout_srl이 있으면 해당 레이아웃 정보를 가져와 layout_path/ layout_file 위치 변경 diff --git a/common/js/tree_menu.js b/common/js/tree_menu.js index 93932982c..70c4c8ec2 100644 --- a/common/js/tree_menu.js +++ b/common/js/tree_menu.js @@ -170,7 +170,7 @@ function drawNode(parent_node, menu_id) { tree_menu_folder_list[menu_id][tree_menu_folder_list[menu_id].length] = zone_id; // url을 확인하여 현재의 url과 동일하다고 판단되면 manual_select_node_srl 에 값을 추가 (관리자페이지일 경우는 무시함) - if(node_callback_func[menu_id] == moveTreeMenu && url && typeof(zbxe_url)!="undefined" && zbxe_url == url) manual_select_node_srl = node_srl; + if(node_callback_func[menu_id] == moveTreeMenu && url && current_url.getQuery('mid') == url) manual_select_node_srl = node_srl; // manual_select_node_srl이 node_srl과 같으면 펼침으로 처리 if(manual_select_node_srl == node_srl) expand = "Y"; diff --git a/common/tpl/common_layout.html b/common/tpl/common_layout.html index 9cd8b47c6..8e9e9c437 100644 --- a/common/tpl/common_layout.html +++ b/common/tpl/common_layout.html @@ -18,7 +18,6 @@ diff --git a/config/config.inc.php b/config/config.inc.php index 4933778f0..6b81f4ac3 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -15,7 +15,7 @@ * 0 : files/_debug_message.php 에 연결하여 출력 * 1 : Response Method 가 XML 형식이 아닐 경우 브라우저에 최상단에 주석으로 표시 **/ - define('__DEBUG_OUTPUT__', 1); + define('__DEBUG_OUTPUT__', 0); /** * @brief 디버깅 메세지 출력 diff --git a/modules/blog/blog.view.php b/modules/blog/blog.view.php index 6fdae13c1..d0e119a15 100644 --- a/modules/blog/blog.view.php +++ b/modules/blog/blog.view.php @@ -25,13 +25,6 @@ $this->category_list = $oDocumentModel->getCategoryList($this->module_srl); Context::set('category_list', $this->category_list); - // 선택된 카테고리 목록이 있으면 zbxe_url을 변경하여 트리메뉴에서 카테고리까지 참조할 수 있도록 함 - $category_srl = Context::get('category'); - if($this->category_list[$category_srl]) { - $this->category_srl = $category_srl; - Context::set('zbxe_url', sprintf("mid=%s&category=%d", $this->module_info->mid, $this->category_srl)); - } - // 스킨 경로 구함 $template_path = sprintf("%sskins/%s/",$this->module_path, $this->module_info->skin); $this->setTemplatePath($template_path); diff --git a/modules/blog/skins/default/js/blog_tree_menu.js b/modules/blog/skins/default/js/blog_tree_menu.js index e56e65465..da9e80e5d 100644 --- a/modules/blog/skins/default/js/blog_tree_menu.js +++ b/modules/blog/skins/default/js/blog_tree_menu.js @@ -115,7 +115,6 @@ function blogDrawNode(parent_node) { var text = node.getAttribute("text"); var url = node.getAttribute("url"); var expand = node.getAttribute("expand"); - if(!text) continue; // 자식 노드가 있는지 확인 @@ -132,8 +131,9 @@ function blogDrawNode(parent_node) { // zone_id 값을 세팅 var zone_id = "blog_category_"+node_srl; blog_tree_menu_folder_list[blog_tree_menu_folder_list.length] = zone_id; - - if(url && typeof(zbxe_url)!="undefined" && ( url.substr(url.length-zbxe_url.length, url.length) == zbxe_url)) { + + var current_category = current_url.getQuery('category'); + if(current_category == node_srl) { selected = true; blog_menu_selected = true; } @@ -221,7 +221,7 @@ function blogDrawNode(parent_node) { // 왼쪽 폴더/페이지와 텍스트 위치를 맞추기 위해;;; table태그 일단 사용. 차후 바꾸자.. html += '
'+ '
'+ - ''+ + '
'+ '
'+text+''+document_count_text+'
'+ '
'; diff --git a/modules/blog/skins/default/layout.html b/modules/blog/skins/default/layout.html index fd8fbc488..85dec67d7 100644 --- a/modules/blog/skins/default/layout.html +++ b/modules/blog/skins/default/layout.html @@ -10,7 +10,7 @@ @@ -58,7 +58,6 @@ - {@ $class_name = 'first_menu_selected'} diff --git a/modules/board/board.class.php b/modules/board/board.class.php index c82c50d78..b13e28612 100644 --- a/modules/board/board.class.php +++ b/modules/board/board.class.php @@ -7,7 +7,7 @@ class board extends ModuleObject { - var $search_option = array('title','content','title_content','user_name','user_id','tag'); ///< 검색 옵션 + var $search_option = array('title','content','title_content','user_name','nick_name','user_id','tag'); ///< 검색 옵션 var $skin = "default"; ///< 스킨 이름 var $list_count = 20; ///< 한 페이지에 나타날 글의 수 diff --git a/modules/file/file.model.php b/modules/file/file.model.php index b8828b45b..4aa6a62b3 100644 --- a/modules/file/file.model.php +++ b/modules/file/file.model.php @@ -26,7 +26,7 @@ * @brief 다운로드 경로를 구함 **/ function getDownloadUrl($file_srl, $sid) { - return "./?module=file&act=procFileDownload&file_srl=".$file_srl."&sid=".$sid; + return getUrl('','module','file','act','procFileDownload','file_srl',$file_srl,'sid',$sid); } /** diff --git a/modules/menu/lang/ko.lang.php b/modules/menu/lang/ko.lang.php index a6221436d..aebce2eb1 100644 --- a/modules/menu/lang/ko.lang.php +++ b/modules/menu/lang/ko.lang.php @@ -41,7 +41,7 @@ $lang->about_title = '모듈에 연결시 쉽게 구분할 수 있는 제목을 입력해주세요'; $lang->about_menu_management = "메뉴관리는 선택하신 레이아웃에서 사용하는 메뉴를 구성할 수 있도록 합니다.\n정해진 단계까지 메뉴를 구성 가능하며 입력하신 메뉴를 클릭하시면 상세 정보를 입력할 수 있습니다.\n폴더그림을 클릭하시면 메뉴를 확장하실 수 있습니다.\n간혹 메뉴가 정상적으로 나타나지 않으면 \"캐시파일 재생성\" 버튼을 눌러서 정보를 갱신하세요.\n* 정해진 단계 이상의 메뉴는 제대로 표시되지 않을 수 있습니다."; $lang->about_menu_name = '관리 및 이미지 버튼이 아닐경우 메뉴 명으로 나타날 제목입니다'; - $lang->about_menu_url = "메뉴를 선택시 이동한 URL입니다.
다른 mid를 연결하고자 할때는 \"module=모듈명\" 또는 \"mid=모듈\"등으로
입력하시면 됩니다.
내용이 없을시 메뉴를 선택하여도 아무런 동작이 없게 됩니다."; + $lang->about_menu_url = "메뉴를 선택시 이동한 URL입니다.
다른 모듈을 연결하고자 할 때에는 id값만 입력해주시면 됩니다.
내용이 없을시 메뉴를 선택하여도 아무런 동작이 없게 됩니다."; $lang->about_menu_open_window = '메뉴 선택시 새창으로 띄울 것인지를 정할 수 있습니다'; $lang->about_menu_expand = '트리메뉴(tree_menu.js)를 사용시 늘 펼쳐진 상태로 있게 합니다'; $lang->about_menu_img_btn = '이미지 버튼을 등록하시면 레이아웃에서 자동으로 이미지 버튼으로 교체되어 표시가 됩니다.'; diff --git a/modules/menu/menu.admin.controller.php b/modules/menu/menu.admin.controller.php index 3ab137208..216f65872 100644 --- a/modules/menu/menu.admin.controller.php +++ b/modules/menu/menu.admin.controller.php @@ -307,6 +307,8 @@ // 변수 정리 $name = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->name); $url = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->url); + if(eregi('^([a-zA-Z\_\-]+)$', $node->url)) $href = getUrl('','mid',$node->url); + else $href = $url; $open_window = $node->open_window; $expand = $node->expand; $normal_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->normal_btn); @@ -318,12 +320,14 @@ if($group_srls) $group_check_code = sprintf('($_SESSION["is_admin"]==true||(is_array($_SESSION["group_srls"])&&count(array_intersect($_SESSION["group_srls"], array(%s)))))',$group_srls); else $group_check_code = "true"; $attribute = sprintf( - 'node_srl="%s" text="" url="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ', + 'node_srl="%s" text="" url="" href="" open_window="%s" expand="%s" normal_btn="%s" hover_btn="%s" active_btn="%s" ', $menu_item_srl, $group_check_code, $name, $group_check_code, $url, + $group_check_code, + $href, $open_window, $expand, $normal_btn, @@ -352,10 +356,6 @@ if($menu_item_srl&&$tree[$menu_item_srl]) $child_output = $this->getPhpCacheCode($tree[$menu_item_srl], $tree); else $child_output = array("buff"=>"", "url_list"=>array()); - // 노드의 url에 ://가 있으면 바로 링크, 아니면 제로보드의 링크를 설정한다 ($node->href가 완성된 url) - if($node->url && !strpos($node->url, '://')) $node->href = "./?".$node->url; - else $node->href = $node->url; - // 현재 노드의 url값이 공란이 아니라면 url_list 배열값에 입력 if($node->url) $child_output['url_list'][] = $node->url; $output['url_list'] = array_merge($output['url_list'], $child_output['url_list']); @@ -368,6 +368,8 @@ $name = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->name); $href = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->href); $url = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->url); + if(eregi('^([a-zA-Z\_\-]+)$', $node->url)) $href = getUrl('','mid',$node->url); + else $href = $url; $open_window = $node->open_window; $normal_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->normal_btn); $hover_btn = str_replace(array('&','"','<','>'),array('&','"','<','>'),$node->hover_btn); @@ -377,7 +379,7 @@ // 속성을 생성한다 ( url_list를 이용해서 선택된 메뉴의 노드에 속하는지를 검사한다. 꽁수지만 빠르고 강력하다고 생각;;) $attribute = sprintf( - '"node_srl"=>"%s","text"=>(%s?"%s":""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(%s&&in_array(Context::get("zbxe_url"),array(%s))?1:0),"list"=>array(%s)', + '"node_srl"=>"%s","text"=>(%s?"%s":""),"href"=>(%s?"%s":""),"url"=>(%s?"%s":""),"open_window"=>"%s","normal_btn"=>"%s","hover_btn"=>"%s","active_btn"=>"%s","selected"=>(%s&&in_array(Context::get("mid"),array(%s))?1:0),"list"=>array(%s)', $node->menu_item_srl, $group_check_code, $name, diff --git a/modules/menu/tpl/js/menu_admin.js b/modules/menu/tpl/js/menu_admin.js index b243007bc..eccc47136 100644 --- a/modules/menu/tpl/js/menu_admin.js +++ b/modules/menu/tpl/js/menu_admin.js @@ -153,6 +153,6 @@ function doInsertMid(mid, menu_id) { return; } - fo_obj.menu_url.value = "mid="+mid; + fo_obj.menu_url.value = mid; window.close(); } diff --git a/plugins/archive_list/skins/blog_archive_list/list.html b/plugins/archive_list/skins/blog_archive_list/list.html index df7b167b9..39f07dfdd 100644 --- a/plugins/archive_list/skins/blog_archive_list/list.html +++ b/plugins/archive_list/skins/blog_archive_list/list.html @@ -15,7 +15,7 @@ diff --git a/plugins/calendar/skins/blog_calendar_list/list.html b/plugins/calendar/skins/blog_calendar_list/list.html index e5eb9dd28..06ecbdbf5 100644 --- a/plugins/calendar/skins/blog_calendar_list/list.html +++ b/plugins/calendar/skins/blog_calendar_list/list.html @@ -59,7 +59,7 @@
- {$day} + {$day} {$day} diff --git a/plugins/newest_document/skins/blog_newest_document/list.html b/plugins/newest_document/skins/blog_newest_document/list.html index ed28b7c02..6b27bb781 100644 --- a/plugins/newest_document/skins/blog_newest_document/list.html +++ b/plugins/newest_document/skins/blog_newest_document/list.html @@ -16,7 +16,7 @@
- {cut_str($val->title,20)} + {cut_str($val->title,20)}  *{$val->comment_count} diff --git a/plugins/newest_document/skins/default/list.html b/plugins/newest_document/skins/default/list.html index f8a05949b..25c499246 100644 --- a/plugins/newest_document/skins/default/list.html +++ b/plugins/newest_document/skins/default/list.html @@ -20,7 +20,7 @@