social_stream 0.11.8 → 0.12.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.
- data/base/app/assets/images/btn/download.png +0 -0
- data/base/app/assets/javascripts/activities.js.erb +1 -1
- data/base/app/assets/javascripts/social_stream-base.js +2 -0
- data/base/app/assets/stylesheets/social_stream-base.css +2 -0
- data/base/app/views/avatars/index.html.erb +0 -13
- data/base/app/views/comments/create.js.erb +3 -0
- data/base/app/views/toolbar/_home.html.erb +1 -1
- data/base/config/locales/en.yml +1 -0
- data/base/config/locales/es.yml +1 -0
- data/base/lib/social_stream/base/version.rb +1 -1
- data/base/lib/social_stream/controllers/helpers.rb +6 -0
- data/base/lib/social_stream/migrations/base.rb +12 -9
- data/base/lib/social_stream/migrations/components.rb +1 -1
- data/base/social_stream-base.gemspec +1 -1
- data/documents/Rakefile +3 -13
- data/documents/app/assets/javascripts/documents.js.erb +21 -32
- data/documents/app/assets/javascripts/social_stream-documents.js +2 -1
- data/documents/app/assets/stylesheets/{documents.css → documents.css.scss} +32 -6
- data/documents/app/assets/stylesheets/show.css.scss +75 -0
- data/documents/app/assets/stylesheets/social_stream-documents.css +2 -1
- data/documents/app/controllers/audios_controller.rb +0 -14
- data/documents/app/controllers/common_documents_controller.rb +6 -3
- data/documents/app/controllers/documents_controller.rb +9 -3
- data/documents/app/controllers/pictures_controller.rb +0 -1
- data/documents/app/controllers/videos_controller.rb +0 -15
- data/documents/app/helpers/documents_helper.rb +11 -7
- data/documents/app/models/audio.rb +1 -1
- data/documents/app/models/document.rb +9 -5
- data/documents/app/models/picture.rb +1 -1
- data/documents/app/models/video.rb +8 -6
- data/documents/app/views/audios/_audio.html.erb +2 -2
- data/documents/app/views/audios/_audio_processed.html.erb +4 -4
- data/documents/app/views/audios/_audio_show.html.erb +62 -0
- data/documents/app/views/audios/index.html.erb +1 -1
- data/documents/app/views/audios/show.html.erb +2 -2
- data/documents/app/views/common_documents/_document_info.html.erb +34 -0
- data/documents/app/views/common_documents/_index.html.erb +49 -0
- data/documents/app/views/common_documents/_show.html.erb +36 -0
- data/documents/app/views/documents/_document.html.erb +2 -6
- data/documents/app/views/documents/_document_show.html.erb +7 -0
- data/documents/app/views/documents/index.html.erb +1 -1
- data/documents/app/views/documents/show.html.erb +2 -2
- data/documents/app/views/pictures/_picture.html.erb +13 -12
- data/documents/app/views/pictures/_picture_show.html.erb +26 -0
- data/documents/app/views/pictures/index.html.erb +1 -1
- data/documents/app/views/pictures/show.html.erb +2 -2
- data/documents/app/views/videos/_video.html.erb +2 -2
- data/documents/app/views/videos/_video_processed.html.erb +4 -3
- data/documents/app/views/videos/_video_show.html.erb +64 -0
- data/documents/app/views/videos/index.html.erb +1 -1
- data/documents/app/views/videos/show.html.erb +2 -2
- data/documents/config/locales/en.yml +19 -1
- data/documents/config/locales/es.yml +18 -0
- data/documents/lib/social_stream/documents/engine.rb +2 -0
- data/documents/lib/social_stream/documents/version.rb +1 -1
- data/documents/social_stream-documents.gemspec +1 -1
- data/documents/spec/controllers/documents_controller_spec.rb +40 -2
- data/documents/spec/controllers/pictures_controller_spec.rb +4 -4
- data/documents/spec/dummy/config/environments/development.rb +0 -1
- data/documents/spec/dummy/config/environments/test.rb +2 -0
- data/lib/social_stream/release.rb +26 -4
- data/lib/social_stream/version.rb +1 -1
- data/presence/app/assets/javascripts/xmpp_client.js +0 -6
- data/presence/app/controllers/xmpp_controller.rb +46 -102
- data/presence/app/views/xmpp/_chat.html.erb +1 -2
- data/presence/ejabberd/conf/{ejabberd.cfg → ejabberd_example.cfg} +3 -7
- data/presence/ejabberd/conf/ssconfig_example.cfg +32 -0
- data/presence/ejabberd/ejabberd_scripts/authentication_script +7 -3
- data/presence/ejabberd/ejabberd_scripts/{compile_module → development_scripts/compile_module} +0 -0
- data/presence/ejabberd/ejabberd_scripts/{generate_random_password → development_scripts/generate_random_password} +0 -0
- data/presence/ejabberd/ejabberd_scripts/{kill_authentication_script.sh → development_scripts/kill_authentication_script.sh} +0 -0
- data/presence/ejabberd/ejabberd_scripts/{reset_logs.sh → development_scripts/reset_logs.sh} +0 -2
- data/presence/ejabberd/ejabberd_scripts/{show_config.sh → development_scripts/show_config.sh} +3 -0
- data/presence/ejabberd/ejabberd_scripts/{start_ejabberd.sh → development_scripts/start_ejabberd.sh} +0 -0
- data/presence/ejabberd/ejabberd_scripts/{stop_ejabberd.sh → development_scripts/stop_ejabberd.sh} +0 -0
- data/presence/ejabberd/ejabberd_scripts/emanagement +18 -14
- data/presence/ejabberd/mod_sspresence/mod_sspresence.beam +0 -0
- data/presence/ejabberd/mod_sspresence/mod_sspresence.erl +11 -7
- data/presence/lib/generators/social_stream/presence/templates/initializer.rb +14 -4
- data/presence/lib/social_stream/migrations/presence.rb +0 -1
- data/presence/lib/social_stream/presence/engine.rb +1 -48
- data/presence/lib/social_stream/presence/models/buddy_manager.rb +17 -44
- data/presence/lib/social_stream/presence/version.rb +1 -1
- data/presence/lib/social_stream/presence/xmpp_server_order.rb +181 -0
- data/presence/lib/social_stream-presence.rb +12 -2
- data/presence/lib/tasks/presence/synchronize.rake +6 -47
- data/social_stream.gemspec +2 -2
- metadata +32 -28
- data/base/lib/social_stream/migrations/finder.rb +0 -20
- data/documents/app/views/common-documents/_index.html.erb +0 -45
- data/documents/app/views/toolbar/_uploads_menu.html.erb +0 -21
- data/presence/ejabberd/conf/ejabberdctl.cfg +0 -154
- data/presence/ejabberd/conf/inetrc +0 -3
- data/presence/ejabberd/conf/ssconfig.cfg +0 -32
- data/presence/ejabberd/ejabberd_scripts/authentication_script_org +0 -114
|
Binary file
|
|
@@ -138,7 +138,7 @@ $(function() {
|
|
|
138
138
|
$(".actor_logo_new_comment").hide();
|
|
139
139
|
|
|
140
140
|
//if there are 4 or more commments we only show the last 2 and a link to show the rest
|
|
141
|
-
$(".activity_comments").each(function(){
|
|
141
|
+
$("#wall .activity_comments").each(function(){
|
|
142
142
|
var comments = $(this).children(".subactivity");
|
|
143
143
|
//check if there are more than 3 comments
|
|
144
144
|
if (comments.size() > 3){
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
<% toolbar :profile => current_subject %>
|
|
2
2
|
|
|
3
|
-
<% content_for :headers do %>
|
|
4
|
-
<%= stylesheet_link_tag "avatars.css", :media => "screen, projection" %>
|
|
5
|
-
<%= javascript_include_tag 'jquery.Jcrop.min' %>
|
|
6
|
-
<%= javascript_include_tag 'jquery.form' %>
|
|
7
|
-
<%= javascript_include_tag 'jquery.fileupload' %>
|
|
8
|
-
<%= javascript_include_tag 'jquery.fileupload-ui' %>
|
|
9
|
-
<%= javascript_include_tag 'avatars.js' %>
|
|
10
|
-
|
|
11
|
-
<%= stylesheet_link_tag "jquery.Jcrop", :media => "screen, projection" %>
|
|
12
|
-
<%= stylesheet_link_tag "avatars", :media => "screen, projection" %>
|
|
13
|
-
<%= stylesheet_link_tag "jquery.fileupload-ui", :media => "screen, projection" %>
|
|
14
|
-
<% end %>
|
|
15
|
-
|
|
16
3
|
<% content_for :title do%>
|
|
17
4
|
<%= current_subject.name %>
|
|
18
5
|
<% end%>
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
//Display the new comment
|
|
2
2
|
$("#comments_activity_<%= @comment.post_activity.parent.id %>").append("<%= escape_javascript(render @comment.post_activity) %>");
|
|
3
3
|
$(".activities_comment_btn").hide();
|
|
4
|
+
$(".input_new_comments").each(function() {
|
|
5
|
+
$(this).focus().val("").blur();
|
|
6
|
+
});
|
|
4
7
|
|
|
5
8
|
setActivityPrivacyTooltips("<%= escape_javascript dom_id(@comment.post_activity) %>");
|
|
6
9
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<%= yield(:toolbar_menu).empty? ? home_toolbar_menu : yield(:toolbar_menu)%>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
<% if defined?(SocialStream::Presence) %>
|
|
10
|
+
<% if defined?(SocialStream::Presence) and SocialStream::Presence.enable %>
|
|
11
11
|
<%= render :partial => 'xmpp/chat' %>
|
|
12
12
|
<% end %>
|
|
13
13
|
|
data/base/config/locales/en.yml
CHANGED
|
@@ -377,6 +377,7 @@ en:
|
|
|
377
377
|
relation_public:
|
|
378
378
|
name: "Public"
|
|
379
379
|
representation:
|
|
380
|
+
notice: "Your session has changed. Now you are acting on behalf of %{subject}. Use the top-right menu to return to your session"
|
|
380
381
|
switch: "Switch session"
|
|
381
382
|
required: "(*) These fields are required"
|
|
382
383
|
search:
|
data/base/config/locales/es.yml
CHANGED
|
@@ -372,6 +372,7 @@ es:
|
|
|
372
372
|
relation_public:
|
|
373
373
|
name: "Público"
|
|
374
374
|
representation:
|
|
375
|
+
notice: "Tu sesión ha cambiado. Ahora actúas en nombre de %{subject}. Para regresar a tu sessión, utiliza el menú de arriba a la derecha"
|
|
375
376
|
switch: "Cambiar sessión"
|
|
376
377
|
required: "(*) Estos campos son obligatorios"
|
|
377
378
|
search:
|
|
@@ -103,6 +103,12 @@ module SocialStream
|
|
|
103
103
|
raise CanCan::AccessDenied.new("Not authorized!", :represent, subject.name)
|
|
104
104
|
end
|
|
105
105
|
|
|
106
|
+
if subject != current_user
|
|
107
|
+
flash[:notice] ||= ""
|
|
108
|
+
flash[:notice] += t('representation.notice',
|
|
109
|
+
:subject => subject.name)
|
|
110
|
+
end
|
|
111
|
+
|
|
106
112
|
self.current_subject = subject
|
|
107
113
|
end
|
|
108
114
|
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
require 'social_stream/migrations/finder'
|
|
2
|
-
|
|
3
1
|
module SocialStream
|
|
4
2
|
module Migrations
|
|
5
3
|
class Base
|
|
6
4
|
def initialize
|
|
7
|
-
|
|
8
|
-
["generators", "acts_as_taggable_on", "migration", "templates", "active_record", "migration"]
|
|
9
|
-
|
|
5
|
+
require_old_migration 'acts-as-taggable-on', 'lib/generators/acts_as_taggable_on/migration/templates/active_record/migration'
|
|
10
6
|
@mailboxer_migration = find_migration 'mailboxer'
|
|
11
7
|
@base_migration = find_migration 'social_stream-base'
|
|
12
8
|
end
|
|
@@ -43,12 +39,19 @@ module SocialStream
|
|
|
43
39
|
protected
|
|
44
40
|
|
|
45
41
|
def find_migration(gem)
|
|
46
|
-
|
|
47
|
-
File.join([path,'db', 'migrate'])
|
|
42
|
+
File.join([get_full_gem_path(gem)], 'db/migrate')
|
|
48
43
|
end
|
|
49
44
|
|
|
50
|
-
def
|
|
51
|
-
|
|
45
|
+
def require_old_migration(gem,file_path)
|
|
46
|
+
require File.join([get_full_gem_path(gem),file_path])
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def get_full_gem_path(gem)
|
|
50
|
+
if (Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0'))
|
|
51
|
+
return Gem::Specification.find_by_name(gem).full_gem_path
|
|
52
|
+
else
|
|
53
|
+
return Gem::GemPathSearcher.new.find(gem).full_gem_path
|
|
54
|
+
end
|
|
52
55
|
end
|
|
53
56
|
end
|
|
54
57
|
end
|
|
@@ -4,7 +4,7 @@ module SocialStream
|
|
|
4
4
|
module Migrations
|
|
5
5
|
class Components < Base
|
|
6
6
|
def initialize
|
|
7
|
-
@component = find_migration
|
|
7
|
+
@component = find_migration "social_stream-#{ self.class.name.split('::').last.underscore }"
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def up(options = {})
|
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
|
26
26
|
# Slug generation
|
|
27
27
|
s.add_runtime_dependency('stringex', '~> 1.3.0')
|
|
28
28
|
# Avatar attachments
|
|
29
|
-
s.add_runtime_dependency('avatars_for_rails', '~> 0.
|
|
29
|
+
s.add_runtime_dependency('avatars_for_rails', '~> 0.2.0')
|
|
30
30
|
# jQuery
|
|
31
31
|
s.add_runtime_dependency('jquery-rails', '~> 1.0.9')
|
|
32
32
|
# Authorization
|
data/documents/Rakefile
CHANGED
|
@@ -1,33 +1,23 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
|
-
require '
|
|
3
|
-
begin
|
|
4
|
-
require 'bundler/setup'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
7
|
-
end
|
|
2
|
+
require 'bundler/gem_tasks'
|
|
8
3
|
|
|
9
|
-
require '
|
|
10
|
-
require 'rake/rdoctask'
|
|
4
|
+
require 'rdoc/task'
|
|
11
5
|
|
|
12
6
|
require 'rspec/core'
|
|
13
7
|
require 'rspec/core/rake_task'
|
|
14
8
|
|
|
15
|
-
require 'bundler'
|
|
16
|
-
|
|
17
9
|
RSpec::Core::RakeTask.new(:spec)
|
|
18
10
|
|
|
19
11
|
task :default => :spec
|
|
20
12
|
|
|
21
13
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
22
14
|
rdoc.rdoc_dir = 'rdoc'
|
|
23
|
-
rdoc.title = '
|
|
15
|
+
rdoc.title = 'SocialStream Documents'
|
|
24
16
|
rdoc.options << '--line-numbers' << '--inline-source'
|
|
25
17
|
rdoc.rdoc_files.include('README.rdoc')
|
|
26
18
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
27
19
|
end
|
|
28
20
|
|
|
29
|
-
Bundler::GemHelper.install_tasks
|
|
30
|
-
|
|
31
21
|
# Modify this gem's tags
|
|
32
22
|
class Bundler::GemHelper
|
|
33
23
|
def version_tag
|
|
@@ -1,35 +1,3 @@
|
|
|
1
|
-
$('.attachment_tile a, .picture_link a').live("click",function(e){
|
|
2
|
-
if(this.type ==""){
|
|
3
|
-
return true;
|
|
4
|
-
}
|
|
5
|
-
e.preventDefault();
|
|
6
|
-
|
|
7
|
-
var download_link = this;
|
|
8
|
-
|
|
9
|
-
/*
|
|
10
|
-
if($('.player').length > 0 && $('.attachment_tile.selected').length==1){
|
|
11
|
-
removePlayers();
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
*/
|
|
15
|
-
if(this.type == "Audio"){
|
|
16
|
-
removePlayers();
|
|
17
|
-
$(this).parent().parent().addClass("selected");
|
|
18
|
-
$('body').append("<audio class='player' autoplay='autoplay' id='audio_player' src='"+this+"' controls='controls'></audio>");
|
|
19
|
-
$('body').append("<a href='"+download_link+"'><img id='downloadButton' src='<%= asset_path "16/default.png" %>' /></a>");
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if(this.type == "Video"){
|
|
23
|
-
removePlayers();
|
|
24
|
-
$(this).parent().parent().addClass("selected");
|
|
25
|
-
var show = (this+"").split('/download')[0];
|
|
26
|
-
show = show.replace("documents","videos");
|
|
27
|
-
$('body').append("<video class='player' autoplay='autoplay' id='video_player' src='"+show+"?style=webm' controls='controls'></video>");
|
|
28
|
-
$('body').append("<a href='"+download_link+"'><img id='downloadButton' src='<%= asset_path "16/default.png" %>' /></a>");
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
1
|
function removePlayers(){
|
|
34
2
|
$('.attachment_tile').removeClass("selected");
|
|
35
3
|
$('.player').remove();
|
|
@@ -59,3 +27,24 @@ $(".video_thumbnail_play_over").livequery("click",function(){
|
|
|
59
27
|
$(this).parent().hide();
|
|
60
28
|
$("#jpId"+the_id).jPlayer("play", 0);
|
|
61
29
|
});
|
|
30
|
+
|
|
31
|
+
$(document).ready(function(){
|
|
32
|
+
//if there are 6 or more commments we only show the last 5 and a link to show the rest
|
|
33
|
+
$("#document_comments .activity_comments").each(function(){
|
|
34
|
+
var comments = $(this).children(".subactivity");
|
|
35
|
+
if (comments.size() > 5){
|
|
36
|
+
$(this).prepend("<div class='hide_show_comments'><a href='#' onclick='showAllDocumentComments(\""+
|
|
37
|
+
$(this).attr('id') +"\"); return false;'><%= I18n.t('comment.view_all') %> (" +
|
|
38
|
+
comments.size() + ")</a></div><div class='space_comments'></div>");
|
|
39
|
+
comments.slice(0,comments.size()-5).hide();
|
|
40
|
+
//hide alto space_comments
|
|
41
|
+
$(this).children(".space_comments").slice(0,comments.size()-5).hide();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
showAllDocumentComments = function(id){
|
|
47
|
+
$("#"+id).children().show("slow");
|
|
48
|
+
//and hide the hide_show_comments
|
|
49
|
+
$("#"+id).children(".hide_show_comments").hide();
|
|
50
|
+
};
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@import "colors";
|
|
2
|
+
|
|
1
3
|
.attachment
|
|
2
4
|
{
|
|
3
5
|
padding-top: 10px;
|
|
@@ -57,19 +59,25 @@
|
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
.attachment_tile{
|
|
60
|
-
margin:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
height: 65px;
|
|
62
|
+
margin: 5px;
|
|
63
|
+
width: 90px;
|
|
64
|
+
height: 70px;
|
|
64
65
|
border-bottom: 2px solid transparent;
|
|
65
66
|
float: left;
|
|
66
67
|
text-align: center;
|
|
67
68
|
overflow: hidden;
|
|
69
|
+
border: 1px solid transparent;
|
|
70
|
+
padding: 5px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.attachment_tile img{
|
|
74
|
+
width: 48px;
|
|
75
|
+
height: 48px;
|
|
68
76
|
}
|
|
69
77
|
|
|
78
|
+
|
|
70
79
|
.attachment_tile:hover{
|
|
71
|
-
|
|
72
|
-
border-bottom: 2px solid #2A3890;
|
|
80
|
+
border: 1px solid $main-color;
|
|
73
81
|
}
|
|
74
82
|
|
|
75
83
|
.attachment_tile.selected{
|
|
@@ -87,6 +95,24 @@
|
|
|
87
95
|
background-color: #e0edf2;
|
|
88
96
|
}
|
|
89
97
|
|
|
98
|
+
#repository_filter {
|
|
99
|
+
margin-left: 10px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
#repository_filter #order_by{
|
|
103
|
+
margin: 5px 5px 5px 15px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#repository_filter input {
|
|
107
|
+
padding: 0 3px 0 22px;
|
|
108
|
+
background: url('btn/search_icon.png') 5px 50% no-repeat white;
|
|
109
|
+
font-size: 11px;
|
|
110
|
+
color: $main-color;
|
|
111
|
+
border: solid 1px $input-border-color;
|
|
112
|
+
height: 25px;
|
|
113
|
+
width: 200px;
|
|
114
|
+
}
|
|
115
|
+
|
|
90
116
|
.player{
|
|
91
117
|
position: fixed;
|
|
92
118
|
border-left: 24px solid #2A3890;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
@import "colors";
|
|
2
|
+
|
|
3
|
+
.picture.content_size .picture_show img{
|
|
4
|
+
max-width: 500px;
|
|
5
|
+
max-height: 500px;
|
|
6
|
+
margin-left: 30px;
|
|
7
|
+
border: 2px solid black;
|
|
8
|
+
-moz-border-radius: 5px;
|
|
9
|
+
-webkit-border-radius: 5px;
|
|
10
|
+
border-radius: 5px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.video_show div.jp-video-270p{
|
|
14
|
+
padding-left: 40px;
|
|
15
|
+
}
|
|
16
|
+
.audio_show div.jp-audio{
|
|
17
|
+
padding-left: 40px;
|
|
18
|
+
}
|
|
19
|
+
.document_show{
|
|
20
|
+
padding-left: 40px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#document_info .details{
|
|
24
|
+
color: $details-color;
|
|
25
|
+
}
|
|
26
|
+
#document_info #dates, #document_info #date_labels{
|
|
27
|
+
display: inline-block;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#document_info {
|
|
31
|
+
margin-top: 10px;
|
|
32
|
+
}
|
|
33
|
+
#document_info .right, #document_info .left{
|
|
34
|
+
}
|
|
35
|
+
#document_info .right{
|
|
36
|
+
float: right;
|
|
37
|
+
margin-right: 30px;
|
|
38
|
+
}
|
|
39
|
+
#document_info .left{
|
|
40
|
+
float: left;
|
|
41
|
+
margin-left: 30px;
|
|
42
|
+
}
|
|
43
|
+
#document_info #actions{
|
|
44
|
+
margin-top: 10px;
|
|
45
|
+
margin-left: 30px;
|
|
46
|
+
}
|
|
47
|
+
#document_info #actions .action{
|
|
48
|
+
margin-right: 10px;
|
|
49
|
+
}
|
|
50
|
+
#document_info #actions .action img{
|
|
51
|
+
width: 16px;
|
|
52
|
+
height: 16px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
#document_comments {
|
|
56
|
+
margin-top: 20px;
|
|
57
|
+
padding-top: 10px;
|
|
58
|
+
border-top: thin solid $separation-color;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#document_comments .new_comment.new_comment_shown {
|
|
62
|
+
width: 500px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
#document_comments .new_comment {
|
|
66
|
+
width: 550px;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
#document_comments .activity, #document_comments .subactivity {
|
|
70
|
+
background: transparent;
|
|
71
|
+
border: none;
|
|
72
|
+
}
|
|
73
|
+
#document_comments .activity_new_comment {
|
|
74
|
+
display:block;
|
|
75
|
+
}
|
|
@@ -1,16 +1,2 @@
|
|
|
1
1
|
class AudiosController < CommonDocumentsController
|
|
2
|
-
respond_to :html,:js
|
|
3
|
-
|
|
4
|
-
def show
|
|
5
|
-
path = @audio.file.path(params[:style])
|
|
6
|
-
if(params[:style].present?) && Document::STYLE_FORMAT[params[:style]]
|
|
7
|
-
path = path.split('.')[0]+'.'+Document::STYLE_FORMAT[params[:style]]
|
|
8
|
-
end
|
|
9
|
-
respond_to do |format|
|
|
10
|
-
format.all {send_file path,
|
|
11
|
-
:type => Document::STYLE_MIMETYPE[params[:style]], # CANT USE: @video.file_content_type because it is allways video/mp4 and breaks explorer and firefox
|
|
12
|
-
:disposition => "inline"}
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
2
|
end
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
class CommonDocumentsController < InheritedResources::Base
|
|
2
|
+
respond_to :html, :js
|
|
3
|
+
|
|
2
4
|
belongs_to_subjects :optional => true
|
|
3
5
|
|
|
4
6
|
before_filter :profile_subject!, :only => :index
|
|
5
7
|
|
|
6
8
|
load_and_authorize_resource :except => :index
|
|
7
9
|
|
|
8
|
-
def show
|
|
9
|
-
path = resource.file.path(params[:style])
|
|
10
10
|
|
|
11
|
+
def show
|
|
11
12
|
respond_to do |format|
|
|
13
|
+
format.html {render :action => :show}
|
|
12
14
|
format.all {
|
|
15
|
+
path = resource.file.path(params[:style] || params[:format])
|
|
16
|
+
|
|
13
17
|
send_file path,
|
|
14
18
|
:filename => resource.file_file_name,
|
|
15
|
-
:type => resource.file_content_type,
|
|
16
19
|
:disposition => "inline"
|
|
17
20
|
}
|
|
18
21
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class DocumentsController < CommonDocumentsController
|
|
2
|
-
respond_to :html
|
|
2
|
+
respond_to :html, :js
|
|
3
3
|
|
|
4
4
|
SEND_FILE_METHOD = :default
|
|
5
5
|
|
|
@@ -12,9 +12,15 @@ class DocumentsController < CommonDocumentsController
|
|
|
12
12
|
#TODO: we have to add the mimetype as in videos_controller
|
|
13
13
|
def download
|
|
14
14
|
path = @document.file.path(params[:style])
|
|
15
|
+
|
|
15
16
|
head(:bad_request) and return unless File.exist?(path)
|
|
16
|
-
send_file_options = {:filename=>@document.file_file_name, :type => @document.file_content_type}
|
|
17
17
|
|
|
18
|
+
send_file_options = {
|
|
19
|
+
:filename => @document.file_file_name,
|
|
20
|
+
:type => @document.file_content_type
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
# Ask Victor about the rationale of this:
|
|
18
24
|
case SEND_FILE_METHOD
|
|
19
25
|
when :apache then send_file_options[:x_sendfile] = true
|
|
20
26
|
when :nginx then head(:x_accel_redirect => path.gsub(Rails.root, ''))
|
|
@@ -25,7 +31,7 @@ class DocumentsController < CommonDocumentsController
|
|
|
25
31
|
|
|
26
32
|
class << self
|
|
27
33
|
def index_object_type
|
|
28
|
-
[:Audio
|
|
34
|
+
[ :Audio, :Video, :Picture, :Document ]
|
|
29
35
|
end
|
|
30
36
|
end
|
|
31
37
|
end
|
|
@@ -1,17 +1,2 @@
|
|
|
1
1
|
class VideosController < CommonDocumentsController
|
|
2
|
-
respond_to :html,:js
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def show
|
|
7
|
-
path = @video.file.path(params[:style])
|
|
8
|
-
if(params[:style].present?) && Document::STYLE_FORMAT[params[:style]]
|
|
9
|
-
path = path.split('.')[0]+'.'+Document::STYLE_FORMAT[params[:style]]
|
|
10
|
-
end
|
|
11
|
-
respond_to do |format|
|
|
12
|
-
format.all {send_file path,
|
|
13
|
-
:type => Document::STYLE_MIMETYPE[params[:style]], # CANT USE: @video.file_content_type because it is allways video/mp4 and breaks explorer and firefox
|
|
14
|
-
:disposition => "inline"}
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
2
|
end
|
|
@@ -11,16 +11,20 @@ module DocumentsHelper
|
|
|
11
11
|
def thumb_file_for(document, size)
|
|
12
12
|
document.thumb(size, self)
|
|
13
13
|
end
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
def image_tag_for (document)
|
|
16
|
+
image_tag download_document_path document,
|
|
17
|
+
:id => dom_id(document) + "_img"
|
|
18
|
+
end
|
|
19
|
+
|
|
15
20
|
def link_for_wall(document)
|
|
16
21
|
format = Mime::Type.lookup(document.file_content_type)
|
|
17
|
-
|
|
22
|
+
|
|
23
|
+
polymorphic_path(document, :format => format, :style => 'thumb0')
|
|
18
24
|
end
|
|
19
25
|
|
|
20
|
-
def
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
name[0,12]+"..."
|
|
24
|
-
end
|
|
26
|
+
def show_view_for(document)
|
|
27
|
+
render :partial => document.class.to_s.pluralize.downcase + '/' + document.class.to_s.downcase + "_show",
|
|
28
|
+
:locals => {document.class.to_s.downcase.to_sym => document}
|
|
25
29
|
end
|
|
26
30
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class Audio < Document
|
|
2
2
|
has_attached_file :file,
|
|
3
3
|
:url => '/:class/:id.:extension',
|
|
4
|
-
:path => ':rails_root/documents/:class/:id_partition/:style
|
|
4
|
+
:path => ':rails_root/documents/:class/:id_partition/:style',
|
|
5
5
|
:styles => {:webma => {:format => 'webm'}
|
|
6
6
|
},:processors => [:ffmpeg]
|
|
7
7
|
|
|
@@ -3,16 +3,14 @@ class Document < ActiveRecord::Base
|
|
|
3
3
|
|
|
4
4
|
IMAGE_FORMATS = ["doc","ppt","xls","rar","zip","mpeg","plain","pdf"]
|
|
5
5
|
|
|
6
|
-
STYLE_FORMAT = {"webm" =>"webm", "flv"=>"flv", "thumb"=>"png", "thumb0"=>"png", "webma"=>"webm"}
|
|
7
|
-
|
|
8
|
-
STYLE_MIMETYPE = {"webm" =>"video/webm", "flv"=>"video/x-flv", "thumb"=>"image/png", "thumb0"=>"image/png", "mp3"=>"audio/mpeg", "webma"=>"audio/webm"}
|
|
9
|
-
|
|
10
6
|
has_attached_file :file,
|
|
11
7
|
:url => '/:class/:id.:extension',
|
|
12
|
-
:path => ':rails_root/documents/:class/:id_partition/:style.:extension'
|
|
8
|
+
:path => ':rails_root/documents/:class/:id_partition/:style/:filename.:extension'
|
|
13
9
|
|
|
14
10
|
validates_attachment_presence :file
|
|
15
11
|
|
|
12
|
+
before_create :set_title_and_description
|
|
13
|
+
|
|
16
14
|
define_index do
|
|
17
15
|
indexes title
|
|
18
16
|
indexes file_file_name, :as => :file_name
|
|
@@ -67,5 +65,11 @@ class Document < ActiveRecord::Base
|
|
|
67
65
|
"#{ size.to_s }/default.png"
|
|
68
66
|
end
|
|
69
67
|
end
|
|
68
|
+
|
|
69
|
+
protected
|
|
70
|
+
|
|
71
|
+
def set_title_and_description
|
|
72
|
+
self.title = self.file_file_name
|
|
73
|
+
end
|
|
70
74
|
|
|
71
75
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class Picture < Document
|
|
2
2
|
has_attached_file :file,
|
|
3
3
|
:url => '/:class/:id.:extension',
|
|
4
|
-
:path => ':rails_root/documents/:class/:id_partition/:style
|
|
4
|
+
:path => ':rails_root/documents/:class/:id_partition/:style',
|
|
5
5
|
:styles => {:thumb => ["48x48#"],
|
|
6
6
|
:thumb0 => ["130x80#"]
|
|
7
7
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
class Video < Document
|
|
2
2
|
has_attached_file :file,
|
|
3
3
|
:url => '/:class/:id.:extension',
|
|
4
|
-
:path => ':rails_root/documents/:class/:id_partition/:style
|
|
5
|
-
:styles => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
:path => ':rails_root/documents/:class/:id_partition/:style',
|
|
5
|
+
:styles => {
|
|
6
|
+
:webm => {:format => 'webm'},
|
|
7
|
+
:flv => { :format => 'flv' },
|
|
8
|
+
:thumb => {:geometry => "48x48" , :format => 'png', :time => 5},
|
|
9
|
+
:thumb0 => {:geometry => "130x80", :format => 'png', :time => 5}
|
|
10
|
+
},
|
|
11
|
+
:processors => [:ffmpeg]
|
|
10
12
|
|
|
11
13
|
process_in_background :file
|
|
12
14
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
$("#jpId<%=audio.id%>").jPlayer( {
|
|
4
4
|
ready: function () {
|
|
5
|
-
$(this).jPlayer("setMedia", {
|
|
6
|
-
webma: "<%=
|
|
5
|
+
$(this).jPlayer("setMedia", {
|
|
6
|
+
webma: "<%= audio_url(audio, :format => 'webma') %>" // Defines the webma url
|
|
7
7
|
});
|
|
8
8
|
},
|
|
9
9
|
supplied: "webma",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<div class="attachment_thumb">
|
|
2
2
|
<%= link_to thumb_for(audio, 16),
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
audio_path(audio),
|
|
4
|
+
:class => "" %>
|
|
5
5
|
</div>
|
|
6
6
|
<div class="attachment_text">
|
|
7
7
|
<%= t('audio.msg') %><%= link_to "\""+audio.file_file_name+"\"",
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
audio_path(audio),
|
|
9
|
+
:class => "attachment_text_link" %>
|
|
10
10
|
</div>
|
|
11
11
|
<div id="jpId<%= audio.id%>" class="jpId_size0"></div>
|
|
12
12
|
<div class="jp-audio">
|