social_stream-linkser 0.0.1
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 +14 -0
- data/.rspec +1 -0
- data/Gemfile +5 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +6 -0
- data/Rakefile +26 -0
- data/app/assets/javascripts/linkser.js.erb +0 -0
- data/app/assets/javascripts/social_stream-linkser.js +1 -0
- data/app/assets/stylesheets/linkser.css.scss +41 -0
- data/app/assets/stylesheets/social_stream-linkser.css +3 -0
- data/app/controllers/links_controller.rb +3 -0
- data/app/controllers/linkser_controller.rb +22 -0
- data/app/models/link.rb +34 -0
- data/app/views/links/_link.html.erb +24 -0
- data/app/views/links/_link_preview.html.erb +25 -0
- data/app/views/links/_link_with_details.html.erb +4 -0
- data/app/views/links/create.js.erb +15 -0
- data/app/views/links/destroy.js.erb +1 -0
- data/app/views/links/show.html.erb +10 -0
- data/app/views/posts/_new_activity_fields.erb +53 -0
- data/config/locales/en.yml +14 -0
- data/config/locales/es.yml +14 -0
- data/config/routes.rb +3 -0
- data/db/migrate/20111129100618_create_social_stream_linkser.rb +21 -0
- data/lib/generators/social_stream/linkser/install_generator.rb +24 -0
- data/lib/social_stream-linkser.rb +16 -0
- data/lib/social_stream/linkser/engine.rb +7 -0
- data/lib/social_stream/linkser/version.rb +5 -0
- data/lib/social_stream/migrations/linkser.rb +9 -0
- data/social_stream-linkser.gemspec +26 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +45 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +22 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +25 -0
- data/spec/dummy/config/environments/production.rb +49 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +176 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/navigation.rb +0 -0
- data/spec/dummy/config/relations.yml +39 -0
- data/spec/dummy/config/routes.rb +60 -0
- data/spec/dummy/db/.gitkeep +0 -0
- data/spec/dummy/documents/documents/000/000/001/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/002/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/003/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/004/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/005/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/006/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/007/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/008/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/009/original.pdf +157 -0
- data/spec/dummy/documents/documents/000/000/010/original.pdf +157 -0
- data/spec/dummy/documents/pictures/000/000/011/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/011/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/011/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/012/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/012/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/012/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/013/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/013/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/013/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/014/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/014/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/014/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/015/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/015/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/015/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/016/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/016/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/016/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/017/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/017/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/017/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/018/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/018/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/018/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/019/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/019/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/019/thumb0.png +0 -0
- data/spec/dummy/documents/pictures/000/000/020/original.png +0 -0
- data/spec/dummy/documents/pictures/000/000/020/thumb.png +0 -0
- data/spec/dummy/documents/pictures/000/000/020/thumb0.png +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/javascripts/application.js +2 -0
- data/spec/dummy/public/javascripts/controls.js +965 -0
- data/spec/dummy/public/javascripts/dragdrop.js +974 -0
- data/spec/dummy/public/javascripts/effects.js +1123 -0
- data/spec/dummy/public/javascripts/prototype.js +6001 -0
- data/spec/dummy/public/javascripts/rails.js +191 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/integration/navigation_spec.rb +9 -0
- data/spec/socialstream_linkser_spec.rb +7 -0
- data/spec/spec_helper.rb +48 -0
- data/spec/support/cancan.rb +1 -0
- data/spec/support/db.rb +8 -0
- data/spec/support/devise.rb +4 -0
- data/spec/support/mock.rb +4 -0
- data/vendor/assets/javascripts/jquery.jplayer.js +78 -0
- data/vendor/assets/stylesheets/jplayer.blue.monday.css +448 -0
- data/vendor/assets/stylesheets/jplayer.blue.monday.jpg +0 -0
- data/vendor/assets/stylesheets/jplayer.blue.monday.video.play.hover.png +0 -0
- data/vendor/assets/stylesheets/jplayer.blue.monday.video.play.png +0 -0
- data/vendor/assets/stylesheets/jquery.lightbox.css +101 -0
- data/vendor/assets/stylesheets/pbar-ani.gif +0 -0
- metadata +311 -0
data/.gitignore
ADDED
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright 2011 Universidad Politécnica de Madrid
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
require 'bundler/gem_tasks'
|
|
3
|
+
|
|
4
|
+
require 'rdoc/task'
|
|
5
|
+
|
|
6
|
+
require 'rspec/core'
|
|
7
|
+
require 'rspec/core/rake_task'
|
|
8
|
+
|
|
9
|
+
RSpec::Core::RakeTask.new(:spec)
|
|
10
|
+
|
|
11
|
+
task :default => :spec
|
|
12
|
+
|
|
13
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
14
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
15
|
+
rdoc.title = 'SocialStream Linkser'
|
|
16
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
17
|
+
rdoc.rdoc_files.include('README.rdoc')
|
|
18
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Modify this gem's tags
|
|
22
|
+
class Bundler::GemHelper
|
|
23
|
+
def version_tag
|
|
24
|
+
"linkser#{version}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//= require_tree .
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
@import "colors";
|
|
2
|
+
|
|
3
|
+
#link_preview {
|
|
4
|
+
width: 510px;
|
|
5
|
+
height: 120px;
|
|
6
|
+
border: 1px solid $auxiliar-color;
|
|
7
|
+
margin: 5px auto;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
#link_preview img.loading{
|
|
11
|
+
margin: auto;
|
|
12
|
+
margin-top: 40px;
|
|
13
|
+
}
|
|
14
|
+
.link {
|
|
15
|
+
position: relative;
|
|
16
|
+
padding: 10px;
|
|
17
|
+
}
|
|
18
|
+
.link .thumbnail, .link .thumbnail img{
|
|
19
|
+
float: left;
|
|
20
|
+
max-height: 100px;
|
|
21
|
+
max-width: 120px;
|
|
22
|
+
margin-right:10px;
|
|
23
|
+
}
|
|
24
|
+
.link .info{
|
|
25
|
+
float: left;
|
|
26
|
+
width: 360px;
|
|
27
|
+
text-align: left;
|
|
28
|
+
}
|
|
29
|
+
.activity_objects .link .info{
|
|
30
|
+
width: 320px;
|
|
31
|
+
}
|
|
32
|
+
.link .info .title{
|
|
33
|
+
font-weight: bold;
|
|
34
|
+
margin-bottom: 3px;
|
|
35
|
+
}
|
|
36
|
+
.link .info .url{
|
|
37
|
+
text-decoration: underline;
|
|
38
|
+
margin-bottom: 5px;
|
|
39
|
+
}
|
|
40
|
+
.link .info .description{
|
|
41
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class LinkserController < ApplicationController
|
|
2
|
+
def index
|
|
3
|
+
if params[:url].present?
|
|
4
|
+
url = params[:url]
|
|
5
|
+
o = Linkser.parse url, {:max_images => 1}
|
|
6
|
+
if o.is_a? Linkser::Objects::HTML
|
|
7
|
+
link = Link.new
|
|
8
|
+
link.title = o.title if o.title
|
|
9
|
+
link.description = o.description if o.description
|
|
10
|
+
link.url = o.last_url
|
|
11
|
+
if o.ogp and o.ogp.image
|
|
12
|
+
link.image = o.ogp.image
|
|
13
|
+
elsif o.images and o.images.first
|
|
14
|
+
link.image = o.images.first.url
|
|
15
|
+
end
|
|
16
|
+
render :partial => "links/link_preview", :locals => {:link => link}
|
|
17
|
+
return
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
render :text => I18n.t("link.errors.only_web")
|
|
21
|
+
end
|
|
22
|
+
end
|
data/app/models/link.rb
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class Link < ActiveRecord::Base
|
|
2
|
+
include SocialStream::Models::Object
|
|
3
|
+
|
|
4
|
+
validates_presence_of :url
|
|
5
|
+
|
|
6
|
+
attr_accessor :loaded
|
|
7
|
+
|
|
8
|
+
before_create :check_loaded
|
|
9
|
+
|
|
10
|
+
define_index do
|
|
11
|
+
indexes title
|
|
12
|
+
indexes description
|
|
13
|
+
indexes url
|
|
14
|
+
|
|
15
|
+
has created_at
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def check_loaded
|
|
19
|
+
if !self.loaded.eql?"true" and self.title.nil? and self.description.nil? and self.image.nil?
|
|
20
|
+
o = Linkser.parse self.url, {:max_images => 1}
|
|
21
|
+
if o.is_a? Linkser::Objects::HTML
|
|
22
|
+
self.title = o.title if o.title
|
|
23
|
+
self.description = o.description if o.description
|
|
24
|
+
self.url = o.last_url
|
|
25
|
+
if o.ogp and o.ogp.image
|
|
26
|
+
self.image = o.ogp.image
|
|
27
|
+
elsif o.images and o.images.first
|
|
28
|
+
self.image = o.images.first.url
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<%= div_for link, :class => 'content_size' do %>
|
|
2
|
+
<% if link.image %>
|
|
3
|
+
<div class="thumbnail">
|
|
4
|
+
<%= link_to image_tag(link.image),link.url %>
|
|
5
|
+
</div>
|
|
6
|
+
<% end %>
|
|
7
|
+
<div class="info">
|
|
8
|
+
<% if link.title %>
|
|
9
|
+
<div class="title">
|
|
10
|
+
<%= link.title %>
|
|
11
|
+
</div>
|
|
12
|
+
<% end %>
|
|
13
|
+
<div class="url">
|
|
14
|
+
<%= auto_link(link.url) %>
|
|
15
|
+
</div>
|
|
16
|
+
<% if link.description %>
|
|
17
|
+
<div class="description">
|
|
18
|
+
<%= auto_link(link.description) %>
|
|
19
|
+
</div>
|
|
20
|
+
<% end %>
|
|
21
|
+
</div>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
24
|
+
<br class="clearfloat">
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<%= div_for link, :class => 'content_size' do %>
|
|
2
|
+
<% if link.image %>
|
|
3
|
+
<div class="thumbnail">
|
|
4
|
+
<%= image_tag(link.image)%>
|
|
5
|
+
<%= hidden_field_tag "link[image]", link.image %>
|
|
6
|
+
</div>
|
|
7
|
+
<% end %>
|
|
8
|
+
<div class="info">
|
|
9
|
+
<% if link.title %>
|
|
10
|
+
<div class="title">
|
|
11
|
+
<%= link.title %>
|
|
12
|
+
<%= hidden_field_tag "link[title]", link.title %>
|
|
13
|
+
</div>
|
|
14
|
+
<% end %>
|
|
15
|
+
<div class="url">
|
|
16
|
+
<%= auto_link(link.url) %>
|
|
17
|
+
</div>
|
|
18
|
+
<% if link.description %>
|
|
19
|
+
<div class="description">
|
|
20
|
+
<%= auto_link(link.description) %>
|
|
21
|
+
<%= hidden_field_tag "link[description]", link.description %>
|
|
22
|
+
</div>
|
|
23
|
+
<% end %>
|
|
24
|
+
</div>
|
|
25
|
+
<% end %>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//Display the new post
|
|
2
|
+
$("#wall").prepend("<%= escape_javascript(render @link.post_activity) %>");
|
|
3
|
+
|
|
4
|
+
setActivityPrivacyTooltips("<%= escape_javascript dom_id(@link.post_activity) %>");
|
|
5
|
+
|
|
6
|
+
unblock_all_forms();
|
|
7
|
+
|
|
8
|
+
$("#link_preview").hide();
|
|
9
|
+
$("#link_preview").html("");
|
|
10
|
+
$("#link_loaded").val(false);
|
|
11
|
+
$("#link_preview").html("");
|
|
12
|
+
$("#link_url").val("");
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%=render(:partial => 'objects/destroy') %>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<% content_for :javascript do %>
|
|
2
|
+
var message_hash = window.location.hash.match(/^.*activity_(\d+).*$/);
|
|
3
|
+
if (message_hash && message_hash > 0){
|
|
4
|
+
$.scrollTo('#activity_' + message_hash[1] ,1500,{axis:'y'});
|
|
5
|
+
}
|
|
6
|
+
<% end %>
|
|
7
|
+
|
|
8
|
+
<%= render :partial => 'objects/show',
|
|
9
|
+
:locals => { :object => @link } %>
|
|
10
|
+
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<%= f.text_field :text, :id => "input_activities", :size => 85 %>
|
|
2
|
+
<%= hidden_field_tag "link[owner_id]", Actor.normalize_id(receiver) %>
|
|
3
|
+
<%= hidden_field_tag "link[url]" %>
|
|
4
|
+
<%= hidden_field_tag "link[loaded]", false %>
|
|
5
|
+
<div id="link_preview" style="display:none;"></div>
|
|
6
|
+
|
|
7
|
+
<%= javascript_tag do %>
|
|
8
|
+
$(function() {
|
|
9
|
+
$.preloadImages ("assets/loading.gif");
|
|
10
|
+
$("#input_activities").Watermark("<%= I18n.t('post.input') %>","#666");
|
|
11
|
+
|
|
12
|
+
var urlDetect = function(){
|
|
13
|
+
this.currentValue = $("#input_activities").val();
|
|
14
|
+
if(this.lastValue==null) this.lastValue = "";
|
|
15
|
+
|
|
16
|
+
var regexp = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/
|
|
17
|
+
if(regexp.test($("#input_activities").val())){
|
|
18
|
+
$("#link_url").val($("#input_activities").val());
|
|
19
|
+
$("#link_loaded").val(false);
|
|
20
|
+
$("#new_post").attr("action","<%= links_path %>");
|
|
21
|
+
if(this.currentValue!=this.lastValue){
|
|
22
|
+
$("#link_preview").html("<%= escape_javascript(image_tag('loading.gif', :class => :loading)) %>");
|
|
23
|
+
this.lastValue = this.currentValue;
|
|
24
|
+
var url = this.currentValue;
|
|
25
|
+
var urlDetect = this;
|
|
26
|
+
$.ajax({
|
|
27
|
+
type : "GET",
|
|
28
|
+
url : "<%= linkser_parse_url %>?url=" + url,
|
|
29
|
+
success : function(html) {
|
|
30
|
+
console.log("Peticion guay a " + url);
|
|
31
|
+
if ($("#input_activities").val()==url){ //Only show if input value is still the same
|
|
32
|
+
$("#link_preview").html(html);
|
|
33
|
+
$("#link_loaded").val(true);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
error: function (xhr, ajaxOptions, thrownError){
|
|
37
|
+
$("#link_preview").html("<span class=\"loading\"><%= escape_javascript(t("link.errors.loading"))%> " + url + "</span>");
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
$("#link_preview").show();
|
|
42
|
+
}else{
|
|
43
|
+
$("#new_post").attr("action","<%= posts_path %>");
|
|
44
|
+
$("#link_preview").hide();
|
|
45
|
+
$("#link_preview").html("");
|
|
46
|
+
$("#link_url").val("");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
$("#input_activities").change(urlDetect).keyup(urlDetect);
|
|
50
|
+
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
<% end %>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
en:
|
|
2
|
+
linkser:
|
|
3
|
+
title: "Linkser"
|
|
4
|
+
link:
|
|
5
|
+
confirm_delete: "Delete link?"
|
|
6
|
+
errors:
|
|
7
|
+
loading: "Error loading"
|
|
8
|
+
only_webs: "Only webpages are supported"
|
|
9
|
+
form:
|
|
10
|
+
title: "Link"
|
|
11
|
+
input: "Write the web address"
|
|
12
|
+
name: "link"
|
|
13
|
+
one: "a link"
|
|
14
|
+
title: "Links"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
es:
|
|
2
|
+
linkser:
|
|
3
|
+
title: "Linkser"
|
|
4
|
+
link:
|
|
5
|
+
confirm_delete: "¿Borrar enlace?"
|
|
6
|
+
errors:
|
|
7
|
+
loading: "Error cargando"
|
|
8
|
+
only_webs: "Solo puedes compartir págnas web"
|
|
9
|
+
form:
|
|
10
|
+
title: "Enlace"
|
|
11
|
+
input: "Escribe una dirección"
|
|
12
|
+
name: "enlace"
|
|
13
|
+
one: "una enlace"
|
|
14
|
+
title: "Enlaces"
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class CreateSocialStreamLinkser < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table "links", :force => true do |t|
|
|
4
|
+
t.integer "activity_object_id"
|
|
5
|
+
t.datetime "created_at"
|
|
6
|
+
t.datetime "updated_at"
|
|
7
|
+
t.string "url"
|
|
8
|
+
t.string "callback_url"
|
|
9
|
+
t.string "title"
|
|
10
|
+
t.string "image"
|
|
11
|
+
t.text "description"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
add_index "links", "activity_object_id"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.down
|
|
18
|
+
remove_foreign_key "links", :name => "links_on_activity_object_id"
|
|
19
|
+
drop_table :links
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class SocialStream::Linkser::InstallGenerator < Rails::Generators::Base
|
|
2
|
+
include Rails::Generators::Migration
|
|
3
|
+
|
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
5
|
+
|
|
6
|
+
def create_migration_file
|
|
7
|
+
require 'rake'
|
|
8
|
+
Rails.application.load_tasks
|
|
9
|
+
Rake::Task['railties:install:migrations'].reenable
|
|
10
|
+
Rake::Task['social_stream_linkser_engine:install:migrations'].invoke
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def require_javascripts
|
|
14
|
+
inject_into_file 'app/assets/javascripts/application.js',
|
|
15
|
+
"//= require social_stream-linkser\n",
|
|
16
|
+
:before => '//= require_tree .'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def require_stylesheets
|
|
20
|
+
inject_into_file 'app/assets/stylesheets/application.css',
|
|
21
|
+
" *= require social_stream-linkser\n",
|
|
22
|
+
:before => ' *= require_tree .'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'social_stream-base'
|
|
2
|
+
require 'linkser'
|
|
3
|
+
|
|
4
|
+
module SocialStream
|
|
5
|
+
module Linkser
|
|
6
|
+
# Add :link to SocialStream.objects and SocialStream.activity_forms by default
|
|
7
|
+
# It can be configured by users at application's config/initializers/social_stream.rb
|
|
8
|
+
#%w(objects activity_forms).each do |m|
|
|
9
|
+
%w(objects).each do |m|
|
|
10
|
+
SocialStream.__send__(m).push(:link) unless SocialStream.__send__(m).include?(:link)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
require 'social_stream/linkser/engine'
|