summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-12-08 12:01:47 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-12-08 12:01:47 +0100
commitc6dfec3ad351ee3b828c6a2c0a273bad5d9ac0df (patch)
tree53a8881481b44c4bddeacf81c77ff8fbc5798fdc
parent2232d1e02a4bc9dbaa99cdbd22efad116ec01403 (diff)
Add behaviour to configure action (extensions)
- Put extension configure view in dir_ext/configure.phtml - Handle POST action in Extension->handleConfigureAction() method See https://github.com/FreshRSS/FreshRSS/issues/252
-rw-r--r--app/Controllers/extensionController.php16
-rw-r--r--app/views/extension/configure.phtml17
-rw-r--r--lib/Minz/Extension.php21
3 files changed, 51 insertions, 3 deletions
diff --git a/app/Controllers/extensionController.php b/app/Controllers/extensionController.php
index a1e39af37..73b8070cb 100644
--- a/app/Controllers/extensionController.php
+++ b/app/Controllers/extensionController.php
@@ -27,6 +27,22 @@ class FreshRSS_extension_Controller extends Minz_ActionController {
if (Minz_Request::param('ajax')) {
$this->view->_useLayout(false);
}
+
+ $ext_name = urldecode(Minz_Request::param('e'));
+ $ext = Minz_ExtensionManager::find_extension($ext_name);
+
+ if (is_null($ext)) {
+ Minz_Error::error(404);
+ }
+ if ($ext->getType() === 'system' && !FreshRSS_Auth::hasAccess('admin')) {
+ Minz_Error::error(403);
+ }
+
+ $this->view->extension = $ext;
+
+ if (Minz_Request::isPost()) {
+ $this->view->extension->handleConfigureAction();
+ }
}
/**
diff --git a/app/views/extension/configure.phtml b/app/views/extension/configure.phtml
index a79e9baac..295080d5e 100644
--- a/app/views/extension/configure.phtml
+++ b/app/views/extension/configure.phtml
@@ -7,6 +7,17 @@ if (!Minz_Request::param('ajax')) {
?>
<div class="post">
- <h1>Extension name</h1>
- Not implemented yet!
-</div> \ No newline at end of file
+ <h1><?php echo $this->extension->getName(); ?> (<?php echo $this->extension->getVersion(); ?>) — <?php echo $this->extension->getType(); ?></h1>
+
+ <p class="alert alert-warn"><?php echo $this->extension->getDescription(); ?> — <?php echo _t('gen.by'), ' ', $this->extension->getAuthor(); ?></p>
+
+ <h2><?php echo _t('gen.actions.manage'); ?></h2>
+ <?php
+ $configure_view = $this->extension->getConfigureView();
+ if ($configure_view !== false) {
+ echo $configure_view;
+ } else {
+ ?>
+ <p class="alert alert-warn"><?php echo _t('admin.extensions.no_configure_view'); ?></p>
+ <?php } ?>
+</div>
diff --git a/lib/Minz/Extension.php b/lib/Minz/Extension.php
index c93ba2520..1d706ed80 100644
--- a/lib/Minz/Extension.php
+++ b/lib/Minz/Extension.php
@@ -87,6 +87,27 @@ class Minz_Extension {
}
/**
+ * Return the content of the configure view for the current extension.
+ *
+ * @return the html content from ext_dir/configure.phtml, false if it does
+ * not exist.
+ */
+ public function getConfigureView() {
+ $filename = $this->path . '/configure.phtml';
+ if (!file_exists($filename)) {
+ return false;
+ }
+ return @file_get_contents($filename);
+ }
+
+ /**
+ * Handle the configure POST action.
+ *
+ * It must be redefined by child classes.
+ */
+ public function handleConfigureAction() {}
+
+ /**
* Getters and setters.
*/
public function getName() {