ID used for target-specific menu is that of newly created, copied or
[irspy-moved-to-github.git] / web / htdocs / chrome / layout.mc
index 870cdce..a5b9f08 100644 (file)
@@ -1,15 +1,17 @@
-%# $Id: layout.mc,v 1.24 2007-03-19 13:35:59 mike Exp $
+%# $Id: layout.mc,v 1.31 2007-05-03 09:33:10 mike Exp $
 <%args>
 $debug => undef
 $title
 $component
 </%args>
 <%once>
-use URI::Escape;
+use URI::Escape qw(uri_escape uri_escape_utf8);
 use ZOOM;
 use ZOOM::IRSpy::Web;
-use ZOOM::IRSpy::Utils qw(isodate xml_encode cql_target
-                          irspy_xpath_context modify_xml_document
+use ZOOM::IRSpy::Utils qw(isodate xml_encode cql_target cql_quote
+                          irspy_xpath_context irspy_make_identifier
+                         irspy_record2identifier
+                         irspy_identifier2target modify_xml_document
                          bib1_access_point);
 </%once>
 % $r->content_type("text/html; charset=utf-8");
@@ -25,6 +27,9 @@ use ZOOM::IRSpy::Utils qw(isodate xml_encode cql_target
  <body>
   <table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr class="banner">
+    <td>
+     <table width="100%">
+      <tr>
     <td align="left">
      <br/>
      <h1><a class="logo" href="/">IRSpy</a></h1>
@@ -33,6 +38,9 @@ use ZOOM::IRSpy::Utils qw(isodate xml_encode cql_target
      <br/>
      <h1 class="title"><% xml_encode($title) %></h1>
     </td>
+      </table>
+     </tr>
+    </td>
    </tr>
   </table>
   <table border="0" cellpadding="0" cellspacing="0" width="100%">
@@ -66,28 +74,30 @@ use ZOOM::IRSpy::Utils qw(isodate xml_encode cql_target
 % foreach my $i ('a' .. 'z') {
       <a href="/find.html?dc.title=^<% $i %>*&amp;_sort=dc.title&amp;_count=9999&amp;_search=Search"><tt><% uc($i) %></tt></a>
 % }
+      <a href="/find.html?cql.allRecords=1+not+dc.title+=/regexp/firstInField+[a-z].*&amp;_sort=dc.title&amp;_count=9999&amp;_search=Search">[Others]</a>
      </p>
 <%perl>
+# Find the identifier to use in the record-specific menu, if any.  If
+# the identifier components are all present (e.g. because a record has
+# just been edited or copied) we make an ID from those; otherwise we
+# use the "id" parameter, if specified.
 my $id = $r->param("id");
 {
-    # Make up ID for newly created records.  It would be more
-    # rigorously correct, but insanely inefficient, to submit the
-    # record to Zebra and then search for it; but since we know the
-    # formula for IDs anyway, we just build one by hand.
-    my $id = $r->param("id");
+    # Make up ID for newly created records.
+    my $protocol = $r->param("protocol");
     my $host = $r->param("host");
     my $port = $r->param("port");
     my $dbname = $r->param("dbname");
-    #warn "id='$id', host='$host', port='$port', dbname='$dbname'";
+    #warn "id='$id', protocol='$protocol' host='$host', port='$port', dbname='$dbname'";
     #warn "%ARGS = {\n" . join("", map { "\t'$_' => '" . $ARGS{$_} . ",'\n" } sort keys %ARGS) . "}\n";
-    if ((!defined $id || $id eq "") &&
-       defined $host && defined $port && defined $dbname) {
-       $id = "$host:$port/$dbname";
+    if (defined $protocol && defined $host &&
+       defined $port && defined $dbname) {
+       $id = irspy_make_identifier($protocol, $host, $port, $dbname);
        #warn "id set to '$id'";
     }
 }
 </%perl>
-% if (defined $id && $r->param("op") ne "copy") {
+% if (defined $id) {
      <div class="panel2">
       <b>This Target</b>
       <br/>