beautiful_scaffold 0.3.2 → 0.3.3

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,19 @@
1
+ == 0.3.3
2
+
3
+ * enhancement
4
+ * Icons aligned to center, id aligned to right in table
5
+ * Accordion for option
6
+ * Add vertical-align on icon
7
+ * Add title for search-and-filter box
8
+
9
+ * bugfix
10
+ * Mass inserting set focus for first input
11
+ * I18n for caption in index table
12
+ * Rails 4 all -> to_a
13
+ * Improve sorting with treeview
14
+ * Responsive for Tablet / Mobile / Desktop
15
+ * Foreignkey in mass-insert and filter-columns error
16
+
1
17
  == 0.3.2
2
18
 
3
19
  * bugfix
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "beautiful_scaffold"
6
- s.version = "0.3.2"
6
+ s.version = "0.3.3"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.summary = "Beautiful Scaffold generate fully customizable scaffold"
9
9
  s.email = "claudel.sylvain@gmail.com"
@@ -7,8 +7,8 @@ class BeautifulMigrationGenerator < Rails::Generators::Base
7
7
 
8
8
  source_root File.expand_path('../templates', __FILE__)
9
9
 
10
- argument :name, :type => :string, :desc => "Name of the migration CamelCase AddXXXToYYY"
11
- argument :myattributes, :type => :array, :default => [], :banner => "field:type field:type"
10
+ argument :name, :type => :string, :desc => "Name of the migration CamelCase AddXxxToYyy (Yyy must be plural)"
11
+ argument :myattributes, :type => :array, :default => [], :banner => "field:type field:type (for bt relation model:references)"
12
12
  class_option :namespace, :default => nil
13
13
 
14
14
  def install_gems
@@ -56,7 +56,7 @@ class BeautifulMigrationGenerator < Rails::Generators::Base
56
56
  inject_into_file("#{commonpath}index.html.erb", render_partial("app/views/partials/_index_header.html.erb"), :before => "<!-- Beautiful_scaffold - AddField - Header - Do not remove -->\n" )
57
57
  inject_into_file("#{commonpath}index.html.erb", render_partial("app/views/partials/_index_column.html.erb"), :before => "<!-- Beautiful_scaffold - AddField - Column - Do not remove -->\n" )
58
58
  inject_into_file("#{commonpath}index.html.erb", render_partial("app/views/partials/_index_search.html.erb"), :before => "<!-- Beautiful_scaffold - AddField - Search - Do not remove -->\n" )
59
- inject_into_file("#{commonpath}index.html.erb", myattributes.map{ |attr| a,t = attr.split(':');(['references', 'reference'].include?(t) ? "'#{a}_id'" : "'#{a}'") }.join(',') + ',', :after => ":model_columns => [" )
59
+ inject_into_file("#{commonpath}index.html.erb", myattributes.map{ |attr| a,t = attr.split(':');"'#{a}'" }.join(',') + ',', :after => ":model_columns => [" )
60
60
  # Show
61
61
  inject_into_file("#{commonpath}show.html.erb", render_partial("app/views/partials/_show_field.html.erb"), :before => "<!-- Beautiful_scaffold - AddField - Field - Do not remove -->\n" )
62
62
  end
@@ -31,6 +31,9 @@
31
31
  //= require fixed_menu
32
32
 
33
33
  function initPage(){
34
+
35
+ <!-- Insert your javascript here -->
36
+
34
37
  datetimepicker_init();
35
38
  bs_init();
36
39
  modify_dom_init();
@@ -158,11 +158,20 @@ function bs_init(){
158
158
  $("div.control-group>div.field_with_errors").parent().addClass("error");
159
159
  $("#error_explanation").addClass("text-error");
160
160
 
161
+ // Collapse without IDS (next)
162
+ $('body').on('click.collapse-next.data-api', '[data-toggle=collapse-next]', function() {
163
+ var $target = $(this).parent().next();
164
+ $target.data('collapse') ? $target.collapse('toggle') : $target.collapse()
165
+ return false;
166
+ });
167
+
161
168
  // Mass inserting set focus
162
- elt = $('form.mass-inserting div[style*="inline"][class*="col"] .input-small').first();
163
- if($('form.mass-inserting').hasClass('setfocus')){
164
- $(elt).focus();
165
- }
169
+ $(function() {
170
+ var elt = $('form.mass-inserting div[style*="inline"][class*="col"] .input-small').first();
171
+ if($('form.mass-inserting').hasClass('setfocus')){
172
+ elt.focus();
173
+ }
174
+ });
166
175
 
167
176
  // Menu dropdown
168
177
  try{
@@ -2,10 +2,19 @@
2
2
  text-align:right;
3
3
  }
4
4
  .al, table td.al, table th.al{
5
- text-align:left;
5
+ text-align:left;
6
6
  }
7
7
  .ac, table td.ac, table th.ac{
8
- text-align:center;
8
+ text-align:center;
9
+ }
10
+ .ab, table td.ab, table th.ab{
11
+ vertical-align:bottom;
12
+ }
13
+ .am, table td.am, table th.am{
14
+ vertical-align:middle;
15
+ }
16
+ .at, table td.at, table th.at{
17
+ vertical-align:top;
9
18
  }
10
19
 
11
20
  $border-spinner:#0088CC;
@@ -139,4 +148,22 @@ html, body {
139
148
  z-index: -1;
140
149
  }
141
150
 
142
- #jstree-marker-line {pointer-events: none;}
151
+ #jstree-marker-line {pointer-events: none;}
152
+
153
+ /* Search & filter */
154
+ .search-and-filter div.accordion{
155
+ margin-bottom:0;
156
+ }
157
+ .search-and-filter div.accordion .accordion-toggle{
158
+ padding-left:0;
159
+ }
160
+ .search-and-filter div.accordion .accordion-group{
161
+ border:0;
162
+ }
163
+ .search-and-filter div.accordion .accordion-inner{
164
+ padding:0;
165
+ margin-top:0;
166
+ }
167
+ .search-and-filter h3{
168
+ margin-top:0;
169
+ }
@@ -70,11 +70,11 @@ class BeautifulController < ApplicationController
70
70
  modelclass.transaction do
71
71
  all_elt = modelclass.where(foreignkey => parent_id).order("position ASC").to_a
72
72
 
73
- begin
74
- if index == all_elt.length then
75
- new_pos = all_elt.last.position + 1
76
- elsif index == 0 then
77
- new_pos = all_elt.first.position - 1
73
+ #begin
74
+ if index == 0 then
75
+ new_pos = (begin (all_elt.first.position - 1) rescue 1 end)
76
+ elsif index == all_elt.length then
77
+ new_pos = (begin (all_elt.last.position + 1) rescue 1 end)
78
78
  else
79
79
  new_pos = all_elt[index].position
80
80
 
@@ -82,18 +82,18 @@ class BeautifulController < ApplicationController
82
82
  end_of_array.each{ |g|
83
83
  next if g == elt
84
84
  g.position = g.position.to_i + 1
85
- g.save
85
+ g.save!
86
86
 
87
87
  next_elt = end_of_array[end_of_array.index(g) + 1]
88
88
  break if not next_elt.nil? and next_elt.position > g.position
89
89
  }
90
90
  end
91
- rescue
92
- new_pos = 0
93
- end
91
+ #rescue
92
+ # new_pos = 0
93
+ #end
94
94
  end
95
95
  elt.position = new_pos
96
96
  end
97
- return elt.save
97
+ return elt.save!
98
98
  end
99
99
  end
@@ -253,7 +253,7 @@ module BeautifulHelper
253
253
  <ul>'
254
254
  ar = obj.send(child_relation.to_sym)
255
255
  ar = ar.order('position') if obj.class.column_names.include?("position")
256
- for o in ar.all
256
+ for o in ar.to_a
257
257
  out += build_treeview(o, child_relation, caption_method)
258
258
  end
259
259
  out += '
@@ -45,3 +45,5 @@ en:
45
45
  forgot_your_password: "Forgot your password?"
46
46
  send_me_reset_password_instructions: "Send me reset password instructions"
47
47
  register: "Register"
48
+ search_and_filter: "Search and filter"
49
+ more_options: "More options..."
@@ -44,4 +44,6 @@ fr:
44
44
  password_confirmation: "Mot de passe (Confirmation)"
45
45
  forgot_your_password: "Mot de passe oublié ?"
46
46
  send_me_reset_password_instructions: "Me ré-envoyer les instructions de réinitialisation du mot de passe"
47
- register: "Inscription"
47
+ register: "Inscription"
48
+ search_and_filter: "Option de filtre"
49
+ more_options: "Plus d'options..."
@@ -41,7 +41,7 @@
41
41
  <table class="table table-striped table-bordered table-condensed">
42
42
  <thead>
43
43
  <tr>
44
- <th>
44
+ <th class="ac">
45
45
  <a class="" data-toggle="modal" href="#modal-columns" title="<%%= t(:select_columns, :default => "Select Columns") %>" ><i class="icon-th-list"></i></a>
46
46
  </th>
47
47
  <th>
@@ -58,7 +58,7 @@
58
58
  <th colspan="3">
59
59
  <label class="checkbox">
60
60
  <%%= check_box_tag :checkallelt, 'all' %>
61
- <%%= pluralize(@<%= singular_table_name %>_scope.count, "<%= singular_table_name %>") %>
61
+ <%%= pluralize(@<%= singular_table_name %>_scope.count, "<%= i18n_t_m(singular_table_name) %>", "<%= i18n_t_m_p(singular_table_name) %>") %>
62
62
  </label>
63
63
  </th>
64
64
  </tr>
@@ -66,7 +66,7 @@
66
66
  <tbody>
67
67
  <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
68
68
  <tr class="line-<%%= cycle("1","2") %>">
69
- <td><%%= <%= singular_table_name %>.id %></td>
69
+ <td class="ar"><%%= <%= singular_table_name %>.id %></td>
70
70
  <td><%%= check_box_tag "ids[]",<%= singular_table_name %>.id, false, :class => 'cbbatch' %></td>
71
71
  <%= render_partial 'app/views/partials/_index_column.html.erb' %><!-- Beautiful_scaffold - AddField - Column - Do not remove -->
72
72
  <td <%%= visible_column("<%= singular_table_name %>", "created_at") %> class="col-created_at <%%= align_attribute("datetime") %>">
@@ -75,9 +75,9 @@
75
75
  <td <%%= visible_column("<%= singular_table_name %>", "updated_at") %> class="col-updated_at <%%= align_attribute("datetime") %>">
76
76
  <%%= l(<%= singular_table_name %>.updated_at, :format => :long) %>
77
77
  </td>
78
- <td><%%= link_to '<i class="icon-search"></i>'.html_safe, <%= namespace_for_route %><%= singular_table_name %>_path(<%= singular_table_name %>), :title => t(:show, :default => "Show") %></td>
79
- <td><%%= link_to '<i class="icon-pencil"></i>'.html_safe, edit_<%= namespace_for_route %><%= singular_table_name %>_path(<%= singular_table_name %>), :title => t(:edit, :default => "Edit") %></td>
80
- <td><%%= link_to '<i class="icon-remove"></i>'.html_safe, <%= namespace_for_route %><%= singular_table_name %>_path(<%= singular_table_name %>), :data => { :confirm => t(:are_you_sure, :default => "Are you sure?") }, :method => :delete, :title => t(:destroy, :default => "Destroy") %></td>
78
+ <td class="ac am"><%%= link_to '<i class="icon-search"></i>'.html_safe, <%= namespace_for_route %><%= singular_table_name %>_path(<%= singular_table_name %>), :title => t(:show, :default => "Show") %></td>
79
+ <td class="ac am"><%%= link_to '<i class="icon-pencil"></i>'.html_safe, edit_<%= namespace_for_route %><%= singular_table_name %>_path(<%= singular_table_name %>), :title => t(:edit, :default => "Edit") %></td>
80
+ <td class="ac am"><%%= link_to '<i class="icon-remove"></i>'.html_safe, <%= namespace_for_route %><%= singular_table_name %>_path(<%= singular_table_name %>), :data => { :confirm => t(:are_you_sure, :default => "Are you sure?") }, :method => :delete, :title => t(:destroy, :default => "Destroy") %></td>
81
81
  </tr>
82
82
  <%% end %>
83
83
  </tbody>
@@ -103,9 +103,27 @@
103
103
  <%% end %>
104
104
  </div>
105
105
  <div class="span3">
106
- <%%= search_form_for @q, :url => <%= namespace_for_route + 'search_' + model_pluralize + '_path' %>, :html => { :class => "well well-small" }, :method => :post do |f| %>
106
+ <%%= search_form_for @q, :url => <%= namespace_for_route + 'search_' + model_pluralize + '_path' %>, :html => { :class => "well well-small search-and-filter" }, :method => :post do |f| %>
107
+
108
+ <h3><%%= t("search_and_filter", :default => "Search & filter") %></h3>
109
+
107
110
  <%= render_partial 'app/views/partials/_index_search.html.erb' %>
108
- <%= render_partial 'app/views/partials/_index_search_default_fields.html.erb' %>
111
+
112
+ <div class="accordion">
113
+ <div class="accordion-group">
114
+ <div class="accordion-heading">
115
+ <a class="accordion-toggle" data-toggle="collapse-next">
116
+ <%%= t(:more_options, :default => "More options...") %>
117
+ </a>
118
+ </div>
119
+ <div class="accordion-body collapse">
120
+ <div class="accordion-inner">
121
+ <%= render_partial 'app/views/partials/_index_search_default_fields.html.erb' %>
122
+ </div>
123
+ </div>
124
+ </div>
125
+ </div>
126
+
109
127
  <!-- Beautiful_scaffold - AddField - Search - Do not remove -->
110
128
  <%%= f.submit t(:filter, :default => "Filter"), :class => "btn btn-primary" %>
111
129
  <%%= link_to t(:cancel, :default => "Cancel"), <%= namespace_for_route %><%= model_pluralize %>_path(:nosearch => "ok"), :class => "btn" %>
@@ -6,6 +6,7 @@
6
6
 
7
7
  <meta name="description" content="Beautiful Scaffold">
8
8
  <meta name="author" content="You or me Sylvain Claudel (http://blog.escarworld.com)">
9
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
10
 
10
11
  <%%= stylesheet_link_tag "application-bs" %>
11
12
  <%%= javascript_include_tag "application-bs" %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beautiful_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-17 00:00:00.000000000 Z
12
+ date: 2014-01-31 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Beautiful Scaffold generate a complete scaffold (sort, export, paginate
15
15
  and filter data) http://www.beautiful-scaffold.com