diff --git a/app/Controllers/extensionController.php b/app/Controllers/extensionController.php
index 5dd7eac89..ec5eecadb 100644
--- a/app/Controllers/extensionController.php
+++ b/app/Controllers/extensionController.php
@@ -20,7 +20,15 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
*/
public function indexAction() {
Minz_View::prependTitle(_t('admin.extensions.title') . ' · ');
- $this->view->extension_list = Minz_ExtensionManager::list_extensions();
+ $this->view->extension_list = array(
+ 'system' => array(),
+ 'user' => array(),
+ );
+
+ $extensions = Minz_ExtensionManager::list_extensions();
+ foreach ($extensions as $ext) {
+ $this->view->extension_list[$ext->getType()][] = $ext;
+ }
}
/**
@@ -36,6 +44,9 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
public function configureAction() {
if (Minz_Request::param('ajax')) {
$this->view->_useLayout(false);
+ } else {
+ $this->indexAction();
+ $this->view->change_view('extension', 'index');
}
$ext_name = urldecode(Minz_Request::param('e'));
diff --git a/app/i18n/en/admin.php b/app/i18n/en/admin.php
index 3161683a8..947d0e6c7 100644
--- a/app/i18n/en/admin.php
+++ b/app/i18n/en/admin.php
@@ -103,10 +103,16 @@ return array(
),
),
'extensions' => array(
+ 'disabled' => 'Disabled',
'empty_list' => 'There is no installed extension',
+ 'enabled' => 'Enabled',
'no_configure_view' => 'This extension cannot be configured.',
- 'system' => 'System extension (you have no rights on it)',
+ 'system' => array(
+ '_' => 'System extensions',
+ 'no_rights' => 'System extension (you have no rights on it)',
+ ),
'title' => 'Extensions',
+ 'user' => 'User extensions',
),
'stats' => array(
'_' => 'Statistics',
diff --git a/app/i18n/fr/admin.php b/app/i18n/fr/admin.php
index 3d69e4daf..980f1fccf 100644
--- a/app/i18n/fr/admin.php
+++ b/app/i18n/fr/admin.php
@@ -103,10 +103,16 @@ return array(
),
),
'extensions' => array(
+ 'disabled' => 'Désactivée',
'empty_list' => 'Il n’y a aucune extension installée.',
+ 'enabled' => 'Activée',
'no_configure_view' => 'Cette extension ne peut pas être configurée.',
- 'system' => 'Extension système (vous n’avez aucun droit dessus)',
+ 'system' => array(
+ '_' => 'Extensions système',
+ 'no_rights' => 'Extension système (vous n’avez aucun droit dessus)',
+ ),
'title' => 'Extensions',
+ 'user' => 'Extensions utilisateur',
),
'stats' => array(
'_' => 'Statistiques',
diff --git a/app/views/extension/configure.phtml b/app/views/extension/configure.phtml
index c03439a75..8933eeae5 100644
--- a/app/views/extension/configure.phtml
+++ b/app/views/extension/configure.phtml
@@ -1,23 +1,3 @@
partial('aside_configure');
-}
-
-?>
-
-
-
extension->getName(); ?> (extension->getVersion(); ?>) — extension->getType(); ?>
-
-
extension->getDescription(); ?> — extension->getAuthor()); ?>
-
-
- extension->getConfigureView();
- if ($configure_view !== false) {
- echo $configure_view;
- } else {
- ?>
-
-
-
+$this->renderHelper('extension/configure');
diff --git a/app/views/extension/index.phtml b/app/views/extension/index.phtml
index 25b0eb9ee..f2d05028f 100644
--- a/app/views/extension/index.phtml
+++ b/app/views/extension/index.phtml
@@ -5,35 +5,40 @@
- extension_list)) { ?>
- extension_list as $ext) { ?>
-
- -
- getType() === 'user' || FreshRSS_Auth::hasAccess('admin')) { ?>
- getName()); ?>
-
-
- isEnabled()) { ?>
-
-
-
-
-
-
-
-
-
-
-
-
- - getName(); ?>
-
+ extension_list['system'])) { ?>
+
+ extension_list['system'] as $ext) {
+ $this->ext_details = $ext;
+ $this->renderHelper('extension/details');
+ }
+ ?>
-
+
+ extension_list['user'])) { ?>
+
+ extension_list['user'] as $ext) {
+ $this->ext_details = $ext;
+ $this->renderHelper('extension/details');
+ }
+ ?>
+ extension_list['system']) && empty($this->extension_list['user'])) {
+ ?>
-
-
+extension) ? ' class="active"' : ''; ?>
+>
+>
+extension)) {
+ $this->renderHelper('extension/configure');
+ }
+?>
+
diff --git a/app/views/helpers/extension/configure.phtml b/app/views/helpers/extension/configure.phtml
new file mode 100644
index 000000000..95d968aba
--- /dev/null
+++ b/app/views/helpers/extension/configure.phtml
@@ -0,0 +1,19 @@
+
+
+ extension->getName(); ?> (extension->getVersion(); ?>) —
+ extension->isEnabled() ? _t('admin.extensions.enabled')
+ : _t('admin.extensions.disabled'); ?>
+
+
+
extension->getDescription(); ?> — extension->getAuthor()); ?>
+
+
+ extension->getConfigureView();
+ if ($configure_view !== false) {
+ echo $configure_view;
+ } else {
+ ?>
+
+
+
diff --git a/app/views/helpers/extension/details.phtml b/app/views/helpers/extension/details.phtml
new file mode 100644
index 000000000..acba4e816
--- /dev/null
+++ b/app/views/helpers/extension/details.phtml
@@ -0,0 +1,21 @@
+
+ -
+ ext_details->getType() === 'user' || FreshRSS_Auth::hasAccess('admin')) { ?>
+ ext_details->getName()); ?>
+
+
+ ext_details->isEnabled()) { ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ - ext_details->getName(); ?>
+