refinerycms-vimeo-videos 0.1.2
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.
- data/.gitignore +45 -0
- data/app/controllers/admin/vimeo_account_controller.rb +31 -0
- data/app/controllers/admin/vimeo_base_controller.rb +40 -0
- data/app/controllers/admin/vimeo_videos_controller.rb +75 -0
- data/app/models/vimeo_embed_cache.rb +62 -0
- data/app/models/vimeo_meta_cache.rb +56 -0
- data/app/models/vimeo_video.rb +21 -0
- data/app/views/admin/vimeo_videos/_existing_vimeo_video.html.erb +35 -0
- data/app/views/admin/vimeo_videos/_form.html.erb +55 -0
- data/app/views/admin/vimeo_videos/_vimeo_video.html.haml +1 -0
- data/app/views/admin/vimeo_videos/index.js.erb +12 -0
- data/app/views/admin/vimeo_videos/insert.html.erb +60 -0
- data/app/views/shared/admin/_vimeo_picker.html.erb +63 -0
- data/config/locales/en.yml +40 -0
- data/config/locales/lolcat.yml +25 -0
- data/config/locales/nb.yml +21 -0
- data/config/locales/nl.yml +21 -0
- data/config/routes.rb +14 -0
- data/db/migrate/create_vimeo_embed_cache.rb +18 -0
- data/db/migrate/create_vimeo_meta_cache.rb +26 -0
- data/db/migrate/create_vimeo_videos.rb +18 -0
- data/db/seeds/vimeo_videos.rb +6 -0
- data/features/manage_vimeo_videos.feature +63 -0
- data/features/step_definitions/vimeo_video_steps.rb +14 -0
- data/features/support/paths.rb +17 -0
- data/lib/generators/refinerycms_vimeo_videos_generator.rb +6 -0
- data/lib/refinerycms-vimeo-videos.rb +27 -0
- data/lib/tasks/vimeo_videos.rake +13 -0
- data/public/javascripts/refinery/vimeo_videos.js +178 -0
- data/public/stylesheets/admin/vimeo_videos.css +59 -0
- data/readme.md +10 -0
- data/spec/models/vimeo_video_spec.rb +32 -0
- metadata +129 -0
@@ -0,0 +1,178 @@
|
|
1
|
+
var vimeo_video_dialog = {
|
2
|
+
initialised: false
|
3
|
+
, callback: null
|
4
|
+
|
5
|
+
, init: function(callback){
|
6
|
+
this.callback = callback;
|
7
|
+
this.init_tabs();
|
8
|
+
this.init_select();
|
9
|
+
this.init_actions();
|
10
|
+
this.initialised = true;
|
11
|
+
return this;
|
12
|
+
}
|
13
|
+
|
14
|
+
, init_tabs: function(){
|
15
|
+
var radios = $('#dialog_menu_left input:radio');
|
16
|
+
var selected = radios.parent().filter(".selected_radio").find('input:radio').first() || radios.first();
|
17
|
+
|
18
|
+
radios.click(function(){
|
19
|
+
link_dialog.switch_area($(this));
|
20
|
+
});
|
21
|
+
|
22
|
+
selected.attr('checked', 'true');
|
23
|
+
link_dialog.switch_area(selected);
|
24
|
+
}
|
25
|
+
|
26
|
+
, switch_area: function(radio){
|
27
|
+
$('#dialog_menu_left .selected_radio').removeClass('selected_radio');
|
28
|
+
$(radio).parent().addClass('selected_radio');
|
29
|
+
$('#dialog_main .dialog_area').hide();
|
30
|
+
$('#' + radio.value + '_area').show();
|
31
|
+
}
|
32
|
+
|
33
|
+
, init_select: function(){
|
34
|
+
$('#existing_vimeo_video_area_content ul li img').click(function(){
|
35
|
+
vimeo_video_dialog.set_vimeo_video(this);
|
36
|
+
});
|
37
|
+
//Select any currently selected, just uploaded...
|
38
|
+
if ((selected_img = $('#existing_vimeo_video_area_content ul li.selected img')).length > 0) {
|
39
|
+
vimeo_video_dialog.set_vimeo_video(selected_img.first());
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
, set_vimeo_video: function(img){
|
44
|
+
if ($(img).length > 0) {
|
45
|
+
$('#existing_vimeo_video_area_content ul li.selected').removeClass('selected');
|
46
|
+
|
47
|
+
$(img).parent().addClass('selected');
|
48
|
+
var vimeo_videoId = $(img).attr('data-id');
|
49
|
+
var geometry = $('#existing_vimeo_video_size_area li.selected a').attr('data-geometry');
|
50
|
+
var size = $('#existing_vimeo_video_size_area li.selected a').attr('data-size');
|
51
|
+
vimeo_video_url = $(img).attr('data-original');
|
52
|
+
|
53
|
+
if (parent) {
|
54
|
+
if ((wym_src = parent.document.getElementById('wym_src')) != null) {
|
55
|
+
wym_src.value = vimeo_video_url;
|
56
|
+
}
|
57
|
+
if ((wym_title = parent.document.getElementById('wym_title')) != null) {
|
58
|
+
wym_title.value = $(img).attr('title');
|
59
|
+
}
|
60
|
+
if ((wym_alt = parent.document.getElementById('wym_alt')) != null) {
|
61
|
+
wym_alt.value = $(img).attr('alt');
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
|
67
|
+
, submit_vimeo_video_choice: function(e) {
|
68
|
+
e.preventDefault();
|
69
|
+
if((img_selected = $('#existing_vimeo_video_area_content ul li.selected img').get(0)) && $.isFunction(this.callback))
|
70
|
+
{
|
71
|
+
this.callback(img_selected);
|
72
|
+
}
|
73
|
+
|
74
|
+
close_dialog(e);
|
75
|
+
}
|
76
|
+
|
77
|
+
, init_actions: function(){
|
78
|
+
var _this = this;
|
79
|
+
// get submit buttons not inside a wymeditor iframe
|
80
|
+
$('#existing_vimeo_video_area .form-actions-dialog #submit_button')
|
81
|
+
.not('.wym_iframe_body #existing_vimeo_video_area .form-actions-dialog #submit_button')
|
82
|
+
.click($.proxy(_this.submit_vimeo_video_choice, _this));
|
83
|
+
|
84
|
+
// get cancel buttons not inside a wymeditor iframe
|
85
|
+
$('.form-actions-dialog #cancel_button')
|
86
|
+
.not('.wym_iframe_body .form-actions-dialog #cancel_button')
|
87
|
+
.click($.proxy(close_dialog, _this));
|
88
|
+
|
89
|
+
$('#existing_vimeo_video_size_area ul li a').click(function(e) {
|
90
|
+
$('#existing_vimeo_video_size_area ul li').removeClass('selected');
|
91
|
+
$(this).parent().addClass('selected');
|
92
|
+
$('#existing_vimeo_video_size_area #wants_to_resize_vimeo_video').attr('checked', 'checked');
|
93
|
+
vimeo_video_dialog.set_vimeo_video($('#existing_vimeo_video_area_content ul li.selected img'));
|
94
|
+
e.preventDefault();
|
95
|
+
});
|
96
|
+
|
97
|
+
$('#existing_vimeo_video_size_area #wants_to_resize_vimeo_video').change(function(){
|
98
|
+
if($(this).is(":checked")) {
|
99
|
+
$('#existing_vimeo_video_size_area ul li:first a').click();
|
100
|
+
} else {
|
101
|
+
$('#existing_vimeo_video_size_area ul li').removeClass('selected');
|
102
|
+
vimeo_video_dialog.set_vimeo_video($('#existing_vimeo_video_area_content ul li.selected img'));
|
103
|
+
}
|
104
|
+
});
|
105
|
+
|
106
|
+
vimeo_video_area = $('#existing_vimeo_video_area').not('#wym_iframe_body #existing_vimeo_video_area');
|
107
|
+
vimeo_video_area.find('.form-actions input#submit_button').click($.proxy(function(e) {
|
108
|
+
e.preventDefault();
|
109
|
+
$(this.document.getElementById('wym_dialog_submit')).click();
|
110
|
+
}, parent));
|
111
|
+
vimeo_video_area.find('.form-actions a.close_dialog').click(close_dialog);
|
112
|
+
}
|
113
|
+
};
|
114
|
+
|
115
|
+
|
116
|
+
var vimeo_video_picker = {
|
117
|
+
initialised: false
|
118
|
+
, options: {
|
119
|
+
selected: ''
|
120
|
+
, thumbnail: 'medium'
|
121
|
+
, field: '#vimeo_video'
|
122
|
+
, vimeo_video_display: '.current_picked_vimeo_video'
|
123
|
+
, no_vimeo_video_message: '.no_picked_vimeo_video_selected'
|
124
|
+
, vimeo_video_container: '.current_vimeo_video_container'
|
125
|
+
, remove_vimeo_video_button: '.remove_picked_vimeo_video'
|
126
|
+
, picker_container: '.vimeo_video_picker_container'
|
127
|
+
, vimeo_video_link: '.current_vimeo_video_link'
|
128
|
+
, vimeo_video_toggler: null
|
129
|
+
}
|
130
|
+
|
131
|
+
, init: function(new_options){
|
132
|
+
this.options = $.extend(this.options, new_options);
|
133
|
+
$(this.options.picker_container).find(this.options.remove_vimeo_video_button)
|
134
|
+
.click($.proxy(this.remove_vimeo_video, {container: this.options.picker_container, picker: this}));
|
135
|
+
$(this.options.picker_container).find(this.options.vimeo_video_toggler)
|
136
|
+
.click($.proxy(this.toggle_vimeo_video, {container: this.options.picker_container, picker: this}));
|
137
|
+
|
138
|
+
this.initialised = true;
|
139
|
+
|
140
|
+
return this;
|
141
|
+
}
|
142
|
+
|
143
|
+
, remove_vimeo_video: function(e) {
|
144
|
+
e.preventDefault();
|
145
|
+
|
146
|
+
$(this.container).find(this.picker.options.vimeo_video_display)
|
147
|
+
.removeClass('brown_border')
|
148
|
+
.attr({'src': '', 'width': '', 'height': ''})
|
149
|
+
.css({'width': 'auto', 'height': 'auto'})
|
150
|
+
.hide();
|
151
|
+
$(this.container).find(this.picker.options.field).val('');
|
152
|
+
$(this.container).find(this.picker.options.no_vimeo_video_message).show();
|
153
|
+
$(this.container).find(this.picker.options.remove_vimeo_video_button).hide();
|
154
|
+
$(this).hide();
|
155
|
+
}
|
156
|
+
|
157
|
+
, toggle_vimeo_video: function(e) {
|
158
|
+
$(this.container).find(this.options.vimeo_video_toggler).html(
|
159
|
+
($(this.container).find(options.vimeo_video_toggler).html() == 'Show' ? 'Hide' : 'Show')
|
160
|
+
);
|
161
|
+
$(this.container).find(this.options.vimeo_video_container).toggle();
|
162
|
+
e.preventDefault();
|
163
|
+
}
|
164
|
+
|
165
|
+
, changed: function(e) {
|
166
|
+
$(this.container).find(this.picker.options.field).val(
|
167
|
+
this.vimeo_video.id.replace("vimeo_video_", "")
|
168
|
+
);
|
169
|
+
|
170
|
+
current_vimeo_video = $(this.container).find(this.picker.options.vimeo_video_display);
|
171
|
+
current_vimeo_video.replaceWith(
|
172
|
+
$("<img src='"+$(this.vimeo_video).attr('data-image')+"?"+Math.floor(Math.random() * 100000)+"' id='"+current_vimeo_video.attr('id')+"' class='"+this.picker.options.vimeo_video_display.replace(/^./, '')+" brown_border' />")
|
173
|
+
);
|
174
|
+
|
175
|
+
$(this.container).find(this.picker.options.remove_vimeo_video_button).show();
|
176
|
+
$(this.container).find(this.picker.options.no_vimeo_video_message).hide();
|
177
|
+
}
|
178
|
+
};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
.dialog #existing_vimeo_video_area_content {
|
2
|
+
margin-top: 28px;
|
3
|
+
}
|
4
|
+
.dialog #existing_vimeo_video_area_content ul {
|
5
|
+
margin: 0px;
|
6
|
+
padding: 0px;
|
7
|
+
}
|
8
|
+
.dialog #existing_vimeo_video_area_content ul li {
|
9
|
+
list-style: none;
|
10
|
+
padding: 0px;
|
11
|
+
margin: 0px 2px 0px 0px;
|
12
|
+
float: left;
|
13
|
+
height: 114px;
|
14
|
+
max-height: 114px;
|
15
|
+
width: 114px;
|
16
|
+
max-width: 114px;
|
17
|
+
overflow: hidden;
|
18
|
+
cursor: pointer;
|
19
|
+
text-align: center;
|
20
|
+
vertical-align: middle;
|
21
|
+
}
|
22
|
+
.dialog #existing_vimeo_video_area_content ul li img {
|
23
|
+
border: 4px solid transparent;
|
24
|
+
}
|
25
|
+
.dialog #existing_vimeo_video_area_content ul li.selected img {
|
26
|
+
border: 4px solid #22A7F2;
|
27
|
+
}
|
28
|
+
.dialog #existing_vimeo_video_size_area {
|
29
|
+
margin-top: 18px;
|
30
|
+
}
|
31
|
+
.dialog #existing_vimeo_video_size_area ul {
|
32
|
+
margin: 0px;
|
33
|
+
padding: 10px 0px 0px 0px;
|
34
|
+
}
|
35
|
+
.dialog #existing_vimeo_video_size_area ul li {
|
36
|
+
float: left;
|
37
|
+
list-style: none;
|
38
|
+
margin: 0px 18px 0px 0px;
|
39
|
+
text-align:center;
|
40
|
+
}
|
41
|
+
.dialog #existing_vimeo_video_size_area ul li.selected {
|
42
|
+
|
43
|
+
}
|
44
|
+
.dialog #existing_vimeo_video_size_area ul li a {
|
45
|
+
display: block;
|
46
|
+
border: 1px solid #999999;
|
47
|
+
font-size: 10px;
|
48
|
+
/* The following default values are overridden below */
|
49
|
+
height: 90px;
|
50
|
+
width: 90px;
|
51
|
+
line-height: 90px;
|
52
|
+
margin-top:-20px
|
53
|
+
}
|
54
|
+
.dialog #existing_vimeo_video_size_area ul li.selected a {
|
55
|
+
border-color: #22A7F2;
|
56
|
+
background: #22A7F2;
|
57
|
+
color: white;
|
58
|
+
font-weight: bold;
|
59
|
+
}
|
data/readme.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# Vimeo Videos engine for Refinery CMS.
|
2
|
+
|
3
|
+
## How to build this engine as a gem
|
4
|
+
|
5
|
+
cd vendor/engines/vimeo_videos
|
6
|
+
gem build refinerycms-vimeo_videos.gempspec
|
7
|
+
gem install refinerycms-vimeo_videos.gem
|
8
|
+
|
9
|
+
# Sign up for a http://rubygems.org/ account and publish the gem
|
10
|
+
gem push refinerycms-vimeo_videos.gem
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe VimeoVideo do
|
4
|
+
|
5
|
+
def reset_vimeo_video(options = {})
|
6
|
+
@valid_attributes = {
|
7
|
+
:id => 1,
|
8
|
+
:title => "RSpec is great for testing too"
|
9
|
+
}
|
10
|
+
|
11
|
+
@vimeo_video.destroy! if @vimeo_video
|
12
|
+
@vimeo_video = VimeoVideo.create!(@valid_attributes.update(options))
|
13
|
+
end
|
14
|
+
|
15
|
+
before(:each) do
|
16
|
+
reset_vimeo_video
|
17
|
+
end
|
18
|
+
|
19
|
+
context "validations" do
|
20
|
+
|
21
|
+
it "rejects empty title" do
|
22
|
+
VimeoVideo.new(@valid_attributes.merge(:title => "")).should_not be_valid
|
23
|
+
end
|
24
|
+
|
25
|
+
it "rejects non unique title" do
|
26
|
+
# as one gets created before each spec by reset_vimeo_video
|
27
|
+
VimeoVideo.new(@valid_attributes).should_not be_valid
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,129 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: refinerycms-vimeo-videos
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- "Marian Andr\xC3\xA9"
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-03-26 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: vimeo
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 27
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 3
|
33
|
+
- 0
|
34
|
+
version: 1.3.0
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: httparty
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 5
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
- 6
|
49
|
+
- 1
|
50
|
+
version: 0.6.1
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
description: Ruby on Rails Vimeo Videos engine for Refinery CMS
|
54
|
+
email: mail@bitflut.com
|
55
|
+
executables: []
|
56
|
+
|
57
|
+
extensions: []
|
58
|
+
|
59
|
+
extra_rdoc_files: []
|
60
|
+
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- app/controllers/admin/vimeo_account_controller.rb
|
64
|
+
- app/controllers/admin/vimeo_base_controller.rb
|
65
|
+
- app/controllers/admin/vimeo_videos_controller.rb
|
66
|
+
- app/models/vimeo_embed_cache.rb
|
67
|
+
- app/models/vimeo_meta_cache.rb
|
68
|
+
- app/models/vimeo_video.rb
|
69
|
+
- app/views/admin/vimeo_videos/_existing_vimeo_video.html.erb
|
70
|
+
- app/views/admin/vimeo_videos/_form.html.erb
|
71
|
+
- app/views/admin/vimeo_videos/_vimeo_video.html.haml
|
72
|
+
- app/views/admin/vimeo_videos/index.js.erb
|
73
|
+
- app/views/admin/vimeo_videos/insert.html.erb
|
74
|
+
- app/views/shared/admin/_vimeo_picker.html.erb
|
75
|
+
- config/locales/en.yml
|
76
|
+
- config/locales/lolcat.yml
|
77
|
+
- config/locales/nb.yml
|
78
|
+
- config/locales/nl.yml
|
79
|
+
- config/routes.rb
|
80
|
+
- db/migrate/create_vimeo_embed_cache.rb
|
81
|
+
- db/migrate/create_vimeo_meta_cache.rb
|
82
|
+
- db/migrate/create_vimeo_videos.rb
|
83
|
+
- db/seeds/vimeo_videos.rb
|
84
|
+
- features/manage_vimeo_videos.feature
|
85
|
+
- features/step_definitions/vimeo_video_steps.rb
|
86
|
+
- features/support/paths.rb
|
87
|
+
- lib/generators/refinerycms_vimeo_videos_generator.rb
|
88
|
+
- lib/refinerycms-vimeo-videos.rb
|
89
|
+
- lib/tasks/vimeo_videos.rake
|
90
|
+
- public/javascripts/refinery/vimeo_videos.js
|
91
|
+
- public/stylesheets/admin/vimeo_videos.css
|
92
|
+
- readme.md
|
93
|
+
- spec/models/vimeo_video_spec.rb
|
94
|
+
has_rdoc: true
|
95
|
+
homepage: http://bitflut.com
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
hash: 3
|
109
|
+
segments:
|
110
|
+
- 0
|
111
|
+
version: "0"
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
hash: 3
|
118
|
+
segments:
|
119
|
+
- 0
|
120
|
+
version: "0"
|
121
|
+
requirements: []
|
122
|
+
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 1.6.2
|
125
|
+
signing_key:
|
126
|
+
specification_version: 3
|
127
|
+
summary: Vimeo Videos engine for Refinery CMS
|
128
|
+
test_files: []
|
129
|
+
|