summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/controllers/permissions.php31
-rw-r--r--core/helpers/core_menu.php2
-rw-r--r--core/views/permission_edit.html.php67
-rw-r--r--core/views/permission_form.html.php34
4 files changed, 86 insertions, 48 deletions
diff --git a/core/controllers/permissions.php b/core/controllers/permissions.php
index 2e9dbda1..24ce7312 100644
--- a/core/controllers/permissions.php
+++ b/core/controllers/permissions.php
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class Permissions_Controller extends Controller {
- function form_edit($id) {
+ function browse($id) {
$item = ORM::factory("item", $id);
access::required("edit", $item);
@@ -28,25 +28,28 @@ class Permissions_Controller extends Controller {
$view = new View("permission_edit.html");
$view->item = $item;
- $view->groups = ORM::factory("group")->find_all();
- $view->permissions = ORM::factory("permission")->find_all();
+ $view->parents = $item->parents();
+ $view->form = $this->_get_form($item);
+
print $view;
}
- function edit($id) {
- access::verify_csrf();
-
+ function form($id) {
$item = ORM::factory("item", $id);
access::required("edit", $item);
- foreach (ORM::factory("group")->find_all() as $group) {
- foreach (ORM::factory("permission")->find_all() as $permission) {
- $perm_name = "{$permission->name}_$group->id";
- $value = $this->input->post($perm_name);
-
- // Set permissions here
- }
+ if ($item->type != "album") {
+ access::forbidden();
}
- url::redirect("form/edit/permissions/$item->id");
+
+ print $this->_get_form($item);
+ }
+
+ function _get_form($item) {
+ $view = new View("permission_form.html");
+ $view->item = $item;
+ $view->groups = ORM::factory("group")->find_all();
+ $view->permissions = ORM::factory("permission")->find_all();
+ return $view;
}
}
diff --git a/core/helpers/core_menu.php b/core/helpers/core_menu.php
index 5de2b0d7..9bf6de3f 100644
--- a/core/helpers/core_menu.php
+++ b/core/helpers/core_menu.php
@@ -59,7 +59,7 @@ class core_menu_Core {
->append(Menu::factory("dialog")
->id("edit_permissions")
->label(_("Edit permissions"))
- ->url(url::site("form/edit/permissions/$item->id")));
+ ->url(url::site("permissions/browse/$item->id")));
}
}
diff --git a/core/views/permission_edit.html.php b/core/views/permission_edit.html.php
index 332d31ab..ee561091 100644
--- a/core/views/permission_edit.html.php
+++ b/core/views/permission_edit.html.php
@@ -1,37 +1,38 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
+<script src="<?= url::file("lib/jquery.js") ?>" type="text/javascript"></script>
+<script type="text/javascript">
+ show = function(id, form_url) {
+ $.ajax({
+ url: form_url,
+ success: function(data) {
+ $("div.form").slideUp();
+ var el = $("div#edit-" + id);
+ el.html(data).slideDown();
+ }
+ });
+ }
+</script>
<div id="gPermissions">
- <form method="post" action="<?= url::site("permissions/edit/$item->id") ?>">
- <?= access::csrf_form_field() ?>
-
- <table border=1>
- <tr>
- <th> </th>
- <? foreach ($groups as $group): ?>
- <th> <?= $group->name ?> </th>
+ <ul>
+ <? foreach ($parents as $parent): ?>
+ <li>
+ <a href="javascript:show(<?= $parent->id ?>,'<?= url::site("permissions/form/$parent->id") ?>')">
+ <?= $parent->title ?>
+ </a>
+ <div class="form" id="edit-<?= $parent->id ?>"></div>
+ <ul>
<? endforeach ?>
- </tr>
-
- <? foreach ($permissions as $permission): ?>
- <tr>
- <td> <?= _($permission->display_name) ?> </td>
- <? foreach ($groups as $group): ?>
- <td>
- <? $locked = access::locking_items($group, $permission->name, $item) ?>
- <? $allowed = access::group_can($group, $permission->name, $item) ?>
- <? if ($locked && $allowed): ?>
- allowed <a href="#">locked</a>
- <? elseif ($locked && !$allowed): ?>
- denied <a href="#">locked</a>
- <? elseif ($allowed): ?>
- <a href="#">allowed</a>
- <? elseif (!$allowed): ?>
- <a href="#">denied</a>
- <? endif ?>
- </td>
- <? endforeach ?>
- </tr>
- <? endforeach ?>
- </table>
- <input type="submit" value="<?= _("Save") ?>"/>
- </form>
+ <li>
+ <a href="javascript:show(<?= $item->id ?>,'<?= url::site("permissions/form/$item->id") ?>')">
+ <?= $item->title ?>
+ </a>
+ <div class="form" id="edit-<?= $item->id ?>">
+ <?= $form ?>
+ </div>
+ </li>
+ <? foreach ($parents as $parent): ?>
+ </ul>
+ </li>
+ </ul>
+ <? endforeach ?>
</div>
diff --git a/core/views/permission_form.html.php b/core/views/permission_form.html.php
new file mode 100644
index 00000000..4933d6f2
--- /dev/null
+++ b/core/views/permission_form.html.php
@@ -0,0 +1,34 @@
+<?php defined("SYSPATH") or die("No direct script access.") ?>
+<form method="post" action="<?= url::site("permissions/edit/$item->id") ?>">
+ <?= access::csrf_form_field() ?>
+
+ <table border=1>
+ <tr>
+ <th> </th>
+ <? foreach ($groups as $group): ?>
+ <th> <?= $group->name ?> </th>
+ <? endforeach ?>
+ </tr>
+
+ <? foreach ($permissions as $permission): ?>
+ <tr>
+ <td> <?= _($permission->display_name) ?> </td>
+ <? foreach ($groups as $group): ?>
+ <td>
+ <? $locked = access::locking_items($group, $permission->name, $item) ?>
+ <? $allowed = access::group_can($group, $permission->name, $item) ?>
+ <? if ($locked && $allowed): ?>
+ allowed <a href="#">locked</a>
+ <? elseif ($locked && !$allowed): ?>
+ denied <a href="#">locked</a>
+ <? elseif ($allowed): ?>
+ <a href="#">allowed</a>
+ <? elseif (!$allowed): ?>
+ <a href="#">denied</a>
+ <? endif ?>
+ </td>
+ <? endforeach ?>
+ </tr>
+ <? endforeach ?>
+ </table>
+</form>