Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/registration.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPellaeon Lin <nfsmwlin@gmail.com>2015-05-17 10:17:35 +0300
committerPellaeon Lin <nfsmwlin@gmail.com>2015-05-17 10:17:35 +0300
commit1f9d55ae1da432650ecc6757767c667d71868495 (patch)
treeb296a5632fdd3de35ed75553a8c35891fa4e36dc
parenta88e27ba85ef29224e784cf0423543132652447e (diff)
Update# admin page section
-rw-r--r--admin.php16
-rw-r--r--app/registration.php18
-rw-r--r--appinfo/app.php2
-rw-r--r--appinfo/routes.php1
-rw-r--r--controller/settingscontroller.php80
-rw-r--r--js/settings.js9
-rw-r--r--templates/admin.php17
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>