From c25312c13da9564c4617a05f1ed18f536e9b8378 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Wed, 9 Sep 2009 21:43:06 +1200 Subject: [PATCH] Allow for listing, adding & deleting relationship types. --- htdocs/relationship_types.php | 109 ++++++++++++++++++++++++++++++++++ inc/interactive-page.php | 2 +- inc/page-header.php | 2 +- 3 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 htdocs/relationship_types.php diff --git a/htdocs/relationship_types.php b/htdocs/relationship_types.php new file mode 100644 index 00000000..55cfc3a8 --- /dev/null +++ b/htdocs/relationship_types.php @@ -0,0 +1,109 @@ +LoginRequired(); + +require_once("interactive-page.php"); + + require_once("DataEntry.php"); + require_once("DataUpdate.php"); + require_once("classBrowser.php"); + $c->stylesheets[] = "css/browse.css"; + + if ( ($session->AllowedTo("Admin") || $session->AllowedTo("Support")) && + !$session->just_logged_in && (isset($_POST['submit']) || isset($_GET['action'])) ) { + $action = (isset($_POST['submit']) ? $_POST['submit'] : $_GET['action'] ); + dbg_error_log( "relationship_types", " action type is %s.", $action ); + $rt_id = intval($_GET['rt_id']); + $rt = new DBRecord(); + $rt->Initialise('relationship_type', array( 'rt_id' => $rt_id ) ); + switch( strtolower($action) ) { + case 'delete': + $qry = new PgQuery("DELETE FROM relationship_type WHERE rt_id = $rt_id;"); + if ( $qry->Exec() ) { + $c->messages[] = "Relationship Type Deleted."; + } + else { + $c->messages[] = "Database Error."; + } + break; + + case 'add': + $rt->PostToValues(); + if ( $rt->Write() ) { + $c->messages[] = "Relationship Type Added."; + } + else { + $c->messages[] = "Database Error."; + } + break; + + case 'edit': + $rt->PostToValues(); + if ( $rt->Write() ) { + $c->messages[] = "Relationship Type Updated."; + } + else { + $c->messages[] = "Database Error."; + } + break; + } + } + + $c->page_title = "Relationship Types"; + $browser = new Browser($c->page_title); + + $browser->AddColumn( 'rt_id', 'Id' ); + $browser->AddColumn( 'rt_name', 'Name', '', '##rt_link##' ); + $browser->AddHidden( 'rt_link', "'' || rt_name || ''" ); + $browser->AddColumn( 'rt_isgroup', 'To Group?', '', '', "CASE WHEN rt_isgroup THEN 'Yes' ELSE 'No' END" ); + $browser->AddColumn( 'confers', 'Rights' ); + $browser->AddColumn( 'prefix_match', "Prefix" ); + $browser->AddColumn( 'action', "Action", "", "", "'Delete'" ); + + $browser->SetJoins( 'relationship_type' ); + + if ( isset( $_GET['o']) && isset($_GET['d']) ) { + $browser->AddOrder( $_GET['o'], $_GET['d'] ); + } + else + $browser->AddOrder( 'rt_name', 'A' ); + + $browser->RowFormat( "\n", "\n", '#even' ); + $browser->DoQuery(); + + $rt_name_field = new EntryField( "text", "rt_name", + array("title" => "Enter the name for this resource type", + "size" => "20") ); + + $rt_isgroup_field = new EntryField( "checkbox", "rt_isgroup", + array("title" => "Is the target of this relationship a group of access rights?") ); + + $confers_field = new EntryField( "text", "confers", + array("title" => "Is this access read ('R') or Read and Write ('RW')?", + "size" => "5") ); + + $prefix_match_field = new EntryField( "text", "hprefix_match", + array("title" => "Restrict access to prefixes matching this pattern", + "size" => "15") ); + + $browser->AddRow( array( + 'rt_id' => 'new', + 'rt_name' => $rt_name_field->Render(), + 'rt_link' => $rt_name_field->Render(), + 'rt_isgroup' => $rt_isgroup_field->Render(), + 'confers' => $confers_field->Render(), + 'prefix_match' => $prefix_match_field->Render(), + 'action' => '' + ) ); + + $active_menu_pattern = "#^/relationship#"; + +include("page-header.php"); + +echo "
"; +echo $browser->Render(); +echo "
"; + +include("page-footer.php"); +?> \ No newline at end of file diff --git a/inc/interactive-page.php b/inc/interactive-page.php index 8d61c4ff..10fffc99 100644 --- a/inc/interactive-page.php +++ b/inc/interactive-page.php @@ -5,7 +5,7 @@ $page_menu->AddOption("Home","/","Browse all users", false, 3900 ); $page_menu->AddOption("Help","/help.php","Help on something or other", false, 4500 ); $page_menu->AddOption("Logout","/?logout","Log out of the $c->system_name", false, 5400 ); -// $relationship_menu = new MenuSet('submenu', 'submenu', 'submenu_active'); +$relationship_menu = new MenuSet('submenu', 'submenu', 'submenu_active'); $user_menu = new MenuSet('submenu', 'submenu', 'submenu_active'); // $role_menu = new MenuSet('submenu', 'submenu', 'submenu_active'); diff --git a/inc/page-header.php b/inc/page-header.php index a553368c..365f275b 100644 --- a/inc/page-header.php +++ b/inc/page-header.php @@ -65,7 +65,7 @@ EOHDR; echo "
\n"; if ( isset($page_menu) && is_object($page_menu) ) { -// $page_menu->AddSubMenu( $relationship_menu, "Relationships", "/relationships.php", "Browse all relationships", false, 4050 ); + $page_menu->AddSubMenu( $relationship_menu, "Relationships", "/relationship_types.php", "Browse all relationship types", false, 4050 ); $page_menu->AddSubMenu( $user_menu, "Users", "/users.php", "Browse all users", false, 4100 ); // $page_menu->AddSubMenu( $role_menu, "Roles", "/roles.php", "Browse all roles", false, 4300 ); $page_menu->MakeSomethingActive($active_menu_pattern);