showoff 0.16.2 → 0.17.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/showoff.rb +27 -36
- data/lib/showoff/version.rb +1 -1
- data/lib/showoff_utils.rb +82 -52
- data/public/css/presenter.css +121 -159
- data/public/css/showoff.css +73 -13
- data/public/js/jquery-ui-1.12.1.js +2 -2
- data/public/js/presenter.js +80 -32
- data/public/js/showoff.js +8 -5
- data/views/header.erb +1 -0
- data/views/presenter.erb +130 -106
- metadata +14 -3
data/public/css/showoff.css
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
body
|
1
|
+
body,
|
2
|
+
.ui-widget,
|
3
|
+
.ui-widget input,
|
4
|
+
.ui-widget select,
|
5
|
+
.ui-widget textarea,
|
6
|
+
.ui-widget button {
|
2
7
|
font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
|
3
8
|
color: #222;
|
4
9
|
}
|
@@ -520,20 +525,15 @@ img#disconnected {
|
|
520
525
|
display: none;
|
521
526
|
position: absolute;
|
522
527
|
overflow: hidden;
|
528
|
+
width: 640px;
|
529
|
+
height: 500px;
|
523
530
|
z-index: 99999;
|
524
|
-
|
525
|
-
height: 150px;
|
526
|
-
background-color: white;
|
527
|
-
border: 1px solid #4D4F53;
|
531
|
+
background-color: inherit;
|
528
532
|
margin: 0px;
|
529
|
-
|
530
|
-
|
533
|
+
box-shadow:0 0 25px rgba(0,0,0,0.35);
|
534
|
+
transform: scale(0.3);
|
535
|
+
transform-origin: 0 0;
|
531
536
|
}
|
532
|
-
#navigationHover .content {
|
533
|
-
width: 200%;
|
534
|
-
transform: scale(0.5);
|
535
|
-
transform-origin: 0 0;
|
536
|
-
}
|
537
537
|
|
538
538
|
#askedQuestions {
|
539
539
|
margin: 0;
|
@@ -600,7 +600,7 @@ pre.highlight code.language-console,
|
|
600
600
|
pre.highlight code.console {
|
601
601
|
background: #222;
|
602
602
|
background: url(titlebar/left.png) left top no-repeat, url(titlebar/right.png) right top no-repeat, url(titlebar/center.png) center top repeat-x #222;
|
603
|
-
color: #
|
603
|
+
color: #fff;
|
604
604
|
padding: 30px 0.5em 0.5em;
|
605
605
|
border: 1px solid #acacac;
|
606
606
|
border-radius: 6px;
|
@@ -797,6 +797,66 @@ form .element {
|
|
797
797
|
display: none;
|
798
798
|
}
|
799
799
|
|
800
|
+
/*****************
|
801
|
+
*** modals ***
|
802
|
+
*****************/
|
803
|
+
.ui-dialog.ui-widget-content {
|
804
|
+
border: none;
|
805
|
+
box-shadow:0 0 25px rgba(0,0,0,0.35);
|
806
|
+
}
|
807
|
+
|
808
|
+
.ui-dialog .links,
|
809
|
+
.ui-dialog .description,
|
810
|
+
.ui-dialog select {
|
811
|
+
font-size: .75em;
|
812
|
+
}
|
813
|
+
|
814
|
+
.ui-dialog .ui-dialog-buttonpane{
|
815
|
+
border: none;
|
816
|
+
padding: 0;
|
817
|
+
margin-top: 0;
|
818
|
+
}
|
819
|
+
|
820
|
+
.ui-dialog .ui-widget-header {
|
821
|
+
border: none;
|
822
|
+
background-color: transparent;
|
823
|
+
}
|
824
|
+
|
825
|
+
.ui-dialog .setting {
|
826
|
+
margin-bottom: 8px;
|
827
|
+
}
|
828
|
+
|
829
|
+
.ui-dialog .setting input {
|
830
|
+
margin-left: 1em;
|
831
|
+
}
|
832
|
+
|
833
|
+
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
834
|
+
float: none;
|
835
|
+
padding-left: 1em;
|
836
|
+
}
|
837
|
+
|
838
|
+
.ui-dialog .links {
|
839
|
+
text-align: right;
|
840
|
+
}
|
841
|
+
|
842
|
+
.ui-dialog p,
|
843
|
+
.ui-dialog select {
|
844
|
+
margin-left: 30px;
|
845
|
+
}
|
846
|
+
|
847
|
+
.ui-dialog p {
|
848
|
+
margin-top: .5em;
|
849
|
+
margin-bottom: .5em;
|
850
|
+
}
|
851
|
+
|
852
|
+
.no-close .ui-dialog-titlebar-close {
|
853
|
+
display: none;
|
854
|
+
}
|
855
|
+
|
856
|
+
/*****************
|
857
|
+
*** end modal ***
|
858
|
+
*****************/
|
859
|
+
|
800
860
|
/**********************************
|
801
861
|
*** supplemental materials ***
|
802
862
|
**********************************/
|
@@ -13466,7 +13466,7 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
|
|
13466
13466
|
|
13467
13467
|
this.valueDiv
|
13468
13468
|
.toggle( this.indeterminate || value > this.min )
|
13469
|
-
.width( percentage.toFixed(
|
13469
|
+
.width( percentage.toFixed( 1 ) + "%" );
|
13470
13470
|
|
13471
13471
|
this
|
13472
13472
|
._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
|
@@ -18703,4 +18703,4 @@ var widgetsTooltip = $.ui.tooltip;
|
|
18703
18703
|
|
18704
18704
|
|
18705
18705
|
|
18706
|
-
}));
|
18706
|
+
}));
|
data/public/js/presenter.js
CHANGED
@@ -18,25 +18,57 @@ $(document).ready(function(){
|
|
18
18
|
// the presenter window doesn't need the reload on resize bit
|
19
19
|
$(window).unbind('resize');
|
20
20
|
|
21
|
-
$("#startTimer").click(function() { startTimer()
|
22
|
-
$("#pauseTimer").click(function() { toggleTimer()
|
23
|
-
$("#stopTimer").click(function()
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
$(
|
28
|
-
|
29
|
-
$(
|
30
|
-
|
21
|
+
$("#startTimer").click( function() { startTimer() });
|
22
|
+
$("#pauseTimer").click( function() { toggleTimer() });
|
23
|
+
$("#stopTimer").click( function() { stopTimer() });
|
24
|
+
$("#close-sidebar").click( function() { toggleSidebar() });
|
25
|
+
$("#edit").click( function() { editSlide() });
|
26
|
+
// browser security causes a click event to react differently than an actual user click. Even though they're the same damn thing.
|
27
|
+
// $("#report").click( function() { reportIssue() });
|
28
|
+
$("#slaveWindow").click( function() { toggleSlave() });
|
29
|
+
$("#printSlides").click( function() { printSlides() });
|
30
|
+
$("#settings").click( function() { $("#settings-modal").dialog("open"); });
|
31
|
+
$("#slideSource a").click( function() { openEditor() });
|
32
|
+
$("#notesToggle").click( function() { toggleNotes() });
|
33
|
+
$("#clearCookies").click( function() { clearCookies() });
|
34
|
+
$("#nextWinCancel").click( function() { chooseLayout('default') });
|
35
|
+
$("#openNextWindow").click(function() { openNext() });
|
36
|
+
|
37
|
+
$("#notes-wrapper .fa-minus").click( function() {
|
38
|
+
notesFontSize('decrease');
|
31
39
|
});
|
32
|
-
$(
|
33
|
-
|
40
|
+
$("#notes-wrapper .fa-dot-circle-o").click( function() {
|
41
|
+
notesFontSize('reset');
|
34
42
|
});
|
35
|
-
$(
|
36
|
-
|
43
|
+
$("#notes-wrapper .fa-plus").click( function() {
|
44
|
+
notesFontSize('increase');
|
37
45
|
});
|
46
|
+
|
47
|
+
$('#statslink').click(function(e) { presenterPopupToggle('/stats', e); });
|
48
|
+
$('#downloadslink').click(function(e) { presenterPopupToggle('/download', e); });
|
49
|
+
|
50
|
+
$('#layoutSelector').change(function(e) { chooseLayout(e.target.value); });
|
51
|
+
|
38
52
|
chooseLayout(null);
|
39
53
|
|
54
|
+
$("#settings-modal").dialog({
|
55
|
+
autoOpen: false,
|
56
|
+
dialogClass: "no-close",
|
57
|
+
draggable: false,
|
58
|
+
height: "auto",
|
59
|
+
modal: true,
|
60
|
+
resizable: false,
|
61
|
+
width: 400,
|
62
|
+
buttons: {
|
63
|
+
Close: function() {
|
64
|
+
$( this ).dialog( "close" );
|
65
|
+
}
|
66
|
+
}
|
67
|
+
});
|
68
|
+
|
69
|
+
$("#annotationsToggle").checkboxradio({
|
70
|
+
icon: false
|
71
|
+
});
|
40
72
|
|
41
73
|
// Bind events for mobile viewing
|
42
74
|
if( mobile() ) {
|
@@ -68,9 +100,6 @@ $(document).ready(function(){
|
|
68
100
|
document.cookie = "notes="+$('#notes').height();
|
69
101
|
});
|
70
102
|
|
71
|
-
// Turn the progress display into an actual progressbar
|
72
|
-
$('#progress').progressbar({max:100})
|
73
|
-
|
74
103
|
// restore the UI settings
|
75
104
|
var ui = document.cookieHash['ui'];
|
76
105
|
$('#notes').height(document.cookieHash['notes']);
|
@@ -146,7 +175,6 @@ $(document).ready(function(){
|
|
146
175
|
|
147
176
|
}, 30000);
|
148
177
|
|
149
|
-
|
150
178
|
// Tell the showoff server that we're a presenter
|
151
179
|
register();
|
152
180
|
|
@@ -165,6 +193,10 @@ $(document).ready(function(){
|
|
165
193
|
}
|
166
194
|
};
|
167
195
|
|
196
|
+
/* zoom slide to match preview size, then set up resize handler. */
|
197
|
+
zoom(true);
|
198
|
+
$(window).resize(function() { zoom(true); });
|
199
|
+
|
168
200
|
});
|
169
201
|
|
170
202
|
function presenterPopupToggle(page, event) {
|
@@ -356,6 +388,23 @@ function toggleNotes() {
|
|
356
388
|
zoom(true);
|
357
389
|
}
|
358
390
|
|
391
|
+
function notesFontSize(action) {
|
392
|
+
var current = parseInt($('#notes').css('font-size'));
|
393
|
+
switch (action) {
|
394
|
+
case 'increase':
|
395
|
+
$('#notes').css('font-size', current * 1.1);
|
396
|
+
break;
|
397
|
+
|
398
|
+
case 'decrease':
|
399
|
+
$('#notes').css('font-size', current * 0.9);
|
400
|
+
break;
|
401
|
+
|
402
|
+
case 'reset':
|
403
|
+
$('#notes').css('font-size', '');
|
404
|
+
break;
|
405
|
+
}
|
406
|
+
}
|
407
|
+
|
359
408
|
function blankStyledWindow(title, dimensions, classes, resizable) {
|
360
409
|
// yes, the explicit address is needed. Because Chrome.
|
361
410
|
var opts = "status=0,toolbar=0,location=0,menubar=0,"+dimensions;
|
@@ -579,21 +628,20 @@ function postSlide() {
|
|
579
628
|
$('#notes').html(notes);
|
580
629
|
|
581
630
|
var sections = getCurrentSections();
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
631
|
+
|
632
|
+
var ul = $('.section-selector').empty();
|
633
|
+
if(sections.size() > 0) {
|
634
|
+
sections.each( function (idx, value) {
|
635
|
+
var li = $('<li>').prependTo(ul);
|
586
636
|
var a = $('<a/>')
|
587
637
|
.text(value)
|
588
638
|
.attr('href','javascript:setCurrentSection("'+value+'");')
|
589
639
|
.appendTo(li);
|
590
640
|
|
591
|
-
if(section
|
641
|
+
if(section === value) {
|
592
642
|
li.addClass('selected');
|
593
643
|
}
|
594
644
|
});
|
595
|
-
|
596
|
-
$('#notes').prepend(ul);
|
597
645
|
}
|
598
646
|
|
599
647
|
var nextIndex = slidenum + 1;
|
@@ -613,7 +661,8 @@ function postSlide() {
|
|
613
661
|
|
614
662
|
var fileName = currentSlide.children('div').first().attr('ref');
|
615
663
|
$('#slideFile').text(fileName);
|
616
|
-
$('#progress').progressbar(
|
664
|
+
$('#progress').progressbar({ max: slideTotal })
|
665
|
+
.progressbar('value', slidenum);
|
617
666
|
|
618
667
|
$("#notes div.form.wrapper").each(function(e) {
|
619
668
|
renderFormInterval = renderFormWatcher($(this));
|
@@ -823,8 +872,7 @@ function toggleUpdater()
|
|
823
872
|
/********************
|
824
873
|
Annotations
|
825
874
|
********************/
|
826
|
-
function toggleAnnotations()
|
827
|
-
{
|
875
|
+
function toggleAnnotations() {
|
828
876
|
mode.annotations = $("#annotationsToggle").prop("checked");
|
829
877
|
|
830
878
|
if(mode.annotations) {
|
@@ -842,7 +890,7 @@ function toggleAnnotations()
|
|
842
890
|
}
|
843
891
|
|
844
892
|
function openNext() {
|
845
|
-
$("#nextWindowConfirmation").
|
893
|
+
$("#nextWindowConfirmation").hide();
|
846
894
|
try {
|
847
895
|
if(windowIsClosed(nextWindow)){
|
848
896
|
nextWindow = blankStyledWindow("Next Slide Preview", 'width=320,height=300', 'next');
|
@@ -857,7 +905,7 @@ function openNext() {
|
|
857
905
|
|
858
906
|
postSlide();
|
859
907
|
}, 500);
|
860
|
-
|
908
|
+
$("#settings-modal").dialog("close");
|
861
909
|
}
|
862
910
|
}
|
863
911
|
catch(e) {
|
@@ -876,7 +924,7 @@ function chooseLayout(layout)
|
|
876
924
|
|
877
925
|
// in case we're being called externally, make the UI match
|
878
926
|
$('#layoutSelector').val(layout);
|
879
|
-
$("#nextWindowConfirmation").
|
927
|
+
$("#nextWindowConfirmation").hide();
|
880
928
|
console.log("Setting layout to " + layout);
|
881
929
|
|
882
930
|
// change focus so we don't inadvertently change layout again by changing slides
|
@@ -930,7 +978,7 @@ function chooseLayout(layout)
|
|
930
978
|
break;
|
931
979
|
|
932
980
|
case 'floating':
|
933
|
-
$("#nextWindowConfirmation").
|
981
|
+
$("#nextWindowConfirmation").show();
|
934
982
|
break;
|
935
983
|
|
936
984
|
default:
|
data/public/js/showoff.js
CHANGED
@@ -362,11 +362,7 @@ function setupMenu() {
|
|
362
362
|
sectionUL = '';
|
363
363
|
|
364
364
|
slides.each(function(s, slide){
|
365
|
-
var slidePath = $(slide)
|
366
|
-
.find(".content")
|
367
|
-
.attr('ref')
|
368
|
-
.split('/')
|
369
|
-
.shift();
|
365
|
+
var slidePath = $(slide).attr('data-section');
|
370
366
|
var headers = $(slide).children("h1, h2");
|
371
367
|
var slideTitle = '';
|
372
368
|
var content;
|
@@ -438,6 +434,13 @@ function setupMenu() {
|
|
438
434
|
$("#navigation").append(nav);
|
439
435
|
}
|
440
436
|
|
437
|
+
// at some point this should get more sophisticated. Our needs are pretty minimal so far.
|
438
|
+
function clearCookies() {
|
439
|
+
document.cookie = "sidebar=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
|
440
|
+
document.cookie = "layout=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
|
441
|
+
document.cookie = "notes=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
|
442
|
+
}
|
443
|
+
|
441
444
|
function checkSlideParameter() {
|
442
445
|
if (slideParam = currentSlideFromParams()) {
|
443
446
|
slidenum = slideParam;
|
data/views/header.erb
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/highlight/<%= @highlightStyle %>.css" />
|
11
11
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/mermaid-6.0.0.css" />
|
12
12
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/font-awesome-4.4.0/css/font-awesome.min.css">
|
13
|
+
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/jquery-ui-1.12.1.css">
|
13
14
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/showoff.css?v=<%= SHOWOFF_VERSION %>" />
|
14
15
|
<link rel="stylesheet" type="text/css" href="<%= @asset_path %>/css/zoomline-0.0.1.css">
|
15
16
|
|
data/views/presenter.erb
CHANGED
@@ -5,7 +5,6 @@
|
|
5
5
|
<%= erb :header %>
|
6
6
|
<link rel="stylesheet" href="<%= @asset_path %>/css/presenter.css?v=<%= SHOWOFF_VERSION %>" type="text/css"/>
|
7
7
|
<link href="<%= @asset_path %>/css/TimeCircles-89ac5ae.css" rel="stylesheet">
|
8
|
-
<link href="<%= @asset_path %>/css/jquery-ui-1.12.1.css" rel="stylesheet">
|
9
8
|
|
10
9
|
<script type="text/javascript" src="<%= @asset_path %>/js/TimeCircles-89ac5ae.js"></script>
|
11
10
|
<script type="text/javascript" src="<%= @asset_path %>/js/presenter.js?v=<%= SHOWOFF_VERSION %>"></script>
|
@@ -22,136 +21,161 @@
|
|
22
21
|
|
23
22
|
<div id="pagewrapper">
|
24
23
|
<div id="topbar">
|
25
|
-
<a id="close-sidebar" class="fa fa-bars" aria-hidden="true" href="
|
26
|
-
|
27
|
-
<label>Source:</label>
|
28
|
-
<% if @request.host == 'localhost' %>
|
29
|
-
<a href="javascript:openEditor();"><span id="slideFile"></span></a>
|
30
|
-
<% else %>
|
31
|
-
<span id="slideFile"></span>
|
32
|
-
<% end %>
|
33
|
-
</span>
|
24
|
+
<a id="close-sidebar" class="fa fa-bars fa-2x" aria-hidden="true" href="#"></a>
|
25
|
+
|
34
26
|
<span id="links">
|
35
27
|
<span class="desktop">
|
28
|
+
<label for="annotationsToggle" class="no-mobile">Annotations <i class="fa fa-pencil"></i></label>
|
29
|
+
<input type="checkbox" id="annotationsToggle" autocomplete="off" class="no-mobile" />
|
30
|
+
|
36
31
|
<% if @edit %>
|
37
|
-
<a id="edit" href="
|
32
|
+
<a id="edit" href="#" title="Edit current slide in new window.">Edit Slide <i class="fa fa-pencil-square-o"></i></a>
|
38
33
|
<% end %>
|
39
34
|
<% if @issues %>
|
40
35
|
<a id="report" href="javascript:reportIssue();" title="Report an issue with the current slide.">Report Issue With Slide <i class="fa fa-list-alt"></i></a>
|
41
36
|
<% end %>
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
<
|
50
|
-
|
51
|
-
|
52
|
-
</span>
|
37
|
+
|
38
|
+
<a id="statslink" href="">Viewing Statistics <i class="fa fa-chevron-down"></i></a>
|
39
|
+
|
40
|
+
<a id="downloadslink" href="">Downloads <i class="fa fa-chevron-down"></i></a>
|
41
|
+
|
42
|
+
<a id="slaveWindow" href="#" title="Enable the display window.">Display Window <i class="fa fa-clone"></i></a>
|
43
|
+
|
44
|
+
<a id="printSlides" href="#" title="Print slides using a new window.">Print Slides <i class="fa fa-print"></i></a>
|
45
|
+
|
46
|
+
<a id="settings" href="#">Settings <i class="fa fa-cog"></i></a>
|
53
47
|
</span>
|
54
|
-
|
55
|
-
|
56
|
-
<option value="thumbs" title="Display thumbnail previews of the next and previous slides.">Thumbnails</option>
|
57
|
-
<option value="floating" title="Open the next slide as a floating window.">Floating</option>
|
58
|
-
<option value="beside" title="Display the next slide as a large preview in the main presenter view.">Side-by-Side</option>
|
59
|
-
</select>
|
48
|
+
|
49
|
+
|
60
50
|
<span class="mobile">
|
61
51
|
<a id="update" href="">Update</a>
|
62
52
|
</span>
|
63
53
|
</span>
|
64
54
|
</div>
|
65
|
-
<div id="nextWindowConfirmation">
|
66
|
-
<p>Browser security requires confirmation before opening a new window.</p>
|
67
|
-
<p><a href="javascript:chooseLayout('default');">cancel</a><input type="button" onClick="javascript:openNext();" value="Open Window" /></p>
|
68
|
-
</div>
|
69
|
-
|
70
|
-
<div id="main">
|
71
|
-
<div id="sidebar">
|
72
|
-
<div id="timerSection">
|
73
|
-
<input type="button" id="pauseTimer" value="Pause" />
|
74
|
-
<input type="button" id="stopTimer" value="Cancel" />
|
75
|
-
<span id="timerLabel">Timer:</span>
|
76
|
-
<span id="minStart">
|
77
|
-
<input type="text" size="8" id="timerMinutes"/> min
|
78
|
-
<input type="button" id="startTimer" value="Start" />
|
79
|
-
</span>
|
80
|
-
<div id="timerDisplay"></div>
|
81
|
-
</div>
|
82
|
-
<div id="feedbackPace">
|
83
|
-
<span id="paceSlow">Speed Up!</span>
|
84
|
-
<span id="paceFast">Slow Down!</span>
|
85
|
-
<img id="paceMarker" src="<%= @asset_path %>/css/paceMarker.png" />
|
86
|
-
</div>
|
87
|
-
<div id="navigation" class="submenu"></div>
|
88
|
-
<div id="navigationHover"></div>
|
89
|
-
<div id="questions">
|
90
|
-
<h3>Audience Questions</h3>
|
91
|
-
<ol id="unanswered"></ol>
|
92
|
-
<ol id="answered"></ol>
|
93
|
-
</div>
|
94
|
-
</div>
|
95
55
|
|
96
|
-
<div id="
|
97
|
-
<div id="
|
98
|
-
<div id="
|
99
|
-
<
|
100
|
-
<
|
101
|
-
<
|
102
|
-
<
|
56
|
+
<div id="main">
|
57
|
+
<div id="sidebar">
|
58
|
+
<div id="timerSection">
|
59
|
+
<input type="button" id="pauseTimer" value="Pause" />
|
60
|
+
<input type="button" id="stopTimer" value="Cancel" />
|
61
|
+
<span id="timerLabel">Timer:</span>
|
62
|
+
<span id="minStart">
|
63
|
+
<input type="text" size="8" id="timerMinutes"/> min
|
64
|
+
<input type="button" id="startTimer" value="Start" />
|
65
|
+
</span>
|
66
|
+
<div id="timerDisplay"></div>
|
103
67
|
</div>
|
104
|
-
<div id="
|
105
|
-
<
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
<i class="fa fa-square-o lines color4" aria-hidden="true"></i>
|
116
|
-
<label>Shapes</label>
|
117
|
-
<i class="fa fa-square shapes color1" aria-hidden="true"></i>
|
118
|
-
<i class="fa fa-square shapes color2" aria-hidden="true"></i>
|
119
|
-
<i class="fa fa-square shapes color3 active" aria-hidden="true"></i>
|
120
|
-
<i class="fa fa-square shapes color4" aria-hidden="true"></i>
|
68
|
+
<div id="feedbackPace">
|
69
|
+
<span id="paceSlow">Speed Up!</span>
|
70
|
+
<span id="paceFast">Slow Down!</span>
|
71
|
+
<img id="paceMarker" src="<%= @asset_path %>/css/paceMarker.png" />
|
72
|
+
</div>
|
73
|
+
<div id="navigation" class="submenu"></div>
|
74
|
+
<div id="navigationHover"></div>
|
75
|
+
<div id="questions">
|
76
|
+
<h3>Audience Questions</h3>
|
77
|
+
<ol id="unanswered"></ol>
|
78
|
+
<ol id="answered"></ol>
|
121
79
|
</div>
|
122
80
|
</div>
|
123
81
|
|
124
|
-
<div id="
|
125
|
-
<div id="
|
126
|
-
|
82
|
+
<div id="presenter">
|
83
|
+
<div id="frame">
|
84
|
+
<div id="preview">
|
85
|
+
<img id="disconnected" src="<%= @asset_path %>/css/disconnected-large.png" />
|
86
|
+
<div id="prevSlide" class="thumb"><div class="container"></div><h3 class="label">Previous</h3></div>
|
87
|
+
<div id="nextSlide" class="thumb"><div class="container"></div><h3 class="label">Next</h3></div>
|
88
|
+
<div id="preso">loading presentation...</div>
|
89
|
+
</div>
|
90
|
+
<div id="annotationToolbar">
|
91
|
+
<label>Tools</label>
|
92
|
+
<i class="fa fa-pencil tool default active" data-action="draw" aria-hidden="true"></i>
|
93
|
+
<i class="fa fa-arrow-right tool" data-action="rightArrow" aria-hidden="true"></i>
|
94
|
+
<i class="fa fa-arrow-left tool" data-action="leftArrow" aria-hidden="true"></i>
|
95
|
+
<i class="fa fa-bullseye tool" data-action="highlight" aria-hidden="true"></i>
|
96
|
+
<i class="fa fa-eraser tool" data-action="erase" aria-hidden="true"></i>
|
97
|
+
<label>Lines</label>
|
98
|
+
<i class="fa fa-square-o lines color1 active" aria-hidden="true"></i>
|
99
|
+
<i class="fa fa-square-o lines color2" aria-hidden="true"></i>
|
100
|
+
<i class="fa fa-square-o lines color3" aria-hidden="true"></i>
|
101
|
+
<i class="fa fa-square-o lines color4" aria-hidden="true"></i>
|
102
|
+
<label>Shapes</label>
|
103
|
+
<i class="fa fa-square shapes color1" aria-hidden="true"></i>
|
104
|
+
<i class="fa fa-square shapes color2" aria-hidden="true"></i>
|
105
|
+
<i class="fa fa-square shapes color3 active" aria-hidden="true"></i>
|
106
|
+
<i class="fa fa-square shapes color4" aria-hidden="true"></i>
|
107
|
+
</div>
|
108
|
+
</div>
|
127
109
|
|
128
|
-
<div
|
129
|
-
<span
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
110
|
+
<div id="statusbar">
|
111
|
+
<span class="label">Slide: <span id="slideInfo"></span></span>
|
112
|
+
<span id="debugInfo"></span>
|
113
|
+
<span id="slideSource">
|
114
|
+
<% if @request.host == 'localhost' %>
|
115
|
+
<a href="#"><span id="slideFile"></span></a>
|
116
|
+
<% else %>
|
117
|
+
<span id="slideFile"></span>
|
118
|
+
<% end %>
|
134
119
|
</span>
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
<i class="
|
120
|
+
</div>
|
121
|
+
<div id="progress" class="no-mobile"></div>
|
122
|
+
|
123
|
+
<div id="buttonNav">
|
124
|
+
<div id="buttonPrev"><i class="fa fa-chevron-left fa-lg"></i> Previous</div><div id="buttonNext">Next <i class="fa fa-chevron-right fa-lg"></i></div>
|
140
125
|
</div>
|
141
126
|
|
127
|
+
<div id="notes-wrapper">
|
128
|
+
<ul class="section-selector"></ul>
|
129
|
+
<div class="controls">
|
130
|
+
<a class="no-mobile fa fa-minus small" aria-hidden="true" href="#"></a>
|
131
|
+
<a class="no-mobile fa fa-dot-circle-o small" aria-hidden="true" href="#"></a>
|
132
|
+
<a class="no-mobile fa fa-plus small" aria-hidden="true" href="#"></a>
|
133
|
+
<span class="spacer"> </span>
|
134
|
+
<a id="notesToggle" class="no-mobile fa fa-external-link-square" aria-hidden="true" href="#"></a>
|
135
|
+
<span><i class="no-mobile fa fa-bars notes-grippy ui-resizable-handle ui-resizable-n" aria-hidden="true"></i></span>
|
136
|
+
</div>
|
137
|
+
<div id="notes"></div>
|
138
|
+
</div>
|
139
|
+
</div><!-- end presenter -->
|
140
|
+
</div><!-- end main -->
|
141
|
+
|
142
|
+
<div id="settings-modal" title="Settings">
|
143
|
+
<div id="enableFollower" class="setting" title="Send slide change notifications.">
|
144
|
+
<label for="followerToggle">Update Follower</label><input type="checkbox" id="followerToggle" autocomplete="off" checked />
|
145
|
+
<p class="description">
|
146
|
+
When this is enabled, the Showoff server will track your slide changes. Disable it to observe the presentation without inadvertently causing slide changes.
|
147
|
+
</p>
|
142
148
|
</div>
|
143
|
-
<div id="
|
144
|
-
<
|
149
|
+
<div id="enableRemote" class="setting" title="Enables tracking of other presenters.">
|
150
|
+
<label for="remoteToggle">Enable Remote</label><input type="checkbox" id="remoteToggle" autocomplete="off" checked />
|
151
|
+
<p class="description">
|
152
|
+
When this is enabled, you can load the presenter in another browser (typically on your mobile phone) to control the presentation.
|
153
|
+
</p>
|
154
|
+
</div>
|
155
|
+
<div class="setting">
|
156
|
+
<label>Layout</label><br>
|
157
|
+
<select id="layoutSelector" autocomplete="off">
|
158
|
+
<option value="default" selected>Default Layout</option>
|
159
|
+
<option value="thumbs" title="Display thumbnail previews of the next and previous slides.">Thumbnails</option>
|
160
|
+
<option value="floating" title="Open the next slide as a floating window.">Floating</option>
|
161
|
+
<option value="beside" title="Display the next slide as a large preview in the main presenter view.">Side-by-Side</option>
|
162
|
+
</select>
|
163
|
+
<div id="nextWindowConfirmation">
|
164
|
+
<p class="description">Browser security requires confirmation before opening a new window.</p>
|
165
|
+
<p>
|
166
|
+
<input id="openNextWindow" type="button" onClick="#" value="Open Window" />
|
167
|
+
<a id="nextWinCancel" href="#">cancel</a>
|
168
|
+
</p>
|
169
|
+
</div>
|
170
|
+
</div>
|
171
|
+
<div class="links">
|
172
|
+
<a id="clearCookies" href="#" title="Reset Showoff UI settings to default values.">Clear Showoff settings.</a>
|
145
173
|
</div>
|
146
|
-
|
147
|
-
<div id="notes"></div>
|
148
174
|
</div>
|
149
175
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
</div>
|
155
|
-
|
176
|
+
<div id="slides" class="offscreen" <%= 'style="display:none;"' if @slides %>>
|
177
|
+
<%= @slides %>
|
178
|
+
</div>
|
179
|
+
</div><!-- end pagewrapper -->
|
156
180
|
</body>
|
157
181
|
</html>
|