diff options
author | Ralph Amissah <ralph@amissah.com> | 2009-07-04 11:57:29 -0400 |
---|---|---|
committer | Ralph Amissah <ralph@amissah.com> | 2009-07-04 11:57:29 -0400 |
commit | 7372f56054259457f77c64cbdb34e736531cfc0e (patch) | |
tree | e46b3ff01bd379cfb476dc8333b397765aef9681 /lib/sisu/v1/html_format.rb | |
parent | changelog, update (diff) |
move lib to version 1 directory, (lib/sisu/v1) and make related changes
Diffstat (limited to 'lib/sisu/v1/html_format.rb')
-rw-r--r-- | lib/sisu/v1/html_format.rb | 1425 |
1 files changed, 1425 insertions, 0 deletions
diff --git a/lib/sisu/v1/html_format.rb b/lib/sisu/v1/html_format.rb new file mode 100644 index 00000000..eb29f9f9 --- /dev/null +++ b/lib/sisu/v1/html_format.rb @@ -0,0 +1,1425 @@ +# coding: utf-8 +=begin + + * Name: SiSU + + * Description: a framework for document structuring, publishing and search + + * Author: Ralph Amissah + + * Copyright: (C) 1997 - 2009 Ralph Amissah All Rights Reserved. + + * License: GPL 3 or later: + + 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 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 <http://www.gnu.org/licenses/>. + + If you have Internet connection, the latest version of the GPL should be + available at these locations: + <http://www.fsf.org/licensing/licenses/gpl.html> + <http://www.gnu.org/licenses/gpl.html> + + <http://www.jus.uio.no/sisu/gpl.fsf/toc.html> + <http://www.jus.uio.no/sisu/gpl.fsf/doc.html> + <http://www.jus.uio.no/sisu/gpl.fsf/plain.txt> + + * SiSU uses: + * Standard SiSU markup syntax, + * Standard SiSU meta-markup syntax, and the + * Standard SiSU object citation numbering and system + + * Hompages: + <http://www.jus.uio.no/sisu> + <http://www.sisudoc.org> + + * Download: + <http://www.jus.uio.no/sisu/SiSU/download.html> + + * Ralph Amissah + <ralph@amissah.com> + <ralph.amissah@gmail.com> + + ** Description: html formating, css template + +=end +module SiSU_HTML_Format + include SiSU_Viz + class Paragraph_number + def initialize(md,ocn) + @md,@ocn=md,ocn[/(\d+)/m,1] + @ocn ||='' + vz=SiSU_Env::Get_init.instance.skin + @skin_no_ocn=if defined? vz.ocn_display_off \ + and vz.ocn_display_off == true + true + else false + end + end + def ocn_display + if @md.markup.inspect =~/no_ocn/ \ + or @md.mod.inspect =~/--no-ocn/ \ + or @skin_no_ocn + ocn_class='ocn_off' + @ocn.gsub(/^(\d+|)$/, + %{<label class="#{ocn_class}"> </label>}) + elsif @ocn.to_i == 0 + @ocn.gsub(/^(\d+|)$/, + %{<label class="#{ocn_class}"><a name="#{@ocn}"> </a></label>}) + else + ocn_class='ocn' + @ocn.gsub(/^(\d+|)$/, + %{<label class="#{ocn_class}"><a name="#{@ocn}">\\1</a></label>}) + end + end + def name + %{<a name="#{@ocn}"></a>} + end + def id #w3c? "tidy" complains about numbers as identifiers ! annoying + %{id="o#{@ocn}"} + end + def goto + %{<a href="##{@ocn}">} + end + end + class Head_information + include SiSU_Viz + attr_reader :md,:pdf,:rdf,:vz + def initialize(md) + @md=md + @rdf=SiSU_XML_tags::RDF.new(md) + # DublinCore 1 - title + @vz=SiSU_Env::Get_init.instance.skin + @css=SiSU_Env::CSS_stylesheet.new(md) + @seg_name_html=(SiSU_HTML::Source::Seg.new.seg_name_html || []) + @seg_name_html_tracker=(SiSU_HTML::Source::Seg.new.seg_name_html_tracker || []) + case @md.file_type + when /php/; @index='index' # @index="index.php" + else @index='index' + end + @metalink='#metadata' + @tocband_scroll,@tocband_segtoc=nil,nil + end + def doc_type + %{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml">\n} + end + def toc_head_escript #embedded script in this case PHP + # %{<p>PHP or other embedded script for object persistence may go HERE</p>} + end + def seg_head_escript #embedded script in this case PHP + # %{<p>PHP or other embedded script for object persistence may go HERE</p>} + end + def table_close + %{ </font> +#{@vz.table_close}} + end + def buttons_home + %{<!- home and index buttons -!> + #{@vz.banner_home_and_index_buttons} +<!- home and index buttons -!>} + end + def copyat + %{#{@vz.paragraph_font_tiny}copy @ + <a href="#{@vz.url_home}" #{@vz.js_home}> + #{@vz.txt_home} + </a></h1>} + end + def html_close #moved + %{</body> +</html>} + end + end + class Widget < Head_information + def initialize(md) + super(md) + @md=md + @cf_defaults=SiSU_Env::Info_processing_flag.new + end + def home + %{<td align="center" bgcolor=#{@vz.color_band2}> + <a href="../index.html" target="_top"> + #{@vz.png_homepage}</a> +</td> +} + end + def scroll(text) + if @md.fns =~ /\.(?:-|ssm\.)?sst$/ + scroll=%{<td align="center" bgcolor=#{@vz.color_band2}> + <a href="#{@md.fn[:doc]}" target="_top" #{@vz.js_doc}> + #{text} + </a> +</td> +} + end + end + def seg(text) + %{<td align="center" bgcolor="#99CC66"> + <a href="#{@md.fn[:toc]}" target="_top" #{@vz.js_doc}> + #{text} + </a> +</td> +} + end + def search + env=SiSU_Env::Info_env.new(@md.fns,@md) + env.widget.search_form('sisusearch',nil,nil,true) + end + def manifest + %{<td align="center" bgcolor=#{@vz.color_band2}> + <a href="#{@md.fn[:manifest]}" target="_top" #{@vz.js_manifest}> + #{@vz.nav_txt_manifest} + </a> +</td>} + end + def pdf + pdf=if @md.programs[:pdf] \ + and @cf_defaults.cf_0 =~/p/ + %{ +<td align="center" bgcolor=#{@vz.color_band2}> + <a href="#{@md.fn[:pdf_p]}" target="_top" #{@vz.js_portrait}> + #{@vz.nav_txt_pdf_portrait} + </a> +</td> +<td align="center" bgcolor=#{@vz.color_band2}> + <a href="#{@md.fn[:pdf_l]}" target="_top" #{@vz.js_landscape}> + #{@vz.nav_txt_pdf_landscape} + </a> +</td> +} + else '' + end + end + def odf + odf=if @cf_defaults.cf_0 =~/o/ + %{ +<td align="center" bgcolor=#{@vz.color_band2}> + <a href="#{@md.fn[:odf]}" target="_top" #{@vz.js_odf}> + #{@vz.nav_txt_odf} + </a> +</td>} + else '' + end + end + def concordance(text) + if @md.concord_make \ + and @md.wc_words < 300000 #max word count for display of concordance here as would now be a large file + %{<td align="center" bgcolor=#{@vz.color_band2}> + <a href="#{@md.fn[:concordance]}" target="_top" #{@vz.js_concordance}> + #{text} + </a> + </td>} + else '' + end + end + end + class XML + end + class Head_toc < Head_information + def initialize(md) + super(md) + @md=md + @tocband_scroll,@tocband_segtoc=make_scroll,make_seg + end + def scroll_head_navigation_band + pdf=if @md.programs[:pdf] + <<WOK +<td align="center" width="60%"> + #{make_seg_scroll_pdf} +</td> +WOK + else '' + end + %{<table summary="table of contents scroll navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> +<tr><td width="20%"> + #{@vz.banner_band} +</td>#{pdf} +<td width="20%"> + +#{@vz.table_close} +<p />} + end + def concordance_navigation_band(type='') + if type=~/pdf/ + @tocband_concordance=make_concordance + end + %{<table summary="concordance navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> +<tr><td width="20%"> + #{@vz.banner_band} +</td> +<td width="60%" align="center"> + #@tocband_concordance +</td> +<td width="20%" align="right"> + <a href="index.html" target="_top" alt="->"> + #{@vz.png_nav_toc} + </a> +#{@vz.table_close} +<p />} + end + def seg_head_navigation_band(type='') + if type=~/pdf/ + @tocband_segtoc=make_scroll_seg_pdf + end + firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" alt="->"> + #{@vz.png_nav_nxt} + </a>} if @md.firstseg =~/\S+/ + %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> +<tr><td width="20%"> + #{@vz.banner_band} +</td> +<td width="60%" align="center"> + #@tocband_segtoc +</td> +<td width="20%" align="right"> + #{firstseg} +#{@vz.table_close} +<p />} + end + def seg_head_navigation_band_bottom(type='') + if type=~/pdf/ + @tocband_segtoc=make_scroll_seg_pdf + end + firstseg=%{<a href="#{@md.fnl[:pre]}#{@md.firstseg}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" alt="->"> + #{@vz.png_nav_nxt} + </a>} if @md.firstseg =~/\S+/ + %{<table summary="table of contents segment navigation band" id="toc" width="100%" bgcolor=#{@vz.color_band1}> +<tr><td width="20%"> + +</td> +<td width="60%" align="center"> + #@tocband_segtoc +</td> +<td width="20%" align="right"> + #{firstseg} +#{@vz.table_close} +<p />} + end + def manifest_link(text) + %{<font size=2> + <a href="#{@md.fn[:manifest]}" target="_top" #{@vz.js_manifest}>#{text}</a> + </font>} + end + def concordance_link(text) + if @md.concord_make + %{<font size=2> + <a href="#{@md.fn[:concordance]}" target="_top" #{@vz.js_concordance}> + #{text} + </a> + </font>} + else '' + end + end + def make_seg_scroll_pdf + wgt=Widget.new(@md) + scroll=%{<td align="center" bgcolor=#{@vz.color_band2}> + #{@vz.nav_txt_doc_link} +</td> +} + %{<table summary="toc segment and scroll with pdf" border="0" cellpadding="3" cellspacing="0"> +<tr> + #{scroll} + #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.pdf}#{wgt.odf} + #{wgt.concordance(@vz.nav_txt_concordance)} + #{wgt.manifest} + #{wgt.search} + #{wgt.home} +</tr></table>} + end + def make_scroll_seg_pdf + manifest=scroll=seg='' + wgt=Widget.new(@md) + seg=%{<td align="center" bgcolor=#{@vz.color_band2}> + #{@vz.nav_txt_toc_link} +</td> +} + %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0"> +<tr> + #{seg} + #{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf} +<td align="center" bgcolor=#{@vz.color_band2}> + #{wgt.concordance(@vz.nav_txt_concordance)} + #{wgt.manifest} + #{wgt.search} + #{wgt.home} +</tr></table>} + end + def make_concordance + manifest=scroll=seg='' + wgt=Widget.new(@md) + %{<table summary="toc scroll and segment with pdf" border="0" cellpadding="3" cellspacing="0"> +<tr> + #{wgt.seg(@vz.nav_txt_toc_link)}#{wgt.scroll(@vz.nav_txt_doc_link)}#{wgt.pdf}#{wgt.odf} +<td align="center" bgcolor=#{@vz.color_band2}> + #{wgt.concordance(@vz.nav_txt_concordance)} + #{wgt.manifest} + #{wgt.search} + #{wgt.home} +</tr></table>} + end + def head + %{#{doc_type} +<head> + <title> + #{@md.html_title} + </title> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +#{@rdf.rdftoc} +#{@rdf.metatag_html} +#{@css.html} +</head> +#{@vz.color_body} +<a name="top" id="top"></a> +<a name="up" id="up"></a> +<a name="start" id="start"></a> +#{@vz.js_top}} + end + def concordance + if @md.concord_make + %{#{@vz.margin_css} + <h4 class="toc"> + <a href="./#{@md.fn[:concordance]}" #{@vz.js_concordance}> + <i>Concordance</i> + </a> + </h4> +#{@vz.table_close}} + else + %{#{@vz.margin_css} +#{@vz.table_close}} + end + end + def links_guide_vertical_open #??? + url=(defined? @vz.url_hp) && @vz.url_hp =~/^http:\/\/\S+$/ ? @vz.url_hp : @vz.url_home + %{ +<div id="vertical_links"> + <ul id="vertical"> + <li class="refbold"> + <a href="#{url}" #{@vz.js_home}> + #{@vz.txt_hp} + </a> + </li> + <li class="ref"> + Quick Ref.: + </li> + <li class="ref"> + <a href="#{@md.fn[:manifest]}" alt="Document Manifest" target="_top"> + Manifest + </a> + </li> +<!- quick ref -!>} + end + def links_guide_horizontal_open #??? + url=(defined? @vz.url_hp) && @vz.url_hp =~/^http:\/\/\S+$/ ? @vz.url_hp : @vz.url_home + %{ +<div id="horizontal_links"> + <ul id="horizontal"> + <li class="refbold"> + <a href="#{url}" #{@vz.js_home}> + #{@vz.txt_hp} + </a> + </li> + <li class="ref"> + Quick Ref.: + </li> + <li class="ref"> + <a href="#{@md.fn[:manifest]}" alt="Document Manifest" target="_top"> + Manifest + </a> + </li> +<!- quick ref -!>} + end + def links_guide_open(type='horizontal') + if type=='vertical'; links_guide_vertical_open + else links_guide_horizontal_open + end + end + def links_guide_close #(type='horizontal') + insert='' + insert=@vz.banner_home_guide if @md.sfx_src =~/lm?/ + #insert=@vz.banner_home_guide if @md.sfx_src =~/s?/ + insert=if @md.sfx_src =~/s?/ + link='http://www.jus.uio.no/sisu' #get from defaults + url='www.jus.uio.no/sisu' + name='SiSU electronic documents' #get from defaults + #name='SiSU electronic documents/books' #get from defaults + insert= %{ <li class="refbold"> + <a href="#{link}" alt="#{name}" target="_top"> + #{name} + </a> + </li> + <li class="ref"> + <a href="#{link}" alt="#{name}" target="_top"> + #{url} + </a> + </li> + </ul> +</div> +} + end + %{ #{insert} +<!- quick ref -!>} + end + def prefix_a + end + def rights + rights=@md.rights.gsub(/^\s*Copyright\s+\(C\)/,'Copyright <sup>©</sup> ') + %{<p class="small_left">Rights: #{rights}</p> +<p />} + end + def prefix_b + %{<p class="small_left">Prefix: #{@md.prefix_b}<p />} + end + def scroll_head_title_banner_open + %{<center> +#{@md.icon} +</center> +#{@vz.banner_instrument_cover_band_scr}} + end + def seg_head_title_banner_open + %{<center> + #{@md.icon} +</center> +#{@vz.banner_instrument_cover_band_seg}} + end + def make_scroll + concord=concordance_link(@vz.nav_txt_concordance) + %{<table summary="toc scroll" border="0" cellpadding="3" cellspacing="0"> +<tr><td align="center" bgcolor="white" border="0"> + #{@vz.nav_txt_doc_link} +</td> +<td align="center" bgcolor="white"> + #{concord} +#{@vz.table_close}} + end + def make_seg + concord=concordance_link(@vz.nav_txt_concordance) + %{<table summary="toc segment" border="0" cellpadding="3" cellspacing="0"> +<tr><td align="center" bgcolor="white"> + #{@vz.nav_txt_toc_link} +</td> +<td align="center" bgcolor="white"> + <font size=2> + #{concord} +#{@vz.table_close}} + end + def manifest #check structure + manifest=manifest_link(@vz.nav_txt_manifest) + %{#{@vz.margin_txt_3} + #{@vz.paragraph_font_small} + #{manifest} + </font> +#{@vz.table_close}} + end + def concordance #check structure + concord=concordance_link(@vz.nav_txt_concordance) + %{#{@vz.margin_txt_3} + #{@vz.paragraph_font_small} + #{concord} + </font> +#{@vz.table_close}} + end + def metadata + %{#{@vz.margin_css} + <h4 class="toc"> + <a href="#@metalink" #{@vz.js_metalink}> + <i>MetaData</i> + </a> + </h4> +#{@vz.table_close}} + end + def seg_metadata + @metalink=%{./#{@md.fn[:metadata]}} + metadata + end + def seg_tail + %{ +<div class="main_column"> +<p> <p> +<table summary="toc segment tail" bgcolor=#{@vz.color_band1}> +<tr><td width="20%"> + #{@vz.banner_band} +</td> +<td width="60%"> + <center> + #{@tocband_segtoc} + </center> +</td></tr> +</table> +<p> </p> +#{@vz.credits_splash} +#{@vz.credits_sisu} +<a name="bottom" id="bottom"></a> +<a name="down" id="down"></a> +<a name="end" id="end"></a> +<a name="finish" id="finish"></a> +<a name="stop" id="stop"></a> +<a name="credits"></a> +</div> +</div> +</div> +} + end + def scroll_tail #debug + nav=scroll_head_navigation_band + %{ +<div class="main_column"> +#{nav} +#{@vz.credits_splash} +#{@vz.credits_sisu} +<a name="bottom" id="bottom"></a> +<a name="down" id="down"></a> +<a name="end" id="end"></a> +<a name="finish" id="finish"></a> +<a name="stop" id="stop"></a> +<a name="credits"></a> +</div> +</div> +</div> +} + end + def seg_navigation_tail #this is a bug area, look up and "tidy" + #nav=scroll_head_navigation_band + %{ +<div class="main_column"> +<p> </p> +#{@vz.credits_splash} +#{@vz.credits_sisu} +<a name="bottom" id="bottom"></a> +<a name="down" id="down"></a> +<a name="end" id="end"></a> +<a name="finish" id="finish"></a> +<a name="stop" id="stop"></a> +<a name="credits"></a> +</div> +</div> +</div> +} + end + end + class Head_seg < Head_information + def initialize(md) #(md='') + super(md) + end + def head + %{#{doc_type} +<head> + <title> + #{@seg_name_html[@seg_name_html_tracker]} - + #{@md.html_title} + </title> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +#{@rdf.rdfseg} +#{@rdf.metatag_html} +#{@vz.font_css_table_file} +</head> +#{@vz.color_body} +<a name="top" id="top"></a> +<a name="up" id="up"></a> +<a name="start" id="start"></a> +#{@vz.js_top}} + end + def title_banner(title,subtitle,creator) + end + def dot_control_pre_next + %{<table summary="segment hidden control pre and next" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center"> +<tr><td align="left"> + <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> + #{@vz.png_nav_dot_pre} + </a> +</td> +<td align="center"> + <a href="#{@md.fnl[:pre]}#@index#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> + #{@vz.png_nav_dot_toc} + </a> +</td> +<td align="right"> + <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> + #{@vz.png_nav_dot_nxt} + </a> +#{@vz.table_close}} + end + def dot_control_pre + %{<table summary="segment hidden control pre" width="100%" border="0" cellpadding="0" bgcolor=#{@vz.color_grey_pale} align="center"> +<tr><td align="left"> + <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-2]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> + #{@vz.png_nav_dot_pre} + </a> +</td> +<td align="center"> + <a href="#{@md.fnl[:pre]}#@index#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> + #{@vz.png_nav_dot_toc} + </a> +</td> +<td align="right"> + <a href="#{@md.fn[:toc]}" target="_top" #{@vz.js_next}> + #{@vz.png_nav_dot_nxt} + </a> +#{@vz.table_close}} + end + def toc_nav(f_pre=false,f_nxt=false,use=1) + pre=nxt='' + toc=%{<td align="center" bgcolor=#{@vz.color_band1}> + <a href="#{@md.fnl[:pre]}#@index#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_toc}> + #{@vz.png_nav_toc} + </a> +</td>} + pre=%{<td align="center" bgcolor=#{@vz.color_band1}> + <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker-use]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_prev}> + #{@vz.png_nav_pre} + </a> +</td>} if f_pre==true + nxt=%{<td align="center" bgcolor=#{@vz.color_band1}> + <a href="#{@md.fnl[:pre]}#{@seg_name_html[@seg_name_html_tracker+1]}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}" target="_top" #{@vz.js_next}> + #{@vz.png_nav_nxt} + </a> +</td>} if f_nxt==true + %{<table summary="segment navigation pre/next" border="0" cellpadding="3" cellspacing="0"> +<tr> +#{pre} +#{toc} +#{nxt} +<td> +#{@vz.table_close}} + end + def toc_next2 + pre,nxt=false,true + toc_nav(false,true).dup + end + def toc_pre_next2 + toc_nav(true,true).dup + end + def toc_pre2 + toc_nav(true,false,2).dup + end + def manifest_link(text) + %{<font size=2> + <a href="#{@md.fn[:manifest]}" target="_top" #{@vz.js_manifest}> + #{text} + </a> + </font>} + end + def concordance_link(text) + if @md.concord_make + %{<font size=2> + <a href="#{@md.fn[:concordance]}" target="_top" #{@vz.js_concordance}> + #{text} + </a> + </font>} + else '' + end + end + def doc_types #used in seg_nav_band ### + scroll=seg='' + wgt=Widget.new(@md) + #dir=SiSU_Env::Info_env.new(@md.fns) + x=if @md.concord_make + %{ +<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0"> +<tr> + #{wgt.seg(@vz.nav_txt_toc_link)} + #{wgt.scroll(@vz.nav_txt_doc_link)} + #{wgt.pdf}#{wgt.odf} +<td align="center" bgcolor=#{@vz.color_band2}> + #{wgt.concordance(@vz.nav_txt_concordance)} + #{wgt.manifest} + #{wgt.search} + #{wgt.home} +</tr></table>} + else + %{ +<table summary="segment navigation available documents types: toc,doc,pdf,concordance" border="0" cellpadding="3" cellspacing="0"> +<tr> + #{wgt.seg(@vz.nav_txt_toc_link)} + #{wgt.scroll(@vz.nav_txt_doc_link)} + #{wgt.pdf}#{wgt.odf} +<td align="center" bgcolor=#{@vz.color_band2}> + #{wgt.manifest} + #{wgt.search} + #{wgt.home} +</tr></table>} + end + end + def title_endnote(title,subtitle,creator,table_top_control) +# %{#{@vz.banner_instrument_cover_band_seg} +# <h1 class="banner"> +# #{title} +# </h1> +# <h1 class="subbanner"> +# #{subtitle} +# </h1> +# <h1 class="subbanner"> +# #{creator} +# </h1> +# <h4 class="banner"> +# Endnotes +# </h4> +##{@vz.table_close} +#<h1>Endnotes</h1>} + end + def navigation_table + %{<table summary="navigation segment table" width=#{@vz.table_width_1} border="0" bgcolor="white" cellpadding="0"> +<tr><th width="#{@@indent['leve_1']}" align="right"> +</td> +<td valign="top"> + <font size=2>} + end + def navigation_table1 + %{<table summary="navigation segment table1" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} bgcolor=#{@vz.color_table1} align="left"> +<tr><td valign="top"> + <font size="2">} + end + def navigation_table2 + %{<table summary="navigation segment table2" width=#{@vz.table_width_2} border="0" cellpadding=#{@vz.table_cellpad_box} bgcolor=#{@vz.color_table2} align="left"> +<tr><td valign="top"> + <font size="2">} + end + def header_advert_local_1 + dir=SiSU_Env::Info_env.new(@fns) + %{ <center> +<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center"> +<tr><td align="center" bgcolor="white"> + <a href="http://#{@md.ad_url}#{Sfx[:html]}" target="_top"> + <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}"> + </a> + <p /> +#{@vz.table_close} +</center>} + end + def header_advert_local_2 + dir=SiSU_Env::Info_env.new(@fns) + %{ <center> +<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center"> +<tr><td align="center" bgcolor="white"> + <a href="#{@md.ad_url}#{Sfx[:html]}" target="_top"> + <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}"> + </a> + <p /> +#{@vz.table_close} +</center>} + end + def header_advert_external + dir=SiSU_Env::Info_env.new(@fns) + %{ <center> +<table summary="image" border="0" cellpadding="3" cellspacing="0" align="center"> +<tr><td align="center" bgcolor="white"> + <a href="#{@md.ad_url}#{Sfx[:html]}" target="external"> + <img border="0" src="#{dir.url.images_local}/#{@md.ad_png}" alt="#{@md.ad_alt}"> + </a> + <p /> +#{@vz.table_close} +</center>} + end + def credit + %{ +<div class="main_column"> +#{@vz.credits_splash} +#{@vz.credits_sisu} +<a name="bottom" id="bottom"></a> +<a name="down" id="down"></a> +<a name="end" id="end"></a> +<a name="finish" id="finish"></a> +<a name="stop" id="stop"></a> +<a name="credits" id="credits"></a> +</div></div> +} + end + def navigation_band(segtocband,seg_table_top_control) #change name to navigaion_band_banner + %{<table summary="segment navigation band with banner" bgcolor=#{@vz.color_band1} width="100%"><tr> +<td width="20%" align="left"> +#{@vz.banner_band} +</td> +<td width="60%" align="center"> + #{doc_types} +</td> +<td width="20%" align="right"> + #{segtocband} +</td></tr> +</table> +#{seg_table_top_control}} + end + def navigation_band_bottom(segtocband,seg_table_top_control) #change name to navigaion_band_bannerless + %{ +<div class="main_column"> + <table summary="segment navigation band" bgcolor=#{@vz.color_band1} width="100%"><tr> + <td width="70%" align="center"> + #{doc_types} + </td> + <td width="30%" align="right"> + #{segtocband} + </td></tr> + </table> + #{seg_table_top_control} +</div> +} + end + def endnote_mark +%{ +<p class="center" id="endnotes"> + <hr class="endnote" /> +</p>} + end + def endnote_section_open +%{ +<div class="endnote"> +} + end + def endnote_section_close +%{ +</div> +} #revisit + end + def head + %{#{doc_type} +<head> + <title> + #{@seg_name_html[@seg_name_html_tracker]} - + #{@md.html_title} + </title> +<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> +#{@rdf.rdfseg} +#{@rdf.metatag_html} +#{@css.html} +</head> +#{@vz.color_body} +<a name="top" id="top"></a> +<a name="up" id="up"></a> +<a name="start" id="start"></a> +#{@vz.js_top}} + end + def toc_metadata + @metalink=%{./#{@md.fn[:meatadata]}} + toc_metadata + end + def title_banner(title,subtitle,creator) + %{ +<div class="summary"> + <p class="tiny"> + #{title} + </p> + <p class="tiny"> + #{subtitle} + </p> + <p class="tiny"> + #{creator} + </p> + <p class="tiny"> + copy @ + <a href="#{@vz.url_home}"> + #{@vz.txt_home} + </a> + </p> +</div> +} + end + end + class Head_scroll < Head_toc + def initialize(md) #(md='') + super(md) + end + def toc_owner_details + %{#{@vz.margin_txt_3} +#{@vz.paragraph_font_small} + <a href="#owner.details"> + Owner Details + <font size="1" color="#777777"> + + </font> + </a> + </font> +#{@vz.table_close}} + end + def table + %{<table summary="scroll table" width=#{@vz.table_width_1} border="0" bgcolor="white" cellpadding="0"> +<tr><th width=#{@@indent['level_1']} align="right"> +</th> +<td valign="top"> +#{@vz.paragraph_txt}} + end + def table1 + %{<table summary="scroll table1" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} #{@vz.color_color_table1} align="justify"> +<tr><td valign="top"> +#{@vz.paragraph_txt}} + end + def table2 + %{<table summary="scroll table2" width=#{@vz.table_width_1} border="0" cellpadding=#{@vz.table_cellpad_box} #{@vz.color_color_table2} align="justify"> +<tr><td valign="top"> +#{@vz.paragraph_txt}} + end +## def toc_endnote +## %{#{@vz.margin_txt_3} +## #{@vz.paragraph_font_small} +## <a href="#endnotes"> +## Endnotes +## </a> +## #{@vz.table_close}} +## end +# def toc_endnote +# %{#{@vz.margin_css} +# <h4 class="toc"> +# <a href="#endnotes"> +# Endnotes +# </a> +# </h4> +##{@vz.table_close}} +# end + def title_endnote #revisit +# %{#{@vz.margin_txt_0} +# #{@vz.paragraph_txt} +# <a name="endnotes" id="endnotes"></a> +##{@vz.margin_num} +# +##{@vz.table_close}} + end + end + class Format_text_object + @vz=SiSU_Env::Get_init.instance.skin + @@dp=nil + attr_accessor :md,:t_o,:txt,:ocn,:format,:table,:link,:linkname,:paranum,:p_num,:headname,:banner,:url + def initialize(md,t_o) + @md,@t_o=md,t_o + if t_o.class == Hash + @txt =t_o[:txt] || nil + @ocn =t_o[:ocn] || nil + @ocn_display =t_o[:ocn_display] || nil + @headname =t_o[:headname] || nil + @trailer =t_o[:trailer] || nil + @endnote_part_a =t_o[:endnote_part_a] || nil + @endnote_part_b =t_o[:endnote_part_b] || nil + @lnk_url =t_o[:lnk_url] || nil + @lnk_txt =t_o[:lnk_txt] || nil + @format =t_o[:format] || nil + @target =t_o[:target] || nil #occasionally passed but not used + else + if @md.cmd =~/M/ + p t_o.class + p caller + end + end + if @txt and not @txt.empty? + @txt.gsub!(/#{Mx[:mk_o]}[-~]##{Mx[:mk_c]}/,'') + end + if @ocn and @ocn=~/\d+/ #WATCH FIX + @p_num=Paragraph_number.new(@md,@ocn) + end + if @format and not @format.empty? + if @format=~/^\d:(\S+)/ #need more reliable marker #if @format =~ /#{Rx[:lv]}/ + headname=$1 #format[/\d~(\S+)/m,1] + @headname=if headname =~/^[a-zA-Z]/; %{<a name="#{headname}" id="#{headname}"></a>} #consider: h_#{headname} + else %{<a name="h#{headname}" id="h#{headname}"></a>} + end + end + end + @vz=SiSU_Env::Get_init.instance.skin + end + def endnote_body + %{ +<p class="endnote"> + #{@txt} +</p> +} + end + def endnote_body_indent + %{ + <p class="endnote_indent"> + #{@txt} + </p> +} + end + def no_paranum + %{ +<div class="substance"> + <label class="ocn"> </label> + <p class="norm"> + #{@txt} + </p> +</div> +} + end + def para_form_css(tag,attrib) # regular paragraphs shaped here + ul=ulc='' + ul,ulc="<ul>\n ","\n </ul>" if @tag =~/li/ + %{ +<div class="substance"> + #{@p_num.ocn_display} + #{ul}<#{tag} class="#{attrib}" #{@p_num.id}> + #{@txt} + </#{tag}>#{ulc} +</div> +} + end + def para + para_form_css('p','norm') + end + def code + para_form_css('p','code') + end + def center + para_form_css('p','center') + end + def bold + para_form_css('p','bold') + end + def bullet + para_form_css('li','bullet') + end + def format(tag,attrib) + para_form_css(tag,attrib) + end + + def header_normal(tag,attrib) + %{ +<div class="substance"> + #{@p_num.ocn_display} + <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} + #{@headname}#{@txt} + </#{tag}> +</div> +} + end + def heading_body + header_normal('p','norm') + end + def heading_body1 + header_normal('h1','norm') + end + def heading_body2 + header_normal('h2','norm') + end + def heading_body3 + header_normal('h3','norm') + end + def heading_body4 + header_normal('h4','norm') + end + def heading_body5 + header_normal('h5','norm') + end + def heading_body6 + header_normal('h6','norm') + end + def title_header(tag,attrib) + %{ +<div class="content"> +<#{tag} class="#{attrib}"> + #{@txt} + </#{tag}> +</div> +} + end + def title_header1 + title_header('h1','tiny') + end + def title_header2 + title_header('h2','tiny') + end + def title_header3 + title_header('h3','tiny') + end + def title_header4 + '' + end + def title_header4_old + %{ +<div class="substance"> + <label class="ocn"> </label> + <h4 class="banner"> + #{@txt} + </h4> +</div> +} + end + def dl #check :trailer + "<dl><b>#{@txt}</b> #{@trailer}</dl>" + end + def table_css_end #<!TZ!> + '</table> + </p> + </div>' + end + def gsub_body + case @txt + when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\((i+|iv|v|vi+|ix|x|xi+)\)/ + @txt.gsub!(/^\((i+|iv|v|vi+|ix|x|xi+)\)/,'<b>(\1)</b>') + @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((i+|iv|v|vi+|ix|x|xi+)\)/,'\1<b>(\2)</b>') + when /^(?:#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]}\s*)?\(?(\d|[a-z])+\)/ + @txt.gsub!(/^\((\d+|[a-z])+\)/,'<b>(\1)</b>') + @txt.gsub!(/^(#{Mx[:pa_o]}i[1-9]#{Mx[:pa_c]})\s*\((\d+|[a-z])+\)/,'\1<b>(\2)</b>') + when /^\s*\d{1,3}\.\s/ + @txt.gsub!(/^\s*(\d+\.)/,'<b>\1</b>') + when /^\s*[A-Z]\.\s/ + @txt.gsub!(/^\s*([A-Z]\.)/,'<b>\1</b>') + end + end + def bold_para + %{#{@vz.margin_txt_0} + <p class="bold"> + #{@txt} + </p> +#{@vz.margin_num_css} + +#{@vz.table_close}} + end + def bold_header + @txt.gsub!(/[1-9]~(\S+)/,'<a name="\1"></a>') + @txt.gsub!(/[1-9]~/,'') + @txt.gsub!(/#{Mx[:id_o]}~0;[um]\d+;[um]\d+#{Mx[:id_c]}#{Mx[:id_o]}#@dp:#@dp#{Mx[:id_c]}\s*$/i,'') #watch & do differently + %{<p class="bold"> + #{@txt} + </p> +#{@vz.margin_num_css} + +#{@vz.table_close}} + end + def toc_head_copy_at + %{<p class="center">#{@txt}</p>\n} + end + def center + %{<p class="center">#{@txt}</p>\n} + end + def bold + %{<p class="bold">#{@txt}</p>\n} + end + def center_bold + %{<p class="centerbold">#{@txt}</p>\n} + end + end + class Format_scroll < Format_text_object + def initialize(md,txt) + super(md,txt) + @vz=SiSU_Env::Get_init.instance.skin + end + end + class Format_seg < Format_text_object + def initialize(md,txt) + super(md,txt) + end + def navigation_toc_lev1_advert + %{#{@banner.home_button}\n +<center> +#{@txt} +#@two +</a></center><p />} + end + def navigation_toc_lev1 + %{#{@banner.nav_toc}} + end + def navigation_toc_lev2 #change bold use css + %{<p /> +<table summary="navigation segment level 2"> +<tr><td width ="20"> +</td> +<td> + <font size="3" #{@vz.font_face}> + <b>#{@txt}</b> + </font> + </p> +#{@vz.table_close}} + end + def navigation_toc_lev3 #change bold use css + %{<p /> +<table summary="navigation segment level 3"> +<tr><td width ="20"> +</td> +<td> + <font size="3" #{@vz.font_face}> + <b>#{@txt}</b> + </font> + </p> +#{@vz.table_close}} + end + def navigation_toc_lev4 + %{<table summary="navigation segment level 4"> +<tr><td width ="80"> +</td> +<td> +<p> + #{@txt} +</p> +#{@vz.table_close}} + end + def navigation_toc_lev5 + end + def navigation_toc_lev6 + end + def endnote_seg_body(fn='') #FIX #url construction keep within single line... BUG WATCH 200408 + fn='doc' if fn.empty? #you may wish to reconsider, sends to 'doc' where no segment info + %{ + <p class="endnote"> + #{@endnote_part_a}#{@md.fnl[:pre]}#{fn}#{@md.fnl[:mid]}#{Sfx[:html]}#{@md.fnl[:post]}#{@endnote_part_b} + </p> +} + end + def subtoc_lev(tag,attrib) + txt=if @txt \ + and @txt =~/<\/?i>|<a\s+name="\S+?">/mi + @txt.gsub(/<\/?i>|<a\s+name="\S+?">/mi,'') #removes name markers from subtoc, go directly to substantive text + else @txt + end + note='' + if txt =~/((?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})\s*)/m #this is a clumsy fix, revisit and address upstream + note=$1 + note.gsub!(/[\n\s]+/m,' ') + txt.gsub!(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})\s*/m,' ') + txt.gsub!(/<a[\n\s]+name="-\d+"[\n\s]+href="#_\d+"> <sup>\d+<\/sup> /m,'') + end + %{<#{tag} class="#{attrib}"> + <a href="##{@ocn}"><i>#{txt}</i></a> #{note} + </#{tag}>} + end + def subtoc_lev5 + subtoc_lev('h5','subtoc') if @txt + end + def subtoc_lev6 + subtoc_lev('h6','subtoc') if @txt + end + #% para sisu + def header_sub(tag,attrib) + @txt.gsub!(/(?:#{Mx[:en_a_o]}|#{Mx[:en_b_o]}).+?(?:#{Mx[:en_a_c]}|#{Mx[:en_b_c]})\s*/m,' ') + %{ +<div class="substance"> + #{@p_num.ocn_display} + <#{tag} class="#{attrib}" #{@p_num.id}>#{@p_num.name} #{@headname} + #{@txt} + </#{tag}> +</div> +} + end + def header5 + header_sub('p','bold') + end + def header6 + header_sub('p','bold') + end + def header4 + %{ +<div class="substance"> + #{@p_num.ocn_display} + <h1 class="norm" #{@p_num.id}>#{@p_num.name} + #{@t_o[:format]} + #{@txt} + </h1> +</div> +} + end + def navigation_header4 + %{<table summary="navigation segment header 4" width=100% bgcolor="#08163f" border="0"> +<tr><td align="center"> +<p class="bold"> + #{@txt} +</p> +#{@vz.table_close}} + end + def navigation_header5 + %{<p class="bold"> + #{@txt} +</p>} + end + def navigation_header6 + %{<p class="bold"> + #{@txt} +</p>} + end + def navigation_center + "<center>#{@txt}</center>" + end + end + class Format_toc < Format_text_object + def initialize(md,txt) + super(md,txt) + end + def links_guide + %{ <li class="doc"> + <a href="#{@lnk_url}" target="_top"> + #{@lnk_txt} + </a> + </li> +} + end + def lev(tag,attrib) + if @txt + %{<#{tag} class="#{attrib}"> + #{@txt} + </#{tag}> +} + else '' + end + end + def lev1 + lev('h1','toc') + end + def lev2 + lev('h2','toc') + end + def lev3 + lev('h3','toc') + end + def lev4 + lev('h4','toc') + end + def lev5 + lev('h5','toc') + end + def lev6 + lev('h6','toc') + end + def lev0 #docinfo + lev('h0','toc') + end + def mini_lev1 + lev('h1','minitoc') + end + def mini_lev2 + lev('h2','minitoc') + end + def mini_lev3 + lev('h3','minitoc') + end + def mini_lev4 + lev('h4','minitoc') + end + def mini_lev5 + lev('h5','minitoc') + end + def mini_lev6 + lev('h6','minitoc') + end + def mini_lev0 #docinfo + lev('h0','minitoc') + end + def mini_tail +# <h0 class="minitoc"> +# <a href="metadata.html">Document Information (metadata)</a> +# </h0> + %{ + <h4 class="minitoc"> + <a href="sisu_manifest.html">Manifest (alternative outputs)</a> + </h4> +} + end + def mini_concord_tail + %{ + <h4 class="minitoc"> + <a href="concordance.html">Concordance (wordlist)</a> + </h4> + <h4 class="minitoc"> + <a href="sisu_manifest.html">Manifest (alternative outputs)</a> + </h4> +} + end + end +end +__END__ |