pageflow-embedded-video 0.1.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.
Files changed (39) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +22 -0
  3. data/.jshintignore +1 -0
  4. data/.jshintrc +22 -0
  5. data/CHANGELOG.md +8 -0
  6. data/Gemfile +10 -0
  7. data/README.md +63 -0
  8. data/Rakefile +17 -0
  9. data/app/assets/images/pageflow/embedded_video_pictogram.png +0 -0
  10. data/app/assets/images/pageflow/embedded_video_pictogram_small.png +0 -0
  11. data/app/assets/images/pageflow/embedded_video_sprite.png +0 -0
  12. data/app/assets/images/pageflow/mobile_overlay.png +0 -0
  13. data/app/assets/images/pageflow/ov-embedded_video.png +0 -0
  14. data/app/assets/javascript/pageflow/URI.js +52 -0
  15. data/app/assets/javascript/pageflow/embedded_video/editor/collections/embedded_videos_collection.js +23 -0
  16. data/app/assets/javascript/pageflow/embedded_video/editor/initializers/setup_collections.js +1 -0
  17. data/app/assets/javascript/pageflow/embedded_video/editor/models/embedded_video.js +55 -0
  18. data/app/assets/javascript/pageflow/embedded_video/editor/templates/embedded_video_status.jst.ejs +2 -0
  19. data/app/assets/javascript/pageflow/embedded_video/editor/templates/url_input.jst.ejs +7 -0
  20. data/app/assets/javascript/pageflow/embedded_video/editor/views/configuration_editor.js +29 -0
  21. data/app/assets/javascript/pageflow/embedded_video/editor/views/inputs/video_url_input_view.js +34 -0
  22. data/app/assets/javascript/pageflow/embedded_video/editor.js +9 -0
  23. data/app/assets/javascript/pageflow/embedded_video/page_type.js +370 -0
  24. data/app/assets/javascript/pageflow/embedded_video.js +6 -0
  25. data/app/assets/javascript/pageflow/froogaloop.js +288 -0
  26. data/app/assets/stylesheets/pageflow/embedded_video/custom.css.scss +0 -0
  27. data/app/assets/stylesheets/pageflow/embedded_video/editor.css.scss +17 -0
  28. data/app/assets/stylesheets/pageflow/embedded_video.css.scss +269 -0
  29. data/app/views/pageflow/embedded_video/page.html.erb +35 -0
  30. data/app/views/pageflow/embedded_video/page_type.json.jbuilder +2 -0
  31. data/bin/rails +8 -0
  32. data/config/locales/de.yml +45 -0
  33. data/config/locales/en.yml +34 -0
  34. data/lib/pageflow/embedded_video/configuration.rb +15 -0
  35. data/lib/pageflow/embedded_video/engine.rb +9 -0
  36. data/lib/pageflow/embedded_video/page_type.rb +12 -0
  37. data/lib/pageflow-embedded-video.rb +17 -0
  38. data/pageflow-embedded-video.gemspec +23 -0
  39. metadata +152 -0
@@ -0,0 +1,269 @@
1
+ @include pageflow-page-type(embedded_video);
2
+
3
+ .embedded_video_page {
4
+ .contentText {
5
+ margin-top: 40px;
6
+ }
7
+
8
+ .page_header h2 .title {
9
+ max-width: 500px;
10
+ }
11
+
12
+ .widescreened .contentText {
13
+ margin-top: 0;
14
+ }
15
+
16
+ .iframe_overlay {
17
+ .has_mobile_platform & {
18
+ background-repeat: no-repeat;
19
+ background-size: cover;
20
+ background-position: center;
21
+ overflow: hidden;
22
+
23
+ &:before {
24
+ position: absolute;
25
+ top: 0;
26
+ width: 101%;
27
+ height: 101%;
28
+ content: "";
29
+ background-color: black;
30
+ opacity: 0.5;
31
+ }
32
+
33
+ &:after {
34
+ font-family: 'FontAwesome';
35
+ color: white;
36
+ font-size: 70px;
37
+ position: absolute;
38
+ display: block;
39
+ width: 100%;
40
+ text-align: center;
41
+ top: 50%;
42
+ margin-top: -35px;
43
+ }
44
+
45
+ &.youtube:after {
46
+ content: "\f167";
47
+ }
48
+
49
+ &.vimeo:after {
50
+ content: "\f194";
51
+ }
52
+
53
+ pointer-events: all;
54
+ height: initial;
55
+ padding-top: 56.25%;
56
+ position: relative;
57
+
58
+ @include phone {
59
+ height: auto;
60
+ padding-top: 62.5%;
61
+ }
62
+
63
+ iframe {
64
+ position: absolute;
65
+ top: 0;
66
+ left: 0;
67
+ }
68
+
69
+ &.active {
70
+ iframe {
71
+ visibility: visible;
72
+ opacity: 1;
73
+ }
74
+ }
75
+ }
76
+ }
77
+
78
+ .iframe_wrapper {
79
+ pointer-events: all;
80
+ height: initial;
81
+ padding-top: 56.25%;
82
+ position: relative;
83
+
84
+ iframe {
85
+ position: absolute;
86
+ top: 0;
87
+ left: 0;
88
+ }
89
+
90
+ &.widescreened {
91
+ position: absolute;
92
+ width: 45%;
93
+ max-height: 600px;
94
+ right: 10%;
95
+ margin-top: 0;
96
+ top: 50%;
97
+ @include transform(translate(0,-50%));
98
+ margin-bottom: 0;
99
+ z-index: 1;
100
+ padding-top: 33%;
101
+ }
102
+
103
+ &:before {
104
+ padding: 10px;
105
+ background-color: #191919;
106
+ background-color: rgba(25,25,25, 0.9);
107
+ box-shadow: rgba(0,0,0,0.5) 0 0 3px 0px;
108
+ content: "";
109
+ position: absolute;
110
+ top: -10px;
111
+ left: -10px;
112
+ width: 100%;
113
+ z-index: -1;
114
+ height: 100%;
115
+ }
116
+
117
+ .text_position_right &.widescreened {
118
+ right: auto;
119
+ left: 8%;
120
+ width: 42%;
121
+ }
122
+
123
+ .bigScreen & {
124
+ position: absolute;
125
+ width: 86% !important;
126
+ height: 87%;
127
+ top: 10%;
128
+ left: 5% !important;
129
+ z-index: 201;
130
+ margin-top: 0 !important;
131
+ max-height: none !important;
132
+ }
133
+
134
+ &.active {
135
+ iframe {
136
+ visibility: visible;
137
+ opacity: 1;
138
+ }
139
+ }
140
+ }
141
+
142
+ .iframe_container {
143
+ .close_button {
144
+ display: none;
145
+ }
146
+
147
+ .has_mobile_platform & {
148
+ pointer-events: none;
149
+ height: 0;
150
+ padding-top: 0;
151
+ position: relative;
152
+ overflow: hidden;
153
+ opacity: 0;
154
+ @include transition(opacity 0.5s);
155
+ z-index: 1;
156
+
157
+ &:before {
158
+ content: "";
159
+ display: block;
160
+ top: 0;
161
+ left: 0;
162
+ position: absolute;
163
+ width: 100%;
164
+ height: 100%;
165
+ background-color: black;
166
+ opacity: 0.9;
167
+ }
168
+
169
+ &.show {
170
+ width: 100%;
171
+ height: 100%;
172
+ pointer-events: all;
173
+ overflow: hidden;
174
+ position: absolute;
175
+ top: 0;
176
+ left: 0;
177
+ right: 0;
178
+ bottom: 0;
179
+ opacity: 1;
180
+
181
+ .close_button {
182
+ display: block;
183
+ }
184
+ }
185
+
186
+ .iframe_wrapper {
187
+ @include transform(translate(0, -50%));
188
+ width: initial;
189
+ top: 50%;
190
+ margin-right: 85px;
191
+
192
+ @media screen and (orientation: landscape) {
193
+ top: 60px;
194
+ padding-top: 0;
195
+ bottom: 60px;
196
+ position: absolute;
197
+ left: 0;
198
+ right: 0;
199
+ margin-bottom: 0;
200
+ @include transform(none);
201
+ }
202
+
203
+ @include mobile {
204
+ margin-right: 0;
205
+ }
206
+
207
+ &:before {
208
+ content: initial;
209
+ }
210
+ }
211
+ }
212
+ }
213
+
214
+ .video_caption {
215
+ color: white;
216
+ margin-top: 20px;
217
+ z-index: 0;
218
+ position: relative;
219
+ display: block;
220
+ margin-bottom: 40px;
221
+
222
+ &:before {
223
+ content: "";
224
+ display: block;
225
+ position: absolute;
226
+ padding: 10px;
227
+ background-color: black;
228
+ background-color: rgba(0,0,0,0.9);
229
+ top: -10px;
230
+ left: -10px;
231
+ width: 100%;
232
+ z-index: -1;
233
+ height: 100%;
234
+ }
235
+
236
+ .inverted & {
237
+ color: black;
238
+ background-color: white;
239
+ }
240
+
241
+ .has_mobile_platform & {
242
+ padding: 15px;
243
+ margin-top: 0;
244
+
245
+ &:before {
246
+ display: none;
247
+ }
248
+ }
249
+ }
250
+
251
+ .widescreened .video_caption {
252
+ position: absolute;
253
+ top: 100%;
254
+ width: 100%;
255
+ margin-bottom: 0;
256
+ }
257
+ }
258
+
259
+ .overview .ov_page {
260
+ &.embedded_video .pictogram {
261
+ background-image: image-url('pageflow/ov-embedded_video.png');
262
+ }
263
+ }
264
+
265
+ .navigation_mobile {
266
+ .embedded_video:after {
267
+ background-image: image-url('pageflow/embedded_video_sprite.png');
268
+ }
269
+ }
@@ -0,0 +1,35 @@
1
+ <div class="blackLayer"></div>
2
+ <div class="content_and_background embedded_video_page">
3
+
4
+ <div class="backgroundArea">
5
+ <%= background_image_div(configuration, 'background_image') %>
6
+ <%= shadow_div :opacity => configuration['gradient_opacity'] %>
7
+ </div>
8
+
9
+ <div class="content">
10
+ <div class="scroller">
11
+ <div>
12
+ <div class="contentWrapper">
13
+ <div class="page_header">
14
+ <h2>
15
+ <span class="tagline"><%= configuration['tagline'] %></span>
16
+ <span class="title"><%= configuration['title'] %></span>
17
+ <span class="subtitle"><%= configuration['subtitle'] %></span>
18
+ </h2>
19
+ <%= background_image_tag(configuration['background_image_id'], {class: "print_image"}) %>
20
+ </div>
21
+ <div class="contentText">
22
+ <p><%= raw configuration['text'] %></p>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ <div class="iframe_container">
28
+ <div class="close_button" tabindex="4" title="<%= t('.close_title') %>"><%= t('.close') %></div>
29
+ <div class="iframe_wrapper"></div>
30
+ <% if configuration['video_caption'].present? %>
31
+ <div class="video_caption"><%= configuration['video_caption'] %></div>
32
+ <% end %>
33
+ </div>
34
+ </div>
35
+ </div>
@@ -0,0 +1,2 @@
1
+ json.key_format! camelize: :lower
2
+ json.supported_hosts Pageflow::EmbeddedVideo.config.supported_hosts
data/bin/rails ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application.
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/pageflow/embedded_video/engine', __FILE__)
6
+
7
+ require 'rails/all'
8
+ require 'rails/engine/commands'
@@ -0,0 +1,45 @@
1
+ de:
2
+ activerecord:
3
+ attributes:
4
+ pageflow/page:
5
+ embedded_video_id: Video URL
6
+ full_width: Gesamte Breite nutzen
7
+ video_caption: Bildunterschrift
8
+ pageflow:
9
+ embedded_video:
10
+ help_entries:
11
+ page_type:
12
+ menu_item: Embedded Video
13
+ text: ! '# Embedded Video
14
+
15
+
16
+ Bettet ein externes Video von YouTube oder Vimeo ein
17
+
18
+
19
+ Falls Du neben eigenem Filmmaterial auch externe Videos verwenden möchtest, kannst
20
+
21
+ Du diese über eine Video-URL integrieren und zudem mit einer Bildunterschrift versehen.
22
+
23
+ Aus technischen Gründen wird das Bild in einem Rahmen in die Seite
24
+
25
+ eingebunden, der sich der Größe des Bildschirms und dem Textfluss automatisch anpasst, ihn aber nie komplett ausfüllt.
26
+
27
+ Deshalb besteht bei diesem Seitentyp die Möglichkeit, ein zusätzliches Hintergrundbild
28
+
29
+ einzufügen, beispielsweise um einen visuellen Rahmen zu schaffen.
30
+
31
+
32
+ Es können Videos der beiden Plattformen YouTube und Vimeo verwendet werden.
33
+
34
+
35
+ Typische Anwendungsbeispiele: Einbinden von Playlists, Trailern, Kurzfilmen'
36
+ page:
37
+ close: Schließen
38
+ close_title: Embedded Video verlassen
39
+ page_type_category_name: Video
40
+ page_type_description: Bettet ein externes Video von YouTube oder Vimeo ein
41
+ page_type_name: Embedded Video
42
+ ui:
43
+ configuration_editor:
44
+ tabs:
45
+ topic: Inhalt
@@ -0,0 +1,34 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ pageflow/page:
5
+ embedded_video_id: Video URL
6
+ full_width: Full width
7
+ video_caption: Caption
8
+ pageflow:
9
+ embedded_video:
10
+ help_entries:
11
+ page_type:
12
+ menu_item: Embedded Video
13
+ text: ! '# Embedded Video
14
+
15
+
16
+ Embeds an external video from Youtube or Vimeo
17
+
18
+
19
+ If you want to use external videos beside your own material, you can embed the video-URL and give it a caption. For technical reasons the video is embedded in a frame, that is fitting only parts of the screen. You can therefore add a background-image, which creates a visual frame. You can use videos from Youtube and Vimeo.
20
+
21
+
22
+ Examples of application: integration of playlists, trailer or short movies
23
+
24
+ '
25
+ page:
26
+ close: Close
27
+ close_title: Leave embedded video
28
+ page_type_category_name: Video
29
+ page_type_description: Embed YouTube or Vimeo videos
30
+ page_type_name: Embedded Video
31
+ ui:
32
+ configuration_editor:
33
+ tabs:
34
+ topic: Contents
@@ -0,0 +1,15 @@
1
+ module Pageflow
2
+ module EmbeddedVideo
3
+ class Configuration
4
+
5
+ # White list of URL prefixes (including protocol) of embedded videos.
6
+ # @return [Array<String>]
7
+ attr_reader :supported_hosts
8
+
9
+ def initialize
10
+ @supported_hosts = %w(https://www.youtube.com http://www.youtube.com http://vimeo.com)
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module Pageflow
2
+ module EmbeddedVideo
3
+ class Engine < Rails::Engine
4
+ isolate_namespace Pageflow::EmbeddedVideo
5
+
6
+ config.autoload_paths << File.join(config.root, 'lib')
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ module Pageflow
2
+ module EmbeddedVideo
3
+ class PageType < Pageflow::PageType
4
+ name 'embedded_video'
5
+
6
+ def json_seed_template
7
+ 'pageflow/embedded_video/page_type.json.jbuilder'
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require 'pageflow/embedded_video/engine'
2
+
3
+ module Pageflow
4
+ module EmbeddedVideo
5
+ def self.config
6
+ @config ||= EmbeddedVideo::Configuration.new
7
+ end
8
+
9
+ def self.configure(&block)
10
+ block.call(config)
11
+ end
12
+
13
+ def self.page_type
14
+ EmbeddedVideo::PageType.new
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "pageflow-embedded-video"
5
+ spec.version = "0.1.0"
6
+ spec.authors = ["Stefan Schöttelndreyer"]
7
+ spec.email = ["sschoettelndreyer@codevise.de"]
8
+ spec.summary = "Pagetype for embedded youtube/vimeo videos"
9
+ spec.homepage = ""
10
+ spec.license = "MIT"
11
+
12
+ spec.files = `git ls-files`.split($/)
13
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.require_paths = ["lib"]
16
+
17
+ spec.add_runtime_dependency "pageflow", "~> 0.7"
18
+ spec.add_runtime_dependency 'i18n-js'
19
+
20
+ spec.add_development_dependency "bundler"
21
+ spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "webmock"
23
+ end
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pageflow-embedded-video
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Stefan Schöttelndreyer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pageflow
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.7'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: i18n-js
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description:
84
+ email:
85
+ - sschoettelndreyer@codevise.de
86
+ executables:
87
+ - rails
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - .jshintignore
93
+ - .jshintrc
94
+ - CHANGELOG.md
95
+ - Gemfile
96
+ - README.md
97
+ - Rakefile
98
+ - app/assets/images/pageflow/embedded_video_pictogram.png
99
+ - app/assets/images/pageflow/embedded_video_pictogram_small.png
100
+ - app/assets/images/pageflow/embedded_video_sprite.png
101
+ - app/assets/images/pageflow/mobile_overlay.png
102
+ - app/assets/images/pageflow/ov-embedded_video.png
103
+ - app/assets/javascript/pageflow/URI.js
104
+ - app/assets/javascript/pageflow/embedded_video.js
105
+ - app/assets/javascript/pageflow/embedded_video/editor.js
106
+ - app/assets/javascript/pageflow/embedded_video/editor/collections/embedded_videos_collection.js
107
+ - app/assets/javascript/pageflow/embedded_video/editor/initializers/setup_collections.js
108
+ - app/assets/javascript/pageflow/embedded_video/editor/models/embedded_video.js
109
+ - app/assets/javascript/pageflow/embedded_video/editor/templates/embedded_video_status.jst.ejs
110
+ - app/assets/javascript/pageflow/embedded_video/editor/templates/url_input.jst.ejs
111
+ - app/assets/javascript/pageflow/embedded_video/editor/views/configuration_editor.js
112
+ - app/assets/javascript/pageflow/embedded_video/editor/views/inputs/video_url_input_view.js
113
+ - app/assets/javascript/pageflow/embedded_video/page_type.js
114
+ - app/assets/javascript/pageflow/froogaloop.js
115
+ - app/assets/stylesheets/pageflow/embedded_video.css.scss
116
+ - app/assets/stylesheets/pageflow/embedded_video/custom.css.scss
117
+ - app/assets/stylesheets/pageflow/embedded_video/editor.css.scss
118
+ - app/views/pageflow/embedded_video/page.html.erb
119
+ - app/views/pageflow/embedded_video/page_type.json.jbuilder
120
+ - bin/rails
121
+ - config/locales/de.yml
122
+ - config/locales/en.yml
123
+ - lib/pageflow-embedded-video.rb
124
+ - lib/pageflow/embedded_video/configuration.rb
125
+ - lib/pageflow/embedded_video/engine.rb
126
+ - lib/pageflow/embedded_video/page_type.rb
127
+ - pageflow-embedded-video.gemspec
128
+ homepage: ''
129
+ licenses:
130
+ - MIT
131
+ metadata: {}
132
+ post_install_message:
133
+ rdoc_options: []
134
+ require_paths:
135
+ - lib
136
+ required_ruby_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ requirements: []
147
+ rubyforge_project:
148
+ rubygems_version: 2.4.2
149
+ signing_key:
150
+ specification_version: 4
151
+ summary: Pagetype for embedded youtube/vimeo videos
152
+ test_files: []