From 459c50c9f98489ed7f255a337c59d8c69933bf95 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Wed, 24 Feb 2010 16:28:53 +1300 Subject: [PATCH] Allow active/inactive setting. Hide irrelevant stuff on create. --- inc/ui/principal-edit.php | 442 +++++++++++++++++++------------------- 1 file changed, 224 insertions(+), 218 deletions(-) diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index 39c23721..bc54afb1 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -141,6 +141,7 @@ else { $c->page_title = $editor->Title(translate('Create New Principal')); $privs = decbin(privilege_to_bits($c->default_privileges)); $editor->Assign('default_privileges', $privs); + $editor->Assign('user_active', 't'); } $privilege_xlate = array( @@ -179,6 +180,7 @@ $prompt_fullname = translate('Fullname'); $prompt_email = translate('Email Address'); $prompt_date_format = translate('Date Format Style'); $prompt_admin = translate('Administrator'); +$prompt_active = translate('Active'); $prompt_locale = translate('Locale'); $prompt_type = translate('Principal Type'); $prompt_privileges = translate('Default Privileges'); @@ -194,7 +196,9 @@ $admin_row_entry = ''; $delete_principal_button = ''; if ( $session->AllowedTo('Admin') ) { $admin_row_entry = ' '.$prompt_admin.':##is_admin.checkbox## '; - $delete_principal_button = '' . translate("Delete Principal") . ''; + $admin_row_entry .= ' '.$prompt_active.':##user_active.checkbox## '; + if ( isset($id) ) + $delete_principal_button = '' . translate("Delete Principal") . ''; } $id = $editor->Value('principal_id'); @@ -296,99 +300,22 @@ if ( isset($delete_principal_confirmation_required) ) { } -$browser = new Browser(translate('Group Memberships')); -$c->stylesheets[] = 'css/browse.css'; -$c->scripts[] = 'js/browse.js'; - -$browser->AddColumn( 'group_id', translate('ID'), 'right', '##principal_link##' ); -$rowurl = $c->base_url . '/admin.php?action=edit&t=principal&id='; -$browser->AddHidden( 'principal_link', "'' || principal_id || ''" ); -$browser->AddColumn( 'displayname', translate('Display Name') ); -$browser->AddColumn( 'member_of', translate('Is Member of'), '', '', 'is_member_of_list(principal_id)' ); -$browser->AddColumn( 'members', translate('Has Members'), '', '', 'has_members_list(principal_id)' ); - -$browser->SetOrdering( 'displayname', 'A' ); - -$browser->SetJoins( "group_member LEFT JOIN dav_principal ON (group_id = principal_id) " ); -$browser->SetWhere( 'user_active AND member_id = '.$id ); - -if ( $c->enable_row_linking ) { - $browser->RowFormat( '', '', '#even' ); -} -else { - $browser->RowFormat( '', '', '#even' ); -} -$browser->DoQuery(); -$page_elements[] = $browser; - - -if ( $editor->Value('type_id') == 3 ) { - - $grouprow = new Editor("Group Members", "group_member"); - $grouprow->SetLookup( 'member_id', 'SELECT principal_id, displayname FROM dav_principal WHERE principal_id NOT IN (SELECT member_id FROM group_member WHERE group_id = '.$id.')'); - $grouprow->SetSubmitName( 'savegrouprow' ); - - if ( $can_write_principal ) { - if ( $grouprow->IsSubmit() ) { - if ( $grouprow->IsUpdate() ) - $c->messages[] = translate('Updating Member of this Group Principal'); - else - $c->messages[] = translate('Adding new member to this Group Principal'); - - $_POST['group_id'] = $id; - $member_id = intval($_POST['member_id']); - $grouprow->SetWhere( "group_id=".qpg($id)." AND member_id=$member_id"); - $grouprow->Write( ); - unset($_GET['member_id']); - } - elseif ( isset($_GET['delete_member']) ) { - $qry = new AwlQuery("DELETE FROM group_member WHERE group_id=:group_id AND member_id = :member_id", - array( ':group_id' => $id, ':member_id' => intval($_GET['delete_member']) )); - $qry->Exec('principal-edit'); - $c->messages[] = translate('Member deleted from this Group Principal'); - } - } - - function edit_group_row( $row_data ) { - global $grouprow, $id, $c; - - $form_url = preg_replace( '#&(edit|delete)_group=\d+#', '', $_SERVER['REQUEST_URI'] ); - - $template = << - - ##member_id.select##   ##Add.submit## - - - -EOTEMPLATE; - - $grouprow->SetTemplate( $template ); - $grouprow->Title(""); - if ( $row_data->group_id > -1 ) $grouprow->SetRecord( $row_data ); - - return $grouprow->Render(); - } - - $browser = new Browser(translate('Group Members')); +if ( isset($id) ) { + $browser = new Browser(translate('Group Memberships')); + $c->stylesheets[] = 'css/browse.css'; + $c->scripts[] = 'js/browse.js'; $browser->AddColumn( 'group_id', translate('ID'), 'right', '##principal_link##' ); $rowurl = $c->base_url . '/admin.php?action=edit&t=principal&id='; - $browser->AddHidden( 'principal_id' ); $browser->AddHidden( 'principal_link', "'' || principal_id || ''" ); $browser->AddColumn( 'displayname', translate('Display Name') ); $browser->AddColumn( 'member_of', translate('Is Member of'), '', '', 'is_member_of_list(principal_id)' ); $browser->AddColumn( 'members', translate('Has Members'), '', '', 'has_members_list(principal_id)' ); - if ( $can_write_principal ) { - $del_link = ''.translate('Delete').''; - $browser->AddColumn( 'action', translate('Action'), 'center', '', "'$edit_link $del_link'" ); - } - $browser->SetOrdering( 'displayname', 'A' ); - $browser->SetJoins( "group_member LEFT JOIN dav_principal ON (member_id = principal_id) " ); - $browser->SetWhere( 'user_active AND group_id = '.$id ); + $browser->SetJoins( "group_member LEFT JOIN dav_principal ON (group_id = principal_id) " ); + $browser->SetWhere( 'user_active AND member_id = '.$id ); if ( $c->enable_row_linking ) { $browser->RowFormat( '', '', '#even' ); @@ -399,73 +326,151 @@ EOTEMPLATE; $browser->DoQuery(); $page_elements[] = $browser; - if ( $can_write_principal ) { - $browser->RowFormat( '', '', '#even' ); - $extra_row = array( 'group_id' => -1 ); - $browser->MatchedRow('group_id', -1, 'edit_group_row'); - $extra_row = (object) $extra_row; - $browser->AddRow($extra_row); - } -} + if ( $editor->Value('type_id') == 3 ) { - $grantrow = new Editor("Grants", "grants"); - $grantrow->SetSubmitName( 'savegrantrow' ); - $edit_grant_clause = ''; - if ( isset($_GET['edit_grant']) ) { - $edit_grant_clause = ' AND to_principal != '.intval($_GET['edit_grant']); - } - $grantrow->SetLookup( 'to_principal', 'SELECT principal_id, displayname FROM dav_principal WHERE principal_id NOT IN (SELECT to_principal FROM grants WHERE by_principal = '.$id.$edit_grant_clause.')' ); - if ( $can_write_principal ) { - if ( $grantrow->IsSubmit() ) { - if ( $grantrow->IsUpdate() ) - $c->messages[] = translate('Updating grants by this Principal'); - else - $c->messages[] = translate('Granting new privileges from this Principal'); - $_POST['by_principal'] = $id; - $to_principal = intval($_POST['to_principal']); - $orig_to_id = intval($_POST['orig_to_id']); - $grantrow->SetWhere( "by_principal=".qpg($id)." AND to_principal=$orig_to_id"); - if ( isset($_POST['grant_privileges']) ) { - $privilege_bitpos = array_flip($privilege_names); - $priv_names = array_keys($_POST['grant_privileges']); - $privs = privilege_to_bits($priv_names); - $_POST['privileges'] = sprintf('%024s',decbin($privs)); - $grantrow->Assign('privileges', $privs_dec); + $grouprow = new Editor("Group Members", "group_member"); + $grouprow->SetLookup( 'member_id', 'SELECT principal_id, displayname FROM dav_principal WHERE principal_id NOT IN (SELECT member_id FROM group_member WHERE group_id = '.$id.')'); + $grouprow->SetSubmitName( 'savegrouprow' ); + + if ( $can_write_principal ) { + if ( $grouprow->IsSubmit() ) { + if ( $grouprow->IsUpdate() ) + $c->messages[] = translate('Updating Member of this Group Principal'); + else + $c->messages[] = translate('Adding new member to this Group Principal'); + + $_POST['group_id'] = $id; + $member_id = intval($_POST['member_id']); + $grouprow->SetWhere( "group_id=".qpg($id)." AND member_id=$member_id"); + $grouprow->Write( ); + unset($_GET['member_id']); + } + elseif ( isset($_GET['delete_member']) ) { + $qry = new AwlQuery("DELETE FROM group_member WHERE group_id=:group_id AND member_id = :member_id", + array( ':group_id' => $id, ':member_id' => intval($_GET['delete_member']) )); + $qry->Exec('principal-edit'); + $c->messages[] = translate('Member deleted from this Group Principal'); } - $grantrow->Write( ); - unset($_GET['to_principal']); } - elseif ( isset($_GET['delete_grant']) ) { - $qry = new AwlQuery("DELETE FROM grants WHERE by_principal=:grantor_id AND to_principal = :to_principal", - array( ':grantor_id' => $id, ':to_principal' => intval($_GET['delete_grant']) )); - $qry->Exec('principal-edit'); - $c->messages[] = translate('Deleted a grant from this Principal'); + + function edit_group_row( $row_data ) { + global $grouprow, $id, $c; + + $form_url = preg_replace( '#&(edit|delete)_group=\d+#', '', $_SERVER['REQUEST_URI'] ); + + $template = << + + ##member_id.select##   ##Add.submit## + + + +EOTEMPLATE; + + $grouprow->SetTemplate( $template ); + $grouprow->Title(""); + if ( $row_data->group_id > -1 ) $grouprow->SetRecord( $row_data ); + + return $grouprow->Render(); + } + + $browser = new Browser(translate('Group Members')); + + $browser->AddColumn( 'group_id', translate('ID'), 'right', '##principal_link##' ); + $rowurl = $c->base_url . '/admin.php?action=edit&t=principal&id='; + $browser->AddHidden( 'principal_id' ); + $browser->AddHidden( 'principal_link', "'' || principal_id || ''" ); + $browser->AddColumn( 'displayname', translate('Display Name') ); + $browser->AddColumn( 'member_of', translate('Is Member of'), '', '', 'is_member_of_list(principal_id)' ); + $browser->AddColumn( 'members', translate('Has Members'), '', '', 'has_members_list(principal_id)' ); + + if ( $can_write_principal ) { + $del_link = ''.translate('Delete').''; + $browser->AddColumn( 'action', translate('Action'), 'center', '', "'$edit_link $del_link'" ); + } + + $browser->SetOrdering( 'displayname', 'A' ); + + $browser->SetJoins( "group_member LEFT JOIN dav_principal ON (member_id = principal_id) " ); + $browser->SetWhere( 'user_active AND group_id = '.$id ); + + if ( $c->enable_row_linking ) { + $browser->RowFormat( '', '', '#even' ); + } + else { + $browser->RowFormat( '', '', '#even' ); + } + $browser->DoQuery(); + $page_elements[] = $browser; + + if ( $can_write_principal ) { + $browser->RowFormat( '', '', '#even' ); + $extra_row = array( 'group_id' => -1 ); + $browser->MatchedRow('group_id', -1, 'edit_group_row'); + $extra_row = (object) $extra_row; + $browser->AddRow($extra_row); } } - function edit_grant_row( $row_data ) { - global $grantrow, $id, $c, $privilege_xlate, $privilege_names; - global $btn_all, $btn_all_title, $btn_rw, $btn_rw_title, $btn_read, $btn_read_title; - global $btn_fb, $btn_fb_title, $btn_sd, $btn_sd_title, $btn_ss, $btn_ss_title; - if ( $row_data->to_principal > -1 ) { - $grantrow->SetRecord( $row_data ); + $grantrow = new Editor("Grants", "grants"); + $grantrow->SetSubmitName( 'savegrantrow' ); + $edit_grant_clause = ''; + if ( isset($_GET['edit_grant']) ) { + $edit_grant_clause = ' AND to_principal != '.intval($_GET['edit_grant']); + } + $grantrow->SetLookup( 'to_principal', 'SELECT principal_id, displayname FROM dav_principal WHERE principal_id NOT IN (SELECT to_principal FROM grants WHERE by_principal = '.$id.$edit_grant_clause.')' ); + if ( $can_write_principal ) { + if ( $grantrow->IsSubmit() ) { + if ( $grantrow->IsUpdate() ) + $c->messages[] = translate('Updating grants by this Principal'); + else + $c->messages[] = translate('Granting new privileges from this Principal'); + $_POST['by_principal'] = $id; + $to_principal = intval($_POST['to_principal']); + $orig_to_id = intval($_POST['orig_to_id']); + $grantrow->SetWhere( "by_principal=".qpg($id)." AND to_principal=$orig_to_id"); + if ( isset($_POST['grant_privileges']) ) { + $privilege_bitpos = array_flip($privilege_names); + $priv_names = array_keys($_POST['grant_privileges']); + $privs = privilege_to_bits($priv_names); + $_POST['privileges'] = sprintf('%024s',decbin($privs)); + $grantrow->Assign('privileges', $privs_dec); + } + $grantrow->Write( ); + unset($_GET['to_principal']); + } + elseif ( isset($_GET['delete_grant']) ) { + $qry = new AwlQuery("DELETE FROM grants WHERE by_principal=:grantor_id AND to_principal = :to_principal", + array( ':grantor_id' => $id, ':to_principal' => intval($_GET['delete_grant']) )); + $qry->Exec('principal-edit'); + $c->messages[] = translate('Deleted a grant from this Principal'); + } } - $grant_privileges = bindec($grantrow->Value('grant_privileges')); - $privileges_set = '
'; - for( $i=0; $i < count($privilege_names); $i++ ) { - $privilege_set = ( (1 << $i) & $grant_privileges ? ' CHECKED' : ''); - $privileges_set .= ''."\n"; - } - $privileges_set .= '
'; + function edit_grant_row( $row_data ) { + global $grantrow, $id, $c, $privilege_xlate, $privilege_names; + global $btn_all, $btn_all_title, $btn_rw, $btn_rw_title, $btn_read, $btn_read_title; + global $btn_fb, $btn_fb_title, $btn_sd, $btn_sd_title, $btn_ss, $btn_ss_title; - $orig_to_id = $row_data->to_principal; - $form_id = $grantrow->Id(); - $form_url = preg_replace( '#&(edit|delete)_grant=\d+#', '', $_SERVER['REQUEST_URI'] ); + if ( $row_data->to_principal > -1 ) { + $grantrow->SetRecord( $row_data ); + } - $template = <<Value('grant_privileges')); + $privileges_set = '
'; + for( $i=0; $i < count($privilege_names); $i++ ) { + $privilege_set = ( (1 << $i) & $grant_privileges ? ' CHECKED' : ''); + $privileges_set .= ''."\n"; + } + $privileges_set .= '
'; + + $orig_to_id = $row_data->to_principal; + $form_id = $grantrow->Id(); + $form_url = preg_replace( '#&(edit|delete)_grant=\d+#', '', $_SERVER['REQUEST_URI'] ); + + $template = << ##to_principal.select## @@ -488,94 +493,95 @@ EOTEMPLATE; EOTEMPLATE; - $grantrow->SetTemplate( $template ); - $grantrow->Title(""); + $grantrow->SetTemplate( $template ); + $grantrow->Title(""); - return $grantrow->Render(); + return $grantrow->Render(); + } + + $browser = new Browser(translate('Principal Grants')); + + $browser->AddColumn( 'to_principal', translate('To ID'), 'right', '##principal_link##' ); + $rowurl = $c->base_url . '/admin.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 = ''.translate('Delete').''; + $edit_link = ''.translate('Edit').''; + $browser->AddColumn( 'action', translate('Action'), 'center', '', "'$edit_link $del_link'" ); } -$browser = new Browser(translate('Principal Grants')); + $browser->SetOrdering( 'displayname', 'A' ); -$browser->AddColumn( 'to_principal', translate('To ID'), 'right', '##principal_link##' ); -$rowurl = $c->base_url . '/admin.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)' ); + $browser->SetJoins( "grants LEFT JOIN dav_principal ON (to_principal = principal_id) " ); + $browser->SetWhere( 'by_principal = '.$id ); -if ( $can_write_principal ) { - $del_link = ''.translate('Delete').''; - $edit_link = ''.translate('Edit').''; - $browser->AddColumn( 'action', translate('Action'), 'center', '', "'$edit_link $del_link'" ); -} - -$browser->SetOrdering( 'displayname', 'A' ); - -$browser->SetJoins( "grants LEFT JOIN dav_principal ON (to_principal = principal_id) " ); -$browser->SetWhere( 'by_principal = '.$id ); - -if ( $c->enable_row_linking ) { - $browser->RowFormat( '', '', '#even' ); -} -else { - $browser->RowFormat( '', '', '#even' ); -} -$browser->DoQuery(); -$page_elements[] = $browser; - - -if ( $can_write_principal ) { - if ( isset($_GET['edit_grant']) ) { - $browser->MatchedRow('to_principal', $_GET['edit_grant'], 'edit_grant_row'); + if ( $c->enable_row_linking ) { + $browser->RowFormat( '', '', '#even' ); } - else if ( isset($id ) ) { + else { $browser->RowFormat( '', '', '#even' ); - $extra_row = array( 'to_principal' => -1 ); - $browser->MatchedRow('to_principal', -1, 'edit_grant_row'); - $extra_row = (object) $extra_row; - $browser->AddRow($extra_row); } -} + $browser->DoQuery(); + $page_elements[] = $browser; -$browser = new Browser(translate('Principal Collections')); - -$browser->AddColumn( 'collection_id', translate('ID'), 'right', '##collection_link##' ); -$rowurl = $c->base_url . '/admin.php?action=edit&t=collection&id='; -$browser->AddHidden( 'collection_link', "'' || collection_id || ''" ); -$browser->AddColumn( 'dav_name', translate('Path') ); -$browser->AddColumn( 'dav_displayname', translate('Display Name') ); -$browser->AddColumn( 'publicly_readable', translate('Public'), 'centre', '', 'CASE WHEN publicly_readable THEN \''.translate('Yes').'\' ELSE \''.translate('No').'\' END' ); -$browser->AddColumn( 'privs', translate('Privileges'), '', '', - "COALESCE( privileges_list(default_privileges), '[".translate('from principal')."]')" ); -$delurl = $c->base_url . '/admin.php?action=edit&t=principal&id='.$id.'&dav_name=##URL:dav_name##&subaction=delete_collection'; -$browser->AddColumn( 'delete', translate('Action'), 'center', '', "'".translate('Delete')."'" ); - -$browser->SetOrdering( 'dav_name', 'A' ); - -$browser->SetJoins( "collection " ); -$browser->SetWhere( 'user_no = '.intval($editor->Value('user_no')) ); - -$browser->AddRow( array( 'dav_name' => ''.translate('Create Collection').'' )); - -if ( $c->enable_row_linking ) { - $browser->RowFormat( '', '', '#even' ); -} -else { - $browser->RowFormat( '', '', '#even' ); -} -$browser->DoQuery(); -$page_elements[] = $browser; -if ( isset($delete_collection_confirmation_required) ) { - $html = '
'; - $html .= sprintf('%s "%s" %s %s', - translate('Deleting Collection:'), $_GET['dav_name'], $_SERVER['REQUEST_URI'], - $delete_collection_confirmation_required, - translate('Confirm Deletion of the Collection'), - translate('All collection data will be unrecoverably deleted.') ); - $html .= "
\n"; - $page_elements[] = $html; -} + if ( $can_write_principal ) { + if ( isset($_GET['edit_grant']) ) { + $browser->MatchedRow('to_principal', $_GET['edit_grant'], 'edit_grant_row'); + } + else if ( isset($id ) ) { + $browser->RowFormat( '', '', '#even' ); + $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')); + + $browser->AddColumn( 'collection_id', translate('ID'), 'right', '##collection_link##' ); + $rowurl = $c->base_url . '/admin.php?action=edit&t=collection&id='; + $browser->AddHidden( 'collection_link', "'' || collection_id || ''" ); + $browser->AddColumn( 'dav_name', translate('Path') ); + $browser->AddColumn( 'dav_displayname', translate('Display Name') ); + $browser->AddColumn( 'publicly_readable', translate('Public'), 'centre', '', 'CASE WHEN publicly_readable THEN \''.translate('Yes').'\' ELSE \''.translate('No').'\' END' ); + $browser->AddColumn( 'privs', translate('Privileges'), '', '', + "COALESCE( privileges_list(default_privileges), '[".translate('from principal')."]')" ); + $delurl = $c->base_url . '/admin.php?action=edit&t=principal&id='.$id.'&dav_name=##URL:dav_name##&subaction=delete_collection'; + $browser->AddColumn( 'delete', translate('Action'), 'center', '', "'".translate('Delete')."'" ); + + $browser->SetOrdering( 'dav_name', 'A' ); + + $browser->SetJoins( "collection " ); + $browser->SetWhere( 'user_no = '.intval($editor->Value('user_no')) ); + + $browser->AddRow( array( 'dav_name' => ''.translate('Create Collection').'' )); + + if ( $c->enable_row_linking ) { + $browser->RowFormat( '', '', '#even' ); + } + else { + $browser->RowFormat( '', '', '#even' ); + } + $browser->DoQuery(); + $page_elements[] = $browser; + if ( isset($delete_collection_confirmation_required) ) { + $html = '
'; + $html .= sprintf('%s "%s" %s %s', + translate('Deleting Collection:'), $_GET['dav_name'], $_SERVER['REQUEST_URI'], + $delete_collection_confirmation_required, + translate('Confirm Deletion of the Collection'), + translate('All collection data will be unrecoverably deleted.') ); + $html .= "
\n"; + $page_elements[] = $html; + } + + +} \ No newline at end of file