agilibox 1.0.15 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ed08a7d086225ae4abf9cac6f5f7a2e4e9250f0
4
- data.tar.gz: c2c2fb53c41d945c973f0938f2809209090b02f4
3
+ metadata.gz: e7f0e59fd9a62da85e62c61abc3638382fd2e949
4
+ data.tar.gz: d6d180e70886773cbfcd8f43e3d54394fd7e348e
5
5
  SHA512:
6
- metadata.gz: ca24f0844a6aca0e1abcac9db9d11a1620dc132034afa8aa8c737eb90b177f169cf1dfaef242e286bc7d1890f433ef23f257787d1bc2e232081ad82c288c57f5
7
- data.tar.gz: 1bc57502c9ba25e4645ba42135967b258df0be8a30ff3f2f4460399056fcffdd0774a41b7d2cb46b993ade48b8d21f832b617122de0e2e81dcb45e8038c21f63
6
+ metadata.gz: 55fd5e237e565365e5ba3bc1bb1d6ac4478a7bbe8fe1b953437900b91c4a32c350fd38cbcb35971d5ecd81cf1b2deb8f44efff08e6e79ed0a8dde0f886a29683
7
+ data.tar.gz: ea0ae8d4e740b142eeb84df062aa6c00cd0c0b4b07dad7cdbdc17d1de12d174feb9d87e54ab29686123238292d571330af927a6e0a060f6a9e62b5782a2f00b0
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## Next version
3
+ ## 1.1.0
4
+
5
+ - Search concern improvements
6
+ - Date helper improvements
7
+ - Add `boolean_icon` helper
8
+ - Add i18n attributes
9
+ - Add `Agilibox::PluckToHash`
10
+ - Switch to FontAwesome 5 + `icon` helper improvements
4
11
 
5
12
  ## 1.0.15
6
13
 
@@ -1,2 +1,2 @@
1
1
  $(document).on "turbolinks:load", ->
2
- $("select.select2").select2()
2
+ $("select.select2").map -> $(this).select2()
@@ -1,6 +1,7 @@
1
+ @import agilibox/buttons
1
2
  @import agilibox/filters
2
- @import agilibox/forms
3
3
  @import agilibox/flash
4
+ @import agilibox/forms
4
5
  @import agilibox/modals
5
6
  @import agilibox/pagination
6
7
  @import agilibox/print
@@ -0,0 +1,9 @@
1
+ // .btn-xs has been removed in Bootstrap 4
2
+ .btn-xs
3
+ padding: 1px 5px
4
+ font-size: 12px
5
+
6
+ // .btn-default has been removed in Bootstrap 4
7
+ .btn-default
8
+ @extend .btn-outline-secondary !optional
9
+ background: white
@@ -1,8 +1,13 @@
1
1
  .filters
2
- @extend .well
2
+ // Bootstrap 3
3
+ @extend .well !optional
4
+ // Bootstrap 4
5
+ @extend .card !optional
3
6
  padding: 8px
4
7
  box-shadow: none
5
8
  display: flex
9
+ flex-direction: initial
10
+ background: #F0F0F0
6
11
 
7
12
  select,
8
13
  button,
@@ -20,7 +25,10 @@
20
25
  margin: 0
21
26
 
22
27
  .form-control,
23
- @extend .input-sm
28
+ // Bootstrap 3
29
+ @extend .input-sm !optional
30
+ // Bootstrap 4
31
+ @extend .form-control-sm !optional
24
32
  display: inline-block
25
33
  width: auto
26
34
 
@@ -17,6 +17,7 @@
17
17
  width: auto !important
18
18
  height: auto !important
19
19
 
20
+ .card-title,
20
21
  .panel-title,
21
22
  .context-header,
22
23
  thead *,
@@ -41,6 +42,7 @@
41
42
  #flash,
42
43
  display: none !important
43
44
 
45
+ .card,
44
46
  .panel,
45
47
  .table,
46
48
  .list-group,
@@ -49,14 +51,21 @@
49
51
  p,
50
52
  margin: 1em 0 !important
51
53
 
54
+ .card p,
55
+ .card table,
52
56
  .panel table,
53
57
  .well p,
54
58
  td p,
55
59
  margin: 0 !important
56
60
 
57
61
  .well,
62
+ .card,
58
63
  padding: 0.5em !important
59
64
 
65
+ .card-header,
66
+ .card-title,
67
+ .card-body,
68
+ .card-footer,
60
69
  .panel-heading,
61
70
  .panel-title,
62
71
  .panel-body,
@@ -71,4 +80,5 @@
71
80
  margin: 0 !important
72
81
 
73
82
  .panel-heading .panel-title,
83
+ .card-header .card-title,
74
84
  padding: 0 !important
@@ -2,13 +2,14 @@ module Agilibox::AllHelpers
2
2
  include Agilibox::BootstrapHelper
3
3
  include Agilibox::ButtonHelper
4
4
  include Agilibox::FiltersHelper
5
+ include Agilibox::FontAwesomeHelper
5
6
  include Agilibox::FormHelper
7
+ include Agilibox::I18nHelper
6
8
  include Agilibox::LinkHelper
7
9
  include Agilibox::PaginationHelper
8
10
  include Agilibox::RoutesHelper
9
11
  include Agilibox::SortingHelper
10
12
  include Agilibox::TextHelper
11
- include Agilibox::I18nHelper
12
13
 
13
14
  extend self
14
15
  end
@@ -1,6 +1,2 @@
1
1
  module Agilibox::BootstrapHelper
2
- def icon(id)
3
- id = id.to_s.tr("_", "-")
4
- content_tag(:span, class: "icon fa fa-#{id}") {}
5
- end
6
2
  end
@@ -48,7 +48,7 @@ module Agilibox::ButtonHelper
48
48
 
49
49
  def read_button(url, options = {})
50
50
  options = {
51
- :icon => "info-circle",
51
+ :icon => :info_circle,
52
52
  :action => :read,
53
53
  }.merge(options)
54
54
 
@@ -57,7 +57,7 @@ module Agilibox::ButtonHelper
57
57
 
58
58
  def download_button(url, options = {})
59
59
  options = {
60
- :icon => "cloud-download",
60
+ :icon => :cloud_download_alt,
61
61
  :action => :download,
62
62
  :download => url,
63
63
  }.merge(options)
@@ -75,7 +75,7 @@ module Agilibox::ButtonHelper
75
75
  end
76
76
 
77
77
  options = {
78
- :icon => "cloud-download",
78
+ :icon => :download,
79
79
  :action => action,
80
80
  :download => url,
81
81
  }.merge(options)
@@ -85,7 +85,7 @@ module Agilibox::ButtonHelper
85
85
 
86
86
  def import_button(url, options = {})
87
87
  options = {
88
- :icon => "cloud-upload",
88
+ :icon => :upload,
89
89
  :action => :import,
90
90
  }.merge(options)
91
91
 
@@ -94,7 +94,7 @@ module Agilibox::ButtonHelper
94
94
 
95
95
  def update_button(url, options = {})
96
96
  options = {
97
- :icon => :pencil,
97
+ :icon => :pencil_alt,
98
98
  :action => :update,
99
99
  }.merge(options)
100
100
 
@@ -136,7 +136,7 @@ module Agilibox::ButtonHelper
136
136
 
137
137
  def snooze_button(url, options = {})
138
138
  options = {
139
- :icon => :"clock-o",
139
+ :icon => :clock,
140
140
  :action => :snooze,
141
141
  :confirm => true,
142
142
  :method => :patch,
@@ -5,7 +5,7 @@ module Agilibox::FiltersHelper
5
5
  options[:value] ||= "submit"
6
6
 
7
7
  text = options.delete(:text) || t("actions.filter")
8
- icon = options.delete(:icon) || "filter"
8
+ icon = options.delete(:icon) || :filter
9
9
 
10
10
  content_tag(:button, options) do
11
11
  icon(icon) + " " + text
@@ -18,7 +18,7 @@ module Agilibox::FiltersHelper
18
18
  options[:value] ||= "reset"
19
19
 
20
20
  text = options.delete(:text) || t("actions.reset")
21
- icon = options.delete(:icon) || "rotate-left"
21
+ icon = options.delete(:icon) || :undo
22
22
 
23
23
  content_tag(:button, options) do
24
24
  icon(icon) + " " + text
@@ -0,0 +1,47 @@
1
+ module Agilibox::FontAwesomeHelper
2
+ def icon(id, fa_style: nil, size: nil, spin: false, **options)
3
+ id = id.to_s.tr("_", "-").to_sym
4
+
5
+ if fa_style.nil?
6
+ fa_style = Agilibox::FontAwesomeHelper.database.dig(id, :styles).to_a.first
7
+ end
8
+
9
+ css_classes = options.delete(:class).to_s.split(" ")
10
+ css_classes << "icon"
11
+ css_classes << "fa-#{id}"
12
+ css_classes << "fa#{fa_style.to_s[0]}"
13
+ css_classes << "fa-#{size}" if size
14
+ css_classes << "fa-spin" if spin
15
+
16
+ attributes = options.merge(class: css_classes.sort.join(" ")).sort.to_h
17
+
18
+ content_tag(:span, attributes) {}
19
+ end
20
+
21
+ class << self
22
+ def database
23
+ @database ||= YAML.safe_load(database_yml).deep_symbolize_keys
24
+ end
25
+
26
+ def database_path
27
+ Rails.root.join("tmp", "fa_database_#{version}.yml")
28
+ end
29
+
30
+ def database_yml
31
+ download_database! unless File.size?(database_path)
32
+ File.read(database_path)
33
+ end
34
+
35
+ def download_database!
36
+ require "open-uri"
37
+ url = "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/advanced-options/metadata/icons.yml"
38
+ data = URI.parse(url).open.read
39
+ File.write(database_path, data)
40
+ end
41
+
42
+ def version
43
+ require "font_awesome/sass/version"
44
+ FontAwesome::Sass::VERSION
45
+ end
46
+ end # class << self
47
+ end
@@ -39,9 +39,17 @@ module Agilibox::TextHelper
39
39
  number_with_precision(n, opts).tr(" ", "\u00A0")
40
40
  end
41
41
 
42
- def date(d)
43
- return if d.nil?
44
- I18n.l(d)
42
+ def date(d, *args)
43
+ I18n.l(d, *args) unless d.nil?
44
+ end
45
+
46
+ def boolean_icon(bool)
47
+ return if bool.nil?
48
+
49
+ return icon(:check, style: "color: green") if bool == true
50
+ return icon(:times, style: "color: red") if bool == false
51
+
52
+ raise "#{bool} is not a boolean"
45
53
  end
46
54
 
47
55
  def hours(n)
@@ -0,0 +1,9 @@
1
+ module Agilibox::PluckToHash
2
+ extend ActiveSupport::Concern
3
+
4
+ class_methods do
5
+ def pluck_to_hash(*attributes)
6
+ pluck(*attributes).map { |values| attributes.zip(values).to_h }
7
+ end
8
+ end # class_methods
9
+ end
@@ -3,9 +3,9 @@ module Agilibox::Search
3
3
 
4
4
  class_methods do
5
5
  def default_search_fields
6
- columns.map do |column|
7
- "#{table_name}.#{column.name}"
8
- end
6
+ columns
7
+ .select { |column| column.type.in?([:string, :text]) }
8
+ .map { |column| "#{table_name}.#{column.name}" }
9
9
  end # def default_search_fields
10
10
 
11
11
  def search(q, *fields)
@@ -18,13 +18,9 @@ module Agilibox::Search
18
18
  }.join(" OR ")
19
19
  }.map { |e| "(#{e})" }.join(" AND ")
20
20
 
21
- sql_params_a = words.map.with_index do |word, index|
22
- ["w#{index}".to_sym, "%#{word}%"]
23
- end
21
+ sql_params = words.map.with_index { |word, index| ["w#{index}".to_sym, "%#{word}%"] }.to_h
24
22
 
25
- sql_params_h = Hash[sql_params_a]
26
-
27
- where(sql_query, sql_params_h)
23
+ where(sql_query, sql_params)
28
24
  end # def search
29
25
  end # class_methods
30
26
  end # class Agilibox::Search
@@ -0,0 +1,8 @@
1
+ #flash.container
2
+ - flash.map do |type, message|
3
+ - type = "success" if type == "notice"
4
+ - type = "danger" if type == "alert"
5
+
6
+ .alert class="alert-#{type}"
7
+ = message
8
+ button.close data-dismiss="alert" aria-label="Fermer" = "×"
@@ -1,90 +1,96 @@
1
1
  en:
2
2
  attributes: &attributes
3
- id : "Id"
4
- type : "Type"
3
+ access : "Access"
4
+ actions : "Actions"
5
+ active : "Active ?"
6
+ address : "Address"
7
+ address1 : "Address"
8
+ address2 : "Address (rest)"
9
+ addressable : "Origin"
10
+ amount : "Amount"
11
+ attachable : "Origin"
12
+ attachment : "Attachment"
13
+ author : "Author"
14
+ avatar : "Avatar"
15
+ body : "Message"
16
+ budget : "Budget"
17
+ category : "Category"
18
+ city : "City"
5
19
  code : "Code"
6
- reference : "Réference"
20
+ color : "Color"
21
+ comment : "Comment"
22
+ commentable : "Origin"
23
+ comments : "Comments"
24
+ corporation_name : "Name"
25
+ count : "Number"
26
+ country : "Country"
7
27
  created_at : "Created at"
8
- updated_at : "Updated at"
9
- name : "Name"
10
- short_name : "Short name"
11
- title : "Title"
12
- label : "Label"
28
+ current_avatar : "Current avatar"
29
+ customer : "Customer"
30
+ customer_guid : "Customer"
31
+ data : "Data"
32
+ date : "Date"
33
+ date_begin : "Date begin"
34
+ date_end : "Date end"
35
+ date_start : "Date start"
36
+ day : "Day"
37
+ description : "Description"
38
+ details : "Datails"
39
+ due_date : "Due date"
40
+ email : "E-mail"
41
+ email_attachment : "Attachment"
42
+ email_body : "Message"
43
+ email_from : "Sender"
44
+ email_subject : "Subject"
45
+ email_to : "Recipient"
46
+ facebook : "Facebook"
47
+ fax : "Fax"
48
+ file : "File"
13
49
  first_name : "First name"
50
+ id : "Id"
51
+ is_active : "Active ?"
52
+ label : "Label"
14
53
  last_name : "Last name"
15
- email : "E-mail"
16
- www : "Web site"
17
- phone : "Phone"
54
+ length : "Number"
55
+ linkedin : "Linkedin"
56
+ logo : "Logo"
57
+ message : "Message"
18
58
  mobile : "Mobile"
19
- fax : "Fax"
59
+ month : "Month"
60
+ name : "Name"
61
+ number : "Number"
62
+ paid : "Paid ?"
20
63
  password : "Password"
21
64
  password_confirmation : "Password (confirm)"
22
- description : "Description"
23
- text : "Text"
24
- date : "Date"
65
+ phone : "Phone"
66
+ probability : "Probability"
67
+ quantity : "Quantity"
68
+ reference : "Réference"
69
+ sender : "Author"
70
+ short_name : "Short name"
71
+ skype : "Skype"
25
72
  state : "State"
26
73
  status : "Status"
27
- file : "File"
28
- address : "Address"
29
- address1 : "Address"
30
- address2 : "Address (rest)"
31
74
  street : "Address"
32
75
  street_bis : "Address (rest)"
33
- zip : "Zip"
34
- city : "City"
35
- country : "Country"
36
- tags : "Tags"
76
+ subject : "Subject"
37
77
  tag_list : "Tags"
38
- budget : "Budget"
39
- probability : "Probability"
40
- access : "Access"
41
- color : "Color"
42
- data : "Data"
43
- comment : "Comment"
44
- comments : "Comments"
45
- written_by : "Written by"
46
- details : "Datails"
47
- quantity : "Quantity"
48
- due_date : "Due date"
49
- paid : "Paid ?"
50
- customer : "Customer"
51
- customer_guid : "Customer"
78
+ tags : "Tags"
79
+ text : "Text"
80
+ title : "Title"
81
+ total : "Total"
52
82
  tracking : "Tracking ID"
53
83
  tracking_id : "Tracking ID"
54
- unique_index : "Tracking ID"
55
- count : "Number"
56
- length : "Number"
57
- number : "Number"
58
- message : "Message"
59
- skype : "Skype"
60
- facebook : "Facebook"
61
84
  twitter : "Twitter"
62
- linkedin : "Linkedin"
63
- viadeo : "Viadeo"
64
- subject : "Subject"
65
- body : "Message"
66
- attachment : "Attachment"
67
- avatar : "Avatar"
68
- current_avatar : "Current avatar"
69
- logo : "Logo"
85
+ type : "Type"
86
+ unique_index : "Tracking ID"
87
+ updated_at : "Updated at"
70
88
  user : "User"
71
- category : "Category"
72
- corporation_name : "Name"
73
- author : "Author"
74
- sender : "Author"
75
- total : "Total"
76
89
  version : "Version"
77
- commentable : "Origin"
78
- addressable : "Origin"
79
- attachable : "Origin"
80
- email_subject : "Subject"
81
- email_from : "Sender"
82
- email_to : "Recipient"
83
- email_attachment : "Attachment"
84
- email_body : "Message"
85
- active : "Active ?"
86
- is_active : "Active ?"
87
- actions : "Actions"
90
+ viadeo : "Viadeo"
91
+ written_by : "Written by"
92
+ www : "Web site"
93
+ zip : "Zip"
88
94
 
89
95
  labels:
90
96
  <<: *attributes
@@ -1,90 +1,96 @@
1
1
  fr:
2
2
  attributes: &attributes
3
- id : "Id"
4
- type : "Type"
3
+ access : "Accès"
4
+ actions : "Actions"
5
+ active : "Actif ?"
6
+ address : "Adresse"
7
+ address1 : "Adresse"
8
+ address2 : "Adresse (suite)"
9
+ addressable : "Origine"
10
+ amount : "Montant"
11
+ attachable : "Origine"
12
+ attachment : "Pièce jointe"
13
+ author : "Auteur"
14
+ avatar : "Avatar"
15
+ body : "Message"
16
+ budget : "Budget"
17
+ category : "Catégorie"
18
+ city : "Ville"
5
19
  code : "Code"
6
- reference : "Référence"
20
+ color : "Couleur"
21
+ comment : "Commentaire"
22
+ commentable : "Origine"
23
+ comments : "Commentaires"
24
+ corporation_name : "Nom"
25
+ count : "Nombre"
26
+ country : "Pays"
7
27
  created_at : "Créé le"
8
- updated_at : "Modifié le"
9
- name : "Nom"
10
- short_name : "Initiales"
11
- title : "Titre"
12
- label : "Libellé"
28
+ current_avatar : "Avatar actuel"
29
+ customer : "Client"
30
+ customer_guid : "Client"
31
+ data : "Informations"
32
+ date : "Date"
33
+ date_begin : "Date de début"
34
+ date_end : "Date de fin"
35
+ date_start : "Date de début"
36
+ day : "Jour"
37
+ description : "Description"
38
+ details : "Détails"
39
+ due_date : "Échéance"
40
+ email : "E-mail"
41
+ email_attachment : "Pièce jointe"
42
+ email_body : "Message"
43
+ email_from : "Expéditeur"
44
+ email_subject : "Object"
45
+ email_to : "Destinataire"
46
+ facebook : "Facebook"
47
+ fax : "Fax"
48
+ file : "Fichier"
13
49
  first_name : "Prénom"
50
+ id : "Id"
51
+ is_active : "Actif ?"
52
+ label : "Libellé"
14
53
  last_name : "Nom"
15
- email : "E-mail"
16
- www : "Site web"
17
- phone : "Téléphone"
54
+ length : "Nombre"
55
+ linkedin : "Linkedin"
56
+ logo : "Logo"
57
+ message : "Message"
18
58
  mobile : "Mobile"
19
- fax : "Fax"
59
+ month : "Mois"
60
+ name : "Nom"
61
+ number : "Nombre"
62
+ paid : "Payée ?"
20
63
  password : "Mot de passe"
21
64
  password_confirmation : "Mot de passe (confirmer)"
22
- description : "Description"
23
- text : "Description"
24
- date : "Date"
65
+ phone : "Téléphone"
66
+ probability : "Probabilité"
67
+ quantity : "Quantité"
68
+ reference : "Référence"
69
+ sender : "Auteur"
70
+ short_name : "Initiales"
71
+ skype : "Skype"
25
72
  state : "État"
26
73
  status : "État"
27
- file : "Fichier"
28
- address : "Adresse"
29
- address1 : "Adresse"
30
- address2 : "Adresse (suite)"
31
74
  street : "Adresse"
32
75
  street_bis : "Adresse (suite)"
33
- zip : "Code postal"
34
- city : "Ville"
35
- country : "Pays"
36
- tags : "Tags"
76
+ subject : "Objet"
37
77
  tag_list : "Tags"
38
- budget : "Budget"
39
- probability : "Probabilité"
40
- access : "Accès"
41
- color : "Couleur"
42
- data : "Informations"
43
- comment : "Commentaire"
44
- comments : "Commentaires"
45
- written_by : "écrit par"
46
- details : "Détails"
47
- quantity : "Quantité"
48
- due_date : "Échéance"
49
- paid : "Payée ?"
50
- customer : "Client"
51
- customer_guid : "Client"
78
+ tags : "Tags"
79
+ text : "Description"
80
+ title : "Titre"
81
+ total : "Total"
52
82
  tracking : "Numéro"
53
83
  tracking_id : "Numéro"
54
- unique_index : "Numéro"
55
- count : "Nombre"
56
- length : "Nombre"
57
- number : "Nombre"
58
- message : "Message"
59
- skype : "Skype"
60
- facebook : "Facebook"
61
84
  twitter : "Twitter"
62
- linkedin : "Linkedin"
63
- viadeo : "Viadeo"
64
- subject : "Objet"
65
- body : "Message"
66
- attachment : "Pièce jointe"
67
- avatar : "Avatar"
68
- current_avatar : "Avatar actuel"
69
- logo : "Logo"
85
+ type : "Type"
86
+ unique_index : "Numéro"
87
+ updated_at : "Modifié le"
70
88
  user : "Utilisateur"
71
- category : "Catégorie"
72
- corporation_name : "Nom"
73
- author : "Auteur"
74
- sender : "Auteur"
75
- total : "Total"
76
89
  version : "Version"
77
- commentable : "Origine"
78
- addressable : "Origine"
79
- attachable : "Origine"
80
- email_subject : "Object"
81
- email_from : "Expéditeur"
82
- email_to : "Destinataire"
83
- email_attachment : "Pièce jointe"
84
- email_body : "Message"
85
- active : "Actif ?"
86
- is_active : "Actif ?"
87
- actions : "Actions"
90
+ viadeo : "Viadeo"
91
+ written_by : "écrit par"
92
+ www : "Site web"
93
+ zip : "Code postal"
88
94
 
89
95
  labels:
90
96
  <<: *attributes
@@ -1,3 +1,3 @@
1
1
  module Agilibox
2
- VERSION = "1.0.15"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agilibox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - agilidée
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-24 00:00:00.000000000 Z
11
+ date: 2018-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails-i18n
@@ -71,6 +71,7 @@ files:
71
71
  - app/assets/javascripts/agilibox/form_reset.coffee
72
72
  - app/assets/javascripts/agilibox/modals.coffee
73
73
  - app/assets/stylesheets/agilibox/all.sass
74
+ - app/assets/stylesheets/agilibox/buttons.sass
74
75
  - app/assets/stylesheets/agilibox/filters.sass
75
76
  - app/assets/stylesheets/agilibox/flash.sass
76
77
  - app/assets/stylesheets/agilibox/forms.sass
@@ -94,6 +95,7 @@ files:
94
95
  - app/helpers/agilibox/bootstrap_helper.rb
95
96
  - app/helpers/agilibox/button_helper.rb
96
97
  - app/helpers/agilibox/filters_helper.rb
98
+ - app/helpers/agilibox/font_awesome_helper.rb
97
99
  - app/helpers/agilibox/form_helper.rb
98
100
  - app/helpers/agilibox/i18n_helper.rb
99
101
  - app/helpers/agilibox/link_helper.rb
@@ -112,6 +114,7 @@ files:
112
114
  - app/models/concerns/agilibox/default_values_concern.rb
113
115
  - app/models/concerns/agilibox/model_i18n.rb
114
116
  - app/models/concerns/agilibox/model_to_s.rb
117
+ - app/models/concerns/agilibox/pluck_to_hash.rb
115
118
  - app/models/concerns/agilibox/polymorphic_id.rb
116
119
  - app/models/concerns/agilibox/search.rb
117
120
  - app/models/concerns/agilibox/timestamp_helpers.rb
@@ -125,6 +128,7 @@ files:
125
128
  - app/sms/agilibox/sms/strategies/base.rb
126
129
  - app/sms/agilibox/sms/strategies/test.rb
127
130
  - app/sorters/agilibox/sorter.rb
131
+ - app/views/agilibox/_flash.html.slim
128
132
  - app/views/agilibox/forms/_checkboxes_dropdown.html.slim
129
133
  - app/views/agilibox/search/_form.html.slim
130
134
  - config/cucumber.yml