social_stream-base 0.8.2 → 0.9.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/app/assets/images/btn/search_icon.png +0 -0
- data/app/assets/images/loading.gif +0 -0
- data/app/assets/javascripts/layouts.js +1 -1
- data/app/assets/stylesheets/search.css +65 -0
- data/app/controllers/contacts_controller.rb +1 -1
- data/app/controllers/search_controller.rb +15 -0
- data/app/models/actor.rb +8 -2
- data/app/models/contact.rb +4 -3
- data/app/models/relation.rb +6 -0
- data/app/models/relation/public.rb +1 -23
- data/app/models/relation/reject.rb +3 -0
- data/app/models/relation/single.rb +22 -0
- data/app/models/tie.rb +1 -1
- data/app/views/devise/registrations/edit.html.erb +48 -26
- data/app/views/layouts/_header.erb +1 -2
- data/app/views/layouts/_search.html.erb +53 -0
- data/app/views/search/_header_search.html.erb +10 -0
- data/config/locales/en.yml +3 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20110912074426_add_reject_relation.rb +29 -0
- data/lib/mailboxer/notification_decoder.rb +1 -1
- data/lib/social_stream/base/version.rb +1 -1
- data/spec/factories/tie.rb +4 -0
- data/spec/models/tie_spec.rb +12 -1
- data/vendor/assets/javascripts/jquery.watermarkinput.js +81 -0
- metadata +14 -5
- data/app/assets/javascripts/search.js +0 -1
Binary file
|
Binary file
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/******************** Search box css ***********************/
|
2
|
+
#header_search {
|
3
|
+
float: left;
|
4
|
+
padding: 1px 10px 0 10px;
|
5
|
+
z-index:2001;
|
6
|
+
}
|
7
|
+
|
8
|
+
#global_search_input {
|
9
|
+
width: 150px;
|
10
|
+
height: 16px;
|
11
|
+
border: solid 1px #dedede;
|
12
|
+
padding:0 3px 0 22px;
|
13
|
+
background: url('btn/search_icon.png') 5px 50% no-repeat white;
|
14
|
+
font-size: 11px;
|
15
|
+
color: #2A3890;
|
16
|
+
}
|
17
|
+
#global_search_display {
|
18
|
+
width: 175px;
|
19
|
+
display: none;
|
20
|
+
float: right;
|
21
|
+
margin-right: 35px;
|
22
|
+
border-left: solid 1px #B9B9B9;
|
23
|
+
border-right: solid 1px #B9B9B9;
|
24
|
+
border-bottom: solid 1px #B9B9B9;
|
25
|
+
overflow: hidden;
|
26
|
+
position: absolute;
|
27
|
+
z-index: 2000;
|
28
|
+
background: whiteSmoke;
|
29
|
+
text-align: center;
|
30
|
+
}
|
31
|
+
|
32
|
+
#global_search_display a {
|
33
|
+
color: #2A3890;
|
34
|
+
text-decoration: none;
|
35
|
+
}
|
36
|
+
#global_search_display a:hover {
|
37
|
+
color: #2A3890;
|
38
|
+
text-decoration: none;
|
39
|
+
font-weight: bold;
|
40
|
+
}
|
41
|
+
|
42
|
+
#global_search_display li {
|
43
|
+
padding: 4px;
|
44
|
+
border-top: solid 1px #B9B9B9;
|
45
|
+
font-size: 10px;
|
46
|
+
height: 35px;
|
47
|
+
background: whiteSmoke;
|
48
|
+
overflow: hidden;
|
49
|
+
text-align: left;
|
50
|
+
}
|
51
|
+
#global_search_display li .logo{
|
52
|
+
float:left;
|
53
|
+
margin-right: 5px;
|
54
|
+
}
|
55
|
+
|
56
|
+
#global_search_display li .name {
|
57
|
+
float:left;
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
#global_search_display li:hover {
|
62
|
+
background: #CFDEFF;
|
63
|
+
color: #2A3890;
|
64
|
+
}
|
65
|
+
/******************** Search box css END ***********************/
|
@@ -41,7 +41,7 @@ class ContactsController < ApplicationController
|
|
41
41
|
def destroy
|
42
42
|
@contact = current_subject.sent_contacts.find params[:id]
|
43
43
|
|
44
|
-
@contact.relation_ids = [current_subject.
|
44
|
+
@contact.relation_ids = [current_subject.relation_reject.id]
|
45
45
|
|
46
46
|
respond_to do |format|
|
47
47
|
format.js
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class SearchController < ApplicationController
|
2
|
+
|
3
|
+
#before_filter :authenticate_user! #??
|
4
|
+
|
5
|
+
def index
|
6
|
+
if params[:mode].eql? "header_search"
|
7
|
+
@search_result = Actor.search "*#{params[:id]}*", :page => 1, :per_page => 10
|
8
|
+
render :partial => "header_search", :locals =>{:search_result => @search_result}
|
9
|
+
return
|
10
|
+
else
|
11
|
+
@search_result = ThinkingSphinx.search "*#{params[:id]}*"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
data/app/models/actor.rb
CHANGED
@@ -195,7 +195,12 @@ class Actor < ActiveRecord::Base
|
|
195
195
|
def relation_public
|
196
196
|
Relation::Public.of(self)
|
197
197
|
end
|
198
|
-
|
198
|
+
|
199
|
+
# The {Relation::Reject} for this {Actor}
|
200
|
+
def relation_reject
|
201
|
+
Relation::Reject.of(self)
|
202
|
+
end
|
203
|
+
|
199
204
|
# All the {Actor actors} this one has relation with
|
200
205
|
#
|
201
206
|
# Options:
|
@@ -229,7 +234,7 @@ class Actor < ActiveRecord::Base
|
|
229
234
|
if options[:relations].present?
|
230
235
|
as = as.merge(Tie.related_by(options[:relations]))
|
231
236
|
else
|
232
|
-
as = as.merge(Relation.where(:type => 'Relation::Custom'))
|
237
|
+
as = as.merge(Relation.where(:type => ['Relation::Custom', 'Relation::Public']))
|
233
238
|
end
|
234
239
|
|
235
240
|
as
|
@@ -447,6 +452,7 @@ class Actor < ActiveRecord::Base
|
|
447
452
|
def create_initial_relations
|
448
453
|
Relation::Custom.defaults_for(self)
|
449
454
|
Relation::Public.default_for(self)
|
455
|
+
Relation::Reject.default_for(self)
|
450
456
|
end
|
451
457
|
|
452
458
|
# After create callback
|
data/app/models/contact.rb
CHANGED
@@ -116,12 +116,13 @@ class Contact < ActiveRecord::Base
|
|
116
116
|
# Is this {Contact} +new+ or +edit+ for {SocialStream::Models::Subject subject} ?
|
117
117
|
#
|
118
118
|
# action is +new+ when, despite of being created, it has not {Tie ties} or it has a {Tie} with a
|
119
|
-
# {Relation::
|
119
|
+
# {Relation::Reject reject relation}.
|
120
120
|
#
|
121
|
-
# The contact's action is +edit+ when it has any {Tie} with a {Relation::Custom custom relation}
|
121
|
+
# The contact's action is +edit+ when it has any {Tie} with a {Relation::Custom custom relation} or
|
122
|
+
# a {Relation::Public public relation}
|
122
123
|
#
|
123
124
|
def action
|
124
|
-
if ties_count > 0 && relations.where(:type => 'Relation::Custom').any?
|
125
|
+
if ties_count > 0 && relations.where(:type => ['Relation::Custom', 'Relation::Public']).any?
|
125
126
|
'edit'
|
126
127
|
else
|
127
128
|
'new'
|
data/app/models/relation.rb
CHANGED
@@ -35,6 +35,12 @@ class Relation < ActiveRecord::Base
|
|
35
35
|
has_many :audiences, :dependent => :destroy
|
36
36
|
has_many :activities, :through => :audiences
|
37
37
|
|
38
|
+
validates_presence_of :actor_id
|
39
|
+
|
40
|
+
scope :actor, lambda { |a|
|
41
|
+
where(:actor_id => Actor.normalize_id(a))
|
42
|
+
}
|
43
|
+
|
38
44
|
scope :mode, lambda { |st, rt|
|
39
45
|
where(:sender_type => st, :receiver_type => rt)
|
40
46
|
}
|
@@ -1,31 +1,9 @@
|
|
1
|
-
class Relation::Public < Relation
|
2
|
-
scope :actor, lambda { |a|
|
3
|
-
where(:actor_id => Actor.normalize_id(a))
|
4
|
-
}
|
5
|
-
|
6
|
-
validates_presence_of :actor_id
|
7
|
-
|
8
|
-
class << self
|
9
|
-
def default_for(actor)
|
10
|
-
create! :actor => actor
|
11
|
-
end
|
12
|
-
|
13
|
-
# The {Relation::Public} belonging to actor
|
14
|
-
def of(actor)
|
15
|
-
actor(actor).first
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
1
|
+
class Relation::Public < Relation::Single
|
19
2
|
# A {Relation::Public public relation} is always the weakest
|
20
3
|
def <=>(relation)
|
21
4
|
1
|
22
5
|
end
|
23
6
|
|
24
|
-
# The name of public relation
|
25
|
-
def name
|
26
|
-
I18n.t('relation_public.name')
|
27
|
-
end
|
28
|
-
|
29
7
|
# Are we supporting custom permissions for {Relation::Public}? Not by the moment.
|
30
8
|
def allow?(user, action, object)
|
31
9
|
action == 'read' && object == 'activity'
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Common methods for single relations, like {Relation::Public} and {Relation::Reject}
|
2
|
+
#
|
3
|
+
# Unlike {Relation::Custom}, {SocialStream::Models::Subject subjects} have only one of
|
4
|
+
# these {Relation relations}.
|
5
|
+
#
|
6
|
+
class Relation::Single < Relation
|
7
|
+
class << self
|
8
|
+
def default_for(actor)
|
9
|
+
create! :actor => actor
|
10
|
+
end
|
11
|
+
|
12
|
+
# The {Relation::Public} belonging to actor
|
13
|
+
def of(actor)
|
14
|
+
actor(actor).first
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# The name of public relation
|
19
|
+
def name
|
20
|
+
I18n.t("relation_#{ self.class.name }.name")
|
21
|
+
end
|
22
|
+
end
|
data/app/models/tie.rb
CHANGED
@@ -88,7 +88,7 @@ class Tie < ActiveRecord::Base
|
|
88
88
|
#
|
89
89
|
# Create contact activity if this is the first tie
|
90
90
|
def create_activity
|
91
|
-
return if contact.reload.ties_count != 1 || relation.is_a?(Relation::
|
91
|
+
return if contact.reload.ties_count != 1 || relation.is_a?(Relation::Reject)
|
92
92
|
|
93
93
|
Activity.create! :contact => contact,
|
94
94
|
:relation_ids => contact.relation_ids,
|
@@ -4,39 +4,63 @@
|
|
4
4
|
link_to (t('account.edit'), edit_user_registration_path)
|
5
5
|
) %>
|
6
6
|
|
7
|
+
<%= devise_error_messages! %>
|
8
|
+
|
9
|
+
<div class="space_center"></div>
|
10
|
+
<h2><%= t('account.edit') %></h2>
|
7
11
|
<div class="space_center"></div>
|
8
12
|
|
9
|
-
<div class="block" id="
|
10
|
-
<div class="
|
11
|
-
|
13
|
+
<div class="block" id="password_form">
|
14
|
+
<div class="header">
|
15
|
+
Change password
|
12
16
|
</div>
|
13
|
-
|
14
|
-
|
15
|
-
<%= devise_error_messages! %>
|
16
|
-
|
17
|
+
<div >
|
18
|
+
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
|
17
19
|
<div class="form_row">
|
18
20
|
<div class="form_label">
|
19
|
-
<%= f.label
|
21
|
+
<%= f.label t('account.password.new') %>
|
20
22
|
</div>
|
21
23
|
<div class="form_field">
|
22
|
-
<%= f.
|
24
|
+
<%= f.password_field :password, :class => "form_tag" %>
|
23
25
|
</div>
|
24
26
|
</div>
|
25
27
|
<div class="form_row">
|
26
28
|
<div class="form_label">
|
27
|
-
<%= f.label
|
29
|
+
<%= f.label t('account.password.retype') %>
|
28
30
|
</div>
|
29
31
|
<div class="form_field">
|
30
|
-
<%= f.password_field :
|
31
|
-
<span class="form_comment">(Leave blank if you don't want to change it)</span>
|
32
|
+
<%= f.password_field :password_confirmation, :class => "form_tag" %>
|
32
33
|
</div>
|
33
34
|
</div>
|
34
35
|
<div class="form_row">
|
35
36
|
<div class="form_label">
|
36
|
-
<%= f.label :
|
37
|
+
<%= f.label :current_password %>
|
37
38
|
</div>
|
38
39
|
<div class="form_field">
|
39
|
-
<%= f.password_field :
|
40
|
+
<%= f.password_field :current_password, :class => "form_tag" %>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
<div class="form_row space_center">
|
44
|
+
<%= f.submit t('button.update'), :class => "button" %>
|
45
|
+
<button class="button" onclick="window.location.href='<%= polymorphic_path(current_subject) %>';">
|
46
|
+
<%= t('button.cancel')%>
|
47
|
+
</button>
|
48
|
+
</div>
|
49
|
+
<% end%>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
<div class="block" id="email_form">
|
53
|
+
<div class="header">
|
54
|
+
Change email address
|
55
|
+
</div>
|
56
|
+
<div >
|
57
|
+
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
|
58
|
+
<div class="form_row">
|
59
|
+
<div class="form_label">
|
60
|
+
<%= f.label :email %>
|
61
|
+
</div>
|
62
|
+
<div class="form_field">
|
63
|
+
<%= f.email_field :email, :class => "form_tag" %>
|
40
64
|
</div>
|
41
65
|
</div>
|
42
66
|
<div class="form_row">
|
@@ -44,8 +68,7 @@
|
|
44
68
|
<%= f.label :current_password %>
|
45
69
|
</div>
|
46
70
|
<div class="form_field">
|
47
|
-
<%= f.password_field :current_password, :class => "form_tag"
|
48
|
-
<span class="form_comment">(We need your current password to confirm your changes)</span>
|
71
|
+
<%= f.password_field :current_password, :class => "required form_tag" %>
|
49
72
|
</div>
|
50
73
|
</div>
|
51
74
|
<div class="form_row space_center">
|
@@ -54,15 +77,14 @@
|
|
54
77
|
<%= t('button.cancel')%>
|
55
78
|
</button>
|
56
79
|
</div>
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
80
|
+
<% end%>
|
81
|
+
</div>
|
82
|
+
</div>
|
83
|
+
<div class="block" id="cancel_account">
|
84
|
+
<div class="header">
|
85
|
+
Cancel account
|
86
|
+
</div>
|
87
|
+
<div class="form_row">
|
88
|
+
Unhappy? <b><%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</b>
|
62
89
|
</div>
|
63
|
-
|
64
|
-
<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>
|
65
|
-
|
66
|
-
<%= link_to "Back", :back %>
|
67
|
-
|
68
90
|
</div>
|
@@ -8,12 +8,11 @@
|
|
8
8
|
<div class="menu_list menu_white" id="menu_home">
|
9
9
|
<ul>
|
10
10
|
<li class="btn_menu_profile"><%= link_to(t('profile.one'), current_subject)%></li>
|
11
|
-
<li class="pipe">|</li>
|
12
|
-
<li class="btn_menu_browse"><%=link_to(t('browse'),users_path) %></li>
|
13
11
|
</ul>
|
14
12
|
</div>
|
15
13
|
<% end %>
|
16
14
|
</div>
|
15
|
+
<%= render :partial => 'layouts/search' %>
|
17
16
|
<div id="header_right">
|
18
17
|
<% if user_signed_in? %>
|
19
18
|
<%= render :partial => 'layouts/representation' %>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<div id="header_search">
|
2
|
+
<form action="#" method="post">
|
3
|
+
<input id="global_search_input" name="search" type="text" autocomplete="off" />
|
4
|
+
</form>
|
5
|
+
<div id="global_search_display">
|
6
|
+
<%= image_tag('loading.gif', :class => :loading) %>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<%= javascript_tag do %>
|
10
|
+
$(document).ready(function() {
|
11
|
+
var last_search = "";
|
12
|
+
|
13
|
+
$(document).click(function() {
|
14
|
+
$("#global_search_display").hide();
|
15
|
+
});
|
16
|
+
$('#global_search_input').click(function(e) {
|
17
|
+
e.stopPropagation();
|
18
|
+
});
|
19
|
+
$('#global_search_display').click(function(e) {
|
20
|
+
e.stopPropagation();
|
21
|
+
});
|
22
|
+
|
23
|
+
$("#global_search_input").Watermark("Search");
|
24
|
+
|
25
|
+
$("#global_search_input").keyup(function() {
|
26
|
+
var searchstring = $(this).val();
|
27
|
+
if((searchstring=="")){
|
28
|
+
$("#global_search_display").hide();
|
29
|
+
}
|
30
|
+
else if(searchstring.length < 2) {
|
31
|
+
$("#global_search_display").hide();
|
32
|
+
} else {
|
33
|
+
if (last_search!=searchstring){
|
34
|
+
last_search=searchstring;
|
35
|
+
$("#global_search_display").html("<%= escape_javascript(image_tag('loading.gif', :class => :loading)) %>").show();
|
36
|
+
$.ajax({
|
37
|
+
type : "GET",
|
38
|
+
url : "<%= search_url %>?id=" + searchstring + "&mode=header_search",
|
39
|
+
success : function(html) {
|
40
|
+
if ($("#global_search_input").val()==searchstring){ //Only show if input value is still the same
|
41
|
+
$("#global_search_display").html(html);
|
42
|
+
}
|
43
|
+
},
|
44
|
+
error: function(){
|
45
|
+
$("#global_search_display").html("Something went wrong with search engine");
|
46
|
+
}
|
47
|
+
});
|
48
|
+
}
|
49
|
+
}
|
50
|
+
return false;
|
51
|
+
});
|
52
|
+
})
|
53
|
+
<% end %>
|
data/config/locales/en.yml
CHANGED
data/config/routes.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
class AddRejectRelation < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
Actor.all.each do |a|
|
4
|
+
Relation::Reject.default_for(a)
|
5
|
+
end
|
6
|
+
|
7
|
+
Tie.
|
8
|
+
includes(:relation, :contact, :sender).
|
9
|
+
merge(Relation.where(:type => 'Relation::Public')).
|
10
|
+
each do |t|
|
11
|
+
if t.contact.ties_count != 1
|
12
|
+
logger.warn "Public contact #{ t.contact_id } has #{ contact.ties_count }, when expecting 1"
|
13
|
+
end
|
14
|
+
|
15
|
+
t.update_attribute :relation_id, t.sender.relation_reject.id
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def down
|
20
|
+
Tie.
|
21
|
+
includes(:relation, :contact).
|
22
|
+
merge(Relation.where(:type => 'Relation::Reject')).
|
23
|
+
each do |t|
|
24
|
+
t.update_attribute :relation_id, t.sender.relation_public.id
|
25
|
+
end
|
26
|
+
|
27
|
+
Relation::Reject.destroy_all
|
28
|
+
end
|
29
|
+
end
|
@@ -6,7 +6,7 @@ module Mailboxer
|
|
6
6
|
notification_text = notification_text.gsub(/\%\{sender\}/, link_to(truncate_name(activity.sender.name),
|
7
7
|
url_for(:controller=> activity.sender.subject.class.to_s.underscore.pluralize,
|
8
8
|
:action=> :show, :id=> activity.sender.subject.slug, :only_path => false)))
|
9
|
-
notification_text = notification_text.gsub(/\%\{confirm\}/,link_to(t('notification.confirm'),edit_contact_url(activity.receiver.contact_to!(activity.sender), :s => activity.
|
9
|
+
notification_text = notification_text.gsub(/\%\{confirm\}/,link_to(t('notification.confirm'),edit_contact_url(activity.receiver.contact_to!(activity.sender), :s => activity.receiver.slug)))
|
10
10
|
notification_text = notification_text.gsub(/\%\{look\}/,link_to(t('notification.look'),
|
11
11
|
url_for(:controller=> activity.sender.subject.class.to_s.underscore.pluralize,
|
12
12
|
:action=> :show, :id=> activity.sender.subject.slug, :only_path => false)))
|
data/spec/factories/tie.rb
CHANGED
@@ -16,6 +16,10 @@ Factory.define :public, :parent => :tie do |t|
|
|
16
16
|
t.after_build { |u| u.relation = u.sender.relation_public }
|
17
17
|
end
|
18
18
|
|
19
|
+
Factory.define :reject, :parent => :tie do |t|
|
20
|
+
t.after_build { |u| u.relation = u.sender.relation_reject }
|
21
|
+
end
|
22
|
+
|
19
23
|
# Group ties
|
20
24
|
Factory.define :g2u_tie, :parent => :tie do |t|
|
21
25
|
t.contact { |c| Factory(:group_contact) }
|
data/spec/models/tie_spec.rb
CHANGED
@@ -59,13 +59,24 @@ describe Tie do
|
|
59
59
|
end
|
60
60
|
|
61
61
|
describe "with public relation" do
|
62
|
-
it "should
|
62
|
+
it "should create activity" do
|
63
63
|
count = Activity.count
|
64
64
|
|
65
65
|
Factory(:public)
|
66
66
|
|
67
|
+
Activity.count.should eq(count + 1)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "with reject relation" do
|
72
|
+
it "should not create activity" do
|
73
|
+
count = Activity.count
|
74
|
+
|
75
|
+
Factory(:reject)
|
76
|
+
|
67
77
|
Activity.count.should eq(count)
|
68
78
|
end
|
69
79
|
end
|
80
|
+
|
70
81
|
end
|
71
82
|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2007 Josh Bush (digitalbush.com)
|
3
|
+
*
|
4
|
+
* Permission is hereby granted, free of charge, to any person
|
5
|
+
* obtaining a copy of this software and associated documentation
|
6
|
+
* files (the "Software"), to deal in the Software without
|
7
|
+
* restriction, including without limitation the rights to use,
|
8
|
+
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
* copies of the Software, and to permit persons to whom the
|
10
|
+
* Software is furnished to do so, subject to the following
|
11
|
+
* conditions:
|
12
|
+
|
13
|
+
* The above copyright notice and this permission notice shall be
|
14
|
+
* included in all copies or substantial portions of the Software.
|
15
|
+
*
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
18
|
+
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
20
|
+
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
21
|
+
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
22
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
23
|
+
* OTHER DEALINGS IN THE SOFTWARE.
|
24
|
+
*/
|
25
|
+
|
26
|
+
/*
|
27
|
+
* Version: Beta 1
|
28
|
+
* Release: 2007-06-01
|
29
|
+
*/
|
30
|
+
(function($) {
|
31
|
+
var map=new Array();
|
32
|
+
$.Watermark = {
|
33
|
+
ShowAll:function(){
|
34
|
+
for (var i=0;i<map.length;i++){
|
35
|
+
if(map[i].obj.val()==""){
|
36
|
+
map[i].obj.val(map[i].text);
|
37
|
+
map[i].obj.css("color",map[i].WatermarkColor);
|
38
|
+
}else{
|
39
|
+
map[i].obj.css("color",map[i].DefaultColor);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
},
|
43
|
+
HideAll:function(){
|
44
|
+
for (var i=0;i<map.length;i++){
|
45
|
+
if(map[i].obj.val()==map[i].text)
|
46
|
+
map[i].obj.val("");
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
$.fn.Watermark = function(text,color) {
|
52
|
+
if(!color)
|
53
|
+
color="#aaa";
|
54
|
+
return this.each(
|
55
|
+
function(){
|
56
|
+
var input=$(this);
|
57
|
+
var defaultColor=input.css("color");
|
58
|
+
map[map.length]={text:text,obj:input,DefaultColor:defaultColor,WatermarkColor:color};
|
59
|
+
function clearMessage(){
|
60
|
+
if(input.val()==text)
|
61
|
+
input.val("");
|
62
|
+
input.css("color",defaultColor);
|
63
|
+
}
|
64
|
+
|
65
|
+
function insertMessage(){
|
66
|
+
if(input.val().length==0 || input.val()==text){
|
67
|
+
input.val(text);
|
68
|
+
input.css("color",color);
|
69
|
+
}else
|
70
|
+
input.css("color",defaultColor);
|
71
|
+
}
|
72
|
+
|
73
|
+
input.focus(clearMessage);
|
74
|
+
input.blur(insertMessage);
|
75
|
+
input.change(insertMessage);
|
76
|
+
|
77
|
+
insertMessage();
|
78
|
+
}
|
79
|
+
);
|
80
|
+
};
|
81
|
+
})(jQuery);
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 9
|
9
|
+
- 0
|
10
|
+
version: 0.9.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- GING - DIT - UPM
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-09-
|
19
|
+
date: 2011-09-12 00:00:00 +02:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -554,6 +554,7 @@ files:
|
|
554
554
|
- app/assets/images/btn/point_gray.png
|
555
555
|
- app/assets/images/btn/post.png
|
556
556
|
- app/assets/images/btn/search.png
|
557
|
+
- app/assets/images/btn/search_icon.png
|
557
558
|
- app/assets/images/btn/shadow.png
|
558
559
|
- app/assets/images/btn/share.png
|
559
560
|
- app/assets/images/btn/subtime.png
|
@@ -589,6 +590,7 @@ files:
|
|
589
590
|
- app/assets/images/icons/favicon.ico
|
590
591
|
- app/assets/images/left.png
|
591
592
|
- app/assets/images/loader.gif
|
593
|
+
- app/assets/images/loading.gif
|
592
594
|
- app/assets/images/logo.png
|
593
595
|
- app/assets/images/logos/actor/group.png
|
594
596
|
- app/assets/images/logos/actor/remote_subject.png
|
@@ -614,7 +616,6 @@ files:
|
|
614
616
|
- app/assets/javascripts/posts.js
|
615
617
|
- app/assets/javascripts/profiles.js
|
616
618
|
- app/assets/javascripts/relation_customs.js
|
617
|
-
- app/assets/javascripts/search.js
|
618
619
|
- app/assets/javascripts/settings.js
|
619
620
|
- app/assets/javascripts/social_stream-base.js
|
620
621
|
- app/assets/javascripts/ties.js
|
@@ -650,6 +651,7 @@ files:
|
|
650
651
|
- app/assets/stylesheets/messages.css
|
651
652
|
- app/assets/stylesheets/profiles.css
|
652
653
|
- app/assets/stylesheets/relation_customs.css
|
654
|
+
- app/assets/stylesheets/search.css
|
653
655
|
- app/assets/stylesheets/settings.css
|
654
656
|
- app/assets/stylesheets/social_stream-base.css
|
655
657
|
- app/assets/stylesheets/ties.css
|
@@ -673,6 +675,7 @@ files:
|
|
673
675
|
- app/controllers/posts_controller.rb
|
674
676
|
- app/controllers/profiles_controller.rb
|
675
677
|
- app/controllers/relation/customs_controller.rb
|
678
|
+
- app/controllers/search_controller.rb
|
676
679
|
- app/controllers/settings_controller.rb
|
677
680
|
- app/controllers/subjects_controller.rb
|
678
681
|
- app/controllers/tags_controller.rb
|
@@ -708,6 +711,8 @@ files:
|
|
708
711
|
- app/models/relation.rb
|
709
712
|
- app/models/relation/custom.rb
|
710
713
|
- app/models/relation/public.rb
|
714
|
+
- app/models/relation/reject.rb
|
715
|
+
- app/models/relation/single.rb
|
711
716
|
- app/models/relation_permission.rb
|
712
717
|
- app/models/tie.rb
|
713
718
|
- app/models/user.rb
|
@@ -787,6 +792,7 @@ files:
|
|
787
792
|
- app/views/layouts/_footer.html.erb
|
788
793
|
- app/views/layouts/_header.erb
|
789
794
|
- app/views/layouts/_representation.html.erb
|
795
|
+
- app/views/layouts/_search.html.erb
|
790
796
|
- app/views/layouts/_settings.html.erb
|
791
797
|
- app/views/layouts/application.html.erb
|
792
798
|
- app/views/layouts/frontpage.html.erb
|
@@ -843,6 +849,7 @@ files:
|
|
843
849
|
- app/views/relation/customs/create.js.erb
|
844
850
|
- app/views/relation/customs/index.html.erb
|
845
851
|
- app/views/relation/customs/update.js.erb
|
852
|
+
- app/views/search/_header_search.html.erb
|
846
853
|
- app/views/settings/_api_key.html.erb
|
847
854
|
- app/views/settings/_index.html.erb
|
848
855
|
- app/views/settings/_notifications.html.erb
|
@@ -873,6 +880,7 @@ files:
|
|
873
880
|
- db/migrate/20110705103202_empty_ties_count.rb
|
874
881
|
- db/migrate/20110712090343_remove_spheres.rb
|
875
882
|
- db/migrate/20110712142140_remove_permission_function.rb
|
883
|
+
- db/migrate/20110912074426_add_reject_relation.rb
|
876
884
|
- lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb
|
877
885
|
- lib/acts_as_taggable_on/social_stream.rb
|
878
886
|
- lib/generators/social_stream/base/install_generator.rb
|
@@ -988,6 +996,7 @@ files:
|
|
988
996
|
- vendor/assets/javascripts/jquery.livequery.js
|
989
997
|
- vendor/assets/javascripts/jquery.scrollTo.min.js
|
990
998
|
- vendor/assets/javascripts/jquery.validate.js
|
999
|
+
- vendor/assets/javascripts/jquery.watermarkinput.js
|
991
1000
|
- vendor/assets/javascripts/menu.js
|
992
1001
|
- vendor/assets/javascripts/superfish.js
|
993
1002
|
- vendor/assets/javascripts/ui.checkbox.js
|
@@ -1 +0,0 @@
|
|
1
|
-
|