agilibox 1.0.15 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/app/assets/javascripts/agilibox/autocomplete.coffee +1 -1
- data/app/assets/stylesheets/agilibox/all.sass +2 -1
- data/app/assets/stylesheets/agilibox/buttons.sass +9 -0
- data/app/assets/stylesheets/agilibox/filters.sass +10 -2
- data/app/assets/stylesheets/agilibox/print.sass +10 -0
- data/app/helpers/agilibox/all_helpers.rb +2 -1
- data/app/helpers/agilibox/bootstrap_helper.rb +0 -4
- data/app/helpers/agilibox/button_helper.rb +6 -6
- data/app/helpers/agilibox/filters_helper.rb +2 -2
- data/app/helpers/agilibox/font_awesome_helper.rb +47 -0
- data/app/helpers/agilibox/text_helper.rb +11 -3
- data/app/models/concerns/agilibox/pluck_to_hash.rb +9 -0
- data/app/models/concerns/agilibox/search.rb +5 -9
- data/app/views/agilibox/_flash.html.slim +8 -0
- data/config/locales/attributes.en.yml +74 -68
- data/config/locales/attributes.fr.yml +74 -68
- data/lib/agilibox/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7f0e59fd9a62da85e62c61abc3638382fd2e949
|
4
|
+
data.tar.gz: d6d180e70886773cbfcd8f43e3d54394fd7e348e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55fd5e237e565365e5ba3bc1bb1d6ac4478a7bbe8fe1b953437900b91c4a32c350fd38cbcb35971d5ecd81cf1b2deb8f44efff08e6e79ed0a8dde0f886a29683
|
7
|
+
data.tar.gz: ea0ae8d4e740b142eeb84df062aa6c00cd0c0b4b07dad7cdbdc17d1de12d174feb9d87e54ab29686123238292d571330af927a6e0a060f6a9e62b5782a2f00b0
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
##
|
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,8 +1,13 @@
|
|
1
1
|
.filters
|
2
|
-
|
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
|
-
|
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
|
@@ -48,7 +48,7 @@ module Agilibox::ButtonHelper
|
|
48
48
|
|
49
49
|
def read_button(url, options = {})
|
50
50
|
options = {
|
51
|
-
:icon =>
|
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 =>
|
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 =>
|
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 =>
|
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 => :
|
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 => :
|
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) ||
|
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) ||
|
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
|
-
|
44
|
-
|
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)
|
@@ -3,9 +3,9 @@ module Agilibox::Search
|
|
3
3
|
|
4
4
|
class_methods do
|
5
5
|
def default_search_fields
|
6
|
-
columns
|
7
|
-
|
8
|
-
|
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
|
-
|
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
|
-
|
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
|
@@ -1,90 +1,96 @@
|
|
1
1
|
en:
|
2
2
|
attributes: &attributes
|
3
|
-
|
4
|
-
|
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
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
54
|
+
length : "Number"
|
55
|
+
linkedin : "Linkedin"
|
56
|
+
logo : "Logo"
|
57
|
+
message : "Message"
|
18
58
|
mobile : "Mobile"
|
19
|
-
|
59
|
+
month : "Month"
|
60
|
+
name : "Name"
|
61
|
+
number : "Number"
|
62
|
+
paid : "Paid ?"
|
20
63
|
password : "Password"
|
21
64
|
password_confirmation : "Password (confirm)"
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
34
|
-
city : "City"
|
35
|
-
country : "Country"
|
36
|
-
tags : "Tags"
|
76
|
+
subject : "Subject"
|
37
77
|
tag_list : "Tags"
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
-
|
4
|
-
|
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
|
-
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
54
|
+
length : "Nombre"
|
55
|
+
linkedin : "Linkedin"
|
56
|
+
logo : "Logo"
|
57
|
+
message : "Message"
|
18
58
|
mobile : "Mobile"
|
19
|
-
|
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
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
34
|
-
city : "Ville"
|
35
|
-
country : "Pays"
|
36
|
-
tags : "Tags"
|
76
|
+
subject : "Objet"
|
37
77
|
tag_list : "Tags"
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
63
|
-
|
64
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
data/lib/agilibox/version.rb
CHANGED
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
|
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-
|
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
|