diff options
author | Pellaeon Lin <nfsmwlin@gmail.com> | 2015-05-17 10:17:35 +0300 |
---|---|---|
committer | Pellaeon Lin <nfsmwlin@gmail.com> | 2015-05-17 10:17:35 +0300 |
commit | 1f9d55ae1da432650ecc6757767c667d71868495 (patch) | |
tree | b296a5632fdd3de35ed75553a8c35891fa4e36dc | |
parent | a88e27ba85ef29224e784cf0423543132652447e (diff) |
Update# admin page section
-rw-r--r-- | admin.php | 16 | ||||
-rw-r--r-- | app/registration.php | 18 | ||||
-rw-r--r-- | appinfo/app.php | 2 | ||||
-rw-r--r-- | appinfo/routes.php | 1 | ||||
-rw-r--r-- | controller/settingscontroller.php | 80 | ||||
-rw-r--r-- | js/settings.js | 9 | ||||
-rw-r--r-- | templates/admin.php | 17 |
7 files changed, 141 insertions, 2 deletions
diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..3c3ea7f --- /dev/null +++ b/admin.php @@ -0,0 +1,16 @@ +<?php +/** + * ownCloud - registration + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Pellaeon Lin <pellaeon@cnmc.tw> + * @copyright Pellaeon Lin 2015 + */ + +namespace OCA\Registration\App; + +$app = new Registration(); +$controller = $app->getContainer()->query('SettingsController'); +return $controller->displayPanel()->render(); diff --git a/app/registration.php b/app/registration.php index 6afed71..649aacf 100644 --- a/app/registration.php +++ b/app/registration.php @@ -11,10 +11,10 @@ namespace OCA\Registration\App; - use \OCP\AppFramework\App; use \OCA\Registration\Controller\RegisterController; +use \OCA\Registration\Controller\SettingsController; use \OCA\Registration\Wrapper; use \OCA\Registration\Db\PendingRegist; @@ -31,7 +31,7 @@ class Registration extends App { */ $container->registerService('RegisterController', function($c) { return new RegisterController( - $c->query('AppName'), + $c->query('AppName'), $c->query('Request'), $c->query('Mail'), $c->query('L10N'), @@ -42,6 +42,16 @@ class Registration extends App { ); }); + $container->registerService('SettingsController', function($c) { + return new SettingsController( + $c->query('AppName'), + $c->query('Request'), + $c->query('L10N'), + $c->query('Config'), + $c->query('GroupManager') + ); + }); + /** * Core @@ -54,6 +64,10 @@ class Registration extends App { return $c->query('ServerContainer')->getUserManager(); }); + $container->registerService('GroupManager', function($c) { + return $c->query('ServerContainer')->getGroupManager(); + }); + $container->registerService('Config', function($c) { return $c->query('ServerContainer')->getConfig(); }); diff --git a/appinfo/app.php b/appinfo/app.php index 1b449f0..3a54f5b 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -15,3 +15,5 @@ $app = new Registration(); $c = $app->getContainer(); \OC_App::registerLogIn(array('name' => $c->query('L10N')->t('Register'), 'href' => $c->query('URLGenerator')->linkToRoute('registration.register.askEmail'))); + +\OCP\App::registerAdmin($c->getAppName(), 'admin'); diff --git a/appinfo/routes.php b/appinfo/routes.php index 67e83c0..2b52251 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -22,6 +22,7 @@ namespace OCA\Registration\App; $application = new Registration(); $application->registerRoutes($this, array('routes' => array( + array('name' => 'settings#admin', 'url' => '/settings', 'verb' => 'POST'), array('name' => 'register#askEmail', 'url' => '/', 'verb' => 'GET'), array('name' => 'register#validateEmail', 'url' => '/', 'verb' => 'POST'), array('name' => 'register#verifyToken', 'url' => '/verify/{token}', 'verb' => 'GET'), diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php new file mode 100644 index 0000000..e1e2cb7 --- /dev/null +++ b/controller/settingscontroller.php @@ -0,0 +1,80 @@ +<?php +/** + * ownCloud - registration + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Pellaeon Lin <pellaeon@cnmc.tw> + * @copyright Pellaeon Lin 2015 + */ + +namespace OCA\Registration\Controller; + +use \OCP\IRequest; +use \OCP\AppFramework\Http\TemplateResponse; +use \OCP\AppFramework\Http\DataResponse; +use \OCP\AppFramework\Http; +use \OCP\AppFramework\Controller; +use \OCP\IUserManager; +use \OCP\IGroupManager; +use \OCP\IL10N; +use \OCP\IConfig; +use \OCP\IUser; + +class SettingsController extends Controller { + + private $l10n; + private $config; + private $groupmanager; + protected $appName; + + public function __construct($appName, IRequest $request, IL10N $l10n, IConfig $config, IGroupManager $groupmanager){ + $this->l10n = $l10n; + $this->config = $config; + $this->groupmanager = $groupmanager; + $this->appName = $appName; + parent::__construct($appName, $request); + } + + /** + * @AdminRequired + * + * @param string $registered_user_group all newly registered user will be put in this group + * @return DataResponse + */ + public function admin($registered_user_group) { + $groups = $this->groupmanager->search(''); + foreach ( $groups as $group ) { + $group_id_list[] = $group->getGid(); + } + if ( in_array($registered_user_group, $group_id_list) ) { + $this->config->setAppValue($this->appName, 'registered_user_group', $registered_user_group); + return new DataResponse(array( + 'data' => array( + 'message' => (string) $this->l10n->t('Your settings have been updated.'), + ), + )); + } else { + return new DataResponse(array( + 'data' => array( + 'message' => (string) $this->l10n->t('No such group'), + ), + ), Http::STATUS_NOT_FOUND); + } + } + /** + * @AdminRequired + * + * @return TemplateResponse + */ + public function displayPanel() { + $groups = $this->groupmanager->search(''); + foreach ( $groups as $group ) { + $group_id_list[] = $group->getGid(); + } + return new TemplateResponse('registration', 'admin', [ + 'groups' => $group_id_list + ], ''); + } +} diff --git a/js/settings.js b/js/settings.js new file mode 100644 index 0000000..44a6b37 --- /dev/null +++ b/js/settings.js @@ -0,0 +1,9 @@ +$(document).ready(function() { + function saveSettings() { + var post = $('#registered_user_group').serialize(); + + $.post(OC.generateUrl('/apps/registration/settings'), post); + } + + $('#registered_user_group').change(saveSettings); +}); diff --git a/templates/admin.php b/templates/admin.php new file mode 100644 index 0000000..645e312 --- /dev/null +++ b/templates/admin.php @@ -0,0 +1,17 @@ +<?php +script('registration', 'settings'); +?> +<form id="registration" class="section"> + <h2><?php p($l->t('Registration')); ?></h2> + <p> + <label for="registered_user_group"><?php p($l->t('Default group that all registered users belong')); ?></label> + <select id="registered_user_group" name="registered_user_group"> + <option value="none"><?php p($l->t('None')); ?></option> +<?php +foreach ( $_['groups'] as $group ) { + echo '<option value="'.$group.'">'.$group.'</option>'; +} +?> + </select> + </p> +</form> |