summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/controllers/permissions.php24
-rw-r--r--core/views/permissions_edit.html.php15
-rw-r--r--core/views/permissions_form.html.php8
3 files changed, 43 insertions, 4 deletions
diff --git a/core/controllers/permissions.php b/core/controllers/permissions.php
index 67b75782..388fbfeb 100644
--- a/core/controllers/permissions.php
+++ b/core/controllers/permissions.php
@@ -45,6 +45,30 @@ class Permissions_Controller extends Controller {
print $this->_get_form($item);
}
+ function allow($group_id, $perm_id, $item_id) {
+ access::verify_csrf();
+ $group = ORM::factory("group", $group_id);
+ $perm = ORM::factory("permission", $perm_id);
+ $item = ORM::factory("item", $item_id);
+ access::required("edit", $item);
+
+ if ($group->loaded && $perm->loaded && $item->loaded) {
+ access::allow($group, $perm->name, $item);
+ }
+ }
+
+ function deny($group_id, $perm_id, $item_id) {
+ access::verify_csrf();
+ $group = ORM::factory("group", $group_id);
+ $perm = ORM::factory("permission", $perm_id);
+ $item = ORM::factory("item", $item_id);
+ access::required("edit", $item);
+
+ if ($group->loaded && $perm->loaded && $item->loaded) {
+ access::deny($group, $perm->name, $item);
+ }
+ }
+
function _get_form($item) {
$view = new View("permissions_form.html");
$view->item = $item;
diff --git a/core/views/permissions_edit.html.php b/core/views/permissions_edit.html.php
index ee561091..599ba520 100644
--- a/core/views/permissions_edit.html.php
+++ b/core/views/permissions_edit.html.php
@@ -6,8 +6,19 @@
url: form_url,
success: function(data) {
$("div.form").slideUp();
- var el = $("div#edit-" + id);
- el.html(data).slideDown();
+ $("div#edit-" + id).html(data).slideDown();
+ }
+ });
+ }
+
+ var action_url = "<?= url::site("permissions/__CMD__/__GROUP__/__PERM__/__ITEM__?csrf=" . access::csrf_token()) ?>";
+ var form_url = "<?= url::site("permissions/form/__ITEM__") ?>";
+ set = function(cmd, group_id, perm_id, item_id) {
+ $.ajax({
+ url: action_url.replace("__CMD__", cmd).replace("__GROUP__", group_id).
+ replace("__PERM__", perm_id).replace("__ITEM__", item_id),
+ success: function(data) {
+ $("div#edit-" + item_id).load(form_url.replace("__ITEM__", item_id));
}
});
}
diff --git a/core/views/permissions_form.html.php b/core/views/permissions_form.html.php
index 4933d6f2..80fbedf6 100644
--- a/core/views/permissions_form.html.php
+++ b/core/views/permissions_form.html.php
@@ -22,9 +22,13 @@
<? elseif ($locked && !$allowed): ?>
denied <a href="#">locked</a>
<? elseif ($allowed): ?>
- <a href="#">allowed</a>
+ <a href="javascript:set('deny',<?= $group->id ?>,<?= $permission->id ?>,<?= $item->id ?>)">
+ <?= _("allowed") ?>
+ </a>
<? elseif (!$allowed): ?>
- <a href="#">denied</a>
+ <a href="javascript:set('allow',<?= $group->id ?>,<?= $permission->id ?>,<?= $item->id ?>)">
+ <?= _("denied") ?>
+ </a>
<? endif ?>
</td>
<? endforeach ?>