social_stream-documents 0.17.0 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/documents_controller.rb +1 -0
- data/app/models/audio.rb +3 -3
- data/app/models/document.rb +1 -3
- data/app/models/picture.rb +4 -7
- data/app/models/video.rb +2 -9
- data/app/views/videos/_video_show.html.erb +1 -1
- data/db/migrate/{20120109155431_create_social_stream_documents.rb → 20120208143721_create_social_stream_documents.rb} +0 -2
- data/lib/delayed_paperclip/social_stream-documents.rb +7 -12
- data/lib/generators/social_stream/documents/install_generator.rb +4 -0
- data/lib/generators/social_stream/documents/templates/initializer.rb +26 -0
- data/lib/social_stream-documents.rb +29 -0
- data/lib/social_stream/documents/dependencies.rb +0 -1
- data/lib/social_stream/documents/version.rb +1 -1
- data/social_stream-documents.gemspec +4 -4
- data/spec/dummy/config/initializers/devise.rb +4 -4
- metadata +19 -19
- data/db/migrate/20120208143721_documents_group_title_and_description_in_activity_object.rb +0 -28
- data/lib/paperclip/social_stream-documents.rb +0 -62
data/app/models/audio.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
class Audio < Document
|
2
2
|
has_attached_file :file,
|
3
|
-
:url => '/:class/:id.:
|
3
|
+
:url => '/:class/:id.:content_type_extension',
|
4
4
|
:path => ':rails_root/documents/:class/:id_partition/:style',
|
5
|
-
:styles =>
|
6
|
-
|
5
|
+
:styles => SocialStream::Documents.audio_styles,
|
6
|
+
:processors => [ :ffmpeg ]
|
7
7
|
|
8
8
|
process_in_background :file
|
9
9
|
|
data/app/models/document.rb
CHANGED
@@ -4,7 +4,7 @@ class Document < ActiveRecord::Base
|
|
4
4
|
IMAGE_FORMATS = ["doc","ppt","xls","rar","zip","mpeg","plain","pdf"]
|
5
5
|
|
6
6
|
has_attached_file :file,
|
7
|
-
:url => '/:class/:id.:
|
7
|
+
:url => '/:class/:id.:content_type_extension',
|
8
8
|
:path => ':rails_root/documents/:class/:id_partition/:style/:filename.:extension'
|
9
9
|
|
10
10
|
paginates_per 20
|
@@ -82,5 +82,3 @@ class Document < ActiveRecord::Base
|
|
82
82
|
self.title = file_file_name if self.title.blank?
|
83
83
|
end
|
84
84
|
end
|
85
|
-
|
86
|
-
ActiveSupport.run_load_hooks(:document, Document)
|
data/app/models/picture.rb
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
class Picture < Document
|
2
2
|
has_attached_file :file,
|
3
|
-
:url => '/:class/:id.:
|
3
|
+
:url => '/:class/:id.:content_type_extension',
|
4
4
|
:path => ':rails_root/documents/:class/:id_partition/:style',
|
5
|
-
:styles =>
|
6
|
-
:thumbwall => ["130x97#"],
|
7
|
-
# midwall preserves A4 proportion: 210x297
|
8
|
-
:midwall => ["80x113#"],
|
9
|
-
:preview => ["500>"]
|
10
|
-
}
|
5
|
+
:styles => SocialStream::Documents.picture_styles
|
11
6
|
|
12
7
|
define_index do
|
13
8
|
activity_object_index
|
@@ -28,6 +23,8 @@ class Picture < Document
|
|
28
23
|
helper.picture_path self, :format => format, :style => 'thumbwall'
|
29
24
|
when 500
|
30
25
|
helper.picture_path self, :format => format, :style => 'preview'
|
26
|
+
when 1000
|
27
|
+
helper.picture_path self, :format => format, :style => 'original'
|
31
28
|
end
|
32
29
|
end
|
33
30
|
|
data/app/models/video.rb
CHANGED
@@ -1,16 +1,9 @@
|
|
1
1
|
class Video < Document
|
2
2
|
has_attached_file :file,
|
3
|
-
:url => '/:class/:id.:
|
3
|
+
:url => '/:class/:id.:content_type_extension',
|
4
4
|
:default_url => 'missing_:style.png',
|
5
5
|
:path => ':rails_root/documents/:class/:id_partition/:style',
|
6
|
-
:styles =>
|
7
|
-
:webm => {:format => 'webm'},
|
8
|
-
:flv => {:format => 'flv'},
|
9
|
-
:mp4 => {:format => 'mp4'},
|
10
|
-
:poster => {:format => 'png', :time => 5},
|
11
|
-
:thumb48sq => {:geometry => "48x48" , :format => 'png', :time => 5},
|
12
|
-
:thumbwall => {:geometry => "130x97#", :format => 'png', :time => 5}
|
13
|
-
},
|
6
|
+
:styles => SocialStream::Documents.video_styles,
|
14
7
|
:processors => [:ffmpeg]
|
15
8
|
|
16
9
|
process_in_background :file
|
@@ -53,7 +53,7 @@
|
|
53
53
|
ready: function () {
|
54
54
|
$(this).jPlayer("setMedia", {
|
55
55
|
webmv: "<%= video_url(video, :format => 'webm' ) %>", // Defines the webm url
|
56
|
-
flv: "<%= video_url(video, :format => 'flv') %>"
|
56
|
+
flv: "<%= video_url(video, :format => 'flv') %>",
|
57
57
|
mp4: "<%= video_url(video, :format => 'mp4') %>"
|
58
58
|
});
|
59
59
|
},
|
@@ -10,8 +10,6 @@ class CreateSocialStreamDocuments < ActiveRecord::Migration
|
|
10
10
|
t.string "file_content_type"
|
11
11
|
t.string "file_file_size"
|
12
12
|
t.boolean "file_processing"
|
13
|
-
t.string "title"
|
14
|
-
t.text "description"
|
15
13
|
end
|
16
14
|
|
17
15
|
add_index "documents", ["activity_object_id"], :name => "index_documents_on_activity_object_id"
|
@@ -1,18 +1,13 @@
|
|
1
|
-
# Monkey-patch https://github.com/jstorimer/delayed_paperclip/
|
1
|
+
# Monkey-patch https://github.com/jstorimer/delayed_paperclip/issues/67
|
2
2
|
#
|
3
|
-
# Remove with delayed_paperclip > 2.4.5.
|
3
|
+
# Remove with delayed_paperclip > 2.4.5.2 ???
|
4
4
|
require 'delayed_paperclip'
|
5
5
|
|
6
6
|
module DelayedPaperclip::Attachment::InstanceMethods
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
#instance.update_column("#{name}_processing", false) if instance.respond_to?(:"#{name}_processing?")
|
13
|
-
if instance.respond_to?(:"#{name}_processing?")
|
14
|
-
instance.send("#{name}_processing=", false)
|
15
|
-
instance.class.update_all({ "#{name}_processing" => false }, instance.class.primary_key => instance.id)
|
16
|
-
end
|
7
|
+
def process_delayed!
|
8
|
+
self.job_is_processing = true
|
9
|
+
self.post_processing = true
|
10
|
+
reprocess!
|
11
|
+
self.job_is_processing = false
|
17
12
|
end
|
18
13
|
end
|
@@ -3,6 +3,10 @@ class SocialStream::Documents::InstallGenerator < Rails::Generators::Base
|
|
3
3
|
|
4
4
|
source_root File.expand_path('../templates', __FILE__)
|
5
5
|
|
6
|
+
def create_initializer_file
|
7
|
+
template 'initializer.rb', 'config/initializers/social_stream-documents.rb'
|
8
|
+
end
|
9
|
+
|
6
10
|
def create_migration_file
|
7
11
|
require 'rake'
|
8
12
|
Rails.application.load_tasks
|
@@ -0,0 +1,26 @@
|
|
1
|
+
SocialStream::Documents.setup do |config|
|
2
|
+
# Configure picture thumbnails
|
3
|
+
#
|
4
|
+
# config.picture_styles = {
|
5
|
+
# :thumb48sq => ["48x48"],
|
6
|
+
# :thumbwall => ["130x97#"],
|
7
|
+
# # midwall preserves A4 proportion: 210x297
|
8
|
+
# :midwall => ["80x113#"],
|
9
|
+
# :preview => ["500>"]
|
10
|
+
# }
|
11
|
+
|
12
|
+
# Configure audio thumbnails
|
13
|
+
#
|
14
|
+
# config.audio_styles = { :webma => {:format => 'webm'} }
|
15
|
+
|
16
|
+
# Configure video thumbnails
|
17
|
+
#
|
18
|
+
# @@video_styles = {
|
19
|
+
# :webm => { :format => 'webm' },
|
20
|
+
# :flv => { :format => 'flv' },
|
21
|
+
# :mp4 => { :format => 'mp4' },
|
22
|
+
# :poster => { :format => 'png', :time => 5 },
|
23
|
+
# :thumb48sq => { :geometry => "48x48" , :format => 'png', :time => 5 },
|
24
|
+
# :thumbwall => { :geometry => "130x97#", :format => 'png', :time => 5 }
|
25
|
+
# }
|
26
|
+
end
|
@@ -8,6 +8,35 @@ module SocialStream
|
|
8
8
|
end
|
9
9
|
|
10
10
|
module Documents
|
11
|
+
# Picture thumbnails
|
12
|
+
mattr_accessor :picture_styles
|
13
|
+
@@picture_styles = {
|
14
|
+
:thumb48sq => ["48x48"],
|
15
|
+
:thumbwall => ["130x97#"],
|
16
|
+
# midwall preserves A4 proportion: 210x297
|
17
|
+
:midwall => ["80x113#"],
|
18
|
+
:preview => ["500>"]
|
19
|
+
}
|
20
|
+
|
21
|
+
mattr_accessor :audio_styles
|
22
|
+
@@audio_styles = { :webma => {:format => 'webm'} }
|
23
|
+
|
24
|
+
mattr_accessor :video_styles
|
25
|
+
@@video_styles = {
|
26
|
+
:webm => { :format => 'webm' },
|
27
|
+
:flv => { :format => 'flv' },
|
28
|
+
:mp4 => { :format => 'mp4' },
|
29
|
+
:poster => { :format => 'png', :time => 5 },
|
30
|
+
:thumb48sq => { :geometry => "48x48" , :format => 'png', :time => 5 },
|
31
|
+
:thumbwall => { :geometry => "130x97#", :format => 'png', :time => 5 }
|
32
|
+
}
|
33
|
+
|
34
|
+
class << self
|
35
|
+
def setup
|
36
|
+
yield self
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
11
40
|
# Add :document to SocialStream.objects and SocialStream.activity_forms by default
|
12
41
|
# It can be configured by users at application's config/initializers/social_stream.rb
|
13
42
|
[ :picture, :video, :audio, :document].each do |o|
|
@@ -12,10 +12,10 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
|
14
14
|
# Gem dependencies
|
15
|
-
s.add_runtime_dependency('social_stream-base', '~> 0.
|
16
|
-
s.add_runtime_dependency('paperclip
|
17
|
-
s.add_runtime_dependency('paperclip','
|
18
|
-
s.add_runtime_dependency('delayed_paperclip','2.4.5.
|
15
|
+
s.add_runtime_dependency('social_stream-base', '~> 0.24.0')
|
16
|
+
s.add_runtime_dependency('paperclip','~> 3.3.0')
|
17
|
+
s.add_runtime_dependency('paperclip-ffmpeg', '~> 0.9.0')
|
18
|
+
s.add_runtime_dependency('delayed_paperclip','>= 2.4.5.2')
|
19
19
|
# Development Gem dependencies
|
20
20
|
s.add_development_dependency('sqlite3-ruby')
|
21
21
|
if RUBY_VERSION < '1.9'
|
@@ -72,10 +72,6 @@ Devise.setup do |config|
|
|
72
72
|
# If true, extends the user's remember period when remembered via cookie.
|
73
73
|
# config.extend_remember_period = false
|
74
74
|
|
75
|
-
# If true, uses the password salt as remember token. This should be turned
|
76
|
-
# to false if you are not using database authenticatable.
|
77
|
-
config.use_salt_as_remember_token = true
|
78
|
-
|
79
75
|
# ==> Configuration for :validatable
|
80
76
|
# Range for password length. Default is 6..20.
|
81
77
|
# config.password_length = 6..20
|
@@ -163,6 +159,10 @@ Devise.setup do |config|
|
|
163
159
|
config.omniauth :linkedin, "ekxfXU8nueVSMQ9fc5KJAryBkyztUlCBYMW3DoQPzbE79WhivvzhQloRNHCHgPeB", "WYiHFT-KKFgjd45W3-pEAficmXRHmN6_6DGwj1C_ZILJlSO1gBvv6VNYXU9tybGY"
|
164
160
|
|
165
161
|
config.omniauth :facebook, "129571360447856","eef39dce5e20e76f77495c59623bdb38"
|
162
|
+
|
163
|
+
#re state_less token removal
|
164
|
+
#https://github.com/plataformatec/devise/issues/1499
|
165
|
+
config.skip_session_storage << :token_auth
|
166
166
|
|
167
167
|
# ==> Warden configuration
|
168
168
|
# If you want to use other strategies, that are not supported by Devise, or
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_stream-documents
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-10-
|
13
|
+
date: 2012-10-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: social_stream-base
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.24.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,15 +27,15 @@ dependencies:
|
|
27
27
|
requirements:
|
28
28
|
- - ~>
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: 0.
|
30
|
+
version: 0.24.0
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
name: paperclip
|
32
|
+
name: paperclip
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
36
36
|
- - ~>
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
38
|
+
version: 3.3.0
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,39 +43,39 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 3.3.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name: paperclip
|
48
|
+
name: paperclip-ffmpeg
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.9.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
none: false
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ~>
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 0.9.0
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: delayed_paperclip
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
none: false
|
67
67
|
requirements:
|
68
|
-
- - '
|
68
|
+
- - ! '>='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 2.4.5.
|
70
|
+
version: 2.4.5.2
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
|
-
- - '
|
76
|
+
- - ! '>='
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 2.4.5.
|
78
|
+
version: 2.4.5.2
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
80
|
name: sqlite3-ruby
|
81
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -275,11 +275,10 @@ files:
|
|
275
275
|
- config/locales/en.yml
|
276
276
|
- config/locales/es.yml
|
277
277
|
- config/routes.rb
|
278
|
-
- db/migrate/
|
279
|
-
- db/migrate/20120208143721_documents_group_title_and_description_in_activity_object.rb
|
278
|
+
- db/migrate/20120208143721_create_social_stream_documents.rb
|
280
279
|
- lib/delayed_paperclip/social_stream-documents.rb
|
281
280
|
- lib/generators/social_stream/documents/install_generator.rb
|
282
|
-
- lib/
|
281
|
+
- lib/generators/social_stream/documents/templates/initializer.rb
|
283
282
|
- lib/samples/car.jpg
|
284
283
|
- lib/samples/house.jpg
|
285
284
|
- lib/samples/loremipsum.odt
|
@@ -383,3 +382,4 @@ specification_version: 3
|
|
383
382
|
summary: File capabilities for Social Stream, the core for building social network
|
384
383
|
websites
|
385
384
|
test_files: []
|
385
|
+
has_rdoc:
|
@@ -1,28 +0,0 @@
|
|
1
|
-
class DocumentsGroupTitleAndDescriptionInActivityObject < ActiveRecord::Migration
|
2
|
-
def up
|
3
|
-
ao_ts = ActivityObject.record_timestamps
|
4
|
-
ActivityObject.record_timestamps = false
|
5
|
-
|
6
|
-
# Fix 'documents' table
|
7
|
-
d_ts = Document.record_timestamps
|
8
|
-
Document.record_timestamps = false
|
9
|
-
|
10
|
-
Document.all.each do |d|
|
11
|
-
d.activity_object.title = d.read_attribute(:title)
|
12
|
-
d.activity_object.description = d.read_attribute(:description)
|
13
|
-
d.save!
|
14
|
-
end
|
15
|
-
change_table :documents do |t|
|
16
|
-
t.remove :title
|
17
|
-
t.remove :description
|
18
|
-
end
|
19
|
-
Document.reset_column_information
|
20
|
-
Document.record_timestamps = d_ts
|
21
|
-
|
22
|
-
ActivityObject.record_timestamps = ao_ts
|
23
|
-
end
|
24
|
-
|
25
|
-
def down
|
26
|
-
raise ActiveRecord::IrreversibleMigration # Due to trans-gem oddities
|
27
|
-
end
|
28
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# Monkey patch https://github.com/thoughtbot/paperclip/issues/293#issuecomment-2484541
|
2
|
-
# Monkey patch https://github.com/thoughtbot/paperclip/commit/2583a27df497e72ec7a200b6aa707948e88fd166
|
3
|
-
#
|
4
|
-
# Remove with paperclip > 2.5.0
|
5
|
-
require 'paperclip'
|
6
|
-
|
7
|
-
module Paperclip::ClassMethods
|
8
|
-
def has_attached_file name, options = {}
|
9
|
-
include Paperclip::InstanceMethods
|
10
|
-
|
11
|
-
if attachment_definitions.nil?
|
12
|
-
if respond_to?(:class_attribute)
|
13
|
-
self.attachment_definitions = {}
|
14
|
-
else
|
15
|
-
write_inheritable_attribute(:attachment_definitions, {})
|
16
|
-
end
|
17
|
-
else
|
18
|
-
self.attachment_definitions = self.attachment_definitions.dup
|
19
|
-
end
|
20
|
-
|
21
|
-
attachment_definitions[name] = {:validations => []}.merge(options)
|
22
|
-
Paperclip.classes_with_attachments << self.name
|
23
|
-
Paperclip.check_for_url_clash(name,attachment_definitions[name][:url],self.name)
|
24
|
-
|
25
|
-
after_save :save_attached_files
|
26
|
-
before_destroy :prepare_for_destroy
|
27
|
-
after_destroy :destroy_attached_files
|
28
|
-
|
29
|
-
define_paperclip_callbacks :post_process, :"#{name}_post_process"
|
30
|
-
|
31
|
-
define_method name do |*args|
|
32
|
-
a = attachment_for(name)
|
33
|
-
(args.length > 0) ? a.to_s(args.first) : a
|
34
|
-
end
|
35
|
-
|
36
|
-
define_method "#{name}=" do |file|
|
37
|
-
attachment_for(name).assign(file)
|
38
|
-
end
|
39
|
-
|
40
|
-
define_method "#{name}?" do
|
41
|
-
attachment_for(name).file?
|
42
|
-
end
|
43
|
-
|
44
|
-
validates_each(name) do |record, attr, value|
|
45
|
-
attachment = record.attachment_for(name)
|
46
|
-
attachment.send(:flush_errors)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def validates_attachment_presence name, options = {}
|
51
|
-
message = options[:message] || :empty
|
52
|
-
validates_each :"#{name}_file_name" do |record, attr, value|
|
53
|
-
if_clause_passed = options[:if].nil? || (options[:if].respond_to?(:call) ? options[:if].call(record) != false : record.send(options[:if]))
|
54
|
-
unless_clause_passed = options[:unless].nil? || (options[:unless].respond_to?(:call) ? !!options[:unless].call(record) == false : !record.send(options[:unless]))
|
55
|
-
|
56
|
-
if if_clause_passed && unless_clause_passed && value.blank?
|
57
|
-
record.errors.add(name, message)
|
58
|
-
record.errors.add("#{name}_file_name", message)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|