]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/cgi-bin/copy_statuses.cgi
Add an explicit encoding of UTF-8 to enable input and display of accented characters.
[Evergreen.git] / Open-ILS / src / cgi-bin / copy_statuses.cgi
1 #!/usr/bin/perl
2 use strict;
3
4 use OpenILS::Application::Storage;
5 use OpenILS::Application::Storage::CDBI;
6
7 # I need to abstract the driver loading away...
8 use OpenILS::Application::Storage::Driver::Pg;
9
10 use CGI qw/:standard start_*/;
11 our %config;
12 do '##CONFIG##/live-db-setup.pl';
13
14 OpenILS::Application::Storage::CDBI->connection($config{dsn},$config{usr},$config{pw});
15 OpenILS::Application::Storage::CDBI->db_Main->{ AutoCommit } = 1;
16
17 my $cgi = new CGI;
18
19 #-------------------------------------------------------------------------------
20 # HTML part
21 #-------------------------------------------------------------------------------
22
23 print <<HEADER;
24 Content-type: text/html
25
26 <html>
27
28 <head>
29     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
30         <style>
31                 table.table_class {
32                         border: dashed lightgrey 1px;
33                         background-color: #EEE;
34                         border-collapse: collapse;
35                 }
36
37                 deactivated {
38                         color: lightgrey;
39                 }
40
41                 tr.row_class td {
42                         border: solid lightgrey 1px;
43                 }
44
45                 tr.new_row_class {
46                         background: grey;
47                 }
48                 
49                 tr.header_class th {
50                         background-color: lightblue;
51                         border: solid blue 1px;
52                         padding: 2px;
53                 }
54
55         </style>
56 <body style='padding: 25px;'>
57
58 <a href="$config{index}">Home</a>
59
60 <h1>Copy Status Setup</h1>
61 <hr/>
62
63 HEADER
64
65 #-------------------------------------------------------------------------------
66 # setup part
67 #-------------------------------------------------------------------------------
68
69 my %cs_cols = ( qw/id SysID name Name holdable Unholdable/ );
70
71 my @col_display_order = ( qw/id name holdable/ );
72
73 #-------------------------------------------------------------------------------
74 # Logic part
75 #-------------------------------------------------------------------------------
76
77 if (my $action = $cgi->param('action')) {
78         if ( $action eq 'Remove Selected' ) {
79                 for my $id ( ($cgi->param('id')) ) {
80                         next unless ($id > 99);
81                         config::copy_status->retrieve($id)->delete;
82                 }
83         } elsif ( $action eq 'Update Selected' ) {
84                 for my $id ( ($cgi->param('id')) ) {
85                         my $u = config::copy_status->retrieve($id);
86                         $u->name( $cgi->param("name_$id") );
87                         $u->holdable( $cgi->param("holdable_$id") );
88                         $u->update;
89                 }
90         } elsif ( $action eq 'Add New' ) {
91                 config::copy_status->create( { name => $cgi->param("name") } );
92         }
93 }
94
95
96 #-------------------------------------------------------------------------------
97 # Form part
98 #-------------------------------------------------------------------------------
99 {
100         #-----------------------------------------------------------------------
101         # User form
102         #-----------------------------------------------------------------------
103         print   "<form method='POST'>".
104                 "<table class='table_class'><tr class='header_class'>\n";
105         
106         for my $col ( @col_display_order ) {
107                 print th($cs_cols{$col});
108         }
109         
110         print '<th>Action</th></tr>';
111         
112         for my $row ( sort { $a->name cmp $b->name } (config::copy_status->retrieve_all) ) {
113                 print Tr(
114                         td( $row->id() ),
115                         td("<input type='text' name='name_$row' value='". $row->name() ."'>"),
116                         td("<input type='checkbox' name='holdable_$row' value='f'". do {'checked' unless $row->holdable()} .">"),
117                         td("<input type='checkbox' value='$row' name='id'>"),
118                 );
119         }
120
121         print "<tr class='new_row_class'>",
122                 td(),
123                 td("<input type='text' name='name'>"),
124                 td("<input type='checkbox' name='holdable' value='f'>"),
125                 td(),
126                 "</tr>";
127
128         print   "</table>";
129         print   "<input type='submit' name='action' value='Remove Selected'/> | ";
130         print   "<input type='submit' name='action' value='Update Selected'/> | ";
131         print   "<input type='submit' name='action' value='Add New'/></form><hr/>";
132 }
133
134 print "</body></html>";
135
136