diff options
Diffstat (limited to 'sundry')
-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 | ||||
-rw-r--r-- | sundry/spine_search_cgi/views/configuration.txt | 15 | ||||
-rw-r--r-- | sundry/spine_search_cgi/views/configuration_suggested.txt | 15 |
4 files changed, 1813 insertions, 1689 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" ~ "\">" diff --git a/sundry/spine_search_cgi/views/configuration.txt b/sundry/spine_search_cgi/views/configuration.txt index 36470d1..bd3c7ad 100644 --- a/sundry/spine_search_cgi/views/configuration.txt +++ b/sundry/spine_search_cgi/views/configuration.txt @@ -1,8 +1,13 @@ struct Cfg { - string doc_root_www = "/srv/www/spine/static"; - string doc_root_cgi = "/var/www/cgi/cgi-bin/"; - string doc_root_db = "/srv/www/spine/static/sqlite/"; - string filename_cgi = "spine_search"; - string filename_db = "spine.search.db"; + string http_request_type = "http"; + string http_host = "localhost"; + string doc_root_www = "/srv/www/spine/static"; + string doc_root_cgi = "/var/www/cgi/cgi-bin/"; + string doc_root_db = "/srv/www/spine/static/sqlite/"; + string host_cgi_subpath = "/cgi-bin"; + // string subpath_cgi = "/cgi-bin/"; + string filename_cgi = "spine_search"; + string cgi_script_filename_with_any_subpath = "/cgi-bin/spine_search"; + string filename_db = "spine.search.db"; } enum _cfg = Cfg(); diff --git a/sundry/spine_search_cgi/views/configuration_suggested.txt b/sundry/spine_search_cgi/views/configuration_suggested.txt index b737bf0..028cfc9 100644 --- a/sundry/spine_search_cgi/views/configuration_suggested.txt +++ b/sundry/spine_search_cgi/views/configuration_suggested.txt @@ -1,9 +1,14 @@ /+ obt - org-mode generated file +/ struct Cfg { - string doc_root_www = "/srv/www/spine/static"; - string doc_root_cgi = "/var/www/cgi/cgi-bin/"; - string doc_root_db = "/srv/www/spine/static/sqlite/"; - string filename_cgi = "spine_search"; - string filename_db = "spine.search.db"; + string http_request_type = "http"; + string http_host = "localhost"; + string doc_root_www = "/srv/www/spine/static"; + string doc_root_cgi = "/var/www/cgi/cgi-bin/"; + string doc_root_db = "/srv/www/spine/static/sqlite/"; + string host_cgi_subpath = "/cgi-bin"; + // string subpath_cgi = "/cgi-bin/"; + string filename_cgi = "spine_search"; + string cgi_script_filename_with_any_subpath = "/cgi-bin/spine_search"; + string filename_db = "spine.search.db"; } enum _cfg = Cfg(); |