mattmatt-showoff 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README.rdoc +280 -0
- data/Rakefile +15 -0
- data/bin/showoff +115 -0
- data/lib/princely.rb +84 -0
- data/lib/showoff.rb +346 -0
- data/lib/showoff_utils.rb +259 -0
- data/public/css/fg.menu.css +114 -0
- data/public/css/onepage.css +44 -0
- data/public/css/pdf.css +12 -0
- data/public/css/reset.css +53 -0
- data/public/css/sh_style.css +66 -0
- data/public/css/showoff.css +258 -0
- data/public/css/spinner_bar.gif +0 -0
- data/public/css/theme/images/ui-bg_diagonals-small_100_f0efea_40x40.png +0 -0
- data/public/css/theme/images/ui-bg_flat_35_f0f0f0_40x100.png +0 -0
- data/public/css/theme/images/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
- data/public/css/theme/images/ui-bg_glow-ball_25_2e2e28_600x600.png +0 -0
- data/public/css/theme/images/ui-bg_highlight-soft_100_f0efea_1x100.png +0 -0
- data/public/css/theme/images/ui-bg_highlight-soft_25_327E04_1x100.png +0 -0
- data/public/css/theme/images/ui-bg_highlight-soft_25_5A9D1A_1x100.png +0 -0
- data/public/css/theme/images/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
- data/public/css/theme/images/ui-bg_inset-soft_22_3b3b35_1x100.png +0 -0
- data/public/css/theme/images/ui-icons_808080_256x240.png +0 -0
- data/public/css/theme/images/ui-icons_8DC262_256x240.png +0 -0
- data/public/css/theme/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/css/theme/images/ui-icons_e7e6e4_256x240.png +0 -0
- data/public/css/theme/images/ui-icons_eeeeee_256x240.png +0 -0
- data/public/css/theme/images/ui-icons_ffffff_256x240.png +0 -0
- data/public/css/theme/ui.accordion.css +9 -0
- data/public/css/theme/ui.all.css +2 -0
- data/public/css/theme/ui.base.css +9 -0
- data/public/css/theme/ui.core.css +37 -0
- data/public/css/theme/ui.datepicker.css +62 -0
- data/public/css/theme/ui.dialog.css +13 -0
- data/public/css/theme/ui.progressbar.css +4 -0
- data/public/css/theme/ui.resizable.css +13 -0
- data/public/css/theme/ui.slider.css +17 -0
- data/public/css/theme/ui.tabs.css +9 -0
- data/public/css/theme/ui.theme.css +245 -0
- data/public/favicon.ico +0 -0
- data/public/js/fg.menu.js +645 -0
- data/public/js/jTypeWriter.js +26 -0
- data/public/js/jquery-1.4.min.js +151 -0
- data/public/js/jquery-print.js +109 -0
- data/public/js/jquery.batchImageLoad.js +56 -0
- data/public/js/jquery.cookie.js +96 -0
- data/public/js/jquery.cycle.all.js +1284 -0
- data/public/js/jquery.doubletap-0.1.js +105 -0
- data/public/js/jquery.uuid.js +24 -0
- data/public/js/jquery.ws-0.3pre.js +201 -0
- data/public/js/onepage.js +5 -0
- data/public/js/sh_lang/sh_bison.min.js +1 -0
- data/public/js/sh_lang/sh_c.min.js +1 -0
- data/public/js/sh_lang/sh_caml.min.js +1 -0
- data/public/js/sh_lang/sh_changelog.min.js +1 -0
- data/public/js/sh_lang/sh_cpp.min.js +1 -0
- data/public/js/sh_lang/sh_csharp.min.js +1 -0
- data/public/js/sh_lang/sh_css.min.js +1 -0
- data/public/js/sh_lang/sh_desktop.min.js +1 -0
- data/public/js/sh_lang/sh_diff.min.js +1 -0
- data/public/js/sh_lang/sh_flex.min.js +1 -0
- data/public/js/sh_lang/sh_glsl.min.js +1 -0
- data/public/js/sh_lang/sh_haxe.min.js +1 -0
- data/public/js/sh_lang/sh_html.min.js +1 -0
- data/public/js/sh_lang/sh_java.min.js +1 -0
- data/public/js/sh_lang/sh_javascript.min.js +1 -0
- data/public/js/sh_lang/sh_javascript_dom.min.js +1 -0
- data/public/js/sh_lang/sh_latex.min.js +1 -0
- data/public/js/sh_lang/sh_ldap.min.js +1 -0
- data/public/js/sh_lang/sh_log.min.js +1 -0
- data/public/js/sh_lang/sh_lsm.min.js +1 -0
- data/public/js/sh_lang/sh_m4.min.js +1 -0
- data/public/js/sh_lang/sh_makefile.min.js +1 -0
- data/public/js/sh_lang/sh_oracle.min.js +1 -0
- data/public/js/sh_lang/sh_pascal.min.js +1 -0
- data/public/js/sh_lang/sh_perl.min.js +1 -0
- data/public/js/sh_lang/sh_php.min.js +1 -0
- data/public/js/sh_lang/sh_prolog.min.js +1 -0
- data/public/js/sh_lang/sh_properties.min.js +1 -0
- data/public/js/sh_lang/sh_python.min.js +1 -0
- data/public/js/sh_lang/sh_ruby.min.js +1 -0
- data/public/js/sh_lang/sh_scala.min.js +1 -0
- data/public/js/sh_lang/sh_sh.min.js +1 -0
- data/public/js/sh_lang/sh_slang.min.js +1 -0
- data/public/js/sh_lang/sh_sml.min.js +1 -0
- data/public/js/sh_lang/sh_spec.min.js +1 -0
- data/public/js/sh_lang/sh_sql.min.js +1 -0
- data/public/js/sh_lang/sh_tcl.min.js +1 -0
- data/public/js/sh_lang/sh_xml.min.js +1 -0
- data/public/js/sh_lang/sh_xorg.min.js +1 -0
- data/public/js/sh_main.min.js +4 -0
- data/public/js/showoff.js +441 -0
- data/views/index.erb +73 -0
- data/views/onepage.erb +36 -0
- metadata +198 -0
@@ -0,0 +1 @@
|
|
1
|
+
if(!this.sh_languages){this.sh_languages={}}sh_languages.tcl=[[[/#/g,"sh_comment",1],[/\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,"sh_number",-1],[/"/g,"sh_string",2],[/'/g,"sh_string",3],[/~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,"sh_symbol",-1],[/\{|\}/g,"sh_cbracket",-1],[/\b(?:proc|global|upvar|if|then|else|elseif|for|foreach|break|continue|while|set|eval|case|in|switch|default|exit|error|proc|return|uplevel|loop|for_array_keys|for_recursive_glob|for_file|unwind_protect|expr|catch|namespace|rename|variable|method|itcl_class|public|protected|append|binary|format|re_syntax|regexp|regsub|scan|string|subst|concat|join|lappend|lindex|list|llength|lrange|lreplace|lsearch|lset|lsort|split|expr|incr|close|eof|fblocked|fconfigure|fcopy|file|fileevent|flush|gets|open|puts|read|seek|socket|tell|load|loadTk|package|pgk::create|pgk_mkIndex|source|bgerror|history|info|interp|memory|unknown|enconding|http|msgcat|cd|clock|exec|exit|glob|pid|pwd|time|dde|registry|resource)\b/g,"sh_keyword",-1],[/\$[A-Za-z0-9_]+/g,"sh_variable",-1]],[[/$/g,null,-2]],[[/"/g,"sh_string",-2],[/\\./g,"sh_specialchar",-1]],[[/'/g,"sh_string",-2],[/\\./g,"sh_specialchar",-1]]];
|
@@ -0,0 +1 @@
|
|
1
|
+
if(!this.sh_languages){this.sh_languages={}}sh_languages.xml=[[[/<\?xml/g,"sh_preproc",1,1],[/<!DOCTYPE/g,"sh_preproc",3,1],[/<!--/g,"sh_comment",4],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)(?:\/)?>/g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,"sh_keyword",5,1],[/&(?:[A-Za-z0-9]+);/g,"sh_preproc",-1]],[[/\?>/g,"sh_preproc",-2],[/([^=" \t>]+)([ \t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",2]],[[/\\(?:\\|")/g,null,-1],[/"/g,"sh_string",-2]],[[/>/g,"sh_preproc",-2],[/([^=" \t>]+)([ \t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",2]],[[/-->/g,"sh_comment",-2],[/<!--/g,"sh_comment",4]],[[/(?:\/)?>/g,"sh_keyword",-2],[/([^=" \t>]+)([ \t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",2]]];
|
@@ -0,0 +1 @@
|
|
1
|
+
if(!this.sh_languages){this.sh_languages={}}sh_languages.xorg=[[[/#/g,"sh_comment",1],[/\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,"sh_number",-1],[/"/g,"sh_string",2],[/'/g,"sh_string",3],[/\b(?:End)?(?:Sub)*Section\b/g,"sh_keyword",-1],[/[A-Za-z0-9_]+/g,"sh_type",-1]],[[/$/g,null,-2]],[[/"/g,"sh_string",-2],[/\\./g,"sh_specialchar",-1]],[[/'/g,"sh_string",-2],[/\\./g,"sh_specialchar",-1]]];
|
@@ -0,0 +1,4 @@
|
|
1
|
+
/* Copyright (C) 2007, 2008 gnombat@users.sourceforge.net */
|
2
|
+
/* License: http://shjs.sourceforge.net/doc/gplv3.html */
|
3
|
+
|
4
|
+
if(!this.sh_languages){this.sh_languages={}}var sh_requests={};function sh_isEmailAddress(a){if(/^mailto:/.test(a)){return false}return a.indexOf("@")!==-1}function sh_setHref(b,c,d){var a=d.substring(b[c-2].pos,b[c-1].pos);if(a.length>=2&&a.charAt(0)==="<"&&a.charAt(a.length-1)===">"){a=a.substr(1,a.length-2)}if(sh_isEmailAddress(a)){a="mailto:"+a}b[c-2].node.href=a}function sh_konquerorExec(b){var a=[""];a.index=b.length;a.input=b;return a}function sh_highlightString(B,o){if(/Konqueror/.test(navigator.userAgent)){if(!o.konquered){for(var F=0;F<o.length;F++){for(var H=0;H<o[F].length;H++){var G=o[F][H][0];if(G.source==="$"){G.exec=sh_konquerorExec}}}o.konquered=true}}var N=document.createElement("a");var q=document.createElement("span");var A=[];var j=0;var n=[];var C=0;var k=null;var x=function(i,a){var p=i.length;if(p===0){return}if(!a){var Q=n.length;if(Q!==0){var r=n[Q-1];if(!r[3]){a=r[1]}}}if(k!==a){if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}}if(a){var P;if(a==="sh_url"){P=N.cloneNode(false)}else{P=q.cloneNode(false)}P.className=a;A[j++]={node:P,pos:C}}}C+=p;k=a};var t=/\r\n|\r|\n/g;t.lastIndex=0;var d=B.length;while(C<d){var v=C;var l;var w;var h=t.exec(B);if(h===null){l=d;w=d}else{l=h.index;w=t.lastIndex}var g=B.substring(v,l);var M=[];for(;;){var I=C-v;var D;var y=n.length;if(y===0){D=0}else{D=n[y-1][2]}var O=o[D];var z=O.length;var m=M[D];if(!m){m=M[D]=[]}var E=null;var u=-1;for(var K=0;K<z;K++){var f;if(K<m.length&&(m[K]===null||I<=m[K].index)){f=m[K]}else{var c=O[K][0];c.lastIndex=I;f=c.exec(g);m[K]=f}if(f!==null&&(E===null||f.index<E.index)){E=f;u=K;if(f.index===I){break}}}if(E===null){x(g.substring(I),null);break}else{if(E.index>I){x(g.substring(I,E.index),null)}var e=O[u];var J=e[1];var b;if(J instanceof Array){for(var L=0;L<J.length;L++){b=E[L+1];x(b,J[L])}}else{b=E[0];x(b,J)}switch(e[2]){case -1:break;case -2:n.pop();break;case -3:n.length=0;break;default:n.push(e);break}}}if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}k=null}C=w}return A}function sh_getClasses(d){var a=[];var b=d.className;if(b&&b.length>0){var e=b.split(" ");for(var c=0;c<e.length;c++){if(e[c].length>0){a.push(e[c])}}}return a}function sh_addClass(c,a){var d=sh_getClasses(c);for(var b=0;b<d.length;b++){if(a.toLowerCase()===d[b].toLowerCase()){return}}d.push(a);c.className=d.join(" ")}function sh_extractTagsFromNodeList(c,a){var f=c.length;for(var d=0;d<f;d++){var e=c.item(d);switch(e.nodeType){case 1:if(e.nodeName.toLowerCase()==="br"){var b;if(/MSIE/.test(navigator.userAgent)){b="\r"}else{b="\n"}a.text.push(b);a.pos++}else{a.tags.push({node:e.cloneNode(false),pos:a.pos});sh_extractTagsFromNodeList(e.childNodes,a);a.tags.push({pos:a.pos})}break;case 3:case 4:a.text.push(e.data);a.pos+=e.length;break}}}function sh_extractTags(c,b){var a={};a.text=[];a.tags=b;a.pos=0;sh_extractTagsFromNodeList(c.childNodes,a);return a.text.join("")}function sh_mergeTags(d,f){var a=d.length;if(a===0){return f}var c=f.length;if(c===0){return d}var i=[];var e=0;var b=0;while(e<a&&b<c){var h=d[e];var g=f[b];if(h.pos<=g.pos){i.push(h);e++}else{i.push(g);if(f[b+1].pos<=h.pos){b++;i.push(f[b]);b++}else{i.push({pos:h.pos});f[b]={node:g.node.cloneNode(false),pos:h.pos}}}}while(e<a){i.push(d[e]);e++}while(b<c){i.push(f[b]);b++}return i}function sh_insertTags(k,h){var g=document;var l=document.createDocumentFragment();var e=0;var d=k.length;var b=0;var j=h.length;var c=l;while(b<j||e<d){var i;var a;if(e<d){i=k[e];a=i.pos}else{a=j}if(a<=b){if(i.node){var f=i.node;c.appendChild(f);c=f}else{c=c.parentNode}e++}else{c.appendChild(g.createTextNode(h.substring(b,a)));b=a}}return l}function sh_highlightElement(d,g){sh_addClass(d,"sh_sourceCode");var c=[];var e=sh_extractTags(d,c);var f=sh_highlightString(e,g);var b=sh_mergeTags(c,f);var a=sh_insertTags(b,e);while(d.hasChildNodes()){d.removeChild(d.firstChild)}d.appendChild(a)}function sh_getXMLHttpRequest(){if(window.ActiveXObject){return new ActiveXObject("Msxml2.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}throw"No XMLHttpRequest implementation available"}function sh_load(language,element,prefix,suffix){if(language in sh_requests){sh_requests[language].push(element);return}sh_requests[language]=[element];var request=sh_getXMLHttpRequest();var url=prefix+"sh_"+language+suffix;request.open("GET",url,true);request.onreadystatechange=function(){if(request.readyState===4){try{if(!request.status||request.status===200){eval(request.responseText);var elements=sh_requests[language];for(var i=0;i<elements.length;i++){sh_highlightElement(elements[i],sh_languages[language])}}else{throw"HTTP error: status "+request.status}}finally{request=null}}};request.send(null)}function sh_highlightDocument(g,k){var b=document.getElementsByTagName("pre");for(var e=0;e<b.length;e++){var f=b.item(e);var a=sh_getClasses(f);for(var c=0;c<a.length;c++){var h=a[c].toLowerCase();if(h==="sh_sourcecode"){continue}if(h.substr(0,3)==="sh_"){var d=h.substring(3);if(d in sh_languages){sh_highlightElement(f,sh_languages[d])}else{if(typeof(g)==="string"&&typeof(k)==="string"){sh_load(d,f,g,k)}else{throw'Found <pre> element with class="'+h+'", but no such language exists'}}break}}}};
|
@@ -0,0 +1,441 @@
|
|
1
|
+
/* ShowOff JS Logic */
|
2
|
+
|
3
|
+
var ShowOff = {};
|
4
|
+
|
5
|
+
var preso_started = false
|
6
|
+
var slidenum = 0
|
7
|
+
var slideTotal = 0
|
8
|
+
var slides
|
9
|
+
var currentSlide
|
10
|
+
var totalslides = 0
|
11
|
+
var slidesLoaded = false
|
12
|
+
var incrSteps = 0
|
13
|
+
var incrElem
|
14
|
+
var incrCurr = 0
|
15
|
+
var incrCode = false
|
16
|
+
var debugMode = false
|
17
|
+
var gotoSlidenum = 0
|
18
|
+
var shiftKeyActive = false
|
19
|
+
|
20
|
+
|
21
|
+
function setupPreso(load_slides, prefix) {
|
22
|
+
if (preso_started)
|
23
|
+
{
|
24
|
+
alert("already started")
|
25
|
+
return
|
26
|
+
}
|
27
|
+
preso_started = true
|
28
|
+
|
29
|
+
|
30
|
+
loadSlides(load_slides, prefix)
|
31
|
+
|
32
|
+
doDebugStuff()
|
33
|
+
|
34
|
+
// bind event handlers
|
35
|
+
document.onkeydown = keyDown
|
36
|
+
document.onkeyup = keyUp
|
37
|
+
/* window.onresize = resized; */
|
38
|
+
/* window.onscroll = scrolled; */
|
39
|
+
/* window.onunload = unloaded; */
|
40
|
+
}
|
41
|
+
|
42
|
+
function loadSlides(load_slides, prefix) {
|
43
|
+
//load slides offscreen, wait for images and then initialize
|
44
|
+
if (load_slides) {
|
45
|
+
$("#slides").load("/slides", false, function(){
|
46
|
+
$("#slides img").batchImageLoad({
|
47
|
+
loadingCompleteCallback: initializePresentation(prefix)
|
48
|
+
})
|
49
|
+
})
|
50
|
+
} else {
|
51
|
+
$("#slides img").batchImageLoad({
|
52
|
+
loadingCompleteCallback: initializePresentation(prefix)
|
53
|
+
})
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
function initializePresentation(prefix) {
|
58
|
+
//center slides offscreen
|
59
|
+
centerSlides($('#slides > .slide'))
|
60
|
+
|
61
|
+
//copy into presentation area
|
62
|
+
$("#preso").empty()
|
63
|
+
$('#slides > .slide').appendTo($("#preso"))
|
64
|
+
|
65
|
+
//populate vars
|
66
|
+
slides = $('#preso > .slide')
|
67
|
+
slideTotal = slides.size()
|
68
|
+
|
69
|
+
//setup manual jquery cycle
|
70
|
+
$('#preso').cycle({
|
71
|
+
timeout: 0
|
72
|
+
})
|
73
|
+
|
74
|
+
setupMenu()
|
75
|
+
if (slidesLoaded) {
|
76
|
+
showSlide()
|
77
|
+
alert('slides loaded')
|
78
|
+
} else {
|
79
|
+
showFirstSlide();
|
80
|
+
slidesLoaded = true
|
81
|
+
}
|
82
|
+
setupSlideParamsCheck();
|
83
|
+
sh_highlightDocument(prefix+'/js/sh_lang/', '.min.js')
|
84
|
+
}
|
85
|
+
|
86
|
+
function centerSlides(slides) {
|
87
|
+
slides.each(function(s, slide) {
|
88
|
+
centerSlide(slide)
|
89
|
+
})
|
90
|
+
}
|
91
|
+
|
92
|
+
function centerSlide(slide) {
|
93
|
+
var slide_content = $(slide).children(".content").first()
|
94
|
+
var height = slide_content.height()
|
95
|
+
var mar_top = (0.5 * parseFloat($(slide).height())) - (0.5 * parseFloat(height))
|
96
|
+
if (mar_top < 0) {
|
97
|
+
mar_top = 0
|
98
|
+
}
|
99
|
+
slide_content.css('margin-top', mar_top)
|
100
|
+
}
|
101
|
+
|
102
|
+
function setupMenu() {
|
103
|
+
$('#navmenu').hide();
|
104
|
+
|
105
|
+
var currSlide = 0
|
106
|
+
var menu = new ListMenu()
|
107
|
+
|
108
|
+
slides.each(function(s, elem) {
|
109
|
+
content = $(elem).children(".content")
|
110
|
+
shortTxt = $(content).text().substr(0, 20)
|
111
|
+
path = $(content).attr('ref').split('/')
|
112
|
+
currSlide += 1
|
113
|
+
menu.addItem(path, shortTxt, currSlide)
|
114
|
+
})
|
115
|
+
|
116
|
+
$('#navigation').html(menu.getList())
|
117
|
+
$('#navmenu').menu({
|
118
|
+
content: $('#navigation').html(),
|
119
|
+
flyOut: true
|
120
|
+
});
|
121
|
+
}
|
122
|
+
|
123
|
+
function checkSlideParameter() {
|
124
|
+
if (slideParam = currentSlideFromParams()) {
|
125
|
+
slidenum = slideParam;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
function currentSlideFromParams() {
|
130
|
+
var result;
|
131
|
+
if (result = window.location.hash.match(/#([0-9]+)/)) {
|
132
|
+
return result[result.length - 1] - 1;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
function setupSlideParamsCheck() {
|
137
|
+
var check = function() {
|
138
|
+
var currentSlide = currentSlideFromParams();
|
139
|
+
if (slidenum != currentSlide) {
|
140
|
+
slidenum = currentSlide;
|
141
|
+
showSlide();
|
142
|
+
}
|
143
|
+
setTimeout(check, 100);
|
144
|
+
}
|
145
|
+
setTimeout(check, 100);
|
146
|
+
}
|
147
|
+
|
148
|
+
function gotoSlide(slideNum) {
|
149
|
+
slidenum = parseInt(slideNum)
|
150
|
+
if (!isNaN(slidenum)) {
|
151
|
+
showSlide()
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
function showFirstSlide() {
|
156
|
+
slidenum = 0
|
157
|
+
checkSlideParameter();
|
158
|
+
showSlide()
|
159
|
+
}
|
160
|
+
|
161
|
+
function showSlide(back_step) {
|
162
|
+
|
163
|
+
if(slidenum < 0) {
|
164
|
+
slidenum = 0
|
165
|
+
return
|
166
|
+
}
|
167
|
+
|
168
|
+
if(slidenum > (slideTotal - 1)) {
|
169
|
+
slidenum = slideTotal - 1
|
170
|
+
return
|
171
|
+
}
|
172
|
+
|
173
|
+
currentSlide = slides.eq(slidenum)
|
174
|
+
|
175
|
+
var transition = currentSlide.attr('data-transition')
|
176
|
+
var fullPage = currentSlide.find(".content").is('.full-page');
|
177
|
+
|
178
|
+
if (back_step || fullPage) {
|
179
|
+
transition = 'none'
|
180
|
+
}
|
181
|
+
|
182
|
+
$('#preso').cycle(slidenum, transition)
|
183
|
+
|
184
|
+
if (fullPage) {
|
185
|
+
$('#preso').css({'width' : '100%', 'overflow' : 'visible'});
|
186
|
+
currentSlide.css({'width' : '100%', 'text-align' : 'center', 'overflow' : 'visible'});
|
187
|
+
} else {
|
188
|
+
$('#preso').css({'width' : '1020px', 'overflow' : 'hidden'});
|
189
|
+
}
|
190
|
+
|
191
|
+
percent = getSlidePercent()
|
192
|
+
$("#slideInfo").text((slidenum + 1) + '/' + slideTotal + ' - ' + percent + '%')
|
193
|
+
|
194
|
+
if(!back_step) {
|
195
|
+
// determine if there are incremental bullets to show
|
196
|
+
// unless we are moving backward
|
197
|
+
determineIncremental()
|
198
|
+
} else {
|
199
|
+
incrCurr = 0
|
200
|
+
incrSteps = 0
|
201
|
+
}
|
202
|
+
location.hash = slidenum + 1;
|
203
|
+
$('body').addSwipeEvents().
|
204
|
+
bind('swipeleft', swipeLeft).
|
205
|
+
bind('swiperight', swipeRight)
|
206
|
+
removeResults()
|
207
|
+
|
208
|
+
return getCurrentNotes()
|
209
|
+
}
|
210
|
+
|
211
|
+
function getSlideProgress()
|
212
|
+
{
|
213
|
+
return (slidenum + 1) + '/' + slideTotal
|
214
|
+
}
|
215
|
+
|
216
|
+
function getCurrentNotes()
|
217
|
+
{
|
218
|
+
return currentSlide.find("p.notes").text()
|
219
|
+
}
|
220
|
+
|
221
|
+
function getSlidePercent()
|
222
|
+
{
|
223
|
+
return Math.ceil(((slidenum + 1) / slideTotal) * 100)
|
224
|
+
}
|
225
|
+
|
226
|
+
function determineIncremental()
|
227
|
+
{
|
228
|
+
incrCurr = 0
|
229
|
+
incrCode = false
|
230
|
+
incrElem = currentSlide.find(".incremental > ul > li")
|
231
|
+
incrSteps = incrElem.size()
|
232
|
+
if(incrSteps == 0) {
|
233
|
+
// also look for commandline
|
234
|
+
incrElem = currentSlide.find(".incremental > pre > code > code")
|
235
|
+
incrSteps = incrElem.size()
|
236
|
+
incrCode = true
|
237
|
+
}
|
238
|
+
incrElem.each(function(s, elem) {
|
239
|
+
$(elem).hide()
|
240
|
+
})
|
241
|
+
}
|
242
|
+
|
243
|
+
function prevStep()
|
244
|
+
{
|
245
|
+
slidenum--
|
246
|
+
return showSlide(true) // We show the slide fully loaded
|
247
|
+
}
|
248
|
+
|
249
|
+
function nextStep()
|
250
|
+
{
|
251
|
+
if (incrCurr >= incrSteps) {
|
252
|
+
slidenum++
|
253
|
+
return showSlide()
|
254
|
+
} else {
|
255
|
+
elem = incrElem.eq(incrCurr)
|
256
|
+
if (incrCode && elem.hasClass('command')) {
|
257
|
+
incrElem.eq(incrCurr).show().jTypeWriter({duration:1.0})
|
258
|
+
} else {
|
259
|
+
incrElem.eq(incrCurr).show()
|
260
|
+
}
|
261
|
+
incrCurr++
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
265
|
+
function prevStep() {
|
266
|
+
slidenum--
|
267
|
+
return showSlide(true) // We show the slide fully loaded
|
268
|
+
}
|
269
|
+
|
270
|
+
function doDebugStuff()
|
271
|
+
{
|
272
|
+
if (debugMode) {
|
273
|
+
$('#debugInfo').show()
|
274
|
+
debug('debug mode on')
|
275
|
+
} else {
|
276
|
+
$('#debugInfo').hide()
|
277
|
+
}
|
278
|
+
}
|
279
|
+
|
280
|
+
function debug(data)
|
281
|
+
{
|
282
|
+
$('#debugInfo').text(data)
|
283
|
+
}
|
284
|
+
// See e.g. http://www.quirksmode.org/js/events/keys.html for keycodes
|
285
|
+
function keyDown(event)
|
286
|
+
{
|
287
|
+
var key = event.keyCode;
|
288
|
+
|
289
|
+
if (event.ctrlKey || event.altKey || event.metaKey)
|
290
|
+
return true;
|
291
|
+
|
292
|
+
debug('keyDown: ' + key)
|
293
|
+
|
294
|
+
if (key >= 48 && key <= 57) // 0 - 9
|
295
|
+
{
|
296
|
+
gotoSlidenum = gotoSlidenum * 10 + (key - 48);
|
297
|
+
return true;
|
298
|
+
}
|
299
|
+
if (key == 13 && gotoSlidenum > 0)
|
300
|
+
{
|
301
|
+
debug('go to ' + gotoSlidenum);
|
302
|
+
slidenum = gotoSlidenum - 1;
|
303
|
+
showSlide(true);
|
304
|
+
}
|
305
|
+
gotoSlidenum = 0;
|
306
|
+
|
307
|
+
if (key == 16) // shift key
|
308
|
+
{
|
309
|
+
shiftKeyActive = true;
|
310
|
+
}
|
311
|
+
if (key == 32) // space bar
|
312
|
+
{
|
313
|
+
if (shiftKeyActive) { prevStep() }
|
314
|
+
else { nextStep() }
|
315
|
+
}
|
316
|
+
else if (key == 68) // 'd' for debug
|
317
|
+
{
|
318
|
+
debugMode = !debugMode
|
319
|
+
doDebugStuff()
|
320
|
+
}
|
321
|
+
else if (key == 37 || key == 33) // Left arrow or page up
|
322
|
+
{
|
323
|
+
prevStep()
|
324
|
+
}
|
325
|
+
else if (key == 39 || key == 34) // Right arrow or page down
|
326
|
+
{
|
327
|
+
nextStep()
|
328
|
+
}
|
329
|
+
else if (key == 82) // R for reload
|
330
|
+
{
|
331
|
+
if (confirm('really reload slides?')) {
|
332
|
+
loadSlides()
|
333
|
+
showSlide()
|
334
|
+
}
|
335
|
+
}
|
336
|
+
else if (key == 84 || key == 67) // T or C for table of contents
|
337
|
+
{
|
338
|
+
$('#navmenu').toggle().trigger('click')
|
339
|
+
}
|
340
|
+
else if (key == 90) // z for help
|
341
|
+
{
|
342
|
+
$('#help').toggle()
|
343
|
+
}
|
344
|
+
else if (key == 66 || key == 70) // f for footer (also "b" which is what kensington remote "stop" button sends
|
345
|
+
{
|
346
|
+
toggleFooter()
|
347
|
+
}
|
348
|
+
else if (key == 27) // esc
|
349
|
+
{
|
350
|
+
removeResults();
|
351
|
+
}
|
352
|
+
return true
|
353
|
+
}
|
354
|
+
|
355
|
+
function toggleFooter()
|
356
|
+
{
|
357
|
+
$('#footer').toggle()
|
358
|
+
}
|
359
|
+
|
360
|
+
function keyUp(event) {
|
361
|
+
var key = event.keyCode;
|
362
|
+
debug('keyUp: ' + key);
|
363
|
+
if (key == 16) // shift key
|
364
|
+
{
|
365
|
+
shiftKeyActive = false;
|
366
|
+
}
|
367
|
+
}
|
368
|
+
|
369
|
+
|
370
|
+
function swipeLeft() {
|
371
|
+
nextStep()
|
372
|
+
}
|
373
|
+
|
374
|
+
function swipeRight() {
|
375
|
+
prevStep()
|
376
|
+
}
|
377
|
+
|
378
|
+
function ListMenu(s)
|
379
|
+
{
|
380
|
+
this.slide = s
|
381
|
+
this.typeName = 'ListMenu'
|
382
|
+
this.itemLength = 0;
|
383
|
+
this.items = new Array();
|
384
|
+
this.addItem = function (key, text, slide) {
|
385
|
+
if (key.length > 1) {
|
386
|
+
thisKey = key.shift()
|
387
|
+
if (!this.items[thisKey]) {
|
388
|
+
this.items[thisKey] = new ListMenu(slide)
|
389
|
+
}
|
390
|
+
this.items[thisKey].addItem(key, text, slide)
|
391
|
+
} else {
|
392
|
+
thisKey = key.shift()
|
393
|
+
this.items[thisKey] = new ListMenuItem(text, slide)
|
394
|
+
}
|
395
|
+
}
|
396
|
+
this.getList = function() {
|
397
|
+
var newMenu = $("<ul>")
|
398
|
+
for(var i in this.items) {
|
399
|
+
var item = this.items[i]
|
400
|
+
var domItem = $("<li>")
|
401
|
+
if (item.typeName == 'ListMenu') {
|
402
|
+
choice = $("<a rel=\"" + (item.slide - 1) + "\" href=\"#\">" + i + "</a>")
|
403
|
+
domItem.append(choice)
|
404
|
+
domItem.append(item.getList())
|
405
|
+
}
|
406
|
+
if (item.typeName == 'ListMenuItem') {
|
407
|
+
choice = $("<a rel=\"" + (item.slide - 1) + "\" href=\"#\">" + item.slide + '. ' + item.textName + "</a>")
|
408
|
+
domItem.append(choice)
|
409
|
+
}
|
410
|
+
newMenu.append(domItem)
|
411
|
+
}
|
412
|
+
return newMenu
|
413
|
+
}
|
414
|
+
}
|
415
|
+
|
416
|
+
function ListMenuItem(t, s)
|
417
|
+
{
|
418
|
+
this.typeName = "ListMenuItem"
|
419
|
+
this.slide = s
|
420
|
+
this.textName = t
|
421
|
+
}
|
422
|
+
|
423
|
+
var removeResults = function() {
|
424
|
+
$('.results').remove();
|
425
|
+
};
|
426
|
+
|
427
|
+
var print = function(text) {
|
428
|
+
removeResults();
|
429
|
+
var _results = $('<div>').addClass('results').text($.print(text));
|
430
|
+
$('body').append(_results);
|
431
|
+
_results.click(removeResults);
|
432
|
+
};
|
433
|
+
|
434
|
+
$('.sh_javaScript code').live("click", function() {
|
435
|
+
result = null;
|
436
|
+
var codeDiv = $(this);
|
437
|
+
codeDiv.addClass("executing");
|
438
|
+
eval(codeDiv.text());
|
439
|
+
setTimeout(function() { codeDiv.removeClass("executing");}, 250 );
|
440
|
+
if (result != null) print(result);
|
441
|
+
});
|