diff options
Diffstat (limited to 'sundry/spine_search_cgi/src')
| -rw-r--r-- | sundry/spine_search_cgi/src/spine_search.d | 1734 | ||||
| -rwxr-xr-x[-rw-r--r--] | sundry/spine_search_cgi/src/spine_search.d_ | 1738 | 
2 files changed, 1793 insertions, 1679 deletions
| diff --git a/sundry/spine_search_cgi/src/spine_search.d b/sundry/spine_search_cgi/src/spine_search.d index 5b40cc8..2ddc11b 100644 --- a/sundry/spine_search_cgi/src/spine_search.d +++ b/sundry/spine_search_cgi/src/spine_search.d @@ -1,3 +1,54 @@ +#!/usr/bin/env rdmd +/+ +- Name: Spine, Doc Reform +  - Description: documents, structuring, processing, publishing, search +    - static content generator + +  - Author: Ralph Amissah +    [ralph.amissah@gmail.com] + +  - Copyright: (C) 2015 - 2021 Ralph Amissah, All Rights +    Reserved. + +  - License: AGPL 3 or later: + +    Spine (SiSU), a framework for document structuring, publishing and +    search + +    Copyright (C) Ralph Amissah + +    This program is free software: you can redistribute it and/or modify it +    under the terms of the GNU AFERO General Public License as published by the +    Free Software Foundation, either version 3 of the License, or (at your +    option) any later version. + +    This program is distributed in the hope that it will be useful, but WITHOUT +    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +    FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +    more details. + +    You should have received a copy of the GNU General Public License along with +    this program. If not, see [https://www.gnu.org/licenses/]. + +    If you have Internet connection, the latest version of the AGPL should be +    available at these locations: +    [https://www.fsf.org/licensing/licenses/agpl.html] +    [https://www.gnu.org/licenses/agpl.html] + +  - Spine (by Doc Reform, related to SiSU) uses standard: +    - docReform markup syntax +      - standard SiSU markup syntax with modified headers and minor modifications +    - docReform object numbering +      - standard SiSU object citation numbering & system + +  - Hompages: +    [https://www.doc_reform.org] +    [https://www.sisudoc.org] + +  - Git +    [https://git.sisudoc.org/projects/?p=software/spine.git;a=summary] + ++/  /+ dub.sdl    name "spine search"    description "spine cgi search" @@ -26,19 +77,20 @@ void cgi_function_intro(Cgi cgi) {      string query_string;      string http_url;      string request_method; +    string query_base;    }    auto conf = Config(); -  conf.http_request_type       = environment.get("REQUEST_SCHEME",        "http"); -  conf.http_host               = environment.get("HTTP_HOST",             "localhost"); -  // conf.server_name             = environment.get("SERVER_NAME",           "localhost"); +  conf.http_request_type       = environment.get("REQUEST_SCHEME",        _cfg.http_request_type); +  conf.http_host               = environment.get("HTTP_HOST",             _cfg.http_host);    conf.web_doc_root_path       = environment.get("DOCUMENT_ROOT",         _cfg.doc_root_www); -  conf.doc_collection_sub_root = _cfg.doc_root_www; // (output_path - web_doc_root_path) -  conf.cgi_root                = environment.get("CONTEXT_DOCUMENT_ROOT", _cfg.doc_root_cgi); -  // conf.cgi_script              = environment.get("SCRIPT_NAME",           "/cgi-bin/spine-search"); +  conf.doc_collection_sub_root = "/spine/static"; // (output_path - web_doc_root_path) +  conf.cgi_root                = environment.get("CONTEXT_DOCUMENT_ROOT", _cfg.host_cgi_subpath); +  conf.cgi_script              = environment.get("SCRIPT_NAME",           _cfg.filename_cgi);    conf.query_string            = environment.get("QUERY_STRING",          ""); -  conf.http_url                = environment.get("HTTP_REFERER",          conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string); -  conf.db_path                 = _cfg.doc_root_db; // (output_path + /sqlite) +  conf.db_path                 = _cfg.doc_root_db;    conf.request_method          = environment.get("REQUEST_METHOD",        "POST"); +  conf.query_base              = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?"; +  conf.http_url                = environment.get("HTTP_REFERER",          conf.query_base ~ conf.query_string);    struct CGI_val {      string db_selected      = "";      string sql_match_limit  = "";     // radio: ( 1000 | 2500 ) @@ -100,6 +152,7 @@ void cgi_function_intro(Cgi cgi) {        // static abstract_         = ctRegex!(`(?:^|\s~\s*)abstract:\s+(?P<matched>.+)$`,       "m");        static src_filename_base = ctRegex!(`^src_filename_base:\s+(?P<matched>.+)$`,         "m");      } +    auto rgx  = Rgx();      struct searchFields {        string canned_query      = ""; // GET  canned_query     == cq        string search_text_area  = ""; // POST search_text_area == tsa @@ -134,7 +187,6 @@ void cgi_function_intro(Cgi cgi) {        string searched          = ""; // searched          == se     checked        string sql               = ""; // sql               == sql    checked      } -    auto rgx  = Rgx();      auto got  = searchFields();      if (environment.get("REQUEST_METHOD", "POST") == "POST") {        if ("sf" in cgi.post) { @@ -392,9 +444,9 @@ void cgi_function_intro(Cgi cgi) {    string canned_url () {      string _url = "";      if (environment.get("REQUEST_METHOD", "POST") == "POST") { -      _url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query; +      _url = conf.query_base ~ tf.canned_query;      } else if (environment.get("REQUEST_METHOD", "POST") == "GET") { -      _url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", ""); +      _url = conf.query_base ~ environment.get("QUERY_STRING", "");      }      return _url;    } @@ -438,10 +490,10 @@ void cgi_function_intro(Cgi cgi) {        ~ "</a></font>";      return _matched_objects_text;    } -  string base                  ; // = ""; -  string tip                   ; // = ""; -  string search_note           ; // = ""; -  uint   sql_match_offset_count   = 0; +  string base; // = ""; +  string tip; // = ""; +  string search_note; // = ""; +  uint   sql_match_offset_count = 0;    string previous_next () {      auto rgx = regex_canned_search;      string _previous_next = ""; @@ -499,823 +551,824 @@ void cgi_function_intro(Cgi cgi) {    </title>    <meta name="sourcefile" content="SiSU.sst">    <link rel="generator" href="sisudoc.org"> -  <link rel="shortcut icon" href="https://%s/image_sys/spine.ico"> +  <link rel="shortcut icon" href="%s://%s/image_sys/spine.ico">    <style media = "all"> -   *{ -    padding                  : 0px; -    margin                   : 2px; -  } -  body { -    height                   : 100vh; -    background-color         : #FFFFFF; -  } -  body { -    color                    : #000000; -    background               : #FFFFFF; -    background-color         : #FFFFFF; -  } -  a:link { -    color                    : #003399; -    text-decoration          : none; -  } -  a:visited { -    color                    : #003399; -    text-decoration          : none; -  } -  a:hover { -    color                    : #000000; -    background-color         : #F9F9AA; -  } -  a.lnkocn:link { -    color                    : #777777; -    text-decoration          : none; -  } -  a.lnkocn:visited { -    color                    : #32CD32; -    text-decoration          : none; -  } -  a.lnkocn:hover { -    color                    : #777777; -    font-size                : 15px; -  } -  a:hover img { -    background-color         : #FFFFFF; -  } -  a:active { -    color                    : #003399; -    text-decoration          : underline; -  } -  .flex-container { -    display                  : flex; -  } -  div.publication { -    margin-top               : 2px; -    margin-bottom            : 4px; -    margin-left              : 0%%; -    margin-right             : 0%%; -  } -  div.textview_ocn { -    margin-left              : 0%%; -    margin-right             : 1%%; -  } -  div.textview_found { -    margin-left              : 1%%; -    margin-right             : 1%%; -  } -  textarea { -    color                    : #000000; -    background-color         : #FFFFFF; -  } -  span.match { -    color                    : #000000; -    background-color         : #FFFF48; -  } -  p.norm { } -  p.center { text-align      : center; } -  p.i1 { padding-left        : 1em; } -  p.i2 { padding-left        : 2em; } -  p.i3 { padding-left        : 3em; } -  p.i4 { padding-left        : 4em; } -  p.i5 { padding-left        : 5em; } -  p.i6 { padding-left        : 6em; } -  p.i7 { padding-left        : 7em; } -  p.i8 { padding-left        : 8em; } -  p.i9 { padding-left        : 9em; } -  /* hanging indent */ -  p[indent="h0i0"] { -    padding-left             : 0em; -    text-indent              : 0em; -  } -  p.publication { -    font-size                : 100%%; -    margin-left              : 0em; -    margin-top               : 0px; -    margin-bottom            : 0px; -    margin-right             : 6px; -    text-align               : left; -  } -  p.ocn_is { -    font-size                : 100%%; -    display                  : inline-block; -  } -  p.matched_ocn { -    font-size                : 90%%; -    margin-left              : 2em; -    margin-top               : 0px; -    margin-bottom            : 0px; -    margin-right             : 6px; -    text-align               : left; -  } -  p[indent="h0i1"] { -    padding-left             : 1em; -    text-indent              : -1em; -  } -  p[indent="h0i2"] { -    padding-left             : 2em; -    text-indent              : -2em; -  } -  p[indent="h0i3"] { -    padding-left             : 3em; -    text-indent              : -3em; -  } -  p[indent="h0i4"] { -    padding-left             : 4em; -    text-indent              : -4em; -  } -  p[indent="h0i5"] { -    padding-left             : 5em; -    text-indent              : -5em; -  } -  p[indent="h0i6"] { -    padding-left             : 6em; -    text-indent              : -6em; -  } -  p[indent="h0i7"] { -    padding-left             : 7em; -    text-indent              : -7em; -  } -  p[indent="h0i8"] { -    padding-left             : 8em; -    text-indent              : -8em; -  } -  p[indent="h0i9"] { -    padding-left             : 9em; -    text-indent              : -9em; -  } -  p[indent="h1i0"] { -    padding-left             : 0em; -    text-indent              : 1em; -  } -  p[indent="h1i1"] { -    padding-left             : 1em; -    text-indent              : 0em; -  } -  p[indent="h1i2"] { -    padding-left             : 2em; -    text-indent              : -1em; -  } -  p[indent="h1i3"] { -    padding-left             : 3em; -    text-indent              : -2em; -  } -  p[indent="h1i4"] { -    padding-left             : 4em; -    text-indent              : -3em; -  } -  p[indent="h1i5"] { -    padding-left             : 5em; -    text-indent              : -4em; -  } -  p[indent="h1i6"] { -    padding-left             : 6em; -    text-indent              : -5em; -  } -  p[indent="h1i7"] { -    padding-left             : 7em; -    text-indent              : -6em; -  } -  p[indent="h1i8"] { -    padding-left             : 8em; -    text-indent              : -7em; -  } -  p[indent="h1i9"] { -    padding-left             : 9em; -    text-indent              : -8em; -  } -  p[indent="h2i0"] { -    padding-left             : 0em; -    text-indent              : 2em; -  } -  p[indent="h2i1"] { -    padding-left             : 1em; -    text-indent              : 1em; -  } -  p[indent="h2i2"] { -    padding-left             : 2em; -    text-indent              : 0em; -  } -  p[indent="h2i3"] { -    padding-left             : 3em; -    text-indent              : -1em; -  } -  p[indent="h2i4"] { -    padding-left             : 4em; -    text-indent              : -2em; -  } -  p[indent="h2i5"] { -    padding-left             : 5em; -    text-indent              : -3em; -  } -  p[indent="h2i6"] { -    padding-left             : 6em; -    text-indent              : -4em; -  } -  p[indent="h2i7"] { -    padding-left             : 7em; -    text-indent              : -5em; -  } -  p[indent="h2i8"] { -    padding-left             : 8em; -    text-indent              : -6em; -  } -  p[indent="h2i9"] { -    padding-left             : 9em; -    text-indent              : -7em; -  } -  p[indent="h3i0"] { -    padding-left             : 0em; -    text-indent              : 3em; -  } -  p[indent="h3i1"] { -    padding-left             : 1em; -    text-indent              : 2em; -  } -  p[indent="h3i2"] { -    padding-left             : 2em; -    text-indent              : 1em; -  } -  p[indent="h3i3"] { -    padding-left             : 3em; -    text-indent              : 0em; -  } -  p[indent="h3i4"] { -    padding-left             : 4em; -    text-indent              : -1em; -  } -  p[indent="h3i5"] { -    padding-left             : 5em; -    text-indent              : -2em; -  } -  p[indent="h3i6"] { -    padding-left             : 6em; -    text-indent              : -3em; -  } -  p[indent="h3i7"] { -    padding-left             : 7em; -    text-indent              : -4em; -  } -  p[indent="h3i8"] { -    padding-left             : 8em; -    text-indent              : -5em; -  } -  p[indent="h3i9"] { -    padding-left             : 9em; -    text-indent              : -6em; -  } -  p[indent="h4i0"] { -    padding-left             : 0em; -    text-indent              : 4em; -  } -  p[indent="h4i1"] { -    padding-left             : 1em; -    text-indent              : 3em; -  } -  p[indent="h4i2"] { -    padding-left             : 2em; -    text-indent              : 2em; -  } -  p[indent="h4i3"] { -    padding-left             : 3em; -    text-indent              : 1em; -  } -  p[indent="h4i4"] { -    padding-left             : 4em; -    text-indent              : 0em; -  } -  p[indent="h4i5"] { -    padding-left             : 5em; -    text-indent              : -1em; -  } -  p[indent="h4i6"] { -    padding-left             : 6em; -    text-indent              : -2em; -  } -  p[indent="h4i7"] { -    padding-left             : 7em; -    text-indent              : -3em; -  } -  p[indent="h4i8"] { -    padding-left             : 8em; -    text-indent              : -4em; -  } -  p[indent="h4i9"] { -    padding-left             : 9em; -    text-indent              : -5em; -  } -  p[indent="h5i0"] { -    padding-left             : 0em; -    text-indent              : 5em; -  } -  p[indent="h5i1"] { -    padding-left             : 1em; -    text-indent              : 4em; -  } -  p[indent="h5i2"] { -    padding-left             : 2em; -    text-indent              : 3em; -  } -  p[indent="h5i3"] { -    padding-left             : 3em; -    text-indent              : 2em; -  } -  p[indent="h5i4"] { -    padding-left             : 4em; -    text-indent              : 1em; -  } -  p[indent="h5i5"] { -    padding-left             : 5em; -    text-indent              : 0em; -  } -  p[indent="h5i6"] { -    padding-left             : 6em; -    text-indent              : -1em; -  } -  p[indent="h5i7"] { -    padding-left             : 7em; -    text-indent              : -2em; -  } -  p[indent="h5i8"] { -    padding-left             : 8em; -    text-indent              : -3em; -  } -  p[indent="h5i9"] { -    padding-left             : 9em; -    text-indent              : -4em; -  } -  p[indent="h6i0"] { -    padding-left             : 0em; -    text-indent              : 6em; -  } -  p[indent="h6i1"] { -    padding-left             : 1em; -    text-indent              : 5em; -  } -  p[indent="h6i2"] { -    padding-left             : 2em; -    text-indent              : 4em; -  } -  p[indent="h6i3"] { -    padding-left             : 3em; -    text-indent              : 3em; -  } -  p[indent="h6i4"] { -    padding-left             : 4em; -    text-indent              : 2em; -  } -  p[indent="h6i5"] { -    padding-left             : 5em; -    text-indent              : 1em; -  } -  p[indent="h6i6"] { -    padding-left             : 6em; -    text-indent              : 0em; -  } -  p[indent="h6i7"] { -    padding-left             : 7em; -    text-indent              : -1em; -  } -  p[indent="h6i8"] { -    padding-left             : 8em; -    text-indent              : -2em; -  } -  p[indent="h6i9"] { -    padding-left             : 9em; -    text-indent              : -3em; -  } -  p[indent="h7i0"] { -    padding-left             : 0em; -    text-indent              : 7em; -  } -  p[indent="h7i1"] { -    padding-left             : 1em; -    text-indent              : 6em; -  } -  p[indent="h7i2"] { -    padding-left             : 2em; -    text-indent              : 5em; -  } -  p[indent="h7i3"] { -    padding-left             : 3em; -    text-indent              : 4em; -  } -  p[indent="h7i4"] { -    padding-left             : 4em; -    text-indent              : 3em; -  } -  p[indent="h7i5"] { -    padding-left             : 5em; -    text-indent              : 2em; -  } -  p[indent="h7i6"] { -    padding-left             : 6em; -    text-indent              : 1em; -  } -  p[indent="h7i7"] { -    padding-left             : 7em; -    text-indent              : 0em; -  } -  p[indent="h7i8"] { -    padding-left             : 8em; -    text-indent              : -1em; -  } -  p[indent="h7i9"] { -    padding-left             : 9em; -    text-indent              : -2em; -  } -  p[indent="h8i0"] { -    padding-left             : 0em; -    text-indent              : 8em; -  } -  p[indent="h8i1"] { -    padding-left             : 1em; -    text-indent              : 7em; -  } -  p[indent="h8i2"] { -    padding-left             : 2em; -    text-indent              : 6em; -  } -  p[indent="h8i3"] { -    padding-left             : 3em; -    text-indent              : 5em; -  } -  p[indent="h8i4"] { -    padding-left             : 4em; -    text-indent              : 4em; -  } -  p[indent="h8i5"] { -    padding-left             : 5em; -    text-indent              : 3em; -  } -  p[indent="h8i6"] { -    padding-left             : 6em; -    text-indent              : 2em; -  } -  p[indent="h8i7"] { -    padding-left             : 7em; -    text-indent              : 1em; -  } -  p[indent="h8i8"] { -    padding-left             : 8em; -    text-indent              : 0em; -  } -  p[indent="h8i9"] { -    padding-left             : 9em; -    text-indent              : -1em; -  } -  p[indent="h9i0"] { -    padding-left             : 0em; -    text-indent              : 9em; -  } -  p[indent="h9i1"] { -    padding-left             : 1em; -    text-indent              : 8em; -  } -  p[indent="h9i2"] { -    padding-left             : 2em; -    text-indent              : 7em; -  } -  p[indent="h9i3"] { -    padding-left             : 3em; -    text-indent              : 6em; -  } -  p[indent="h9i4"] { -    padding-left             : 4em; -    text-indent              : 5em; -  } -  p[indent="h9i5"] { -    padding-left             : 5em; -    text-indent              : 4em; -  } -  p[indent="h9i6"] { -    padding-left             : 6em; -    text-indent              : 3em; -  } -  p[indent="h9i7"] { -    padding-left             : 7em; -    text-indent              : 2em; -  } -  p[indent="h9i8"] { -    padding-left             : 8em; -    text-indent              : 1em; -  } -  p[indent="h9i9"] { -    padding-left             : 9em; -    text-indent              : 0em; -  } -  p.spaced { white-space     : pre; } -  p.block { -    white-space              : pre; -  } -  p.group { } -  p.alt { } -  p.verse { -    white-space              : pre; -    margin-bottom            : 6px; -  } -  p.caption { -    text-align               : left; -    font-size                : 80%%; -    display                  : inline; -  } -  p.endnote { -    font-size                : 96%%; -    line-height              : 120%%; -    text-align               : left; -    margin-right             : 15mm; -    padding-left             : 1em; -    text-indent              : -1em; -  } -  p.center { -    text-align               : center; -  } -  p.bold { -    font-weight              : bold; -  } -  p.bold_left { -    font-weight              : bold; -    text-align               : left; -  } -  p.centerbold { -    text-align               : center; -    font-weight              : bold; -  } -  p.em { -    font-weight              : bold; -    font-style               : normal; -    background               : #FFF3B6; -  } -  p.small { -    font-size                : 80%%; -    margin-top               : 0px; -    margin-bottom            : 0px; -    margin-right             : 6px; -    text-align               : left; -  } -  .tiny, .tiny_left, .tiny_right, .tiny_center { -    font-size                : 10px; -    margin-top               : 0px; -    margin-bottom            : 0px; -    color                    : #EEEEEE; -    margin-right             : 6px; -    text-align               : left; -  } -  p.tiny { } -  p.tiny_left { -    margin-left              : 0px; -    margin-right             : 0px; -    text-align               : left; -  } -  p.tiny_right { -    margin-right             : 1em; -    text-align               : right; -  } -  p.tiny_center { -    margin-left              : 0px; -    margin-right             : 0px; -    text-align               : center; -  } -  p.book_index_lev1 { -    line-height              : 100%%; -    margin-top               : 4px; -    margin-bottom            : 1px; -  } -  p.book_index_lev2 { -    line-height              : 100%%; -    text-align               : left; -    margin-left              : 3em; -    margin-top               : 1px; -    margin-bottom            : 3px; -  } -  tt { -    font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; -    background-color         : #555555; -    color                    : #DDDDDD; -  } -  pre { -    width                    : auto; -    display                  : block; -    clear                    : both; -    color                    : #555555; -  } -  pre.codeline { -    display                  : table; -    clear                    : both; -    table-layout             : fixed; -    margin-left              : 5%%; -    margin-right             : 5%%; -    width                    : 90%%; -    white-space              : pre-wrap; -    border-style             : none; -    border-radius            : 5px 5px 5px 5px; -    box-shadow               : 0 2px 5px #AAAAAA inset; -    margin-bottom            : 1em; -    padding                  : 0.5em 1em; -    page-break-inside        : avoid; -    word-wrap                : break-word; -    font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; -    white-space              : pre; -    white-space              : pre-wrap; -    white-space              : -moz-pre-wrap; -    white-space              : -o-pre-wrap; -    background-color         : #555555; -    color                    : #DDDDDD; -    font-size                : 95%%; -    line-height              : 100%%; -  } -  pre.codeline::before { -    counter-reset            : linenum; -  } -  pre.codeline span.tr { -    display                  : table-row; -    counter-increment        : linenum; -  } -  pre.codeline span.th { -    display                  : table-cell; -    user-select              : none; -    -moz-user-select         : none; -    -webkit-user-select      : none; -    padding                  : 0.5em 0.5em; -  } -  pre.codeline span.th::before { -    content                  : counter(linenum) "."; -    color                    : #999999; -    text-align               : right; -    display                  : block; -  } -  pre.codeline span.th { -    width                    : 4em; -  } -  pre.codeline code { -    display                  : table-cell; -  } -  p.code { -    border-style             : none; -  } -  note { white-space         : pre; } -  em { -    font-weight              : bold; -    font-style               : italic; -  } -  p.left,th.left,td.left { -    text-align               : left; -  } -  p.small_left,th.small_left,td.small_left { -    text-align               : left; -    font-size                : 80%%; -  } -  p.right,th.right,td.right { -    text-align               : right; -  } -  ul, li { -    list-style-type          : none; -    list-style               : none; -    padding-left             : 20px; -    font-weight              : normal; -    line-height              : 150%%; -    text-align               : left; -    text-indent              : 0mm; -    margin-left              : 1em; -    margin-right             : 2em; -    margin-top               : 3px; -    margin-bottom            : 3px; -  } -  li { -    background               : (../image_sys/bullet_09.png) no-repeat 0px 6px; -  } -  ul { } -  h0, h1, h2, h3, h4, h5, h6, h7 { -    font-weight              : bold; -    line-height              : 120%%; -    text-align               : left; -    margin-top               : 20px; -    margin-bottom            : 10px; -  } -  h4.norm, h5.norm, h6.norm, h7.norm { -    margin-top               : 10px; -    margin-bottom            : 0px; -  } -  h0 { font-size             : 125%%; } -  h1 { font-size             : 120%%; } -  h2 { font-size             : 115%%; } -  h3 { font-size             : 110%%; } -  h4 { font-size             : 105%%; } -  h5 { font-size             : 100%%; } -  h6 { font-size             : 100%%; } -  h7 { font-size             : 100%%; } -  h0, h1, h2, h3, h4, h5, h6, h7 { -    text-shadow              : .2em .2em .3em #999999; -  } -  h1.i { margin-left         : 2em; } -  h2.i { margin-left         : 3em; } -  h3.i { margin-left         : 4em; } -  h4.i { margin-left         : 5em; } -  h5.i { margin-left         : 6em; } -  h6.i { margin-left         : 7em; } -  h7.i { margin-left         : 8em; } -  h8.i { margin-left         : 9em; } -  h9.i { margin-left         : 10em; } -  .toc { -    font-weight              : normal; -    margin-top               : 6px; -    margin-bottom            : 6px; -  } -  h0.toc { -    margin-left              : 1em; -    font-size                : 120%%; -    line-height              : 150%%; -  } -  h1.toc { -    margin-left              : 1em; -    font-size                : 115%%; -    line-height              : 150%%; -  } -  h2.toc { -    margin-left              : 2em; -    font-size                : 110%%; -    line-height              : 140%%; -  } -  h3.toc { -    margin-left              : 3em; -    font-size                : 105%%; -    line-height              : 120%%; -  } -  h4.toc { -    margin-left              : 4em; -    font-size                : 100%%; -    line-height              : 120%%; -  } -  h5.toc { -    margin-left              : 5em; -    font-size                : 95%%; -    line-height              : 110%%; -  } -  h6.toc { -    margin-left              : 6em; -    font-size                : 90%%; -    line-height              : 110%%; -  } -  h7.toc { -    margin-left              : 7em; -    font-size                : 85%%; -    line-height              : 100%%; -  } -  .subtoc { -    margin-right             : 34%%; -    font-weight              : normal; -  } -  h5.subtoc { -    margin-left              : 2em; -    font-size                : 80%%; -    margin-top               : 2px; -    margin-bottom            : 2px; -  } -  h6.subtoc { -    margin-left              : 3em; -    font-size                : 75%%; -    margin-top               : 0px; -    margin-bottom            : 0px; -  } -  h7.subtoc { -    margin-left              : 4em; -    font-size                : 70%%; -    margin-top               : 0px; -    margin-bottom            : 0px; -  } -  hr { -    display                  : block; -    height                   : 1px; -    width                    : 100%%; -    border                   : 0; -    border-top               : 1px solid #AAAAAA; -    border-color             : #AAAAAA -    background-color         : #AAAAAA -    margin-left              : 0%%; -    margin-right             : 0em; -    margin-top               : 0.5em; -    margin-bottom            : 0.5em; -    padding                  : 0; -  } -</style> +    *{ +      padding                  : 0px; +      margin                   : 2px; +    } +    body { +      height                   : 100vh; +      background-color         : #FFFFFF; +    } +    body { +      color                    : #000000; +      background               : #FFFFFF; +      background-color         : #FFFFFF; +    } +    a:link { +      color                    : #003399; +      text-decoration          : none; +    } +    a:visited { +      color                    : #003399; +      text-decoration          : none; +    } +    a:hover { +      color                    : #000000; +      background-color         : #F9F9AA; +    } +    a.lnkocn:link { +      color                    : #777777; +      text-decoration          : none; +    } +    a.lnkocn:visited { +      color                    : #32CD32; +      text-decoration          : none; +    } +    a.lnkocn:hover { +      color                    : #777777; +      font-size                : 15px; +    } +    a:hover img { +      background-color         : #FFFFFF; +    } +    a:active { +      color                    : #003399; +      text-decoration          : underline; +    } +    .flex-container { +      display                  : flex; +    } +    div.publication { +      margin-top               : 2px; +      margin-bottom            : 4px; +      margin-left              : 0%%; +      margin-right             : 0%%; +    } +    div.textview_ocn { +      margin-left              : 0%%; +      margin-right             : 1%%; +    } +    div.textview_found { +      margin-left              : 1%%; +      margin-right             : 1%%; +    } +    textarea { +      color                    : #000000; +      background-color         : #FFFFFF; +    } +    span.match { +      color                    : #000000; +      background-color         : #FFFF48; +    } +    p.norm { } +    p.center { text-align      : center; } +    p.i1 { padding-left        : 1em; } +    p.i2 { padding-left        : 2em; } +    p.i3 { padding-left        : 3em; } +    p.i4 { padding-left        : 4em; } +    p.i5 { padding-left        : 5em; } +    p.i6 { padding-left        : 6em; } +    p.i7 { padding-left        : 7em; } +    p.i8 { padding-left        : 8em; } +    p.i9 { padding-left        : 9em; } +    /* hanging indent */ +    p[indent="h0i0"] { +      padding-left             : 0em; +      text-indent              : 0em; +    } +    p.publication { +      font-size                : 100%%; +      margin-left              : 0em; +      margin-top               : 0px; +      margin-bottom            : 0px; +      margin-right             : 6px; +      text-align               : left; +    } +    p.ocn_is { +      font-size                : 100%%; +      display                  : inline-block; +    } +    p.matched_ocn { +      font-size                : 90%%; +      margin-left              : 2em; +      margin-top               : 0px; +      margin-bottom            : 0px; +      margin-right             : 6px; +      text-align               : left; +    } +    p[indent="h0i1"] { +      padding-left             : 1em; +      text-indent              : -1em; +    } +    p[indent="h0i2"] { +      padding-left             : 2em; +      text-indent              : -2em; +    } +    p[indent="h0i3"] { +      padding-left             : 3em; +      text-indent              : -3em; +    } +    p[indent="h0i4"] { +      padding-left             : 4em; +      text-indent              : -4em; +    } +    p[indent="h0i5"] { +      padding-left             : 5em; +      text-indent              : -5em; +    } +    p[indent="h0i6"] { +      padding-left             : 6em; +      text-indent              : -6em; +    } +    p[indent="h0i7"] { +      padding-left             : 7em; +      text-indent              : -7em; +    } +    p[indent="h0i8"] { +      padding-left             : 8em; +      text-indent              : -8em; +    } +    p[indent="h0i9"] { +      padding-left             : 9em; +      text-indent              : -9em; +    } +    p[indent="h1i0"] { +      padding-left             : 0em; +      text-indent              : 1em; +    } +    p[indent="h1i1"] { +      padding-left             : 1em; +      text-indent              : 0em; +    } +    p[indent="h1i2"] { +      padding-left             : 2em; +      text-indent              : -1em; +    } +    p[indent="h1i3"] { +      padding-left             : 3em; +      text-indent              : -2em; +    } +    p[indent="h1i4"] { +      padding-left             : 4em; +      text-indent              : -3em; +    } +    p[indent="h1i5"] { +      padding-left             : 5em; +      text-indent              : -4em; +    } +    p[indent="h1i6"] { +      padding-left             : 6em; +      text-indent              : -5em; +    } +    p[indent="h1i7"] { +      padding-left             : 7em; +      text-indent              : -6em; +    } +    p[indent="h1i8"] { +      padding-left             : 8em; +      text-indent              : -7em; +    } +    p[indent="h1i9"] { +      padding-left             : 9em; +      text-indent              : -8em; +    } +    p[indent="h2i0"] { +      padding-left             : 0em; +      text-indent              : 2em; +    } +    p[indent="h2i1"] { +      padding-left             : 1em; +      text-indent              : 1em; +    } +    p[indent="h2i2"] { +      padding-left             : 2em; +      text-indent              : 0em; +    } +    p[indent="h2i3"] { +      padding-left             : 3em; +      text-indent              : -1em; +    } +    p[indent="h2i4"] { +      padding-left             : 4em; +      text-indent              : -2em; +    } +    p[indent="h2i5"] { +      padding-left             : 5em; +      text-indent              : -3em; +    } +    p[indent="h2i6"] { +      padding-left             : 6em; +      text-indent              : -4em; +    } +    p[indent="h2i7"] { +      padding-left             : 7em; +      text-indent              : -5em; +    } +    p[indent="h2i8"] { +      padding-left             : 8em; +      text-indent              : -6em; +    } +    p[indent="h2i9"] { +      padding-left             : 9em; +      text-indent              : -7em; +    } +    p[indent="h3i0"] { +      padding-left             : 0em; +      text-indent              : 3em; +    } +    p[indent="h3i1"] { +      padding-left             : 1em; +      text-indent              : 2em; +    } +    p[indent="h3i2"] { +      padding-left             : 2em; +      text-indent              : 1em; +    } +    p[indent="h3i3"] { +      padding-left             : 3em; +      text-indent              : 0em; +    } +    p[indent="h3i4"] { +      padding-left             : 4em; +      text-indent              : -1em; +    } +    p[indent="h3i5"] { +      padding-left             : 5em; +      text-indent              : -2em; +    } +    p[indent="h3i6"] { +      padding-left             : 6em; +      text-indent              : -3em; +    } +    p[indent="h3i7"] { +      padding-left             : 7em; +      text-indent              : -4em; +    } +    p[indent="h3i8"] { +      padding-left             : 8em; +      text-indent              : -5em; +    } +    p[indent="h3i9"] { +      padding-left             : 9em; +      text-indent              : -6em; +    } +    p[indent="h4i0"] { +      padding-left             : 0em; +      text-indent              : 4em; +    } +    p[indent="h4i1"] { +      padding-left             : 1em; +      text-indent              : 3em; +    } +    p[indent="h4i2"] { +      padding-left             : 2em; +      text-indent              : 2em; +    } +    p[indent="h4i3"] { +      padding-left             : 3em; +      text-indent              : 1em; +    } +    p[indent="h4i4"] { +      padding-left             : 4em; +      text-indent              : 0em; +    } +    p[indent="h4i5"] { +      padding-left             : 5em; +      text-indent              : -1em; +    } +    p[indent="h4i6"] { +      padding-left             : 6em; +      text-indent              : -2em; +    } +    p[indent="h4i7"] { +      padding-left             : 7em; +      text-indent              : -3em; +    } +    p[indent="h4i8"] { +      padding-left             : 8em; +      text-indent              : -4em; +    } +    p[indent="h4i9"] { +      padding-left             : 9em; +      text-indent              : -5em; +    } +    p[indent="h5i0"] { +      padding-left             : 0em; +      text-indent              : 5em; +    } +    p[indent="h5i1"] { +      padding-left             : 1em; +      text-indent              : 4em; +    } +    p[indent="h5i2"] { +      padding-left             : 2em; +      text-indent              : 3em; +    } +    p[indent="h5i3"] { +      padding-left             : 3em; +      text-indent              : 2em; +    } +    p[indent="h5i4"] { +      padding-left             : 4em; +      text-indent              : 1em; +    } +    p[indent="h5i5"] { +      padding-left             : 5em; +      text-indent              : 0em; +    } +    p[indent="h5i6"] { +      padding-left             : 6em; +      text-indent              : -1em; +    } +    p[indent="h5i7"] { +      padding-left             : 7em; +      text-indent              : -2em; +    } +    p[indent="h5i8"] { +      padding-left             : 8em; +      text-indent              : -3em; +    } +    p[indent="h5i9"] { +      padding-left             : 9em; +      text-indent              : -4em; +    } +    p[indent="h6i0"] { +      padding-left             : 0em; +      text-indent              : 6em; +    } +    p[indent="h6i1"] { +      padding-left             : 1em; +      text-indent              : 5em; +    } +    p[indent="h6i2"] { +      padding-left             : 2em; +      text-indent              : 4em; +    } +    p[indent="h6i3"] { +      padding-left             : 3em; +      text-indent              : 3em; +    } +    p[indent="h6i4"] { +      padding-left             : 4em; +      text-indent              : 2em; +    } +    p[indent="h6i5"] { +      padding-left             : 5em; +      text-indent              : 1em; +    } +    p[indent="h6i6"] { +      padding-left             : 6em; +      text-indent              : 0em; +    } +    p[indent="h6i7"] { +      padding-left             : 7em; +      text-indent              : -1em; +    } +    p[indent="h6i8"] { +      padding-left             : 8em; +      text-indent              : -2em; +    } +    p[indent="h6i9"] { +      padding-left             : 9em; +      text-indent              : -3em; +    } +    p[indent="h7i0"] { +      padding-left             : 0em; +      text-indent              : 7em; +    } +    p[indent="h7i1"] { +      padding-left             : 1em; +      text-indent              : 6em; +    } +    p[indent="h7i2"] { +      padding-left             : 2em; +      text-indent              : 5em; +    } +    p[indent="h7i3"] { +      padding-left             : 3em; +      text-indent              : 4em; +    } +    p[indent="h7i4"] { +      padding-left             : 4em; +      text-indent              : 3em; +    } +    p[indent="h7i5"] { +      padding-left             : 5em; +      text-indent              : 2em; +    } +    p[indent="h7i6"] { +      padding-left             : 6em; +      text-indent              : 1em; +    } +    p[indent="h7i7"] { +      padding-left             : 7em; +      text-indent              : 0em; +    } +    p[indent="h7i8"] { +      padding-left             : 8em; +      text-indent              : -1em; +    } +    p[indent="h7i9"] { +      padding-left             : 9em; +      text-indent              : -2em; +    } +    p[indent="h8i0"] { +      padding-left             : 0em; +      text-indent              : 8em; +    } +    p[indent="h8i1"] { +      padding-left             : 1em; +      text-indent              : 7em; +    } +    p[indent="h8i2"] { +      padding-left             : 2em; +      text-indent              : 6em; +    } +    p[indent="h8i3"] { +      padding-left             : 3em; +      text-indent              : 5em; +    } +    p[indent="h8i4"] { +      padding-left             : 4em; +      text-indent              : 4em; +    } +    p[indent="h8i5"] { +      padding-left             : 5em; +      text-indent              : 3em; +    } +    p[indent="h8i6"] { +      padding-left             : 6em; +      text-indent              : 2em; +    } +    p[indent="h8i7"] { +      padding-left             : 7em; +      text-indent              : 1em; +    } +    p[indent="h8i8"] { +      padding-left             : 8em; +      text-indent              : 0em; +    } +    p[indent="h8i9"] { +      padding-left             : 9em; +      text-indent              : -1em; +    } +    p[indent="h9i0"] { +      padding-left             : 0em; +      text-indent              : 9em; +    } +    p[indent="h9i1"] { +      padding-left             : 1em; +      text-indent              : 8em; +    } +    p[indent="h9i2"] { +      padding-left             : 2em; +      text-indent              : 7em; +    } +    p[indent="h9i3"] { +      padding-left             : 3em; +      text-indent              : 6em; +    } +    p[indent="h9i4"] { +      padding-left             : 4em; +      text-indent              : 5em; +    } +    p[indent="h9i5"] { +      padding-left             : 5em; +      text-indent              : 4em; +    } +    p[indent="h9i6"] { +      padding-left             : 6em; +      text-indent              : 3em; +    } +    p[indent="h9i7"] { +      padding-left             : 7em; +      text-indent              : 2em; +    } +    p[indent="h9i8"] { +      padding-left             : 8em; +      text-indent              : 1em; +    } +    p[indent="h9i9"] { +      padding-left             : 9em; +      text-indent              : 0em; +    } +    p.spaced { white-space     : pre; } +    p.block { +      white-space              : pre; +    } +    p.group { } +    p.alt { } +    p.verse { +      white-space              : pre; +      margin-bottom            : 6px; +    } +    p.caption { +      text-align               : left; +      font-size                : 80%%; +      display                  : inline; +    } +    p.endnote { +      font-size                : 96%%; +      line-height              : 120%%; +      text-align               : left; +      margin-right             : 15mm; +      padding-left             : 1em; +      text-indent              : -1em; +    } +    p.center { +      text-align               : center; +    } +    p.bold { +      font-weight              : bold; +    } +    p.bold_left { +      font-weight              : bold; +      text-align               : left; +    } +    p.centerbold { +      text-align               : center; +      font-weight              : bold; +    } +    p.em { +      font-weight              : bold; +      font-style               : normal; +      background               : #FFF3B6; +    } +    p.small { +      font-size                : 80%%; +      margin-top               : 0px; +      margin-bottom            : 0px; +      margin-right             : 6px; +      text-align               : left; +    } +    .tiny, .tiny_left, .tiny_right, .tiny_center { +      font-size                : 10px; +      margin-top               : 0px; +      margin-bottom            : 0px; +      color                    : #EEEEEE; +      margin-right             : 6px; +      text-align               : left; +    } +    p.tiny { } +    p.tiny_left { +      margin-left              : 0px; +      margin-right             : 0px; +      text-align               : left; +    } +    p.tiny_right { +      margin-right             : 1em; +      text-align               : right; +    } +    p.tiny_center { +      margin-left              : 0px; +      margin-right             : 0px; +      text-align               : center; +    } +    p.book_index_lev1 { +      line-height              : 100%%; +      margin-top               : 4px; +      margin-bottom            : 1px; +    } +    p.book_index_lev2 { +      line-height              : 100%%; +      text-align               : left; +      margin-left              : 3em; +      margin-top               : 1px; +      margin-bottom            : 3px; +    } +    tt { +      font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; +      background-color         : #555555; +      color                    : #DDDDDD; +    } +    pre { +      width                    : auto; +      display                  : block; +      clear                    : both; +      color                    : #555555; +    } +    pre.codeline { +      display                  : table; +      clear                    : both; +      table-layout             : fixed; +      margin-left              : 5%%; +      margin-right             : 5%%; +      width                    : 90%%; +      white-space              : pre-wrap; +      border-style             : none; +      border-radius            : 5px 5px 5px 5px; +      box-shadow               : 0 2px 5px #AAAAAA inset; +      margin-bottom            : 1em; +      padding                  : 0.5em 1em; +      page-break-inside        : avoid; +      word-wrap                : break-word; +      font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; +      white-space              : pre; +      white-space              : pre-wrap; +      white-space              : -moz-pre-wrap; +      white-space              : -o-pre-wrap; +      background-color         : #555555; +      color                    : #DDDDDD; +      font-size                : 95%%; +      line-height              : 100%%; +    } +    pre.codeline::before { +      counter-reset            : linenum; +    } +    pre.codeline span.tr { +      display                  : table-row; +      counter-increment        : linenum; +    } +    pre.codeline span.th { +      display                  : table-cell; +      user-select              : none; +      -moz-user-select         : none; +      -webkit-user-select      : none; +      padding                  : 0.5em 0.5em; +    } +    pre.codeline span.th::before { +      content                  : counter(linenum) "."; +      color                    : #999999; +      text-align               : right; +      display                  : block; +    } +    pre.codeline span.th { +      width                    : 4em; +    } +    pre.codeline code { +      display                  : table-cell; +    } +    p.code { +      border-style             : none; +    } +    note { white-space         : pre; } +    em { +      font-weight              : bold; +      font-style               : italic; +    } +    p.left,th.left,td.left { +      text-align               : left; +    } +    p.small_left,th.small_left,td.small_left { +      text-align               : left; +      font-size                : 80%%; +    } +    p.right,th.right,td.right { +      text-align               : right; +    } +    ul, li { +      list-style-type          : none; +      list-style               : none; +      padding-left             : 20px; +      font-weight              : normal; +      line-height              : 150%%; +      text-align               : left; +      text-indent              : 0mm; +      margin-left              : 1em; +      margin-right             : 2em; +      margin-top               : 3px; +      margin-bottom            : 3px; +    } +    li { +      background               : (../image_sys/bullet_09.png) no-repeat 0px 6px; +    } +    ul { } +    h0, h1, h2, h3, h4, h5, h6, h7 { +      font-weight              : bold; +      line-height              : 120%%; +      text-align               : left; +      margin-top               : 20px; +      margin-bottom            : 10px; +    } +    h4.norm, h5.norm, h6.norm, h7.norm { +      margin-top               : 10px; +      margin-bottom            : 0px; +    } +    h0 { font-size             : 125%%; } +    h1 { font-size             : 120%%; } +    h2 { font-size             : 115%%; } +    h3 { font-size             : 110%%; } +    h4 { font-size             : 105%%; } +    h5 { font-size             : 100%%; } +    h6 { font-size             : 100%%; } +    h7 { font-size             : 100%%; } +    h0, h1, h2, h3, h4, h5, h6, h7 { +      text-shadow              : .2em .2em .3em #999999; +    } +    h1.i { margin-left         : 2em; } +    h2.i { margin-left         : 3em; } +    h3.i { margin-left         : 4em; } +    h4.i { margin-left         : 5em; } +    h5.i { margin-left         : 6em; } +    h6.i { margin-left         : 7em; } +    h7.i { margin-left         : 8em; } +    h8.i { margin-left         : 9em; } +    h9.i { margin-left         : 10em; } +    .toc { +      font-weight              : normal; +      margin-top               : 6px; +      margin-bottom            : 6px; +    } +    h0.toc { +      margin-left              : 1em; +      font-size                : 120%%; +      line-height              : 150%%; +    } +    h1.toc { +      margin-left              : 1em; +      font-size                : 115%%; +      line-height              : 150%%; +    } +    h2.toc { +      margin-left              : 2em; +      font-size                : 110%%; +      line-height              : 140%%; +    } +    h3.toc { +      margin-left              : 3em; +      font-size                : 105%%; +      line-height              : 120%%; +    } +    h4.toc { +      margin-left              : 4em; +      font-size                : 100%%; +      line-height              : 120%%; +    } +    h5.toc { +      margin-left              : 5em; +      font-size                : 95%%; +      line-height              : 110%%; +    } +    h6.toc { +      margin-left              : 6em; +      font-size                : 90%%; +      line-height              : 110%%; +    } +    h7.toc { +      margin-left              : 7em; +      font-size                : 85%%; +      line-height              : 100%%; +    } +    .subtoc { +      margin-right             : 34%%; +      font-weight              : normal; +    } +    h5.subtoc { +      margin-left              : 2em; +      font-size                : 80%%; +      margin-top               : 2px; +      margin-bottom            : 2px; +    } +    h6.subtoc { +      margin-left              : 3em; +      font-size                : 75%%; +      margin-top               : 0px; +      margin-bottom            : 0px; +    } +    h7.subtoc { +      margin-left              : 4em; +      font-size                : 70%%; +      margin-top               : 0px; +      margin-bottom            : 0px; +    } +    hr { +      display                  : block; +      height                   : 1px; +      width                    : 100%%; +      border                   : 0; +      border-top               : 1px solid #AAAAAA; +      border-color             : #AAAAAA +      background-color         : #AAAAAA +      margin-left              : 0%%; +      margin-right             : 0em; +      margin-top               : 0.5em; +      margin-bottom            : 0.5em; +      padding                  : 0; +    } +  </style>  </head>  <body lang="en" xml:lang="en">  ┃", +    conf.http_request_type,      conf.http_host,     );    }    {      table = format(q"┃ - <table summary="band" border="0" cellpadding="2" cellspacing="0"> - <tr><td width="20%%"> -  <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0"> -  <tr><td align="left"> -   ≅ SiSU spine search form +  <table summary="band" border="0" cellpadding="2" cellspacing="0"> +  <tr><td width="20%%"> +   <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0"> +   <tr><td align="left"> +    ≅ SiSU spine search form +   </td></tr> +   </table> +  </td> +  <td>    </td></tr>    </table> - </td> - <td> - </td></tr> - </table> - ┃"); +    ┃");    }    {      string post_value(string field_name, string type="box", string set="on") { @@ -1359,9 +1412,9 @@ void cgi_function_intro(Cgi cgi) {        string _the_can = "";        if (show_the_can == "checked") {          tf = text_fields; -        string method_get_url            = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", ""); -        string method_post_url_construct = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query; -        // assert(method_get_url == environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string)); +        string method_get_url            = conf.query_base ~ environment.get("QUERY_STRING", ""); +        string method_post_url_construct = conf.query_base ~ tf.canned_query; +        // assert(method_get_url == environment.get("HTTP_REFERER", conf.query_base ~ conf.query_string));          if (conf.request_method == "POST") {            _the_can =              "<font size=\"2\" color=\"#666666\">" @@ -1393,12 +1446,12 @@ void cgi_function_intro(Cgi cgi) {          string search_field = post_value("sf", "field");          tf = text_fields;          tip = format(q"┃ -<font size="2" color="#666666"> -<b>database:</b> <font size="2" color="#004000">%s</font>; <b>selected view:</b> <font size="2" color="#004000">index</font> -<b>search string:</b> %s %s %s %s %s %s<br> -%s %s %s %s %s %s -</font> -┃", +      <font size="2" color="#666666"> +      <b>database:</b> <font size="2" color="#004000">%s</font>; <b>selected view:</b> <font size="2" color="#004000">index</font> +      <b>search string:</b> %s %s %s %s %s %s<br> +      %s %s %s %s %s %s +      </font> +      ┃",            cv.db_selected,            (tf.text.empty   ? "" : "\"text:   <font size=\"2\" color=\"#004000\">" ~ tf.text   ~ "</font>; "),            (tf.title.empty  ? "" : "\"title:  <font size=\"2\" color=\"#004000\">" ~ tf.title  ~ "</font>; "), @@ -1508,7 +1561,7 @@ void cgi_function_intro(Cgi cgi) {        //   cgi.write(k ~ ": " ~ d ~ "<br>");        // }      } -    { // debug cgi info +    { // debug cgi info:        // cgi.write("db_selected: "         ~ cv.db_selected ~ "<br>\n");        // cgi.write("search_text: "         ~ cv.search_text ~ "<br>\n");        // cgi.write("sql_match_limit: "     ~ cv.sql_match_limit ~ ";\n"); @@ -1578,8 +1631,8 @@ void cgi_function_intro(Cgi cgi) {            }            _sf = "( " ~ db_field ~ " LIKE\n  '%" ~ _sf ~ "%' )";            where_ ~= format(q"┃ -  %s -┃", +          %s +        ┃",              _sf            );          } @@ -1665,7 +1718,8 @@ LIMIT %s OFFSET %s                _close_para                ~ "<hr><div class=\"publication\">"                  ~ "<p class=\"publication\"><a href=\"" -                  ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                  ~ conf.http_request_type ~ "://" +                  ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                    ~ row["language_document_char"].as!string ~ "/html/"                    ~ row["src_filename_base"].as!string ~ "/"                    ~ "toc.html" @@ -1687,7 +1741,8 @@ LIMIT %s OFFSET %s                  "<div class=\"flex-container\">"                  ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"                    ~ "<p class=\"ocn_is\"><a href=\"" -                    ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                    ~ conf.http_request_type ~ "://" +                    ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                      ~ row["language_document_char"].as!string ~ "/html/"                      ~ row["src_filename_base"].as!string ~ "/"                      ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string @@ -1705,7 +1760,8 @@ LIMIT %s OFFSET %s                  "<div class=\"flex-container\">"                  ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"                    ~ "<p class=\"ocn_is\"><a href=\"" -                    ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                    ~ conf.http_request_type ~ "://" +                    ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                      ~ row["language_document_char"].as!string ~ "/html/"                      ~ row["src_filename_base"].as!string ~ "/toc.html"                    ~ "\">" @@ -1723,7 +1779,8 @@ LIMIT %s OFFSET %s                cgi.write(                  _matched_ocn_open                  ~ "<a href=\"" -                  ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                  ~ conf.http_request_type ~ "://" +                  ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                    ~ row["language_document_char"].as!string ~ "/html/"                    ~ row["src_filename_base"].as!string ~ "/"                    ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string @@ -1735,7 +1792,8 @@ LIMIT %s OFFSET %s                cgi.write(                  _matched_ocn_open                  ~ "<a href=\"" -                  ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                  ~ conf.http_request_type ~ "://" +                  ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                    ~ row["language_document_char"].as!string ~ "/html/"                    ~ row["src_filename_base"].as!string ~ "/toc.html"                  ~ "\">" diff --git a/sundry/spine_search_cgi/src/spine_search.d_ b/sundry/spine_search_cgi/src/spine_search.d_ index 6bc8c67..5907b73 100644..100755 --- a/sundry/spine_search_cgi/src/spine_search.d_ +++ b/sundry/spine_search_cgi/src/spine_search.d_ @@ -1,3 +1,54 @@ +#!/usr/bin/env rdmd +/+ +- Name: Spine, Doc Reform +  - Description: documents, structuring, processing, publishing, search +    - static content generator + +  - Author: Ralph Amissah +    [ralph.amissah@gmail.com] + +  - Copyright: (C) 2015 - 2021 Ralph Amissah, All Rights +    Reserved. + +  - License: AGPL 3 or later: + +    Spine (SiSU), a framework for document structuring, publishing and +    search + +    Copyright (C) Ralph Amissah + +    This program is free software: you can redistribute it and/or modify it +    under the terms of the GNU AFERO General Public License as published by the +    Free Software Foundation, either version 3 of the License, or (at your +    option) any later version. + +    This program is distributed in the hope that it will be useful, but WITHOUT +    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +    FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +    more details. + +    You should have received a copy of the GNU General Public License along with +    this program. If not, see [https://www.gnu.org/licenses/]. + +    If you have Internet connection, the latest version of the AGPL should be +    available at these locations: +    [https://www.fsf.org/licensing/licenses/agpl.html] +    [https://www.gnu.org/licenses/agpl.html] + +  - Spine (by Doc Reform, related to SiSU) uses standard: +    - docReform markup syntax +      - standard SiSU markup syntax with modified headers and minor modifications +    - docReform object numbering +      - standard SiSU object citation numbering & system + +  - Hompages: +    [https://www.doc_reform.org] +    [https://www.sisudoc.org] + +  - Git +    [https://git.sisudoc.org/projects/?p=software/spine.git;a=summary] + ++/  /+ dub.sdl    name "spine search"    description "spine cgi search" @@ -27,20 +78,20 @@ void cgi_function_intro(Cgi cgi) {      string query_string;      string http_url;      string request_method; +    string query_base;    } -  auto conf = Config(); // SET -  conf.http_request_type       = environment.get("REQUEST_SCHEME",        "http"); -  conf.http_host               = environment.get("HTTP_HOST",             "localhost"); -  // conf.server_name             = environment.get("SERVER_NAME",           "localhost"); +  auto conf = Config(); +  conf.http_request_type       = environment.get("REQUEST_SCHEME",        _cfg.http_request_type); +  conf.http_host               = environment.get("HTTP_HOST",             _cfg.http_host);    conf.web_doc_root_path       = environment.get("DOCUMENT_ROOT",         _cfg.doc_root_www); -  conf.doc_collection_sub_root = _cfg.doc_root_www; // (output_path - web_doc_root_path) -  // conf.doc_collection_sub_root = "/srv/www/spine/static"; // (output_path - web_doc_root_path) // problem FIX -  conf.cgi_root                = environment.get("CONTEXT_DOCUMENT_ROOT", _cfg.doc_root_cgi); -  // conf.cgi_script              = environment.get("SCRIPT_NAME",           "/cgi-bin/spine-search"); +  conf.doc_collection_sub_root = "/spine/static"; // (output_path - web_doc_root_path) +  conf.cgi_root                = environment.get("CONTEXT_DOCUMENT_ROOT", _cfg.host_cgi_subpath); +  conf.cgi_script              = environment.get("SCRIPT_NAME",           _cfg.filename_cgi);    conf.query_string            = environment.get("QUERY_STRING",          ""); -  conf.http_url                = environment.get("HTTP_REFERER",          conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string); -  conf.db_path                 = _cfg.doc_root_db; // (output_path + /sqlite) +  conf.db_path                 = _cfg.doc_root_db;    conf.request_method          = environment.get("REQUEST_METHOD",        "POST"); +  conf.query_base              = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?"; +  conf.http_url                = environment.get("HTTP_REFERER",          conf.query_base ~ conf.query_string);    struct CGI_val {      string db_selected      = "";      string sql_match_limit  = "";     // radio: ( 1000 | 2500 ) @@ -56,7 +107,6 @@ void cgi_function_intro(Cgi cgi) {    }    auto cv = CGI_val();    cv.db_selected = _cfg.filename_db; -  // cv.db_selected = "spine.search.db";    auto text_fields() {      string canned_query_str = environment.get("QUERY_STRING", "");      if ("query_string" in cgi.post) { @@ -103,6 +153,7 @@ void cgi_function_intro(Cgi cgi) {        // static abstract_         = ctRegex!(`(?:^|\s~\s*)abstract:\s+(?P<matched>.+)$`,       "m");        static src_filename_base = ctRegex!(`^src_filename_base:\s+(?P<matched>.+)$`,         "m");      } +    auto rgx  = Rgx();      struct searchFields {        string canned_query      = ""; // GET  canned_query     == cq        string search_text_area  = ""; // POST search_text_area == tsa @@ -137,7 +188,6 @@ void cgi_function_intro(Cgi cgi) {        string searched          = ""; // searched          == se     checked        string sql               = ""; // sql               == sql    checked      } -    auto rgx  = Rgx();      auto got  = searchFields();      if (environment.get("REQUEST_METHOD", "POST") == "POST") {        if ("sf" in cgi.post) { @@ -395,9 +445,9 @@ void cgi_function_intro(Cgi cgi) {    string canned_url () {      string _url = "";      if (environment.get("REQUEST_METHOD", "POST") == "POST") { -      _url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query; +      _url = conf.query_base ~ tf.canned_query;      } else if (environment.get("REQUEST_METHOD", "POST") == "GET") { -      _url = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", ""); +      _url = conf.query_base ~ environment.get("QUERY_STRING", "");      }      return _url;    } @@ -441,10 +491,10 @@ void cgi_function_intro(Cgi cgi) {        ~ "</a></font>";      return _matched_objects_text;    } -  string base                  ; // = ""; -  string tip                   ; // = ""; -  string search_note           ; // = ""; -  uint   sql_match_offset_count   = 0; +  string base; // = ""; +  string tip; // = ""; +  string search_note; // = ""; +  uint   sql_match_offset_count = 0;    string previous_next () {      auto rgx = regex_canned_search;      string _previous_next = ""; @@ -502,823 +552,824 @@ void cgi_function_intro(Cgi cgi) {    </title>    <meta name="sourcefile" content="SiSU.sst">    <link rel="generator" href="sisudoc.org"> -  <link rel="shortcut icon" href="https://%s/image_sys/spine.ico"> +  <link rel="shortcut icon" href="%s://%s/image_sys/spine.ico">    <style media = "all"> -   *{ -    padding                  : 0px; -    margin                   : 2px; -  } -  body { -    height                   : 100vh; -    background-color         : #FFFFFF; -  } -  body { -    color                    : #000000; -    background               : #FFFFFF; -    background-color         : #FFFFFF; -  } -  a:link { -    color                    : #003399; -    text-decoration          : none; -  } -  a:visited { -    color                    : #003399; -    text-decoration          : none; -  } -  a:hover { -    color                    : #000000; -    background-color         : #F9F9AA; -  } -  a.lnkocn:link { -    color                    : #777777; -    text-decoration          : none; -  } -  a.lnkocn:visited { -    color                    : #32CD32; -    text-decoration          : none; -  } -  a.lnkocn:hover { -    color                    : #777777; -    font-size                : 15px; -  } -  a:hover img { -    background-color         : #FFFFFF; -  } -  a:active { -    color                    : #003399; -    text-decoration          : underline; -  } -  .flex-container { -    display                  : flex; -  } -  div.publication { -    margin-top               : 2px; -    margin-bottom            : 4px; -    margin-left              : 0%%; -    margin-right             : 0%%; -  } -  div.textview_ocn { -    margin-left              : 0%%; -    margin-right             : 1%%; -  } -  div.textview_found { -    margin-left              : 1%%; -    margin-right             : 1%%; -  } -  textarea { -    color                    : #000000; -    background-color         : #FFFFFF; -  } -  span.match { -    color                    : #000000; -    background-color         : #FFFF48; -  } -  p.norm { } -  p.center { text-align      : center; } -  p.i1 { padding-left        : 1em; } -  p.i2 { padding-left        : 2em; } -  p.i3 { padding-left        : 3em; } -  p.i4 { padding-left        : 4em; } -  p.i5 { padding-left        : 5em; } -  p.i6 { padding-left        : 6em; } -  p.i7 { padding-left        : 7em; } -  p.i8 { padding-left        : 8em; } -  p.i9 { padding-left        : 9em; } -  /* hanging indent */ -  p[indent="h0i0"] { -    padding-left             : 0em; -    text-indent              : 0em; -  } -  p.publication { -    font-size                : 100%%; -    margin-left              : 0em; -    margin-top               : 0px; -    margin-bottom            : 0px; -    margin-right             : 6px; -    text-align               : left; -  } -  p.ocn_is { -    font-size                : 100%%; -    display                  : inline-block; -  } -  p.matched_ocn { -    font-size                : 90%%; -    margin-left              : 2em; -    margin-top               : 0px; -    margin-bottom            : 0px; -    margin-right             : 6px; -    text-align               : left; -  } -  p[indent="h0i1"] { -    padding-left             : 1em; -    text-indent              : -1em; -  } -  p[indent="h0i2"] { -    padding-left             : 2em; -    text-indent              : -2em; -  } -  p[indent="h0i3"] { -    padding-left             : 3em; -    text-indent              : -3em; -  } -  p[indent="h0i4"] { -    padding-left             : 4em; -    text-indent              : -4em; -  } -  p[indent="h0i5"] { -    padding-left             : 5em; -    text-indent              : -5em; -  } -  p[indent="h0i6"] { -    padding-left             : 6em; -    text-indent              : -6em; -  } -  p[indent="h0i7"] { -    padding-left             : 7em; -    text-indent              : -7em; -  } -  p[indent="h0i8"] { -    padding-left             : 8em; -    text-indent              : -8em; -  } -  p[indent="h0i9"] { -    padding-left             : 9em; -    text-indent              : -9em; -  } -  p[indent="h1i0"] { -    padding-left             : 0em; -    text-indent              : 1em; -  } -  p[indent="h1i1"] { -    padding-left             : 1em; -    text-indent              : 0em; -  } -  p[indent="h1i2"] { -    padding-left             : 2em; -    text-indent              : -1em; -  } -  p[indent="h1i3"] { -    padding-left             : 3em; -    text-indent              : -2em; -  } -  p[indent="h1i4"] { -    padding-left             : 4em; -    text-indent              : -3em; -  } -  p[indent="h1i5"] { -    padding-left             : 5em; -    text-indent              : -4em; -  } -  p[indent="h1i6"] { -    padding-left             : 6em; -    text-indent              : -5em; -  } -  p[indent="h1i7"] { -    padding-left             : 7em; -    text-indent              : -6em; -  } -  p[indent="h1i8"] { -    padding-left             : 8em; -    text-indent              : -7em; -  } -  p[indent="h1i9"] { -    padding-left             : 9em; -    text-indent              : -8em; -  } -  p[indent="h2i0"] { -    padding-left             : 0em; -    text-indent              : 2em; -  } -  p[indent="h2i1"] { -    padding-left             : 1em; -    text-indent              : 1em; -  } -  p[indent="h2i2"] { -    padding-left             : 2em; -    text-indent              : 0em; -  } -  p[indent="h2i3"] { -    padding-left             : 3em; -    text-indent              : -1em; -  } -  p[indent="h2i4"] { -    padding-left             : 4em; -    text-indent              : -2em; -  } -  p[indent="h2i5"] { -    padding-left             : 5em; -    text-indent              : -3em; -  } -  p[indent="h2i6"] { -    padding-left             : 6em; -    text-indent              : -4em; -  } -  p[indent="h2i7"] { -    padding-left             : 7em; -    text-indent              : -5em; -  } -  p[indent="h2i8"] { -    padding-left             : 8em; -    text-indent              : -6em; -  } -  p[indent="h2i9"] { -    padding-left             : 9em; -    text-indent              : -7em; -  } -  p[indent="h3i0"] { -    padding-left             : 0em; -    text-indent              : 3em; -  } -  p[indent="h3i1"] { -    padding-left             : 1em; -    text-indent              : 2em; -  } -  p[indent="h3i2"] { -    padding-left             : 2em; -    text-indent              : 1em; -  } -  p[indent="h3i3"] { -    padding-left             : 3em; -    text-indent              : 0em; -  } -  p[indent="h3i4"] { -    padding-left             : 4em; -    text-indent              : -1em; -  } -  p[indent="h3i5"] { -    padding-left             : 5em; -    text-indent              : -2em; -  } -  p[indent="h3i6"] { -    padding-left             : 6em; -    text-indent              : -3em; -  } -  p[indent="h3i7"] { -    padding-left             : 7em; -    text-indent              : -4em; -  } -  p[indent="h3i8"] { -    padding-left             : 8em; -    text-indent              : -5em; -  } -  p[indent="h3i9"] { -    padding-left             : 9em; -    text-indent              : -6em; -  } -  p[indent="h4i0"] { -    padding-left             : 0em; -    text-indent              : 4em; -  } -  p[indent="h4i1"] { -    padding-left             : 1em; -    text-indent              : 3em; -  } -  p[indent="h4i2"] { -    padding-left             : 2em; -    text-indent              : 2em; -  } -  p[indent="h4i3"] { -    padding-left             : 3em; -    text-indent              : 1em; -  } -  p[indent="h4i4"] { -    padding-left             : 4em; -    text-indent              : 0em; -  } -  p[indent="h4i5"] { -    padding-left             : 5em; -    text-indent              : -1em; -  } -  p[indent="h4i6"] { -    padding-left             : 6em; -    text-indent              : -2em; -  } -  p[indent="h4i7"] { -    padding-left             : 7em; -    text-indent              : -3em; -  } -  p[indent="h4i8"] { -    padding-left             : 8em; -    text-indent              : -4em; -  } -  p[indent="h4i9"] { -    padding-left             : 9em; -    text-indent              : -5em; -  } -  p[indent="h5i0"] { -    padding-left             : 0em; -    text-indent              : 5em; -  } -  p[indent="h5i1"] { -    padding-left             : 1em; -    text-indent              : 4em; -  } -  p[indent="h5i2"] { -    padding-left             : 2em; -    text-indent              : 3em; -  } -  p[indent="h5i3"] { -    padding-left             : 3em; -    text-indent              : 2em; -  } -  p[indent="h5i4"] { -    padding-left             : 4em; -    text-indent              : 1em; -  } -  p[indent="h5i5"] { -    padding-left             : 5em; -    text-indent              : 0em; -  } -  p[indent="h5i6"] { -    padding-left             : 6em; -    text-indent              : -1em; -  } -  p[indent="h5i7"] { -    padding-left             : 7em; -    text-indent              : -2em; -  } -  p[indent="h5i8"] { -    padding-left             : 8em; -    text-indent              : -3em; -  } -  p[indent="h5i9"] { -    padding-left             : 9em; -    text-indent              : -4em; -  } -  p[indent="h6i0"] { -    padding-left             : 0em; -    text-indent              : 6em; -  } -  p[indent="h6i1"] { -    padding-left             : 1em; -    text-indent              : 5em; -  } -  p[indent="h6i2"] { -    padding-left             : 2em; -    text-indent              : 4em; -  } -  p[indent="h6i3"] { -    padding-left             : 3em; -    text-indent              : 3em; -  } -  p[indent="h6i4"] { -    padding-left             : 4em; -    text-indent              : 2em; -  } -  p[indent="h6i5"] { -    padding-left             : 5em; -    text-indent              : 1em; -  } -  p[indent="h6i6"] { -    padding-left             : 6em; -    text-indent              : 0em; -  } -  p[indent="h6i7"] { -    padding-left             : 7em; -    text-indent              : -1em; -  } -  p[indent="h6i8"] { -    padding-left             : 8em; -    text-indent              : -2em; -  } -  p[indent="h6i9"] { -    padding-left             : 9em; -    text-indent              : -3em; -  } -  p[indent="h7i0"] { -    padding-left             : 0em; -    text-indent              : 7em; -  } -  p[indent="h7i1"] { -    padding-left             : 1em; -    text-indent              : 6em; -  } -  p[indent="h7i2"] { -    padding-left             : 2em; -    text-indent              : 5em; -  } -  p[indent="h7i3"] { -    padding-left             : 3em; -    text-indent              : 4em; -  } -  p[indent="h7i4"] { -    padding-left             : 4em; -    text-indent              : 3em; -  } -  p[indent="h7i5"] { -    padding-left             : 5em; -    text-indent              : 2em; -  } -  p[indent="h7i6"] { -    padding-left             : 6em; -    text-indent              : 1em; -  } -  p[indent="h7i7"] { -    padding-left             : 7em; -    text-indent              : 0em; -  } -  p[indent="h7i8"] { -    padding-left             : 8em; -    text-indent              : -1em; -  } -  p[indent="h7i9"] { -    padding-left             : 9em; -    text-indent              : -2em; -  } -  p[indent="h8i0"] { -    padding-left             : 0em; -    text-indent              : 8em; -  } -  p[indent="h8i1"] { -    padding-left             : 1em; -    text-indent              : 7em; -  } -  p[indent="h8i2"] { -    padding-left             : 2em; -    text-indent              : 6em; -  } -  p[indent="h8i3"] { -    padding-left             : 3em; -    text-indent              : 5em; -  } -  p[indent="h8i4"] { -    padding-left             : 4em; -    text-indent              : 4em; -  } -  p[indent="h8i5"] { -    padding-left             : 5em; -    text-indent              : 3em; -  } -  p[indent="h8i6"] { -    padding-left             : 6em; -    text-indent              : 2em; -  } -  p[indent="h8i7"] { -    padding-left             : 7em; -    text-indent              : 1em; -  } -  p[indent="h8i8"] { -    padding-left             : 8em; -    text-indent              : 0em; -  } -  p[indent="h8i9"] { -    padding-left             : 9em; -    text-indent              : -1em; -  } -  p[indent="h9i0"] { -    padding-left             : 0em; -    text-indent              : 9em; -  } -  p[indent="h9i1"] { -    padding-left             : 1em; -    text-indent              : 8em; -  } -  p[indent="h9i2"] { -    padding-left             : 2em; -    text-indent              : 7em; -  } -  p[indent="h9i3"] { -    padding-left             : 3em; -    text-indent              : 6em; -  } -  p[indent="h9i4"] { -    padding-left             : 4em; -    text-indent              : 5em; -  } -  p[indent="h9i5"] { -    padding-left             : 5em; -    text-indent              : 4em; -  } -  p[indent="h9i6"] { -    padding-left             : 6em; -    text-indent              : 3em; -  } -  p[indent="h9i7"] { -    padding-left             : 7em; -    text-indent              : 2em; -  } -  p[indent="h9i8"] { -    padding-left             : 8em; -    text-indent              : 1em; -  } -  p[indent="h9i9"] { -    padding-left             : 9em; -    text-indent              : 0em; -  } -  p.spaced { white-space     : pre; } -  p.block { -    white-space              : pre; -  } -  p.group { } -  p.alt { } -  p.verse { -    white-space              : pre; -    margin-bottom            : 6px; -  } -  p.caption { -    text-align               : left; -    font-size                : 80%%; -    display                  : inline; -  } -  p.endnote { -    font-size                : 96%%; -    line-height              : 120%%; -    text-align               : left; -    margin-right             : 15mm; -    padding-left             : 1em; -    text-indent              : -1em; -  } -  p.center { -    text-align               : center; -  } -  p.bold { -    font-weight              : bold; -  } -  p.bold_left { -    font-weight              : bold; -    text-align               : left; -  } -  p.centerbold { -    text-align               : center; -    font-weight              : bold; -  } -  p.em { -    font-weight              : bold; -    font-style               : normal; -    background               : #FFF3B6; -  } -  p.small { -    font-size                : 80%%; -    margin-top               : 0px; -    margin-bottom            : 0px; -    margin-right             : 6px; -    text-align               : left; -  } -  .tiny, .tiny_left, .tiny_right, .tiny_center { -    font-size                : 10px; -    margin-top               : 0px; -    margin-bottom            : 0px; -    color                    : #EEEEEE; -    margin-right             : 6px; -    text-align               : left; -  } -  p.tiny { } -  p.tiny_left { -    margin-left              : 0px; -    margin-right             : 0px; -    text-align               : left; -  } -  p.tiny_right { -    margin-right             : 1em; -    text-align               : right; -  } -  p.tiny_center { -    margin-left              : 0px; -    margin-right             : 0px; -    text-align               : center; -  } -  p.book_index_lev1 { -    line-height              : 100%%; -    margin-top               : 4px; -    margin-bottom            : 1px; -  } -  p.book_index_lev2 { -    line-height              : 100%%; -    text-align               : left; -    margin-left              : 3em; -    margin-top               : 1px; -    margin-bottom            : 3px; -  } -  tt { -    font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; -    background-color         : #555555; -    color                    : #DDDDDD; -  } -  pre { -    width                    : auto; -    display                  : block; -    clear                    : both; -    color                    : #555555; -  } -  pre.codeline { -    display                  : table; -    clear                    : both; -    table-layout             : fixed; -    margin-left              : 5%%; -    margin-right             : 5%%; -    width                    : 90%%; -    white-space              : pre-wrap; -    border-style             : none; -    border-radius            : 5px 5px 5px 5px; -    box-shadow               : 0 2px 5px #AAAAAA inset; -    margin-bottom            : 1em; -    padding                  : 0.5em 1em; -    page-break-inside        : avoid; -    word-wrap                : break-word; -    font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; -    white-space              : pre; -    white-space              : pre-wrap; -    white-space              : -moz-pre-wrap; -    white-space              : -o-pre-wrap; -    background-color         : #555555; -    color                    : #DDDDDD; -    font-size                : 95%%; -    line-height              : 100%%; -  } -  pre.codeline::before { -    counter-reset            : linenum; -  } -  pre.codeline span.tr { -    display                  : table-row; -    counter-increment        : linenum; -  } -  pre.codeline span.th { -    display                  : table-cell; -    user-select              : none; -    -moz-user-select         : none; -    -webkit-user-select      : none; -    padding                  : 0.5em 0.5em; -  } -  pre.codeline span.th::before { -    content                  : counter(linenum) "."; -    color                    : #999999; -    text-align               : right; -    display                  : block; -  } -  pre.codeline span.th { -    width                    : 4em; -  } -  pre.codeline code { -    display                  : table-cell; -  } -  p.code { -    border-style             : none; -  } -  note { white-space         : pre; } -  em { -    font-weight              : bold; -    font-style               : italic; -  } -  p.left,th.left,td.left { -    text-align               : left; -  } -  p.small_left,th.small_left,td.small_left { -    text-align               : left; -    font-size                : 80%%; -  } -  p.right,th.right,td.right { -    text-align               : right; -  } -  ul, li { -    list-style-type          : none; -    list-style               : none; -    padding-left             : 20px; -    font-weight              : normal; -    line-height              : 150%%; -    text-align               : left; -    text-indent              : 0mm; -    margin-left              : 1em; -    margin-right             : 2em; -    margin-top               : 3px; -    margin-bottom            : 3px; -  } -  li { -    background               : (../image_sys/bullet_09.png) no-repeat 0px 6px; -  } -  ul { } -  h0, h1, h2, h3, h4, h5, h6, h7 { -    font-weight              : bold; -    line-height              : 120%%; -    text-align               : left; -    margin-top               : 20px; -    margin-bottom            : 10px; -  } -  h4.norm, h5.norm, h6.norm, h7.norm { -    margin-top               : 10px; -    margin-bottom            : 0px; -  } -  h0 { font-size             : 125%%; } -  h1 { font-size             : 120%%; } -  h2 { font-size             : 115%%; } -  h3 { font-size             : 110%%; } -  h4 { font-size             : 105%%; } -  h5 { font-size             : 100%%; } -  h6 { font-size             : 100%%; } -  h7 { font-size             : 100%%; } -  h0, h1, h2, h3, h4, h5, h6, h7 { -    text-shadow              : .2em .2em .3em #999999; -  } -  h1.i { margin-left         : 2em; } -  h2.i { margin-left         : 3em; } -  h3.i { margin-left         : 4em; } -  h4.i { margin-left         : 5em; } -  h5.i { margin-left         : 6em; } -  h6.i { margin-left         : 7em; } -  h7.i { margin-left         : 8em; } -  h8.i { margin-left         : 9em; } -  h9.i { margin-left         : 10em; } -  .toc { -    font-weight              : normal; -    margin-top               : 6px; -    margin-bottom            : 6px; -  } -  h0.toc { -    margin-left              : 1em; -    font-size                : 120%%; -    line-height              : 150%%; -  } -  h1.toc { -    margin-left              : 1em; -    font-size                : 115%%; -    line-height              : 150%%; -  } -  h2.toc { -    margin-left              : 2em; -    font-size                : 110%%; -    line-height              : 140%%; -  } -  h3.toc { -    margin-left              : 3em; -    font-size                : 105%%; -    line-height              : 120%%; -  } -  h4.toc { -    margin-left              : 4em; -    font-size                : 100%%; -    line-height              : 120%%; -  } -  h5.toc { -    margin-left              : 5em; -    font-size                : 95%%; -    line-height              : 110%%; -  } -  h6.toc { -    margin-left              : 6em; -    font-size                : 90%%; -    line-height              : 110%%; -  } -  h7.toc { -    margin-left              : 7em; -    font-size                : 85%%; -    line-height              : 100%%; -  } -  .subtoc { -    margin-right             : 34%%; -    font-weight              : normal; -  } -  h5.subtoc { -    margin-left              : 2em; -    font-size                : 80%%; -    margin-top               : 2px; -    margin-bottom            : 2px; -  } -  h6.subtoc { -    margin-left              : 3em; -    font-size                : 75%%; -    margin-top               : 0px; -    margin-bottom            : 0px; -  } -  h7.subtoc { -    margin-left              : 4em; -    font-size                : 70%%; -    margin-top               : 0px; -    margin-bottom            : 0px; -  } -  hr { -    display                  : block; -    height                   : 1px; -    width                    : 100%%; -    border                   : 0; -    border-top               : 1px solid #AAAAAA; -    border-color             : #AAAAAA -    background-color         : #AAAAAA -    margin-left              : 0%%; -    margin-right             : 0em; -    margin-top               : 0.5em; -    margin-bottom            : 0.5em; -    padding                  : 0; -  } -</style> +    *{ +      padding                  : 0px; +      margin                   : 2px; +    } +    body { +      height                   : 100vh; +      background-color         : #FFFFFF; +    } +    body { +      color                    : #000000; +      background               : #FFFFFF; +      background-color         : #FFFFFF; +    } +    a:link { +      color                    : #003399; +      text-decoration          : none; +    } +    a:visited { +      color                    : #003399; +      text-decoration          : none; +    } +    a:hover { +      color                    : #000000; +      background-color         : #F9F9AA; +    } +    a.lnkocn:link { +      color                    : #777777; +      text-decoration          : none; +    } +    a.lnkocn:visited { +      color                    : #32CD32; +      text-decoration          : none; +    } +    a.lnkocn:hover { +      color                    : #777777; +      font-size                : 15px; +    } +    a:hover img { +      background-color         : #FFFFFF; +    } +    a:active { +      color                    : #003399; +      text-decoration          : underline; +    } +    .flex-container { +      display                  : flex; +    } +    div.publication { +      margin-top               : 2px; +      margin-bottom            : 4px; +      margin-left              : 0%%; +      margin-right             : 0%%; +    } +    div.textview_ocn { +      margin-left              : 0%%; +      margin-right             : 1%%; +    } +    div.textview_found { +      margin-left              : 1%%; +      margin-right             : 1%%; +    } +    textarea { +      color                    : #000000; +      background-color         : #FFFFFF; +    } +    span.match { +      color                    : #000000; +      background-color         : #FFFF48; +    } +    p.norm { } +    p.center { text-align      : center; } +    p.i1 { padding-left        : 1em; } +    p.i2 { padding-left        : 2em; } +    p.i3 { padding-left        : 3em; } +    p.i4 { padding-left        : 4em; } +    p.i5 { padding-left        : 5em; } +    p.i6 { padding-left        : 6em; } +    p.i7 { padding-left        : 7em; } +    p.i8 { padding-left        : 8em; } +    p.i9 { padding-left        : 9em; } +    /* hanging indent */ +    p[indent="h0i0"] { +      padding-left             : 0em; +      text-indent              : 0em; +    } +    p.publication { +      font-size                : 100%%; +      margin-left              : 0em; +      margin-top               : 0px; +      margin-bottom            : 0px; +      margin-right             : 6px; +      text-align               : left; +    } +    p.ocn_is { +      font-size                : 100%%; +      display                  : inline-block; +    } +    p.matched_ocn { +      font-size                : 90%%; +      margin-left              : 2em; +      margin-top               : 0px; +      margin-bottom            : 0px; +      margin-right             : 6px; +      text-align               : left; +    } +    p[indent="h0i1"] { +      padding-left             : 1em; +      text-indent              : -1em; +    } +    p[indent="h0i2"] { +      padding-left             : 2em; +      text-indent              : -2em; +    } +    p[indent="h0i3"] { +      padding-left             : 3em; +      text-indent              : -3em; +    } +    p[indent="h0i4"] { +      padding-left             : 4em; +      text-indent              : -4em; +    } +    p[indent="h0i5"] { +      padding-left             : 5em; +      text-indent              : -5em; +    } +    p[indent="h0i6"] { +      padding-left             : 6em; +      text-indent              : -6em; +    } +    p[indent="h0i7"] { +      padding-left             : 7em; +      text-indent              : -7em; +    } +    p[indent="h0i8"] { +      padding-left             : 8em; +      text-indent              : -8em; +    } +    p[indent="h0i9"] { +      padding-left             : 9em; +      text-indent              : -9em; +    } +    p[indent="h1i0"] { +      padding-left             : 0em; +      text-indent              : 1em; +    } +    p[indent="h1i1"] { +      padding-left             : 1em; +      text-indent              : 0em; +    } +    p[indent="h1i2"] { +      padding-left             : 2em; +      text-indent              : -1em; +    } +    p[indent="h1i3"] { +      padding-left             : 3em; +      text-indent              : -2em; +    } +    p[indent="h1i4"] { +      padding-left             : 4em; +      text-indent              : -3em; +    } +    p[indent="h1i5"] { +      padding-left             : 5em; +      text-indent              : -4em; +    } +    p[indent="h1i6"] { +      padding-left             : 6em; +      text-indent              : -5em; +    } +    p[indent="h1i7"] { +      padding-left             : 7em; +      text-indent              : -6em; +    } +    p[indent="h1i8"] { +      padding-left             : 8em; +      text-indent              : -7em; +    } +    p[indent="h1i9"] { +      padding-left             : 9em; +      text-indent              : -8em; +    } +    p[indent="h2i0"] { +      padding-left             : 0em; +      text-indent              : 2em; +    } +    p[indent="h2i1"] { +      padding-left             : 1em; +      text-indent              : 1em; +    } +    p[indent="h2i2"] { +      padding-left             : 2em; +      text-indent              : 0em; +    } +    p[indent="h2i3"] { +      padding-left             : 3em; +      text-indent              : -1em; +    } +    p[indent="h2i4"] { +      padding-left             : 4em; +      text-indent              : -2em; +    } +    p[indent="h2i5"] { +      padding-left             : 5em; +      text-indent              : -3em; +    } +    p[indent="h2i6"] { +      padding-left             : 6em; +      text-indent              : -4em; +    } +    p[indent="h2i7"] { +      padding-left             : 7em; +      text-indent              : -5em; +    } +    p[indent="h2i8"] { +      padding-left             : 8em; +      text-indent              : -6em; +    } +    p[indent="h2i9"] { +      padding-left             : 9em; +      text-indent              : -7em; +    } +    p[indent="h3i0"] { +      padding-left             : 0em; +      text-indent              : 3em; +    } +    p[indent="h3i1"] { +      padding-left             : 1em; +      text-indent              : 2em; +    } +    p[indent="h3i2"] { +      padding-left             : 2em; +      text-indent              : 1em; +    } +    p[indent="h3i3"] { +      padding-left             : 3em; +      text-indent              : 0em; +    } +    p[indent="h3i4"] { +      padding-left             : 4em; +      text-indent              : -1em; +    } +    p[indent="h3i5"] { +      padding-left             : 5em; +      text-indent              : -2em; +    } +    p[indent="h3i6"] { +      padding-left             : 6em; +      text-indent              : -3em; +    } +    p[indent="h3i7"] { +      padding-left             : 7em; +      text-indent              : -4em; +    } +    p[indent="h3i8"] { +      padding-left             : 8em; +      text-indent              : -5em; +    } +    p[indent="h3i9"] { +      padding-left             : 9em; +      text-indent              : -6em; +    } +    p[indent="h4i0"] { +      padding-left             : 0em; +      text-indent              : 4em; +    } +    p[indent="h4i1"] { +      padding-left             : 1em; +      text-indent              : 3em; +    } +    p[indent="h4i2"] { +      padding-left             : 2em; +      text-indent              : 2em; +    } +    p[indent="h4i3"] { +      padding-left             : 3em; +      text-indent              : 1em; +    } +    p[indent="h4i4"] { +      padding-left             : 4em; +      text-indent              : 0em; +    } +    p[indent="h4i5"] { +      padding-left             : 5em; +      text-indent              : -1em; +    } +    p[indent="h4i6"] { +      padding-left             : 6em; +      text-indent              : -2em; +    } +    p[indent="h4i7"] { +      padding-left             : 7em; +      text-indent              : -3em; +    } +    p[indent="h4i8"] { +      padding-left             : 8em; +      text-indent              : -4em; +    } +    p[indent="h4i9"] { +      padding-left             : 9em; +      text-indent              : -5em; +    } +    p[indent="h5i0"] { +      padding-left             : 0em; +      text-indent              : 5em; +    } +    p[indent="h5i1"] { +      padding-left             : 1em; +      text-indent              : 4em; +    } +    p[indent="h5i2"] { +      padding-left             : 2em; +      text-indent              : 3em; +    } +    p[indent="h5i3"] { +      padding-left             : 3em; +      text-indent              : 2em; +    } +    p[indent="h5i4"] { +      padding-left             : 4em; +      text-indent              : 1em; +    } +    p[indent="h5i5"] { +      padding-left             : 5em; +      text-indent              : 0em; +    } +    p[indent="h5i6"] { +      padding-left             : 6em; +      text-indent              : -1em; +    } +    p[indent="h5i7"] { +      padding-left             : 7em; +      text-indent              : -2em; +    } +    p[indent="h5i8"] { +      padding-left             : 8em; +      text-indent              : -3em; +    } +    p[indent="h5i9"] { +      padding-left             : 9em; +      text-indent              : -4em; +    } +    p[indent="h6i0"] { +      padding-left             : 0em; +      text-indent              : 6em; +    } +    p[indent="h6i1"] { +      padding-left             : 1em; +      text-indent              : 5em; +    } +    p[indent="h6i2"] { +      padding-left             : 2em; +      text-indent              : 4em; +    } +    p[indent="h6i3"] { +      padding-left             : 3em; +      text-indent              : 3em; +    } +    p[indent="h6i4"] { +      padding-left             : 4em; +      text-indent              : 2em; +    } +    p[indent="h6i5"] { +      padding-left             : 5em; +      text-indent              : 1em; +    } +    p[indent="h6i6"] { +      padding-left             : 6em; +      text-indent              : 0em; +    } +    p[indent="h6i7"] { +      padding-left             : 7em; +      text-indent              : -1em; +    } +    p[indent="h6i8"] { +      padding-left             : 8em; +      text-indent              : -2em; +    } +    p[indent="h6i9"] { +      padding-left             : 9em; +      text-indent              : -3em; +    } +    p[indent="h7i0"] { +      padding-left             : 0em; +      text-indent              : 7em; +    } +    p[indent="h7i1"] { +      padding-left             : 1em; +      text-indent              : 6em; +    } +    p[indent="h7i2"] { +      padding-left             : 2em; +      text-indent              : 5em; +    } +    p[indent="h7i3"] { +      padding-left             : 3em; +      text-indent              : 4em; +    } +    p[indent="h7i4"] { +      padding-left             : 4em; +      text-indent              : 3em; +    } +    p[indent="h7i5"] { +      padding-left             : 5em; +      text-indent              : 2em; +    } +    p[indent="h7i6"] { +      padding-left             : 6em; +      text-indent              : 1em; +    } +    p[indent="h7i7"] { +      padding-left             : 7em; +      text-indent              : 0em; +    } +    p[indent="h7i8"] { +      padding-left             : 8em; +      text-indent              : -1em; +    } +    p[indent="h7i9"] { +      padding-left             : 9em; +      text-indent              : -2em; +    } +    p[indent="h8i0"] { +      padding-left             : 0em; +      text-indent              : 8em; +    } +    p[indent="h8i1"] { +      padding-left             : 1em; +      text-indent              : 7em; +    } +    p[indent="h8i2"] { +      padding-left             : 2em; +      text-indent              : 6em; +    } +    p[indent="h8i3"] { +      padding-left             : 3em; +      text-indent              : 5em; +    } +    p[indent="h8i4"] { +      padding-left             : 4em; +      text-indent              : 4em; +    } +    p[indent="h8i5"] { +      padding-left             : 5em; +      text-indent              : 3em; +    } +    p[indent="h8i6"] { +      padding-left             : 6em; +      text-indent              : 2em; +    } +    p[indent="h8i7"] { +      padding-left             : 7em; +      text-indent              : 1em; +    } +    p[indent="h8i8"] { +      padding-left             : 8em; +      text-indent              : 0em; +    } +    p[indent="h8i9"] { +      padding-left             : 9em; +      text-indent              : -1em; +    } +    p[indent="h9i0"] { +      padding-left             : 0em; +      text-indent              : 9em; +    } +    p[indent="h9i1"] { +      padding-left             : 1em; +      text-indent              : 8em; +    } +    p[indent="h9i2"] { +      padding-left             : 2em; +      text-indent              : 7em; +    } +    p[indent="h9i3"] { +      padding-left             : 3em; +      text-indent              : 6em; +    } +    p[indent="h9i4"] { +      padding-left             : 4em; +      text-indent              : 5em; +    } +    p[indent="h9i5"] { +      padding-left             : 5em; +      text-indent              : 4em; +    } +    p[indent="h9i6"] { +      padding-left             : 6em; +      text-indent              : 3em; +    } +    p[indent="h9i7"] { +      padding-left             : 7em; +      text-indent              : 2em; +    } +    p[indent="h9i8"] { +      padding-left             : 8em; +      text-indent              : 1em; +    } +    p[indent="h9i9"] { +      padding-left             : 9em; +      text-indent              : 0em; +    } +    p.spaced { white-space     : pre; } +    p.block { +      white-space              : pre; +    } +    p.group { } +    p.alt { } +    p.verse { +      white-space              : pre; +      margin-bottom            : 6px; +    } +    p.caption { +      text-align               : left; +      font-size                : 80%%; +      display                  : inline; +    } +    p.endnote { +      font-size                : 96%%; +      line-height              : 120%%; +      text-align               : left; +      margin-right             : 15mm; +      padding-left             : 1em; +      text-indent              : -1em; +    } +    p.center { +      text-align               : center; +    } +    p.bold { +      font-weight              : bold; +    } +    p.bold_left { +      font-weight              : bold; +      text-align               : left; +    } +    p.centerbold { +      text-align               : center; +      font-weight              : bold; +    } +    p.em { +      font-weight              : bold; +      font-style               : normal; +      background               : #FFF3B6; +    } +    p.small { +      font-size                : 80%%; +      margin-top               : 0px; +      margin-bottom            : 0px; +      margin-right             : 6px; +      text-align               : left; +    } +    .tiny, .tiny_left, .tiny_right, .tiny_center { +      font-size                : 10px; +      margin-top               : 0px; +      margin-bottom            : 0px; +      color                    : #EEEEEE; +      margin-right             : 6px; +      text-align               : left; +    } +    p.tiny { } +    p.tiny_left { +      margin-left              : 0px; +      margin-right             : 0px; +      text-align               : left; +    } +    p.tiny_right { +      margin-right             : 1em; +      text-align               : right; +    } +    p.tiny_center { +      margin-left              : 0px; +      margin-right             : 0px; +      text-align               : center; +    } +    p.book_index_lev1 { +      line-height              : 100%%; +      margin-top               : 4px; +      margin-bottom            : 1px; +    } +    p.book_index_lev2 { +      line-height              : 100%%; +      text-align               : left; +      margin-left              : 3em; +      margin-top               : 1px; +      margin-bottom            : 3px; +    } +    tt { +      font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; +      background-color         : #555555; +      color                    : #DDDDDD; +    } +    pre { +      width                    : auto; +      display                  : block; +      clear                    : both; +      color                    : #555555; +    } +    pre.codeline { +      display                  : table; +      clear                    : both; +      table-layout             : fixed; +      margin-left              : 5%%; +      margin-right             : 5%%; +      width                    : 90%%; +      white-space              : pre-wrap; +      border-style             : none; +      border-radius            : 5px 5px 5px 5px; +      box-shadow               : 0 2px 5px #AAAAAA inset; +      margin-bottom            : 1em; +      padding                  : 0.5em 1em; +      page-break-inside        : avoid; +      word-wrap                : break-word; +      font-family              : inconsolata, "liberation mono", "bitstream vera mono", "dejavu mono", monaco, consolas, "andale mono", "courier new", "courier 10 pitch", courier, monospace; +      white-space              : pre; +      white-space              : pre-wrap; +      white-space              : -moz-pre-wrap; +      white-space              : -o-pre-wrap; +      background-color         : #555555; +      color                    : #DDDDDD; +      font-size                : 95%%; +      line-height              : 100%%; +    } +    pre.codeline::before { +      counter-reset            : linenum; +    } +    pre.codeline span.tr { +      display                  : table-row; +      counter-increment        : linenum; +    } +    pre.codeline span.th { +      display                  : table-cell; +      user-select              : none; +      -moz-user-select         : none; +      -webkit-user-select      : none; +      padding                  : 0.5em 0.5em; +    } +    pre.codeline span.th::before { +      content                  : counter(linenum) "."; +      color                    : #999999; +      text-align               : right; +      display                  : block; +    } +    pre.codeline span.th { +      width                    : 4em; +    } +    pre.codeline code { +      display                  : table-cell; +    } +    p.code { +      border-style             : none; +    } +    note { white-space         : pre; } +    em { +      font-weight              : bold; +      font-style               : italic; +    } +    p.left,th.left,td.left { +      text-align               : left; +    } +    p.small_left,th.small_left,td.small_left { +      text-align               : left; +      font-size                : 80%%; +    } +    p.right,th.right,td.right { +      text-align               : right; +    } +    ul, li { +      list-style-type          : none; +      list-style               : none; +      padding-left             : 20px; +      font-weight              : normal; +      line-height              : 150%%; +      text-align               : left; +      text-indent              : 0mm; +      margin-left              : 1em; +      margin-right             : 2em; +      margin-top               : 3px; +      margin-bottom            : 3px; +    } +    li { +      background               : (../image_sys/bullet_09.png) no-repeat 0px 6px; +    } +    ul { } +    h0, h1, h2, h3, h4, h5, h6, h7 { +      font-weight              : bold; +      line-height              : 120%%; +      text-align               : left; +      margin-top               : 20px; +      margin-bottom            : 10px; +    } +    h4.norm, h5.norm, h6.norm, h7.norm { +      margin-top               : 10px; +      margin-bottom            : 0px; +    } +    h0 { font-size             : 125%%; } +    h1 { font-size             : 120%%; } +    h2 { font-size             : 115%%; } +    h3 { font-size             : 110%%; } +    h4 { font-size             : 105%%; } +    h5 { font-size             : 100%%; } +    h6 { font-size             : 100%%; } +    h7 { font-size             : 100%%; } +    h0, h1, h2, h3, h4, h5, h6, h7 { +      text-shadow              : .2em .2em .3em #999999; +    } +    h1.i { margin-left         : 2em; } +    h2.i { margin-left         : 3em; } +    h3.i { margin-left         : 4em; } +    h4.i { margin-left         : 5em; } +    h5.i { margin-left         : 6em; } +    h6.i { margin-left         : 7em; } +    h7.i { margin-left         : 8em; } +    h8.i { margin-left         : 9em; } +    h9.i { margin-left         : 10em; } +    .toc { +      font-weight              : normal; +      margin-top               : 6px; +      margin-bottom            : 6px; +    } +    h0.toc { +      margin-left              : 1em; +      font-size                : 120%%; +      line-height              : 150%%; +    } +    h1.toc { +      margin-left              : 1em; +      font-size                : 115%%; +      line-height              : 150%%; +    } +    h2.toc { +      margin-left              : 2em; +      font-size                : 110%%; +      line-height              : 140%%; +    } +    h3.toc { +      margin-left              : 3em; +      font-size                : 105%%; +      line-height              : 120%%; +    } +    h4.toc { +      margin-left              : 4em; +      font-size                : 100%%; +      line-height              : 120%%; +    } +    h5.toc { +      margin-left              : 5em; +      font-size                : 95%%; +      line-height              : 110%%; +    } +    h6.toc { +      margin-left              : 6em; +      font-size                : 90%%; +      line-height              : 110%%; +    } +    h7.toc { +      margin-left              : 7em; +      font-size                : 85%%; +      line-height              : 100%%; +    } +    .subtoc { +      margin-right             : 34%%; +      font-weight              : normal; +    } +    h5.subtoc { +      margin-left              : 2em; +      font-size                : 80%%; +      margin-top               : 2px; +      margin-bottom            : 2px; +    } +    h6.subtoc { +      margin-left              : 3em; +      font-size                : 75%%; +      margin-top               : 0px; +      margin-bottom            : 0px; +    } +    h7.subtoc { +      margin-left              : 4em; +      font-size                : 70%%; +      margin-top               : 0px; +      margin-bottom            : 0px; +    } +    hr { +      display                  : block; +      height                   : 1px; +      width                    : 100%%; +      border                   : 0; +      border-top               : 1px solid #AAAAAA; +      border-color             : #AAAAAA +      background-color         : #AAAAAA +      margin-left              : 0%%; +      margin-right             : 0em; +      margin-top               : 0.5em; +      margin-bottom            : 0.5em; +      padding                  : 0; +    } +  </style>  </head>  <body lang="en" xml:lang="en">  ┃", +    conf.http_request_type,      conf.http_host,     );    }    {      table = format(q"┃ - <table summary="band" border="0" cellpadding="2" cellspacing="0"> - <tr><td width="20%%"> -  <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0"> -  <tr><td align="left"> -   ≅ SiSU spine search form +  <table summary="band" border="0" cellpadding="2" cellspacing="0"> +  <tr><td width="20%%"> +   <table summary="home button / home information" border="0" cellpadding="2" cellspacing="0"> +   <tr><td align="left"> +    ≅ SiSU spine search form +   </td></tr> +   </table> +  </td> +  <td>    </td></tr>    </table> - </td> - <td> - </td></tr> - </table> - ┃"); +    ┃");    }    {      string post_value(string field_name, string type="box", string set="on") { @@ -1362,9 +1413,9 @@ void cgi_function_intro(Cgi cgi) {        string _the_can = "";        if (show_the_can == "checked") {          tf = text_fields; -        string method_get_url            = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ environment.get("QUERY_STRING", ""); -        string method_post_url_construct = conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ tf.canned_query; -        // assert(method_get_url == environment.get("HTTP_REFERER", conf.http_request_type ~ "://" ~ conf.http_host ~ conf.cgi_script ~ "?" ~ conf.query_string)); +        string method_get_url            = conf.query_base ~ environment.get("QUERY_STRING", ""); +        string method_post_url_construct = conf.query_base ~ tf.canned_query; +        // assert(method_get_url == environment.get("HTTP_REFERER", conf.query_base ~ conf.query_string));          if (conf.request_method == "POST") {            _the_can =              "<font size=\"2\" color=\"#666666\">" @@ -1396,12 +1447,12 @@ void cgi_function_intro(Cgi cgi) {          string search_field = post_value("sf", "field");          tf = text_fields;          tip = format(q"┃ -<font size="2" color="#666666"> -<b>database:</b> <font size="2" color="#004000">%s</font>; <b>selected view:</b> <font size="2" color="#004000">index</font> -<b>search string:</b> %s %s %s %s %s %s<br> -%s %s %s %s %s %s -</font> -┃", +      <font size="2" color="#666666"> +      <b>database:</b> <font size="2" color="#004000">%s</font>; <b>selected view:</b> <font size="2" color="#004000">index</font> +      <b>search string:</b> %s %s %s %s %s %s<br> +      %s %s %s %s %s %s +      </font> +      ┃",            cv.db_selected,            (tf.text.empty   ? "" : "\"text:   <font size=\"2\" color=\"#004000\">" ~ tf.text   ~ "</font>; "),            (tf.title.empty  ? "" : "\"title:  <font size=\"2\" color=\"#004000\">" ~ tf.title  ~ "</font>; "), @@ -1511,7 +1562,7 @@ void cgi_function_intro(Cgi cgi) {        //   cgi.write(k ~ ": " ~ d ~ "<br>");        // }      } -    { // debug cgi info +    { // debug cgi info:        // cgi.write("db_selected: "         ~ cv.db_selected ~ "<br>\n");        // cgi.write("search_text: "         ~ cv.search_text ~ "<br>\n");        // cgi.write("sql_match_limit: "     ~ cv.sql_match_limit ~ ";\n"); @@ -1581,8 +1632,8 @@ void cgi_function_intro(Cgi cgi) {            }            _sf = "( " ~ db_field ~ " LIKE\n  '%" ~ _sf ~ "%' )";            where_ ~= format(q"┃ -  %s -┃", +          %s +        ┃",              _sf            );          } @@ -1668,7 +1719,8 @@ LIMIT %s OFFSET %s                _close_para                ~ "<hr><div class=\"publication\">"                  ~ "<p class=\"publication\"><a href=\"" -                  ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                  ~ conf.http_request_type ~ "://" +                  ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                    ~ row["language_document_char"].as!string ~ "/html/"                    ~ row["src_filename_base"].as!string ~ "/"                    ~ "toc.html" @@ -1690,7 +1742,8 @@ LIMIT %s OFFSET %s                  "<div class=\"flex-container\">"                  ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"                    ~ "<p class=\"ocn_is\"><a href=\"" -                    ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                    ~ conf.http_request_type ~ "://" +                    ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                      ~ row["language_document_char"].as!string ~ "/html/"                      ~ row["src_filename_base"].as!string ~ "/"                      ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string @@ -1708,7 +1761,8 @@ LIMIT %s OFFSET %s                  "<div class=\"flex-container\">"                  ~ "<div class=\"textview_ocn\" style=\"flex: 0 0 1.2em\">"                    ~ "<p class=\"ocn_is\"><a href=\"" -                    ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                    ~ conf.http_request_type ~ "://" +                    ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                      ~ row["language_document_char"].as!string ~ "/html/"                      ~ row["src_filename_base"].as!string ~ "/toc.html"                    ~ "\">" @@ -1726,7 +1780,8 @@ LIMIT %s OFFSET %s                cgi.write(                  _matched_ocn_open                  ~ "<a href=\"" -                  ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                  ~ conf.http_request_type ~ "://" +                  ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                    ~ row["language_document_char"].as!string ~ "/html/"                    ~ row["src_filename_base"].as!string ~ "/"                    ~ row["seg_name"].as!string ~ ".html#" ~ row["ocn"].as!string @@ -1738,7 +1793,8 @@ LIMIT %s OFFSET %s                cgi.write(                  _matched_ocn_open                  ~ "<a href=\"" -                  ~ "https://" ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/" +                  ~ conf.http_request_type ~ "://" +                  ~ conf.http_host ~ conf.doc_collection_sub_root ~ "/"                    ~ row["language_document_char"].as!string ~ "/html/"                    ~ row["src_filename_base"].as!string ~ "/toc.html"                  ~ "\">" | 
