package Spork::Template::TKSlide;
use strict;
use warnings;
use Spork::Template::TT2 '-base';
our $VERSION = '0.01';
1;
__DATA__
__start.html__
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[% slide_heading %]</title>
<meta name="generator" content="[% spork_version %]">
<link rel="stylesheet" type="text/css" href="[% style_file %]">
<link rel="alternate" type="text/css" href="slide-zen.css">
<link rel="alternate" type="text/css" href="slide-tkirby.css">
</head>
<body>
[% allpage_content %]
<script type="text/javascript" src="controls.js"></script>
</body>
</html>
__slide.html__
<!-- BEGIN slide.html -->
<div class="page" id="[% slide_name %]">
<div class="headline">[% slide_heading %]</div>
<div class="content">
[% image_html %]
[% slide_content %]
</div>
</div>
<!-- END slide.html -->
__controls.js__
/* TKSLIDE(javascript part), official site: http://www.csie.ntu.edu.tw/~b88039/slide/ */
/* version: 2004.05.03 */
var pcount = 0; /* page count */
var pages = null; /* page list */
var cpage = 0; /* current page */
var opage = 0; /* previous page */
var pagedisplay = null; /* the panel show current page */
var cpanel = null;
var gopage = "";
var spagetimer = null;
var hidetimer = null;
var showtimer = null;
var hcomp = null;
var hcompp = 0;
var scomp = null;
var scompp = 0;
var falldowner = null;
var index = null;
var indexshow = 0;
var indexshower = 0;
var escflag = 0;
var cstyle = -1;
var stylelinks = null;
/* ========== Default plugin functions ========== */
function fade_in(position)
{
pages[cpage].style.filter = "alpha(opacity="+position+")";
position+=10;
if(position<100) spagetimer = setTimeout("fade_in("+position+");", 10);
else pages[cpage].style.filter= "";
}
function slip_in(position)
{
pages[cpage].style.left = position+"%";
position+=10;
if(position<10) spagetimer = setTimeout("slip_in("+position+");", 10);
else pages[cpage].style.left = "";
}
function fall_down(v, a)
{
v = v+a;
a = a+0.8;
if(v<0) {
hcompp.style.top = v+"px";
setTimeout("fall_down("+v+", "+a+");", 10);
} else {
hcompp.style.top = "";
hcompp = hcompp.nextHide;
falldowner = 0;
}
}
function _showIndex(v)
{
v = v+(!indexshow?25:-25);
index.style.top = v+"px";
if((!indexshow?v<0:v>-404)) setTimeout("_showIndex("+v+");", 10);
else { indexshower = 0;
index.style.top = (indexshow?"-404px":"0px");
index.childNodes[0].style.visibility = (indexshow?"hidden":"visible");
indexshow = 1 - indexshow;
}
}
function showIndex()
{
if(indexshower) return;
indexshower = 1;
if(!indexshow)
index.childNodes[0].style.visibility = (indexshow?"hidden":"visible");
setTimeout("_showIndex("+(indexshow?0:-404)+");", 10);
}
function func_parse(str)
{
var i;
var k;
var s = 0;
var e = 0;
var sf = 0;
var c;
var d;
var argc = -1;
var argv = null;
for(i=0, c=0, d=0, e=0, k=0;i<str.length;i++) {
if(str.charAt(i)!=' ' && sf==0) { sf=1; s=i; }
if(str.charAt(i)=='\'') c = 1-c;
if(str.charAt(i)=='"') d = 1-d;
if(str.charAt(i)==')' && e==1 && c==0 && d==0) e = 0;
if(str.charAt(i)!=' ' && e==1) { argc++; e=-1;}
if(str.charAt(i)=='(' && e==0) e = 1;
if(str.charAt(i)==',' && c==0 && d==0) argc++;
if(str.charAt(i)==';' && c==0 && d==0) { k=1, e=i; break; }
} if(k==0) e= str.length;
argv = new Array(argc+3);
argv[0] = str.substring(s, str.indexOf("("));
for(k=1, c=0, d=0, sf=0, i=str.indexOf("(")+1;i<e;i++) {
if(str.charAt(i)!=' ' && sf==0) {sf=1, s=i;}
if(str.charAt(i)=='\'') c = 1-c;
if(str.charAt(i)=='"') d = 1-d;
if((str.charAt(i)==',' || str.charAt(i)==' ' || str.charAt(i)==')')
&& c==0 && d==0) {
var narg = str.substring(s, i);
if(s!=i) {
sf = 0;
if(narg.charAt(0)=='"' || narg.charAt(0)=='\'')
narg=narg.substring(1, narg.length-1);
argv[k++] = narg;
}
} argv[k] = e;
} return argv;
}
function get_allhide(node, tpage)
{
var i;
var argv;
var str = node.title;
if(str) {
while(str) {
argv = func_parse(str);
str = str.substring(argv[argv.length-1]+1);
if(argv[0]=="hide") {
node.showid = (argv.length>=3?parseInt(argv[1]):0);
node.hideid = (argv.length>=4?parseInt(argv[2]):-1);
node.display = (argv.length>=5?parseInt(argv[3]):0);
if(node.showid<-1) node.showid=-1;
if(node.hideid<node.showid) node.hideid=-1;
if(node.showid) {
var ptr = hcomp[tpage];
var pptr = null;
while(ptr) {
if(ptr.showid>node.showid) {
if(!pptr) {
node.nextHide = hcomp[tpage];
hcomp[tpage] = node;
break;
} else {
node.nextHide = pptr.nextHide;
pptr.nextHide = node;
break;
}
} else if(ptr.showid==node.showid) {
node.simuHide = ptr.simuHide;
ptr.simuHide = node;
break;
} pptr = ptr;
ptr = ptr.nextHide;
}
if(!ptr) {
if(pptr) {node.nextHide = pptr.nextHide; pptr.nextHide = node; }
else { node.nextHide = hcomp[tpage]; hcomp[tpage] = node; }
}
} else {
node.nextHide = hcomp[tpage];
hcomp[tpage] = node;
}
}
delete argv;
} return;
} else for(i=node.childNodes.length-1;i>=0;i--) {
get_allhide(node.childNodes[i], tpage);
}
}
function showHider()
{
var node;
var ptr = hcompp;
while(ptr) {
//ptr.style.position = "relative";
//ptr.style.top = "-300px";
if(ptr.display) {
if(ptr.nodeName=="img" || ptr.nodeName=="IMG") ptr.style.display = "inline";
else ptr.style.display = "block";
} else ptr.style.visibility = "visible";
ptr = ptr.simuHide;
} node = hcomp[cpage];
while(node) {
ptr = node;
while(ptr) {
if(ptr.hideid<=hcompp.showid && ptr.hideid>=0) {
if(ptr.display) ptr.style.display = "none";
else ptr.style.visibility = "hidden";
} else break;
ptr = ptr.simuHide;
} node = node.nextHide;
} hcompp = hcompp.nextHide;
//falldowner = 1;
//setTimeout("fall_down(-300, 1);", 10);
}
function hideHider(tpage)
{
var ptr = null;
var node = hcomp[tpage];
var sstr;
while(node) {
ptr = node;
while(ptr) { if(ptr.showid>=0)
sstr = (ptr.display?"none":"hidden");
else sstr = (ptr.display?"block":"visible");
if(ptr.showid<0 && (ptr.nodeName=="img" || ptr.nodeName=="IMG") && ptr.display)
sstr = "inline";
if(ptr.display) ptr.style.display = sstr; else ptr.style.visibility = sstr;
ptr = ptr.simuHide;
}
node = node.nextHide;
} hcompp = hcomp[tpage];
if(hcompp) while(hcompp.showid<0) {
hcompp = hcompp.nextHide;
if(!hcompp) break;
}
}
function keyparser(e)
{
var eve = (e?e:event);
var code = (eve.charCode?eve.charCode:eve.keyCode);
//alert(code);
if(code>47 && code<58) { // number
gopage = gopage+(code-48);
pagedisplay.childNodes[0].nodeValue = "p. "+gopage+"_";
}
if(code==32) {
if(gopage!="") {
var gpage = parseInt(gopage);
gopage = "";
if(isNaN(gpage)) gpage = cpage;
if(gpage<1) gpage = 1;
if(gpage>pcount) gpage = pcount;
change_page(gpage-1);
} else if(hcompp) { if(!falldowner) showHider(); }
else change_page(cpage+1);
}
if(code==27) {
cpanel.style.display = (escflag?"block":"none");
if(index) index.style.display = (escflag?"block":"none");
escflag = 1-escflag;
}
if(code==73) showIndex();
if(code==40 || code==39) change_page(cpage+1);
if(code==37 || code==38) change_page(cpage-1);
if(code==192) change_page(opage);
if(code==34) change_page(cpage+5);
if(code==33) change_page(cpage-5);
if(code==36) change_page(0);
if(code==35) change_page(pcount-1);
}
/* ========== Style Manipulating functions ========== */
function setNextStyle() { change_style(cstyle+1); }
function change_style(style_number)
{
if(stylelinks.length<=0) return;
if(style_number>stylelinks || style_number<0) return;
if(cstyle<stylelinks.length) {
stylelinks[cstyle].disabled = true;
stylelinks[cstyle].rel = "alternate";
}
cstyle = style_number;
if(cstyle>=stylelinks.length) cstyle = 0;
if(cstyle<stylelinks.length) {
stylelinks[cstyle].disabled = false;
stylelinks[cstyle].rel = "stylesheet";
}
setCookie("capge", cpage);
setCookie("cstyle", cstyle);
}
/* ========== Page manipulating functions ========== */
function show_page(tpage, visible)
{
if(cpage==tpage && visible==0) return;
if(visible) {
//pages[cpage].style.filter = "filter(opacity=0)";
//if(spagetimer) clearTimeout(spagetimer);
//spagetimer = setTimeout("slip_in(-100)", 10);
//spagetimer = setTimeout("fade_in(0)", 10);
//pages[cpage].style.left = "-100%";
}
pages[tpage].style.display = (visible?"block":"none");
pages[tpage].style.zIndex = (visible?visible:0);
if(visible) {
pagedisplay.childNodes[0].nodeValue = "p. "+(tpage+1)+(tpage==pcount-1?"e":"");
hideHider(tpage);
} else hidetimer = null;
}
function change_page(page_number)
{
if(page_number<0 || page_number>=pcount || cpage==page_number) {
pagedisplay.childNodes[0].nodeValue = "p. "+(cpage+1)+(cpage==pcount-1?"e":"");
return;
}
show_page(page_number, 1);
opage = cpage;
cpage = page_number;
gopage = "";
hidetimer = setTimeout("show_page("+opage+", 0);", 10); // prevet page blink //
setCookie("cpage", cpage);
setCookie("cstyle", cstyle);
}
/* ========= Cookie functions =========== */
function setCookie(CookieName, value)
{
document.cookie = CookieName+"="+value;
}
function getCookie(CookieName, defval)
{
var retval = defval;
if(document.cookie) {
var i = 0;
var cookie = document.cookie;
var acookie = cookie.split(";");
var bcookie = null;
var limitloop = 0;
for(i=0;i<acookie.length;i++) {
bcookie = acookie[i].split("=");
if(bcookie[0].indexOf(CookieName)>=0) retval = parseInt(bcookie[1]);
}} eval(CookieName+"=(isNaN(retval)?defval:retval);");
return (isNaN(retval)?defval:retval);
}
/* ========== Initializer functions ========== */
function initialIndex()
{
var i;
var j;
var length;
var anchor;
var div
var title;
var clone;
var text;
if(!(index=document.getElementById("index"))) return;
anchor = document.createElement("a");
anchor.href = "#";
length = index.childNodes.length;
for(i=0, j=0;i<length;i++)
if(index.childNodes[i].nodeName=="div" || index.childNodes[i].nodeName=="DIV") {
clone = anchor.cloneNode(0);
text = index.childNodes[i].childNodes[0];
index.childNodes[i].removeChild(text);
clone.appendChild(text);
clone.onclick = new Function("change_page("+j+");");
index.childNodes[i].appendChild(clone);
j++;
}
anchor = document.createElement("a");
anchor.href = "#";
anchor.onclick = showIndex;
anchor.appendChild(document.createTextNode("- Index -"));
title = document.createElement("div");
title.appendChild(anchor);
title.className = "indexTitle";
div = document.createElement("div");
div.className = "indexPanel";
div.style.top = "-404px";
index.parentNode.removeChild(index);
div.appendChild(index);
div.appendChild(title);
document.body.appendChild(div);
index = div;
}
function initialControlPanel()
{
var i, j;
var links = document.getElementsByTagName("link");
cpanel = document.getElementById("ctrl_panel");
for(i=0, j=0;i<links.length;i++) if(links[i].rel=="alternate") j++;
stylelinks = new Array(j);
for(i=0, j=0;i<links.length;i++) if(links[i].rel=="alternate")
stylelinks[j++] = links[i];
if(cstyle<0) cstyle = stylelinks.length;
if(!cpanel) {
var anchor;
cpanel = document.createElement("div");
cpanel.id = "ctrl_panel";
cpanel.className = "cpanel";
cpanel.style.zIndex = 2;
anchor = document.createElement("a");
anchor.href = "#";
anchor.onclick = setNextStyle;
anchor.appendChild(document.createTextNode("S"));
cpanel.appendChild(anchor);
cpanel.appendChild(document.createTextNode(" / "));
anchor = document.createElement("a");
anchor.href = "#";
anchor.onclick = new Function("change_page(0);");
anchor.appendChild(document.createTextNode("<<"));
cpanel.appendChild(anchor);
cpanel.appendChild(document.createTextNode(" / "));
anchor = document.createElement("a");
anchor.href = "#";
anchor.onclick = new Function("change_page(cpage-1);");
anchor.appendChild(document.createTextNode("<"));
cpanel.appendChild(anchor);
cpanel.appendChild(document.createTextNode(" / "));
anchor = document.createElement("a");
anchor.href = "#";
anchor.onclick = new Function("change_page(cpage+1);");
anchor.appendChild(document.createTextNode(">"));
cpanel.appendChild(anchor);
cpanel.appendChild(document.createTextNode(" / "));
anchor = document.createElement("a");
anchor.href = "#";
anchor.onclick = new Function("change_page(pcount-1);");
anchor.appendChild(document.createTextNode(">>"));
cpanel.appendChild(anchor);
cpanel.appendChild(document.createTextNode(" | "));
anchor = document.createElement("span");
anchor.className = "pagedisplay";
anchor.id = "pagedisplay";
pagedisplay = anchor;
anchor.appendChild(document.createTextNode("p. "+(cpage+1)+(cpage==pcount-1?"e":"")));
cpanel.appendChild(anchor);
anchor = document.createElement("span");
anchor.className = "hider";
anchor.id = "hider";
anchor.appendChild(document.createTextNode("<"));
cpanel.appendChild(anchor);
document.body.appendChild(cpanel);
}
}
function initialHider()
{
var i;
for(i=0;i<pcount;i++) hcomp[i] = null, scomp[i] = null;
for(i=0;i<pcount;i++) get_allhide(pages[i], i);
}
function initial()
{
var i = 0;
var j = 0;
var body = document.body;
/* Allocate and initial variables */
document.onkeydown = keyparser;
pcount = body.childNodes.length;
pages = new Array(pcount);
hcomp = new Array(pcount);
scomp = new Array(pcount);
/* Setup Pages */
for(i=0, j=0;i<pcount;i++) {
if((body.childNodes[i].nodeName=="DIV" ||
body.childNodes[i].nodeName=="div") &&
body.childNodes[i].className=="page") {
pages[j++] = body.childNodes[i];
}} pcount = j;
/* Retrive cookie */
getCookie("cpage", 0);
getCookie("cstyle", -1);
/* Setup slide controller */
initialControlPanel();
initialHider();
setTimeout("initialIndex();", 10);
change_style(cstyle);
show_page(cpage, 1);
}
initial();
__slide-zen.css__
/* TKSLIDE(css part), official site: http://www.csie.ntu.edu.tw/~b88039/slide/ */
/* this stylesheet is adapted from css zen, provided by gugod (gugod@gugod.org) */
/* version: 2004.05.11 */
body
{overflow:hidden;
margin:0px;
padding:0px;
font-size:16px;
font-family:Tahoma, Arial;
background:#fff url(http://meerkat.elixus.org//images/zen/blossoms.jpg) no-repeat bottom right;
}
a {text-decoration:none;}
a:visited {color:#669;}
img {border:none;}
.headline
{
color: #7D775C;
text-decoration:underline;
}
h1 {color: #707349;}
h2 {color: #707349;}
h3 {color: #707349;}
h4 {color: #707349;}
h5 {color: #707349;}
h6 {color: #707349;}
.page
{ position:absolute;z-index:0;overflow:hidden;
bottom:0px;right:0px;top:0px;left:0px;
border:none;
padding-left:11%;
margin:0px;
width:74%;
height:98%;
display:none;
background:#fff url(http://meerkat.elixus.org/images/zen/zen-bg.jpg) no-repeat top left;
}
.pagedisplay
{border:1px inset #999;padding:1px;padding-left:10px;padding-right:10px;
color:#eff;background:#afafaf;font-size:12px;
}
.hider
{border:1px outset #999;display:none;
}
.headline
{font-family:Arial;font-size:32px;text-align:center;padding:3px;padding-top:20px;}
.subtitle
{font-family:Arial;font-size:12px;text-align:center;padding:3px;}
.author
{position:absolute;right:10%;bottom:2%;}
.section
{}
.content
{margin:10px;}
.comment
{position:absolute;left:0px;width:80%;bottom:12px;font-size:12px;border-top:1px solid #000;
padding:7px;}
.list
{}
.list .caption
{font-size:18px;font-weight:600;}
.list .content
{margin:0px;padding:0px;}
.list div ul
{margin-left:15px;margin-top:5px;list-item:list-style:disc inside;}
.cpanel
{
position:absolute;z-index:1;color:#9c9c9c;
background:#eee;
padding: 5px;
border:1px outset #bbb;
right: 0%;
top: 0%;
font-size: 12px;
font-family: courier;
line-height:12px;
height:12px;
}
.indexPanel
{
position:absolute;z-index:10;left:0px;top:-400px;font-size:12px;font-family:courier;
border:1px outset #eee;background:#fff;border-top:0px solid #eee;width:200px;
padding-bottom:2px;
}
.indexTitle
{
background:#eee;text-align:center;padding:0px;width:200px;
}
.index
{
overflow:scroll;width:200px;height:400px;visibility:hidden;
color:#274;background:#fff;white-space:nowrap;font-size:12px;
padding-top:2px;padding-bottom:2px;padding-left:0px;padding-right:0px;
border:2px inset #eee;border-top:0px solid #eee;
}
.indexitem
{
overflow:hidden;white-space:nowrap;width:1000px;
border-bottom:1px solid #eee;
margin-bottom:2px;
}
__slide.css__
/* TKSLIDE(css part), official site: http://www.csie.ntu.edu.tw/~b88039/slide/ */
/* version: 2004.05.03 */
body
{font-size:16px;font-family:Lucida console;
background:#000;}
a
{text-decoration:none;}
a:visited
{color:#669;}
.indexPanel
{
border:2px outset #eee;background:#fff;border-top:0px solid #eee;
}
.indexTitle
{
background:#ddd;text-align:center;padding:2px;
}
.index
{
color:#274;background:#fff;
padding-top:2px;padding-bottom:2px;padding-left:5px;padding-right:5px;
border:2px inset #eee;border-top:0px solid #eee;
}
.indexitem
{
overflow:hidden;
border-bottom:1px solid #eee;
margin-bottom:2px;
}
.page
{
border:2px outset #aaa;
background:#eee url(hill.jpg) no-repeat left bottom;padding:0px;margin:0px;
}
.pagedisplay
{border:1px inset #999;padding:1px;padding-left:10px;padding-right:10px;
color:#000;background:#bfbfbf;
}
.hider
{border:1px outset #999;
}
.headline
{font-family:Arial;padding:3px;padding-top:20px;}
.subtitle
{font-family:Arial;padding:3px;}
.author
{}
.section
{}
.content
{}
.comment
{position:absolute;left:0px;width:80%;bottom:12px;font-size:12px;border-top:1px solid #000;
padding:7px;}
.list
{}
.list .caption
{}
.list .content
{}
.list div ul
{}
.cpanel
{
position:absolute;z-index:1;color:#9c9c9c;
background:#bbb;padding-top:2px;padding-bottom:2px;padding-left:5px;padding-right:5px;
border:2px outset #bbb;
}
__slide-tkirby.css__
/* TKSLIDE(css part), official site: http://www.csie.ntu.edu.tw/~b88039/slide/ */
/* version: 2004.05.03 */
body
{font-size:16px;font-family:Lucida console;
background:#000;}
a
{text-decoration:none;}
a:visited
{color:#669;}
.indexPanel
{
border:2px outset #eee;background:#fff;border-top:0px solid #eee;
}
.indexTitle
{
background:#ddd;text-align:center;padding:2px;
}
.index
{
color:#274;background:#fff;
padding-top:2px;padding-bottom:2px;padding-left:5px;padding-right:5px;
border:2px inset #eee;border-top:0px solid #eee;
}
.indexitem
{
overflow:hidden;
border-bottom:1px solid #eee;
margin-bottom:2px;
}
.page
{
border:2px outset #aaa;
background:#eee url(bgrnd.gif);padding:0px;margin:0px;
}
.pagedisplay
{border:1px inset #999;padding:1px;padding-left:10px;padding-right:10px;
color:#000;background:#bfbfbf;
}
.hider
{border:1px outset #999;
}
.headline
{font-family:Arial;padding:3px;padding-top:20px;}
.subtitle
{font-family:Arial;padding:3px;}
.author
{}
.section
{}
.content
{}
.comment
{position:absolute;left:0px;width:80%;bottom:12px;font-size:12px;border-top:1px solid #000;
padding:7px;}
.list
{}
.list .caption
{}
.list .content
{}
.list div ul
{}
.cpanel
{
position:absolute;z-index:1;color:#9c9c9c;
background:#bbb;padding-top:2px;padding-bottom:2px;padding-left:5px;padding-right:5px;
border:2px outset #bbb;
}