showoff 0.19.0 → 0.19.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1601282ce5936996277f4a1309c7535641626225
4
- data.tar.gz: da0de8e6681c74330610564866696c2812acccc9
3
+ metadata.gz: 6c80eb56b5142a913acb35ccc32b3fdaed12e0f0
4
+ data.tar.gz: e1b15daffac40995846c44265d1cb06b7091489f
5
5
  SHA512:
6
- metadata.gz: 13d3baa8ec51274dfb9727449373436dd1c8ca08072e38ca1599673d36bc292686c3f12d73f1ac7295df709f90a6cd48e08671502cafd6550918f54dc1e7f23a
7
- data.tar.gz: d2fd23fe45cf664d86dc8e4eaf4b3f73ac26ac41f65d7643b5de07058ad7386091c4a39246658ca51ec052edc81f4b1edfaf854d683ff462c79202878dcb5f91
6
+ metadata.gz: 19556afbea4c9beeeba98671732e605752125958ab7d64eadc8bca17d1a57d06d30fa71d67a3058367b86c7bebb9b773aa3000f33aa7dee366a2202f58a4112b
7
+ data.tar.gz: 7b1954cc0130b69551a670c0b06c2b3b1af445541e073cb5a758b645df2cbdcceb2495807988c77e302628d43ed72177a69da024204d312959ab656028285bdf
@@ -1,3 +1,3 @@
1
1
  # No namespace here since ShowOff is a class and I'd have to inherit from
2
2
  # Sinatra::Application (which we don't want to load here)
3
- SHOWOFF_VERSION = '0.19.0'
3
+ SHOWOFF_VERSION = '0.19.1'
@@ -41,6 +41,7 @@ de:
41
41
  resume: "Fortsetzen in Minuten:"
42
42
 
43
43
  tour:
44
+ show: Sehen Sie die Tour
44
45
  reset: Vorschläge Zurücksetzen
45
46
  welcome: <h3>Willkommen bei Showoff</h3>Lass mich dich herum zeigen. Nachdem du diese Tour beendet hast, wird es nicht wieder zeigen.
46
47
  displayview: Klicken Sie auf diese Schaltfläche, um das Anzeigefenster zu öffnen. Dann ziehe es auf den Projektor.
@@ -60,7 +61,13 @@ de:
60
61
  responses: Als Fragen beantwortet werden, erscheinen sie als Balkendiagramm mit der Anzahl der Antworten auf jede Frage auf der rechten Seite.
61
62
  display: Drücken Sie diese Taste, um einen Schnappschuss der Live-Antworten auf Folie zu präsentieren.
62
63
  save: Drücken Sie diese Taste, um Ihre Antworten zu speichern. Die Präsentation wird bei der Beantwortung pausieren.
63
- menu: Das Menü in dieser Ecke ermöglicht unabhängige Navigation, Datei-Download, Interaktivität und vieles mehr.
64
+ menu:
65
+ start: Klicken Sie hier, um das Menü zu öffnen.
66
+ navigation: Schnell zu einer Folie navigieren.
67
+ download: Download Präsentationsunterstützungsdateien.
68
+ pace: Geben Sie Tempo Feedback.
69
+ questions: Fragen Sie die Redner Fragen.
70
+ feedback: Vorschläge zur Verbesserung des Inhalts geben.
64
71
 
65
72
  downloads:
66
73
  title: Datei Downloads
@@ -41,6 +41,7 @@ en:
41
41
  resume: "Resuming in:"
42
42
 
43
43
  tour:
44
+ show: See the Tour
44
45
  reset: Reset Hints
45
46
  welcome: <h3>Welcome to Showoff</h3>Let me show you around. After you finish this tour, it won't show again.
46
47
  displayview: Start by clicking this button to open the Display Window; then drag it onto the projector.
@@ -60,7 +61,14 @@ en:
60
61
  responses: As questions are answered, they'll show up as a bar chart with the number of answers to each question on the right.
61
62
  display: Press this button to present a snapshot of the live responses on slide.
62
63
  save: Press this button to save your responses. The presentation will pause while answering.
63
- menu: The menu in this corner allows independent navigation, file downloading, interactivity, and more.
64
+ menu:
65
+ start: Click here to open the menu.
66
+ navigation: Quickly navigate to any slide.
67
+ download: Download presentation support files.
68
+ pace: Provide pace feedback.
69
+ questions: Ask live questions of the presenter.
70
+ feedback: Provide suggestions for improving the content.
71
+
64
72
 
65
73
  downloads:
66
74
  title: File Downloads
@@ -41,6 +41,7 @@ es:
41
41
  resume: "Continuando en:"
42
42
 
43
43
  tour:
44
+ show: Ver la gira
44
45
  reset: Restablecer Sugerencias
45
46
  welcome: <h3>Bienvenido a Showoff</h3>Permítanme mostrarles todo. Después de terminar este tour, no se mostrará de nuevo.
46
47
  displayview: Comience haciendo clic en este botón para abrir la ventana de visualización; Luego arrástrelo al proyector
@@ -60,7 +61,14 @@ es:
60
61
  responses: A medida que las preguntas son contestadas, aparecerán como un gráfico de barras con el número de respuestas a cada pregunta de la derecha.
61
62
  display: Presione este botón para presentar una instantánea de las respuestas en vivo en la diapositiva.
62
63
  save: Pulse este botón para guardar sus respuestas. La presentación se detendrá mientras responde.
63
- menu: El menú en esta esquina permite una navegación independiente, descarga de archivos, interactividad y mucho más.
64
+ menu:
65
+ start: Haga clic aquí para abrir el menú.
66
+ navigation: Navegue rápidamente a cualquier diapositiva.
67
+ download: Descargue los archivos de soporte de la presentación.
68
+ pace: Proporcione la regeneración de la velocidad.
69
+ questions: Haga preguntas en vivo del presentador.
70
+ feedback: Proporcione sugerencias para mejorar el contenido.
71
+
64
72
 
65
73
  downloads:
66
74
  title: Descarga de Archivos
@@ -41,6 +41,7 @@ fr:
41
41
  resume: "Reprise dans:"
42
42
 
43
43
  tour:
44
+ show: Voir le Tour
44
45
  reset: Restaurer des Conseils
45
46
  welcome: <h3>Bienvenue dans Showoff</h3>Laissez-moi vous montrer. Après avoir terminé cette tournée, cela ne s'affichera plus encore.
46
47
  displayview: Commencez par cliquer sur ce bouton pour ouvrir la fenêtre d'affichage; Puis faites-le glisser sur le projecteur.
@@ -60,7 +61,13 @@ fr:
60
61
  responses: À mesure que les questions sont répondues, elles apparaîtront comme un graphique à barres avec le nombre de réponses à chaque question à droite.
61
62
  display: Appuyez sur ce bouton pour présenter un instantané des réponses en direct sur la diapositive.
62
63
  save: Appuyez sur ce bouton pour enregistrer vos réponses. La présentation s'arrêtera pendant que vous travaillez.
63
- menu: Le menu dans ce coin permet une navigation indépendante, le téléchargement de fichiers, l'interactivité et plus encore.
64
+ menu:
65
+ start: Cliquez sur le menu pour commencer.
66
+ navigation: Naviguez rapidement vers n'importe quelle diapositive.
67
+ download: Téléchargez les fichiers de support de présentation.
68
+ pace: Fournir des commentaires sur la rapidité de livraison.
69
+ questions: Posez des questions en direct au présentateur.
70
+ feedback: Fournissez des suggestions pour améliorer le contenu.
64
71
 
65
72
  downloads:
66
73
  title: Téléchargements de fichiers
@@ -42,6 +42,7 @@ ja:
42
42
  resume: "再開:"
43
43
 
44
44
  tour:
45
+ show: ツアーを見る
45
46
  reset: ヒントをリセットする
46
47
  welcome: <h3>Showoffへようこそ</h3>私は周りを見せてあげましょう。このツアーを終えると、再び表示されません。
47
48
  displayview: このボタンをクリックして表示ビューを開きます。 プロジェクタにドラッグします。
@@ -61,7 +62,13 @@ ja:
61
62
  responses: 回答は棒グラフで表示され、右の各質問に対する回答の数が表示されます。
62
63
  display: このボタンを押すと、ライブ応答のスナップショットがスライドに表示されます。
63
64
  save: あなたの応答を保存するには、このボタンを押してください。プレゼンテーションは応答中に一時停止します。
64
- menu: このコーナーのメニューは、独立したナビゲーション、ファイルのダウンロード、インタラクティブ機能などを可能にします。
65
+ menu:
66
+ start: メニューを開くにはここをクリックしてください。
67
+ navigation: あなたは望むスライドに素早く移動できます。
68
+ download: プレゼンテーションサポートファイルをダウンロードします。
69
+ pace: ペースフィードバックを提供する。
70
+ questions: 発表者に質問をすることができます。
71
+ feedback: コンテンツを改善するための提案を提供する。
65
72
 
66
73
  downloads:
67
74
  title: ファイルダウンロード
@@ -41,6 +41,7 @@ nl:
41
41
  resume: "Start over:"
42
42
 
43
43
  tour:
44
+ show: Zie de tour
44
45
  reset: Reset Suggesties
45
46
  welcome: <h3>Welkom bij Showoff</h3>Laat me je laten zien. Nadat u deze tour hebt afgerond, wordt het niet weer getoond.
46
47
  displayview: Begin door op deze knop te klikken om het presentatiescherm te openen; Sleep het dan op de projector.
@@ -60,7 +61,13 @@ nl:
60
61
  responses: Naarmate de vragen worden beantwoord, worden ze weergegeven als een staafdiagram met het aantal antwoorden op elke vraag aan de rechterkant.
61
62
  display: Druk op deze knop om een ​​momentopname van de live reacties op dia te presenteren.
62
63
  save: Druk op deze knop om uw antwoorden op te slaan. De presentatie zal onderbreken tijdens het beantwoorden.
63
- menu: Het menu in deze hoek zorgt voor onafhankelijke navigatie, bestand downloaden, interactiviteit en meer.
64
+ menu:
65
+ start: Klik hier om het menu te openen.
66
+ navigation: Ga naar een dia.
67
+ download: Download presentatie ondersteuningsbestanden.
68
+ pace: Geef tempo feedback.
69
+ questions: Vraag live vragen van de presentator.
70
+ feedback: Geef suggesties voor het verbeteren van de inhoud.
64
71
 
65
72
  downloads:
66
73
  title: Downloads
@@ -41,6 +41,7 @@ pt:
41
41
  resume: "Resumindo em:"
42
42
 
43
43
  tour:
44
+ show: Veja o Tour
44
45
  reset: Dicas de Reinicialização
45
46
  welcome: <h3>Bem-vindo ao Showoff</h3>Deixe-me mostrar-lhe. Depois de terminar esta turnê, não será exibida novamente.
46
47
  displayview: Comece clicando neste botão para abrir a visualização de exibição; depois arraste-o para o projetor.
@@ -60,7 +61,13 @@ pt:
60
61
  responses: À medida que as perguntas são respondidas, elas aparecerão como um gráfico de barras com o número de respostas a cada pergunta à direita.
61
62
  display: Pressione este botão para apresentar um instantâneo das respostas ao vivo no slide.
62
63
  save: Pressione este botão para salvar suas respostas. A apresentação irá pausar enquanto responde.
63
- menu: O menu neste canto permite navegação independente, download de arquivos, interatividade e muito mais.
64
+ menu:
65
+ start: Click here to open the menu.
66
+ navigation: Navegue rapidamente para qualquer slide.
67
+ download: Baixe arquivos de suporte de apresentação.
68
+ pace: Fornecer feedback de velocidade.
69
+ questions: Faça perguntas ao vivo do apresentador.
70
+ feedback: Fornecer sugestões para melhorar o conteúdo.
64
71
 
65
72
  downloads:
66
73
  title: Arquivos de Downloads
@@ -859,12 +859,16 @@ form .element {
859
859
  margin-bottom: .5em;
860
860
  }
861
861
 
862
- .ui-dialog .auxillary-buttons {
862
+ .ui-dialog .right {
863
+ float: right;
864
+ }
865
+
866
+ .ui-dialog .auxillary {
863
867
  background: none;
864
868
  border: none;
865
- float: right;
869
+ font-size: small;
866
870
  }
867
- .ui-dialog .auxillary-buttons:active {
871
+ .ui-dialog .auxillary:active {
868
872
  color: #ccc;
869
873
  }
870
874
 
@@ -29,6 +29,7 @@ var mode = { track: true, follow: true };
29
29
 
30
30
  // global variable to register tours with
31
31
  var tours = {};
32
+ var menuTourRunning = false;
32
33
 
33
34
  // a dummy websocket object to make standalone presentations easier.
34
35
  var ws = {}
@@ -110,16 +111,31 @@ function setupPreso(load_slides, prefix) {
110
111
  {
111
112
  text: I18n.t('help.close'),
112
113
  click: function() { $(this).dialog( "close" ); }
113
- },
114
- {
114
+ }
115
+ ];
116
+
117
+ if($("body").hasClass("presenter")) {
118
+ buttons.push({
119
+ text: I18n.t('tour.show'),
120
+ "class": 'right',
121
+ click: function() {
122
+ $(this).dialog( "close" );
123
+ showTour('showoff:presenter', false);
124
+ }
125
+ });
126
+ }
127
+ else {
128
+ buttons.push({
115
129
  text: I18n.t('tour.reset'),
116
- "class": 'auxillary-buttons',
130
+ "class": 'auxillary right',
117
131
  click: function() {
118
132
  document.cookie="tours=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
119
133
  document.cookie="tourVersion=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
134
+ delete document.cookieHash['tours'];
135
+ delete document.cookieHash['tourVersion'];
120
136
  }
121
- }
122
- ];
137
+ });
138
+ }
123
139
 
124
140
  $("#help-modal").dialog({
125
141
  autoOpen: false,
@@ -355,10 +371,25 @@ function zoom(presenter) {
355
371
  }
356
372
  }
357
373
 
374
+ function openMenu() {
375
+ toggleKeybinding();
376
+ $('#feedbackSidebar').show();
377
+ // if the menu tour is open, make it harder to lose the menu
378
+ if(! menuTourRunning ) {
379
+ $('#sidebarExit').show();
380
+ }
381
+ }
382
+
383
+ function closeMenu(force) {
384
+ if(! menuTourRunning || force ) {
385
+ $('#feedbackSidebar, #sidebarExit').hide();
386
+ toggleKeybinding('on');
387
+ }
388
+ }
389
+
358
390
  function setupSideMenu() {
359
391
  $("#hamburger").click(function() {
360
- $('#feedbackSidebar, #sidebarExit').toggle();
361
- toggleKeybinding();
392
+ openMenu();
362
393
  });
363
394
 
364
395
  $("#navToggle").click(function() {
@@ -427,11 +458,6 @@ function setupSideMenu() {
427
458
  closeMenu();
428
459
  });
429
460
 
430
- function closeMenu() {
431
- $('#feedbackSidebar, #sidebarExit').hide();
432
- toggleKeybinding('on');
433
- }
434
-
435
461
  function feedback_response(elem, response) {
436
462
  var originalText = $(elem).text();
437
463
  $(elem).text(response);
@@ -589,17 +615,20 @@ function clearCookies() {
589
615
  document.cookie = "layout=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
590
616
  document.cookie = "notes=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
591
617
  document.cookie = "tourVersion=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";
618
+ document.cookieHash = {};
592
619
  }
593
620
 
594
621
  // called when slides with special content are displayed. (like the Activity complete toggle)
595
622
  // Show a "welcome intro" the first time it's seen.
596
- function showTour(name) {
623
+ function showTour(name, record) {
624
+ record = (typeof record == 'undefined' ? true : record) // default true
625
+
597
626
  // we don't need to show tours if we're a display view
598
627
  if('presenterView' in window) {
599
628
  return false;
600
629
  }
601
630
 
602
- // dont' blow up if someone calls a missing tour
631
+ // don't blow up if someone calls a missing tour
603
632
  if(!(name in tours)) {
604
633
  console.log('No such tour: '+name);
605
634
  return false;
@@ -607,6 +636,7 @@ function showTour(name) {
607
636
 
608
637
  var clientTours = document.cookieHash['tours'] || [];
609
638
 
639
+ // if we haven't seen this one before...
610
640
  if(clientTours.indexOf(name) == -1) {
611
641
  toggleKeybinding('off');
612
642
 
@@ -625,15 +655,64 @@ function showTour(name) {
625
655
 
626
656
  intro.onexit(function() {
627
657
  toggleKeybinding('on');
658
+
659
+ if(menuTourRunning) {
660
+ menuTourRunning = false;
661
+ $("#hamburger").off('click', null, introNext);
662
+ $("#closeMenu").off('click', null, introClose);
663
+ closeMenu();
664
+ }
628
665
  });
629
666
 
630
667
  // record tour completion so we don't continue to annoy people
631
668
  intro.oncomplete(function() {
632
- clientTours.push(name);
633
- document.cookieHash['tours'] = clientTours;
634
- document.cookie = "tours="+JSON.stringify(clientTours);
669
+ if(record) {
670
+ clientTours.push(name);
671
+ document.cookieHash['tours'] = clientTours;
672
+ document.cookie = "tours="+JSON.stringify(clientTours);
673
+ }
674
+
675
+ // this keeps track of the version of the presenter tour we've seen
676
+ if(name == 'showoff:presenter:auto') {
677
+ document.cookie = "tourVersion="+tourVersion;
678
+ document.cookieHash['tourVersion'] = tourVersion;
679
+
680
+ // we don't need this anymore; let's save a byte or three
681
+ delete tours['showoff:presenter:auto'];
682
+ }
683
+
635
684
  });
636
685
 
686
+ // if we're showing the menu, we need to do some extra bookeeping to make it usable
687
+ if(name == 'showoff:menu') {
688
+ menuTourRunning = true;
689
+
690
+ // A couple helper functions to add to the menu bindings.
691
+ // We have to do it here because 'intro' is in scope
692
+ var introNext = function() { intro.nextStep() };
693
+ var introClose = function() { intro.exit() };
694
+
695
+ $("#hamburger").on('click', null, introNext);
696
+ $("#closeMenu").on('click', null, introClose);
697
+
698
+ intro.onchange(function(targetElement) {
699
+ switch(intro._currentStep) {
700
+ case 0:
701
+ closeMenu(true);
702
+ break;
703
+
704
+ case 1:
705
+ openMenu();
706
+ break;
707
+ }
708
+ });
709
+
710
+ // keep the menu visible. This is a hack, but I don't see a better way.
711
+ intro.onafterchange(function(targetElement) {
712
+ $("#feedbackSidebar").removeClass('introjs-fixParent');
713
+ });
714
+ }
715
+
637
716
  intro.start();
638
717
  }
639
718
  }
@@ -843,15 +922,17 @@ function showSlide(back_step, updatepv) {
843
922
  activityIncomplete = false;
844
923
  }
845
924
 
846
- if(currentSlide.hasClass('activity')) {
847
- showTour('showoff:activity');
848
- }
849
- if(getSlideOption('form')) {
850
- showTour('showoff:form');
851
- }
852
- var tour = getSlideOption('tour');
853
- if(tour) {
854
- showTour(tour);
925
+ if(autoTour) {
926
+ if(currentSlide.hasClass('activity')) {
927
+ showTour('showoff:activity');
928
+ }
929
+ if(getSlideOption('form')) {
930
+ showTour('showoff:form');
931
+ }
932
+ var tour = getSlideOption('tour');
933
+ if(tour) {
934
+ showTour(tour);
935
+ }
855
936
  }
856
937
 
857
938
  // show the sync button if we're not on the same slide as the presenter
@@ -5,27 +5,53 @@
5
5
  <%= erb :header %>
6
6
 
7
7
  <script type="text/javascript">
8
- tours['showoff:activity'] = [
9
- {
10
- element: ".currentSlide .activityToggle",
11
- intro: I18n.t('tour.activity.complete')
12
- }
13
- ];
14
-
15
- tours['showoff:form'] = [
16
- {
17
- element: ".currentSlide input.save",
18
- intro: I18n.t('tour.form.save')
19
- }
20
- ];
21
-
22
- tours['showoff:menu'] = [
23
- {
24
- element: "#hamburger",
25
- intro: I18n.t('tour.menu')
26
- }
27
- ];
28
-
8
+ // We want the audience members to see automatic tours. We can assume that they won't be
9
+ // using many server domains like the presenter might.
10
+ var autoTour = true;
11
+
12
+ $( document ).ready(function() {
13
+ tours['showoff:activity'] = [
14
+ {
15
+ element: ".currentSlide .activityToggle",
16
+ intro: I18n.t('tour.activity.complete')
17
+ }
18
+ ];
19
+
20
+ tours['showoff:form'] = [
21
+ {
22
+ element: ".currentSlide input.save",
23
+ intro: I18n.t('tour.form.save')
24
+ }
25
+ ];
26
+
27
+ tours['showoff:menu'] = [
28
+ {
29
+ element: "#hamburger",
30
+ intro: I18n.t('tour.menu.start')
31
+ },
32
+ {
33
+ element: "#navToggle",
34
+ intro: I18n.t('tour.menu.navigation')
35
+ },
36
+ {
37
+ element: "#fileDownloads",
38
+ intro: I18n.t('tour.menu.download')
39
+ },
40
+ {
41
+ element: "#paceFaster",
42
+ intro: I18n.t('tour.menu.pace')
43
+ },
44
+ {
45
+ element: "#questionToggle",
46
+ intro: I18n.t('tour.menu.questions')
47
+ },
48
+ {
49
+ element: "#feedbackToggle",
50
+ intro: I18n.t('tour.menu.feedback')
51
+ }
52
+ ].filter(function(item) { return (document.querySelector(item['element'])) });
53
+ // display tips for only the enabled features
54
+ });
29
55
  </script>
30
56
  </head>
31
57
 
@@ -69,7 +95,7 @@
69
95
 
70
96
  <div id="feedbackToggle" class="buttonWrapper interactive"><i class="fa fa-envelope"></i> <%= I18n.t('menu.feedback.label') %></div>
71
97
  <div id="feedbackSubmenu" class="submenu">
72
- <p><%= I18n.t('menu.feedback.label') %></p>
98
+ <p><%= I18n.t('menu.feedback.description') %></p>
73
99
  <small>
74
100
  <%= I18n.t('menu.feedback.worst') %>
75
101
  <input type="radio" name="rating" value="1"></input>
@@ -12,112 +12,108 @@
12
12
  <script type="text/javascript">
13
13
  editUrl = "<%= @edit %>";
14
14
  issueUrl = "<%= @issues %>";
15
-
16
- tours['showoff:activity'] = [
17
- {
18
- element: ".currentSlide .count",
19
- intro: I18n.t('tour.activity.count')
20
- }
21
- ];
22
-
23
- tours['showoff:form'] = [
24
- {
25
- element: "#notes",
26
- intro: I18n.t('tour.form.responses'),
27
- scrollToElement: false
28
- },
29
- {
30
- element: ".currentSlide input.display",
31
- intro: I18n.t('tour.form.display')
32
- }
33
- ];
34
-
35
- $(function(){
36
- var tourVersion = 1;
37
- var clientTour = document.cookieHash['tourVersion'] || 0;
38
-
39
- if(clientTour < tourVersion) {
40
- toggleKeybinding('off');
41
-
42
- var intro = introJs();
43
- intro.setOptions({
44
- showProgress: true,
45
- showStepNumbers: false,
46
- exitOnOverlayClick: false,
47
- steps: [
48
- {
49
- intro: I18n.t('tour.welcome'),
50
- version: 1
51
- },
52
- {
53
- element: "#slaveWindow",
54
- intro: I18n.t('tour.displayview'),
55
- version: 1
56
- },
57
- {
58
- element: "#annotationLabel",
59
- intro: I18n.t('tour.annotations'),
60
- version: 1
61
- },
62
- {
63
- element: "#timerSection",
64
- intro: I18n.t('tour.timer'),
65
- version: 1
66
- },
67
- {
68
- element: "#feedbackPace",
69
- intro: I18n.t('tour.pace'),
70
- version: 1
71
- },
72
- {
73
- element: "#questions",
74
- intro: I18n.t('tour.questions'),
75
- version: 1
76
- },
77
- {
78
- element: "#notes-controls",
79
- intro: I18n.t('tour.notes'),
80
- highlightClass: "tourDark",
81
- version: 1
82
- },
83
- {
84
- element: "#slideSource",
85
- intro: I18n.t('tour.slidesource'),
86
- version: 1
87
- },
88
- {
89
- element: "#settings",
90
- intro: I18n.t('tour.settings'),
91
- version: 1
92
- },
93
- {
94
- element: "#edit",
95
- intro: I18n.t('tour.edit'),
96
- version: 1
97
- },
98
- {
99
- element: "#report",
100
- intro: I18n.t('tour.report'),
101
- version: 1
102
- }
103
- ].filter(function(item) { return (item['version'] > clientTour) && ((item['element'] == undefined) || document.querySelector(item['element'])) })
104
- // the queryselector filter eliminates tips for features that have been turned off
105
- });
106
-
107
- // re-enable the keyboard whether the tour was completed or not
108
- intro.onexit(function() {
109
- toggleKeybinding('on');
110
- });
111
-
112
- // record tour completion so we don't continue to annoy people
113
- intro.oncomplete(function() {
114
- document.cookie = "tourVersion="+tourVersion;
115
- });
116
-
117
- // give it a chance to finish loading the presentation
118
- $("body").bind("showoff:loaded", function (event) {
119
- intro.start();
120
- });
15
+ autoTour = false;
16
+
17
+ // increment this each time we add features with new tour stops.
18
+ tourVersion = 1;
19
+
20
+ $(function() {
21
+ tours['showoff:activity'] = [
22
+ {
23
+ element: ".currentSlide .count",
24
+ intro: I18n.t('tour.activity.count')
25
+ }
26
+ ];
27
+
28
+ tours['showoff:form'] = [
29
+ {
30
+ element: "#notes",
31
+ intro: I18n.t('tour.form.responses'),
32
+ scrollToElement: false
33
+ },
34
+ {
35
+ element: ".currentSlide input.display",
36
+ intro: I18n.t('tour.form.display')
37
+ }
38
+ ];
39
+
40
+ tours['showoff:presenter'] = [
41
+ {
42
+ intro: I18n.t('tour.welcome'),
43
+ version: 1
44
+ },
45
+ {
46
+ element: "#slaveWindow",
47
+ intro: I18n.t('tour.displayview'),
48
+ version: 1
49
+ },
50
+ {
51
+ element: "#annotationLabel",
52
+ intro: I18n.t('tour.annotations'),
53
+ version: 1
54
+ },
55
+ {
56
+ element: "#timerSection",
57
+ intro: I18n.t('tour.timer'),
58
+ version: 1
59
+ },
60
+ {
61
+ element: "#feedbackPace",
62
+ intro: I18n.t('tour.pace'),
63
+ version: 1
64
+ },
65
+ {
66
+ element: "#questions",
67
+ intro: I18n.t('tour.questions'),
68
+ version: 1
69
+ },
70
+ {
71
+ element: "#notes-controls",
72
+ intro: I18n.t('tour.notes'),
73
+ highlightClass: "tourDark",
74
+ version: 1
75
+ },
76
+ {
77
+ element: "#slideSource",
78
+ intro: I18n.t('tour.slidesource'),
79
+ version: 1
80
+ },
81
+ {
82
+ element: "#settings",
83
+ intro: I18n.t('tour.settings'),
84
+ version: 1
85
+ },
86
+ {
87
+ element: "#edit",
88
+ intro: I18n.t('tour.edit'),
89
+ version: 1
90
+ },
91
+ {
92
+ element: "#report",
93
+ intro: I18n.t('tour.report'),
94
+ version: 1
95
+ }
96
+ ].filter(function(item) {
97
+ // filter out tips for features that have been turned off
98
+ return ((item['element'] == undefined) || document.querySelector(item['element']));
99
+ });
100
+
101
+ // Only autoshow when served from localhost, since we don't know if we have a consistent domain for our cookie otherwise.
102
+ if ( location.hostname == 'localhost' || location.hostname == '127.0.0.1' ) {
103
+
104
+ // enables the flag that shows feature tours
105
+ autoTour = true;
106
+
107
+ var clientTour = document.cookieHash['tourVersion'] || 0;
108
+ if(clientTour < tourVersion) {
109
+ // now make a temporary duplicate of only recent items
110
+ tours['showoff:presenter:auto'] = tours['showoff:presenter'].filter(function(item) {
111
+ return (item['version'] > clientTour);
112
+ });
113
+
114
+ // we don't need to let this record, because we've already tested clientTour
115
+ showTour('showoff:presenter:auto', false);
116
+ }
121
117
 
122
118
  }
123
119
  });
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: showoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Chacon
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-03 00:00:00.000000000 Z
12
+ date: 2017-08-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra