showoff 0.16.2 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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>