showoff 0.14.3 → 0.15.0
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.
- checksums.yaml +4 -4
- data/lib/keymap.rb +2 -1
- data/lib/showoff/version.rb +1 -1
- data/lib/showoff.rb +7 -4
- data/lib/showoff_utils.rb +8 -2
- data/public/css/{TimeCircles.css → TimeCircles-89ac5ae.css} +0 -0
- data/public/css/presenter.css +148 -8
- data/public/css/showoff.css +17 -9
- data/public/js/{TimeCircles.js → TimeCircles-89ac5ae.js} +986 -984
- data/public/js/annotations.js +1 -1
- data/public/js/{coffee-script.js → coffee-script-1.1.3-pre.js} +0 -0
- data/public/js/{highlight.pack.js → highlight.pack-9.2.0.js} +0 -0
- data/public/js/{jTypeWriter.js → jTypeWriter-1.1.js} +0 -0
- data/public/js/jquery-print.js +3 -2
- data/public/js/{jquery.batchImageLoad.js → jquery.batchImageLoad-1.0.0.js} +0 -0
- data/public/js/{jquery.cycle.all.js → jquery.cycle.all-2.8.0.js} +0 -0
- data/public/js/{jquery.doubletap-0.1.js → jquery.doubletap-4ff02c5.js} +3 -2
- data/public/js/{jquery.parsequery.min.js → jquery.parsequery.min-6a20f83.js} +1 -0
- data/public/js/presenter.js +192 -65
- data/public/js/showoff.js +102 -74
- data/views/header.erb +10 -11
- data/views/header_mini.erb +2 -3
- data/views/help.erb +6 -1
- data/views/presenter.erb +18 -7
- metadata +11 -11
data/public/js/showoff.js
CHANGED
@@ -68,11 +68,6 @@ function setupPreso(load_slides, prefix) {
|
|
68
68
|
// give us the ability to disable tracking via url parameter
|
69
69
|
if(query.track == 'false') mode.track = false;
|
70
70
|
|
71
|
-
// make sure that the next view doesn't bugger things on the first load
|
72
|
-
if(query.next == 'true') {
|
73
|
-
mode.next = true;
|
74
|
-
}
|
75
|
-
|
76
71
|
// Make sure the slides always look right.
|
77
72
|
// Better would be dynamic calculations, but this is enough for now.
|
78
73
|
zoom();
|
@@ -87,20 +82,24 @@ function setupPreso(load_slides, prefix) {
|
|
87
82
|
}
|
88
83
|
}
|
89
84
|
|
90
|
-
function loadSlides(load_slides, prefix, reload) {
|
85
|
+
function loadSlides(load_slides, prefix, reload, hard) {
|
91
86
|
var url = loadSlidesPrefix + "slides";
|
92
87
|
if (reload) {
|
93
88
|
url += "?cache=clear";
|
94
89
|
}
|
90
|
+
|
95
91
|
//load slides offscreen, wait for images and then initialize
|
92
|
+
$('body').addClass('busy');
|
96
93
|
if (load_slides) {
|
97
94
|
$("#slides").load(url, false, function(){
|
98
|
-
|
99
|
-
loadingCompleteCallback: initializePresentation(prefix)
|
100
|
-
});
|
101
|
-
if (reload) {
|
95
|
+
if(hard) {
|
102
96
|
location.reload(true);
|
103
97
|
}
|
98
|
+
else {
|
99
|
+
$("#slides img").batchImageLoad({
|
100
|
+
loadingCompleteCallback: initializePresentation(prefix)
|
101
|
+
});
|
102
|
+
}
|
104
103
|
})
|
105
104
|
} else {
|
106
105
|
$("#slides img").batchImageLoad({
|
@@ -126,7 +125,7 @@ function initializePresentation(prefix) {
|
|
126
125
|
timeout: 0
|
127
126
|
})
|
128
127
|
|
129
|
-
setupMenu()
|
128
|
+
setupMenu();
|
130
129
|
|
131
130
|
if (slidesLoaded) {
|
132
131
|
showSlide()
|
@@ -136,6 +135,8 @@ function initializePresentation(prefix) {
|
|
136
135
|
}
|
137
136
|
setupSlideParamsCheck();
|
138
137
|
|
138
|
+
// Remove spinner in case we're reloading
|
139
|
+
$('body').removeClass('busy');
|
139
140
|
|
140
141
|
$('pre.highlight code').each(function(i, block) {
|
141
142
|
try {
|
@@ -187,20 +188,18 @@ function zoom(presenter) {
|
|
187
188
|
|
188
189
|
var newZoom = Math.min(hBody/hSlide, wBody/wSlide);
|
189
190
|
|
190
|
-
//
|
191
|
-
|
191
|
+
// match the 65/35 split in the stylesheet for the side-by-side layout
|
192
|
+
if($("#preview").hasClass("beside")) {
|
193
|
+
wBody *= 0.64;
|
194
|
+
newZoom = Math.min(hBody/hSlide, wBody/wSlide);
|
195
|
+
}
|
192
196
|
|
193
|
-
// Calculate
|
194
|
-
var
|
195
|
-
var
|
197
|
+
// Calculate margins to center the thing *before* scaling
|
198
|
+
var hMargin = (hBody - hSlide) /2;
|
199
|
+
var wMargin = (wBody - wSlide) /2;
|
196
200
|
|
197
|
-
preso.css("
|
198
|
-
preso.css("
|
199
|
-
preso.css("-webkit-zoom", newZoom);
|
200
|
-
// Firefox doesn't support zoom
|
201
|
-
// Don't use standard transform to avoid modifying Chrome
|
202
|
-
preso.css("-moz-transform", "scale(" + newZoom + ") translateX(" + wPos + "px) translateY(" + hPos + "px)");
|
203
|
-
preso.css("-moz-transform-origin", "0 0");
|
201
|
+
preso.css("margin", hMargin + "px " + wMargin + "px");
|
202
|
+
preso.css("transform", "scale(" + newZoom + ")");
|
204
203
|
|
205
204
|
// correct the zoom factor for the presenter
|
206
205
|
if (presenter) {
|
@@ -212,7 +211,6 @@ function zoom(presenter) {
|
|
212
211
|
|
213
212
|
// TODO: When we fix the presenter on IE so the viewport isn't all wack, we
|
214
213
|
// may have to revisit this.
|
215
|
-
|
216
214
|
var zoomLevel = Number( preso.css('zoom') ) || 1;
|
217
215
|
annotations.zoom = 1 / zoomLevel
|
218
216
|
}
|
@@ -456,8 +454,9 @@ function setupSlideParamsCheck() {
|
|
456
454
|
function gotoSlide(slideNum, updatepv) {
|
457
455
|
var newslide = parseInt(slideNum);
|
458
456
|
if (slidenum != newslide && !isNaN(newslide)) {
|
457
|
+
var back = (newslide == (slidenum - 1))
|
459
458
|
slidenum = newslide;
|
460
|
-
showSlide(
|
459
|
+
showSlide(back, updatepv);
|
461
460
|
}
|
462
461
|
}
|
463
462
|
|
@@ -543,7 +542,7 @@ function showSlide(back_step, updatepv) {
|
|
543
542
|
|
544
543
|
|
545
544
|
// Update presenter view, if we spawned one
|
546
|
-
if (updatepv && 'presenterView' in window
|
545
|
+
if (updatepv && 'presenterView' in window) {
|
547
546
|
var pv = window.presenterView;
|
548
547
|
pv.slidenum = slidenum;
|
549
548
|
pv.incrCurr = incrCurr
|
@@ -617,7 +616,7 @@ function determineIncremental()
|
|
617
616
|
{
|
618
617
|
incrCurr = 0
|
619
618
|
incrCode = false
|
620
|
-
incrElem = currentSlide.find(".incremental
|
619
|
+
incrElem = currentSlide.find(".incremental li")
|
621
620
|
incrSteps = incrElem.size()
|
622
621
|
if(incrSteps == 0) {
|
623
622
|
// also look for commandline
|
@@ -897,7 +896,7 @@ function parseMessage(data) {
|
|
897
896
|
try {
|
898
897
|
switch (command['message']) {
|
899
898
|
case 'current':
|
900
|
-
follow(command["current"]);
|
899
|
+
follow(command["current"], command["increment"]);
|
901
900
|
break;
|
902
901
|
|
903
902
|
case 'complete':
|
@@ -1027,10 +1026,29 @@ function editSlide() {
|
|
1027
1026
|
window.open(link);
|
1028
1027
|
}
|
1029
1028
|
|
1030
|
-
function follow(slide) {
|
1029
|
+
function follow(slide, newIncrement) {
|
1031
1030
|
if (mode.follow) {
|
1031
|
+
var lastSlide = slidenum;
|
1032
1032
|
console.log("New slide: " + slide);
|
1033
1033
|
gotoSlide(slide);
|
1034
|
+
|
1035
|
+
if( ! $("body").hasClass("presenter") ) {
|
1036
|
+
switch (slidenum - lastSlide) {
|
1037
|
+
case -1:
|
1038
|
+
fireEvent("showoff:prev");
|
1039
|
+
break;
|
1040
|
+
|
1041
|
+
case 1:
|
1042
|
+
fireEvent("showoff:next");
|
1043
|
+
break;
|
1044
|
+
}
|
1045
|
+
|
1046
|
+
// if the master says we're incrementing. Use a loop in case the viewer is out of sync
|
1047
|
+
while(newIncrement > incrCurr) {
|
1048
|
+
increment();
|
1049
|
+
}
|
1050
|
+
|
1051
|
+
}
|
1034
1052
|
}
|
1035
1053
|
}
|
1036
1054
|
|
@@ -1039,41 +1057,44 @@ function getPosition() {
|
|
1039
1057
|
ws.send(JSON.stringify({ message: 'position' }));
|
1040
1058
|
}
|
1041
1059
|
|
1060
|
+
function fireEvent(ev) {
|
1061
|
+
var event = jQuery.Event(ev);
|
1062
|
+
$(currentSlide).find(".content").trigger(event);
|
1063
|
+
if (event.isDefaultPrevented()) {
|
1064
|
+
return;
|
1065
|
+
}
|
1066
|
+
}
|
1067
|
+
|
1068
|
+
function increment() {
|
1069
|
+
showIncremental(incrCurr);
|
1070
|
+
|
1071
|
+
var incrEvent = jQuery.Event("showoff:incr");
|
1072
|
+
incrEvent.slidenum = slidenum;
|
1073
|
+
incrEvent.incr = incrCurr;
|
1074
|
+
$(currentSlide).find(".content").trigger(incrEvent);
|
1075
|
+
|
1076
|
+
incrCurr++;
|
1077
|
+
}
|
1078
|
+
|
1042
1079
|
function prevStep(updatepv)
|
1043
1080
|
{
|
1044
|
-
|
1045
|
-
$(currentSlide).find(".content").trigger(event);
|
1046
|
-
if (event.isDefaultPrevented()) {
|
1047
|
-
return;
|
1048
|
-
}
|
1049
|
-
|
1081
|
+
fireEvent("showoff:prev");
|
1050
1082
|
track();
|
1051
|
-
|
1052
|
-
|
1053
|
-
return showSlide(true, updatepv) // We show the slide fully loaded
|
1083
|
+
slidenum--;
|
1084
|
+
return showSlide(true, updatepv); // We show the slide fully loaded
|
1054
1085
|
}
|
1055
1086
|
|
1056
1087
|
function nextStep(updatepv)
|
1057
1088
|
{
|
1058
|
-
|
1059
|
-
|
1060
|
-
if (event.isDefaultPrevented()) {
|
1061
|
-
return;
|
1062
|
-
}
|
1063
|
-
|
1064
|
-
track();
|
1089
|
+
fireEvent("showoff:next");
|
1090
|
+
track();
|
1065
1091
|
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
incrEvent.slidenum = slidenum;
|
1073
|
-
incrEvent.incr = incrCurr;
|
1074
|
-
$(currentSlide).find(".content").trigger(incrEvent);
|
1075
|
-
incrCurr++;
|
1076
|
-
}
|
1092
|
+
if (incrCurr >= incrSteps) {
|
1093
|
+
slidenum++;
|
1094
|
+
return showSlide(false, updatepv);
|
1095
|
+
} else {
|
1096
|
+
increment();
|
1097
|
+
}
|
1077
1098
|
}
|
1078
1099
|
|
1079
1100
|
// carrying on our grand tradition of overwriting functions of the same name with presenter.js
|
@@ -1172,19 +1193,20 @@ function keyDown(event){
|
|
1172
1193
|
}
|
1173
1194
|
|
1174
1195
|
switch(getAction(event)) {
|
1175
|
-
case 'DEBUG': toggleDebug();
|
1176
|
-
case 'PREV': prevStep();
|
1177
|
-
case 'NEXT': nextStep();
|
1178
|
-
case '
|
1179
|
-
case '
|
1180
|
-
case '
|
1181
|
-
case '
|
1182
|
-
case '
|
1183
|
-
case '
|
1184
|
-
case '
|
1185
|
-
case '
|
1186
|
-
case '
|
1187
|
-
case '
|
1196
|
+
case 'DEBUG': toggleDebug(); break;
|
1197
|
+
case 'PREV': prevStep(); break;
|
1198
|
+
case 'NEXT': nextStep(); break;
|
1199
|
+
case 'REFRESH': reloadSlides(); break;
|
1200
|
+
case 'RELOAD': reloadSlides(true); break;
|
1201
|
+
case 'CONTENTS': toggleContents(); break;
|
1202
|
+
case 'HELP': toggleHelp(); break;
|
1203
|
+
case 'BLANK': blankScreen(); break;
|
1204
|
+
case 'FOOTER': toggleFooter(); break;
|
1205
|
+
case 'FOLLOW': toggleFollow(); break;
|
1206
|
+
case 'NOTES': toggleNotes(); break;
|
1207
|
+
case 'CLEAR': removeResults(); break;
|
1208
|
+
case 'PAUSE': togglePause(); break;
|
1209
|
+
case 'PRESHOW': togglePreShow(); break;
|
1188
1210
|
case 'EXECUTE':
|
1189
1211
|
debug('executeCode');
|
1190
1212
|
executeVisibleCodeBlock();
|
@@ -1243,11 +1265,17 @@ function toggleDebug () {
|
|
1243
1265
|
doDebugStuff();
|
1244
1266
|
}
|
1245
1267
|
|
1246
|
-
function reloadSlides () {
|
1247
|
-
if
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1268
|
+
function reloadSlides (hard) {
|
1269
|
+
if(hard) {
|
1270
|
+
var message = 'Are you sure you want to reload Showoff?';
|
1271
|
+
}
|
1272
|
+
else {
|
1273
|
+
var message = "Are you sure you want to refresh the slide content?\n\n";
|
1274
|
+
message += '(Use `RELOAD` to fully reload the entire UI)';
|
1275
|
+
}
|
1276
|
+
|
1277
|
+
if (confirm(message)) {
|
1278
|
+
loadSlides(loadSlidesBool, loadSlidesPrefix, true, hard);
|
1251
1279
|
}
|
1252
1280
|
}
|
1253
1281
|
|
data/views/header.erb
CHANGED
@@ -8,26 +8,25 @@
|
|
8
8
|
<% end %>
|
9
9
|
|
10
10
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/highlight/<%= @highlightStyle %>.css" />
|
11
|
-
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/showoff.css" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/showoff.css?v=<%= SHOWOFF_VERSION %>" />
|
12
12
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/font-awesome-4.4.0/css/font-awesome.min.css">
|
13
13
|
|
14
14
|
<script type="text/javascript" src="<%= @asset_path %>/js/jquery-2.1.4.min.js"></script>
|
15
15
|
|
16
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.cycle.all.js"></script>
|
16
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.cycle.all-2.8.0.js"></script>
|
17
17
|
<script type="text/javascript" src="<%= @asset_path %>/js/jquery-print.js"></script>
|
18
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.batchImageLoad.js"></script>
|
19
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.parsequery.min.js"></script>
|
20
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.doubletap-
|
21
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/jTypeWriter.js"
|
22
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/highlight.pack.js"></script>
|
18
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.batchImageLoad-1.0.0.js"></script>
|
19
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.parsequery.min-6a20f83.js"></script>
|
20
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/jquery.doubletap-4ff02c5.js"></script>
|
21
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/jTypeWriter-1.1.js"></script>
|
22
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/highlight.pack-9.2.0.js"></script>
|
23
23
|
|
24
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/coffee-script.js"></script>
|
24
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/coffee-script-1.1.3-pre.js"></script>
|
25
25
|
|
26
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/annotations.js"></script>
|
27
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/showoff.js"></script>
|
26
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/annotations.js?v=<%= SHOWOFF_VERSION %>"></script>
|
27
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/showoff.js?v=<%= SHOWOFF_VERSION %>"></script>
|
28
28
|
|
29
29
|
<% css_files.each do |css_file| %>
|
30
|
-
<% alternate = ShowOffUtils.default_style?(css_file) ? '' : 'alternate ' %>
|
31
30
|
<link rel="stylesheet" href="<%= @asset_path %>/file/<%= css_file %>" type="text/css"/>
|
32
31
|
<% end %>
|
33
32
|
|
data/views/header_mini.erb
CHANGED
@@ -7,15 +7,14 @@
|
|
7
7
|
<link rel="icon" href="<%= @favicon %>"/>
|
8
8
|
<% end %>
|
9
9
|
|
10
|
-
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/showoff.css" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/showoff.css?v=<%= SHOWOFF_VERSION %>" />
|
11
11
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/font-awesome-4.4.0/css/font-awesome.min.css">
|
12
12
|
|
13
13
|
<script type="text/javascript" src="<%= @asset_path %>/js/jquery-2.1.4.min.js"></script>
|
14
14
|
|
15
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/showoff.js"></script>
|
15
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/showoff.js?v=<%= SHOWOFF_VERSION %>"></script>
|
16
16
|
|
17
17
|
<% css_files.each do |css_file| %>
|
18
|
-
<% alternate = ShowOffUtils.default_style?(css_file) ? '' : 'alternate ' %>
|
19
18
|
<link rel="stylesheet" href="<%= @asset_path %>/file/<%= css_file %>" type="text/css"/>
|
20
19
|
<% end %>
|
21
20
|
|
data/views/help.erb
CHANGED
@@ -29,7 +29,12 @@
|
|
29
29
|
<hr />
|
30
30
|
|
31
31
|
<div>
|
32
|
-
<span class="description">
|
32
|
+
<span class="description">Refresh slide content.</span>
|
33
|
+
<span class="action">REFRESH</span>
|
34
|
+
<span class="hotkeys"><%= mapped_keys('REFRESH') %></span>
|
35
|
+
</div>
|
36
|
+
<div>
|
37
|
+
<span class="description">Completely reload Showoff.</span>
|
33
38
|
<span class="action">RELOAD</span>
|
34
39
|
<span class="hotkeys"><%= mapped_keys('RELOAD') %></span>
|
35
40
|
</div>
|
data/views/presenter.erb
CHANGED
@@ -3,17 +3,17 @@
|
|
3
3
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
4
|
<head>
|
5
5
|
<%= erb :header %>
|
6
|
-
<link rel="stylesheet" href="<%= @asset_path %>/css/presenter.css" type="text/css"/>
|
7
|
-
<link href="<%= @asset_path %>/css/TimeCircles.css" rel="stylesheet">
|
8
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/TimeCircles.js"></script>
|
9
|
-
<script type="text/javascript" src="<%= @asset_path %>/js/presenter.js"></script>
|
6
|
+
<link rel="stylesheet" href="<%= @asset_path %>/css/presenter.css?v=<%= SHOWOFF_VERSION %>" type="text/css"/>
|
7
|
+
<link href="<%= @asset_path %>/css/TimeCircles-89ac5ae.css" rel="stylesheet">
|
8
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/TimeCircles-89ac5ae.js"></script>
|
9
|
+
<script type="text/javascript" src="<%= @asset_path %>/js/presenter.js?v=<%= SHOWOFF_VERSION %>"></script>
|
10
10
|
<script type="text/javascript">
|
11
11
|
editUrl = "<%= @edit %>";
|
12
12
|
issueUrl = "<%= @issues %>";
|
13
13
|
</script>
|
14
14
|
</head>
|
15
15
|
|
16
|
-
<body>
|
16
|
+
<body class="presenter">
|
17
17
|
<%= erb :help %>
|
18
18
|
|
19
19
|
<div id="main">
|
@@ -40,7 +40,6 @@
|
|
40
40
|
</span>
|
41
41
|
<span>
|
42
42
|
<a id="slaveWindow" href="javascript:toggleSlave();" title="Enable the display window.">Display Window <i class="fa fa-clone"></i></a>
|
43
|
-
<a id="nextWindow" href="javascript:toggleNext();" title="Enable the next window view.">Next Window <i class="fa fa-clone"></i></a>
|
44
43
|
<a id="notesWindow" href="javascript:toggleNotes();" title="Enable the popout notes window.">Notes Window <i class="fa fa-clone"></i></a>
|
45
44
|
</span>
|
46
45
|
<span>
|
@@ -48,11 +47,21 @@
|
|
48
47
|
<a id="onePage" href="/" title="Switch to Display Window.">Switch Views <i class="fa fa-exchange fa-rotate-90"></i></a>
|
49
48
|
</span>
|
50
49
|
</span>
|
50
|
+
<select id="layoutSelector" autocomplete="off">
|
51
|
+
<option value="default" selected>Default Layout</option>
|
52
|
+
<option value="thumbs" title="Display thumbnail previews of the next and previous slides.">Thumbnails</option>
|
53
|
+
<option value="floating" title="Open the next slide as a floating window.">Floating</option>
|
54
|
+
<option value="beside" title="Display the next slide as a large preview in the main presenter view.">Side-by-Side</option>
|
55
|
+
</select>
|
51
56
|
<span class="mobile">
|
52
57
|
<a id="update" href="">Update</a>
|
53
58
|
</span>
|
54
59
|
</span>
|
55
60
|
</div>
|
61
|
+
<div id="nextWindowConfirmation">
|
62
|
+
<p>Browser security requires confirmation before opening a new window.</p>
|
63
|
+
<p><a href="javascript:chooseLayout('default');">cancel</a><input type="button" onClick="javascript:openNext();" value="Open Window" /></p>
|
64
|
+
</div>
|
56
65
|
|
57
66
|
<div id="center">
|
58
67
|
<div id="sidebar">
|
@@ -72,11 +81,14 @@
|
|
72
81
|
<img id="paceMarker" src="<%= @asset_path %>/css/paceMarker.png" />
|
73
82
|
</div>
|
74
83
|
<div id="navigation" class="submenu"></div>
|
84
|
+
<div id="navigationHover"></div>
|
75
85
|
</div>
|
76
86
|
<div id="presenter">
|
77
87
|
<div id="frame">
|
78
88
|
<div id="preview">
|
79
89
|
<img id="disconnected" src="<%= @asset_path %>/css/disconnected-large.png" />
|
90
|
+
<div id="prevSlide" class="thumb"><div class="container"></div><h3 class="label">Previous</h3></div>
|
91
|
+
<div id="nextSlide" class="thumb"><div class="container"></div><h3 class="label">Next</h3></div>
|
80
92
|
<div id="preso">loading presentation...</div>
|
81
93
|
</div>
|
82
94
|
<div id="annotationToolbar">
|
@@ -112,7 +124,6 @@
|
|
112
124
|
<span id="enableAnnotations" title="Enable the annotation system.">
|
113
125
|
<label for="annotationsToggle">Annotations</label><input type="checkbox" id="annotationsToggle" autocomplete="off" />
|
114
126
|
</span>
|
115
|
-
|
116
127
|
</div>
|
117
128
|
</div>
|
118
129
|
</div>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: showoff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-11-
|
12
|
+
date: 2016-11-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
@@ -199,7 +199,7 @@ files:
|
|
199
199
|
- views/onepage.erb
|
200
200
|
- views/presenter.erb
|
201
201
|
- views/stats.erb
|
202
|
-
- public/css/TimeCircles.css
|
202
|
+
- public/css/TimeCircles-89ac5ae.css
|
203
203
|
- public/css/disconnected-large.png
|
204
204
|
- public/css/disconnected.png
|
205
205
|
- public/css/font-awesome-4.4.0/css/font-awesome.min.css
|
@@ -326,17 +326,17 @@ files:
|
|
326
326
|
- public/css/titlebar/powershell.png
|
327
327
|
- public/css/titlebar/right.png
|
328
328
|
- public/favicon.ico
|
329
|
-
- public/js/TimeCircles.js
|
329
|
+
- public/js/TimeCircles-89ac5ae.js
|
330
330
|
- public/js/annotations.js
|
331
|
-
- public/js/coffee-script.js
|
332
|
-
- public/js/highlight.pack.js
|
333
|
-
- public/js/jTypeWriter.js
|
331
|
+
- public/js/coffee-script-1.1.3-pre.js
|
332
|
+
- public/js/highlight.pack-9.2.0.js
|
333
|
+
- public/js/jTypeWriter-1.1.js
|
334
334
|
- public/js/jquery-2.1.4.min.js
|
335
335
|
- public/js/jquery-print.js
|
336
|
-
- public/js/jquery.batchImageLoad.js
|
337
|
-
- public/js/jquery.cycle.all.js
|
338
|
-
- public/js/jquery.doubletap-
|
339
|
-
- public/js/jquery.parsequery.min.js
|
336
|
+
- public/js/jquery.batchImageLoad-1.0.0.js
|
337
|
+
- public/js/jquery.cycle.all-2.8.0.js
|
338
|
+
- public/js/jquery.doubletap-4ff02c5.js
|
339
|
+
- public/js/jquery.parsequery.min-6a20f83.js
|
340
340
|
- public/js/presenter.js
|
341
341
|
- public/js/showoff.js
|
342
342
|
- public/unsupported.html
|