ideyabox 0.1.0 → 0.1.2

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 (24) hide show
  1. data/app/assets/javascripts/default.js +26 -1
  2. data/app/assets/stylesheets/default.scss.erb +74 -2
  3. data/app/helpers/admin_helper.rb +29 -46
  4. data/ideyabox.gemspec +1 -0
  5. data/lib/generators/ideyabox/.DS_Store +0 -0
  6. data/lib/generators/ideyabox/admin/admin_generator.rb +3 -1
  7. data/lib/generators/ideyabox/admin/templates/locales/ru.yml +1 -1
  8. data/lib/generators/ideyabox/admin/templates/views/layouts/admin.html.haml +1 -0
  9. data/lib/generators/ideyabox/images_scaffold/.DS_Store +0 -0
  10. data/lib/generators/ideyabox/images_scaffold/images_scaffold_generator.rb +182 -0
  11. data/lib/generators/ideyabox/images_scaffold/templates/.DS_Store +0 -0
  12. data/lib/generators/ideyabox/images_scaffold/templates/controllers/controller.rb +45 -0
  13. data/lib/generators/ideyabox/images_scaffold/templates/uploader.rb +55 -0
  14. data/lib/generators/ideyabox/images_scaffold/templates/views/_image.html.haml +10 -0
  15. data/lib/generators/ideyabox/images_scaffold/templates/views/_images.html.haml +8 -0
  16. data/lib/generators/ideyabox/images_scaffold/templates/views/create.js.haml +4 -0
  17. data/lib/generators/ideyabox/images_scaffold/templates/views/destroy.js.haml +1 -0
  18. data/lib/generators/ideyabox/images_scaffold/templates/views/edit.html.haml +29 -0
  19. data/lib/generators/ideyabox/scaffold/templates/_index.html.haml +1 -1
  20. data/lib/generators/ideyabox/scaffold/templates/controllers/controller.rb +13 -13
  21. data/lib/generators/ideyabox/scaffold/templates/edit.html.haml +2 -2
  22. data/lib/generators/ideyabox/scaffold/templates/index.html.haml +1 -1
  23. data/lib/ideyabox/version.rb +1 -1
  24. metadata +28 -2
@@ -8,6 +8,7 @@
8
8
  //= require jquery.ui.nestedSortable
9
9
  //= require chosen.jquery.js
10
10
 
11
+ //
11
12
  $(document).ready(function(){
12
13
  $(".chosen_select").chosen();
13
14
  $('.pagination').hide();
@@ -17,7 +18,7 @@ $(document).ready(function(){
17
18
  return false;
18
19
  });
19
20
 
20
- $('.visibility a').live('click', function(e){
21
+ $('.visibility a, .toggleshow').live('click', function(e){
21
22
  e.preventDefault();
22
23
  $(this).find('i').toggleClass('icon-eye-open').toggleClass('icon-eye-close not-work');
23
24
 
@@ -32,4 +33,28 @@ $(document).ready(function(){
32
33
  });
33
34
  e.preventDefault();
34
35
  });
36
+
37
+ $('.image_upload_form form').fileupload({
38
+ dataType: "script",
39
+ add: function (e, data) {
40
+ types = /(\.|\/)(gif|jpe?g|png)$/i;
41
+ file = data.files[0];
42
+ if (types.test(file.type) || types.test(file.name)) {
43
+ data.context = $(tmpl("template-upload", data.files[0]));
44
+ $(".image_upload_form form").append(data.context);
45
+ data.submit();
46
+ } else {
47
+ alert(file.name + " is not a gif, jpeg, ot png image file");
48
+ }
49
+ },
50
+ progress: function (e, data) {
51
+ if (data.context !== null) {
52
+ progress = parseInt(data.loaded / data.total * 100, 10);
53
+ data.context.find('.bar').css('width', progress + '%');
54
+ }
55
+ },
56
+ done: function (e, data) {
57
+ data.context.html('<span>Загрузка файла <strong>\'' + file.name + '\'</strong> завершена.</span>');
58
+ }
59
+ });
35
60
  });
@@ -16,7 +16,7 @@ $active_color:#C4FFCB;
16
16
  $border_color:#d4d4d4;
17
17
  $shadows: rgb(150,150,150);
18
18
 
19
- html {overflow-y:scroll;}
19
+ html {overflow-y:scroll;width: 100%;}
20
20
  body {width: 100%;
21
21
  background: $bodycolor url(<%= asset_path 'admin/background-image.png' %>);
22
22
 
@@ -62,6 +62,7 @@ a.del {
62
62
  border-radius: 20px;
63
63
  background:$deepgreen;
64
64
  }
65
+ form {width:100%;}
65
66
  table {
66
67
  width:100%;
67
68
  border-collapse:collapse;
@@ -69,6 +70,7 @@ table {
69
70
 
70
71
  tr {
71
72
  //&:first-child {border-top:1px solid $border_color;}
73
+ width:100%;
72
74
  border-top:1px solid $border_color;
73
75
  border-bottom:1px solid $border_color;
74
76
  }
@@ -160,7 +162,15 @@ ul.horizontal_items {
160
162
  span {display:none;}
161
163
  }
162
164
  }
163
-
165
+ textarea {
166
+ width:100%;
167
+ }
168
+ img {
169
+ max-width:100%;
170
+ }
171
+ .clear {
172
+ clear:both;
173
+ }
164
174
  #launchbar {
165
175
  background: $deepgreen;overflow: hidden;position: relative;text-align: left;z-index: 9999;padding: 0 3%;
166
176
  -webkit-box-shadow: 0 0 5px $shadows;
@@ -407,4 +417,66 @@ html.login {
407
417
  margin:0 0 5px 0;
408
418
  input {width:100%}
409
419
  }
420
+ }
421
+ @mixin gradient($top, $bottom) {
422
+ background: $top;
423
+ background: -moz-linear-gradient(top, $top 0%, $bottom 100%);
424
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom));
425
+ background: -webkit-linear-gradient(top, $top 0%,$bottom 100%);
426
+ background: -o-linear-gradient(top, $top 0%,$bottom 100%);
427
+ background: -ms-linear-gradient(top, $top 0%,$bottom 100%);
428
+ background: linear-gradient(to bottom, $top 0%,$bottom 100%);
429
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#5eb6ff', endColorstr='#006ed6',GradientType=0 );
430
+ }
431
+ .image-list li{
432
+ display:inline-block;
433
+ width:47%;
434
+ margin:3px 0.5%;
435
+ padding:0;
436
+ position:relative;
437
+ border:1px solid grey;
438
+ .image_control_panel {
439
+ position:absolute;
440
+ bottom:0;
441
+ height:2.5em;
442
+ background:rgba(255,255,255,0.7);
443
+ width:100%;
444
+ }
445
+ img {width:100%;}
446
+ a {
447
+ &.delete_image {
448
+ color:#000;
449
+ position:absolute;
450
+ right:0;
451
+ bottom:0;
452
+ &:hover {
453
+ color:red;
454
+ }
455
+ }
456
+ &.toggleshow {
457
+ color:#000;
458
+ position:absolute;
459
+ left:0;
460
+ bottom:0;
461
+ .icon-eye-close {
462
+ color:#000;
463
+ }
464
+ &:hover {
465
+ color:#53B75F;
466
+ }
467
+ }
468
+ }
469
+ }
470
+
471
+ .upload {
472
+ strong {color:#1B7726;}
473
+ margin-bottom:0.5em;
474
+ }
475
+ .progress {
476
+ border:1px solid grey;
477
+ background:#E6E6E6;
478
+ }
479
+ .bar {
480
+ @include gradient(#53B75F, #1B7726);
481
+ height: 10px;
410
482
  }
@@ -37,11 +37,11 @@ module AdminHelper
37
37
  url_for :only_path => false, :params => params.merge(overwrite)
38
38
  end
39
39
 
40
- def photo_sortable
40
+ def image_sortable
41
41
  %Q{
42
42
  <script type="text/javascript">
43
43
  $(document).ready(function() {
44
- $('#photo-list').sortable( {
44
+ $('.image-list').sortable( {
45
45
  start: function(){$(this).find("a:not(.del)").unbind("click")},
46
46
  stop: function(){lightBox.reload()},
47
47
  dropOnEmpty: false,
@@ -52,9 +52,9 @@ module AdminHelper
52
52
  update: function() {
53
53
  $.ajax( {
54
54
  type: 'post',
55
- data: $('#photo-list').sortable('serialize') + '&authenticity_token=#{u(form_authenticity_token)}',
55
+ data: $('.image-list').sortable('serialize') + '&authenticity_token=#{u(form_authenticity_token)}',
56
56
  dataType: 'script',
57
- url: '#{sort_admin_content_images_path(:auth_token => current_user.authentication_token)}'})
57
+ url: '#{sort_admin_post_images_path(:auth_token => current_user.authentication_token)}'})
58
58
  }
59
59
  });
60
60
  });
@@ -62,49 +62,32 @@ module AdminHelper
62
62
  }.gsub(/[\n ]+/, ' ').strip.html_safe
63
63
  end
64
64
 
65
- def content_images_uploadify(resource)
66
- url = ""
67
- url = "#{admin_content_images_path(:auth_token => current_user.authentication_token)}"
68
- datatype = 'content_image[image]'
69
- session_key_name = Rails.application.config.session_options[:key]
70
- %Q{
71
- <script type='text/javascript'>
72
- $('#photo_upload').uploadify({
73
- script : '#{raw(url)}',
74
- fileDataName : '#{datatype}',
75
- uploader : '/assets/uploadify/uploadify.swf',
76
- cancelImg : '/assets/uploadify/cancel.png',
77
- fileDesc : 'Images',
78
- fileExt : '*.png;*.jpg;*.gif',
79
- sizeLimit : #{10.megabytes},
80
- queueSizeLimit : 24,
81
- multi : true,
82
- auto : true,
83
- buttonText : 'Add photo',
84
- buttonImg : '/assets/admin/addphoto.png',
85
- width : 202,
86
- height : 42,
87
- scriptData : {
88
- '_http_accept': 'application/javascript',
89
- '#{session_key_name}' : encodeURIComponent('#{u(cookies[session_key_name])}'),
90
- 'authenticity_token' : encodeURIComponent('#{u(form_authenticity_token)}'),
91
- 'content_id' : encodeURIComponent('#{resource.slug}')
92
- },
93
- onComplete : function(a, b, c, response){ eval(response); },
94
- onError : function (a, b, c, d) {
95
- if (d.status == 404)
96
- alert('Could not find upload script. Use a path relative to: '+'<?= getcwd() ?>');
97
- else if (d.type === "HTTP")
98
- console.log(d);
99
- else if (d.type ==="File Size")
100
- alert(c.name+' '+d.type+' Limit: '+Math.round(d.sizeLimit/1024)+'KB');
101
- else
102
- alert('error '+d.type+": "+d.text);
103
- }
104
- });
105
- </script>
65
+ def upload_form(parent, image)
66
+ new_image = image.new
67
+ undercored_image = image.to_s.underscore
68
+ form_for [:admin, parent, new_image], :id => "upload_form" do |f|
69
+ f.file_field :image, multiple: true, name: "#{undercored_image}[image]"
70
+ end
71
+ end
106
72
 
107
- }.gsub(/[\n ]+/, ' ').strip.html_safe
73
+ def upload_script
74
+ html = ''
75
+ html << "<script id='template-upload' type=\"text/x-tmpl\">"
76
+ html << "<div class='upload'>"
77
+ html << '{%= o.name %}'
78
+ html << "<div class='progress'>"
79
+ html << "<div class='bar' style=\"width: 0%\">"
80
+ html << "</div></div></div></script>"
81
+ return raw html
108
82
  end
109
83
 
84
+ def uploader(parent, image)
85
+ html = ''
86
+ html << "#{upload_form(parent, image)}"
87
+ html << "#{upload_script}"
88
+ return raw html
89
+ end
90
+
91
+
92
+
110
93
  end
data/ideyabox.gemspec CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.add_dependency "kaminari"
21
21
  gem.add_dependency "haml", ">= 3.1.6"
22
22
  gem.add_dependency "devise"
23
+ gem.add_dependency "jquery-fileupload-rails"
23
24
  gem.add_dependency "mini_magick"
24
25
  gem.add_dependency "sexy_validators", ">=0.0.5"
25
26
  gem.add_development_dependency "haml-rails", ">= 0.3.4"
Binary file
@@ -31,7 +31,9 @@ module Ideyabox
31
31
  gem_group :development do
32
32
  gem 'haml-rails'
33
33
  end
34
-
34
+ gem_group :assets do
35
+ gem "jquery-fileupload-rails"
36
+ end
35
37
  inside Rails.root do
36
38
  run "bundle install"
37
39
  end
@@ -6,7 +6,7 @@ ru:
6
6
  flash:
7
7
  notice:
8
8
  was_added: "добавлен"
9
- was_edited: "обновлен"
9
+ was_updated: "обновлен"
10
10
  was_deleted: "удален"
11
11
  confirm:
12
12
  delete: "Точно удалить?"
@@ -27,6 +27,7 @@
27
27
  = yield(:page_sidebar)
28
28
  #content
29
29
  = yield
30
+ .clear
30
31
  #previews
31
32
  = yield(:preview)
32
33
  = debug(params) if Rails.env == "development"
@@ -0,0 +1,182 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/generated_attribute'
3
+
4
+ module Ideyabox
5
+ module Generators
6
+ class ImagesScaffoldGenerator < ::Rails::Generators::Base
7
+ source_root File.expand_path('../templates', __FILE__)
8
+ argument :controller_path, :type => :string
9
+ argument :model_name, :type => :string, :required => false
10
+ argument :layout, :type => :string, :default => "application",
11
+ :banner => "Specify application layout"
12
+
13
+ def initialize(args, *options)
14
+ super(args, *options)
15
+ initialize_views_variables
16
+ end
17
+
18
+ def copy_views
19
+ generate_views
20
+ end
21
+
22
+ def add_locale_templates
23
+ add_to_locales
24
+ end
25
+
26
+ def add_resources_and_root
27
+ add_resource_route
28
+ end
29
+
30
+ def add_to_parent_view
31
+ final_string = "\n- content_for(:page_sidebar) do\n - unless @#{parent_name}.new_record?\n = render 'admin/#{plural_resource_name}/#{plural_resource_name}'\n"
32
+
33
+ inject_into_file "app/views/admin/#{plural_parent_name}/edit.html.haml", final_string, :before => "- content_for :page_header do"
34
+
35
+ end
36
+
37
+ def updating_models
38
+ inject_into_file "app/models/#{parent_name}.rb", "\n has_many :#{plural_resource_name}", :after => "class #{parent_name.capitalize} < ActiveRecord::Base"
39
+ inject_into_file "app/models/#{resource_name}.rb", "\n belongs_to :#{parent_name}\n mount_uploader :image, #{@model_name.demodulize}Uploader", :after => "class #{@model_name.demodulize} < ActiveRecord::Base"
40
+ end
41
+
42
+ protected
43
+
44
+ def initialize_views_variables
45
+ @base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(controller_path)
46
+ @controller_routing_path = @controller_file_path.gsub(/\//, '_')
47
+ @model_name = @controller_class_nesting + "::#{@base_name.singularize.camelize}" unless @model_name
48
+ @model_name = @model_name.camelize
49
+ end
50
+
51
+ def controller_routing_path
52
+ @controller_routing_path
53
+ end
54
+
55
+ def singular_controller_routing_path
56
+ @controller_routing_path.singularize
57
+ end
58
+
59
+ def model_name
60
+ @model_name
61
+ end
62
+
63
+ def plural_model_name
64
+ @model_name.pluralize
65
+ end
66
+
67
+ def resource_name
68
+ @model_name.demodulize.underscore
69
+ end
70
+
71
+ def parent_name
72
+ resource_name.split("_").first
73
+ end
74
+
75
+ def plural_parent_name
76
+ parent_name.pluralize
77
+ end
78
+
79
+ def plural_resource_name
80
+ resource_name.pluralize
81
+ end
82
+
83
+ def sort_priority(column_name)
84
+ case column_name
85
+ when "position" then 1
86
+ when "visible" then 2
87
+ when "name" then 3
88
+ when "title" then 3
89
+ else 5
90
+ end
91
+ end
92
+
93
+ def columns
94
+ begin
95
+ excluded_column_names = %w[id created_at updated_at]
96
+ @model_name.constantize.columns.reject{|c| excluded_column_names.include?(c.name) || c.name.index("_id") }.sort{|a, b| sort_priority(a.name) <=> sort_priority(b.name)}.collect{|c| ::Rails::Generators::GeneratedAttribute.new(c.name, c.type)}
97
+ rescue NoMethodError
98
+ @model_name.constantize.fields.collect{|c| c[1]}.reject{|c| excluded_column_names.include?(c.name) || c.name.index("_id") }.collect{|c| ::Rails::Generators::GeneratedAttribute.new(c.name, c.type.to_s)}
99
+ end
100
+ end
101
+
102
+ def column_names
103
+ @model_name.constantize.column_names
104
+ end
105
+
106
+ def extract_modules(name)
107
+ modules = name.include?('/') ? name.split('/') : name.split('::')
108
+ name = modules.pop
109
+ path = modules.map { |m| m.underscore }
110
+ file_path = (path + [name.underscore]).join('/')
111
+ nesting = modules.map { |m| m.camelize }.join('::')
112
+ [name, path, file_path, nesting, modules.size]
113
+ end
114
+
115
+ def generate_views
116
+ views = {
117
+ "views/edit.html.#{ext}" => "app/views/admin/#{@controller_file_path}/edit.html.#{ext}",
118
+ "views/_image.html.#{ext}" => "app/views/admin/#{@controller_file_path}/_#{resource_name}.html.#{ext}",
119
+ "views/_images.html.#{ext}" => "app/views/admin/#{@controller_file_path}/_#{plural_resource_name}.html.#{ext}",
120
+ "views/create.js.haml" => "app/views/admin/#{@controller_file_path}/create.js.haml",
121
+ "views/destroy.js.haml" => "app/views/admin/#{@controller_file_path}/destroy.js.haml",
122
+ "uploader.rb" => "app/uploaders/#{resource_name}_uploader.rb"
123
+
124
+ }
125
+ views.delete("_sort_buttons.html.#{ext}") unless column_names.include?("position")
126
+ selected_views = views
127
+ options.engine == generate_erb(selected_views)
128
+ end
129
+
130
+ def generate_erb(views)
131
+ views.each do |template_name, output_path|
132
+ template template_name, output_path
133
+ end
134
+ generate_controller
135
+ end
136
+
137
+ def ext
138
+ :haml
139
+ end
140
+
141
+ def generate_controller
142
+ template "controllers/controller.rb", "app/controllers/admin/#{plural_resource_name}_controller.rb"
143
+ end
144
+
145
+ def add_resource_route
146
+ resources_string = "\n resources :#{plural_resource_name} do\n"
147
+ sort_string = " post \"sort\", :on => :collection\n"
148
+ toggleshow_string = " get \"toggleshow\", :on => :member\n"
149
+
150
+ if column_names.include?("visible") && column_names.include?("position")
151
+ final_string = "#{resources_string}#{sort_string}#{toggleshow_string} end\n"
152
+ elsif column_names.include?("visible")
153
+ final_string = "#{resources_string}#{toggleshow_string} end\n"
154
+ elsif column_names.include?("position")
155
+ final_string = "#{resources_string}#{sort_string} end\n"
156
+ else
157
+ final_string = "\n resources :#{plural_resource_name}\n"
158
+ end
159
+
160
+ inject_into_file "config/routes.rb", final_string, :after => "\n namespace :admin do\n"
161
+ inject_into_file "config/routes.rb", "\n resources :#{plural_resource_name}\n", :after => "\n resources :#{plural_parent_name} do"
162
+ end
163
+
164
+ def add_to_locales
165
+ locales = [:ru, :en]
166
+
167
+ attributes = column_names.collect {|column| " #{column}: \"#{column}\"\n"}
168
+
169
+ attributes_string = " #{resource_name}:\n#{attributes.join}"
170
+
171
+ locales.each do |locale|
172
+ inject_into_file "config/locales/#{locale}.yml", " #{resource_name}: \"#{resource_name}\"\n", :after => "models:\n"
173
+ inject_into_file "config/locales/#{locale}.yml", attributes_string, :after => "attributes:\n"
174
+ end
175
+ end
176
+
177
+
178
+
179
+
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,45 @@
1
+ #coding: utf-8
2
+ class Admin::<%= @model_name.demodulize.pluralize -%>Controller < Admin::ApplicationController
3
+
4
+ <%- if column_names.include?("visible") -%>
5
+ def toggleshow
6
+ @<%= plural_resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
7
+ @<%= plural_resource_name %>.toggle(:visible)
8
+ @<%= plural_resource_name %>.save
9
+ render :nothing => true
10
+ end
11
+ <%- end -%><%- if column_names.include?("position") -%>
12
+ def sort
13
+ params[:<%= resource_name %>].each_with_index do |id, idx|
14
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(id)
15
+ @<%= resource_name %>.position = idx
16
+ @<%= resource_name %>.save
17
+ end
18
+ render :nothing => true
19
+ end
20
+ <%- end -%>
21
+
22
+ def edit
23
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
24
+ end
25
+
26
+ def create
27
+ @<%= parent_name %> = <%= parent_name.capitalize -%>.find(params[:<%= parent_name %>_id])
28
+ @<%= resource_name %> = @<%= parent_name %>.<%= plural_resource_name %>.create(params[:<%= resource_name %>])
29
+ end
30
+
31
+ def update
32
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
33
+ if @<%= resource_name %>.update_attributes(params[:<%= resource_name %>])
34
+ redirect_to admin_<%= plural_resource_name %>_path, :notice => "#{<%= @model_name.demodulize %>.model_name.human} #{t 'flash.notice.was_updated'}"
35
+ else
36
+ render 'edit'
37
+ end
38
+ end
39
+
40
+ def destroy
41
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
42
+ @<%= resource_name %>.destroy
43
+ end
44
+
45
+ end
@@ -0,0 +1,55 @@
1
+ # encoding: utf-8
2
+
3
+ class <%= @model_name.demodulize %>Uploader < CarrierWave::Uploader::Base
4
+
5
+ # Include RMagick or MiniMagick support:
6
+ # include CarrierWave::RMagick
7
+ include CarrierWave::MiniMagick
8
+
9
+ # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
10
+ # include Sprockets::Helpers::RailsHelper
11
+ # include Sprockets::Helpers::IsolatedHelper
12
+
13
+ # Choose what kind of storage to use for this uploader:
14
+ storage :file
15
+ # storage :fog
16
+
17
+ # Override the directory where uploaded files will be stored.
18
+ # This is a sensible default for uploaders that are meant to be mounted:
19
+ def store_dir
20
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
21
+ end
22
+
23
+ # Provide a default URL as a default if there hasn't been a file uploaded:
24
+ # def default_url
25
+ # # For Rails 3.1+ asset pipeline compatibility:
26
+ # # asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
27
+ #
28
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
29
+ # end
30
+
31
+ # Process files as they are uploaded:
32
+ # process :scale => [200, 300]
33
+ #
34
+ # def scale(width, height)
35
+ # # do something
36
+ # end
37
+
38
+ # Create different versions of your uploaded files:
39
+ version :admin_mini do
40
+ process :resize_to_fill => [160, 100]
41
+ end
42
+
43
+ # Add a white list of extensions which are allowed to be uploaded.
44
+ # For images you might use something like this:
45
+ def extension_white_list
46
+ %w(jpg jpeg gif png)
47
+ end
48
+
49
+ # Override the filename of the uploaded files:
50
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
51
+ # def filename
52
+ # "something.jpg" if original_filename
53
+ # end
54
+
55
+ end
@@ -0,0 +1,10 @@
1
+ %li{:id => "<%= resource_name %>_#{<%= resource_name %>.id}"}
2
+ = link_to [:edit, :admin, @<%= parent_name %>, <%= resource_name %>] do
3
+ = image_tag(<%= resource_name %>.image_url(:admin_mini), :class=>"admin_mini")
4
+ .image_control_panel
5
+ = link_to [:admin, @<%= parent_name %>, <%= resource_name %>], :remote => true, :method => :delete, :confirm => "#{t 'confirm.delete'}", :class=>'delete_image' do
6
+ %i{:class => "icon-trash icon-large"}
7
+ <%- if column_names.include?("visible") %>
8
+ = link_to [:toggleshow, :admin, <%= resource_name %>], :remote => true, :class=>'toggleshow' do
9
+ %i{:class => (<%= resource_name %>.visible? ? "icon-eye-open icon-large" : "icon-eye-close icon-large not-work")}
10
+ <% end %>
@@ -0,0 +1,8 @@
1
+ %h2 Галерея изображений
2
+ .image-list#<%=plural_resource_name%>
3
+ = render @<%=parent_name%>.<%=plural_resource_name%>
4
+ = image_sortable
5
+
6
+ .image_upload_form.bordered_box
7
+ %h3 Загрузить изображения
8
+ = uploader(@<%=parent_name%>, <%=@model_name.demodulize%>)
@@ -0,0 +1,4 @@
1
+ - if @<%= resource_name %>.new_record?
2
+ alert("Failed to uploading")
3
+ - else
4
+ $("#<%=plural_resource_name %>").append("#{j render(@<%=resource_name %>)}")
@@ -0,0 +1 @@
1
+ $("#<%= resource_name %>_#{@<%= resource_name %>.id}").remove();
@@ -0,0 +1,29 @@
1
+ - content_for :page_header do
2
+ %p= link_to t('back'), [:edit, :admin, @<%=resource_name%>.<%= parent_name %>], :class => "bright_link"
3
+ %h1
4
+ - if @<%=resource_name%>.new_record?
5
+ = "#{t 'add'} #{<%= @model_name.demodulize %>.model_name.human}"
6
+ - else
7
+ = "#{t 'edit'} #{<%= @model_name.demodulize %>.model_name.human}"
8
+
9
+ = form_for [:admin, @<%=resource_name%>.<%= parent_name %>, @<%=resource_name%>] do |f|
10
+ - if @<%=resource_name%>.errors.any?
11
+ #error_explanation
12
+ %h2= "#{t 'save_errors'}: #{@<%=resource_name%>.errors.count}"
13
+ %ul
14
+ - @<%=resource_name%>.errors.full_messages.each do |msg|
15
+ %li= msg
16
+ %table
17
+ %tr
18
+ %th{colspan: 2}
19
+ - if @<%=resource_name%>.image && @<%=resource_name%>.image_url
20
+ = image_tag @<%=resource_name%>.image_url
21
+ %br
22
+ Выберите другое изображение
23
+ %br
24
+ %tr
25
+ %th= f.label :image
26
+ %td= f.file_field :image
27
+
28
+ .actions
29
+ = f.submit t('save')
@@ -5,7 +5,7 @@
5
5
  <%- if column.name=='position' || column.name=='visible'-%>
6
6
  %th{:class => <%= (column.name=='position') ? "\'position\'" : "\'visibility\'" %>}
7
7
  <%- else -%>
8
- <%= "%th= sortable_columns \"#{column.name}\", #{resource_name.capitalize}.human_attribute_name(\"#{column.name}\")" %>
8
+ <%= "%th= sortable_columns \"#{column.name}\", #{@model_name.demodulize}.human_attribute_name(\"#{column.name}\")" %>
9
9
  <%- end -%>
10
10
  <%- end -%>
11
11
  %th
@@ -1,9 +1,9 @@
1
1
  #coding: utf-8
2
- class Admin::<%= plural_resource_name.capitalize -%>Controller < Admin::ApplicationController
2
+ class Admin::<%= @model_name.demodulize.pluralize -%>Controller < Admin::ApplicationController
3
3
  helper_method :sort_column, :sort_direction
4
4
  <%- if column_names.include?("visible") -%>
5
5
  def toggleshow
6
- @<%= plural_resource_name %> = <%= resource_name.capitalize -%>.find(params[:id])
6
+ @<%= plural_resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
7
7
  @<%= plural_resource_name %>.toggle(:visible)
8
8
  @<%= plural_resource_name %>.save
9
9
  render :nothing => true
@@ -11,7 +11,7 @@ class Admin::<%= plural_resource_name.capitalize -%>Controller < Admin::Applicat
11
11
  <%- end -%><%- if column_names.include?("position") -%>
12
12
  def sort
13
13
  params[:<%= resource_name %>].each_with_index do |id, idx|
14
- @<%= resource_name %> = <%= resource_name.capitalize -%>.find(id)
14
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(id)
15
15
  @<%= resource_name %>.position = idx
16
16
  @<%= resource_name %>.save
17
17
  end
@@ -19,46 +19,46 @@ class Admin::<%= plural_resource_name.capitalize -%>Controller < Admin::Applicat
19
19
  end
20
20
  <%- end -%>
21
21
  def index
22
- @<%= plural_resource_name %> = <%= resource_name.capitalize -%>.order(sort_column + " " + sort_direction)
22
+ @<%= plural_resource_name %> = <%= @model_name.demodulize -%>.order(sort_column + " " + sort_direction)
23
23
  end
24
24
 
25
25
  def new
26
- @<%= resource_name %> = <%= resource_name.capitalize -%>.new
26
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.new
27
27
  render 'edit'
28
28
  end
29
29
 
30
30
  def edit
31
- @<%= resource_name %> = <%= resource_name.capitalize -%>.find(params[:id])
31
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
32
32
  end
33
33
 
34
34
  def create
35
- @<%= resource_name %> = <%= resource_name.capitalize -%>.new(params[:<%= resource_name %>])
35
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.new(params[:<%= resource_name %>])
36
36
  if @<%= resource_name %>.save
37
- redirect_to admin_<%= plural_resource_name %>_path, :notice => "#{<%= resource_name.capitalize %>.model_name.human} #{t 'flash.notice.was_added'}"
37
+ redirect_to admin_<%= plural_resource_name %>_path, :notice => "#{<%= @model_name.demodulize %>.model_name.human} #{t 'flash.notice.was_added'}"
38
38
  else
39
39
  render 'edit'
40
40
  end
41
41
  end
42
42
 
43
43
  def update
44
- @<%= resource_name %> = <%= resource_name.capitalize -%>.find(params[:id])
44
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
45
45
  if @<%= resource_name %>.update_attributes(params[:<%= resource_name %>])
46
- redirect_to admin_<%= plural_resource_name %>_path, :notice => "#{<%= resource_name.capitalize %>.model_name.human} #{t 'flash.notice.was_updated'}"
46
+ redirect_to admin_<%= plural_resource_name %>_path, :notice => "#{<%= @model_name.demodulize %>.model_name.human} #{t 'flash.notice.was_updated'}"
47
47
  else
48
48
  render 'edit'
49
49
  end
50
50
  end
51
51
 
52
52
  def destroy
53
- @<%= resource_name %> = <%= resource_name.capitalize -%>.find(params[:id])
53
+ @<%= resource_name %> = <%= @model_name.demodulize -%>.find(params[:id])
54
54
  @<%= resource_name %>.destroy
55
- redirect_to admin_<%= plural_resource_name %>_path, :alert => "#{<%= resource_name.capitalize %>.model_name.human} #{t 'flash.notice.was_deleted'}"
55
+ redirect_to admin_<%= plural_resource_name %>_path, :alert => "#{<%= @model_name.demodulize %>.model_name.human} #{t 'flash.notice.was_deleted'}"
56
56
  end
57
57
 
58
58
  private
59
59
 
60
60
  def sort_column
61
- <%= resource_name.capitalize -%>.column_names.include?(params[:sort]) ? params[:sort] : <%= column_names.include?("position") ? "\'position\'" : "\'created_at\'" %>
61
+ <%= @model_name.demodulize -%>.column_names.include?(params[:sort]) ? params[:sort] : <%= column_names.include?("position") ? "\'position\'" : "\'created_at\'" %>
62
62
  end
63
63
 
64
64
  def sort_direction
@@ -2,9 +2,9 @@
2
2
  %p= link_to t('back'), admin_<%= controller_routing_path %>_path, :class => "bright_link"
3
3
  %h1
4
4
  - if @<%= resource_name %>.new_record?
5
- = "#{t 'add'} #{<%= resource_name.capitalize %>.model_name.human}"
5
+ = "#{t 'add'} #{<%= @model_name.demodulize %>.model_name.human}"
6
6
  - else
7
- = "#{t 'edit'} #{<%= resource_name.capitalize %>.model_name.human}"
7
+ = "#{t 'edit'} #{<%= @model_name.demodulize %>.model_name.human}"
8
8
 
9
9
  = form_for [:admin, @<%= resource_name %>] do |f|
10
10
  - if @<%= resource_name %>.errors.any?
@@ -1,5 +1,5 @@
1
1
  - content_for(:page_header) do
2
- %p= link_to "#{t 'add'} #{<%= resource_name.capitalize %>.model_name.human}", new_admin_<%= singular_controller_routing_path %>_path, :class => "bright_link"
2
+ %p= link_to "#{t 'add'} #{<%= @model_name.demodulize %>.model_name.human}", new_admin_<%= singular_controller_routing_path %>_path, :class => "bright_link"
3
3
  %h1= link_to '<%= plural_resource_name %>', admin_<%= plural_resource_name %>_path
4
4
  -#= paginate @<%= plural_resource_name %>
5
5
  <%= if column_names.include?("position")
@@ -1,3 +1,3 @@
1
1
  module Ideyabox
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ideyabox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-15 00:00:00.000000000 Z
13
+ date: 2012-11-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: russian
@@ -92,6 +92,22 @@ dependencies:
92
92
  - - ! '>='
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: jquery-fileupload-rails
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
95
111
  - !ruby/object:Gem::Dependency
96
112
  name: mini_magick
97
113
  requirement: !ruby/object:Gem::Requirement
@@ -228,6 +244,16 @@ files:
228
244
  - lib/generators/ideyabox/admin/templates/views/layouts/admin.html.haml
229
245
  - lib/generators/ideyabox/admin/templates/views/layouts/login.html.haml
230
246
  - lib/generators/ideyabox/assets/assets_generator.rb
247
+ - lib/generators/ideyabox/images_scaffold/.DS_Store
248
+ - lib/generators/ideyabox/images_scaffold/images_scaffold_generator.rb
249
+ - lib/generators/ideyabox/images_scaffold/templates/.DS_Store
250
+ - lib/generators/ideyabox/images_scaffold/templates/controllers/controller.rb
251
+ - lib/generators/ideyabox/images_scaffold/templates/uploader.rb
252
+ - lib/generators/ideyabox/images_scaffold/templates/views/_image.html.haml
253
+ - lib/generators/ideyabox/images_scaffold/templates/views/_images.html.haml
254
+ - lib/generators/ideyabox/images_scaffold/templates/views/create.js.haml
255
+ - lib/generators/ideyabox/images_scaffold/templates/views/destroy.js.haml
256
+ - lib/generators/ideyabox/images_scaffold/templates/views/edit.html.haml
231
257
  - lib/generators/ideyabox/scaffold/.DS_Store
232
258
  - lib/generators/ideyabox/scaffold/scaffold_generator.rb
233
259
  - lib/generators/ideyabox/scaffold/templates/.DS_Store