pageflow-linkmap-page 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.jshintignore +1 -0
  4. data/.jshintrc +23 -0
  5. data/CHANGELOG.md +8 -0
  6. data/Gemfile +18 -0
  7. data/README.md +62 -0
  8. data/Rakefile +11 -0
  9. data/app/assets/images/pageflow/linkmap_page/text_only_area_type_pictogram.png +0 -0
  10. data/app/assets/images/pageflow/linkmap_page/themes/default/pictograms/sprite.png +0 -0
  11. data/app/assets/images/pageflow/linkmap_page/themes/default/pictograms/wide.png +0 -0
  12. data/app/assets/images/pageflow/linkmap_page_pictogram.png +0 -0
  13. data/app/assets/images/pageflow/linkmap_page_pictogram_small.png +0 -0
  14. data/app/assets/javascript/pageflow/linkmap_page.js +9 -0
  15. data/app/assets/javascript/pageflow/linkmap_page/editor.js +25 -0
  16. data/app/assets/javascript/pageflow/linkmap_page/editor/collections/areas_collection.js +57 -0
  17. data/app/assets/javascript/pageflow/linkmap_page/editor/collections/page_links_collection.js +29 -0
  18. data/app/assets/javascript/pageflow/linkmap_page/editor/config.js +51 -0
  19. data/app/assets/javascript/pageflow/linkmap_page/editor/controllers/side_bar_controller.js +15 -0
  20. data/app/assets/javascript/pageflow/linkmap_page/editor/models/area.js +79 -0
  21. data/app/assets/javascript/pageflow/linkmap_page/editor/models/area_file_selection_handler.js +12 -0
  22. data/app/assets/javascript/pageflow/linkmap_page/editor/models/audio_file_area_type.js +17 -0
  23. data/app/assets/javascript/pageflow/linkmap_page/editor/models/external_link_area_type.js +19 -0
  24. data/app/assets/javascript/pageflow/linkmap_page/editor/models/new_area_file_selection_handler.js +11 -0
  25. data/app/assets/javascript/pageflow/linkmap_page/editor/models/page_configuration_mixin.js +33 -0
  26. data/app/assets/javascript/pageflow/linkmap_page/editor/models/page_link_area_type.js +29 -0
  27. data/app/assets/javascript/pageflow/linkmap_page/editor/models/text_only_area_type.js +15 -0
  28. data/app/assets/javascript/pageflow/linkmap_page/editor/routers/side_bar_router.js +5 -0
  29. data/app/assets/javascript/pageflow/linkmap_page/editor/templates/edit_area.jst.ejs +3 -0
  30. data/app/assets/javascript/pageflow/linkmap_page/editor/templates/embedded/area_item.jst.ejs +11 -0
  31. data/app/assets/javascript/pageflow/linkmap_page/editor/views/areas_list_view.js +44 -0
  32. data/app/assets/javascript/pageflow/linkmap_page/editor/views/configuration_editor_view.js +90 -0
  33. data/app/assets/javascript/pageflow/linkmap_page/editor/views/edit_area_view.js +103 -0
  34. data/app/assets/javascript/pageflow/linkmap_page/editor/views/editable_areas_mode_view.js +10 -0
  35. data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/area_item_embedded_view.js +190 -0
  36. data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/areas_embedded_view.js +26 -0
  37. data/app/assets/javascript/pageflow/linkmap_page/editor/views/embedded/panorama_embedded_view.js +14 -0
  38. data/app/assets/javascript/pageflow/linkmap_page/features.js +9 -0
  39. data/app/assets/javascript/pageflow/linkmap_page/page_type.js +302 -0
  40. data/app/assets/javascript/pageflow/linkmap_page/vendor/gyro.js +3 -0
  41. data/app/assets/javascript/pageflow/linkmap_page/widgets/hover_video.js +77 -0
  42. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap.js +112 -0
  43. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_audio_player_controls.js +132 -0
  44. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_audio_players_controller.js +48 -0
  45. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround.js +154 -0
  46. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_lookaround_strategies/target_speed.js +99 -0
  47. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_panorama.js +421 -0
  48. data/app/assets/javascript/pageflow/linkmap_page/widgets/linkmap_scroll_indicators.js +17 -0
  49. data/app/assets/stylesheets/pageflow/linkmap_page.css.scss +266 -0
  50. data/app/assets/stylesheets/pageflow/linkmap_page/animations/rotate.css.scss +8 -0
  51. data/app/assets/stylesheets/pageflow/linkmap_page/audio_player_controls.scss +134 -0
  52. data/app/assets/stylesheets/pageflow/linkmap_page/editor.css.scss +122 -0
  53. data/app/assets/stylesheets/pageflow/linkmap_page/editor/areas_list.scss +15 -0
  54. data/app/assets/stylesheets/pageflow/linkmap_page/editor/file_areas.css.scss +70 -0
  55. data/app/assets/stylesheets/pageflow/linkmap_page/editor/resizable.css.scss +80 -0
  56. data/app/assets/stylesheets/pageflow/linkmap_page/themes/default.css.scss +341 -0
  57. data/app/assets/stylesheets/pageflow/linkmap_page/themes/default/scroll_indicators.scss +82 -0
  58. data/app/controllers/pageflow/external_links/sites_controller.rb +40 -0
  59. data/app/helpers/pageflow/linkmap_page/areas_helper.rb +93 -0
  60. data/app/models/pageflow/linkmap_page/site.rb +11 -0
  61. data/app/views/pageflow/linkmap_page/areas/_div.html.erb +33 -0
  62. data/app/views/pageflow/linkmap_page/page.html +51 -0
  63. data/config/locales/de.yml +119 -0
  64. data/config/locales/en.yml +119 -0
  65. data/config/locales/new/inverted.de.yml +10 -0
  66. data/config/locales/new/inverted.en.yml +10 -0
  67. data/config/locales/new/text_only_area_type.de.yml +11 -0
  68. data/config/locales/new/text_only_area_type.en.yml +11 -0
  69. data/config/routes.rb +5 -0
  70. data/config/spring.rb +1 -0
  71. data/exec/rspec +15 -0
  72. data/exec/spring +18 -0
  73. data/lib/pageflow-linkmap-page.rb +13 -0
  74. data/lib/pageflow/linkmap_page/engine.rb +17 -0
  75. data/lib/pageflow/linkmap_page/page_type.rb +19 -0
  76. data/lib/pageflow/linkmap_page/plugin.rb +9 -0
  77. data/lib/pageflow/linkmap_page/version.rb +5 -0
  78. data/pageflow-linkmap-page.gemspec +37 -0
  79. data/spec/helpers/pageflow/linkmap_page/areas_helper_spec.rb +68 -0
  80. data/spec/spec_helper.rb +15 -0
  81. metadata +265 -0
@@ -0,0 +1,15 @@
1
+ .linkmap_page_areas_list {
2
+ .drop_down_button button {
3
+ @include plus-circled-icon;
4
+ }
5
+
6
+ .text_only {
7
+ .type_pictogram {
8
+ background-image: image-url("pageflow/linkmap_page/text_only_area_type_pictogram.png");
9
+ }
10
+
11
+ .pictogram {
12
+ @include feather-icon;
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,70 @@
1
+ div.linkmap_page_file_areas {
2
+ .add_area {
3
+ @include plus-circled-icon;
4
+ @include icon-button;
5
+ }
6
+
7
+ ul.areas {
8
+ margin-bottom: 10px;
9
+ }
10
+
11
+ a.edit {
12
+ @include icon-only-button(#aaa);
13
+ @include pencil-icon;
14
+ position: absolute;
15
+ right: 4px;
16
+ top: 4px;
17
+ }
18
+
19
+ li {
20
+ margin-bottom: 2px;
21
+
22
+ > div:first-child {
23
+ padding-left: 45px;
24
+ }
25
+
26
+ .title {
27
+ cursor: default;
28
+ padding-right: 30px;
29
+ }
30
+
31
+ .label {
32
+ margin-top: 10px;
33
+ color: #666;
34
+ }
35
+
36
+ .file_thumbnail,
37
+ .missing_file_thumbnail {
38
+ position: absolute;
39
+ top: 0;
40
+ left: 0;
41
+ height: 100%;
42
+ width: 35px;
43
+ background-size: cover;
44
+ background-color: #444;
45
+ }
46
+
47
+ .file_thumbnail {
48
+ .pictogram:before {
49
+ font-size: 20px;
50
+ }
51
+ }
52
+
53
+ .missing_file_thumbnail {
54
+ @include background-icon-center($color: #fff);
55
+ @include attention-icon;
56
+ display: none;
57
+ position: absolute;
58
+ }
59
+
60
+ &.dangling {
61
+ .file_thumbnail {
62
+ display: none;
63
+ }
64
+
65
+ .missing_file_thumbnail {
66
+ display: block;
67
+ }
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,80 @@
1
+ .ui-resizable {
2
+ position: relative;
3
+ }
4
+
5
+ .ui-resizable-handle {
6
+ position: absolute;
7
+ font-size: 0.1px;
8
+ display: block;
9
+ -ms-touch-action: none;
10
+ touch-action: none;
11
+ }
12
+
13
+ .ui-resizable-disabled .ui-resizable-handle,
14
+ .ui-resizable-autohide .ui-resizable-handle {
15
+ display: none !important;
16
+ }
17
+
18
+ .ui-resizable-n {
19
+ cursor: n-resize;
20
+ height: 7px;
21
+ width: 100%;
22
+ top: 0;
23
+ left: 0;
24
+ }
25
+
26
+ .ui-resizable-s {
27
+ cursor: s-resize;
28
+ height: 7px;
29
+ width: 100%;
30
+ bottom: 0;
31
+ left: 0;
32
+ }
33
+
34
+ .ui-resizable-e {
35
+ cursor: e-resize;
36
+ width: 7px;
37
+ right: 0;
38
+ top: 0;
39
+ height: 100%;
40
+ }
41
+
42
+ .ui-resizable-w {
43
+ cursor: w-resize;
44
+ width: 7px;
45
+ left: 0;
46
+ top: 0;
47
+ height: 100%;
48
+ }
49
+
50
+ .ui-resizable-se {
51
+ cursor: se-resize;
52
+ width: 12px;
53
+ height: 12px;
54
+ right: 1px;
55
+ bottom: 1px;
56
+ }
57
+
58
+ .ui-resizable-sw {
59
+ cursor: sw-resize;
60
+ width: 9px;
61
+ height: 9px;
62
+ left: 0;
63
+ bottom: 0;
64
+ }
65
+
66
+ .ui-resizable-nw {
67
+ cursor: nw-resize;
68
+ width: 9px;
69
+ height: 9px;
70
+ left: 0;
71
+ top: 0;
72
+ }
73
+
74
+ .ui-resizable-ne {
75
+ cursor: ne-resize;
76
+ width: 9px;
77
+ height: 9px;
78
+ right: 0;
79
+ top: 0;
80
+ }
@@ -0,0 +1,341 @@
1
+ @include pageflow-page-type-pictograms("linkmap_page");
2
+
3
+ .linkmap_page {
4
+ $linkmap-icon-font: "FontAwesome" !default;
5
+ $linkmap-icon-line-height: 1.1em !default;
6
+
7
+ $linkmap-marker-icon: "\f0a6" !default;
8
+ $linkmap-audio-icon: "\f027" !default;
9
+ $linkmap-pause-icon: "\f04c" !default;
10
+
11
+ $linkmap-main-color: $main-color !default;
12
+
13
+ $linkmap-overlay-text-color: #fff !default;
14
+ $linkmap-overlay-title-color: $linkmap-main-color !default;
15
+ $linkmap-overlay-background-color: rgba(48,48,48,0.8) !default;
16
+
17
+ $linkmap-icon-color: $main-color !default;
18
+
19
+ $linkmap-audio-progress-color: $linkmap-main-color !default;
20
+ $linkmap-audio-current-time-color: $linkmap-overlay-text-color !default;
21
+
22
+ .hover_area.page_area, .hover_area.external_site_area {
23
+ .linkmap_marker {
24
+ &:before {
25
+ content: $linkmap-marker-icon;
26
+ font-family: $linkmap-icon-font;
27
+ color: white;
28
+ font-size: 30px;
29
+ background-color: rgba(255, 255, 255, 0.3);
30
+ padding: 10px;
31
+ border-radius: 50%;
32
+ width: 35px;
33
+ height: 35px;
34
+ @include transform(translate(-50%,-50%));
35
+ left: 50%;
36
+ top: 50%;
37
+ position: absolute;
38
+ text-align: center;
39
+ opacity: 0;
40
+ line-height: $linkmap-icon-line-height;
41
+ @include transition(0.5s);
42
+ }
43
+ }
44
+
45
+ &.hover {
46
+ .linkmap_marker {
47
+ &:before {
48
+ opacity: 1;
49
+ background-color: rgba(0,0,0,0.7);
50
+ color: $linkmap-icon-color;
51
+ }
52
+ }
53
+ }
54
+ }
55
+
56
+ .linkmap_audio_player_controls {
57
+ .progress_inner {
58
+ height: 96%;
59
+ width: 96%;
60
+ top: 0;
61
+ left: 0;
62
+ right: 0;
63
+ bottom: 0;
64
+ margin: auto;
65
+ box-sizing: border-box;
66
+ @include transform(translate(0,0));
67
+ }
68
+ }
69
+ .hover_area {
70
+ &.external_site_area {
71
+ .inline_loading_spinner {
72
+ .circle_inner {
73
+ .circle_innerst {
74
+ border: 4px solid $linkmap-audio-progress-color;
75
+ }
76
+ }
77
+ }
78
+ }
79
+
80
+ &.dynamic_marker {
81
+ .linkmap_marker {
82
+ background-color: transparent;
83
+ position: absolute;
84
+ top: 50%;
85
+ @include transform(translate(-50%, -50%));
86
+ left: 50%;
87
+ width: 95%;
88
+ height: auto;
89
+ padding: 0;
90
+ border: 4px solid #fff;
91
+ box-sizing: content-box;
92
+ border-radius: 50%;
93
+
94
+ opacity: 0.1;
95
+ box-shadow: 0 0 3px #000;
96
+ margin: 0;
97
+
98
+ @include transition(0.5s);
99
+
100
+ &.teasing {
101
+ opacity: 1 !important;
102
+ border: 7px solid #fff;
103
+ @include transition(1s ease);
104
+ }
105
+
106
+ &.no_transition {
107
+ @include transition(border 0.15s);
108
+
109
+ .has_mobile_platform & {
110
+ @include transition(border 0.15s, opacity 0.5s);
111
+ }
112
+ }
113
+ }
114
+
115
+ &:hover,
116
+ &.hover,
117
+ &.playing,
118
+ &:focus,
119
+ &:active {
120
+ .linkmap_marker {
121
+ border: 6px solid #fff;
122
+ opacity: 1 !important;
123
+ box-shadow: 0 0 3px #000;
124
+ }
125
+ }
126
+ }
127
+ .linkmap_description {
128
+ display: none;
129
+ }
130
+ }
131
+
132
+ .description_overlay {
133
+ position: absolute;
134
+ z-index: 2;
135
+ padding-left: 50px;
136
+ max-width: 510px;
137
+ max-height: 400px;
138
+
139
+ @include phone {
140
+ padding-left: 20px;
141
+ }
142
+
143
+ .description_overlay_wrapper {
144
+ max-width: 510px;
145
+ max-height: 400px;
146
+ box-sizing: border-box;
147
+ left: 0;
148
+ margin-top: -23px;
149
+ padding: 10px 15px 10px 15px;
150
+ background-color: $linkmap-overlay-background-color;
151
+ opacity: 0;
152
+ @include transition(0.15s ease 0.1s);
153
+ @include transform(scale(0));
154
+ @include transform-origin(center);
155
+
156
+ @include phone {
157
+ max-width: 240px;
158
+ margin-top: -10px;
159
+ padding: 5px 10px;
160
+
161
+ .link_title {
162
+ line-height: 20px;
163
+ font-size: 16px;
164
+ }
165
+
166
+ .link_description {
167
+ font-size: 12px;
168
+ line-height: 14px;
169
+ }
170
+ }
171
+ }
172
+
173
+ .link_title {
174
+ font-size: 24px;
175
+ color: $linkmap-overlay-title-color;
176
+ letter-spacing: 0.31px;
177
+ line-height: 30px;
178
+ }
179
+
180
+ .link_description {
181
+ font-size: 16px;
182
+ color: white;
183
+ letter-spacing: 0.22px;
184
+ line-height: 26px;
185
+ }
186
+
187
+ &:before {
188
+ content: "";
189
+ position: absolute;
190
+ width: 30px;
191
+ background-color: rgba(255,255,255, 0.8);
192
+ height: 4px;
193
+ left: 5px;
194
+ top: 0;
195
+ box-shadow: 0 0 3px #000;
196
+
197
+ @include transition(0.15s ease);
198
+ @include transform(scale(0));
199
+ @include transform-origin(top left);
200
+
201
+ @include phone {
202
+ left: 0;
203
+ width: 10px;
204
+ }
205
+ }
206
+
207
+ &.active {
208
+ .description_overlay_wrapper {
209
+ opacity: 1;
210
+ @include transform(scale(1));
211
+ }
212
+
213
+ &:before {
214
+ @include transform(scale(1));
215
+ }
216
+ }
217
+
218
+
219
+ &.left_aligned {
220
+ padding-left: 0;
221
+ padding-right: 50px;
222
+
223
+ &:before {
224
+ left: auto;
225
+ right: 5px;
226
+ }
227
+
228
+ @include phone {
229
+ padding-right: 20px;
230
+
231
+ &:before {
232
+ right: 0;
233
+ }
234
+ }
235
+ }
236
+ }
237
+
238
+ .linkmap_audio_player_controls {
239
+ .play, .pause {
240
+ @include transition(0.1s ease);
241
+ }
242
+
243
+ display: none;
244
+
245
+ .play {
246
+ @include transform(translate(-50%,-50%));
247
+ left: 50%;
248
+ top: 50%;
249
+ width: 100%;
250
+ height: 100%;
251
+
252
+ &:before {
253
+ content: $linkmap-audio-icon;
254
+ line-height: $linkmap-icon-line-height;
255
+ font-family: $linkmap-icon-font;
256
+ color: white;
257
+ font-size: 30px;
258
+ background-color: rgba(255, 255, 255, 0.3);
259
+ padding: 10px;
260
+ border-radius: 50%;
261
+ width: 35px;
262
+ height: 35px;
263
+ @include transform(translate(-50%,-50%));
264
+ left: 50%;
265
+ top: 50%;
266
+ position: absolute;
267
+ text-align: center;
268
+ }
269
+ }
270
+
271
+ .pause {
272
+ @include transform(translate(-50%,-50%));
273
+ left: 50%;
274
+ top: 50%;
275
+ position: absolute;
276
+ background-color: rgba(0,0,0,0.7);
277
+ width: 35px;
278
+ height: 35px;
279
+ text-align: center;
280
+ padding: 10px;
281
+ border-radius: 50%;
282
+
283
+ &:before {
284
+ content: $linkmap-pause-icon;
285
+ font-family: $linkmap-icon-font;
286
+ color: white;
287
+ font-size: 30px;
288
+ line-height: $linkmap-icon-line-height;
289
+ }
290
+ }
291
+
292
+ .current_time {
293
+ color: $linkmap-audio-current-time-color;
294
+ font-size: 18px;
295
+ position: absolute;
296
+ @include transform(translate(-50%, -50%));
297
+ left: 50%;
298
+ bottom: 10px;
299
+ padding: 2px 11px;
300
+ background-color: rgba(0,0,0,0.7);
301
+ border-radius: 5px;
302
+ }
303
+
304
+ .duration {
305
+ display: none;
306
+ }
307
+
308
+ .right_circle, .left_circle, .audio_inline_loading_spinner {
309
+ .circle_inner {
310
+
311
+ .circle_innerst {
312
+ border: 4px solid $linkmap-audio-progress-color;
313
+ }
314
+ }
315
+ }
316
+ }
317
+
318
+ .inverted .linkmap_audio_player_controls .play:before {
319
+ color: #444;
320
+ }
321
+
322
+ .hover_area {
323
+ &:hover, &.hover {
324
+ .linkmap_audio_player_controls {
325
+ .play:before {
326
+ background-color: rgba(0,0,0,0.7);
327
+ }
328
+
329
+ .play, .pause {
330
+ &:before {
331
+ color: $linkmap-icon-color;
332
+ }
333
+ }
334
+ }
335
+ }
336
+
337
+ &.dynamic_marker .linkmap_audio_player_controls {
338
+ display: block;
339
+ }
340
+ }
341
+ }