Index: openacs-4/packages/s5/COPYRIGHT =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/COPYRIGHT,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/COPYRIGHT 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,28 @@ + * xowiki + * + * Copyright (C) 2007 Gustaf Neumann, neumann@wu-wien.ac.at + * + * Vienna University of Economics and Business Administration + * Institute of Information Systems and New Media + * A-1090, Augasse 2-6 + * Vienna, Austria + * + * This is a BSD-Style license applicable for the files in this + * directory and below, except when stated explicitly different. + * + * Permission to use, copy, modify, distribute, and sell this + * software and its documentation for any purpose is hereby granted + * without fee, provided that the above copyright notice appear in + * all copies and that both that copyright notice and this permission + * notice appear in supporting documentation. We make no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * +* The purely CSS and JavaScript based S5 package was under +* Creative Commons Attribution-ShareAlike 2.0 license +* before Version 1.1, starting with version 1.1 it was placed +* in the public domain. The original S5 files, to which this +* paragraph refers to are under www/resources/flower and +* www/resources/standard. + Index: openacs-4/packages/s5/s5.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/s5.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/s5.info 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,47 @@ + + + + + s5 + s5 + f + f + s5 + + + Gustaf Neumann + 2007-09-04 + Gustaf Neumann + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: openacs-4/packages/s5/tcl/s5-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/tcl/s5-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/tcl/s5-procs.tcl 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,192 @@ +ad_library { + S5 - main libraray classes and objects + + @creation-date 2007-05-01 + @author Gustaf Neumann + @cvs-id $Id: s5-procs.tcl,v 1.1 2007/09/04 11:33:29 gustafn Exp $ +} +::xo::db::require package xowiki + +namespace eval ::s5 { + ::xo::PackageMgr create ::s5::Package \ + -superclass ::xowiki::Package + + # To provide downward compatibility with e.g. xowiki form oacs-5-3, + # we set the package_key via instvar. + # TODO: The package-key should be set via "-package_key s5" + # during the above create statement + ::s5::Package set package_key s5 + + Package instproc init {} { + set rich_text_spec {richtext(richtext),nospell,optional + {label Content} + {html {style {width: 100%}}} + {options {editor xinha plugins {Stylist OacsFs} height 350px javascript { + + xinha_config.stylistLoadStylesheet('/resources/s5/s5-xinha.css'); + }}}} + + ::xo::cc set_parameter widget_specs [list *,text $rich_text_spec] + next + } +} + +namespace eval ::xowiki::portlet { + # + # Create an includelet called s5, which behaves similar + # to the book includelet (default), or produces an S5 slide-show, + # when slideshow flag is true. + # + Class create s5 \ + -superclass ::xowiki::Portlet \ + -parameter { + {__decoration plain} + {parameter_declaration { + {-category_id} + {-slideshow:boolean false} + {-style standard} + {-menu_buttons "edit-item-button create-item-button delete-item-button"} + }} + } + + s5 instproc render {} { + my get_parameters + set page [my set __including_page] + + my set package_id $package_id + my set style $style + my set page $page + + lappend ::xowiki_page_item_id_rendered [$page item_id] ;# prevent recursive rendering + + set extra_where_clause "" + set cnames "" + if {[info exists category_id]} { + foreach {cnames extra_where_clause} [my category_clause $category_id] break + } + + set pages [::xowiki::Page instantiate_objects -sql \ + "select page_id, page_order, name, title, item_id \ + from xowiki_page_live_revision p \ + where parent_id = [$package_id folder_id] \ + and not page_order is NULL $extra_where_clause \ + [::xowiki::Page container_already_rendered item_id]" ] + $pages mixin add ::xo::OrderedComposite::IndexCompare + $pages orderby page_order + if {$slideshow} { + return [my render_slideshow $pages $cnames] + } else { + return [my render_overview $pages $cnames $menu_buttons] + } + } + + s5 instproc slideshow_header {-title -creator -footer -s5dir} { + return [subst { + +$title + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + +
+ +
+}] + } + + s5 instproc render_slideshow {pages cnames} { + my instvar package_id style page + ::xo::cc set_parameter master 0 + + set output [my slideshow_header \ + -title [$page set title] \ + -creator [$page set creator] \ + -footer [$page include_portlet "footer -decoration none"] \ + -s5dir "/resources/s5/$style/ui/default"] + + if {$cnames ne ""} { + #append output "
Filtered by categories: $cnames
" + } + foreach o [$pages children] { + $o instvar page_order title page_id name title + set level [expr {[regsub {[.]} $page_order . page_order] + 1}] + set p [::Generic::CrItem instantiate -item_id 0 -revision_id $page_id] + $p destroy_on_cleanup + #$p set render_adp 0 + set content [$p get_content] + set content [string map [list "\{\{" "\\\{\{"] $content] + append output "
" \ +

$title

\n \ + $content \ +
\n + } + return $output + } + + s5 instproc render_overview {pages cnames menu_buttons} { + my instvar package_id page + set output "" + if {$cnames ne ""} { + append output "
Filtered by categories: $cnames
" + } + set return_url [::xo::cc url] + + foreach o [$pages children] { + $o instvar page_order title page_id name title + set level [expr {[regsub {[.]} $page_order . page_order] + 1}] + set p [::Generic::CrItem instantiate -item_id 0 -revision_id $page_id] + $p destroy_on_cleanup + + set menu [list] + foreach b $menu_buttons { + set html [$p include_portlet $b] + if {$html ne ""} {lappend menu $html} + } + set menu "
[join $menu { }]
" + $p set unresolved_references 0 + #$p set render_adp 0 + set content [$p get_content] + set content [string map [list "\{\{" "\\\{\{" "\\@" "\\\\@"] $content] + my log content=$content + regexp {^.*:([^:]+)$} $name _ anchor + append output "" \ + $menu \ + "$page_order $title" \ + $content + } + return $output + } +} Index: openacs-4/packages/s5/www/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/index.vuh,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/index.vuh 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,20 @@ +# -*- tcl -*- +::s5::Package initialize -ad_doc { + + This is the resolver for this package. It turns a request into + an object and executes the object with the computed method + + @author Gustaf Neumann (gustaf.neumann@wu-wien.ac.at) + @creation-date July, 2006 + @cvs-id $Id: index.vuh,v 1.1 2007/09/04 11:33:29 gustafn Exp $ + +} -parameter { + {-m view} + {-folder_id:integer 0} +} + +::$package_id log "--starting... [ns_conn url] [ns_conn query] \ + form vars = [ns_set array [ns_getform]]" +::$package_id reply_to_user [::$package_id invoke -method $m] +::$package_id log "--i ::$package_id DONE" +ad_script_abort Index: openacs-4/packages/s5/www/admin/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/admin/index.vuh,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/admin/index.vuh 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,4 @@ +# -*- tcl -*- +set l [expr {[lsearch -exact [ns_conn urlv] admin] + 1 }] +set path [join [lrange [ns_conn urlv] $l end] /] +rp_internal_redirect /packages/xowiki/www/admin/$path Index: openacs-4/packages/s5/www/prototypes/cover.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/prototypes/cover.page,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/prototypes/cover.page 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,6 @@ +::xowiki::Page new -title "Title of Your Presentation" -creator "Your Name here" -page_order 1.0 -text { +Subtitle of your Presentation + +@creator@ +Your Affiliation +} Index: openacs-4/packages/s5/www/prototypes/footer.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/prototypes/footer.page,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/prototypes/footer.page 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,6 @@ +::xowiki::Page new -title "Footer" -text { +

{{get -variable title -source cover}}

+

{{aggregator -includelet "get -variable creator"}} • +{{aggregator -includelet "creation-date"}}

+ +} Index: openacs-4/packages/s5/www/prototypes/index.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/prototypes/index.page,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/prototypes/index.page 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,23 @@ +::xowiki::Page new -title "Index Page" -text { + +

+This is the default start page of S5 slide manager, showing you the contents of this folder. +Typically, you can see here listed the sildes and some helper pages to manage the slide contents. +This page can be edited to provide a personalized look of the start page. +The defined slides are shown on the slides page, +where you will find as well a link to start the slide presentation. + +For more details, consult the [[http://media.wu-wien.ac.at/download/xowiki-doc/|XoWiki documentation]]. +

+ +>>left-col<< {{recent -max_entries 1000 -allow_edit 1 -allow_delete 1}} +>><< +>>right-col<< {{last-visited -title "Last Visited" -max_entries 10 }} +{{most-popular -title "Most Popular" -max_entries 10 }} +>><< + +} + + + + Index: openacs-4/packages/s5/www/prototypes/presentation.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/prototypes/presentation.page,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/prototypes/presentation.page 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,3 @@ +::xowiki::Page new -title "All slides" -text { +{{s5}} +} Index: openacs-4/packages/s5/www/prototypes/slides.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/prototypes/slides.page,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/prototypes/slides.page 4 Sep 2007 11:33:29 -0000 1.1 @@ -0,0 +1,25 @@ +::xowiki::Page new -title "Slides" -text { +{{set-parameter template_file view-default}} +

+>>left-col25<< +{{toc -decoration plain -book_mode 1 -expand_all 1}} +>><< + +>>right-col75<< +

Slide Overview

+

Click here to start the slide show: +default style, +flower style +

+ +

The title and creator of this presentation should be provided on the +cover page. +The footer of every slide can be provided on the +footer page. +Use new page to create a new slide and provide +a section numbering for ordering the slides and including it in this slide set. +Below are the currently defined slides of this presentation. 

+

{{presentation}}

+>><< + +} Index: openacs-4/packages/s5/www/resources/s5-xinha.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/s5-xinha.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/s5-xinha.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,11 @@ +ul.incremental { + color: #222222; + background-color: #FFFFC4; +} +ul.show-first { + color: #222222; + background-color: #FFFF4C; +} +ul.non-incremental { + background-color: #FFFFFF; +} \ No newline at end of file Index: openacs-4/packages/s5/www/resources/flower/COPYRIGHT =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/COPYRIGHT,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/COPYRIGHT 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,6 @@ +* The purely CSS and JavaScript based S5 package was under +* Creative Commons Attribution-ShareAlike 2.0 license +* before Version 1.1, starting with version 1.1 it was placed +* in the public domain. The original S5 files, to which this +* paragraph refers to are under www/resources/flower and +* www/resources/standard. Index: openacs-4/packages/s5/www/resources/flower/ui/bg-shade.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/bg-shade.png,v diff -u Binary files differ Index: openacs-4/packages/s5/www/resources/flower/ui/s5-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/s5-notes.html,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/s5-notes.html 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,64 @@ + + + + +Notes + + + + + + + +
+

+Elapsed Time +

+ +
+|← +
+
+ +
+

+Remaining Time +

+

+- +00:00:00 ++ +

+
+
+ +|| +|← +
+
+
+ +

...

+
+ +

...

+
+ + + Index: openacs-4/packages/s5/www/resources/flower/ui/default/blank.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/blank.gif,v diff -u Binary files differ Index: openacs-4/packages/s5/www/resources/flower/ui/default/blume.jpg =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/blume.jpg,v diff -u Binary files differ Index: openacs-4/packages/s5/www/resources/flower/ui/default/blumerechts.jpg =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/blumerechts.jpg,v diff -u Binary files differ Index: openacs-4/packages/s5/www/resources/flower/ui/default/bodybg.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/bodybg.gif,v diff -u Binary files differ Index: openacs-4/packages/s5/www/resources/flower/ui/default/framing.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/framing.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/framing.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,25 @@ +/* The following styles size and place the slide components. + Edit them if you want to change the overall slide layout. + The commented lines can be uncommented (and modified, if necessary) + to help you with the rearrangement process. */ + +div#header, div#footer, div.slide {width: 100%; top: 0; left: 0;} +div#header {top: 0; height: 1em;} +div#footer {top: auto; bottom: 0; height: 2.5em;} +div.slide {top: 0; width: 92%; padding: 3.5em 4% 4%;} +/*div#controls {left: 50%; top: 0; width: 50%; height: 100%;} +#footer>*/ +div#controls {bottom: 0; top: auto; height: auto;} + +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0;} +div#currentSlide {position: absolute; left: -500px; bottom: 1em; width: 130px; z-index: 10;} +/*html>body +#currentSlide {position: fixed;}*/ + +/* +div#header {background: #FCC;} +div#footer {background: #CCF;} +div#controls {background: #BBD;} +div#currentSlide {background: #FFC;} +*/ Index: openacs-4/packages/s5/www/resources/flower/ui/default/iepngfix.htc =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/iepngfix.htc,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/iepngfix.htc 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file Index: openacs-4/packages/s5/www/resources/flower/ui/default/notes.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/notes.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/notes.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,122 @@ +/* Following are the note styles -- edit away! */ + +body { + margin: 0; + padding: 1.0em; + background: #333; + color: #FFF; + font: 2em/1.4em 'Lucida Grande', Verdana, sans-serif; +} + +div.timers { + background: #FFF; + color: #333; + border: 0.08em solid #222; + border-top-width: 1px; + border-left-width: 1px; + float: left; + padding: 0.2em; + margin: 0 0 0.5em; + position: relative; +} + +div.timers h1 { + text-align: left; + font-size: 0.6em; + line-height: 1.4em; + background-color: #FF9; + padding: 0 0.75em; + margin: 0.25em 0 0; + border: 1px solid #EE8; +} + +div.timers div.controls { + position: absolute; + right: 0.25em; + top: 0.1em; + line-height: 1em; +} + +div.timers h1 a { + text-decoration: none; + color: #000; +} + +div.timers div.controls a { + font-size: 0.5em; + padding: 0; + color: #330; +} + +div.timers a.control { + position: absolute; + text-decoration: none; + padding: 0 0.25em; + color: #AAA; + outline: 0; +} + +#minus { + left: 0.25em; +} + +#plus { + right: 0.25em; +} + +.overtime { + background: yellow; + color: red; + border: 3px solid; + padding: 0.1em 0.25em; + font-weight: bold; +} + +div.timers h2 { + font-size: 0.6em; + line-height: 1.0em; + font-weight: normal; + margin: 0 0 -0.25em; + padding-top: 0.5em; + color: #666; +} + +div.timers p {margin: 0; padding: 0 0.5em;} +div.timers form {margin: 0;} + +div.timers span.clock { + font-family: monospace; +} + +div.timers ul {margin: 0; padding: 0; list-style: none;} +div.timers li {float: left; width: 5em; margin: 0; padding: 0 0.5em; + text-align: center;} + +div#elapsed {width: 12.1em;} +div#remaining {clear: left; width: 12.1em;} +div#remaining p {text-align: center;} + +#slide, +#next, +#notes, +#nextnotes { + font-size: 0.75em; + line-height: 1.4em; + clear: left; +/* max-width: 30.0em; */ + text-shadow: 0.1em 0.1em 0.1em #111; +} + +#next {margin-top: 2.5em;} +#next, #nextnotes { + color: #999; + font-size: 0.66em; +} + +em.disclaimer { + color: #666; +} + +div.collapsed h1 {display: block; font-size: 0.33em;} +div.collapsed h1 a {display: inline;} +div.collapsed * {display: none;} Index: openacs-4/packages/s5/www/resources/flower/ui/default/opera.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/opera.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/opera.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,7 @@ +/* DO NOT CHANGE THESE unless you really want to break Opera Show */ +.slide { + visibility: visible !important; + position: static !important; + page-break-before: always; +} +#slide0 {page-break-before: avoid;} Index: openacs-4/packages/s5/www/resources/flower/ui/default/outline.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/outline.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/outline.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,15 @@ +/* don't change this unless you want the layout stuff to show up in the outline view! */ + +.layout div, #footer *, #controlForm * {display: none;} +#footer, #controls, #controlForm, #navLinks, #toggle { + display: block; visibility: visible; margin: 0; padding: 0;} +#toggle {float: right; padding: 0.5em;} +html>body #toggle {position: fixed; top: 0; right: 0;} + +/* making the outline look pretty-ish */ + +#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} +#slide0 h1 {padding-top: 1.5em;} +.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; + border-top: 1px solid #888; border-bottom: 1px solid #AAA;} +#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} Index: openacs-4/packages/s5/www/resources/flower/ui/default/pretty.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/pretty.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/pretty.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,84 @@ +/* Flower Theme 2004 by Martin Hense ::: www.lounge7.de */ + +/* Following are the presentation styles -- edit away! + Note that the 'body' font size may have to be changed if the resolution is + different than expected. */ + +body {background: #fff url(blume.jpg) no-repeat; color: #222; font-size: 1.8em;} +:link, :visited {text-decoration: none;} +#controls :active {color: #88A !important;} +#controls :focus {outline: 1px dotted #227;} +h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} +ul {margin: 0; line-height: 1em;} +pre {margin: 0; line-height: .85em;} +html, body {margin: 0; padding: 0;} + +blockquote, q {font-style: italic;} +blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} +blockquote p {margin: 0;} +blockquote i {font-style: normal;} +blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} +blockquote b i {font-style: italic;} + +kbd {font-weight: bold; font-size: 1em;} +sup {font-size: smaller; line-height: 1px;} + +code {padding: 2px 0.25em; font-weight: bold; color: #533;} +code.bad, code del {color: red;} +code.old {color: silver;} +pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 85%;} +pre code {display: block;} +ul {margin-right: 7%; margin-left: 50px; padding: 0; list-style: circle;} +li {margin-top: 0.75em; margin-right: 0;} +ul ul {line-height: 1;} +ul ul li {margin: .2em; font-size: 85%; list-style: disc;} +img.leader {display: block; margin: 0 auto;} + +div#header, div#footer {background: transparent; color: #BA9384; + font-family: Verdana, Helvetica, sans-serif;} +div#header {line-height: 1px;} +div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0; +border-top: 1px solid #999999; background: #FFF0CF;} +#footer h1, #footer h2 {display: block; padding: 0 1em;} +#footer h2 {font-style: italic;} + +div.long {font-size: 0.75em;} +.slide { +font-family: georgia, times, 'Times New Roman', serif; background: transparent url(blumerechts.jpg) right top no-repeat; +} +.slide h1 {position: absolute; z-index: 1; + margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; + text-transform: capitalize; + top: 35px; left: 60px; color: #4A040A; + font: 150%/1em georgia, times, 'Times New Roman', serif; + background: transparent;} +.slide h3 {font-size: 130%;} +h1 abbr {font-variant: small-caps;} + +div#controls {position: absolute; z-index: 1; left: 50%; top: 0; + width: 50%; height: 100%; + text-align: right;} +#footer>div#controls {position: fixed; bottom: 0; padding: 1em 0; + top: auto; height: auto;} +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0; padding: 0;} +div#controls a {font-size: 2em; padding: 0; margin: 0 0.5em; + background: transparent; color: #BA9384; border: none; + cursor: pointer;} +div#controls select {visibility: hidden; background: #DDD; color: #227;} +div#controls div:hover select {visibility: visible;} + +#currentSlide {text-align: center; font-size: 0.5em; +color: #646587; font-family: Verdana, Helvetica, sans-serif; font-weight: bold;} + +#slide0 {padding-top: 3.5em; font-size: 90%;} +#slide0 h1 {position: static; margin: 1em 0 1.33em; padding: 0; + white-space: normal; + color: #000; background: transparent; + font: 2em georgia, times, 'Times New Roman', serif;} +#slide0 h3 {margin-top: 0.5em; font-size: 1.5em;} +#slide0 h4 {margin-top: 0; font-size: 1em;} + +ul.urls {list-style: none; display: inline; margin: 0;} +.urls li {display: inline; margin: 0;} +.note {display: none;} \ No newline at end of file Index: openacs-4/packages/s5/www/resources/flower/ui/default/print.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/print.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/print.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,24 @@ +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ +.slide, ul {page-break-inside: avoid; visibility: visible !important;} +h1 {page-break-after: avoid;} + +body {font-size: 12pt; background: white;} +* {color: black;} + +#slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} +#slide0 h3 {margin: 0; padding: 0;} +#slide0 h4 {margin: 0 0 0.5em; padding: 0;} +#slide0 {margin-bottom: 3em;} + +h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} +.extra {background: transparent !important;} +div.extra, pre.extra, .example {font-size: 10pt; color: #333;} +ul.extra a {font-weight: bold;} +p.example {display: none;} + +#header {display: none;} +#footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} +#footer h2, #controls {display: none;} + +/* The following rule keeps the layout stuff out of print. Remove at your own risk! */ +.layout, .layout * {display: none !important;} Index: openacs-4/packages/s5/www/resources/flower/ui/default/s5-core.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/s5-core.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/s5-core.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,9 @@ +/* Do not edit or override these styles! The system will likely break if you do. */ + +div#header, div#footer, div#controls, .slide {position: absolute;} +html>body div#header, html>body div#footer, + html>body div#controls, html>body .slide {position: fixed;} +.handout, .notes {display: none;} +.layout {display: block;} +.slide, .hideme, .incremental {visibility: hidden;} +#slide0 {visibility: visible;} Index: openacs-4/packages/s5/www/resources/flower/ui/default/slides.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/slides.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/slides.css 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,3 @@ +@import url(s5-core.css); /* required to make the slide show run at all */ +@import url(framing.css); /* sets basic placement and size of slide components */ +@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file Index: openacs-4/packages/s5/www/resources/flower/ui/default/slides.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/s5/www/resources/flower/ui/default/slides.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/s5/www/resources/flower/ui/default/slides.js 4 Sep 2007 11:33:30 -0000 1.1 @@ -0,0 +1,764 @@ +// S5 v1.2a1 slides.js -- released into the Public Domain +// +// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information +// about all the wonderful and talented contributors to this code! + +var undef; +var slideCSS = ''; +var snum = 0; +var smax = 1; +var incpos = 0; +var number = undef; +var s5mode = true; +var defaultView = 'slideshow'; +var controlVis = 'visible'; + +var s5NotesWindow; +var s5NotesWindowLoaded = false; +var previousSlide = 0; +var presentationStart = new Date(); +var slideStart = new Date(); + +var countdown = { + timer: 0, + state: 'pause', + start: new Date(), + end: 0, + remaining: 0 +}; + + +var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className) return false; + return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); +} + +function hasValue(object, value) { + if (!object) return false; + return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); +} + +function removeClass(object,className) { + if (!object || !hasClass(object,className)) return; + object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); +} + +function addClass(object,className) { + if (!object || hasClass(object, className)) return; + if (object.className) { + object.className += ' '+className; + } else { + object.className = className; + } +} + +function GetElementsWithClassName(elementName,className) { + var allElements = document.getElementsByTagName(elementName); + var elemColl = new Array(); + for (var i = 0; i< allElements.length; i++) { + if (hasClass(allElements[i], className)) { + elemColl[elemColl.length] = allElements[i]; + } + } + return elemColl; +} + +function isParentOrSelf(element, id) { + if (element == null || element.nodeName=='BODY') return false; + else if (element.id == id) return true; + else return isParentOrSelf(element.parentNode, id); +} + +function nodeValue(node) { + var result = ""; + if (node.nodeType == 1) { + var children = node.childNodes; + for (var i = 0; i < children.length; ++i) { + result += nodeValue(children[i]); + } + } + else if (node.nodeType == 3) { + result = node.nodeValue; + } + return(result); +} + +function slideLabel() { + var slideColl = GetElementsWithClassName('*','slide'); + var list = document.getElementById('jumplist'); + smax = slideColl.length; + for (var n = 0; n < smax; n++) { + var obj = slideColl[n]; + + var did = 'slide' + n.toString(); + obj.setAttribute('id',did); + +// if (isOp) continue; // Opera fix (hallvord) + + var otext = ''; + var menu = obj.firstChild; + if (!menu) continue; // to cope with empty slides + while (menu && menu.nodeType == 3) { + menu = menu.nextSibling; + } + if (!menu) continue; // to cope with slides with only text nodes + + var menunodes = menu.childNodes; + for (var o = 0; o < menunodes.length; o++) { + otext += nodeValue(menunodes[o]); + } + list.options[list.length] = new Option(n + ' : ' + otext, n); + } +} + +function currentSlide() { + var cs; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + } else { + cs = document.currentSlide; + } + cs.innerHTML = '' + + '' + snum + '<\/span> ' + + '\/<\/span> ' + + '' + (smax-1) + '<\/span>' + + '<\/a>' + ; + if (snum == 0) { + cs.style.visibility = 'hidden'; + } else { + cs.style.visibility = 'visible'; + } +} + +function go(step) { + if (document.getElementById('slideProj').disabled || step == 0) return; + var jl = document.getElementById('jumplist'); + var cid = 'slide' + snum; + var ce = document.getElementById(cid); + if (incrementals[snum].length > 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + removeClass(incrementals[snum][i], 'current'); + removeClass(incrementals[snum][i], 'incremental'); + } + } + if (step != 'j') { + snum += step; + lmax = smax - 1; + if (snum > lmax) snum = lmax; + if (snum < 0) snum = 0; + } else + snum = parseInt(jl.value); + var nid = 'slide' + snum; + var ne = document.getElementById(nid); + if (!ne) { + ne = document.getElementById('slide0'); + snum = 0; + } + if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} + if (incrementals[snum].length > 0 && incpos == 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + if (hasClass(incrementals[snum][i], 'current')) + incpos = i + 1; + else + addClass(incrementals[snum][i], 'incremental'); + } + } + if (incrementals[snum].length > 0 && incpos > 0) + addClass(incrementals[snum][incpos - 1], 'current'); + if (isOp) { //hallvord + location.hash = nid; + } else { + ce.style.visibility = 'hidden'; + ne.style.visibility = 'visible'; + } // /hallvord + jl.selectedIndex = snum; + currentSlide(); + loadNote(); + permaLink(); + number = undef; +} + +function goTo(target) { + if (target >= smax || target == snum) return; + go(target - snum); +} + +function subgo(step) { + if (step > 0) { + removeClass(incrementals[snum][incpos - 1],'current'); + removeClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos],'current'); + incpos++; + } else { + incpos--; + removeClass(incrementals[snum][incpos],'current'); + addClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos - 1],'current'); + } + loadNote(); +} + +function toggle() { + var slideColl = GetElementsWithClassName('*','slide'); + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + if (!slides.disabled) { + slides.disabled = true; + outline.disabled = false; + s5mode = false; + fontSize('1em'); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'visible'; + } + } else { + slides.disabled = false; + outline.disabled = true; + s5mode = true; + fontScale(); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'hidden'; + } + slideColl[snum].style.visibility = 'visible'; + } +} + +function showHide(action) { + var obj = GetElementsWithClassName('*','hideme')[0]; + switch (action) { + case 's': obj.style.visibility = 'visible'; break; + case 'h': obj.style.visibility = 'hidden'; break; + case 'k': + if (obj.style.visibility != 'visible') { + obj.style.visibility = 'visible'; + } else { + obj.style.visibility = 'hidden'; + } + break; + } +} + +// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) +function keys(key) { + if (!key) { + key = event; + key.which = key.keyCode; + } + if (key.which == 84) { + toggle(); + return; + } + if (s5mode) { + switch (key.which) { + case 10: // return + case 13: // enter + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + if(number != undef) { + goTo(number); + break; + } + case 32: // spacebar + case 34: // page down + case 39: // rightkey + case 40: // downkey + if(number != undef) { + go(number); + } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + break; + case 33: // page up + case 37: // leftkey + case 38: // upkey + if(number != undef) { + go(-1 * number); + } else if (!incrementals[snum] || incpos <= 0) { + go(-1); + } else { + subgo(-1); + } + break; + case 36: // home + goTo(0); + break; + case 35: // end + goTo(smax-1); + break; + case 67: // c + showHide('k'); + break; + case 78: // n + createNotesWindow(); + break; + } + if (key.which < 48 || key.which > 57) { + number = undef; + } else { + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + number = (((number != undef) ? number : 0) * 10) + (key.which - 48); + } + } + return false; +} + +function clicker(e) { + number = undef; + var target; + if (window.event) { + target = window.event.srcElement; + e = window.event; + } else target = e.target; + if (target.href != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; + if (!e.which || e.which == 1) { + if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + } +} + +function findSlide(hash) { + var target = null; + var slides = GetElementsWithClassName('*','slide'); + for (var i = 0; i < slides.length; i++) { + var targetSlide = slides[i]; + if ( (targetSlide.name && targetSlide.name == hash) + || (targetSlide.id && targetSlide.id == hash) ) { + target = targetSlide; + break; + } + } + while(target != null && target.nodeName != 'BODY') { + if (hasClass(target, 'slide')) { + return parseInt(target.id.slice(5)); + } + target = target.parentNode; + } + return null; +} + +function slideJump() { + if (window.location.hash == null) return; + var sregex = /^#slide(\d+)$/; + var matches = sregex.exec(window.location.hash); + var dest = null; + if (matches != null) { + dest = parseInt(matches[1]); + } else { + dest = findSlide(window.location.hash.slice(1)); + } + if (dest != null) + go(dest - snum); +} + +function fixLinks() { + var thisUri = window.location.href; + thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); + var aelements = document.getElementsByTagName('A'); + for (var i = 0; i < aelements.length; i++) { + var a = aelements[i].href; + var slideID = a.match('\#slide[0-9]{1,2}'); + if ((slideID) && (slideID[0].slice(0,1) == '#')) { + var dest = findSlide(slideID[0].slice(1)); + if (dest != null) { + if (aelements[i].addEventListener) { + aelements[i].addEventListener("click", new Function("e", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "if (e.preventDefault) e.preventDefault();"), true); + } else if (aelements[i].attachEvent) { + aelements[i].attachEvent("onclick", new Function("", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "event.returnValue = false;")); + } + } + } + } +} + +function externalLinks() { + if (!document.getElementsByTagName) return; + var anchors = document.getElementsByTagName('a'); + for (var i=0; i' + + '