diff options
Diffstat (limited to '')
-rw-r--r-- | admin/plugins_list.php | 47 |
1 files changed, 42 insertions, 5 deletions
diff --git a/admin/plugins_list.php b/admin/plugins_list.php index 4ec64ec29..3f38356b5 100644 --- a/admin/plugins_list.php +++ b/admin/plugins_list.php @@ -30,8 +30,13 @@ include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php'); $template->set_filenames(array('plugins' => 'plugins_list.tpl')); -$base_url = get_root_url().'admin.php?page='.$page['page']; -$action_url = $base_url.'&plugin='.'%s'.'&pwg_token='.get_pwg_token(); +// TODO : use a session parameter +$plugin_order = isset($_GET['plugin_order']) ? $_GET['plugin_order'] : 'state'; +$plugin_display = isset($_GET['plugin_display']) ? $_GET['plugin_display'] : 'compact'; + +$base_url = get_root_url().'admin.php?page='.$page['page'].'&plugin_order='.$plugin_order.'&plugin_display='.$plugin_display; +$pwg_token = get_pwg_token(); +$action_url = $base_url.'&plugin='.'%s'.'&pwg_token='.$pwg_token; $plugins = new plugins(); @@ -70,6 +75,7 @@ $plugins->sort_fs_plugins('name'); $plugins->get_merged_extensions(); $plugins->get_incompatible_plugins(); $merged_plugins = false; +$tpl_plugins = array(); foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) { @@ -81,6 +87,7 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) } $tpl_plugin = array( + 'ID' => $plugin_id, 'NAME' => $fs_plugin['name'], 'VISIT_URL' => $fs_plugin['uri'], 'VERSION' => $fs_plugin['version'], @@ -108,7 +115,7 @@ foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) $merged_plugins = true; } - $template->append('plugins', $tpl_plugin); + array_push($tpl_plugins, $tpl_plugin); } $template->append('plugin_states', 'active'); @@ -128,8 +135,8 @@ if (count($missing_plugin_ids) > 0) { foreach($missing_plugin_ids as $plugin_id) { - $template->append( - 'plugins', + array_push( + $tpl_plugins, array( 'NAME' => $plugin_id, 'VERSION' => $plugins->db_plugins_by_id[$plugin_id]['version'], @@ -142,5 +149,35 @@ if (count($missing_plugin_ids) > 0) $template->append('plugin_states', 'missing'); } +// sort plugins : state or name +if ($plugin_order == 'name') +{ + function cmp($a, $b) + { + return strcasecmp($a['NAME'], $b['NAME']); + } +} +else +{ + function cmp($a, $b) + { + $s = array('merged' => 0, 'missing' => 1, 'active' => 2, 'inactive' => 3); + + if($a['STATE'] == $b['STATE']) + return strcasecmp($a['NAME'], $b['NAME']); + else + return $s[$a['STATE']] >= $s[$b['STATE']]; + } + $plugin_order = 'state'; +} + +usort($tpl_plugins, 'cmp'); +$template->assign(array( + 'plugin_order' => $plugin_order, + 'plugin_display' => $plugin_display, + 'plugins' => $tpl_plugins, + 'PWG_TOKEN' => $pwg_token, +)); + $template->assign_var_from_handle('ADMIN_CONTENT', 'plugins'); ?>
\ No newline at end of file |