Current code.
[capital-apms.git] / inc / browse / office_settings.php
blobfdff7f05fc4590ac492a9e4d4535305b129950ef
1 <?php
2 /**
3 * Component for browsing and modifying office settings
4 * @package apms
5 * @subpackage office_settings
6 * @author Andrew McMillan <andrew@mcmillan.net.nz>
7 * @copyright Morphoss Ltd <http://www.morphoss.com/>
8 * @license http://gnu.org/copyleft/gpl.html GNU GPL v2 or later
9 */
10 include_once("classWidgets.php");
12 param_to_global('officecode','#^[A-Z0-9]{2,4}$#i'); if ( isset($officecode) ) $officecode = strtoupper($officecode);
13 param_to_global('action','#^(edit|delete)$#i');
14 param_to_global('setname','#^[A-Z0-9_+-]+$#i');
16 /**
17 * Add some widgets onto the top of the browser
19 $widget = new Widget();
20 $widget->AddField( 'officecode', 'char1', "SELECT officecode, officecode || ' - ' || name FROM office ORDER BY 1;" );
21 $widget->ReadWrite();
22 $widget->Layout( '<table> <tr> <th>Office:</th> <td>##officecode.select##</td> <td>##Show.submit##</td> </tr> </table>' );
23 $officecode = (isset($widget->Record->{'officecode'}) ? $widget->Record->{'officecode'} : null);
24 $page_elements[] = $widget;
27 $editrow = new Editor("OfficeSetting", 'officesettings');
29 if ( $editrow->IsSubmit() ) {
30 $editrow->SetWhere( "officecode=".qpg($officecode)." AND setname=" . qpg($_POST['orig_setname']) );
31 $editrow->Write();
32 unset($action);
34 if ( isset($action) && $action == 'delete' ) {
35 $qry = new PgQuery( "DELETE FROM officesettings WHERE officecode=? AND setname=?", $officecode, $setname);
36 if ( $qry->Exec() ) {
37 $c->messages[] = translate("Office Setting deleted: " . $setname );
41 function edit_row( $row_data ) {
42 global $editrow, $officecode;
44 $rowsubmittype = ($row_data->setname == '' ? 'Add' : 'Save');
45 $form_target = preg_replace( '#&action=edit#', '', $_SERVER['REQUEST_URI'] );
47 $template = <<<EOTEMPLATE
48 ##form##
49 <td class="left"><input type="hidden" name="officecode" value="$officecode"><input type="hidden" name="orig_setname" value="##setname.enc##">##setname.input.25##</td>
50 <td class="left">##setvalue.textarea.40x3##</td>
51 <td class="center">##$rowsubmittype.submit##</td>
52 </form>
54 EOTEMPLATE;
56 $editrow->SetTemplate( $template );
57 if ( $row_data->setname == '' )
58 $editrow->Initialise( (array) $row_data );
59 else
60 $editrow->SetRecord( $row_data );
62 $editrow->Title("");
63 return $editrow->Render();
67 /**
68 * Now build the browser
70 $browser = new Browser("Office Settings");
71 $browser->AddHidden( 'officecode' );
72 $browser->AddColumn( 'setname', 'Setting' );
73 $browser->AddColumn( 'setvalue', 'Value' );
74 $edit_link = "<a href=\"/browse.php?t=$component&officecode=##officecode##&setname=##setname##&action=edit\" class=\"submit\">Edit</a>";
75 $del_link = "<a href=\"/browse.php?t=$component&officecode=##officecode##&setname=##setname##&action=delete\" class=\"submit\">Del</a>";
76 $browser->AddColumn( 'action', 'Action', 'center', '', "'$edit_link &nbsp; $del_link'" );
77 $browser->SetJoins( "officesettings" );
78 $browser->AddOrder( "setname", "A" );
79 $browser->SetWhere( "officecode=".qpg($officecode) );
80 $browser->RowFormat( "<tr class=\"r%d\">\n", "</tr>\n", '#even' );
82 if ( isset($action) && $action == 'edit' ) {
83 $browser->MatchedRow('setname', $setname, 'edit_row');
85 else {
86 $browser->MatchedRow('setname', '', 'edit_row');
87 $extra_row = (object) array( 'officecode' => $officecode, 'setname' => '' );
88 $browser->AddRow($extra_row);
91 $browser->DoQuery();
92 $c->page_title = "Office Settings";
94 $page_elements[] = $browser;