pageflow-embedded-video 0.1.0

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