beautiful_scaffold 1.0.2 → 2.0.0.pre
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 +5 -5
- data/.gitignore +1 -0
- data/CHANGELOG +24 -1
- data/Gemfile +24 -9
- data/Gemfile.lock +209 -0
- data/README.rdoc +25 -26
- data/Rakefile +27 -4
- data/beautiful_scaffold.gemspec +6 -4
- data/lib/beautiful_scaffold/version.rb +3 -0
- data/lib/generators/beautiful_jointable_generator.rb +39 -6
- data/lib/generators/beautiful_migration_generator.rb +11 -19
- data/lib/generators/beautiful_scaffold_common_methods.rb +51 -26
- data/lib/generators/beautiful_scaffold_generator.rb +100 -43
- data/lib/generators/templates/app/assets/javascripts/application-bs.js +5 -6
- data/lib/generators/templates/app/assets/javascripts/beautiful_scaffold.js +64 -77
- data/lib/generators/templates/app/assets/javascripts/bootstrap-datetimepicker-for-beautiful-scaffold.js +25 -41
- data/lib/generators/templates/app/assets/javascripts/fixed_menu.js +3 -1
- data/lib/generators/templates/app/assets/javascripts/jstree.min.js +6 -0
- data/lib/generators/templates/app/assets/stylesheets/application-bs.css +14 -6
- data/lib/generators/templates/app/assets/stylesheets/beautiful-scaffold.css.scss +10 -1
- data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/32px.png +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/40px.png +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/style.scss +1146 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/throbber.gif +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default/32px.png +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default/40px.png +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default/style.scss +1102 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default/throbber.gif +0 -0
- data/lib/generators/templates/app/controllers/base.rb +7 -5
- data/lib/generators/templates/app/controllers/master_base.rb +18 -24
- data/lib/generators/templates/app/helpers/beautiful_helper.rb +83 -61
- data/lib/generators/templates/app/initializers/link_renderer.rb +23 -18
- data/lib/generators/templates/app/views/_form.html.erb +2 -2
- data/lib/generators/templates/app/views/_form_habtm_tag.html.erb +6 -2
- data/lib/generators/templates/app/views/_mass_inserting.html.erb +38 -30
- data/lib/generators/templates/app/views/_modal_columns.html.erb +3 -3
- data/lib/generators/templates/app/views/index.html.erb +83 -79
- data/lib/generators/templates/app/views/layout.html.erb +29 -36
- data/lib/generators/templates/app/views/partials/_forget_password.html.erb +2 -2
- data/lib/generators/templates/app/views/partials/_form_field.html.erb +7 -7
- data/lib/generators/templates/app/views/partials/_index_batch.html.erb +1 -1
- data/lib/generators/templates/app/views/partials/_index_column.html.erb +4 -4
- data/lib/generators/templates/app/views/partials/_index_header.html.erb +1 -1
- data/lib/generators/templates/app/views/partials/_index_search.html.erb +1 -1
- data/lib/generators/templates/app/views/partials/_register_form.html.erb +2 -2
- data/lib/generators/templates/app/views/partials/_show_field.html.erb +3 -3
- data/lib/generators/templates/app/views/partials/_sign_in_form.html.erb +1 -1
- data/lib/generators/templates/app/views/partials/_sign_in_sign_out.html.erb +2 -2
- data/lib/generators/templates/app/views/show.html.erb +2 -2
- data/lib/generators/templates/app/views/treeview.html.erb +8 -5
- metadata +21 -19
- data/lib/generators/templates/app/assets/javascripts/jquery.jstree.js +0 -4551
- data/lib/generators/templates/app/assets/stylesheets/datepicker.css +0 -224
- data/lib/generators/templates/app/assets/stylesheets/reset.css +0 -48
- data/lib/generators/templates/app/assets/stylesheets/themes/default/d.gif +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default/d.png +0 -0
- data/lib/generators/templates/app/assets/stylesheets/themes/default/style.css +0 -74
- data/lib/generators/templates/app/assets/stylesheets/timepicker.css +0 -89
- data/test/scaffold_test.rb +0 -68
Binary file
|
@@ -48,7 +48,7 @@ class <%= namespace_for_class %><%= model_camelize.pluralize %>Controller < Beau
|
|
48
48
|
render
|
49
49
|
}
|
50
50
|
format.json{
|
51
|
-
render :json => @<%= model %>_scope.
|
51
|
+
render :json => @<%= model %>_scope.to_json(methods: :caption)
|
52
52
|
}
|
53
53
|
format.csv{
|
54
54
|
require 'csv'
|
@@ -110,7 +110,7 @@ class <%= namespace_for_class %><%= model_camelize.pluralize %>Controller < Beau
|
|
110
110
|
else
|
111
111
|
format.html {
|
112
112
|
if params[:mass_inserting] then
|
113
|
-
redirect_to <%= namespace_for_route %><%= model_pluralize %>_path(:mass_inserting => true), :flash => { :error => t(:error, "Error") }
|
113
|
+
redirect_to <%= namespace_for_route %><%= model_pluralize %>_path(:mass_inserting => true), :flash => { :error => "#{t(:error, default: "Error")} : #{@<%= model %>.errors.full_messages.join(", ")}" }
|
114
114
|
else
|
115
115
|
render :action => "new"
|
116
116
|
end
|
@@ -123,7 +123,7 @@ class <%= namespace_for_class %><%= model_camelize.pluralize %>Controller < Beau
|
|
123
123
|
def update
|
124
124
|
|
125
125
|
respond_to do |format|
|
126
|
-
if @<%= model %>.
|
126
|
+
if @<%= model %>.update(params_for_model)
|
127
127
|
format.html { redirect_to <%= namespace_for_route %><%= singular_table_name %>_path(@<%= model %>), :flash => { :notice => t(:update_success, :model => "<%= model %>") }}
|
128
128
|
format.json { head :ok }
|
129
129
|
else
|
@@ -153,7 +153,7 @@ class <%= namespace_for_class %><%= model_camelize.pluralize %>Controller < Beau
|
|
153
153
|
do_sort_and_paginate(:<%= model %>)
|
154
154
|
|
155
155
|
@<%= model_pluralize %> = <%= model_camelize %>.ransack(
|
156
|
-
|
156
|
+
session['search']['<%= model %>']
|
157
157
|
).result(
|
158
158
|
:distinct => true
|
159
159
|
)
|
@@ -173,12 +173,14 @@ class <%= namespace_for_class %><%= model_camelize.pluralize %>Controller < Beau
|
|
173
173
|
# <%= model %>.save
|
174
174
|
when "destroy" then
|
175
175
|
<%= model %>.destroy
|
176
|
+
when "touch" then
|
177
|
+
<%= model %>.touch
|
176
178
|
end
|
177
179
|
end
|
178
180
|
}
|
179
181
|
end
|
180
182
|
|
181
|
-
redirect_to
|
183
|
+
redirect_to <%= namespace_for_route %><%= model_pluralize %>_url
|
182
184
|
end
|
183
185
|
|
184
186
|
def treeview
|
@@ -23,13 +23,11 @@ class BeautifulController < ApplicationController
|
|
23
23
|
def select_fields
|
24
24
|
model_sym = params[:model_sym]
|
25
25
|
|
26
|
-
do_select_fields(model_sym.to_s)
|
26
|
+
do_select_fields(model_sym.to_s)
|
27
27
|
|
28
28
|
head :ok
|
29
29
|
end
|
30
30
|
|
31
|
-
# TODO session use key string because json serializer don't know the type of key.
|
32
|
-
|
33
31
|
def do_select_fields(model_str)
|
34
32
|
# Fields
|
35
33
|
session['fields'] ||= {}
|
@@ -79,32 +77,28 @@ class BeautifulController < ApplicationController
|
|
79
77
|
elt = modelclass.find(params[:id])
|
80
78
|
elt.attributes = { foreignkey => parent_id }
|
81
79
|
|
82
|
-
if modelclass.column_names.include?("position")
|
80
|
+
if modelclass.column_names.include?("position")
|
83
81
|
new_pos = 0
|
84
82
|
modelclass.transaction do
|
85
83
|
all_elt = modelclass.where(foreignkey => parent_id).order("position ASC").to_a
|
86
84
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
break if not next_elt.nil? and next_elt.position > g.position
|
103
|
-
}
|
85
|
+
if index == 0
|
86
|
+
new_pos = (begin (all_elt.first.position - 1) rescue 1 end)
|
87
|
+
elsif index == (all_elt.length - 1)
|
88
|
+
new_pos = (begin (all_elt.last.position + 1) rescue 1 end)
|
89
|
+
else
|
90
|
+
new_pos = all_elt[index].position
|
91
|
+
|
92
|
+
end_of_array = all_elt[index..-1]
|
93
|
+
end_of_array.each do |g|
|
94
|
+
next if g == elt
|
95
|
+
g.position = g.position.to_i + 1
|
96
|
+
g.save!
|
97
|
+
|
98
|
+
next_elt = end_of_array[end_of_array.index(g) + 1]
|
99
|
+
break if !next_elt.nil? && next_elt.position > g.position
|
104
100
|
end
|
105
|
-
|
106
|
-
# new_pos = 0
|
107
|
-
#end
|
101
|
+
end
|
108
102
|
end
|
109
103
|
elt.position = new_pos
|
110
104
|
end
|
@@ -25,7 +25,7 @@ module BeautifulHelper
|
|
25
25
|
attr = nil
|
26
26
|
sort = nil
|
27
27
|
|
28
|
-
if
|
28
|
+
if !params[:sorting].blank?
|
29
29
|
attr = params[:sorting][:attribute]
|
30
30
|
sort = params[:sorting][:sorting]
|
31
31
|
end
|
@@ -34,11 +34,11 @@ module BeautifulHelper
|
|
34
34
|
sortstr = sort.to_s.downcase
|
35
35
|
opposite_sortstr = ""
|
36
36
|
csort = '' # <i class="fa fa-stop"></i>
|
37
|
-
if attribute_name == attr
|
38
|
-
if sortstr == "asc"
|
37
|
+
if attribute_name == attr
|
38
|
+
if sortstr == "asc"
|
39
39
|
csort = '<i class="fa fa-chevron-up"></i>'
|
40
40
|
opposite_sortstr = "desc"
|
41
|
-
elsif sortstr == "desc"
|
41
|
+
elsif sortstr == "desc"
|
42
42
|
csort = '<i class="fa fa-chevron-down"></i>'
|
43
43
|
opposite_sortstr = "asc"
|
44
44
|
end
|
@@ -47,7 +47,7 @@ module BeautifulHelper
|
|
47
47
|
end
|
48
48
|
|
49
49
|
default_caption = attribute_name.capitalize
|
50
|
-
if is_belongs_to_column?(default_caption)
|
50
|
+
if is_belongs_to_column?(default_caption)
|
51
51
|
default_caption = get_belongs_to_model(default_caption)
|
52
52
|
end
|
53
53
|
|
@@ -55,7 +55,7 @@ module BeautifulHelper
|
|
55
55
|
|
56
56
|
caption = t(cap, :default => default_caption).capitalize
|
57
57
|
strpath = model_name.pluralize + "_url"
|
58
|
-
strpath = namespace + '_' + strpath if
|
58
|
+
strpath = namespace + '_' + strpath if !namespace.blank?
|
59
59
|
|
60
60
|
return link_to(
|
61
61
|
"#{csort} #{caption}".html_safe,
|
@@ -73,9 +73,9 @@ module BeautifulHelper
|
|
73
73
|
ar_model = (engine.blank? ? model_name.camelize.constantize : "#{engine.camelize}::#{model_name.camelize}".constantize)
|
74
74
|
|
75
75
|
default_caption = caption
|
76
|
-
if default_caption.blank?
|
76
|
+
if default_caption.blank?
|
77
77
|
default_caption = attribute_name.capitalize
|
78
|
-
if is_belongs_to_column?(default_caption)
|
78
|
+
if is_belongs_to_column?(default_caption)
|
79
79
|
default_caption = get_belongs_to_model(default_caption)
|
80
80
|
end
|
81
81
|
end
|
@@ -84,7 +84,7 @@ module BeautifulHelper
|
|
84
84
|
name_field_bk = attribute_name
|
85
85
|
label_field = attribute_name
|
86
86
|
|
87
|
-
if is_belongs_to_column?(name_field_bk)
|
87
|
+
if is_belongs_to_column?(name_field_bk)
|
88
88
|
label_field = get_belongs_to_model(attribute_name)
|
89
89
|
end
|
90
90
|
|
@@ -99,100 +99,122 @@ module BeautifulHelper
|
|
99
99
|
type_of_column = ar_model.columns_hash[attribute_name].type unless ar_model.columns_hash[attribute_name].nil?
|
100
100
|
type_of_column ||= :other
|
101
101
|
case type_of_column
|
102
|
-
when :date, :datetime
|
102
|
+
when :date, :datetime
|
103
103
|
dt = (type_of_column == :datetime)
|
104
104
|
interval = (dt ? (1..5) : (1..3))
|
105
105
|
|
106
|
+
html_id = "#{name_field}_dp_gt"
|
107
|
+
filter = session['search'][model_name]
|
108
|
+
filter ||= {}
|
109
|
+
|
106
110
|
# Greater than
|
107
|
-
response += '<div class="input-group input-' + type_of_column.to_s + '">'
|
108
|
-
response += '<span class="input-group-
|
111
|
+
response += '<div class="dpicker input-group input-' + type_of_column.to_s + ' mb-2" data-field="q_' + name_field + '_gteq" id="' + html_id + '_id" data-target-input="nearest">'
|
112
|
+
response += '<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-chevron-right"></i></span></div>'
|
109
113
|
response += f.text_field(
|
110
|
-
(
|
111
|
-
:value => (
|
112
|
-
:class => "
|
114
|
+
(html_id).to_sym,
|
115
|
+
:value => ("#{filter["#{name_field}_gteq(3i)"]}/#{filter["#{name_field}_gteq(2i)"]}/#{filter["#{name_field}_gteq(1i)"]}"),
|
116
|
+
:class => " form-control datetimepicker-input",
|
117
|
+
"data-target" => "##{html_id}_id",
|
113
118
|
"data-id" => ("q_" + name_field + "_gteq"))
|
114
|
-
response += '<span class="input-group-
|
119
|
+
response += '<div class="input-group-append" data-target="' + html_id + '_id" data-toggle="datetimepicker"><span class="input-group-text"><i class="fa fa-calendar"></i></span></div>'
|
115
120
|
response += '</div>'
|
116
121
|
|
117
|
-
|
118
|
-
|
119
|
-
|
122
|
+
html_id = "#{name_field}_tp_gt"
|
123
|
+
|
124
|
+
if dt
|
125
|
+
response += '<div class="tpicker input-group input-' + type_of_column.to_s + ' mb-2" data-field="q_' + name_field + '_gteq" id="' + html_id + '_id" data-target-input="nearest">'
|
126
|
+
response += '<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-chevron-right"></i></span></div>'
|
120
127
|
response += f.text_field(
|
121
128
|
(name_field + "_tp_gt").to_sym,
|
122
|
-
:value => (
|
123
|
-
:class => "
|
129
|
+
:value => ("#{filter["#{name_field}_gteq(4i)"]}/#{filter["#{name_field}_gteq(5i)"]}"),
|
130
|
+
:class => " form-control datetimepicker-input",
|
131
|
+
"data-target" => "##{html_id}_id",
|
124
132
|
"data-id" => ("q_" + name_field + "_gteq"))
|
125
|
-
response += '<span class="input-group-
|
133
|
+
response += '<div class="input-group-append" data-target="' + html_id + '_id" data-toggle="datetimepicker"><span class="input-group-text"><i class="fa fa-clock"></i></span></div>'
|
126
134
|
response += '</div>'
|
127
135
|
end
|
128
136
|
|
129
137
|
for i in interval
|
130
138
|
response += f.hidden_field(name_field + "_gteq(#{i}i)",
|
131
|
-
:value => (
|
139
|
+
:value => (filter["#{name_field}_gteq(#{i}i)"]),
|
132
140
|
:id => ('q_' + name_field + "_gteq_#{i}i"))
|
133
141
|
end
|
134
142
|
|
143
|
+
html_id = "#{name_field}_dp_lt"
|
144
|
+
|
135
145
|
# Less than
|
136
|
-
response += '<div class="input-group input-' + type_of_column.to_s + '">'
|
137
|
-
response += '<span class="input-group-
|
146
|
+
response += '<div class="dpicker input-group input-' + type_of_column.to_s + ' mb-2" data-field="q_' + name_field + '_lteq" id="' + html_id + '_id" data-target-input="nearest">'
|
147
|
+
response += '<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-chevron-left"></i></span></div>'
|
138
148
|
response += f.text_field(
|
139
149
|
(name_field + "_dp_lt").to_sym,
|
140
|
-
:value => (
|
141
|
-
:class => "
|
150
|
+
:value => ("#{filter["#{name_field}_lteq(3i)"]}/#{filter["#{name_field}_lteq(2i)"]}/#{filter["#{name_field}_lteq(1i)"]}"),
|
151
|
+
:class => " form-control datetimepicker-input",
|
152
|
+
"data-target" => "##{html_id}_id",
|
142
153
|
"data-id" => ("q_" + name_field + "_lteq"))
|
143
|
-
response += '<span class="input-group-
|
154
|
+
response += '<div class="input-group-append" data-target="' + html_id + '_id" data-toggle="datetimepicker"><span class="input-group-text"><i class="fa fa-calendar"></i></span></div>'
|
144
155
|
response += '</div>'
|
145
156
|
|
146
|
-
|
147
|
-
|
148
|
-
|
157
|
+
html_id = "#{name_field}_tp_lt"
|
158
|
+
|
159
|
+
if dt
|
160
|
+
response += '<div class="tpicker input-group input-' + type_of_column.to_s + ' mb-2" data-field="q_' + name_field + '_lteq" id="' + html_id + '_id" data-target-input="nearest">'
|
161
|
+
response += '<div class="input-group-prepend"><span class="input-group-text"><i class="fa fa-chevron-left"></i></span></div>'
|
149
162
|
response += f.text_field(
|
150
163
|
(name_field + "_tp_lt").to_sym,
|
151
|
-
:value => (
|
152
|
-
:class => "
|
164
|
+
:value => ("#{filter["#{name_field}_lteq(4i)"]}/#{filter["#{name_field}_lteq(5i)"]}"),
|
165
|
+
:class => " form-control datetimepicker-input",
|
166
|
+
"data-target" => "##{html_id}_id",
|
153
167
|
"data-id" => ("q_" + name_field + "_lteq"))
|
154
|
-
response += '<span class="input-group-
|
168
|
+
response += '<div class="input-group-append" data-target="' + html_id + '_id" data-toggle="datetimepicker"><span class="input-group-text"><i class="fa fa-clock"></i></span></div>'
|
155
169
|
response += '</div>'
|
156
170
|
end
|
157
171
|
|
158
172
|
for i in interval
|
159
173
|
response += f.hidden_field(name_field + "_lteq(#{i}i)",
|
160
|
-
:value => (
|
174
|
+
:value => (filter["#{name_field}_lteq(#{i}i)"]),
|
161
175
|
:id => ('q_' + name_field + "_lteq_#{i}i"))
|
162
176
|
end
|
163
177
|
|
164
178
|
infostr = info_input(model_name, [(name_field + "_dp_lt").to_sym, (name_field + "_tp_lt").to_sym, (name_field + "_dp_gt").to_sym, (name_field + "_tp_gt").to_sym])
|
165
|
-
when :boolean
|
179
|
+
when :boolean
|
166
180
|
# Specify a default value (false) in rails migration
|
167
181
|
response += f.label name_field + "_eq_true", raw(f.radio_button((name_field + "_eq").to_sym, true)) + " " + h(t(:yes, :default => "Yes")), :class => "checkbox inline"
|
168
182
|
response += f.label name_field + "_eq_false", raw(f.radio_button((name_field + "_eq").to_sym, false)) + " " + h(t(:no, :default => "No")), :class => "checkbox inline"
|
169
183
|
response += f.label name_field + "_eq", raw(f.radio_button((name_field + "_eq").to_sym, nil)) + " " + h(t(:all, :default => "All")), :class => "checkbox inline"
|
170
184
|
|
171
185
|
infostr = (begin session['search'][model_name][(name_field + "_eq").to_sym] == "on" ? "" : "info" rescue "" end)
|
172
|
-
when :string
|
186
|
+
when :string
|
173
187
|
response += f.text_field((name_field + "_cont").to_sym, :class => "filter col-md-12 form-control")
|
174
188
|
|
175
189
|
infostr = info_input(model_name, (name_field + "_cont").to_sym)
|
176
|
-
when :integer, :float, :decimal
|
177
|
-
if is_belongs_to_column?(name_field_bk)
|
190
|
+
when :integer, :float, :decimal #, :other
|
191
|
+
if is_belongs_to_column?(name_field_bk)
|
178
192
|
bt_model_name = get_belongs_to_model(name_field_bk).camelize
|
179
|
-
|
193
|
+
field = name_field + "_eq"
|
194
|
+
|
195
|
+
if !engine.blank?
|
196
|
+
bt_model_name = "#{engine.camelize}::#{bt_model_name}"
|
197
|
+
#field = "#{engine.downcase}_#{field}"
|
198
|
+
end
|
199
|
+
|
180
200
|
btmodel = bt_model_name.constantize
|
181
|
-
|
201
|
+
field = field.to_sym
|
182
202
|
|
183
|
-
|
184
|
-
|
203
|
+
response += f.collection_select(field, btmodel.all, :id, :caption, { :include_blank => t(:all, :default => "All") }, { :class => "col-md-12 form-control" })
|
204
|
+
|
205
|
+
infostr = info_input(model_name, field)
|
206
|
+
elsif name_field == "id"
|
185
207
|
response += f.text_field((name_field + "_eq").to_sym, :class => "filter col-md-12 form-control")
|
186
208
|
|
187
209
|
infostr = info_input(model_name, (name_field + "_eq").to_sym)
|
188
210
|
else
|
189
211
|
response += '<div class="input-group">'
|
190
|
-
response += '<
|
191
|
-
response += f.text_field((name_field + "_gteq").to_sym, :class => "#{align_attribute("integer")} filter-min
|
212
|
+
response += '<div class="input-group-prepend" rel="tooltip" title="' + t(:greater_than, :default => "Greater than") + '"><span class="input-group-text"><i class="fa fa-chevron-right"></i></span></div>'
|
213
|
+
response += f.text_field((name_field + "_gteq").to_sym, :class => "#{align_attribute("integer")} filter-min form-control")
|
192
214
|
response += '</div>'
|
193
215
|
response += '<div class="input-group">'
|
194
|
-
response += '<
|
195
|
-
response += f.text_field((name_field + "_lteq").to_sym, :class => "#{align_attribute("integer")} filter-max
|
216
|
+
response += '<div class="input-group-append" rel="tooltip" title="' + t(:smaller_than, :default => "Smaller than") + '"><span class="input-group-text"><i class="fa fa-chevron-left"></i></span></div>'
|
217
|
+
response += f.text_field((name_field + "_lteq").to_sym, :class => "#{align_attribute("integer")} filter-max form-control")
|
196
218
|
response += '</div>'
|
197
219
|
|
198
220
|
infostr = info_input(model_name, [(name_field + "_lteq").to_sym, (name_field + "_gteq").to_sym])
|
@@ -213,11 +235,11 @@ module BeautifulHelper
|
|
213
235
|
def info_input(modname, attr)
|
214
236
|
model_name = modname
|
215
237
|
rep = false
|
216
|
-
if
|
217
|
-
if attr.kind_of?(Array)
|
238
|
+
if !session['search'].blank? and !session['search'][model_name].blank?
|
239
|
+
if attr.kind_of?(Array)
|
218
240
|
rep = (attr.any? { |elt| (not session['search'][model_name][elt].blank?) })
|
219
241
|
else
|
220
|
-
rep = (
|
242
|
+
rep = (!session['search'][model_name][attr].blank?)
|
221
243
|
end
|
222
244
|
end
|
223
245
|
return (rep ? "info" : "")
|
@@ -225,17 +247,17 @@ module BeautifulHelper
|
|
225
247
|
|
226
248
|
def align_attribute(attribute_type)
|
227
249
|
return case attribute_type
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
250
|
+
when "string"
|
251
|
+
"al"
|
252
|
+
when "integer", "float", "numeric", "decimal"
|
253
|
+
"ar"
|
254
|
+
when "boolean"
|
255
|
+
"ac"
|
256
|
+
when "date", "datetime", "timestamp"
|
257
|
+
"ac"
|
258
|
+
else
|
259
|
+
"al"
|
260
|
+
end
|
239
261
|
end
|
240
262
|
|
241
263
|
# Encore utilisé avec wysihtml5 ?
|
@@ -1,39 +1,44 @@
|
|
1
|
-
require 'will_paginate/view_helpers/
|
1
|
+
require 'will_paginate/view_helpers/action_view'
|
2
2
|
|
3
3
|
module WillPaginate
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
module ActionView
|
5
|
+
class BootstrapLinkRenderer < LinkRenderer
|
6
|
+
|
7
|
+
protected
|
8
8
|
|
9
|
-
protected
|
10
|
-
|
11
9
|
def page_number(page)
|
12
|
-
|
13
|
-
|
10
|
+
is_current_page = (page == current_page)
|
11
|
+
temphtml = '<li class="page-item ' + (is_current_page ? 'active' : '') + '">'
|
12
|
+
unless is_current_page
|
13
|
+
temphtml += link(page, page, :rel => rel_value(page), :class => 'page-link')
|
14
14
|
else
|
15
|
-
tag(:a, page, :class => 'current active
|
15
|
+
temphtml += tag(:a, page, :class => 'current active page-link')
|
16
16
|
end
|
17
|
+
temphtml += '</li>'
|
18
|
+
temphtml
|
17
19
|
end
|
18
|
-
|
20
|
+
|
19
21
|
def gap
|
20
22
|
text = @template.will_paginate_translate(:page_gap) { '…' }
|
21
23
|
%(<a class="gap btn btn-default disabled">#{text}</a>)
|
22
24
|
end
|
23
|
-
|
25
|
+
|
24
26
|
def previous_or_next_page(page, text, classname)
|
27
|
+
temphtml = '<li class="page-item">'
|
25
28
|
if page
|
26
|
-
link(text, page, :class => classname + '
|
29
|
+
temphtml += link(text, page, :class => classname + ' page-link')
|
27
30
|
else
|
28
|
-
tag(:a, text, :class => classname + '
|
31
|
+
temphtml += tag(:a, text, :class => classname + ' page-link')
|
29
32
|
end
|
33
|
+
temphtml += '</li>'
|
34
|
+
temphtml
|
30
35
|
end
|
31
|
-
|
36
|
+
|
32
37
|
def html_container(html)
|
33
|
-
html
|
38
|
+
'<ul class="pagination pagination-sm justify-content-end mb-0">' + html + '</ul>'
|
34
39
|
end
|
35
|
-
|
36
|
-
|
40
|
+
|
41
|
+
private
|
37
42
|
|
38
43
|
def param_name
|
39
44
|
@options[:param_name].to_s
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%-
|
2
2
|
strformfor = "@#{singular_table_name}"
|
3
|
-
if
|
3
|
+
if !namespace_alone.blank?
|
4
4
|
strformfor = "[:#{namespace_alone}, @#{singular_table_name} ]"
|
5
5
|
end
|
6
6
|
-%>
|
@@ -17,7 +17,7 @@ end
|
|
17
17
|
<%% end %>
|
18
18
|
<%= render_partial 'app/views/partials/_form_field.html.erb' %><!-- Beautiful_scaffold - AddField - Do not remove -->
|
19
19
|
<div>
|
20
|
-
<%%= link_to <%= namespace_for_route %><%= plural_table_name %>_path, :class => "btn btn-
|
20
|
+
<%%= link_to <%= namespace_for_route %><%= plural_table_name %>_path, :class => "btn btn-light" do %>
|
21
21
|
<i class="fa fa-chevron-left"></i> <%%= t(:back, :default => "Back") %>
|
22
22
|
<%% end %>
|
23
23
|
<%%= f.submit :class => "btn btn-primary", :data => { :disable_with => t(:saving, :default => "Saving...") } %>
|