From 91f5be6f02bb6c3cd0ba26ff62acb603a33e741f Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph@amissah.com>
Date: Wed, 22 Aug 2007 23:56:23 +0100
Subject: version bump to 0.57, minor addition to markup (a header to heading
 shortcut) and sisurc.yml update for additional search form option
 (hyperestraier)

  * markup addition, headings, shortcut for top level title (and author)
    :A~ @title @author (also available for level 2 (or 3) author) [version bump]

  * param markup identifier (and identifier) updated to identify markup
    addition in 0.57, :A~ @title

  * html search form in navigation band/banner and promo, adjustments,
    hyperestraier option offered in promo, requires change in sisurc.yml

  * sisurc.yml requires changes to make use search form options, [version
    bump] sample updated and commented out
---
 CHANGELOG                            |  24 +++--
 conf/sisu/sisurc.yml                 |  14 ++-
 lib/sisu/v0/css.rb                   |   1 +
 lib/sisu/v0/dal_syntax.rb            |   5 +-
 lib/sisu/v0/help.rb                  |  11 +--
 lib/sisu/v0/html_format.rb           |   2 +-
 lib/sisu/v0/html_promo.rb            |  52 +++++++----
 lib/sisu/v0/html_scroll.rb           |   4 -
 lib/sisu/v0/odf.rb                   |   9 +-
 lib/sisu/v0/param.rb                 |   8 +-
 lib/sisu/v0/param_identify_markup.rb |   7 +-
 lib/sisu/v0/sst_identify_markup.rb   |  22 ++++-
 lib/sisu/v0/sysenv.rb                | 176 +++++++++++++++++++++++------------
 13 files changed, 220 insertions(+), 115 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 1b0ff017..03c016d8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,18 +6,30 @@ Reverse Chronological:
 
 %% STABLE MANIFEST
 
-%% sisu_0.56.4.orig.tar.gz (2007-08-21:34/2)
-http://www.jus.uio.no/sisu/pkg/src/sisu_0.56.4.orig.tar.gz
-  sisu_0.56.4.orig.tar.gz
-  sisu_0.56.4-1.dsc
-  sisu_0.56.4-1.diff.gz
+%% sisu_0.57.0.orig.tar.gz (2007-08-22:34/3)
+http://www.jus.uio.no/sisu/pkg/src/sisu_0.57.0.orig.tar.gz
+  sisu_0.57.0.orig.tar.gz
+  sisu_0.57.0-1.dsc
+  sisu_0.57.0-1.diff.gz
+
+  * markup addition, headings, shortcut for top level title (and author)
+    :A~ @title @author (also available for level 2 (or 3) author) [version bump]
+
+  * param markup identifier (and identifier) updated to identify markup
+    addition in 0.57, :A~ @title
 
   * manifest
     * use relative link by default
     * in absence of configured url_root (http://) use info on location on local
       filesystem (file://)
 
-  * html outputs, navigation band/banner adjustment
+  * html search form in navigation band/banner and promo, adjustments,
+    hyperestraier option offered in promo, requires change in sisurc.yml
+
+  * sisurc.yml requires changes to make use search form options, [version
+    bump] sample updated and commented out
+
+  * html outputs, navigation band/banner adjustment, in concordance and manifest
 
   * html scroll, fix to document information link in table of contents
 
diff --git a/conf/sisu/sisurc.yml b/conf/sisu/sisurc.yml
index ab07108e..1b14116c 100644
--- a/conf/sisu/sisurc.yml
+++ b/conf/sisu/sisurc.yml
@@ -111,8 +111,12 @@ program_set:
 #  xml_viewer:   'xml-viewer'
 #promo:              sisu_icon, sisu, sisu_search_libre, open_society, fsf, ruby
 #search:
-#  flag:              true
-#  action:            http://localhost:8081/cgi-bin/sisu_sqlite.cgi
-##  action:            http://search.sisudoc.org
-#  db:                sisu
-#  title:             sample search form
+#  sisu:
+#    flag:              true
+##    action:            http://localhost:8081/cgi-bin/sisu_pgsql.cgi
+#    action:            http://search.sisudoc.org
+#    db:                sisu
+#    title:             sample search form
+#  hyperestraier:
+#    flag:              true
+#    action:            http://search.sisudoc.org/cgi-bin/estseek.cgi?
diff --git a/lib/sisu/v0/css.rb b/lib/sisu/v0/css.rb
index df53f46a..d1e6832a 100644
--- a/lib/sisu/v0/css.rb
+++ b/lib/sisu/v0/css.rb
@@ -434,6 +434,7 @@ WOK
   }
   li {
     background: url(../image/bullet_red.png) no-repeat 0px 6px;
+    /* list-style-type: disc; */
     padding-left: 20px;
     display: block;
     font-family: #{fonts};
diff --git a/lib/sisu/v0/dal_syntax.rb b/lib/sisu/v0/dal_syntax.rb
index dfa7478d..703d9f1b 100644
--- a/lib/sisu/v0/dal_syntax.rb
+++ b/lib/sisu/v0/dal_syntax.rb
@@ -185,7 +185,7 @@ module Syntax
       # _2                  <:i2>            #indent paragraph 2 steps
       # _3                  <:i3>            #indent paragraph 3 steps
       # _4                  <:i4>            #indent paragraph 4 steps
-      # _*                                    #bullet (list)
+      # _*                                    #bullet (list) ●
       # _1*                                   #bullet (list) indented
       # _1*                                   #bullet (list) indented
       # #                                     #numbered (list) level 1
@@ -209,6 +209,9 @@ module Syntax
           line=line_array.join(' ')
           line=line.strip
         end
+        line.gsub!(/^(1~\??) @title\s+(?:(by\s+)?(?:@creator|@author))\s*$/,"\\1 #{@md.title} - #{@md.subtitle},<br />\\2#{@md.dc_creator}")
+        line.gsub!(/^(1~\??) @title\s*$/,"\\1 #{@md.title} - #{@md.subtitle}")                    #
+        line.gsub!(/^([23]~\??) (?:(by\s+)?(?:@creator|@author))\s*$/,"\\1 \\2#{@md.dc_creator}")                    #
         line.gsub!(/<(https?:\/\/\S+?)>/,'< \1 >')                             #catch problem markup
         line.gsub!(/<:=(\S+?)>/,'{ c_\1.png 14x14 }http://www.jus.uio.no/sisu')                                                    #adjustment 2005w30
         line.gsub!(/<!(\S+)!>/,'<:\1>')                                        #escaped special character
diff --git a/lib/sisu/v0/help.rb b/lib/sisu/v0/help.rb
index 4e7a60f9..e22808d1 100644
--- a/lib/sisu/v0/help.rb
+++ b/lib/sisu/v0/help.rb
@@ -1498,7 +1498,7 @@ WOK
       sisu-0.38 is provided with 0.38 markup samples
 
       sample marked up documents are provided in directory:
-        #{@cX.green}sisu-exampless/sample/document_samples_sisu_markup/#{@cX.off}
+        #{@cX.green}sisu-examples/sample/document_samples_sisu_markup/#{@cX.off}
       and online
         #{@cX.green}www.jus.uio.no/sisu#{@cX.off}
 WOK
@@ -1710,7 +1710,7 @@ WOK
   Note on databases built
    By default, [unless otherwise specified] databases are built on a directory basis, from collections of documents within that directory.
    The name of the directory you choose to work from is used as the database name,
-   i.e. if you are working in a directory called #{@cX.blue}#{@env.path.home}/ebook#{@cX.off} the database #{@cX.blue}ebook#{@cX.off} is used. [otherwise a manual mapping for the collection is necessary]
+   i.e. if you are working in a directory called #{@cX.blue}#{@env.path.home}/ebook#{@cX.off} the database #{@cX.blue}SiSU_ebook#{@cX.off} is used. [otherwise a manual mapping for the collection is necessary]
 WOK
       help_search
       help_general
@@ -1728,9 +1728,6 @@ WOK
    See the documentation for hyperestraier
    #{@cX.blue}
    http://hyperestraier.sourceforge.net/
-   http://hyperestraier.sourceforge.net/intro-en.html
-   http://hyperestraier.sourceforge.net/uguide-en.html
-   http://hyperestraier.sourceforge.net/pguide-en.html
 
    file:///usr/share/doc/hyperestraier/index.html
    #{@cX.off} #{@cX.orange}
@@ -1778,14 +1775,14 @@ WOK
    (ii) edit #{@cX.green}estseek.conf#{@cX.off}, with attention to the lines starting 'indexname:' and 'replace:': #{@cX.green}
 
      indexname: #{@env.path.webserv}/casket
-     replace: ^file://#{@env.path.webserv}{{!}}#{@env.url.webrick_base}
+     replace: ^file://#{@env.path.webserv}{{!}}#{@env.url.webserv_host_base}
      replace: /index\.html?${{!}}/ #{@cX.off}
 
  (C) to test using webrick, start webrick: #{@cX.green}
      sisu -W #{@cX.off}
 
    and try open the url: #{@cX.blue}
-     #{@env.url.webrick_base}/cgi-bin/estseek.cgi #{@cX.off}
+     #{@env.url.webserv_host_base}/cgi-bin/estseek.cgi #{@cX.off}
 
 WOK
     end
diff --git a/lib/sisu/v0/html_format.rb b/lib/sisu/v0/html_format.rb
index c568a509..29700e83 100644
--- a/lib/sisu/v0/html_format.rb
+++ b/lib/sisu/v0/html_format.rb
@@ -208,7 +208,7 @@ module SiSU_HTML_Format
     end
     def search
       env=SiSU_Env::Info_env.new(@md.fns,@md)
-      env.widget.search_form
+      env.widget.search_form('sisusearch',nil,nil,true)
     end
     def manifest
       %{<td align="center" bgcolor=#{@vz.color_band2}>
diff --git a/lib/sisu/v0/html_promo.rb b/lib/sisu/v0/html_promo.rb
index cc60f4c9..c4e18184 100644
--- a/lib/sisu/v0/html_promo.rb
+++ b/lib/sisu/v0/html_promo.rb
@@ -143,25 +143,35 @@ module SiSU_HTML_promo
       def blurb
         @prod['blurb'] ? %{<p class="pane_blurb">#{@prod['blurb']}</p>} : ''
       end
-      def search_form
+      def search_form_sisu(table=true)
         db=if @prod['db']=~/\S+/
           @prod['db']=~/^SiSU_\S+/ ? @prod['db'] : "SiSU_#{@prod['db']}"
-        elsif defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-          @rc['search']['db']=~/^SiSU_\S+/ ? @prod['search']['db'] : "SiSU_#{@prod['db']}"
+        elsif defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
+          @rc['search']['sisu']['db']=~/^SiSU_\S+/ ? @prod['search']['sisu']['db'] : "SiSU_#{@prod['db']}"
         else nil
         end
-        #target=@prod['target']=~/^\S+/ ? @prod['target'] : '_top'
         action=if @prod['action']=~/^http:\/\//
           @prod['action']
-        elsif defined? @rc['search']['action'] and @rc['search']['action'] =~/^http:\/\//
-          @rc['search']['action']
+        elsif defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/^http:\/\//
+          @rc['search']['sisu']['action']
         else nil
         end
         form=if action and db
-          '<br />' + @env.widget.search_form(action,db)
+          '<br />' + @env.widget.search_form('sisusearch',action,db,table)
         else ''
         end
       end
+      def search_form_hyperestraier(table=true)
+        action=if defined? @rc['search']['hyperestraier']['action'] and @rc['search']['hyperestraier']['action'] =~/^http:\/\//
+          @rc['search']['hyperestraier']['action']
+        else nil
+        end
+        form=if action
+          '<br />' + @env.widget.search_form('hyperestraier',action,'',table)
+        else ''
+        end
+        form
+      end
       def links
         if @prod['links'] #and @prod['links'] == Array
           links_a=[]
@@ -268,10 +278,15 @@ WOK
 #{cell.links}
 WOK
     end
-    def output_form_search(type,id)
+    def output_form_search_sisu(type,id)
       prod_id=id.gsub(/id_/,'')
       cell=cell(@ad[:promo][type][id],prod_id)
-      cell.search_form
+      cell.search_form_sisu(false)
+    end
+    def output_form_search_hyperestraier(type,id)
+      prod_id=id.gsub(/id_/,'')
+      cell=cell(@ad[:promo][type][id],prod_id)
+      cell.search_form_hyperestraier(false)
     end
     def output_form_book(type,id)
       prod_id=id.gsub(/id_/,'')
@@ -329,7 +344,10 @@ WOK
       when /sponsor/
         output_form_sponsor(type,id)
       when /search/
-        output_form_search(type,id)
+        if id=~/hyperestraier/
+          output_form_search_hyperestraier(type,id)
+        else output_form_search_sisu(type,id)
+        end
       when /book/
         output_form_book(type,id)
       when /journal/
@@ -338,13 +356,13 @@ WOK
         output_form_conference(type,id)
       end
     end
-    def advert_extract_single(type,id) #extracts single item of type with id
-      #type === book,journal,conference,sponsor
-      id=id.to_s.gsub(/^(\d)/,'id_\1')
-      if defined? @ad[:promo][type][id] and @ad[:promo][type][id]
-        output_form_select(type,id)
-      end
-    end
+    #def advert_extract_single(type,id) #extracts single item of type with id
+    #  #type === book,journal,conference,sponsor
+    #  id=id.to_s.gsub(/^(\d)/,'id_\1')
+    #  if defined? @ad[:promo][type][id] and @ad[:promo][type][id]
+    #    output_form_select(type,id)
+    #  end
+    #end
     def advert_extract_subject(category) #extracts products from category/subject list
       adverts=[]
       if defined? @ad[:promo_list][category] and @ad[:promo_list][category]
diff --git a/lib/sisu/v0/html_scroll.rb b/lib/sisu/v0/html_scroll.rb
index 3739f660..b2cfb497 100644
--- a/lib/sisu/v0/html_scroll.rb
+++ b/lib/sisu/v0/html_scroll.rb
@@ -140,7 +140,6 @@ module SiSU_HTML_scroll
             format_seg=SiSU_HTML_Format_type::Format_seg.new(@md,one,two)
             para=format_seg.no_paranum
           end
-          #para=para.gsub(/ [2-6]~\S+ /,'') #and @md.cmd =~/[VM]/ #arbitrary, watch problematic as too general
           para='' if (para =~/<a name="n\d+">/ and para =~/^(?:\^~\d+\s|<!e[:_]\d+!>)/) # hmmm re-adjusted 200507, for alt endnote which should again be matched ^~ ... not in response to problem though
           if para =~/<:center>/ #rules changed now a <p class="center" problems may arise 2005w11 !
             one,two=/(.*)<:center>(.*)/.match(para).captures
@@ -153,9 +152,6 @@ module SiSU_HTML_scroll
           unless @rcdc; @scr[:body] << para unless para =~/\A\s*\Z/
           else          @scr[:metadata] << para
           end
-          #unless meta; @scr[:body] << para unless para =~/\A\s*\Z/
-          #else         @scr[:metadata] << meta
-          #end
         end
       end
       @scr
diff --git a/lib/sisu/v0/odf.rb b/lib/sisu/v0/odf.rb
index f6d6d942..11d14bf2 100644
--- a/lib/sisu/v0/odf.rb
+++ b/lib/sisu/v0/odf.rb
@@ -465,16 +465,15 @@ module SiSU_ODF
             para=para_array.join(' ')
             para=para.strip
           end
-          para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\\1<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.25cm" svg:height="0.25cm" draw:z-index="2"><draw:image xlink:href="Pictures/bullet_red.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame> ') # bullet_red.png
-          #para.gsub!(/^_\*\s+/,'<text:span text:style-name="T6">·</text:span> ')     #bullet
+          para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\1<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.22cm" svg:height="0.22cm" draw:z-index="2"><draw:image xlink:href="Pictures/bullet_red.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame> ') # bullet_red.png
+          #para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\1<text:span text:style-name="T6">●</text:span> ')     #bullet
+          #para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\1● ') # bullet utf8, make smaller if used
+          #para.gsub!(/^_\*\s+/,'<text:span text:style-name="T6">●</text:span> ')     #bullet
           para.gsub!(/^(<:i[1-9]>)\s+_\*\s+/,'\1 <text:span text:style-name="T6">·</text:span> ') #bullet
-          #para.gsub!(/^(<:i[1-9]>\s+)?_\*\s+/,'\\1<draw:frame draw:style-name="gr1" text:anchor-type="as-char" svg:width="0.25cm" svg:height="0.25cm" draw:z-index="2"><draw:image xlink:href="Pictures/bullet_red.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></draw:frame> ') # bullet_red.png
-          #para.gsub!(/^(<:i[1-9]>)\s+_\*\s+/,'\1 <text:span text:style-name="T6">·</text:span> ') #bullet
           para.gsub!(/<br>/,'<br />')
           para.gsub!(/<:p[bn]>/,'<text:p text:style-name="P8"> </text:p>')
           para.gsub!(/&#169;/,'©') #too arbitrary
           para.gsub!(/.+?<-#>/,'')                                           # remove dummy headings (used by html) #check
-          #para.gsub!(/_\*\s+/,'* ')                                           # bullet markup, marked down
           para.gsub!(/<b>(.+?)<\/b>/,'<text:span text:style-name="T1">\1</text:span>')
           para.gsub!(/<i>(.+?)<\/i>/,'<text:span text:style-name="T2">\1</text:span>')
           para.gsub!(/<u>(.+?)<\/u>/,'<text:span text:style-name="T3">\1</text:span>')
diff --git a/lib/sisu/v0/param.rb b/lib/sisu/v0/param.rb
index 186901a1..9462d8d2 100644
--- a/lib/sisu/v0/param.rb
+++ b/lib/sisu/v0/param.rb
@@ -199,10 +199,10 @@ module SiSU_Param
         fns_array=@data.dup
         skip unless fns_array                                                    # consider
         @markup_version=SiSU_Markup::Markup_identify.new(fns_array,@opt).markup_version? #% determine markup version
-        if fns_array[0] =~ /^(?:% )?(?:SiSU\s+[\d.]*|sisu-[\d.]+)$/ #check markup and markup version
-          if fns_array[0] =~ /^(?:% )?(?:SiSU\s+|sisu-)[\d.]+$/ #check markup and markup version
-            @markup_version_declared=fns_array[0].match(/^(?:% )?(?:SiSU\s+|sisu-)([\d.]+)$/)[1]
-            sm_a,sm_b,sm_c=fns_array[0].match(/^(?:% )?(?:SiSU\s+|sisu-)([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?$/)[1..3]
+        if fns_array[0] =~ /^(?:% )?(?:SiSU\s+(?:master\s+)?[\d.]*|sisu-[\d.]+)$/ #check markup and markup version
+          if fns_array[0] =~ /^(?:% )?(?:SiSU\s+(?:master\s+)?|sisu-)[\d.]+$/ #check markup and markup version
+            @markup_version_declared=fns_array[0].match(/^(?:% )?(?:SiSU\s+(?:master\s+)?|sisu-)([\d.]+)$/)[1]
+            sm_a,sm_b,sm_c=fns_array[0].match(/^(?:% )?(?:SiSU\s+(?:master\s+)?|sisu-)([0-9]+)?(?:\.([0-9]+))?(?:\.([0-9]+))?$/)[1..3]
             sm_c ||=0
             sv=if @cmd =~/[VMv]/; "SiSU version (#{@sisu_version[:version]})"
             else ''
diff --git a/lib/sisu/v0/param_identify_markup.rb b/lib/sisu/v0/param_identify_markup.rb
index 21e796e8..93c8bf79 100644
--- a/lib/sisu/v0/param_identify_markup.rb
+++ b/lib/sisu/v0/param_identify_markup.rb
@@ -71,8 +71,13 @@ module SiSU_Markup
         elsif @cont[0] =~ /^(?:%\s+)?SiSU\s+([0-9](?:\.[0-9]+){1,2})/ or @cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
           @version_declared=$1
         end
-        @flag_38=false
+        @flag_57,@flag_38=false,false
         @cont.each_with_index do |y,i|
+          if @flag_57 or y =~/^:?A~\?? @title/
+            @version_determined=0.57
+            @flag_57=true
+            break
+          end
           if @flag_38 or y =~/^:?A~/
             @version_determined=0.38
             @flag_38=true
diff --git a/lib/sisu/v0/sst_identify_markup.rb b/lib/sisu/v0/sst_identify_markup.rb
index e7a3c9eb..19601c13 100644
--- a/lib/sisu/v0/sst_identify_markup.rb
+++ b/lib/sisu/v0/sst_identify_markup.rb
@@ -107,13 +107,19 @@ WOK
         elsif cont[0] =~ /^(?:%\s+)?SiSU\s+([0-9](?:\.[0-9]+){1,2})/ or cont[0] =~ /^(?:%\s+)?sisu-([0-9](?:\.[0-9]+){1,2})/
           @declared_markup=$1
         end
-        @flag_38=false
+        @flag_57,@flag_38=false,false
         cont.each_with_index do |y,i|
           if y =~/^(?:0\{?~links?|@links?:)\s/ and f =~/(?:\.sst|\.ssm|\.ssi|\.s[123])/
             links=unless y =~/\{.+?\}\S+/; oldlinks=' (pre 0.20.4 header links)'
             else ' (post 0.20.4 header links)'
             end
           end
+          if @flag_57 or y =~/^:?A~\?? @title/
+            version='0.57'
+            markup=Markup_inform.new(version,'0.57' + oldlinks,@declared_markup,@declared_type)
+            @flag_57=true
+            break
+          end
           if @flag_38 or (y =~/^:?A~/ and f =~/(?:\.sst|\.ssm|\.ssi)/)
             version='0.38'
             markup=Markup_inform.new(version,'0.38' + oldlinks,@declared_markup,@declared_type)
@@ -196,6 +202,16 @@ WOK
     def initialize(opt)
       @opt=opt
     end
+    def sisu_0_57
+      <<WOK
+  SiSU 0.57 is the same as 0.42 with the introduction of some a shortcut to use
+  the headers @title and @creator in the first heading [expanded using the
+  contents of the headers @title: and @author:]
+
+  :A~ @title by @author
+
+WOK
+    end
     def sisu_0_42
       <<WOK
   SiSU 0.42 is the same as 0.38 with the introduction of some additional endnote types,
@@ -300,7 +316,9 @@ WOK
       tell=if @opt.mod.inspect =~/--query/
         tell=case @opt.mod.inspect
         when /history/
-          "#{sisu_0_38}\n#{sisu_0_37}\n#{sisu_0_16}\n#{sisu_0_1}"
+          "#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}\n#{sisu_0_37}\n#{sisu_0_16}\n#{sisu_0_1}"
+        when /0.57/
+          "#{sisu_0_57}#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
         when /0.42/
           "#{sisu_0_42}#{sisu_0_38}#{sisu_0_16}"
         when /0.38/
diff --git a/lib/sisu/v0/sysenv.rb b/lib/sisu/v0/sysenv.rb
index 9052ac91..0f6652b8 100644
--- a/lib/sisu/v0/sysenv.rb
+++ b/lib/sisu/v0/sysenv.rb
@@ -828,59 +828,85 @@ module SiSU_Env
         @flag
       end
       def search?
-        flag=if defined? @rc['search'] and
-        defined? @rc['search']['action'] and @rc['search']['action'] =~/http:\/\// and
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-          flag=if promo?[:ad]
-            false
-          elsif defined? @vz.widget_search and @vz.widget_search == true
-            true
-          elsif defined? @rc['search']['flag'] and @rc['search']['flag'] == true
-            true
-          else
-            false
+        searches=['sisu','hyperestraier']
+        flag=false
+        if defined? @rc['search']
+          searches.each do |type|
+            flag=if defined? @rc['search'][type] and
+            defined? @rc['search'][type]['action'] and
+            @rc['search'][type]['flag']==true and
+            @rc['search'][type]['action'] =~/http:\/\// #and
+            #defined? @rc['search'][type]['db'] and @rc['search'][type]['db'] =~/\S+/ # and
+              flag=if promo?[:ad]
+                false
+              elsif defined? @vz.widget_search and @vz.widget_search == true
+                true
+              elsif defined? @rc['search'][type]['flag'] and @rc['search'][type]['flag'] == true
+                true
+              else false
+              end
+            else false
+            end
           end
-        else
-          false
+        else false
         end
+        #flag=true
+        flag
       end
       def search_fixed?
-        flag=if defined? @rc['search'] and
-        defined? @rc['search']['action'] and @rc['search']['action'] =~/http:\/\// and
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-          flag=if promo?[:ad]
-            false
-          elsif defined? @vz.widget_search and @vz.widget_search == true
-            true
-          elsif defined? @rc['search']['flag'] and @rc['search']['flag'] == true
-            true
-          else
-            false
+        searches=['sisu','hyperestraier']
+        flag=if defined? @rc['search']
+          searches.each do |type|
+            if defined? @rc['search'][type] and
+            defined? @rc['search'][type]['action'] and @rc['search'][type]['action'] =~/http:\/\// and
+            defined? @rc['search'][type]['db'] and @rc['search'][type]['db'] =~/\S+/ # and
+              flag=if promo?[:ad]
+                false
+              elsif defined? @vz.widget_search and @vz.widget_search == true
+                true
+              elsif defined? @rc['search'][type]['flag'] and @rc['search'][type]['flag'] == true
+                true
+              else false
+              end
+            else false
+            end
           end
-        else
-          false
+        else false
         end
       end
-      def search_form(action=nil,db=nil)
+      def search_form(type='sisusearch',action=nil,db=nil,table=false)
         rc=SiSU_Env::Get_init.instance.yamlrc
-        create_form=if action and db and action =~/http:\/\// and db =~/\S+/
+        create_form_hyperestraier=if defined? rc['search']['sisu']['flag'] and
+        rc['search']['sisu']['flag']==true and
+        action and action =~/http:\/\//; true
+        else false
+        end
+        create_form_sisu=if action and db and action =~/http:\/\// and db =~/\S+/
           true
         elsif widget.search?
-          db=if rc['search']['db']=~/\S+/
-            rc['search']['db']=~/^SiSU_\S+/ ? rc['search']['db'] : "SiSU_#{rc['search']['db']}"
+          db=if rc['search']['sisu']['flag']==true and
+            rc['search']['sisu']['db']=~/\S+/
+            rc['search']['sisu']['db']=~/^SiSU_\S+/ ? rc['search']['sisu']['db'] : "SiSU_#{rc['search']['sisu']['db']}"
           else nil
           end
-          action=rc['search']['action']
+          action=rc['search']['sisu']['action']
           true
         else false
         end
-        if create_form
-          %{<td align="center" bgcolor="#ffffff">
+        if table
+          table_open='<td align="center" bgcolor="#ffffff">'
+          table_close='</td>'
+        else
+          table_open=''
+          table_close='<br />'
+        end
+        form=if create_form_sisu and type=~/sisusearch/ and
+          defined? rc['search']['sisu']
+          <<WOK
 <!-- SiSU Search -->
+#{table_open}
 <a name="search"></a>
-<form method="get" action="#{rc['search']['action']}" target="_top">
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
 <font size="2">
 <input type="text" name="s1" size="24" maxlength="255" />
 <br />
@@ -891,23 +917,43 @@ module SiSU_Env
 <input type="radio" name="view" value="text" /> txt
 <input type="submit" name="ignore" value="search" />
 <input type="checkbox" name="fns" value="#{@md.fnb}" />
-</font>
-</form>
+</font></form>
+#{table_close}
 <!-- SiSU Search -->
-</td> }
+WOK
+        elsif create_form_hyperestraier and type=~/hyperestraier/ and
+          defined? rc['search']['hyperestraier']
+            <<WOK
+<!-- SiSU Search using Hyperestraier -->
+#{table_open}
+<a name="search"></a>
+<form method="get" action="#{rc['search']['hyperestraier']['action']}" target="_top">
+<font size="2">
+<input type="text" name="phrase" value="" size="24" maxlength="255" />
+<br />
+<input type="submit" value="search" />
+<input type="hidden" name="enc" value="UTF-8" />
+<font size="2">
+<a href="#{rc['search']['hyperestraier']['action']}">hyperestraier search</a>
+</font></form>
+#{table_close}
+<!-- SiSU Search using Hyperestraier -->
+WOK
         else ''
         end
+        form
       end
       def search_form_static(action=nil,db=nil)
         rc=SiSU_Env::Get_init.instance.yamlrc
-        create_form=if action and db and action =~/http:\/\// and db =~/\S+/
+        create_form=if rc['search']['sisu']['flag']==true and
+        action and db and action =~/http:\/\// and db =~/\S+/
           true
         elsif widget.search_fixed?
-          db=if rc['search']['db']=~/\S+/
-            rc['search']['db']=~/^SiSU_\S+/ ? rc['search']['db'] : "SiSU_#{rc['search']['db']}"
+          db=if rc['search']['sisu']['flag']==true and rc['search']['sisu']['db']=~/\S+/
+            rc['search']['sisu']['db']=~/^SiSU_\S+/ ? rc['search']['sisu']['db'] : "SiSU_#{rc['search']['sisu']['db']}"
           else nil
           end
-          action=rc['search']['action']
+          action=rc['search']['sisu']['action']
           true
         else false
         end
@@ -915,7 +961,7 @@ module SiSU_Env
           %{<td align="center" bgcolor="#ffffff">
 <!-- SiSU Search -->
 <a name="search"></a>
-<form method="get" action="#{rc['search']['action']}" target="_top">
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
 <font size="2">
 <input type="text" name="s1" size="24" maxlength="255" />
 <br />
@@ -946,12 +992,13 @@ module SiSU_Env
       @flag={ :ad=>false,:md=>false,:sk=>false,:rc=>false }
       def search?
         flag=if defined? @rc['search'] and
-        defined? @rc['search']['action'] and @rc['search']['action'] =~/http:\/\// and
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
+        defined? @rc['search']['sisu'] and
+        defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/http:\/\// and
+        defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
+        defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
           flag=if defined? @vz.widget_search and @vz.widget_search == true
             true
-          elsif defined? @rc['search']['flag'] and @rc['search']['flag'] == true
+          elsif defined? @rc['search']['sisu']['flag'] and @rc['search']['sisu']['flag'] == true
             true
           else
             false
@@ -962,12 +1009,13 @@ module SiSU_Env
       end
       def search_fixed?
         flag=if defined? @rc['search'] and
-        defined? @rc['search']['action'] and @rc['search']['action'] =~/http:\/\// and
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
-        defined? @rc['search']['db'] and @rc['search']['db'] =~/\S+/
+        defined? @rc['search']['sisu'] and
+        defined? @rc['search']['sisu']['action'] and @rc['search']['sisu']['action'] =~/http:\/\// and
+        defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
+        defined? @rc['search']['sisu']['db'] and @rc['search']['sisu']['db'] =~/\S+/
           flag=if defined? @vz.widget_search and @vz.widget_search == true
             true
-          elsif defined? @rc['search']['flag'] and @rc['search']['flag'] == true
+          elsif defined? @rc['search']['sisu']['flag'] and @rc['search']['sisu']['flag'] == true
             true
           else
             false
@@ -978,21 +1026,23 @@ module SiSU_Env
       end
       def search_form(action=nil,db=nil)
         rc=SiSU_Env::Get_init.instance.yamlrc
-        create_form=if action and db and action =~/http:\/\// and db =~/\S+/
+        create_form=if defined? rc['search']['sisu']['flag'] and
+        rc['search']['sisu']['flag']==true and
+        action and db and action =~/http:\/\// and db =~/\S+/
           true
-        elsif widget_static.search?
-          db=if rc['search']['db']=~/\S+/
-            rc['search']['db']=~/^SiSU_\S+/ ? rc['search']['db'] : "SiSU_#{rc['search']['db']}"
+        elsif widget_static.search? and rc['search']['sisu']['flag']==true
+          db=if rc['search']['sisu']['db']=~/\S+/
+            rc['search']['sisu']['db']=~/^SiSU_\S+/ ? rc['search']['sisu']['db'] : "SiSU_#{rc['search']['sisu']['db']}"
           else nil
           end
-          action=rc['search']['action']
+          action=rc['search']['sisu']['action']
           true
         else false
         end
         if create_form and @fnb and @fnb=~/\S+/
           %{<!-- SiSU Search -->
 <a name="search"></a>
-<form method="get" action="#{rc['search']['action']}" target="_top">
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
 <font size="2">
 <input type="text" name="s1" size="24" maxlength="255" />
 <br />
@@ -1007,7 +1057,7 @@ module SiSU_Env
         elsif create_form
           %{<!-- SiSU Search -->
 <a name="search"></a>
-<form method="get" action="#{rc['search']['action']}" target="_top">
+<form method="get" action="#{rc['search']['sisu']['action']}" target="_top">
 <font size="2">
 <input type="text" name="s1" size="24" maxlength="255" />
 <br />
@@ -1370,7 +1420,9 @@ module SiSU_Env
           "#{path.webserv}/#@stub_pwd".gsub(/#{path.webserv_dir}/,"#{url.hostname}/#@stub_pwd")
         elsif defined? @rc['webserv']['webrick_url'] and @rc['webserv']['webrick_url'] == false
           "file://#{path.webserv}/#@stub_pwd"
-        else "#{url.hostname}:#{webserv_port_cgi}/#@stub_pwd"
+        elsif webserv_port_cgi =~/\S+/
+          "#{url.hostname}:#{webserv_port_cgi}/#@stub_pwd"
+        else "#{url.hostname}/#@stub_pwd"
         end
       end
       def webserv_base                                                           #web url for local webserv (localhost, or hostname)
@@ -1394,8 +1446,8 @@ module SiSU_Env
         end
       end
       def sample_search_form_title
-        if defined? @rc['search']['title'] and @rc['search']['title'] =~/\S+/
-          @rc['search']['title']
+        if defined? @rc['search']['sisu']['title'] and @rc['search']['sisu']['title'] =~/\S+/
+          @rc['search']['sisu']['title']
         else %{SiSU search form (sample):}
         end
       end
-- 
cgit v1.2.3