From 9e65afbc7a0ada94c8b17a3a7647d03fd9f49449 Mon Sep 17 00:00:00 2001 From: flyskyko Date: Fri, 14 Sep 2012 05:25:02 +0000 Subject: [PATCH] issue 2460, sort layout on layout list git-svn-id: http://xe-core.googlecode.com/svn/branches/luminous@11231 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- modules/layout/layout.admin.view.php | 18 ++++++++++ modules/layout/layout.model.php | 49 +++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/modules/layout/layout.admin.view.php b/modules/layout/layout.admin.view.php index d3b20be41..c701eacea 100644 --- a/modules/layout/layout.admin.view.php +++ b/modules/layout/layout.admin.view.php @@ -101,6 +101,8 @@ $layout_list[$item->layout][] = $item; } + usort($layout_list, array($this, 'sortLayoutInstance')); + Context::set('layout_list', $layout_list); $this->setTemplateFile('layout_all_instance_list'); @@ -109,6 +111,22 @@ $security->encodeHTML('layout_list..'); } + /** + * Sort layout instance by layout name, instance name + */ + function sortLayoutInstance($a, $b) + { + $aTitle = strtolower($a['title']); + $bTitle = strtolower($b['title']); + + if($aTitle == $bTitle) + { + return 0; + } + + return ($aTitle < $bTitle) ? -1 : 1; + } + /** * Display list of pc layout instance * @return void|Object (void : success, Object : fail) diff --git a/modules/layout/layout.model.php b/modules/layout/layout.model.php index dc2d8ca9b..96d6c5e76 100644 --- a/modules/layout/layout.model.php +++ b/modules/layout/layout.model.php @@ -143,7 +143,7 @@ $searched_count = count($searched_list); if(!$searched_count) return; - natcasesort($searched_list); + // natcasesort($searched_list); // Return information for looping searched list of layouts $list = array(); for($i=0;$i<$searched_count;$i++) { @@ -152,6 +152,11 @@ // Get information of the layout $layout_info = $this->getLayoutInfo($layout, null, $layout_type); + if(!$layout_info) + { + continue; + } + if ($withAutoinstallInfo) { // get easyinstall remove url @@ -170,9 +175,37 @@ } $list[] = $layout_info; } + + usort($list, array($this, 'sortLayoutByTitle')); return $list; } + /** + * Sort layout by title + */ + function sortLayoutByTitle($a, $b) + { + if(!$a->title) + { + $a->title = $a->layout; + } + + if(!$b->title) + { + $b->title = $b->layout; + } + + $aTitle = strtolower($a->title); + $bTitle = strtolower($b->title); + + if($aTitle == $bTitle) + { + return 0; + } + + return ($aTitle < $bTitle) ? -1 : 1; + } + /** * Get a count of layout * @param string $layoutType (P : PC, M : Mobile) @@ -238,6 +271,7 @@ // Read the xml file for module skin information if(!$xml_file) $xml_file = sprintf("%sconf/info.xml", $layout_path); if(!file_exists($xml_file)) { + $layout_info->title = $layout; $layout_info->layout = $layout; $layout_info->path = $layout_path; $layout_info->layout_title = $layout_title; @@ -254,6 +288,7 @@ if(file_exists($cache_file)&&filemtime($cache_file)>filemtime($xml_file)) { @include($cache_file); + if($layout_info->extra_var && $vars) { foreach($vars as $key => $value) { if(!$layout_info->extra_var->{$key} && !$layout_info->{$key}) { @@ -261,6 +296,12 @@ } } } + + if(!$layout_info->title) + { + $layout_info->title = $layout; + } + return $layout_info; } // If no cache file exists, parse the xml and then return the variable. @@ -490,6 +531,12 @@ $buff = ''; FileHandler::writeFile($cache_file, $buff); if(file_exists($cache_file)) @include($cache_file); + + if(!$layout_info->title) + { + $layout_info->title = $layout; + } + return $layout_info; }