summaryrefslogtreecommitdiff
path: root/httemplate/edit
diff options
context:
space:
mode:
authorivan <ivan>2006-03-08 10:05:01 +0000
committerivan <ivan>2006-03-08 10:05:01 +0000
commit600a0939e7e7e589dae4f4f5bfef3650728940b7 (patch)
tree4e96278b41fc621fa15d03cf2e48a5a3b5a8b72d /httemplate/edit
parent5809a99d862a6bd0da6742479f18728aae8216a2 (diff)
Add a new table for inventory with for DIDs/serials/etc., and an additional
new table for inventory category (i.e. to distinguish DIDs, serials, MACs, etc.)
Diffstat (limited to 'httemplate/edit')
-rw-r--r--httemplate/edit/elements/edit.html118
-rw-r--r--httemplate/edit/inventory_class.html9
-rw-r--r--httemplate/edit/process/elements/process.html46
-rw-r--r--httemplate/edit/process/inventory_class.html4
4 files changed, 177 insertions, 0 deletions
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
new file mode 100644
index 000000000..ce6e2dbb1
--- /dev/null
+++ b/httemplate/edit/elements/edit.html
@@ -0,0 +1,118 @@
+<%
+
+ # options example...
+ #
+ # 'name' =>
+ # 'table' =>
+ # #? 'primary_key' => #required when the dbdef doesn't know...???
+ # 'labels' => {
+ # 'column' => 'Label',
+ # }
+ #
+ # listref - each item is a literal column name (or method) or (notyet) coderef
+ # if not specified all columns (except for the primary key) will be editable
+ # 'fields' => [
+ # ]
+ #
+ # 'menubar' => '', #menubar arrayref
+
+ my(%opt) = @_;
+
+ #false laziness w/process.html
+ my $table = $opt{'table'};
+ my $class = "FS::$table";
+ my $pkey = dbdef->table($table)->primary_key; #? $opt{'primary_key'} ||
+ my $fields = $opt{'fields'}
+ #|| [ grep { $_ ne $pkey } dbdef->table($table)->columns ];
+ || [ grep { $_ ne $pkey } fields($table) ];
+
+ my $object;
+ if ( $cgi->param('error') ) {
+
+ $object = $class->new( {
+ map { $_ => scalar($cgi->param($_)) } fields($table)
+ });
+
+ } elsif ( $cgi->keywords ) { #editing
+
+ my( $query ) = $cgi->keywords;
+ $query =~ /^(\d+)$/;
+ $object = qsearchs( $table, { $pkey => $1 } );
+
+ } else { #adding
+
+ $object = $class->new( {} );
+
+ }
+
+ my $action = $object->$pkey() ? 'Edit' : 'Add';
+
+ my $title = "$action $opt{'name'}";
+
+ my @menubar = ();
+ if ( $opt{'menubar'} ) {
+ @menubar = @{ $opt{'menubar'} };
+ } else {
+ @menubar = (
+ 'Main menu' => $p, #eventually get rid of this when the ACL/UI update is done
+ "View all $opt{'name'}s" => "${p}search/$table.html", #eventually use Lingua::bs to pluralize
+ );
+ }
+
+%>
+
+
+<%= include("/elements/header.html", $title,
+ include( '/elements/menubar.html', @menubar )
+ )
+%>
+
+<% if ( $cgi->param('error') ) { %>
+ <FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
+ <BR><BR>
+<% } %>
+
+<FORM ACTION="<%= popurl(1) %>process/<%= $table %>.html" METHOD=POST>
+<INPUT TYPE="hidden" NAME="<%= $pkey %>" VALUE="<%= $object->$pkey() %>">
+<%= ( $opt{labels} && exists $opt{labels}->{$pkey} )
+ ? $opt{labels}->{$pkey}
+ : $pkey
+%>
+#<%= $object->$pkey() || "(NEW)" %>
+
+<%= ntable("#cccccc",2) %>
+
+<% foreach my $field ( @$fields ) { %>
+
+ <TR>
+
+ <TD ALIGN="right">
+ <%= ( $opt{labels} && exists $opt{labels}->{$field} )
+ ? $opt{labels}->{$field}
+ : $field
+ %>
+ </TD>
+
+ <%
+ #just text in one size for now... eventually more options for
+ # uneditable, hidden, <SELECT>, etc. fields
+ %>
+
+ <TD>
+ <INPUT TYPE="text" NAME="<%= $field %>" VALUE="<%= $object->$field() %>">
+ <TD>
+
+ </TR>
+
+<% } %>
+
+</TABLE>
+
+<BR>
+
+<INPUT TYPE="submit" VALUE="<%= $object->$pkey() ? "Apply changes" : "Add $opt{'name'}" %>">
+
+</FORM>
+
+<%= include("/elements/footer.html") %>
+
diff --git a/httemplate/edit/inventory_class.html b/httemplate/edit/inventory_class.html
new file mode 100644
index 000000000..5dde2e595
--- /dev/null
+++ b/httemplate/edit/inventory_class.html
@@ -0,0 +1,9 @@
+<%= include( 'elements/edit.html',
+ 'name' => 'Inventory Class',
+ 'table' => 'inventory_class',
+ 'labels' => {
+ 'classnum' => 'Class number',
+ 'classname' => 'Class name',
+ },
+ )
+%>
diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html
new file mode 100644
index 000000000..52c876720
--- /dev/null
+++ b/httemplate/edit/process/elements/process.html
@@ -0,0 +1,46 @@
+<%
+
+ # options example...
+ #
+ # 'table' =>
+ # #? 'primary_key' => #required when the dbdef doesn't know...???
+ # #? 'fields' => []
+
+ my(%opt) = @_;
+
+ #false laziness w/edit.html
+ my $table = $opt{'table'};
+ my $class = "FS::$table";
+ my $pkey = dbdef->table($table)->primary_key; #? $opt{'primary_key'} ||
+ my $fields = $opt{'fields'}
+ #|| [ grep { $_ ne $pkey } dbdef->table($table)->columns ];
+ || [ fields($table) ];
+
+ my $pkeyvalue = $cgi->param($pkey);
+
+ my $old = qsearchs( $table, { $pkey => $pkeyvalue } ) if $pkeyvalue;
+
+ my $new = $class->new( {
+ map {
+ $_, scalar($cgi->param($_));
+ } @$fields
+ } );
+
+ my $error;
+ if ( $pkeyvalue ) {
+ $error = $new->replace($old);
+ } else {
+ warn $new;
+ $error = $new->insert;
+ warn $error;
+ $pkeyvalue = $new->getfield($pkey);
+ }
+
+ if ( $error ) {
+ $cgi->param('error', $error);
+ print $cgi->redirect(popurl(2). "$table.html?". $cgi->query_string );
+ } else {
+ print $cgi->redirect(popurl(3). "search/$table.html");
+ }
+
+%>
diff --git a/httemplate/edit/process/inventory_class.html b/httemplate/edit/process/inventory_class.html
new file mode 100644
index 000000000..e30e74e7b
--- /dev/null
+++ b/httemplate/edit/process/inventory_class.html
@@ -0,0 +1,4 @@
+<%= include( 'elements/process.html',
+ 'table' => 'inventory_class',
+ )
+%>