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.
@@ -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
- width: 200px;
525
- height: 150px;
526
- background-color: white;
527
- border: 1px solid #4D4F53;
531
+ background-color: inherit;
528
532
  margin: 0px;
529
- border-radius: 3px;
530
- box-shadow: 3px 3px 5px #ccc;
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: #63de00;
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( 0 ) + "%" );
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
+ }));
@@ -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() { stopTimer() });
24
-
25
- /* zoom slide to match preview size, then set up resize handler. */
26
- zoom(true);
27
- $(window).resize(function() { zoom(true); });
28
-
29
- $('#statslink').click(function(e) {
30
- presenterPopupToggle('/stats', e);
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
- $('#downloadslink').click(function(e) {
33
- presenterPopupToggle('/download', e);
40
+ $("#notes-wrapper .fa-dot-circle-o").click( function() {
41
+ notesFontSize('reset');
34
42
  });
35
- $('#layoutSelector').change(function(e) {
36
- chooseLayout(e.target.value);
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
- if(sections.size() > 1) {
583
- var ul = $('<ul>').addClass('section-selector');
584
- sections.each(function(idx, value){
585
- var li = $('<li/>').appendTo(ul);
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 == value) {
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('value', getSlidePercent());
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").slideUp(125);
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").slideUp(125);
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").slideDown(125);
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="javascript:toggleSidebar();"></a>
26
- <span id="slideSource">
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="javascript:editSlide();" title="Edit current slide in new window.">Edit Slide <i class="fa fa-pencil-square-o"></i></a>
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
- <span>
43
- <a id="statslink" href="">Viewing Statistics <i class="fa fa-chevron-down"></i></a>
44
- <a id="downloadslink" href="">Downloads <i class="fa fa-chevron-down"></i></a>
45
- </span>
46
- <span>
47
- <a id="slaveWindow" href="javascript:toggleSlave();" title="Enable the display window.">Display Window <i class="fa fa-clone"></i></a>
48
- </span>
49
- <span>
50
- <a id="printSlides" href="javascript:printSlides();" title="Print slides using a new window.">Print Slides <i class="fa fa-print"></i></a>
51
- <a id="onePage" href="/" title="Switch to Display Window.">Switch Views <i class="fa fa-exchange fa-rotate-90"></i></a>
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
- <select id="layoutSelector" autocomplete="off">
55
- <option value="default" selected>Default Layout</option>
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="presenter">
97
- <div id="frame">
98
- <div id="preview">
99
- <img id="disconnected" src="<%= @asset_path %>/css/disconnected-large.png" />
100
- <div id="prevSlide" class="thumb"><div class="container"></div><h3 class="label">Previous</h3></div>
101
- <div id="nextSlide" class="thumb"><div class="container"></div><h3 class="label">Next</h3></div>
102
- <div id="preso">loading presentation...</div>
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="annotationToolbar">
105
- <label>Tools</label>
106
- <i class="fa fa-pencil tool default active" data-action="draw" aria-hidden="true"></i>
107
- <i class="fa fa-arrow-right tool" data-action="rightArrow" aria-hidden="true"></i>
108
- <i class="fa fa-arrow-left tool" data-action="leftArrow" aria-hidden="true"></i>
109
- <i class="fa fa-bullseye tool" data-action="highlight" aria-hidden="true"></i>
110
- <i class="fa fa-eraser tool" data-action="erase" aria-hidden="true"></i>
111
- <label>Lines</label>
112
- <i class="fa fa-square-o lines color1 active" aria-hidden="true"></i>
113
- <i class="fa fa-square-o lines color2" aria-hidden="true"></i>
114
- <i class="fa fa-square-o lines color3" aria-hidden="true"></i>
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="statusbar">
125
- <div id="progress" class="no-mobile"><span class="label">Slide: <span id="slideInfo"></span></span></div>
126
- <div id="debugInfo"></div>
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 class="controls">
129
- <span id="enableAnnotations" title="Enable the annotation system." class="no-mobile">
130
- <label for="annotationsToggle">Annotations</label><input type="checkbox" id="annotationsToggle" autocomplete="off" />
131
- </span>
132
- <span id="enableFollower" title="Send slide change notifications.">
133
- <label for="followerToggle">Update Follower</label><input type="checkbox" id="followerToggle" autocomplete="off" checked />
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
- <span id="enableRemote" title="Enables tracking of other presenters.">
136
- <label for="remoteToggle">Enable Remote</label><input type="checkbox" id="remoteToggle" autocomplete="off" checked />
137
- </span>
138
- <a class="no-mobile fa fa-external-link-square" aria-hidden="true" href="javascript:toggleNotes();"></a>
139
- <i class="no-mobile fa fa-bars notes-grippy ui-resizable-handle ui-resizable-n" aria-hidden="true"></i>
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="buttonNav">
144
- <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>
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
- </div>
151
-
152
- <div id="slides" class="offscreen" <%= 'style="display:none;"' if @slides %>>
153
- <%= @slides %>
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>