diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php
index 44ed0386..2637199a 100644
--- a/inc/ui/principal-edit.php
+++ b/inc/ui/principal-edit.php
@@ -72,7 +72,7 @@ $default_privileges = bindec($editor->Value('default_privileges'));
$privileges_set = '
| $prompt_privileges: |
-
+
+ onclick="toggle_privileges('default_privileges', 'read', 'read-free-busy', 'schedule-query-freebusy', 'read-current-user-privilege-set' );">
+ onclick="toggle_privileges('default_privileges', 'read-free-busy', 'schedule-query-freebusy' );">
+ onclick="toggle_privileges('default_privileges', 'schedule-deliver-invite', 'schedule-deliver-reply', 'schedule-query-freebusy' );">
+ onclick="toggle_privileges('default_privileges', 'schedule-send-invite', 'schedule-send-reply', 'schedule-send-freebusy' );">
$privileges_set |
+
+
+EOTEMPLATE;
+
+ $grantrow->SetTemplate( $template );
+ $grantrow->Title("");
+
+ return $grantrow->Render();
+ }
+
$browser = new Browser(translate('Principal Grants'));
$browser->AddColumn( 'to_principal', translate('To ID'), 'right', '##principal_link##' );
$rowurl = $c->base_url . '/davical.php?action=edit&t=principal&id=';
$browser->AddHidden( 'principal_link', "'' || to_principal || ''" );
+$browser->AddHidden( 'grant_privileges', 'privileges' );
$browser->AddColumn( 'displayname', translate('Display Name') );
$browser->AddColumn( 'privs', translate('Privileges'), '', '', 'privileges_list(privileges)' );
$browser->AddColumn( 'members', translate('Has Members'), '', '', 'has_members_list(principal_id)' );
+if ( $can_write_principal ) {
+ $del_link = "Delete";
+ $edit_link = "Edit";
+ $browser->AddColumn( 'action', 'Action', 'center', '', "'$edit_link $del_link'" );
+}
+
$browser->SetOrdering( 'displayname', 'A' );
$browser->SetJoins( "grants LEFT JOIN dav_principal ON (to_principal = principal_id) " );
@@ -299,6 +378,18 @@ else {
$browser->DoQuery();
$page_elements[] = $browser;
+if ( $can_write_principal ) {
+ if ( isset($_GET['edit_grant']) ) {
+ $browser->MatchedRow('to_principal', $_GET['edit_grant'], 'edit_grant_row');
+ }
+ else {
+ $extra_row = array( 'to_principal' => -1 );
+ $browser->MatchedRow('to_principal', -1, 'edit_grant_row');
+ $extra_row = (object) $extra_row;
+ $browser->AddRow($extra_row);
+ }
+}
+
$browser = new Browser(translate('Principal Collections'));