social_stream-base 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|