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.
Binary file
@@ -1,6 +1,6 @@
1
- //= require search
2
1
  //= require hoverIntent
3
2
  //= require superfish
3
+ //= require jquery.watermarkinput
4
4
  //
5
5
  $(function() {
6
6
  jQuery('ul.sf-menu').superfish({
@@ -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.relation_public.id]
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
@@ -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::Public public 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'
@@ -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,3 @@
1
+ class Relation::Reject < Relation::Single
2
+ end
3
+
@@ -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::Public)
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="account_form">
10
- <div class="form_row">
11
- <h2><%= t('account.edit') %></h2>
13
+ <div class="block" id="password_form">
14
+ <div class="header">
15
+ Change password
12
16
  </div>
13
-
14
- <%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
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 :email %>
21
+ <%= f.label t('account.password.new') %>
20
22
  </div>
21
23
  <div class="form_field">
22
- <%= f.email_field :email, :class => "form_tag" %>
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 :password %>
29
+ <%= f.label t('account.password.retype') %>
28
30
  </div>
29
31
  <div class="form_field">
30
- <%= f.password_field :password, :class => "form_tag" %><br/>
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 :password_confirmation %>
37
+ <%= f.label :current_password %>
37
38
  </div>
38
39
  <div class="form_field">
39
- <%= f.password_field :password_confirmation, :class => "form_tag" %>
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" %><br/>
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
- <% end %>
58
- <div>
59
- <div class="block">
60
- <div class="content">
61
- <h3>Cancel my account</h3>
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 %>
@@ -0,0 +1,10 @@
1
+ <ul>
2
+ <% search_result.each do |actor| %>
3
+ <%= link_to actor.subject do %>
4
+ <li>
5
+ <%= image_tag(actor.logo.url(:actor), :class => :logo) %>
6
+ <%= content_tag(:span, actor.name, :class => :name) %>
7
+ </li>
8
+ <% end %>
9
+ <% end %>
10
+ </ul>
@@ -7,6 +7,9 @@ en:
7
7
  account:
8
8
  edit: "Edit user"
9
9
  one: "Account"
10
+ password:
11
+ new: "New password"
12
+ retype: "Retype new password"
10
13
  privacy: "Privacy"
11
14
  activity:
12
15
  audience:
data/config/routes.rb CHANGED
@@ -65,6 +65,8 @@ Rails.application.routes.draw do
65
65
  resource :like
66
66
  end
67
67
 
68
+ match 'search' => 'search#index', :as => :search
69
+
68
70
  match 'ties' => 'ties#index', :as => :ties
69
71
 
70
72
  # Social Stream objects configured in config/initializers/social_stream.rb
@@ -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.sender.slug)))
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)))
@@ -1,5 +1,5 @@
1
1
  module SocialStream
2
2
  module Base
3
- VERSION = "0.8.2".freeze
3
+ VERSION = "0.9.0".freeze
4
4
  end
5
5
  end
@@ -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) }
@@ -59,13 +59,24 @@ describe Tie do
59
59
  end
60
60
 
61
61
  describe "with public relation" do
62
- it "should not create activity" do
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
- - 8
9
- - 2
10
- version: 0.8.2
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-07 00:00:00 +02:00
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
-