summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
l---------hosted/js1
l---------hosted/js/jquery.min.js1
l---------hosted/js/kolab_admin.js1
-rw-r--r--hosted/js/kolab_hosted.js67
-rw-r--r--lib/hosted/kolab_client_task_signup.php24
-rw-r--r--public_html/skins/default/templates/signup.html5
6 files changed, 83 insertions, 16 deletions
diff --git a/hosted/js b/hosted/js
deleted file mode 120000
index 0723f3a..0000000
--- a/hosted/js
+++ /dev/null
@@ -1 +0,0 @@
-../public_html/js/ \ No newline at end of file
diff --git a/hosted/js/jquery.min.js b/hosted/js/jquery.min.js
new file mode 120000
index 0000000..c3b1873
--- /dev/null
+++ b/hosted/js/jquery.min.js
@@ -0,0 +1 @@
+../../public_html/js/jquery.min.js \ No newline at end of file
diff --git a/hosted/js/kolab_admin.js b/hosted/js/kolab_admin.js
new file mode 120000
index 0000000..ea11949
--- /dev/null
+++ b/hosted/js/kolab_admin.js
@@ -0,0 +1 @@
+../../public_html/js/kolab_admin.js \ No newline at end of file
diff --git a/hosted/js/kolab_hosted.js b/hosted/js/kolab_hosted.js
new file mode 100644
index 0000000..5d98c13
--- /dev/null
+++ b/hosted/js/kolab_hosted.js
@@ -0,0 +1,67 @@
+/*
+ +--------------------------------------------------------------------------+
+ | This file is part of the Kolab Web Admin Panel |
+ | |
+ | Copyright (C) 2011-2012, Kolab Systems AG |
+ | |
+ | This program is free software: you can redistribute it and/or modify |
+ | it under the terms of the GNU Affero General Public License as published |
+ | by the Free Software Foundation, either version 3 of the License, or |
+ | (at your option) any later version. |
+ | |
+ | This program is distributed in the hope that it will be useful, |
+ | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+ | GNU Affero General Public License for more details. |
+ | |
+ | You should have received a copy of the GNU Affero General Public License |
+ | along with kadm program. If not, see <http://www.gnu.org/licenses/> |
+ +--------------------------------------------------------------------------+
+ | Author: Torsten Grote <grote@kolabsys.com> |
+ +--------------------------------------------------------------------------+
+*/
+
+kadm.check_user_availability = function(userid)
+{
+ // get form data and build new email address
+ data = kadm.serialize_form('#signup-form');
+ uid = data['alias'] + '@' + data['domain'];
+
+ if(isValidEmailAddress(uid)) {
+ // update future mail form field
+ $('input[name="mail"]').val(uid);
+
+ // check if user with that email address already exists
+ kadm.api_post('users.list', {'search': {'mail': {'value': uid} } }, 'check_user_availability_response');
+ } else {
+ update_user_info('This is not a valid email address!');
+ }
+};
+
+kadm.check_user_availability_response = function(response)
+{
+ if (!kadm.api_response(response))
+ return;
+
+ // setup up user message
+ var msg = '';
+ if(response['result']['count'] > 0) msg = 'User does already exist!';
+
+ update_user_info(msg);
+};
+
+function update_user_info(msg) {
+ if($('span[id="availability"]').length) {
+ // update existing span area
+ $('span[id="availability"]').html(msg);
+ }
+ else {
+ // add span area and inform about non-availability
+ $('input[name="alias"]').after(' <span id="availability" style="font-weight:bold;margin-left:1em;color:red;">' + msg + '</span>');
+ }
+}
+
+function isValidEmailAddress(emailAddress) {
+ var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
+ return pattern.test(emailAddress);
+};
diff --git a/lib/hosted/kolab_client_task_signup.php b/lib/hosted/kolab_client_task_signup.php
index 91dce2f..3df4795 100644
--- a/lib/hosted/kolab_client_task_signup.php
+++ b/lib/hosted/kolab_client_task_signup.php
@@ -43,8 +43,8 @@ class kolab_client_task_signup extends kolab_client_task
// Set the session token we got in the API client instance, so subsequent
// API calls are made in the same session.
- $token = $result->get('session_token');
- $this->api->set_session_token($token);
+ $this->token = $result->get('session_token');
+ $this->api->set_session_token($this->token);
// Run security checks
// TODO figure out to reenable this
@@ -112,15 +112,15 @@ class kolab_client_task_signup extends kolab_client_task
'label' => 'Username',
'name' => 'alias',
'type' => kolab_form::INPUT_TEXT,
-// 'onchange'=> "kadm.command('signup.update_mail', 'test')",
-// 'onchange'=> "kadm.form_value_change(['mail'])",
+ 'value' => 'john.doe',
+ 'onchange'=> "kadm.check_user_availability()",
));
$form->add_element(array(
'label' => 'Domain',
'name' => 'domain',
'type' => kolab_form::INPUT_SELECT,
'options' => $domain_form_names,
-// 'onchange'=> "kadm.command('signup.update_mail', 'test')",
+ 'onchange'=> "kadm.check_user_availability()",
));
$form->add_element(array(
'label' => 'Current Email Address',
@@ -135,18 +135,18 @@ class kolab_client_task_signup extends kolab_client_task
));
$form->add_button(array(
'value' => kolab_html::escape('Sign up'),
-// 'onclick' => "kadm.command('signup.check', 'test')",
+ 'onclick' => "alert('not working yet')",
));
+ // keep session
+ $this->output->set_env('token', $this->token);
+
+ // assign form output to template variable
$this->output->assign('form', $form->output());
}
- public function action_update_mail() {
- $this->output->set_object('test', 'TEST UPDATE');
- }
-
- public function action_check() {
- $this->output->set_object('test', 'TEST CHECK');
+ public function action_add_user() {
+ // TODO actually add user here
}
}
diff --git a/public_html/skins/default/templates/signup.html b/public_html/skins/default/templates/signup.html
index 2370577..0498272 100644
--- a/public_html/skins/default/templates/signup.html
+++ b/public_html/skins/default/templates/signup.html
@@ -7,6 +7,7 @@
<link rel="shortcut icon" type="image/png" href="{$skin_path}images/favicon.png" />
<script src="js/jquery.min.js"></script>
<script src="js/kolab_admin.js"></script>
+ <script src="js/kolab_hosted.js"></script>
<script src="{$skin_path}ui.js"></script>
</head>
<body>
@@ -31,12 +32,10 @@
</div>
- <div id="test"></div>
-
</div>
<div id="footer">
{include file="footer.html"}
</div>
-</body>
{$script}
+</body>
</html>