diff options
| author | 2014-12-08 12:01:47 +0100 | |
|---|---|---|
| committer | 2014-12-08 12:01:47 +0100 | |
| commit | c6dfec3ad351ee3b828c6a2c0a273bad5d9ac0df (patch) | |
| tree | 53a8881481b44c4bddeacf81c77ff8fbc5798fdc | |
| parent | 2232d1e02a4bc9dbaa99cdbd22efad116ec01403 (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.php | 16 | ||||
| -rw-r--r-- | app/views/extension/configure.phtml | 17 | ||||
| -rw-r--r-- | lib/Minz/Extension.php | 21 |
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() { |
