diff options
Diffstat (limited to 'modules/user')
-rw-r--r-- | modules/user/controllers/admin_users.php | 34 | ||||
-rw-r--r-- | modules/user/helpers/user.php | 2 | ||||
-rw-r--r-- | modules/user/views/admin_users.html.php | 74 | ||||
-rw-r--r-- | modules/user/views/admin_users_group.html.php | 11 |
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> |