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+' |