package Spork::S5Theme; use Spork::Plugin -Base; use mixin 'Spoon::Installer'; const class_id => 'theme'; __DATA__ =head1 NAME Spork::S5ThemeDefault - Default Theme for Spork::S5 =head1 AUTHOR Kang-min Liu =head1 COPYRIGHT Copyright (c) 2005. Kang-min Liu. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html =cut __template/s5/s5.html__ [% presentation_topic %] [% FOR css_file = hub.css.files -%] [% END -%]

[% presentation_title %]

[% presentation_place %]

[% presentation_date %]

[% FOREACH s = slides %] [% s %] [% END %] __template/s5/slide.html__
[% image_html %] [% slide_content %] [%- UNLESS last -%] continued... [% END %]
__ui/opera.css__ /* DO NOT CHANGE THESE unless you really want to break Opera Show */ div.slide { visibility: visible !important; position: static !important; page-break-before: always; } #slide0 {page-break-before: avoid;} __ui/pretty.css__ /* 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(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;} :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, pre {margin: 0; line-height: 1em;} 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: 90%;} pre code {display: block;} ul {margin-left: 5%; margin-right: 7%; list-style: disc;} li {margin-top: 0.75em; margin-right: 0;} ul ul {line-height: 1;} ul ul li {margin: .2em; font-size: 85%; list-style: square;} img.leader {display: block; margin: 0 auto;} div#header, div#footer {background: #005; color: #AAB; font-family: Verdana, Helvetica, sans-serif;} div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat; line-height: 1px;} div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} #footer h1, #footer h2 {display: block; padding: 0 1em;} #footer h2 {font-style: italic;} div.long {font-size: 0.75em;} .slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1; margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize; color: #DDE; background: #005;} .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: #005; border: none; color: #779; 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: #449;} #slide0 {padding-top: 3.5em; font-size: 90%;} #slide0 h1 {position: static; margin: 1em 0 1.33em; padding: 0; font: bold 2em Helvetica, sans-serif; white-space: normal; color: #000; background: transparent;} #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;} __ui/framing.css__ /* The following styles size, place, and layer the slide components. Edit these 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: 3em; z-index: 1;} div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;} div.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2;} div#controls {left: 50%; top: 0; width: 50%; height: 100%; z-index: 1;} #footer>div#controls {bottom: 0; top: auto; height: auto;} div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; margin: 0;} #currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;} html>body #currentSlide {position: fixed;} /* div#header {background: #FCC;} div#footer {background: #CCF;} div#controls {background: #BBD;} div#currentSlide {background: #FFC;} */ __ui/print.css__ /* The next rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ div.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;} #currentSlide {display: none;} __ui/s5-core.css__ /* Do not edit or override these styles! The system will likely break if you do. */ div#header, div#footer, div.slide {position: absolute;} html>body div#header, html>body div#footer, html>body div.slide {position: fixed;} div.slide { visibility: hidden;} #slide0 {visibility: visible;} div#controls {position: absolute;} #footer>div#controls {position: fixed;} .handout {display: none;} __ui/slides.css__ @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 */ tt { font-family: courier; font-size: smaller; whitespace: pre; } __ui/slides.js__ // S5 slides.js -- released under CC by-sa 2.0 license // // Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information // about all the wonderful and talented contributors to this code! var snum = 0; var smax = 1; var undef; var slcss = 1; var isIE = navigator.appName == 'Microsoft Internet Explorer' ? 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; var slideCSS = document.getElementById('slideProj').href; function isClass(object, className) { return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); } function GetElementsWithClassName(elementName,className) { var allElements = document.getElementsByTagName(elementName); var elemColl = new Array(); for (i = 0; i< allElements.length; i++) { if (isClass(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 ( 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('div','slide'); var list = document.getElementById('jumplist'); smax = slideColl.length; for (n = 0; n < smax; n++) { var obj = slideColl[n]; var did = 'slide' + n.toString(); obj.setAttribute('id',did); if(isOp) continue; 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 (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>'; if (snum == 0) { cs.style.visibility = 'hidden'; } else { cs.style.visibility = 'visible'; } } function go(inc) { if (document.getElementById("slideProj").disabled) return; var cid = 'slide' + snum; if (inc != 'j') { snum += inc; lmax = smax - 1; if (snum > lmax) snum = 0; if (snum < 0) snum = lmax; } else { snum = parseInt(document.getElementById('jumplist').value); } var nid = 'slide' + snum; var ne = document.getElementById(nid); if (!ne) { ne = document.getElementById('slide0'); snum = 0; } document.getElementById(cid).style.visibility = 'hidden'; ne.style.visibility = 'visible'; document.getElementById('jumplist').selectedIndex = snum; currentSlide(); } function toggle() { var slideColl = GetElementsWithClassName('div','slide'); var obj = document.getElementById('slideProj'); if (!obj.disabled) { obj.disabled = true; for (n = 0; n < smax; n++) { var slide = slideColl[n]; slide.style.visibility = 'visible'; } } else { obj.disabled = false; for (n = 0; n < smax; n++) { var slide = slideColl[n]; slide.style.visibility = 'hidden'; } slideColl[snum].style.visibility = 'visible'; } } function showHide(action) { var obj = document.getElementById('jumplist'); 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; } 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; case 32: // spacebar case 34: // page down case 39: // rightkey case 40: // downkey go(1); break; case 33: // page up case 37: // leftkey case 38: // upkey go(-1); break; case 84: // t toggle(); break; case 67: // c showHide('k'); break; } } function clicker(e) { var target; if (window.event) { target = window.event.srcElement; e = window.event; } else target = e.target; if (target.href != null || isParentOrSelf(target, 'controls')) return true; if (!e.which || e.which == 1) go(1); } 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 { var target = window.location.hash.slice(1); var targetElement = null; var aelements = document.getElementsByTagName("a"); for (i = 0; i < aelements.length; i++) { var aelement = aelements[i]; if ( (aelement.name && aelement.name == target) || (aelement.id && aelement.id == target) ) { targetElement = aelement; break; } } while(targetElement != null && targetElement.nodeName != "body") { if (targetElement.className == "slide") break; targetElement = targetElement.parentNode; } if (targetElement != null && targetElement.className == "slide") { dest = parseInt(targetElement.id.slice(1)); } } if (dest != null) go(dest - snum); } function createControls() { controlsDiv = document.getElementById("controls"); if (!controlsDiv) return; controlsDiv.innerHTML = '
' + '
' + 'Ø<\/a>' + '