From 79f7347c2d9b362267c7ec93861419aaf220f6c1 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Fri, 24 Sep 2010 23:25:33 +1200 Subject: [PATCH] Display the bindings a principal has access to, also. --- inc/ui/principal-edit.php | 43 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index 59707d21..bc136717 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -26,6 +26,7 @@ function handle_subaction( $subaction ) { global $delete_collection_confirmation_required; global $delete_principal_confirmation_required; global $delete_ticket_confirmation_required; + global $delete_bind_in_confirmation_required; global $delete_binding_confirmation_required; dbg_error_log('admin-principal-edit',':handle_action: Action %s', $subaction ); @@ -102,6 +103,7 @@ function handle_subaction( $subaction ) { } break; + case 'delete_bind_in': case 'delete_binding': dbg_error_log('admin-principal-edit',':handle_action: Deleting binding "%s" for principal %d', $_GET['bind_id'], $id ); if ( $session->AllowedTo('Admin') @@ -120,7 +122,12 @@ function handle_subaction( $subaction ) { } else { $c->messages[] = i18n('Please confirm deletion of binding - see below'); - $delete_binding_confirmation_required = $session->BuildConfirmationHash('GET', 'confirm'); + if ( $subaction == 'delete_bind_in' ) { + $delete_bind_in_confirmation_required = $session->BuildConfirmationHash('GET', 'confirm'); + } + else { + $delete_binding_confirmation_required = $session->BuildConfirmationHash('GET', 'confirm'); + } return false; } } @@ -738,10 +745,44 @@ EOTEMPLATE; $page_elements[] = $html; } + $browser = new Browser(translate('Bindings to other collections')); + $browser->AddColumn( 'bind_id', translate('ID'), '', '' ); + $browser->AddHidden( 'b.dav_owner_id' ); + $browser->AddHidden( 'p.principal_id' ); + $browser->AddColumn( 'dav_name', translate('Collection'), '', '%s', 'c.dav_name' ); + $browser->AddColumn( 'bound_as', translate('Bound As'), '', '%s', "'".$c->base_url.'/caldav.php'."' ||b.dav_name" ); + $browser->AddColumn( 'access_ticket_id', translate('Ticket ID'), '', '' ); + $browser->AddColumn( 'privs', translate('Privileges'), '', '', "privileges_list(privileges)" ); + $delurl = $c->base_url . sprintf('/admin.php?action=edit&t=principal&id=%s&bind_id=##bind_id##&subaction=delete_bind_in', $editor->Value('principal_id')); + $browser->AddColumn( 'delete', translate('Action'), 'center', '', "'".translate('Delete')."'" ); + + $browser->SetOrdering( 'target', 'A' ); + + $browser->SetJoins( 'dav_binding b LEFT JOIN collection c ON (bound_source_id=collection_id) LEFT JOIN access_ticket t ON (ticket_id=access_ticket_id) LEFT JOIN principal p USING(user_no)' ); + $browser->SetWhere( 'b.dav_name ~ '.sprintf("'^/%s/'", $editor->Value('username')) ); + + $browser->RowFormat( '', '', '#even' ); + + $browser->DoQuery(); + $page_elements[] = $browser; + + if ( isset($delete_bind_in_confirmation_required) ) { + $html = '
'; + $html .= sprintf('%s "%s" %s %s', + translate('Deleting Binding:'), $_GET['bind_id'], $_SERVER['REQUEST_URI'], + $delete_bind_in_confirmation_required, + translate('Confirm Deletion of the Binding'), + translate('The binding will be deleted.') ); + $html .= "
\n"; + $page_elements[] = $html; + } + + $browser = new Browser(translate('Bindings to this Principal\'s Collections')); $browser->AddColumn( 'bind_id', translate('ID'), '', '' ); $browser->AddHidden( 'b.dav_owner_id' ); $browser->AddHidden( 'p.principal_id' ); + $browser->AddColumn( 'dav_name', translate('Collection'), '', '%s', 'c.dav_name' ); $browser->AddColumn( 'bound_as', translate('Bound As'), '', '%s', "'".$c->base_url.'/caldav.php'."' ||b.dav_name" ); $browser->AddColumn( 'access_ticket_id', translate('Ticket ID'), '', '' ); $browser->AddColumn( 'privs', translate('Privileges'), '', '', "privileges_list(privileges)" );