summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-01-28 09:50:15 +0000
committerBharat Mediratta <bharat@menalto.com>2009-01-28 09:50:15 +0000
commit1a62a26a369fbb56c46e3fc9bae64084adbd8326 (patch)
treefd1033cd62c9c7110ab911a6593fe162af9c6f6b /modules
parent713c8e8ab3884b261376f2e720720b747a63bb3f (diff)
Add drag and drop support to the admin_users interface. This is still
a work in progress but it actually works mostly.
Diffstat (limited to 'modules')
-rw-r--r--modules/user/controllers/admin_users.php34
-rw-r--r--modules/user/helpers/user.php2
-rw-r--r--modules/user/views/admin_users.html.php74
-rw-r--r--modules/user/views/admin_users_group.html.php11
4 files changed, 95 insertions, 26 deletions
diff --git a/modules/user/controllers/admin_users.php b/modules/user/controllers/admin_users.php
index a2b4999d..85d59b8d 100644
--- a/modules/user/controllers/admin_users.php
+++ b/modules/user/controllers/admin_users.php
@@ -26,7 +26,7 @@ class Admin_Users_Controller extends Controller {
print $view;
}
- public function add() {
+ public function add_user() {
$form = user::get_add_form_admin();
$valid = $form->validate();
@@ -51,11 +51,11 @@ class Admin_Users_Controller extends Controller {
}
}
- public function add_form() {
+ public function add_user_form() {
print user::get_add_form_admin();
}
- public function delete($id) {
+ public function delete_user($id) {
$user = ORM::factory("user", $id);
if (!$user->loaded) {
kohana::show_404();
@@ -77,7 +77,7 @@ class Admin_Users_Controller extends Controller {
print json_encode(array("result" => "success"));
}
- public function delete_form($id) {
+ public function delete_user_form($id) {
$user = ORM::factory("user", $id);
if (!$user->loaded) {
kohana::show_404();
@@ -85,7 +85,7 @@ class Admin_Users_Controller extends Controller {
print user::get_delete_form_admin($user);
}
- public function edit($id) {
+ public function edit_user($id) {
$user = ORM::factory("user", $id);
if (!$user->loaded) {
kohana::show_404();
@@ -118,7 +118,7 @@ class Admin_Users_Controller extends Controller {
}
}
- public function edit_form($id) {
+ public function edit_user_form($id) {
$user = ORM::factory("user", $id);
if (!$user->loaded) {
kohana::show_404();
@@ -126,4 +126,26 @@ class Admin_Users_Controller extends Controller {
print user::get_edit_form_admin($user);
}
+
+ public function add_user_to_group($user_id, $group_id) {
+ access::verify_csrf();
+ $group = ORM::factory("group", $group_id);
+ $user = ORM::factory("user", $user_id);
+ $group->add($user);
+ $group->save();
+ }
+
+ public function remove_user_from_group($user_id, $group_id) {
+ access::verify_csrf();
+ $group = ORM::factory("group", $group_id);
+ $user = ORM::factory("user", $user_id);
+ $group->remove($user);
+ $group->save();
+ }
+
+ public function group($group_id) {
+ $view = new View("admin_users_group.html");
+ $view->group = ORM::factory("group", $group_id);
+ print $view;
+ }
}
diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php
index a7c3bdeb..b67986e3 100644
--- a/modules/user/helpers/user.php
+++ b/modules/user/helpers/user.php
@@ -53,7 +53,7 @@ class user_Core {
}
static function get_add_form_admin() {
- $form = new Forge("admin/users/add", "", "post", array("id" => "gAddUserForm"));
+ $form = new Forge("admin/users/add_user", "", "post", array("id" => "gAddUserForm"));
$group = $form->group("add_user")->label(t("Add User"));
$group->input("name")->label(t("Name"))->id("gName");
$group->inputs["name"]->error_messages(
diff --git a/modules/user/views/admin_users.html.php b/modules/user/views/admin_users.html.php
index 3eb03044..57e0864f 100644
--- a/modules/user/views/admin_users.html.php
+++ b/modules/user/views/admin_users.html.php
@@ -1,6 +1,47 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
+<script type="text/javascript">
+ var add_user_to_group_url = "<?= url::site("admin/users/add_user_to_group/__USERID__/__GROUPID__?csrf=" . access::csrf_token()) ?>";
+ $(document).ready(function(){
+ $("#gUserAdminList .core-info").draggable({
+ helper: "clone"
+ });
+ $("#gGroupAdmin .gGroup").droppable({
+ accept: ".core-info",
+ hoverClass: "gSelected",
+ drop: function(ev, ui) {
+ var user_id = $(ui.draggable).attr("id").replace("user-", "");
+ var group_id = $(this).attr("id").replace("group-", "");
+ $.get(add_user_to_group_url.replace("__USERID__", user_id).replace("__GROUPID__", group_id),
+ {},
+ function() {
+ reload_group(group_id);
+ });
+ }
+ });
+ $("#group-1").droppable("destroy");
+ $("#group-2").droppable("destroy");
+ });
+
+ var reload_group = function(group_id) {
+ var reload_group_url = "<?= url::site("admin/users/group/__GROUPID__") ?>";
+ $.get(reload_group_url.replace("__GROUPID__", group_id),
+ {},
+ function(data) {
+ $("#group-" + group_id).html(data);
+ });
+ }
+
+ var remove_user = function(user_id, group_id) {
+ var remove_user_url = "<?= url::site("admin/users/remove_user_from_group/__USERID__/__GROUPID__?csrf=" . access::csrf_token()) ?>";
+ $.get(remove_user_url.replace("__USERID__", user_id).replace("__GROUPID__", group_id),
+ {},
+ function() {
+ reload_group(group_id);
+ });
+ }
+</script>
<div class="gBlock">
- <a href="<?= url::site("admin/users/add_form") ?>"
+ <a href="<?= url::site("admin/users/add_user_form") ?>"
class="gDialogLink gButtonLink right"
title="<?= t("Create a new user") ?>">
+ <?= t("Add a new user") ?>
@@ -18,13 +59,15 @@
</li>
<? foreach ($users as $i => $user): ?>
- <li class="<?= text::alternate("gOddRow", "gEvenRow") ?>">
- <img src="<?= $user->avatar_url(20, $theme->url("images/avatar.jpg", true)) ?>"
- title="<?= t("Drag user onto group below to add as a new member") ?>"
- alt="<?= $user->name ?>"
- width="20"
- height="20" />
- <strong><?= $user->name ?></strong>
+ <li class="<?= text::alternate("gOddRow", "gEvenRow") ?> user">
+ <div id="user-<?= $user->id ?>" class="core-info" style="display: inline">
+ <img src="<?= $user->avatar_url(20, $theme->url("images/avatar.jpg", true)) ?>"
+ title="<?= t("Drag user onto group below to add as a new member") ?>"
+ alt="<?= $user->name ?>"
+ width="20"
+ height="20" />
+ <strong><?= $user->name ?></strong>
+ </div>
(<?= $user->full_name ?>)
<span class="understate">
<?= ($user->last_login == 0) ? "" : date("m j, y", $user->last_login) ?>
@@ -43,7 +86,7 @@
<? endforeach ?>
</ul>
<p>
- <a href="<?= url::site("admin/users/add_form") ?>"
+ <a href="<?= url::site("admin/users/add_user_form") ?>"
class="gDialogLink gButtonLink"
title="<?= t("Create a new user") ?>">
+ <?= t("Add a new user") ?>
@@ -66,16 +109,9 @@
<div class="gBlockContent">
<ul>
<? foreach ($groups as $i => $group): ?>
- <li class="gGroup">
- <strong><?= $group->name?></strong><br />
- <ul>
- <? foreach ($group->users as $i => $user): ?>
- <li class="gUser">
- <?= $user->name ?>
- <a href="groups/remove_users/<?= $user->id ?>">X</a>
- </li>
- <? endforeach ?>
- </ul>
+ <li id="group-<?= $group->id ?>" class="gGroup">
+ <? $v = new View("admin_users_group.html"); $v->group = $group; ?>
+ <?= $v ?>
</li>
<? endforeach ?>
</ul>
diff --git a/modules/user/views/admin_users_group.html.php b/modules/user/views/admin_users_group.html.php
new file mode 100644
index 00000000..1d6c127d
--- /dev/null
+++ b/modules/user/views/admin_users_group.html.php
@@ -0,0 +1,11 @@
+<strong><?= $group->name?></strong>
+<ul>
+ <? foreach ($group->users as $i => $user): ?>
+ <li class="gUser">
+ <?= $user->name ?>
+ <? if (!$group->special): ?>
+ <a href="javascript:remove_user(<?= $user->id ?>, <?= $group->id ?>)">X</a>
+ <? endif ?>
+ </li>
+ <? endforeach ?>
+</ul>