showoff 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
data/views/download.erb CHANGED
@@ -6,30 +6,27 @@
6
6
  </head>
7
7
 
8
8
  <body id="download">
9
-
10
- <div id="preso">
11
- <div id="wrapper">
12
- <h1>File Downloads</h1>
13
-
14
- <ul id="downloads">
15
- <% if @downloads %>
16
- <%# [ enabled, slide name, [array, of, files] ] %>
17
- <% @downloads.sort.map do |key, value| %>
18
- <% enabled, title, files = value %>
19
- <% if enabled %>
20
- <% files.each do |file| %>
21
- <% if key == -999 %>
22
- <li><a href="/file/_files/share/<%= file %>"><%= title %>/<%= file %></a></li>
23
- <% else %>
24
- <li><a href="/file/_files/<%= file %>">Slide <%= key %>: <%= title %>/<%= file %></a></li>
25
- <% end %>
26
- <% end %>
27
- <% end %>
28
- <% end %>
9
+ <div id="wrapper"> <!-- wrapper needed for presenterPopupToggle() and $.get() -->
10
+ <h1>File Downloads</h1>
11
+ <% if @downloads %>
12
+ <%# [ enabled, slide name, [array, of, files] ] %>
13
+ <% @downloads.sort.map do |key, value| %>
14
+ <% enabled, title, files = value %>
15
+ <% if enabled %>
16
+ <%if key != -999 %>
17
+ <% path = '/file/_files' %>
18
+ <h4>Slide <%= key %> <small>(<%= title %>)</small></h4>
19
+ <% else %>
20
+ <% path = '/file/_files/share' %>
29
21
  <% end %>
30
-
31
- </ul>
32
- </div>
33
- </div>
22
+ <ul>
23
+ <% files.each do |file| %>
24
+ <li><a href="<%= path %>/<%= file %>"><%= file %></a></li>
25
+ <% end %>
26
+ </ul>
27
+ <% end %>
28
+ <% end %>
29
+ <% end %>
30
+ </div>
34
31
  </body>
35
32
  </html>
data/views/header.erb CHANGED
@@ -39,7 +39,10 @@
39
39
  setupPreso(<%= @slides.nil? ? "true" : "false"%>, '<%= @asset_path %>');
40
40
  });
41
41
 
42
- editUrl = "<%= @edit %>";
42
+ interactive = <%= @interactive %>;
43
+
44
+ keymap = <%= JSON.pretty_generate @keymap %>;
45
+ keycode_dictionary = <%= JSON.pretty_generate @keycode_dictionary %>;
46
+ keycode_shifted_keys = <%= JSON.pretty_generate @keycode_shifted_keys %>;
43
47
 
44
- keymap = <%= JSON.pretty_generate @keymap %>;
45
48
  </script>
data/views/index.erb CHANGED
@@ -6,38 +6,43 @@
6
6
  </head>
7
7
 
8
8
  <body>
9
+ <div id="questionsIndicator"></div>
9
10
 
10
11
  <i id="hamburger" class="fa fa-bars fa-2x"></i>
11
12
  <div id="sidebarWrapper">
12
13
  <div id="feedbackSidebar" class="sideMenu">
14
+ <img id="disconnected" src="/css/disconnected.png">
13
15
  <h3>Showoff Menu</h3>
14
16
  <div id="navToggle" class="buttonWrapper"><i class=" fa fa-bookmark"></i> Table of Contents</div>
15
17
  <div id="navigation" class="submenu"></div>
18
+ <% if not @static then %>
16
19
  <hr>
17
20
  <div id="fileDownloads" class="buttonWrapper"><i class="fa fa-download"></i> Downloads</div>
21
+ <% end %>
18
22
  <hr>
19
23
 
20
- <% if @feedback then %>
24
+ <% if @feedback and not @static then %>
21
25
  <p>The presenter should...</p>
22
- <div id="paceSlower" class="buttonWrapper split">
26
+ <div id="paceSlower" class="buttonWrapper split interactive">
23
27
  <i class="fa fa-minus"></i>
24
28
  <br>Slow Down
25
29
  </div>
26
- <div id="paceFaster" class="buttonWrapper split">
30
+ <div id="paceFaster" class="buttonWrapper split interactive">
27
31
  <i class="fa fa-plus"></i>
28
32
  <br>Speed Up
29
33
  </div>
30
34
 
31
35
  <hr>
32
- <div id="questionToggle" class="buttonWrapper"><i class="fa fa-hand-stop-o"></i> Ask a Question</div>
36
+ <div id="questionToggle" class="buttonWrapper interactive"><i class="fa fa-hand-stop-o"></i> Ask a Question</div>
33
37
  <div id="questionSubmenu" class="submenu">
34
38
  <textarea id="question" placeholder="Ask a question..."></textarea>
35
- <div id="askQuestion" class="buttonWrapper">Ask</div>
39
+ <div id="askQuestion" class="buttonWrapper interactive">Ask</div>
36
40
  </div>
37
-
41
+ <ul id="askedQuestions"></ul>
42
+
38
43
  <hr>
39
-
40
- <div id="feedbackToggle" class="buttonWrapper"><i class="fa fa-envelope"></i> Send Feedback</div>
44
+
45
+ <div id="feedbackToggle" class="buttonWrapper interactive"><i class="fa fa-envelope"></i> Send Feedback</div>
41
46
  <div id="feedbackSubmenu" class="submenu">
42
47
  <p>This slide is...</p>
43
48
  <small>
@@ -50,9 +55,9 @@
50
55
  Awesome
51
56
  </small>
52
57
  <textarea id="feedback" placeholder="Why...?"></textarea>
53
- <div id="sendFeedback" class="buttonWrapper">Send</div>
58
+ <div id="sendFeedback" class="buttonWrapper interactive">Send</div>
54
59
  </div>
55
-
60
+
56
61
  <% if @edit then %>
57
62
  <hr>
58
63
  <div id="editSlide" class="buttonWrapper">Edit Current Slide</div>
@@ -74,6 +79,8 @@
74
79
 
75
80
  <div id="preso"><center>loading presentation...</center></div>
76
81
 
82
+ <div id="notes"></div>
83
+
77
84
  <footer id="footer">
78
85
  <span id="followMode"></span>
79
86
  <span id="slideInfo"></span>
@@ -86,6 +93,9 @@
86
93
  <div id="slides" class="offscreen" <%= 'style="display:none;"' if @slides %>>
87
94
  <%= @slides %>
88
95
  </div>
96
+ <div id="buttonNav">
97
+ <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>
98
+ </div>
89
99
  <div id="pauseScreen">
90
100
  <%= @pause_msg %>
91
101
  </div>
data/views/presenter.erb CHANGED
@@ -4,6 +4,8 @@
4
4
  <head>
5
5
  <%= erb :header %>
6
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>
7
9
  <script type="text/javascript" src="<%= @asset_path %>/js/presenter.js"></script>
8
10
  <script type="text/javascript">
9
11
  editUrl = "<%= @edit %>";
@@ -17,20 +19,20 @@
17
19
  <div id="main">
18
20
  <div id="topbar">
19
21
  <span id="slideSource">
20
- Source:
22
+ <label>Source:</label>
21
23
  <% if @request.host == 'localhost' %>
22
24
  <a href="javascript:openEditor();"><span id="slideFile"></span></a>
23
25
  <% else %>
24
- <span id="slideFile">
26
+ <span id="slideFile"></span>
25
27
  <% end %>
26
28
  </span>
27
29
  <span id="links">
28
30
  <span class="desktop">
29
31
  <% if @edit %>
30
- <a id="edit" href="javascript:editSlide();" title="Edit current slide in new window.">Edit Slide</a>
32
+ <a id="edit" href="javascript:editSlide();" title="Edit current slide in new window.">Edit Slide <i class="fa fa-pencil-square-o"></i></a>
31
33
  <% end %>
32
34
  <% if @issues %>
33
- <a id="report" href="javascript:reportIssue();" title="Report an issue with the current slide.">Report Issue With Slide</a>
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>
34
36
  <% end %>
35
37
  <span>
36
38
  <a id="statslink" href="">Viewing Statistics <i class="fa fa-chevron-down"></i></a>
@@ -42,8 +44,8 @@
42
44
  <a id="notesWindow" href="javascript:toggleNotes();" title="Enable the popout notes window.">Notes Window <i class="fa fa-clone"></i></a>
43
45
  </span>
44
46
  <span>
45
- <a id="printSlides" href="javascript:printSlides();" title="Print slides using a new window.">Print Slides</a>
46
- <a id="onePage" href="/" title="Switch to Display Window.">Switch Views</a>
47
+ <a id="printSlides" href="javascript:printSlides();" title="Print slides using a new window.">Print Slides <i class="fa fa-print"></i></a>
48
+ <a id="onePage" href="/" title="Switch to Display Window.">Switch Views <i class="fa fa-exchange fa-rotate-90"></i></a>
47
49
  </span>
48
50
  </span>
49
51
  <span class="mobile">
@@ -55,13 +57,14 @@
55
57
  <div id="center">
56
58
  <div id="sidebar">
57
59
  <div id="timerSection">
58
- Timer:
60
+ <input type="button" id="pauseTimer" value="Pause" />
61
+ <input type="button" id="stopTimer" value="Cancel" />
62
+ <span id="timerLabel">Timer:</span>
59
63
  <span id="minStart">
60
64
  <input type="text" size="8" id="timerMinutes"/> min
61
- <input type="button" id="startTimer" value="Start">
65
+ <input type="button" id="startTimer" value="Start" />
62
66
  </span>
63
- <span id="timerInfo"></span>
64
- <span id="minStop"><input type="button" id="stopTimer" value="Stop"></span>
67
+ <div id="timerDisplay"></div>
65
68
  </div>
66
69
  <div id="feedbackPace">
67
70
  <span id="paceSlow">Speed Up!</span>
@@ -91,9 +94,14 @@
91
94
  </div>
92
95
 
93
96
  <div id="bottom">
97
+ <div id="buttonNav">
98
+ <span id="buttonPrev"><label class="fa fa-chevron-left fa-lg"> Previous</label></span>
99
+ <span id="buttonNext"><label class="fa fa-chevron-right fa-lg">Next</label></span>
100
+ </div>
94
101
  <div id="questions">
95
102
  <h3>Audience Questions</h3>
96
- <ul></ul>
103
+ <ol id="unanswered"></ol>
104
+ <ol id="answered"></ol>
97
105
  </div>
98
106
  <div id="notes"></div>
99
107
  </div>
data/views/stats.erb CHANGED
@@ -10,63 +10,61 @@
10
10
  </head>
11
11
 
12
12
  <body id="stats">
13
- <div id="preso">
14
- <div id="wrapper">
15
- <h1>Viewing Statistics</h1>
13
+ <div id="wrapper">
14
+ <h1>Viewing Statistics</h1>
16
15
 
17
- <div id="least">
18
- <h3>Least viewed slides</h3>
19
- <% if @least.size > 0 %>
20
- <% max = @least.sort_by {|slide, time| -time}[0][1].to_f %>
21
- <% timestr = (max > 3599) ? '%H:%M:%S' : '%M:%S' %>
22
- <% @least.each do |slide, time| %>
23
- <div class="row">
24
- <span class="label"><%= slide %></span>
25
- <div class="bar" style="width: <%= (time/max)*100 %>%;"> </div>
26
- <div class="time"><%= Time.at(time).gmtime.strftime(timestr) %></div>
27
- </div>
28
- <% end %>
29
- <% end %>
30
- </div>
16
+ <div id="least">
17
+ <h3>Least viewed slides</h3>
18
+ <% if @least.size > 0 %>
19
+ <% max = @least.sort_by {|slide, time| -time}[0][1].to_f %>
20
+ <% timestr = (max > 3599) ? '%H:%M:%S' : '%M:%S' %>
21
+ <% @least.each do |slide, time| %>
22
+ <div class="row">
23
+ <span class="label"><%= slide %></span>
24
+ <div class="bar" style="width: <%= (time/max)*100 %>%;"> </div>
25
+ <div class="time"><%= Time.at(time).gmtime.strftime(timestr) %></div>
26
+ </div>
27
+ <% end %>
28
+ <% end %>
29
+ </div>
31
30
 
32
- <div id="most">
33
- <h3>Most viewed slides</h3>
34
- <% if @least.size > 0 %>
35
- <% max = @most[0][1].to_f %>
36
- <% timestr = (max > 3599) ? '%H:%M:%S' : '%M:%S' %>
37
- <% @most.each do |slide, time| %>
38
- <div class="row">
39
- <span class="label"><%= slide %></span>
40
- <div class="bar" style="width: <%= (time/max)*100 %>%;"> </div>
41
- <div class="time"><%= Time.at(time).gmtime.strftime(timestr) %></div>
42
- </div>
43
- <% end %>
44
- <% end %>
45
- </div>
31
+ <div id="most">
32
+ <h3>Most viewed slides</h3>
33
+ <% if @least.size > 0 %>
34
+ <% max = @most[0][1].to_f %>
35
+ <% timestr = (max > 3599) ? '%H:%M:%S' : '%M:%S' %>
36
+ <% @most.each do |slide, time| %>
37
+ <div class="row">
38
+ <span class="label"><%= slide %></span>
39
+ <div class="bar" style="width: <%= (time/max)*100 %>%;"> </div>
40
+ <div class="time"><%= Time.at(time).gmtime.strftime(timestr) %></div>
41
+ </div>
42
+ <% end %>
43
+ <% end %>
44
+ </div>
46
45
 
47
- <div id="all">
48
- <h3>All slides</h3>
49
- <%# We reuse the max value calculated from the above step. %>
50
- <% @all.sort.map do |slide, time| %>
51
- <div class="row">
52
- <span class="label"><%= slide %></span>
53
- <div class="bar" style="width: <%= (time/max)*100 %>%;"> </div>
54
- <div class="time"><%= Time.at(time).gmtime.strftime(timestr) %></div>
55
- <% if @counter %>
56
- <div class="detail">
57
- <% @counter[slide].each do |host, count| %>
58
- <div class="row">
59
- <span class="label"><%= host %>:</span>
60
- <div class="bar" style="width: <%= (count/max)*100 %>%;"> </div>
61
- <div class="time"><%= Time.at(count).gmtime.strftime(timestr) %></div>
62
- </div>
63
- <% end %>
46
+ <div id="all">
47
+ <h3>All slides</h3>
48
+ <%# We reuse the max value calculated from the above step. %>
49
+ <% @all.sort.map do |slide, time| %>
50
+ <div class="row">
51
+ <span class="label"><%= slide %></span>
52
+ <div class="bar" style="width: <%= (time/max)*100 %>%;"> </div>
53
+ <div class="time"><%= Time.at(time).gmtime.strftime(timestr) %></div>
54
+ <% if @counter %>
55
+ <div class="detail">
56
+ <% @counter[slide].each do |host, count| %>
57
+ <div class="row">
58
+ <span class="label"><%= host %>:</span>
59
+ <div class="bar" style="width: <%= (count/max)*100 %>%;"> </div>
60
+ <div class="time"><%= Time.at(count).gmtime.strftime(timestr) %></div>
64
61
  </div>
65
62
  <% end %>
66
63
  </div>
67
64
  <% end %>
68
65
  </div>
69
- </div>
66
+ <% end %>
70
67
  </div>
68
+ </div>
71
69
  </body>
72
70
  </html>
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.12.0
4
+ version: 0.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Chacon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-17 00:00:00.000000000 Z
11
+ date: 2016-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -25,33 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: json
28
+ name: gli
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 1.3.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 1.3.2
41
41
  - !ruby/object:Gem::Dependency
42
- name: gli
42
+ name: tilt
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3.2
47
+ version: 2.0.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3.2
54
+ version: 2.0.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: json
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: parslet
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -184,7 +198,7 @@ files:
184
198
  - views/onepage.erb
185
199
  - views/presenter.erb
186
200
  - views/stats.erb
187
- - public/css/close.png
201
+ - public/css/TimeCircles.css
188
202
  - public/css/disconnected-large.png
189
203
  - public/css/disconnected.png
190
204
  - public/css/font-awesome-4.4.0/css/font-awesome.min.css
@@ -303,11 +317,10 @@ files:
303
317
  - public/css/pace.png
304
318
  - public/css/paceMarker.png
305
319
  - public/css/presenter.css
306
- - public/css/run_code-dim.png
307
- - public/css/run_code.png
308
320
  - public/css/showoff.css
309
321
  - public/css/spinner_bar.gif
310
322
  - public/favicon.ico
323
+ - public/js/TimeCircles.js
311
324
  - public/js/coffee-script.js
312
325
  - public/js/highlight.pack.js
313
326
  - public/js/jTypeWriter.js
@@ -317,7 +330,6 @@ files:
317
330
  - public/js/jquery.cycle.all.js
318
331
  - public/js/jquery.doubletap-0.1.js
319
332
  - public/js/jquery.parsequery.min.js
320
- - public/js/keyDictionary.json
321
333
  - public/js/presenter.js
322
334
  - public/js/showoff.js
323
335
  homepage: http://github.com/puppetlabs/showoff
@@ -326,7 +338,7 @@ metadata: {}
326
338
  post_install_message: |2+
327
339
  _________________________________________
328
340
  / Ahoy ahead! \
329
- | Major breaking changes in this release. |
341
+ | Style changes in this release. |
330
342
  | |
331
343
  \ Please clear your browser cache. /
332
344
  -----------------------------------------
@@ -341,9 +353,9 @@ post_install_message: |2+
341
353
  means that if you've created your own custom styles, that you'll need to
342
354
  refactor them. We do hope you find the new styles simpler and better looking.
343
355
 
344
- ShowOff can optionally use the RMagick gem for automatic image resizing
345
- functionality. If RMagick is available, images included in your presentation
346
- will be resized down to meet size constraints of your presentation, if required.
356
+ RMagick will be completely removed in the next major release. Pleas migrate
357
+ away from it now. Browsers can autoscale images on demand pretty well now,
358
+ so you probably won't miss it much.
347
359
 
348
360
  Showoff can optionally use the PDFKit gem to build PDF files using the
349
361
  `showoff pdf` command. If you'd like your audience to download the PDF,