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.
Files changed (59) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/CHANGELOG +24 -1
  4. data/Gemfile +24 -9
  5. data/Gemfile.lock +209 -0
  6. data/README.rdoc +25 -26
  7. data/Rakefile +27 -4
  8. data/beautiful_scaffold.gemspec +6 -4
  9. data/lib/beautiful_scaffold/version.rb +3 -0
  10. data/lib/generators/beautiful_jointable_generator.rb +39 -6
  11. data/lib/generators/beautiful_migration_generator.rb +11 -19
  12. data/lib/generators/beautiful_scaffold_common_methods.rb +51 -26
  13. data/lib/generators/beautiful_scaffold_generator.rb +100 -43
  14. data/lib/generators/templates/app/assets/javascripts/application-bs.js +5 -6
  15. data/lib/generators/templates/app/assets/javascripts/beautiful_scaffold.js +64 -77
  16. data/lib/generators/templates/app/assets/javascripts/bootstrap-datetimepicker-for-beautiful-scaffold.js +25 -41
  17. data/lib/generators/templates/app/assets/javascripts/fixed_menu.js +3 -1
  18. data/lib/generators/templates/app/assets/javascripts/jstree.min.js +6 -0
  19. data/lib/generators/templates/app/assets/stylesheets/application-bs.css +14 -6
  20. data/lib/generators/templates/app/assets/stylesheets/beautiful-scaffold.css.scss +10 -1
  21. data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/32px.png +0 -0
  22. data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/40px.png +0 -0
  23. data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/style.scss +1146 -0
  24. data/lib/generators/templates/app/assets/stylesheets/themes/default-dark/throbber.gif +0 -0
  25. data/lib/generators/templates/app/assets/stylesheets/themes/default/32px.png +0 -0
  26. data/lib/generators/templates/app/assets/stylesheets/themes/default/40px.png +0 -0
  27. data/lib/generators/templates/app/assets/stylesheets/themes/default/style.scss +1102 -0
  28. data/lib/generators/templates/app/assets/stylesheets/themes/default/throbber.gif +0 -0
  29. data/lib/generators/templates/app/controllers/base.rb +7 -5
  30. data/lib/generators/templates/app/controllers/master_base.rb +18 -24
  31. data/lib/generators/templates/app/helpers/beautiful_helper.rb +83 -61
  32. data/lib/generators/templates/app/initializers/link_renderer.rb +23 -18
  33. data/lib/generators/templates/app/views/_form.html.erb +2 -2
  34. data/lib/generators/templates/app/views/_form_habtm_tag.html.erb +6 -2
  35. data/lib/generators/templates/app/views/_mass_inserting.html.erb +38 -30
  36. data/lib/generators/templates/app/views/_modal_columns.html.erb +3 -3
  37. data/lib/generators/templates/app/views/index.html.erb +83 -79
  38. data/lib/generators/templates/app/views/layout.html.erb +29 -36
  39. data/lib/generators/templates/app/views/partials/_forget_password.html.erb +2 -2
  40. data/lib/generators/templates/app/views/partials/_form_field.html.erb +7 -7
  41. data/lib/generators/templates/app/views/partials/_index_batch.html.erb +1 -1
  42. data/lib/generators/templates/app/views/partials/_index_column.html.erb +4 -4
  43. data/lib/generators/templates/app/views/partials/_index_header.html.erb +1 -1
  44. data/lib/generators/templates/app/views/partials/_index_search.html.erb +1 -1
  45. data/lib/generators/templates/app/views/partials/_register_form.html.erb +2 -2
  46. data/lib/generators/templates/app/views/partials/_show_field.html.erb +3 -3
  47. data/lib/generators/templates/app/views/partials/_sign_in_form.html.erb +1 -1
  48. data/lib/generators/templates/app/views/partials/_sign_in_sign_out.html.erb +2 -2
  49. data/lib/generators/templates/app/views/show.html.erb +2 -2
  50. data/lib/generators/templates/app/views/treeview.html.erb +8 -5
  51. metadata +21 -19
  52. data/lib/generators/templates/app/assets/javascripts/jquery.jstree.js +0 -4551
  53. data/lib/generators/templates/app/assets/stylesheets/datepicker.css +0 -224
  54. data/lib/generators/templates/app/assets/stylesheets/reset.css +0 -48
  55. data/lib/generators/templates/app/assets/stylesheets/themes/default/d.gif +0 -0
  56. data/lib/generators/templates/app/assets/stylesheets/themes/default/d.png +0 -0
  57. data/lib/generators/templates/app/assets/stylesheets/themes/default/style.css +0 -74
  58. data/lib/generators/templates/app/assets/stylesheets/timepicker.css +0 -89
  59. data/test/scaffold_test.rb +0 -68
@@ -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.to_a
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 %>.update_attributes(params_for_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
- params[:q]
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 :back
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) #TODO vérifier si nécessaire
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") then
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
- #begin
88
- if index == 0 then
89
- new_pos = (begin (all_elt.first.position - 1) rescue 1 end)
90
- elsif index == all_elt.length then
91
- new_pos = (begin (all_elt.last.position + 1) rescue 1 end)
92
- else
93
- new_pos = all_elt[index].position
94
-
95
- end_of_array = all_elt[index..-1]
96
- end_of_array.each{ |g|
97
- next if g == elt
98
- g.position = g.position.to_i + 1
99
- g.save!
100
-
101
- next_elt = end_of_array[end_of_array.index(g) + 1]
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
- #rescue
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 not params[:sorting].blank? then
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 then
38
- if sortstr == "asc" then
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" then
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) then
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 not namespace.blank?
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? then
76
+ if default_caption.blank?
77
77
  default_caption = attribute_name.capitalize
78
- if is_belongs_to_column?(default_caption) then
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) then
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 then
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-addon"><i class="fa fa-chevron-right"></i></span>'
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
- (name_field + "_dp_gt").to_sym,
111
- :value => (begin params[:q][(name_field + "_dp_gt").to_sym] rescue '' end),
112
- :class => "col-md-9 dpicker form-control",
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-addon"><i class="fa fa-calendar"></i></span>'
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
- if dt then
118
- response += '<div class="input-group input-' + type_of_column.to_s + '">'
119
- response += '<span class="input-group-addon"><i class="fa fa-chevron-right"></i></span>'
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 => (begin params[:q][(name_field + "_tp_gt").to_sym] rescue '' end),
123
- :class => "col-md-9 tpicker form-control",
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-addon"><i class="fa fa-clock-o"></i></span>'
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 => (begin params[:q][(name_field + "_gteq(#{i}i)").to_sym] rescue '' end),
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-addon"><i class="fa fa-chevron-left"></i></span>'
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 => (begin params[:q][(name_field + "_dp_lt").to_sym] rescue '' end),
141
- :class => "col-md-9 dpicker form-control",
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-addon"><i class="fa fa-calendar"></i></span>'
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
- if dt then
147
- response += '<div class="input-group input-' + type_of_column.to_s + '">'
148
- response += '<span class="input-group-addon"><i class="fa fa-chevron-left"></i></span>'
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 => (begin params[:q][(name_field + "_tp_lt").to_sym] rescue '' end),
152
- :class => "col-md-9 tpicker form-control",
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-addon"><i class="fa fa-clock-o"></i></span>'
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 => (begin params[:q][(name_field + "_lteq(#{i}i)").to_sym] rescue '' end),
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 then
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 then
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 then
177
- if is_belongs_to_column?(name_field_bk) then
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
- bt_model_name = "#{engine.camelize}::#{bt_model_name}" if !engine.blank?
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
- response += f.collection_select((name_field + "_eq").to_sym, btmodel.all, :id, :caption, { :include_blank => t(:all, :default => "All") }, { :class => "col-md-12 form-control" })
201
+ field = field.to_sym
182
202
 
183
- infostr = info_input(model_name, (name_field + "_eq").to_sym)
184
- elsif name_field == "id" then
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 += '<span class="input-group-addon" rel="tooltip" title="' + t(:greater_than, :default => "Greater than") + '"><i class="fa fa-chevron-right"></i></span>'
191
- response += f.text_field((name_field + "_gteq").to_sym, :class => "#{align_attribute("integer")} filter-min col-md-10 form-control")
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 += '<span class="input-group-addon" rel="tooltip" title="' + t(:smaller_than, :default => "Smaller than") + '"><i class="fa fa-chevron-left"></i></span>'
195
- response += f.text_field((name_field + "_lteq").to_sym, :class => "#{align_attribute("integer")} filter-max col-md-10 form-control")
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 not session['search'].blank? and not session['search'][model_name].blank? then
217
- if attr.kind_of?(Array) then
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 = (not session['search'][model_name][attr].blank?)
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
- when "string" then
229
- "al"
230
- when "integer", "float", "numeric", "decimal" then
231
- "ar"
232
- when "boolean" then
233
- "ac"
234
- when "date", "datetime", "timestamp" then
235
- "ac"
236
- else
237
- "al"
238
- end
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/link_renderer_base'
1
+ require 'will_paginate/view_helpers/action_view'
2
2
 
3
3
  module WillPaginate
4
- module ViewHelpers
5
- # This class does the heavy lifting of actually building the pagination
6
- # links. It is used by +will_paginate+ helper internally.
7
- class LinkRenderer < LinkRendererBase
4
+ module ActionView
5
+ class BootstrapLinkRenderer < LinkRenderer
6
+
7
+ protected
8
8
 
9
- protected
10
-
11
9
  def page_number(page)
12
- unless page == current_page
13
- link(page, page, :rel => rel_value(page), :class => "btn btn-default")
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 btn btn-default')
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) { '&hellip;' }
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 + ' btn btn-default')
29
+ temphtml += link(text, page, :class => classname + ' page-link')
27
30
  else
28
- tag(:a, text, :class => classname + ' disabled btn btn-default')
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
- private
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 not namespace_alone.blank? then
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-default" do %>
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...") } %>