social_stream 0.11.5 → 0.11.6
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/base/app/assets/javascripts/contacts.js +0 -6
- data/base/app/assets/javascripts/relation_customs.js +28 -81
- data/base/app/assets/javascripts/settings.js +12 -33
- data/base/app/assets/stylesheets/base.css.scss +2 -1
- data/base/app/assets/stylesheets/relation_customs.css.scss +8 -2
- data/base/app/controllers/contacts_controller.rb +7 -3
- data/base/app/controllers/messages_controller.rb +1 -1
- data/base/app/controllers/search_controller.rb +22 -6
- data/base/app/controllers/settings_controller.rb +1 -1
- data/base/app/models/contact.rb +7 -1
- data/base/app/models/relation.rb +14 -1
- data/base/app/views/activities/_new.html.erb +3 -2
- data/base/app/views/contacts/_link.html.erb +1 -1
- data/base/app/views/contacts/index.html.erb +1 -1
- data/base/app/views/conversations/_conversation.html.erb +3 -3
- data/base/app/views/conversations/_conversation_full.html.erb +3 -3
- data/base/app/views/devise/registrations/_delete_account.html.erb +20 -0
- data/base/app/views/devise/registrations/_edit_user.html.erb +87 -0
- data/base/app/views/devise/registrations/edit.html.erb +16 -93
- data/base/app/views/layouts/_header_dropdown_menu.html.erb +0 -3
- data/base/app/views/messages/_form.html.erb +1 -1
- data/base/app/views/permissions/_index.html.erb +2 -2
- data/base/app/views/permissions/index.js.erb +7 -2
- data/base/app/views/relation/customs/_list.html.erb +12 -5
- data/base/app/views/relation/customs/create.js.erb +4 -2
- data/base/app/views/relation/customs/index.html.erb +0 -5
- data/base/app/views/search/_form.html.erb +1 -1
- data/base/app/views/settings/_api_key.html.erb +3 -3
- data/base/app/views/settings/_index.html.erb +6 -1
- data/base/app/views/settings/_notifications.html.erb +3 -3
- data/base/app/views/settings/index.html.erb +4 -1
- data/base/config/locales/en.yml +31 -12
- data/base/config/locales/es.yml +33 -10
- data/base/config/routes.rb +10 -11
- data/base/lib/mailboxer/notification_decoder.rb +13 -4
- data/base/lib/social_stream/base/version.rb +1 -1
- data/documents/app/assets/javascripts/social_stream-documents.js +1 -1
- data/documents/app/views/pictures/_picture.html.erb +3 -1
- data/documents/lib/social_stream/documents/version.rb +1 -1
- data/documents/social_stream-documents.gemspec +1 -1
- data/documents/vendor/assets/javascripts/jquery.lightbox-with-resize-plugin.js +533 -0
- data/events/vendor/assets/stylesheets/jquery.ad-gallery.css +1 -1
- data/lib/social_stream/version.rb +1 -1
- data/presence/app/assets/stylesheets/chat.css +9 -1
- data/presence/app/controllers/xmpp_controller.rb +19 -10
- data/presence/app/helpers/xmpp_helper.rb +10 -23
- data/presence/app/views/xmpp/_chat.html.erb +9 -7
- data/presence/app/views/xmpp/_chat_off.html.erb +1 -1
- data/presence/lib/social_stream-presence.rb +12 -0
- data/presence/lib/social_stream/presence/config.rb +0 -4
- data/presence/lib/social_stream/presence/engine.rb +27 -14
- data/presence/lib/social_stream/presence/models/buddy_manager.rb +20 -12
- data/social_stream.gemspec +2 -2
- metadata +13 -14
- data/base/app/assets/images/title_background.png +0 -0
- data/base/vendor/assets/javascripts/ui.checkbox.js +0 -309
- data/documents/vendor/assets/javascripts/jquery.lightbox.min.js +0 -42
- data/presence/app/assets/images/arrow.png +0 -0
@@ -1,85 +1,32 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
var relations;
|
4
|
-
|
5
|
-
function checkBoxId(id) {
|
1
|
+
function getDomId(id) {
|
6
2
|
return id.match(/\d+$/)[0];
|
7
3
|
}
|
8
4
|
|
9
|
-
function
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
$('
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
$(':checkbox[id^="relation_custom"]:checked:not(#' + id + ')').checkBox('changeCheckStatus', false);
|
37
|
-
$('div[contain$='+id+'] div.options').show();
|
38
|
-
|
39
|
-
$.ajax({
|
40
|
-
url: "../permissions",
|
41
|
-
context: document.body,
|
42
|
-
data: { relation_id: checkBoxId(id) },
|
43
|
-
dataType: "script"
|
44
|
-
});
|
45
|
-
|
46
|
-
break;
|
47
|
-
|
48
|
-
case "permission":
|
49
|
-
$('input[id="relation_custom_permission_ids_' + checkBoxId(id) + '"]').attr('checked', 'checked');
|
50
|
-
$('label[for="relation_custom_permission_ids_' + checkBoxId(id) + '"]').parent().show();
|
51
|
-
|
52
|
-
break;
|
53
|
-
|
54
|
-
default:
|
55
|
-
alert("Unknown type of checkBox: " + checkBoxType(id));
|
56
|
-
}
|
5
|
+
function selectRelation(radio){
|
6
|
+
$("#permissions").html("");
|
7
|
+
$('#relation_customs_list div.options').hide();
|
8
|
+
|
9
|
+
$(radio).siblings('div.options').show();
|
10
|
+
|
11
|
+
$.ajax({
|
12
|
+
url: "../permissions",
|
13
|
+
context: document.body,
|
14
|
+
data: { relation_id: getDomId($(radio).attr('id')) },
|
15
|
+
dataType: "script"
|
16
|
+
});
|
17
|
+
|
18
|
+
};
|
19
|
+
|
20
|
+
function selectPermission(box){
|
21
|
+
var id = getDomId($(box).attr('id'));
|
22
|
+
var input = $('input[id="relation_custom_permission_ids_' + id + '"]');
|
23
|
+
var label = $('label[for="relation_custom_permission_ids_' + id + '"]');
|
24
|
+
|
25
|
+
if ($(box).is(':checked')) {
|
26
|
+
input.attr('checked', 'checked');
|
27
|
+
label.parent().show();
|
28
|
+
} else {
|
29
|
+
input.removeAttr('checked');
|
30
|
+
label.parent().hide();
|
31
|
+
}
|
57
32
|
}
|
58
|
-
|
59
|
-
function checkBoxDisable(id) {
|
60
|
-
$('div[contain$='+id+']').removeClass("checked-option");
|
61
|
-
|
62
|
-
switch (checkBoxType(id)) {
|
63
|
-
|
64
|
-
case "relation_custom":
|
65
|
-
if ($('#' + id).parents().hasClass('edit_contact')) {
|
66
|
-
break;
|
67
|
-
};
|
68
|
-
|
69
|
-
$("#permissions").html("");
|
70
|
-
$("#permissions").hide();
|
71
|
-
|
72
|
-
$('div[contain$='+id+'] div.options').hide();
|
73
|
-
|
74
|
-
break;
|
75
|
-
|
76
|
-
case "permission":
|
77
|
-
$('input[id="relation_custom_permission_ids_' + checkBoxId(id) + '"]').removeAttr('checked');
|
78
|
-
$('label[for="relation_custom_permission_ids_' + checkBoxId(id) + '"]').parent().hide();
|
79
|
-
|
80
|
-
break;
|
81
|
-
default:
|
82
|
-
alert("Unknown type of checkBox: " + checkBoxType(id));
|
83
|
-
|
84
|
-
}
|
85
|
-
}
|
@@ -1,35 +1,14 @@
|
|
1
|
-
var notifications_open = false;
|
2
|
-
var api_key_open = false;
|
3
|
-
|
4
1
|
closeAllSettings = function() {
|
5
|
-
|
6
|
-
|
7
|
-
notifications_open = false;
|
8
|
-
$("#api_key_settings_content").hide("slow");
|
9
|
-
$("#api_key_settings_briefing").show("slow");
|
10
|
-
api_key_open = false;
|
11
|
-
}
|
12
|
-
showNotificationsSettings = function() {
|
13
|
-
if (notifications_open) {
|
14
|
-
$("#notifications_settings_content").hide("slow");
|
15
|
-
$("#notifications_settings_briefing").show("slow");
|
16
|
-
notifications_open = false;
|
17
|
-
} else {
|
18
|
-
closeAllSettings();
|
19
|
-
$("#notifications_settings_content").show("slow");
|
20
|
-
$("#notifications_settings_briefing").hide("slow");
|
21
|
-
notifications_open = true;
|
22
|
-
}
|
23
|
-
}
|
24
|
-
showApiKeySettings = function() {
|
25
|
-
if (api_key_open) {
|
26
|
-
$("#api_key_settings_content").hide("slow");
|
27
|
-
$("#api_key_settings_briefing").show("slow");
|
28
|
-
api_key_open = false;
|
29
|
-
} else {
|
30
|
-
closeAllSettings();
|
31
|
-
$("#api_key_settings_content").show("slow");
|
32
|
-
$("#api_key_settings_briefing").hide("slow");
|
33
|
-
api_key_open = true;
|
34
|
-
}
|
2
|
+
$(".settings_content").hide("slow");
|
3
|
+
$(".settings_briefing").show("slow");
|
35
4
|
}
|
5
|
+
showSettings = function(name) {
|
6
|
+
closeAllSettings();
|
7
|
+
if($("#" + name + "_content").css("display") == "none") {
|
8
|
+
$("#" + name + "_briefing").hide("slow");
|
9
|
+
$("#" + name + "_content").show("slow");
|
10
|
+
} else {
|
11
|
+
$("#" + name + "_briefing").show("slow");
|
12
|
+
$("#" + name + "_content").hide("slow");
|
13
|
+
}
|
14
|
+
}
|
@@ -76,7 +76,7 @@ button, input[type=submit]{margin: 10px 0 10px 0px;padding: 3px 20px 3px 20px;co
|
|
76
76
|
.block .center{ text-align:center;}
|
77
77
|
.block .close { float:right; vertical-align:top;}
|
78
78
|
.block .content{ padding: 5px 4px 5px 4px; }
|
79
|
-
.block .header{vertical-align: middle; background:
|
79
|
+
.block .header{vertical-align: middle; background: #DEEFF8;
|
80
80
|
padding-left: 10px; display: block; height:20px; font-weight:bold;}
|
81
81
|
.block .header_icon{ margin-top: 2px; width:14px; height:14px; }
|
82
82
|
.block .header_icon_right { float: right; padding-right: 5px; padding-top: 3px;}
|
@@ -122,6 +122,7 @@ button, input[type=submit]{margin: 10px 0 10px 0px;padding: 3px 20px 3px 20px;co
|
|
122
122
|
.block .select_relations{ padding-top:20px; text-align: center; }
|
123
123
|
#form_participants{vertical-align:60%;}
|
124
124
|
|
125
|
+
div.chzn-container ul.chzn-choices li.search-field input.default{ cursor:pointer;}
|
125
126
|
|
126
127
|
/********* Links SECTION **********/
|
127
128
|
.contact_link a{ text-decoration:none;}
|
@@ -33,8 +33,9 @@ span.ui-radio-state-checked-hover {
|
|
33
33
|
background-position: 0 -200px;
|
34
34
|
}
|
35
35
|
|
36
|
-
#relation_customs input {
|
36
|
+
#relation_customs input, #relation_customs button{
|
37
37
|
float: left;
|
38
|
+
padding: 3px 10px 3px 10px;
|
38
39
|
}
|
39
40
|
|
40
41
|
#relation_customs span {
|
@@ -160,13 +161,17 @@ span.privacy_span_new {
|
|
160
161
|
margin-top: 10px;
|
161
162
|
}
|
162
163
|
|
163
|
-
#
|
164
|
+
#permissions_list{
|
164
165
|
width: 50%;
|
165
166
|
float: left;
|
166
167
|
text-align: center;
|
167
168
|
display: block;
|
168
169
|
}
|
169
170
|
|
171
|
+
#permissions_list input.permission {
|
172
|
+
float: left;
|
173
|
+
}
|
174
|
+
|
170
175
|
#privacy_rules{
|
171
176
|
width: 45%;
|
172
177
|
float: right;
|
@@ -193,6 +198,7 @@ span.privacy_span_new {
|
|
193
198
|
#relation_custom_permissions_input ol li{
|
194
199
|
font-family: sans-serif;
|
195
200
|
padding: 5px 0px 5px 0px;
|
201
|
+
display: block;
|
196
202
|
}
|
197
203
|
|
198
204
|
#relation_custom_permissions_input label {
|
@@ -3,13 +3,17 @@ class ContactsController < ApplicationController
|
|
3
3
|
before_filter :exclude_reflexive, :except => [ :index, :pending ]
|
4
4
|
|
5
5
|
def index
|
6
|
-
@
|
6
|
+
@total_contacts =
|
7
7
|
Contact.sent_by(current_subject).
|
8
8
|
joins(:receiver).merge(Actor.alphabetic).
|
9
|
+
positive.
|
10
|
+
select("actors.name")
|
11
|
+
|
12
|
+
@contacts =
|
13
|
+
@total_contacts.
|
9
14
|
merge(Actor.letter(params[:letter])).
|
10
15
|
merge(Actor.name_search(params[:search])).
|
11
|
-
related_by_param(params[:relation])
|
12
|
-
active
|
16
|
+
related_by_param(params[:relation])
|
13
17
|
|
14
18
|
respond_to do |format|
|
15
19
|
format.html { @contacts = @contacts.page(params[:page]).per(10) }
|
@@ -47,7 +47,7 @@ class MessagesController < ApplicationController
|
|
47
47
|
@receipt = @actor.send_message(@recipients, params[:body], params[:subject])
|
48
48
|
if (@receipt.errors.blank?)
|
49
49
|
@conversation = @receipt.conversation
|
50
|
-
flash[:success]=
|
50
|
+
flash[:success]= t('mailboxer.sent')
|
51
51
|
redirect_to conversation_path(@conversation, :box => :sentbox)
|
52
52
|
else
|
53
53
|
render :action => :new
|
@@ -1,11 +1,10 @@
|
|
1
1
|
class SearchController < ApplicationController
|
2
2
|
include ActionView::Helpers::SanitizeHelper
|
3
|
-
|
3
|
+
|
4
4
|
helper_method :get_search_query
|
5
5
|
|
6
6
|
RESULTS_SEARCH_PER_PAGE=12
|
7
7
|
MIN_QUERY=2
|
8
|
-
|
9
8
|
def index
|
10
9
|
if params[:search_query].blank? or too_short_query
|
11
10
|
@search_result = []
|
@@ -31,10 +30,11 @@ class SearchController < ApplicationController
|
|
31
30
|
models = SocialStream.quick_search_models if mode.to_s.eql? "quick"
|
32
31
|
models.map! {|model_sym| model_sym.to_s.classify.constantize}
|
33
32
|
result = ThinkingSphinx.search(get_search_query, :classes => models)
|
33
|
+
result = authorization_filter result
|
34
34
|
if mode.to_s.eql? "quick"
|
35
|
-
result.page(1).per(7)
|
35
|
+
result = Kaminari.paginate_array(result).page(1).per(7)
|
36
36
|
else
|
37
|
-
result.page(params[:page]).per(RESULTS_SEARCH_PER_PAGE)
|
37
|
+
result = Kaminari.paginate_array(result).page(params[:page]).per(RESULTS_SEARCH_PER_PAGE)
|
38
38
|
end
|
39
39
|
return result
|
40
40
|
end
|
@@ -42,7 +42,9 @@ class SearchController < ApplicationController
|
|
42
42
|
def focus_search
|
43
43
|
@search_class_sym = params[:focus].singularize.to_sym unless params[:focus].blank?
|
44
44
|
search_class = @search_class_sym.to_s.classify.constantize
|
45
|
-
ThinkingSphinx.search(get_search_query, :classes => [search_class])
|
45
|
+
result = ThinkingSphinx.search(get_search_query, :classes => [search_class])
|
46
|
+
result = authorization_filter result
|
47
|
+
return Kaminari.paginate_array(result).page(params[:page]).per(RESULTS_SEARCH_PER_PAGE)
|
46
48
|
end
|
47
49
|
|
48
50
|
def too_short_query
|
@@ -52,7 +54,8 @@ class SearchController < ApplicationController
|
|
52
54
|
|
53
55
|
def get_search_query
|
54
56
|
search_query = ""
|
55
|
-
|
57
|
+
param = strip_tags(params[:search_query]) || ""
|
58
|
+
bare_query = param unless bare_query.html_safe?
|
56
59
|
search_query_words = bare_query.strip.split
|
57
60
|
search_query_words.each_index do |i|
|
58
61
|
search_query+= search_query_words[i] + " " if i < (search_query_words.size - 1)
|
@@ -60,4 +63,17 @@ class SearchController < ApplicationController
|
|
60
63
|
end
|
61
64
|
return search_query.strip
|
62
65
|
end
|
66
|
+
|
67
|
+
def authorization_filter results
|
68
|
+
filtered_results = Array.new
|
69
|
+
results.each do |result|
|
70
|
+
puts result
|
71
|
+
if result.is_a? SocialStream::Models::Object
|
72
|
+
filtered_results << result if can? :read, result
|
73
|
+
else
|
74
|
+
filtered_results << result
|
75
|
+
end
|
76
|
+
end
|
77
|
+
return filtered_results
|
78
|
+
end
|
63
79
|
end
|
data/base/app/models/contact.rb
CHANGED
@@ -50,6 +50,12 @@ class Contact < ActiveRecord::Base
|
|
50
50
|
|
51
51
|
scope :active, where(arel_table[:ties_count].gt(0))
|
52
52
|
|
53
|
+
scope :positive, lambda {
|
54
|
+
select("DISTINCT contacts.*").
|
55
|
+
joins(:relations).
|
56
|
+
merge(Relation.where(:type => Relation.positive_names))
|
57
|
+
}
|
58
|
+
|
53
59
|
scope :not_reflexive, where(arel_table[:sender_id].not_eq(arel_table[:receiver_id]))
|
54
60
|
|
55
61
|
scope :pending, active.
|
@@ -128,7 +134,7 @@ class Contact < ActiveRecord::Base
|
|
128
134
|
# a {Relation::Public public relation}
|
129
135
|
#
|
130
136
|
def action
|
131
|
-
if ties_count > 0 && relations.where(:type =>
|
137
|
+
if ties_count > 0 && relations.where(:type => Relation.positive_names).any?
|
132
138
|
'edit'
|
133
139
|
else
|
134
140
|
replied? ? 'reply' : 'new'
|
data/base/app/models/relation.rb
CHANGED
@@ -24,6 +24,9 @@
|
|
24
24
|
# It sets the {Audience} that has access to it, and the {Permission Permissions} that rule that access.
|
25
25
|
#
|
26
26
|
class Relation < ActiveRecord::Base
|
27
|
+
Positive = %w{ custom public }
|
28
|
+
Negative = %w{ reject }
|
29
|
+
|
27
30
|
belongs_to :actor
|
28
31
|
|
29
32
|
has_many :relation_permissions, :dependent => :destroy
|
@@ -81,7 +84,17 @@ class Relation < ActiveRecord::Base
|
|
81
84
|
normalize(r, options).id
|
82
85
|
end
|
83
86
|
end
|
84
|
-
|
87
|
+
|
88
|
+
# Positive relation names: [ 'Relation::Custom', 'Relation::Public' ]
|
89
|
+
def positive_names
|
90
|
+
Positive.map{ |r| "Relation::#{ r.classify }" }
|
91
|
+
end
|
92
|
+
|
93
|
+
# Negative relations: [ 'Relation::Reject' ]
|
94
|
+
def negative_names
|
95
|
+
Negative.map{ |r| "Relation::#{ r.classify }" }
|
96
|
+
end
|
97
|
+
|
85
98
|
# All the relations that allow subject to perform action
|
86
99
|
#
|
87
100
|
# Options:
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
<% if can? :create, new_post(receiver) %>
|
2
3
|
<div id="activities_header" class="content_size">
|
3
4
|
<% SocialStream.activity_forms.each do |element| %>
|
@@ -24,12 +25,12 @@
|
|
24
25
|
|
25
26
|
<div id="securities">
|
26
27
|
<% if current_subject == receiver %>
|
27
|
-
<%= select_tag :_relation_ids, options_for_select(current_subject.activity_relations(receiver).sort.map{ |r| [ r.name, r.id ] }), :id => 'security', :multiple => true, :title => t("activity.privacy.contacts.#{ receiver.class.to_s.underscore }"
|
28
|
+
<%= select_tag :_relation_ids, options_for_select(current_subject.activity_relations(receiver).sort.map{ |r| [ r.name, r.id ] }), :id => 'security', :multiple => true, :title => t("activity.privacy.myself.contacts.#{ receiver.class.to_s.underscore }") %>
|
28
29
|
<% else %>
|
29
30
|
<div id="security_chzn" class="chzn-container chzn-container-multi">
|
30
31
|
<ul class="chzn-choices">
|
31
32
|
<li class="search-field">
|
32
|
-
<input type="text" value="<%= t "activity.privacy.contacts.#{ receiver.class.to_s.underscore }", :receiver => receiver.name %>" class="default" disabled="disabled">
|
33
|
+
<input type="text" value="<%= t "activity.privacy.outside.contacts.#{ receiver.class.to_s.underscore }", :receiver => truncate_name(receiver.name,:length => 15) %>" class="default" disabled="disabled">
|
33
34
|
</li>
|
34
35
|
</ul>
|
35
36
|
</div>
|
@@ -4,6 +4,6 @@
|
|
4
4
|
<% if controller.controller_name == "contacts" %>
|
5
5
|
|
6
6
|
<br/>
|
7
|
-
<%= link_to(t('contact.delete'), contact_path(contact), :
|
7
|
+
<%= link_to(t('contact.delete'), contact_path(contact), :method => :delete, :confirm => t('contact.confirm_delete'), :remote => true) %>
|
8
8
|
|
9
9
|
<% end %>
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<div class="space_center"></div>
|
18
18
|
<div class="row" >
|
19
19
|
<div class="center">
|
20
|
-
<%= link_to t('contact.all_n', :count =>
|
20
|
+
<%= link_to t('contact.all_n', :count => @total_contacts.count("DISTINCT contacts.id")), contacts_path %> -
|
21
21
|
<% Actor.distinct_initials.
|
22
22
|
contacted_from(current_subject).
|
23
23
|
merge(Tie.related_by(current_subject.relation_customs.find_by_id(params[:relation]))).
|
@@ -26,10 +26,10 @@
|
|
26
26
|
</div>
|
27
27
|
<% unless @box.eql?'trash' %>
|
28
28
|
<div class="action">
|
29
|
-
<% link_to(image_tag('btn/btn_read.png', :alt =>
|
30
|
-
<%= link_to(image_tag('btn/btn_delete.png', :alt =>
|
29
|
+
<% link_to(image_tag('btn/btn_read.png', :alt => t('mailboxer.mark_as_read'), :title => t('mailboxer.mark_as_read'))) %>
|
30
|
+
<%= link_to(image_tag('btn/btn_delete.png', :alt => t('mailboxer.delete'), :title => t('mailboxer.delete')),
|
31
31
|
conversation_path(conversation, :location => @box, :box => @box, :page => params[:page]),
|
32
|
-
:confirm => '
|
32
|
+
:confirm => t('mailboxer.delete_confirm', :object => conversation.subject),
|
33
33
|
:method => :delete, :remote => true) %>
|
34
34
|
</div>
|
35
35
|
<% end %>
|
@@ -2,9 +2,9 @@
|
|
2
2
|
<h2><%= conversation.subject %></h2>
|
3
3
|
</div>
|
4
4
|
<div class="action">
|
5
|
-
<% unless @box.eql?'trash' %><%= link_to(image_tag('btn/btn_delete.png', :atl =>
|
5
|
+
<% unless @box.eql?'trash' %><%= link_to(image_tag('btn/btn_delete.png', :atl => t('mailboxer.delete'), :title => t('mailboxer.delete')),
|
6
6
|
conversation_path(conversation, :location => 'conversation', :box => @box),
|
7
|
-
:confirm => '
|
7
|
+
:confirm => t('mailboxer.delete_confirm', :object => conversation.subject),
|
8
8
|
:method => :delete, :remote => true) %><% end %>
|
9
9
|
</div>
|
10
10
|
<div class="clearfloat">
|
@@ -45,7 +45,7 @@
|
|
45
45
|
<%= text_area_tag :body, nil,:rows =>6, :cols=> 53, :class => "required form_tag" %>
|
46
46
|
</div>
|
47
47
|
<div class="actions center">
|
48
|
-
<%= submit_tag
|
48
|
+
<%= submit_tag t('mailboxer.reply'), :name => :reply_all,:class => "button" %>
|
49
49
|
</div>
|
50
50
|
</div>
|
51
51
|
<% end %>
|