fat_free_crm 0.13.3 → 0.13.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fat_free_crm might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -1
- data/app/helpers/accounts_helper.rb +6 -6
- data/app/helpers/admin/field_groups_helper.rb +4 -2
- data/app/helpers/application_helper.rb +18 -16
- data/app/helpers/comments_helper.rb +0 -6
- data/app/helpers/home_helper.rb +1 -1
- data/app/helpers/tags_helper.rb +1 -1
- data/app/helpers/tasks_helper.rb +6 -6
- data/app/mailers/subscription_mailer.rb +1 -0
- data/app/models/polymorphic/email.rb +2 -2
- data/app/models/polymorphic/task.rb +1 -1
- data/app/views/accounts/_edit.html.haml +1 -1
- data/app/views/accounts/_index_brief.html.haml +2 -2
- data/app/views/accounts/_index_long.html.haml +2 -2
- data/app/views/accounts/_new.html.haml +1 -1
- data/app/views/accounts/_sidebar_index.html.haml +1 -1
- data/app/views/accounts/_sidebar_show.html.haml +2 -2
- data/app/views/accounts/_top_section.html.haml +1 -1
- data/app/views/accounts/update.js.haml +1 -1
- data/app/views/admin/fields/index.html.haml +1 -1
- data/app/views/admin/groups/_group.html.haml +3 -2
- data/app/views/admin/users/_user.html.haml +11 -6
- data/app/views/campaigns/_edit.html.haml +1 -1
- data/app/views/campaigns/_index_brief.html.haml +1 -1
- data/app/views/campaigns/_index_long.html.haml +1 -1
- data/app/views/campaigns/_new.html.haml +1 -1
- data/app/views/campaigns/_sidebar_index.html.haml +1 -1
- data/app/views/campaigns/_sidebar_show.html.haml +2 -2
- data/app/views/campaigns/_top_section.html.haml +1 -1
- data/app/views/campaigns/update.js.haml +1 -1
- data/app/views/comments/_new.html.haml +2 -1
- data/app/views/contacts/_edit.html.haml +1 -1
- data/app/views/contacts/_index_brief.html.haml +2 -2
- data/app/views/contacts/_index_full.html.haml +2 -2
- data/app/views/contacts/_index_long.html.haml +2 -2
- data/app/views/contacts/_new.html.haml +1 -1
- data/app/views/contacts/_sidebar_show.html.haml +2 -2
- data/app/views/contacts/_top_section.html.haml +1 -1
- data/app/views/contacts/update.js.haml +1 -1
- data/app/views/emails/_email.html.haml +12 -6
- data/app/views/entities/_basic_search.html.haml +1 -2
- data/app/views/fields/_group_view.html.haml +3 -1
- data/app/views/home/_account.html.haml +1 -1
- data/app/views/home/_activity.html.haml +6 -4
- data/app/views/home/_opportunity.html.haml +1 -1
- data/app/views/home/_options.html.haml +1 -1
- data/app/views/home/_task.html.haml +4 -4
- data/app/views/home/_users_menu.html.haml +1 -1
- data/app/views/layouts/500.html.haml +1 -1
- data/app/views/layouts/application.html.haml +2 -2
- data/app/views/leads/_edit.html.haml +1 -1
- data/app/views/leads/_index_brief.html.haml +1 -1
- data/app/views/leads/_index_long.html.haml +1 -1
- data/app/views/leads/_new.html.haml +1 -1
- data/app/views/leads/_sidebar_index.html.haml +1 -1
- data/app/views/leads/_sidebar_show.html.haml +2 -2
- data/app/views/leads/_top_section.html.haml +1 -1
- data/app/views/leads/update.js.haml +1 -1
- data/app/views/opportunities/_edit.html.haml +1 -1
- data/app/views/opportunities/_index_brief.html.haml +1 -1
- data/app/views/opportunities/_index_long.html.haml +1 -1
- data/app/views/opportunities/_new.html.haml +1 -1
- data/app/views/opportunities/_sidebar_index.html.haml +1 -1
- data/app/views/opportunities/_sidebar_show.html.haml +3 -3
- data/app/views/opportunities/_top_section.html.haml +1 -1
- data/app/views/opportunities/index.html.haml +1 -1
- data/app/views/opportunities/update.js.haml +1 -1
- data/app/views/shared/_comment.html.haml +2 -2
- data/app/views/shared/_inline_styles.html.haml +1 -1
- data/app/views/subscription_mailer/comment_notification.text.erb +1 -1
- data/app/views/tasks/_completed.html.haml +2 -2
- data/app/views/tasks/_pending.html.haml +3 -2
- data/app/views/tasks/_selector.html.haml +3 -3
- data/app/views/tasks/_top_section.html.haml +1 -1
- data/app/views/users/_profile.html.haml +1 -1
- data/app/views/users/_user.html.haml +2 -2
- data/app/views/users/show.html.haml +1 -1
- data/app/views/versions/_version.html.haml +2 -2
- data/config/locales/de_fat_free_crm.yml +2 -2
- data/config/locales/en-GB_fat_free_crm.yml +2 -6
- data/config/locales/en-US_fat_free_crm.yml +2 -6
- data/config/locales/fr_fat_free_crm.yml +2 -7
- data/config/locales/ru_fat_free_crm.yml +1 -1
- data/fat_free_crm.gemspec +1 -0
- data/lib/fat_free_crm/callback.rb +8 -9
- data/lib/fat_free_crm/exceptions.rb +1 -1
- data/lib/fat_free_crm/gem_ext.rb +0 -1
- data/lib/fat_free_crm/version.rb +1 -1
- data/spec/helpers/admin/field_groups_helper_spec.rb +1 -1
- data/spec/shared/models.rb +6 -6
- metadata +16 -3
- data/lib/fat_free_crm/gem_ext/rails/text_helper.rb +0 -129
@@ -10,7 +10,7 @@
|
|
10
10
|
= render "campaigns/objectives", :f => f
|
11
11
|
= render "fields/groups", :f => f
|
12
12
|
= render "entities/permissions", :f => f, :entity => @campaign
|
13
|
-
= hook(:entity_form, self, {f: f, entity: @campaign})
|
13
|
+
= hook(:entity_form, self, {f: f, entity: @campaign})
|
14
14
|
|
15
15
|
.buttonbar
|
16
16
|
= f.submit t(:create_campaign)
|
@@ -80,7 +80,7 @@
|
|
80
80
|
|
81
81
|
- unless @campaign.background_info.blank?
|
82
82
|
.caption #{t :background_info}
|
83
|
-
= auto_link(simple_format @campaign.background_info)
|
83
|
+
= auto_link(simple_format @campaign.background_info)
|
84
84
|
|
85
85
|
= render "fields/sidebar_show", :asset => @campaign
|
86
86
|
|
@@ -88,4 +88,4 @@
|
|
88
88
|
%dt
|
89
89
|
.tags= tags_for_index(@campaign)
|
90
90
|
|
91
|
-
= hook(:show_campaign_sidebar_bottom, self, :campaign => @campaign)
|
91
|
+
= hook(:show_campaign_sidebar_bottom, self, :campaign => @campaign)
|
@@ -5,7 +5,8 @@
|
|
5
5
|
- subscribed_users = commentable.subscribed_users.map{|uid| User.find_by_id(uid) unless uid == current_user.id }.compact
|
6
6
|
- if notification_emails_configured? && subscribed_users.any?
|
7
7
|
= t(:following_users_will_be_notified) << ":"
|
8
|
-
|
8
|
+
- subscribed_users.each do |user|
|
9
|
+
= link_to user.full_name, user_path(user)
|
9
10
|
|
10
11
|
-# Two hidden fields store the IDs of notes and emails shown for the asset. These IDs are used
|
11
12
|
-# by [Expand/Collapse All]. The contents gets updated by actions such as [Add] or [Delete].
|
@@ -11,7 +11,7 @@
|
|
11
11
|
= render "contacts/web", :f => f, :edit => true
|
12
12
|
= render "fields/groups", :f => f, :edit => true
|
13
13
|
= render "entities/permissions", :f => f, :edit => true, :entity => @contact
|
14
|
-
= hook(:entity_form, self, {f: f, entity: @contact})
|
14
|
+
= hook(:entity_form, self, {f: f, entity: @contact})
|
15
15
|
|
16
16
|
.buttonbar
|
17
17
|
= f.submit t(:save_contact), :onclick => "crm.save_contact()"
|
@@ -2,7 +2,7 @@
|
|
2
2
|
= avatar_for(contact, :size => "16x16")
|
3
3
|
|
4
4
|
%ul.tools
|
5
|
-
= hook(:contact_tools_before, self, :contact => contact)
|
5
|
+
= hook(:contact_tools_before, self, :contact => contact)
|
6
6
|
|
7
7
|
- if can?(:update, contact)
|
8
8
|
%li= link_to_edit(contact)
|
@@ -22,4 +22,4 @@
|
|
22
22
|
–
|
23
23
|
== #{t :referred_by_small} #{lead.referred_by}
|
24
24
|
|
25
|
-
= hook(:contact_bottom, self, :contact => contact)
|
25
|
+
= hook(:contact_bottom, self, :contact => contact)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
= avatar_for(contact, :size => "30x30")
|
3
3
|
|
4
4
|
%ul.tools
|
5
|
-
= hook(:contact_tools_before, self, :contact => contact
|
5
|
+
= hook(:contact_tools_before, self, :contact => contact)
|
6
6
|
|
7
7
|
- if can?(:update, contact)
|
8
8
|
%li= link_to_edit(contact)
|
@@ -46,7 +46,7 @@
|
|
46
46
|
%dt
|
47
47
|
.tags= tags_for_index(contact)
|
48
48
|
|
49
|
-
= hook(:contact_bottom, self, :contact => contact)
|
49
|
+
= hook(:contact_bottom, self, :contact => contact)
|
50
50
|
|
51
51
|
%dt{ :style => "padding: 2px 0px 0px 0px" }
|
52
52
|
- if can?(:read, contact)
|
@@ -2,7 +2,7 @@
|
|
2
2
|
= avatar_for(contact, :size => "30x30")
|
3
3
|
|
4
4
|
%ul.tools
|
5
|
-
= hook(:contact_tools_before, self, :contact => contact)
|
5
|
+
= hook(:contact_tools_before, self, :contact => contact)
|
6
6
|
|
7
7
|
- if can?(:update, contact)
|
8
8
|
%li= link_to_edit(contact)
|
@@ -41,4 +41,4 @@
|
|
41
41
|
%dt
|
42
42
|
.tags= tags_for_index(contact)
|
43
43
|
|
44
|
-
= hook(:contact_bottom, self, :contact => contact)
|
44
|
+
= hook(:contact_bottom, self, :contact => contact)
|
@@ -12,7 +12,7 @@
|
|
12
12
|
= render "contacts/web", :f => f
|
13
13
|
= render "fields/groups", :f => f
|
14
14
|
= render "entities/permissions", :f => f, :entity => @contact
|
15
|
-
= hook(:entity_form, self, {f: f, entity: @contact})
|
15
|
+
= hook(:entity_form, self, {f: f, entity: @contact})
|
16
16
|
|
17
17
|
.buttonbar
|
18
18
|
= f.submit t(:create_contact), :onclick => "crm.create_contact()"
|
@@ -41,7 +41,7 @@
|
|
41
41
|
|
42
42
|
- unless @contact.background_info.blank?
|
43
43
|
.caption #{t :background_info}
|
44
|
-
= auto_link(simple_format @contact.background_info)
|
44
|
+
= auto_link(simple_format @contact.background_info)
|
45
45
|
|
46
46
|
= render "fields/sidebar_show", :asset => @contact
|
47
47
|
|
@@ -49,4 +49,4 @@
|
|
49
49
|
%dt
|
50
50
|
.tags= tags_for_index(@contact)
|
51
51
|
|
52
|
-
= hook(:show_contact_sidebar_bottom, self, :contact => @contact)
|
52
|
+
= hook(:show_contact_sidebar_bottom, self, :contact => @contact)
|
@@ -12,17 +12,23 @@
|
|
12
12
|
- if can?(:read, mediator)
|
13
13
|
%tt
|
14
14
|
- if email.sent_to.to_s.include?(", ")
|
15
|
-
= "To: "
|
15
|
+
= "To: "
|
16
|
+
= email.sent_to
|
16
17
|
- else
|
17
|
-
= "To "
|
18
|
-
|
19
|
-
=
|
20
|
-
=
|
18
|
+
= "To "
|
19
|
+
= link_to_email(email.sent_to)
|
20
|
+
= "from "
|
21
|
+
= link_to_email(email.sent_from)
|
22
|
+
= ", sent on "
|
23
|
+
= l(email.sent_at, :format => :mmddhhss) << " | "
|
24
|
+
= link_to_function(email.collapsed? ? t(:more) : t(:less), "crm.flip_note_or_email(this, '#{t(:more)}', '#{t(:less)}')", :class => "toggle")
|
21
25
|
|
22
26
|
%dt{ hidden_if(email.expanded?), :id => dom_id(email, :truncated) }
|
23
27
|
%p
|
24
28
|
= h(email.subject)
|
25
|
-
%tt
|
29
|
+
%tt
|
30
|
+
= " - "
|
31
|
+
= truncated
|
26
32
|
|
27
33
|
%dt.textile{ hidden_if(email.collapsed?), :id => dom_id(email, :formatted) }
|
28
34
|
.email_content
|
@@ -5,8 +5,7 @@
|
|
5
5
|
%div{ :style => "margin: 0px 0px 6px 0px" }
|
6
6
|
= text_field_tag('query', @current_query, :size => 32, :placeholder => "Search #{controller_name}")
|
7
7
|
%span.sorting_options
|
8
|
-
|
9
|
-
= t(:sort_by, :models => t(:"#{controller_name}_small"), :field => link_to(current_sort_by, "#", :id => :sort_by)).html_safe
|
8
|
+
= t(:sort_by, :field => link_to(h(current_sort_by), "#", :id => :sort_by)).html_safe
|
10
9
|
|
11
10
|
:javascript
|
12
11
|
var searchTimeout;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
- user = link_to(
|
1
|
+
- user = link_to(activity.user.full_name, user_path(activity.user)) if activity.user
|
2
2
|
|
3
3
|
- subject = if (item = activity.related || activity.item)
|
4
4
|
- if item.respond_to?(:full_name)
|
@@ -22,12 +22,14 @@
|
|
22
22
|
- action = t('action_' + activity.event)
|
23
23
|
- type = t('subject_' + activity.item_type.downcase)
|
24
24
|
= link_to avatar_for(activity.user, :size => :thumb), user_path(activity.user)
|
25
|
-
= t("activity_text", :user => user, :action => action, :type => type, :subject => subject, :default => "#{user} #{action} #{type} #{subject}").html_safe # locales optionally can change the word order for activities using 'activity_text'
|
25
|
+
= t("activity_text", :user => h(user), :action => h(action), :type => h(type), :subject => h(subject), :default => "#{h user} #{h action} #{h type} #{h subject}").html_safe # locales optionally can change the word order for activities using 'activity_text'
|
26
26
|
- if ((item = activity.item).class == Comment) and Setting.comments_visible_on_dashboard
|
27
27
|
= t('action_create_comment', :comment => truncate(h(item.comment), :length => 90)).html_safe
|
28
28
|
- else
|
29
29
|
- type = t(activity.item_type.downcase)
|
30
30
|
- if item.respond_to? :email
|
31
31
|
= avatar_for(item, :size => "16x16")
|
32
|
-
=
|
33
|
-
=
|
32
|
+
= type
|
33
|
+
= subject
|
34
|
+
= ":"
|
35
|
+
= auto_link(t(activity.event))
|
@@ -3,7 +3,7 @@
|
|
3
3
|
= hidden_field_tag "account[user_id]", current_user.id
|
4
4
|
|
5
5
|
-# activity_options: Show %{models} %{action_type} performed by %{user} in the past %{period}
|
6
|
-
= t(:activity_options, :models => link_to(t(@asset).singularize.downcase, "#", :id => :asset), :action_type => link_to(t(@action + "_past_participle").downcase, "#", :id => :event), :user => link_to(t(@user), "#", :id => :user), :period => link_to(t(@duration).downcase, "#", :id => :duration)).html_safe
|
6
|
+
= t(:activity_options, :models => link_to(t(h(@asset)).singularize.downcase, "#", :id => :asset), :action_type => link_to(t(h(@action) + "_past_participle").downcase, "#", :id => :event), :user => link_to(t(h(@user)), "#", :id => :user), :period => link_to(t(h(@duration)).downcase, "#", :id => :duration)).html_safe
|
7
7
|
|
8
8
|
%script
|
9
9
|
= render "assets_menu"
|
@@ -6,10 +6,10 @@
|
|
6
6
|
.indent
|
7
7
|
%label{ :id => dom_id(task, :name) }
|
8
8
|
- if task.user.id != current_user.id
|
9
|
-
= t(:task_from, link_to(task.user.full_name, user_path(task.user))).html_safe << ':'
|
10
|
-
= link_to(
|
9
|
+
= t(:task_from, link_to(h(task.user.full_name), user_path(task.user))).html_safe << ':'
|
10
|
+
= link_to(task.name, tasks_path)
|
11
11
|
- if task.asset_id?
|
12
|
-
== #{t :related} #{link_to(
|
12
|
+
== #{t :related} #{link_to(task.asset.name, polymorphic_url(task.asset))}
|
13
13
|
–
|
14
14
|
%tt
|
15
15
|
- if task.bucket == "due_asap"
|
@@ -45,4 +45,4 @@
|
|
45
45
|
|
46
46
|
- unless task.background_info.blank?
|
47
47
|
%div
|
48
|
-
%dt=
|
48
|
+
%dt= auto_link(simple_format task.background_info)
|
@@ -17,7 +17,7 @@
|
|
17
17
|
= javascript_include_tag "jquery_ui_datepicker/jquery-ui-timepicker-#{I18n.locale}"
|
18
18
|
|
19
19
|
= csrf_meta_tag
|
20
|
-
= hook(:javascript_includes, self)
|
20
|
+
= hook(:javascript_includes, self)
|
21
21
|
|
22
22
|
:javascript
|
23
23
|
crm.language = "#{I18n.locale}"
|
@@ -45,4 +45,4 @@
|
|
45
45
|
= "crm.base_url = '#{Setting.base_url}';" unless Setting.base_url.blank?
|
46
46
|
= get_browser_timezone_offset
|
47
47
|
= content_for :javascript_epilogue
|
48
|
-
= hook(:javascript_epilogue, self)
|
48
|
+
= hook(:javascript_epilogue, self)
|
@@ -12,7 +12,7 @@
|
|
12
12
|
= render "leads/web", :f => f, :edit => true
|
13
13
|
= render "fields/groups", :f => f, :edit => true
|
14
14
|
= render "entities/permissions", :f => f, :edit => true, :entity => @lead
|
15
|
-
= hook(:entity_form, self, {f: f, entity: @lead})
|
15
|
+
= hook(:entity_form, self, {f: f, entity: @lead})
|
16
16
|
|
17
17
|
.buttonbar
|
18
18
|
- if Setting.compound_address
|
@@ -13,7 +13,7 @@
|
|
13
13
|
= render "leads/web", :f => f
|
14
14
|
= render "fields/groups", :f => f
|
15
15
|
= render "entities/permissions", :f => f, :entity => @lead
|
16
|
-
= hook(:entity_form, self, {f: f, entity: @lead})
|
16
|
+
= hook(:entity_form, self, {f: f, entity: @lead})
|
17
17
|
|
18
18
|
.buttonbar
|
19
19
|
- if Setting.compound_address
|
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
- unless @lead.background_info.blank?
|
56
56
|
.caption #{t :background_info}
|
57
|
-
= auto_link(simple_format @lead.background_info)
|
57
|
+
= auto_link(simple_format @lead.background_info)
|
58
58
|
|
59
59
|
= render "fields/sidebar_show", :asset => @lead
|
60
60
|
|
@@ -62,4 +62,4 @@
|
|
62
62
|
%dt
|
63
63
|
.tags= tags_for_index(@lead)
|
64
64
|
|
65
|
-
= hook(:show_lead_sidebar_bottom, self, :lead => @lead)
|
65
|
+
= hook(:show_lead_sidebar_bottom, self, :lead => @lead)
|
@@ -10,7 +10,7 @@
|
|
10
10
|
= render "fields/edit_custom_field_group", :f => f, :edit => true
|
11
11
|
= render "fields/groups", :f => f, :edit => true
|
12
12
|
= render "entities/permissions", :f => f, :edit => true, :entity => @opportunity
|
13
|
-
= hook(:entity_form, self, {f: f, entity: @opportunity})
|
13
|
+
= hook(:entity_form, self, {f: f, entity: @opportunity})
|
14
14
|
|
15
15
|
.buttonbar
|
16
16
|
= f.submit t(:save_opportunity), :onclick => %/$("#account_assigned_to").val($("#opportunity_assigned_to").val());/
|
@@ -10,7 +10,7 @@
|
|
10
10
|
= render "shared/add_comment", :f => f
|
11
11
|
= render "fields/groups", :f => f
|
12
12
|
= render "entities/permissions", :f => f, :entity => @opportunity
|
13
|
-
= hook(:entity_form, self, {f: f, entity: @opportunity})
|
13
|
+
= hook(:entity_form, self, {f: f, entity: @opportunity})
|
14
14
|
|
15
15
|
.buttonbar
|
16
16
|
= f.submit t(:create_opportunity), :onclick => %/$("#account_assigned_to").val($("#opportunity_assigned_to").val()); if ($("#account_id").css('display') != 'none') { $("#account_id").enable(); }/
|
@@ -50,12 +50,12 @@
|
|
50
50
|
|
51
51
|
- unless @opportunity.background_info.blank?
|
52
52
|
.caption #{t :background_info}
|
53
|
-
= auto_link(simple_format @opportunity.background_info)
|
53
|
+
= auto_link(simple_format @opportunity.background_info)
|
54
54
|
|
55
55
|
= render "fields/sidebar_show", :asset => @opportunity
|
56
|
-
|
56
|
+
|
57
57
|
- if @opportunity.tag_list.present?
|
58
58
|
%dt
|
59
59
|
.tags= tags_for_index(@opportunity)
|
60
60
|
|
61
|
-
= hook(:show_opportunity_sidebar_bottom, self, :opportunity => @opportunity)
|
61
|
+
= hook(:show_opportunity_sidebar_bottom, self, :opportunity => @opportunity)
|