showoff 0.9.10.7 → 0.9.10.8
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/showoff.rb +33 -3
- data/lib/showoff/version.rb +1 -1
- data/lib/showoff_utils.rb +1 -1
- data/public/css/close.png +0 -0
- data/public/css/presenter.css +17 -6
- data/public/css/showoff.css +9 -1
- data/public/js/jquery-1.11.2.js +10347 -0
- data/public/js/presenter.js +9 -1
- data/public/js/showoff.js +49 -8
- data/views/presenter.erb +6 -1
- metadata +3 -2
data/public/js/presenter.js
CHANGED
@@ -118,12 +118,20 @@ function reportIssue() {
|
|
118
118
|
window.open(link);
|
119
119
|
}
|
120
120
|
|
121
|
+
// open browser to remote edit URL
|
121
122
|
function editSlide() {
|
122
123
|
var slide = $("span#slideFile").text().replace(/\/\d+$/, '');
|
123
124
|
var link = editUrl + slide + ".md";
|
124
125
|
window.open(link);
|
125
126
|
}
|
126
127
|
|
128
|
+
// call the edit endpoint to open up a local file editor
|
129
|
+
function openEditor() {
|
130
|
+
var slide = $("span#slideFile").text().replace(/\/\d+$/, '');
|
131
|
+
var link = '/edit/' + slide + ".md";
|
132
|
+
$.get(link);
|
133
|
+
}
|
134
|
+
|
127
135
|
function toggleSlave() {
|
128
136
|
mode.slave = !mode.slave;
|
129
137
|
openSlave();
|
@@ -186,7 +194,7 @@ function openNext()
|
|
186
194
|
if (mode.next) {
|
187
195
|
try {
|
188
196
|
if(nextWindow == null || typeof(nextWindow) == 'undefined' || nextWindow.closed){
|
189
|
-
nextWindow = window.open('/?track=false&feedback=false&next=true#' + nextSlideNum(true),'','width=
|
197
|
+
nextWindow = window.open('/?track=false&feedback=false&next=true#' + nextSlideNum(true),'','width=320,height=300');
|
190
198
|
}
|
191
199
|
else if(nextWindow.location.hash != '#' + nextSlideNum(true)) {
|
192
200
|
// maybe we need to reset content?
|
data/public/js/showoff.js
CHANGED
@@ -15,6 +15,7 @@ var incrCurr = 0
|
|
15
15
|
var incrCode = false
|
16
16
|
var debugMode = false
|
17
17
|
var gotoSlidenum = 0
|
18
|
+
var lastMessageGuid = 0
|
18
19
|
var shiftKeyActive = false
|
19
20
|
var query
|
20
21
|
var slideStartTime = new Date().getTime()
|
@@ -62,7 +63,11 @@ function setupPreso(load_slides, prefix) {
|
|
62
63
|
if(query.track == 'false') mode.track = false;
|
63
64
|
|
64
65
|
// make sure that the next view doesn't bugger things on the first load
|
65
|
-
if(query.next == 'true')
|
66
|
+
if(query.next == 'true') {
|
67
|
+
$('#preso').addClass('zoomed');
|
68
|
+
mode.next = true;
|
69
|
+
zoom();
|
70
|
+
}
|
66
71
|
|
67
72
|
// Make sure the slides always look right.
|
68
73
|
// Better would be dynamic calculations, but this is enough for now.
|
@@ -190,6 +195,28 @@ function initializePresentation(prefix) {
|
|
190
195
|
$("#preso").trigger("showoff:loaded");
|
191
196
|
}
|
192
197
|
|
198
|
+
/* This looks like the zoom() function for the presenter preview, but it uses a different algorithm */
|
199
|
+
function zoom()
|
200
|
+
{
|
201
|
+
if(window.innerWidth <= 480) {
|
202
|
+
$(".zoomed").css("zoom", 0.32);
|
203
|
+
}
|
204
|
+
else {
|
205
|
+
var hSlide = parseFloat($("#preso").height());
|
206
|
+
var wSlide = parseFloat($("#preso").width());
|
207
|
+
var hBody = parseFloat($("html").height());
|
208
|
+
var wBody = parseFloat($("html").width());
|
209
|
+
|
210
|
+
newZoom = Math.min(hBody/hSlide, wBody/wSlide) - 0.04;
|
211
|
+
|
212
|
+
$(".zoomed").css("zoom", newZoom);
|
213
|
+
$(".zoomed").css("-ms-zoom", newZoom);
|
214
|
+
$(".zoomed").css("-webkit-zoom", newZoom);
|
215
|
+
$(".zoomed").css("-moz-transform", "scale("+newZoom+")");
|
216
|
+
$(".zoomed").css("-moz-transform-origin", "left top");
|
217
|
+
}
|
218
|
+
}
|
219
|
+
|
193
220
|
function centerSlides(slides) {
|
194
221
|
slides.each(function(s, slide) {
|
195
222
|
centerSlide(slide)
|
@@ -271,8 +298,9 @@ function setupSlideParamsCheck() {
|
|
271
298
|
}
|
272
299
|
|
273
300
|
function gotoSlide(slideNum, updatepv) {
|
274
|
-
|
275
|
-
if (!isNaN(
|
301
|
+
var newslide = parseInt(slideNum);
|
302
|
+
if (slidenum != newslide && !isNaN(newslide)) {
|
303
|
+
slidenum = newslide;
|
276
304
|
showSlide(false, updatepv);
|
277
305
|
}
|
278
306
|
}
|
@@ -338,6 +366,10 @@ function showSlide(back_step, updatepv) {
|
|
338
366
|
var fileName = currentSlide.children().first().attr('ref');
|
339
367
|
$('#slideFilename').text(fileName);
|
340
368
|
|
369
|
+
if (query.next) {
|
370
|
+
$(currentSlide).find('li').removeClass('hidden');
|
371
|
+
}
|
372
|
+
|
341
373
|
// Update presenter view, if we spawned one
|
342
374
|
if (updatepv && 'presenterView' in window && ! mode.next) {
|
343
375
|
var pv = window.presenterView;
|
@@ -410,17 +442,17 @@ function determineIncremental()
|
|
410
442
|
incrCode = true
|
411
443
|
}
|
412
444
|
incrElem.each(function(s, elem) {
|
413
|
-
$(elem).
|
445
|
+
$(elem).addClass('incremental hidden');
|
414
446
|
})
|
415
447
|
}
|
416
448
|
|
417
449
|
function showIncremental(incr)
|
418
450
|
{
|
419
|
-
elem = incrElem.eq(incrCurr)
|
451
|
+
elem = incrElem.eq(incrCurr);
|
420
452
|
if (incrCode && elem.hasClass('command')) {
|
421
|
-
incrElem.eq(incrCurr).
|
453
|
+
incrElem.eq(incrCurr).removeClass('hidden').jTypeWriter({duration:1.0});
|
422
454
|
} else {
|
423
|
-
incrElem.eq(incrCurr).
|
455
|
+
incrElem.eq(incrCurr).removeClass('hidden');
|
424
456
|
}
|
425
457
|
}
|
426
458
|
|
@@ -636,6 +668,16 @@ function disconnected() {
|
|
636
668
|
function parseMessage(data) {
|
637
669
|
var command = JSON.parse(data);
|
638
670
|
|
671
|
+
if ("id" in command) {
|
672
|
+
var guid = command['id'];
|
673
|
+
if (lastMessageGuid != guid) {
|
674
|
+
lastMessageGuid = guid;
|
675
|
+
}
|
676
|
+
else {
|
677
|
+
return;
|
678
|
+
}
|
679
|
+
}
|
680
|
+
|
639
681
|
if ("current" in command) { follow(command["current"]); }
|
640
682
|
|
641
683
|
// Presenter messages only, so catch errors if method doesn't exist
|
@@ -646,7 +688,6 @@ function parseMessage(data) {
|
|
646
688
|
catch(e) {
|
647
689
|
console.log("Not a presenter!");
|
648
690
|
}
|
649
|
-
|
650
691
|
}
|
651
692
|
|
652
693
|
function sendPace(pace) {
|
data/views/presenter.erb
CHANGED
@@ -31,7 +31,12 @@
|
|
31
31
|
<div id="main">
|
32
32
|
<div id="topbar">
|
33
33
|
<div id="slideSource">
|
34
|
-
Source:
|
34
|
+
Source:
|
35
|
+
<% if @request.host == 'localhost' %>
|
36
|
+
<a href="javascript:openEditor();"><span id="slideFile"></span></a>
|
37
|
+
<% else %>
|
38
|
+
<span id="slideFile">
|
39
|
+
<% end %>
|
35
40
|
</div>
|
36
41
|
<span id="links">
|
37
42
|
<span class="desktop">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: showoff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.10.
|
4
|
+
version: 0.9.10.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chacon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- public/js/core.js
|
233
233
|
- public/js/fg.menu.js
|
234
234
|
- public/js/jTypeWriter.js
|
235
|
+
- public/js/jquery-1.11.2.js
|
235
236
|
- public/js/jquery-1.4.2.min.js
|
236
237
|
- public/js/jquery-print.js
|
237
238
|
- public/js/jquery.batchImageLoad.js
|