social_stream-linkser 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,59 @@
1
+ var SocialStream = SocialStream || {};
2
+ SocialStream.Linkser = SocialStream.Linkser || {};
3
+ SocialStream.Linkser.initiate = function() {
4
+ $.preloadImages("assets/loading.gif");
5
+ var urlDetect = function() {
6
+ this.currentValue = $("#input_activities").val();
7
+ if(this.lastValue == null)
8
+ this.lastValue = "";
9
+
10
+ var regexp = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/
11
+ if(regexp.test($("#input_activities").val())) {
12
+ $("#link_url").val($("#input_activities").val());
13
+ $("#link_loaded").val(false);
14
+ $("#new_post").attr("action", "/links");
15
+ if(this.currentValue != this.lastValue) {
16
+ $("#link_preview").html($('<img>').attr('src', 'assets/loading.gif').addClass('loading'));
17
+ this.lastValue = this.currentValue;
18
+ var url = this.currentValue;
19
+ var urlDetect = this;
20
+ $.ajax({
21
+ type : "GET",
22
+ url : "/linkser_parse?url=" + url,
23
+ success : function(html) {
24
+ if($("#input_activities").val() == url) {//Only show if input value is still the same
25
+ $("#link_preview").html(html);
26
+ $("#link_loaded").val(true);
27
+ }
28
+ },
29
+ error : function(xhr, ajaxOptions, thrownError) {
30
+ if($("#input_activities").val() == url) {//Only show if input value is still the same
31
+ $("#link_preview").html($('<div>').addClass('loading').html("<%= I18n.t('link.errors.loading') %> " + url));
32
+ }
33
+ }
34
+ });
35
+ }
36
+ $("#link_preview").show();
37
+ } else {
38
+ $("#new_post").attr("action", "/posts");
39
+ $("#link_preview").hide();
40
+ $("#link_preview").html("");
41
+ $("#link_url").val("");
42
+ }
43
+ }
44
+ if($("#new_post").length) {
45
+ $("#input_activities").change(urlDetect).keyup(urlDetect);
46
+ $("#new_post").append($('<input>').attr('type', 'hidden').attr('name', 'link[owner_id]').attr('id', 'link_owner_id').val($("#post_owner_id").val()));
47
+ $("#new_post").append($('<input>').attr('type', 'hidden').attr('name', 'link[url]').attr('id', 'link_url'));
48
+ $("#new_post").append($('<input>').attr('type', 'hidden').attr('name', 'link[loaded]').attr('id', 'link_loaded').val(false));
49
+ $("#new_post").append($('<div>').attr('id', 'link_preview').css('display', 'none'));
50
+ }
51
+ }
52
+
53
+ SocialStream.Linkser.openCallback = function(id,url){
54
+ $("#" + id).html($('<iframe>').attr('src',url).attr('width','470').attr('height','353'));
55
+ }
56
+
57
+ $(function(){
58
+ SocialStream.Linkser.initiate();
59
+ });
@@ -1 +1,2 @@
1
- //= require_tree .
1
+ //= require_tree .
2
+
@@ -11,16 +11,32 @@
11
11
  margin: auto;
12
12
  margin-top: 40px;
13
13
  }
14
+ #link_preview div.loading{
15
+ margin: auto;
16
+ margin-top: 50px;
17
+ }
14
18
  .link {
15
19
  position: relative;
16
20
  padding: 10px;
17
21
  }
18
22
  .link .thumbnail, .link .thumbnail img{
23
+ position: relative;
19
24
  float: left;
20
25
  max-height: 100px;
21
26
  max-width: 120px;
22
27
  margin-right:10px;
23
28
  }
29
+ .link .thumbnail img.play_button{
30
+ position: absolute;
31
+ bottom: 2px;
32
+ left: 2px;
33
+ opacity:0.6;
34
+ filter:alpha(opacity=60); /* For IE8 and earlier */
35
+ }
36
+ .link .thumbnail img.play_button:hover{
37
+ opacity:0.8;
38
+ filter:alpha(opacity=80); /* For IE8 and earlier */
39
+ }
24
40
  .link .info{
25
41
  float: left;
26
42
  width: 360px;
@@ -39,3 +55,6 @@
39
55
  }
40
56
  .link .info .description{
41
57
  }
58
+ .link iframe{
59
+ border: 0;
60
+ }
@@ -5,14 +5,7 @@ class LinkserController < ApplicationController
5
5
  o = Linkser.parse url, {:max_images => 1}
6
6
  if o.is_a? Linkser::Objects::HTML
7
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
8
+ link.fill o
16
9
  render :partial => "links/link_preview", :locals => {:link => link}
17
10
  return
18
11
  end
data/app/models/link.rb CHANGED
@@ -15,18 +15,26 @@ class Link < ActiveRecord::Base
15
15
  has created_at
16
16
  end
17
17
 
18
+ def fill linkser_object
19
+ self.title = linkser_object.title if linkser_object.title
20
+ self.description = linkser_object.description if linkser_object.description
21
+ self.url = linkser_object.last_url
22
+ r = linkser_object.resource
23
+ if r and r.type and r.url
24
+ self.callback_url = r.url
25
+ end
26
+ if linkser_object.ogp and linkser_object.ogp.image
27
+ self.image = linkser_object.ogp.image
28
+ elsif linkser_object.images and linkser_object.images.first
29
+ self.image = linkser_object.images.first.url
30
+ end
31
+ end
32
+
18
33
  def check_loaded
19
- if !self.loaded.eql?"true" and self.title.nil? and self.description.nil? and self.image.nil?
34
+ if !self.loaded.eql? "true" and self.title.nil? and self.description.nil? and self.image.nil?
20
35
  o = Linkser.parse self.url, {:max_images => 1}
21
36
  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
37
+ self.fill o
30
38
  end
31
39
  end
32
40
  end
@@ -1,7 +1,20 @@
1
1
  <%= div_for link, :class => 'content_size' do %>
2
2
  <% if link.image %>
3
3
  <div class="thumbnail">
4
- <%= link_to image_tag(link.image),link.url %>
4
+ <% if link.callback_url %>
5
+ <%= link_to image_tag(link.image),"javascript:void(0)" %>
6
+ <%= link_to image_tag("btn/btn_play.png", :class => "play_button"),"javascript:void(0)" %>
7
+ <%= javascript_tag do %>
8
+ $("#link_<%= link.id.to_s %> img").each(function(){
9
+ $(this).click(function(){
10
+ SocialStream.Linkser.openCallback("link_<%= link.id.to_s %>", "<%= link.callback_url %>");
11
+ });
12
+ });
13
+
14
+ <% end %>
15
+ <% else %>
16
+ <%= link_to image_tag(link.image),link.url, :target => "_blank" %>
17
+ <% end %>
5
18
  </div>
6
19
  <% end %>
7
20
  <div class="info">
@@ -11,7 +24,7 @@
11
24
  </div>
12
25
  <% end %>
13
26
  <div class="url">
14
- <%= auto_link(link.url) %>
27
+ <%= link_to link.url, link.url, :target => "_blank" %>
15
28
  </div>
16
29
  <% if link.description %>
17
30
  <div class="description">
@@ -21,5 +21,8 @@
21
21
  <%= hidden_field_tag "link[description]", link.description %>
22
22
  </div>
23
23
  <% end %>
24
+ <% if link.callback_url %>
25
+ <%= hidden_field_tag "link[callback_url]", link.callback_url %>
26
+ <% end %>
24
27
  </div>
25
28
  <% end %>
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Linkser
3
- VERSION = "0.0.1".freeze
3
+ VERSION = "0.0.2".freeze
4
4
  end
5
5
  end
@@ -12,7 +12,7 @@ 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.10.1')
15
+ s.add_runtime_dependency('social_stream-base', '~> 0.10.6')
16
16
  s.add_runtime_dependency('linkser', '~> 0.0.6')
17
17
  # Development Gem dependencies
18
18
  s.add_development_dependency('sqlite3-ruby')
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_stream-linkser
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Eduardo Casanova Cuesta
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-12-05 00:00:00 +01:00
19
+ date: 2011-12-09 00:00:00 +01:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -27,12 +27,12 @@ dependencies:
27
27
  requirements:
28
28
  - - ~>
29
29
  - !ruby/object:Gem::Version
30
- hash: 53
30
+ hash: 59
31
31
  segments:
32
32
  - 0
33
33
  - 10
34
- - 1
35
- version: 0.10.1
34
+ - 6
35
+ version: 0.10.6
36
36
  type: :runtime
37
37
  version_requirements: *id001
38
38
  - !ruby/object:Gem::Dependency
@@ -169,11 +169,9 @@ files:
169
169
  - app/models/link.rb
170
170
  - app/views/links/_link.html.erb
171
171
  - app/views/links/_link_preview.html.erb
172
- - app/views/links/_link_with_details.html.erb
173
172
  - app/views/links/create.js.erb
174
173
  - app/views/links/destroy.js.erb
175
174
  - app/views/links/show.html.erb
176
- - app/views/posts/_new_activity_fields.erb
177
175
  - config/locales/en.yml
178
176
  - config/locales/es.yml
179
177
  - config/routes.rb
@@ -1,4 +0,0 @@
1
- <%= div_for link, :class => 'content_size' do %>
2
- <%= simple_format link.title %>
3
- <% end %>
4
-
@@ -1,53 +0,0 @@
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.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/
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 %>