leonardo 1.8.4 → 1.9.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. data/CHANGELOG +11 -5
  2. data/lib/generators/erb/leosca/leosca_generator.rb +1 -1
  3. data/lib/generators/erb/leosca/templates/_fields.html.erb +17 -0
  4. data/lib/generators/erb/leosca/templates/_form.html.erb +1 -17
  5. data/lib/generators/erb/leosca/templates/_form_multiple.html.erb +10 -0
  6. data/lib/generators/erb/leosca/templates/_list.erb +35 -24
  7. data/lib/generators/erb/leosca/templates/_row_index.html.erb +23 -0
  8. data/lib/generators/erb/leosca/templates/copy.html.erb +7 -0
  9. data/lib/generators/erb/leosca/templates/edit_multiple.html.erb +7 -0
  10. data/lib/generators/erb/leosca/templates/formtastic/_fields.html.erb +16 -0
  11. data/lib/generators/erb/leosca/templates/formtastic/_form.html.erb +1 -16
  12. data/lib/generators/erb/leosca/templates/formtastic/_form_multiple.html.erb +10 -0
  13. data/lib/generators/erb/leosca/templates/index.html.erb +1 -1
  14. data/lib/generators/erb/leosca/templates/select.js.erb +28 -0
  15. data/lib/generators/erb/leosca/templates/show.js.erb +2 -0
  16. data/lib/generators/leolay/leolay_generator.rb +15 -9
  17. data/lib/generators/leolay/templates/app/assets/javascripts/custom.js +23 -5
  18. data/lib/generators/leolay/templates/{layout_helper.rb → app/helpers/layout_helper.rb} +15 -0
  19. data/lib/generators/leolay/templates/config/locales/devise.en.yml +1 -1
  20. data/lib/generators/leolay/templates/config/locales/en.yml +12 -5
  21. data/lib/generators/leolay/templates/config/locales/it.yml +11 -1
  22. data/lib/generators/leolay/templates/styles/cloudy/images/style/Thumbs.db +0 -0
  23. data/lib/generators/leolay/templates/styles/cloudy/images/style/button_120_98.png +0 -0
  24. data/lib/generators/leolay/templates/styles/cloudy/stylesheets/app/stylesheet.sass +17 -12
  25. data/lib/generators/rails/leosca/leosca_generator.rb +9 -1
  26. data/lib/generators/rails/leosca_controller/leosca_controller_generator.rb +2 -0
  27. data/lib/generators/rails/leosca_controller/templates/controller.rb +68 -0
  28. metadata +27 -14
  29. data/lib/generators/leolay/templates/styles/cloudy/images/style/bg_but_gray.png +0 -0
data/CHANGELOG CHANGED
@@ -1,16 +1,22 @@
1
- 1.8.4 (November 9th, 2011) Marco Mastrodonato
2
- * Fixed a bug in the list view when was used option --under
3
- * Now is possible to sort also by ID
4
- * Specs updated, all green
1
+ 1.9.0.beta1 (November 30th, 2011) Marco Mastrodonato
2
+ * Lists: Added multiple selection to combine with massive operation
3
+ * Lists: Added copy operation to create new items from existing. It works for multiple rows as well.
4
+ * Data forms: fields moved into new partial to share with multiple operation
5
5
 
6
6
  TODO:
7
- * Lists: Multiple selection and multiple operation
8
7
  * Model: Create name attribute for every one that does not have
9
8
  * Handle eager loading including child resources
10
9
  * Add user management
11
10
 
12
11
 
13
12
 
13
+ 1.8.4 (November 9th, 2011) Marco Mastrodonato
14
+ * Fixed a bug in the list view when was used option --under
15
+ * Now is possible to sort also by ID
16
+ * Specs updated, all green
17
+
18
+
19
+
14
20
  1.8.3 (November 8th, 2011) Marco Mastrodonato
15
21
  * Controller/sort_column => Fixed an issue with multiple tables
16
22
  * Dev users are now added by rake db:seed, no more by migration
@@ -92,7 +92,7 @@ module Erb
92
92
 
93
93
  #Override
94
94
  def available_views
95
- %w(index edit show new _form _list destroy _show)
95
+ %w(index edit edit_multiple copy show new _form _form_multiple _fields destroy _show _list _row_index select)
96
96
  end
97
97
 
98
98
  def filenames_all_formats(name, paths=[], formats=[:html, :js, nil])
@@ -0,0 +1,17 @@
1
+ <%- attributes.each do |attribute| -%>
2
+ <div class="field">
3
+ <%%= f.label :<%= attribute.name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %><br />
4
+ <%- case attribute.type
5
+ when :references, :belongs_to -%>
6
+ <%% if @<%= singular_table_name %>.new_record? -%>
7
+ <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true if can?(:manage, <%=class_name %>) %>
8
+ <%% else -%>
9
+ <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true %>
10
+ <%% end -%>
11
+ <%- when :date -%>
12
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %> <%=", :class => \"calendar\"" if jquery_ui?%> %>
13
+ <%- else -%>
14
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
15
+ <%- end -%>
16
+ </div>
17
+ <%- end -%>
@@ -11,23 +11,7 @@
11
11
  </div>
12
12
  <%% end %>
13
13
 
14
- <%- attributes.each do |attribute| -%>
15
- <div class="field">
16
- <%%= f.label :<%= attribute.name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %><br />
17
- <%- case attribute.type
18
- when :references, :belongs_to -%>
19
- <%% if @<%= singular_table_name %>.new_record? -%>
20
- <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true if can?(:manage, <%=class_name %>) %>
21
- <%% else -%>
22
- <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true %>
23
- <%% end -%>
24
- <%- when :date -%>
25
- <%%= f.<%= attribute.field_type %> :<%= attribute.name %> <%=", :class => \"calendar\"" if jquery_ui?%> %>
26
- <%- else -%>
27
- <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
28
- <%- end -%>
29
- </div>
30
- <%- end -%>
14
+ <%%= render 'fields', :f => f %>
31
15
  <div class="actions">
32
16
  <%%= f.submit :class => 'button large' %>
33
17
  </div>
@@ -0,0 +1,10 @@
1
+ <%%= form_for(:<%= plural_table_name %>, :url => path, :method => :put) do |f| %>
2
+ <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
3
+ <%%= f.fields_for "#{<%= singular_table_name %>.id}", <%= singular_table_name %> do |f_<%= singular_table_name %>| %>
4
+ <%%= render 'fields', :f => f_<%= singular_table_name %> %>
5
+ <%% end %>
6
+ <%% end %>
7
+ <div class="actions">
8
+ <%%= f.submit :class => 'button large' %>
9
+ </div>
10
+ <%% end %>
@@ -1,12 +1,16 @@
1
- <%- if pagination? %>
1
+ <%if pagination?%>
2
2
  <%%= paginate @<%= plural_table_name %>, :remote => remote %>
3
- <%- end %>
4
- <div class="separator"></div>
3
+ <%end%>
4
+ <%%= page_entries_info @<%= plural_table_name %>, t('models.<%= singular_table_name %>'), t('models.<%= plural_table_name %>') %>
5
5
 
6
+ <%%= form_for :select, :url => select_<%= plural_table_name %>_path, :remote => false, :html => { :method => :post, :id => "form_select" } do |f| %>
6
7
  <table class='user' cellspacing='0'>
7
8
  <thead>
8
9
  <tr>
9
- <th><%%= sortable :id, '#', remote<%= ", '#{underscore_resource_path(:parent_singular_resource_plural)}_path', '#{formatted_parent_resources("@")}'" if nested? %> %></th>
10
+ <th>
11
+ <%%= check_box_tag nil, nil, false, :class => "selector" %>
12
+ <%%= sortable :id, '#', remote<%= ", '#{underscore_resource_path(:parent_singular_resource_plural)}_path', '#{formatted_parent_resources("@")}'" if nested? %> %>
13
+ </th>
10
14
  <%- attributes.each do |attribute| -%>
11
15
  <%- attr_name = case attribute.type when :references, :belongs_to then "#{attribute.name}_id" else attribute.name end -%>
12
16
  <th><%%= sortable :<%= attr_name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>'), remote<%= ", '#{underscore_resource_path(:parent_singular_resource_plural)}_path', '#{formatted_parent_resources("@")}'" if nested? %> %></th>
@@ -19,32 +23,39 @@
19
23
  <tbody>
20
24
  <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| -%>
21
25
  <tr id="tr<%%= <%= singular_table_name %>.id %>" class="<%%= cycle("odd", "even")%>">
22
- <td><%%= number_with_delimiter <%= singular_table_name %>.id %></td>
23
- <%- attributes.each do |attribute| -%>
24
- <td><%= attribute_to_erb(attribute, singular_table_name) -%></td>
25
- <%- end -%>
26
- <!-- Manage section, do not remove this tag -->
27
- <td><%%= link_to t(:show), <%= show_resource_path %><%= ", :remote => remote" if jquery_ui? %> %></td>
28
- <%- if authorization? -%>
29
- <%%- if can? :update, <%= singular_table_name %> -%>
30
- <%- end -%>
31
- <td><%%= link_to t(:edit), <%= edit_resource_path %> %></td>
32
- <%- if authorization? -%>
33
- <%%- end -%>
34
- <%- end -%>
35
- <%- if authorization? -%>
36
- <%%- if can? :destroy, <%= singular_table_name %> -%>
37
- <%- end -%>
38
- <td><%%= link_to t(:destroy), <%= destroy_resource_path %>, <%= key_value :confirm, "t(:sure?)" %>, <%= key_value :method, ":delete" %>, :remote => remote %></td>
39
- <%- if authorization? -%>
40
- <%%- end -%>
41
- <%- end -%>
26
+ <%%= render 'row_index', :<%= singular_table_name %> => <%= singular_table_name %>, :remote => remote, :message => "" %>
42
27
  </tr>
43
28
  <%% end -%>
44
29
  </tbody>
45
30
  </table>
46
31
 
47
32
  <div class="separator"></div>
33
+ <div style="clear:both;">
34
+ <%- if authorization? -%>
35
+ <%%- if can? :destroy, <%= class_name %> -%>
36
+ <%- end -%>
37
+ <%%= f.submit t(:destroy).upcase, <%= key_value :confirm, "t(:sure?)" %>, :class=>'button small' %>
38
+ <%- if authorization? -%>
39
+ <%%- end -%>
40
+ <%- end -%>
41
+ <%- if authorization? -%>
42
+ <%%- if can? :update, <%= class_name %> -%>
43
+ <%- end -%>
44
+ <%%= f.submit t(:edit).upcase, {:class=>'button small'} %>
45
+ <%- if authorization? -%>
46
+ <%%- end -%>
47
+ <%- end -%>
48
+ <%- if authorization? -%>
49
+ <%%- if can? :create, <%= class_name %> -%>
50
+ <%- end -%>
51
+ <%%= f.submit t(:copy).upcase, {:class=>'button small'} %>
52
+ <%- if authorization? -%>
53
+ <%%- end -%>
54
+ <%- end -%>
55
+ </div>
56
+ <%% end -%>
57
+ <div class="separator"></div>
58
+
48
59
  <%- if pagination? -%>
49
60
  <%%= paginate @<%= plural_table_name %>, :remote => remote %>
50
61
  <%- end -%>
@@ -0,0 +1,23 @@
1
+ <td>
2
+ <%%= check_box_tag "ids[]", <%= singular_table_name %>.id, false, {:id =>"check#{<%= singular_table_name %>.id}", :class => "selectable"} %>
3
+ <%%= number_with_delimiter <%= singular_table_name %>.id %>
4
+ </td>
5
+ <%- attributes.each do |attribute| -%>
6
+ <td><%= attribute_to_erb(attribute, singular_table_name) -%></td>
7
+ <%- end -%>
8
+ <!-- Manage section, do not remove this tag -->
9
+ <td><%%= link_to t(:show), <%= show_resource_path %><%= ", :remote => remote" if jquery_ui? %> %></td>
10
+ <%- if authorization? -%>
11
+ <%%- if can? :update, <%= singular_table_name %> -%>
12
+ <%- end -%>
13
+ <td><%%= link_to t(:edit), <%= edit_resource_path %> %></td>
14
+ <%- if authorization? -%>
15
+ <%%- end -%>
16
+ <%- end -%>
17
+ <%- if authorization? -%>
18
+ <%%- if can? :destroy, <%= singular_table_name %> -%>
19
+ <%- end -%>
20
+ <td><%%= link_to t(:destroy), <%= destroy_resource_path %>, <%= key_value :confirm, "t(:sure?)" %>, <%= key_value :method, ":delete" %>, :remote => remote %></td>
21
+ <%- if authorization? -%>
22
+ <%%- end -%>
23
+ <%- end -%>
@@ -0,0 +1,7 @@
1
+ <%% secondary_navigation({:value => link_to(t(:list), <%= list_resources_path %>)},
2
+ ({:value => link_to(t(:add), <%= new_resource_path %>)}<%= " if can?(:create, #{class_name})" if authorization? %>)
3
+ ) %>
4
+
5
+ <%% title t('attributes.<%= singular_table_name %>.op_copy') %>
6
+
7
+ <%%= render 'form_multiple', :path => create_multiple_<%= list_resources_path %> %>
@@ -0,0 +1,7 @@
1
+ <%% secondary_navigation({:value => link_to(t(:list), <%= list_resources_path %>)},
2
+ ({:value => link_to(t(:add), <%= new_resource_path %>)}<%= " if can?(:create, #{class_name})" if authorization? %>)
3
+ ) %>
4
+
5
+ <%% title t('attributes.<%= singular_table_name %>.op_edit_multiple') %>
6
+
7
+ <%%= render 'form_multiple', :path => update_multiple_<%= list_resources_path %> %>
@@ -0,0 +1,16 @@
1
+ <%%= f.inputs do %>
2
+ <%- attributes.each do |attribute| -%>
3
+ <%- case attribute.type
4
+ when :references, :belongs_to -%>
5
+ <%% if @<%= singular_table_name %>.new_record? -%>
6
+ <%%= f.input :<%= attribute.name %> if can?(:manage, <%=class_name %>) %>
7
+ <%% else -%>
8
+ <%%= f.input :<%= attribute.name %> %>
9
+ <%% end -%>
10
+ <%- when :date -%>
11
+ <%%= f.input :<%= attribute.name %>, :as => :string, :input_html => { :class => 'calendar', :maxlength => 10 } %>
12
+ <%- else -%>
13
+ <%%= f.input :<%= attribute.name %> %>
14
+ <%- end -%>
15
+ <%- end -%>
16
+ <%% end %>
@@ -1,20 +1,5 @@
1
1
  <%%= semantic_form_for(<%= form_resource_path %>) do |f| %>
2
- <%%= f.inputs do %>
3
- <%- attributes.each do |attribute| -%>
4
- <%- case attribute.type
5
- when :references, :belongs_to -%>
6
- <%% if @<%= singular_table_name %>.new_record? -%>
7
- <%%= f.input :<%= attribute.name %> if can?(:manage, <%=class_name %>) %>
8
- <%% else -%>
9
- <%%= f.input :<%= attribute.name %> %>
10
- <%% end -%>
11
- <%- when :date -%>
12
- <%%= f.input :<%= attribute.name %>, :as => :string, :input_html => { :class => 'calendar', :maxlength => 10 } %>
13
- <%- else -%>
14
- <%%= f.input :<%= attribute.name %> %>
15
- <%- end -%>
16
- <%- end -%>
17
- <%% end %>
2
+ <%%= render 'fields', :f => f %>
18
3
  <%%= f.buttons do %>
19
4
  <%%= f.commit_button :button_html => { :class => "button large" } %>
20
5
  <%% end %>
@@ -0,0 +1,10 @@
1
+ <%%= semantic_form_for(:<%= plural_table_name %>, :url => path, :method => :put) do |f| %>
2
+ <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
3
+ <%%= f.semantic_fields_for "#{<%= singular_table_name %>.id}", <%= singular_table_name %> do |f_<%= singular_table_name %>| %>
4
+ <%%= render 'fields', :f => f_<%= singular_table_name %> %>
5
+ <%% end %>
6
+ <%% end %>
7
+ <%%= f.buttons do %>
8
+ <%%= f.commit_button :button_html => { :class => "button large" } %>
9
+ <%% end %>
10
+ <%% end %>
@@ -30,7 +30,7 @@
30
30
  <%- when :text -%>
31
31
  <%%= f.text_field :<%= attribute.name %> %>
32
32
  <%- when :date -%>
33
- <%%= f.text_field :<%= attribute.name %><%=", :class => \"calendar autosubmit\"" if jquery_ui?%> %>
33
+ <%%= f.text_field :<%= attribute.name %>, :class => "autosubmit<%=" calendar" if jquery_ui? %>"
34
34
  <%- else -%>
35
35
  <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
36
36
  <%- end -%>
@@ -0,0 +1,28 @@
1
+ <%% @results.each do |key, value| -%>
2
+ <%% result, msg = value %>
3
+ var id = "#tr<%%= key %>";
4
+ <%% case @operation %>
5
+ <%% when :destroy %>
6
+ $(id).hide('fast').text('');
7
+ <%% when :edit %>
8
+ //$(id).effect("highlight", {}, 3000);
9
+ <%% @<%= singular_table_name %> = @<%= plural_table_name %>.find(key) %>
10
+ var $dialog = $('<div></div>')
11
+ .html("<%%= escape_javascript(render('form'))%>")
12
+ .dialog({
13
+ autoOpen: false,
14
+ minHeight: 400,
15
+ minWidth: 700,
16
+ title: '<%%= "#{t('models.<%= singular_table_name %>')} #{key}"%>'
17
+ });
18
+ $dialog.dialog('open');
19
+ <%% else %>
20
+ //Other operations which updates the row
21
+ $(id).html("<%%= escape_javascript(render('row_index', :<%= singular_table_name %> => @<%= plural_table_name %>.find(key), :remote => true, :message => msg ))%>");
22
+ <%% if result -%>
23
+ $(id).removeClass('error').addClass('operation done');
24
+ <%% else -%>
25
+ $(id).removeClass('done').addClass('operation error');
26
+ <%% end -%>
27
+ <%% end %>
28
+ <%% end -%>
@@ -2,6 +2,8 @@ var $dialog = $('<div></div>')
2
2
  .html("<%%= escape_javascript(render('show'))%>")
3
3
  .dialog({
4
4
  autoOpen: false,
5
+ minHeight: 200,
6
+ minWidth: 400,
5
7
  title: '<%%= "#{t('models.<%= singular_table_name %>')} #{@<%= singular_table_name %>.id}"%>'
6
8
  });
7
9
  $dialog.dialog('open');
@@ -16,7 +16,7 @@ class LeolayGenerator < Rails::Generators::Base
16
16
 
17
17
  template "styles/#{style_name}/stylesheets/app/stylesheet.sass", "app/assets/stylesheets/#{style_name}.sass"
18
18
 
19
- copy_file "layout_helper.rb", "app/helpers/layout_helper.rb"
19
+ copy_file "app/helpers/layout_helper.rb", "app/helpers/layout_helper.rb"
20
20
 
21
21
  copy_file "styles/#{style_name}/views/layout/application.html.erb", "app/views/layouts/application.html.erb", :force => true
22
22
  template "styles/#{style_name}/views/layout/_layout.html.erb", "app/views/layouts/_#{style_name}.html.erb"
@@ -111,10 +111,10 @@ class LeolayGenerator < Rails::Generators::Base
111
111
  def sortable(column, title = nil, remote = nil, path = nil, *params)
112
112
  column = column.to_s
113
113
  title ||= column.titleize
114
- css_class = (column == sort_column) ? "sorted #{sort_direction}" : nil
114
+ css_class = (column == sort_column) ? "sorted \#{sort_direction}" : nil
115
115
  direction = (column == sort_column && sort_direction == "asc") ? "desc" : "asc"
116
116
  params << "{:sort => column, :direction => direction}"
117
- path = path ? eval("#{path}(#{params.join(',')})") : {:sort => column, :direction => direction}
117
+ path = path ? eval("#\{path}(\#{params.join(',')})") : {:sort => column, :direction => direction}
118
118
  link_to(title, path, :remote => true, :disable_with => t(:loading), :class => css_class)
119
119
  end
120
120
  FILE
@@ -227,12 +227,18 @@ class LeolayGenerator < Rails::Generators::Base
227
227
 
228
228
  if options.jquery_ui?
229
229
  file = "#{app_path}/custom.js"
230
- append_file file do
231
- <<-FILE.gsub(/^ /, '')
232
-
233
- $(function (){
234
- $('.calendar').datepicker();
235
- });
230
+ #append_file file do
231
+ # <<-FILE.gsub(/^ /, '')
232
+ #
233
+ # $(function (){
234
+ # $('.calendar').datepicker();
235
+ # });
236
+ # FILE
237
+ #end
238
+ inject_into_file file, :after => "$(document).ready(function() {" do
239
+ <<-FILE.gsub(/^ /, '')
240
+
241
+ $('.calendar').datepicker();
236
242
  FILE
237
243
  end
238
244
 
@@ -1,8 +1,26 @@
1
1
  // Leonardo
2
- // Insert here your javascript
2
+ // Use this file to add your javascript
3
3
 
4
- //Add this class to an input form to auto submit on change
5
- $('.autosubmit').live('change', function() {
6
- setTimeout("$('#"+this.id+"').parents('form:first').submit();", 300);
7
- return false;
4
+ $(document).ready(function() {
5
+ //Add this class to an input form to auto submit on change
6
+ $('.autosubmit').live('change', function() {
7
+ setTimeout("$('#"+this.id+"').parents('form:first').submit();", 300);
8
+ return false;
9
+ });
10
+ $('.selectable').live('change', function() {
11
+ if ($(this).is(':checked')) {
12
+ $(this).parents('tr').addClass('selected');
13
+ } else {
14
+ $(this).parents('tr').removeClass('selected');
15
+ }
16
+ });
17
+ $('.selector').live('change', function() {
18
+ $(".selectable").attr('checked', $(this).is(':checked')).each(function(){
19
+ if ($(this).is(':checked')) {
20
+ $(this).parents('tr').addClass('selected');
21
+ } else {
22
+ $(this).parents('tr').removeClass('selected');
23
+ }
24
+ });
25
+ });
8
26
  });
@@ -36,4 +36,19 @@ module LayoutHelper
36
36
  def style_image_tag(name,args={})
37
37
  image_tag("styles/#{CONFIG[:default_style]}/#{name}",args)
38
38
  end
39
+
40
+ #Show search informations
41
+ def page_entries_info(collection, singular_model_name, plural_model_name=nil)
42
+ html = ""
43
+ html << content_tag(:div, nil, :class => "separator")
44
+ html << content_tag(:span, :class => "page_info") do
45
+ if collection.any?
46
+ t(:search_found, :found => pluralize(collection.total_count, singular_model_name, (plural_model_name || singular.pluralize)))
47
+ else
48
+ t(:search_not_found)
49
+ end
50
+ end
51
+ html << content_tag(:div, nil, :class => "separator")
52
+ html.html_safe
53
+ end
39
54
  end
@@ -1,4 +1,4 @@
1
- # Additional translations at http://github.com/plataformatec/devise/wiki/I18n
1
+ # Additional translations at https://github.com/plataformatec/devise/wiki/I18n
2
2
 
3
3
  en:
4
4
  errors:
@@ -181,7 +181,7 @@ en:
181
181
  submit:
182
182
  create: "Create %{model}"
183
183
  update: "Update %{model}"
184
- submit: "Save %{model}"
184
+ submit: "Proceed"
185
185
 
186
186
  activerecord: &activerecord
187
187
  models: &models
@@ -190,10 +190,7 @@ en:
190
190
  created_at: "Created at"
191
191
  updated_at: "Updated at"
192
192
  #Attributes zone - do not remove
193
- helpers:
194
- submit:
195
- create: "Create %{model}"
196
- update: "Update %{model}"
193
+
197
194
  formtastic:
198
195
  titles:
199
196
  labels:
@@ -202,6 +199,7 @@ en:
202
199
  actions: &actions
203
200
  create: "Create %{model}"
204
201
  update: "Save changes"
202
+ submit: "Proceed"
205
203
  authentication:
206
204
  sign_in: "Sign in"
207
205
  sign_in_with: "Sign in with"
@@ -225,9 +223,18 @@ en:
225
223
  permission_denied: "You don't have authorization to perform this request."
226
224
  created: "%{model} was successfully created."
227
225
  created_ko: "An error prohibited %{model} to be created."
226
+ created_multiple: "%{model} were successfully created."
227
+ created_multiple_ko: "An error prohibited %{model} to be created."
228
228
  updated: "%{model} was successfully updated."
229
229
  updated_ko: "An error prohibited %{model} to be updated."
230
+ updated_multiple: "%{model} were successfully updated."
231
+ updated_multiple_ko: "An error prohibited %{model} to be updated."
230
232
  deleted: "%{model} was successfully deleted."
233
+ deleted_multiple: "%{model} were successfully deleted."
234
+ deleted_multiple_ko: "An error prohibited %{model} to be deleted."
235
+ search_found: "%{found} found"
236
+ search_not_found: "The search did not get any results"
237
+ select_rows_from_list: "Select the rows from the list before proceeding"
231
238
 
232
239
  <<: *activerecord
233
240
  <<: *actions
@@ -179,7 +179,7 @@ it:
179
179
  submit:
180
180
  create: "Crea %{model}"
181
181
  update: "Aggiorna %{model}"
182
- submit: "Salva %{model}"
182
+ submit: "Procedi"
183
183
 
184
184
  activerecord: &activerecord
185
185
  models: &models
@@ -228,6 +228,7 @@ it:
228
228
  actions: &actions
229
229
  create: "Crea %{model}"
230
230
  update: "Aggiorna"
231
+ submit: "Procedi"
231
232
  authentication:
232
233
  sign_in: "Accedi"
233
234
  sign_in_with: "Accedi con"
@@ -252,9 +253,18 @@ it:
252
253
  permission_denied: "Non hai i privilegi per svolgere questa operazione."
253
254
  created: "L'oggetto %{model} è stato creato correttamente."
254
255
  created_ko: "Un errore ha impedito la creazione dell'oggetto %{model}."
256
+ created_multiple: "La creazione di %{model} è stata completata con successo."
257
+ created_multiple_ko: "Un errore ha impedito la creazione di %{model}."
255
258
  updated: "L'oggetto %{model} è stato modificato correttamente."
256
259
  updated_ko: "Un errore ha impedito la modifica dell'oggetto %{model}."
260
+ updated_multiple: "La modifica di %{model} è avvenuta con successo."
261
+ updated_multiple_ko: "Un errore ha impedito la modifica di %{model}."
257
262
  deleted: "L'oggetto %{model} è stato eliminato."
263
+ deleted_multiple: "L'eliminazione di %{model} è avvenuta con successo."
264
+ deleted_multiple_ko: "Un errore ha impedito l'eliminazione di %{model}."
265
+ search_found: "La ricerca ha trovato %{found}"
266
+ search_not_found: "La ricerca non ha ottenuto risultati"
267
+ select_rows_from_list: "Seleziona le righe dalla lista prima di procedere"
258
268
 
259
269
  <<: *activerecord
260
270
  <<: *actions
@@ -173,12 +173,14 @@ div.navigation
173
173
  &.small
174
174
  font-size: 0.85em
175
175
  font-weight: bold
176
- color: $second_color
177
- height: 40px
178
- width: 150px
179
- background: transparent url($style_path + '/bg_but_gray.png') no-repeat
176
+ color: white
177
+ height: 49px
178
+ width: 120px
179
+ padding-top: 0
180
+ background: transparent url($style_path + '/button_120_98.png') no-repeat
180
181
  &:hover
181
- background-position: 0px -40px
182
+ color: #aaa
183
+ background-position: 0px -49px
182
184
 
183
185
  &.medium
184
186
  font-size: 1.05em
@@ -267,7 +269,7 @@ table.user
267
269
  color: $text_color
268
270
  //background-color: $main_bg
269
271
  color: $title_color
270
- padding: 0.2em 0.4em
272
+ padding: 2px
271
273
  text-align: left
272
274
  &.main
273
275
  font-weight: bold
@@ -286,13 +288,16 @@ table.user
286
288
  line-height: 1.2em
287
289
  height: 2.5em
288
290
  &.odd
289
- //background-color: $main_bg
291
+ &.selected
292
+ background-color: darken($table_row_selection_color, 5%)
293
+ &:hover
294
+ background-color: $table_row_selection_color
290
295
  &.even
291
296
  background-color: darken($main_bg, 2%)
292
- &:hover
293
- background-color: $table_row_selection_color
294
- &.selected
295
- background-color: darken($table_row_selection_color, 20%)
297
+ &.selected
298
+ background-color: darken($table_row_selection_color, 7%)
299
+ &:hover
300
+ background-color: darken($table_row_selection_color, 2%)
296
301
 
297
302
  td
298
303
  padding: 2px
@@ -303,7 +308,7 @@ table.user
303
308
  text-align:center
304
309
 
305
310
  .separator
306
- margin: 1em 0
311
+ margin: 0.7em 0
307
312
  border-bottom: 1px dashed lighten($second_color, 30%)
308
313
 
309
314
  //Navigation section
@@ -21,7 +21,15 @@ module Rails
21
21
  route_config << plural_parent_resources.map{|m| "resources :#{m} do " }.join(" ") if nested?
22
22
  route_config << base_namespaces.map{|m| "namespace :#{m} do " }.join(" ") if leospaced?
23
23
  route_config << regular_class_path.map{|m| "namespace :#{m} do " }.join(" ")
24
- route_config << "resources :#{file_name.pluralize}"
24
+ route_config << <<-FILE.gsub(/^ /, '')
25
+ resources :#{file_name.pluralize} do
26
+ post :select, :on => :collection
27
+ post :edit_multiple, :on => :collection
28
+ put :update_multiple, :on => :collection
29
+ post :copy, :on => :collection
30
+ put :create_multiple, :on => :collection
31
+ end
32
+ FILE
25
33
  route_config << " end" * (regular_class_path.size + plural_parent_resources.size + base_namespaces.size)
26
34
  route route_config
27
35
  end
@@ -45,6 +45,8 @@ module Rails
45
45
  end
46
46
  content << " op_new: \"New #{singular_table_name}\"#{CRLF}"
47
47
  content << " op_edit: \"Editing #{singular_table_name}\"#{CRLF}"
48
+ content << " op_edit_multiple: \"Editing #{plural_table_name}\"#{CRLF}"
49
+ content << " op_copy: \"Creating new #{plural_table_name}\"#{CRLF}"
48
50
  if nested?
49
51
  content << " op_index: \"Listing #{plural_table_name} belongings to %{parent} %{name}\"#{CRLF}"
50
52
  else
@@ -129,6 +129,16 @@ end
129
129
  end
130
130
  end
131
131
 
132
+ def create_multiple
133
+ respond_to do |format|
134
+ if <%= class_name %>.create(params[:<%= plural_table_name %>].values)
135
+ format.html { redirect_to <%= list_resources_path %>, :notice => I18n.t(:created_multiple, :model => I18n.t('models.<%= plural_table_name %>')) }
136
+ else
137
+ format.html { render :action => "copy" }
138
+ end
139
+ end
140
+ end
141
+
132
142
  # PUT <%= route_url %>/1
133
143
  # PUT <%= route_url %>/1.json
134
144
  def update
@@ -145,6 +155,16 @@ end
145
155
  end
146
156
  end
147
157
 
158
+ def update_multiple
159
+ respond_to do |format|
160
+ if <%= class_name %>.update(params[:<%= plural_table_name %>].keys, params[:<%= plural_table_name %>].values)
161
+ format.html { redirect_to <%= list_resources_path %>, :notice => I18n.t(:updated_multiple, :model => I18n.t('models.<%= plural_table_name %>')) }
162
+ else
163
+ format.html { render :action => "edit_multiple" }
164
+ end
165
+ end
166
+ end
167
+
148
168
  # DELETE <%= route_url %>/1
149
169
  # DELETE <%= route_url %>/1.json
150
170
  def destroy
@@ -158,6 +178,54 @@ end
158
178
  end
159
179
  end
160
180
 
181
+ def select
182
+ if params[:ids]
183
+ @<%= plural_table_name %> = <%= class_name %>.where("#{<%= class_name %>.table_name}.id" => params[:ids]).order("#{<%= class_name %>.table_name}.id")
184
+ @operation = case params[:commit].downcase
185
+ when I18n.t(:destroy).downcase then :destroy
186
+ when I18n.t(:edit).downcase then :edit
187
+ when I18n.t(:copy).downcase then :copy
188
+ else :unknown_request
189
+ end
190
+ @results = {}
191
+ @<%= plural_table_name %>.each do |<%= singular_table_name %>|
192
+ begin
193
+ case @operation
194
+ when :destroy
195
+ <%= orm_instance.destroy %>
196
+ @results[<%= singular_table_name %>.id] = [true, I18n.t(:deleted, :model => I18n.t('models.<%= singular_table_name %>'))]
197
+ when :edit
198
+ @results[<%= singular_table_name %>.id] = [true, ""]
199
+ when :copy
200
+ @results[<%= singular_table_name %>.id] = [true, ""]
201
+ else
202
+ raise I18n.t(@operation)
203
+ end
204
+ rescue
205
+ @results[<%= singular_table_name %>.id] = [false, $!.message]
206
+ end
207
+ end
208
+
209
+ respond_to do |format|
210
+ format.js
211
+ format.html do
212
+ case @operation
213
+ when :destroy
214
+ redirect_to <%= list_resources_path %> and return
215
+ when :edit
216
+ render :edit_multiple and return
217
+ when :copy
218
+ render :copy and return
219
+ else
220
+ redirect_to root_path, :alert => I18n.t(:unknown_request) and return
221
+ end
222
+ end
223
+ end
224
+ else
225
+ redirect_to <%= list_resources_path %>, :alert => I18n.t(:select_rows_from_list) and return
226
+ end
227
+ end
228
+
161
229
  private
162
230
  def sort_direction
163
231
  %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leonardo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
5
- prerelease:
4
+ hash: 62196241
5
+ prerelease: 6
6
6
  segments:
7
7
  - 1
8
- - 8
9
- - 4
10
- version: 1.8.4
8
+ - 9
9
+ - 0
10
+ - beta
11
+ - 1
12
+ version: 1.9.0.beta1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Marco Mastrodonato
@@ -15,7 +17,7 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2011-11-09 00:00:00 Z
20
+ date: 2011-11-30 00:00:00 Z
19
21
  dependencies: []
20
22
 
21
23
  description: A generator for creating Rails 3.1 applications ready to go. It generates the layout, the style, the internationalization and manage external gems for authentication, authorization and other. It also provides a customized scaffold to generates cool sites ajax ready in few minutes. If you find a bug please report to m.mastrodonato@gmail.com
@@ -28,20 +30,29 @@ extra_rdoc_files: []
28
30
 
29
31
  files:
30
32
  - lib/generators/erb/leosca/leosca_generator.rb
33
+ - lib/generators/erb/leosca/templates/copy.html.erb
31
34
  - lib/generators/erb/leosca/templates/destroy.js.erb
32
35
  - lib/generators/erb/leosca/templates/edit.html.erb
36
+ - lib/generators/erb/leosca/templates/edit_multiple.html.erb
37
+ - lib/generators/erb/leosca/templates/formtastic/_fields.html.erb
33
38
  - lib/generators/erb/leosca/templates/formtastic/_form.html.erb
39
+ - lib/generators/erb/leosca/templates/formtastic/_form_multiple.html.erb
34
40
  - lib/generators/erb/leosca/templates/index.html.erb
35
41
  - lib/generators/erb/leosca/templates/index.js.erb
36
42
  - lib/generators/erb/leosca/templates/new.html.erb
43
+ - lib/generators/erb/leosca/templates/select.js.erb
37
44
  - lib/generators/erb/leosca/templates/show.html.erb
38
45
  - lib/generators/erb/leosca/templates/show.js.erb
46
+ - lib/generators/erb/leosca/templates/_fields.html.erb
39
47
  - lib/generators/erb/leosca/templates/_form.html.erb
48
+ - lib/generators/erb/leosca/templates/_form_multiple.html.erb
40
49
  - lib/generators/erb/leosca/templates/_list.erb
50
+ - lib/generators/erb/leosca/templates/_row_index.html.erb
41
51
  - lib/generators/erb/leosca/templates/_show.erb
42
52
  - lib/generators/leolay/install_generator.rb
43
53
  - lib/generators/leolay/leolay_generator.rb
44
54
  - lib/generators/leolay/templates/app/assets/javascripts/custom.js
55
+ - lib/generators/leolay/templates/app/helpers/layout_helper.rb
45
56
  - lib/generators/leolay/templates/app/views/devise/confirmations/new.html.erb
46
57
  - lib/generators/leolay/templates/app/views/devise/mailer/confirmation_instructions.html.erb
47
58
  - lib/generators/leolay/templates/app/views/devise/mailer/reset_password_instructions.html.erb
@@ -60,7 +71,6 @@ files:
60
71
  - lib/generators/leolay/templates/config/locales/kaminari.en.yml
61
72
  - lib/generators/leolay/templates/config/locales/kaminari.it.yml
62
73
  - lib/generators/leolay/templates/config.rb
63
- - lib/generators/leolay/templates/layout_helper.rb
64
74
  - lib/generators/leolay/templates/lib/utility.rb
65
75
  - lib/generators/leolay/templates/spec/factories.rb
66
76
  - lib/generators/leolay/templates/spec/helpers/application_helpers_spec.rb
@@ -83,8 +93,8 @@ files:
83
93
  - lib/generators/leolay/templates/styles/cloudy/images/kaminari/nav.png
84
94
  - lib/generators/leolay/templates/styles/cloudy/images/style/arrow_down.png
85
95
  - lib/generators/leolay/templates/styles/cloudy/images/style/arrow_up.png
86
- - lib/generators/leolay/templates/styles/cloudy/images/style/bg_but_gray.png
87
96
  - lib/generators/leolay/templates/styles/cloudy/images/style/bg_top.png
97
+ - lib/generators/leolay/templates/styles/cloudy/images/style/button_120_98.png
88
98
  - lib/generators/leolay/templates/styles/cloudy/images/style/button_170_126.png
89
99
  - lib/generators/leolay/templates/styles/cloudy/images/style/button_229_170.png
90
100
  - lib/generators/leolay/templates/styles/cloudy/images/style/ico_back.png
@@ -95,6 +105,7 @@ files:
95
105
  - lib/generators/leolay/templates/styles/cloudy/images/style/logo.png
96
106
  - lib/generators/leolay/templates/styles/cloudy/images/style/msg_error.gif
97
107
  - lib/generators/leolay/templates/styles/cloudy/images/style/msg_notice.gif
108
+ - lib/generators/leolay/templates/styles/cloudy/images/style/Thumbs.db
98
109
  - lib/generators/leolay/templates/styles/cloudy/stylesheets/app/stylesheet.sass
99
110
  - lib/generators/leolay/templates/styles/cloudy/stylesheets/vendor/jquery-ui/jquery-ui-1.8.16.redcarpet.css
100
111
  - lib/generators/leolay/templates/styles/cloudy/views/kaminari/_next_page.html.erb
@@ -155,14 +166,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
166
  required_rubygems_version: !ruby/object:Gem::Requirement
156
167
  none: false
157
168
  requirements:
158
- - - ">="
169
+ - - ">"
159
170
  - !ruby/object:Gem::Version
160
- hash: 3
171
+ hash: 25
161
172
  segments:
162
- - 0
163
- version: "0"
164
- requirements: []
165
-
173
+ - 1
174
+ - 3
175
+ - 1
176
+ version: 1.3.1
177
+ requirements:
178
+ - Start a new app with the template.rb from github or inside root folder
166
179
  rubyforge_project:
167
180
  rubygems_version: 1.8.9
168
181
  signing_key: