coalla-cms 0.5.2.4 → 0.6.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Gemfile +1 -1
- data/app/assets/javascripts/admin/admin.js +233 -34
- data/app/assets/stylesheets/admin/admin.scss +1 -2
- data/app/assets/stylesheets/admin/vendor/bootstrap.min.css +6242 -4
- data/app/assets/stylesheets/admin/vendor/token-input-bootstrap.scss +144 -0
- data/app/controllers/admin/autocomplete_controller.rb +3 -1
- data/app/controllers/admin/base_controller.rb +35 -0
- data/app/controllers/concerns/admin/editable_columns.rb +55 -0
- data/app/controllers/concerns/admin/sortable_columns.rb +16 -0
- data/app/controllers/{admin/sortable_controller.rb → concerns/admin/sortable_models.rb} +1 -5
- data/app/helpers/admin/alerts_helper.rb +31 -0
- data/app/helpers/admin/content_helper.rb +29 -0
- data/app/helpers/admin/form_helper.rb +50 -0
- data/app/helpers/admin/resource_helpers.rb +102 -0
- data/app/helpers/admin/search_helper.rb +44 -40
- data/app/helpers/admin/table_helper.rb +40 -0
- data/app/helpers/common_helper.rb +2 -2
- data/app/models/file_upload.rb +1 -1
- data/app/models/lookup.rb +1 -1
- data/app/models/site_meta_tags.rb +2 -2
- data/app/views/admin/common/_menu_section.haml +1 -1
- data/app/views/admin/common/_nested_fields_for.html.haml +10 -5
- data/app/views/admin/common/_nested_fields_for_element.html.haml +21 -5
- data/app/views/admin/common/_table_template.html.haml +26 -7
- data/app/views/admin/common/_upload_form.html.haml +2 -1
- data/app/views/admin/editable_columns/edit/_boolean.haml +2 -0
- data/app/views/admin/editable_columns/edit/_date.haml +2 -0
- data/app/views/admin/editable_columns/edit/_datetime.haml +3 -0
- data/app/views/admin/editable_columns/edit/_enumerize.haml +2 -0
- data/app/views/admin/editable_columns/edit/_string.haml +2 -0
- data/app/views/admin/editable_columns/edit/_text.haml +2 -0
- data/app/views/admin/editable_columns/edit/_time.haml +3 -0
- data/app/views/admin/editable_columns/edit_column.haml +8 -0
- data/app/views/admin/editable_columns/result/_boolean.haml +2 -0
- data/app/views/admin/editable_columns/result/_date.haml +1 -0
- data/app/views/admin/editable_columns/result/_datetime.haml +1 -0
- data/app/views/admin/editable_columns/result/_enumerize.haml +1 -0
- data/app/views/admin/editable_columns/result/_string.haml +1 -0
- data/app/views/admin/editable_columns/result/_text.haml +1 -0
- data/app/views/admin/editable_columns/result/_time.haml +1 -0
- data/app/views/admin/site_meta_tags/index.html.haml +2 -2
- data/app/views/layouts/admin.html.haml +12 -0
- data/app/views/structure/_section.haml +2 -9
- data/coalla-cms.gemspec +10 -11
- data/lib/coalla/builders/actions_column_definition.rb +44 -0
- data/lib/coalla/builders/admin_structure.rb +86 -0
- data/lib/coalla/builders/column_definition.rb +9 -0
- data/lib/coalla/builders/form_builder.rb +291 -0
- data/lib/coalla/builders/link_renderer.rb +43 -0
- data/lib/coalla/builders/policy.rb +30 -0
- data/lib/coalla/builders/table_builder.rb +99 -0
- data/lib/coalla/builders/table_formatter.rb +133 -0
- data/lib/coalla/builders/text_formatter.rb +22 -0
- data/lib/coalla/cms/engine.rb +3 -2
- data/lib/coalla/cms/version.rb +2 -2
- data/lib/coalla/ext/mapper.rb +7 -0
- data/lib/coalla/orm/{relation.rb → multi_field.rb} +7 -8
- data/lib/coalla/orm/page_slider.rb +2 -28
- data/lib/coalla/orm/sanitized.rb +1 -5
- data/lib/coalla/orm/sortable_association.rb +30 -0
- data/lib/coalla/uploaders/file_uploader.rb +9 -0
- data/lib/coalla/uploaders/image_uploader.rb +62 -0
- data/lib/coalla/uploaders/meta_image_uploader.rb +7 -0
- data/lib/coalla-cms.rb +10 -0
- data/lib/generators/coalla/cms/create_admin_administrators_generator.rb +5 -7
- data/lib/generators/coalla/cms/create_admin_generator.rb +9 -7
- data/lib/generators/coalla/cms/create_admin_login_view_generator.rb +4 -6
- data/lib/generators/coalla/cms/create_markup_generator.rb +2 -2
- data/lib/generators/coalla/cms/file_uploads/install_generator.rb +0 -17
- data/lib/generators/coalla/cms/file_uploads/mount_generator.rb +4 -7
- data/lib/generators/coalla/cms/image/install_generator.rb +0 -3
- data/lib/generators/coalla/cms/image/mount_generator.rb +0 -3
- data/lib/generators/coalla/cms/image/templates/mount/uploader.rb.erb +1 -1
- data/lib/generators/coalla/cms/image/templates/uploader.rb.erb +1 -1
- data/lib/generators/coalla/cms/init_generator.rb +42 -49
- data/lib/generators/coalla/cms/lookups/install_generator.rb +0 -3
- data/lib/generators/coalla/cms/meta_tags/install_generator.rb +0 -2
- data/lib/generators/coalla/cms/scaffold_generator.rb +7 -7
- data/lib/generators/coalla/cms/setup_admin_generator.rb +9 -9
- data/lib/generators/coalla/cms/setup_routes_generator.rb +3 -3
- data/lib/generators/coalla/cms/slider/init_generator.rb +1 -3
- data/lib/generators/coalla/cms/slider/templates/slider_image.rb.erb +0 -1
- data/lib/generators/coalla/cms/slider/templates/slider_image_uploader.rb.erb +1 -1
- data/lib/generators/coalla/cms/templates/.gitignore +3 -3
- data/lib/generators/coalla/cms/templates/controllers/admin/administrators_controller.rb +2 -40
- data/lib/generators/coalla/cms/templates/controllers/admin/scaffold_controller_template.rb.erb +0 -39
- data/lib/generators/coalla/cms/templates/initializers/carrierwave.rb +0 -90
- data/lib/generators/coalla/cms/templates/locales/activerecord.en.yml +14 -1
- data/lib/generators/coalla/cms/templates/views/admin/administrators/_form.html.haml +1 -1
- data/lib/generators/coalla/cms/templates/views/admin/administrators/edit.html.haml +1 -1
- data/lib/generators/coalla/cms/templates/views/admin/administrators/index.html.haml +5 -5
- data/lib/generators/coalla/cms/templates/views/admin/administrators/new.html.haml +1 -1
- data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/_form.html.haml.erb +1 -1
- data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/edit.html.haml.erb +1 -1
- data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/index.html.haml.erb +5 -5
- data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/new.html.haml.erb +1 -1
- data/lib/generators/coalla/cms/templates/views/administrators/sessions/new.html.haml +1 -1
- data/lib/generators/coalla/cms/utils/orm.rb +29 -0
- data/lib/generators/coalla/cms/utils/scaffold.rb +11 -0
- metadata +57 -100
- data/Gemfile.lock +0 -198
- data/app/assets/stylesheets/admin/vendor/token-input-facebook.patched.css +0 -126
- data/app/assets/stylesheets/admin/vendor/token-input.patched.css +0 -116
- data/app/controllers/admin/notifier_controller.rb +0 -7
- data/app/helpers/admin_helper.rb +0 -29
- data/app/helpers/nested_fields_helper.rb +0 -12
- data/app/helpers/static_text_formatter.rb +0 -25
- data/app/helpers/twitter_builder_helper.rb +0 -253
- data/app/helpers/twitter_form_builder.rb +0 -202
- data/app/uploaders/file_uploader.rb +0 -10
- data/app/uploaders/generic_image_uploader.rb +0 -75
- data/app/uploaders/meta_tags_image_uploader.rb +0 -5
- data/app/utils/admin_structure.rb +0 -82
- data/app/utils/bootstrap_link_renderer.rb +0 -40
- data/app/utils/table_helpers.rb +0 -196
- data/lib/generators/coalla/cms/market/install_generator.rb +0 -71
- data/lib/generators/coalla/cms/market/templates/controllers/categories_controller.rb +0 -47
- data/lib/generators/coalla/cms/market/templates/controllers/products_controller.rb +0 -50
- data/lib/generators/coalla/cms/market/templates/controllers/properties_controller.rb +0 -59
- data/lib/generators/coalla/cms/market/templates/market.rb +0 -5
- data/lib/generators/coalla/cms/market/templates/market.ru.yml +0 -53
- data/lib/generators/coalla/cms/market/templates/migrations/create_categories.rb +0 -15
- data/lib/generators/coalla/cms/market/templates/migrations/create_product_properties.rb +0 -18
- data/lib/generators/coalla/cms/market/templates/migrations/create_products.rb +0 -18
- data/lib/generators/coalla/cms/market/templates/migrations/create_properties.rb +0 -11
- data/lib/generators/coalla/cms/market/templates/models/category.rb +0 -36
- data/lib/generators/coalla/cms/market/templates/models/product.rb +0 -16
- data/lib/generators/coalla/cms/market/templates/models/product_property.rb +0 -14
- data/lib/generators/coalla/cms/market/templates/models/property.rb +0 -7
- data/lib/generators/coalla/cms/market/templates/views/categories/_form.html.haml +0 -10
- data/lib/generators/coalla/cms/market/templates/views/categories/edit.html.haml +0 -5
- data/lib/generators/coalla/cms/market/templates/views/categories/index.html.haml +0 -17
- data/lib/generators/coalla/cms/market/templates/views/categories/new.html.haml +0 -4
- data/lib/generators/coalla/cms/market/templates/views/products/_form.html.haml +0 -17
- data/lib/generators/coalla/cms/market/templates/views/products/_product_property_fields.html.haml +0 -13
- data/lib/generators/coalla/cms/market/templates/views/products/edit.html.haml +0 -5
- data/lib/generators/coalla/cms/market/templates/views/products/index.html.haml +0 -17
- data/lib/generators/coalla/cms/market/templates/views/products/new.html.haml +0 -4
- data/lib/generators/coalla/cms/market/templates/views/properties/_form.html.haml +0 -9
- data/lib/generators/coalla/cms/market/templates/views/properties/edit.html.haml +0 -5
- data/lib/generators/coalla/cms/market/templates/views/properties/index.html.haml +0 -15
- data/lib/generators/coalla/cms/market/templates/views/properties/new.html.haml +0 -4
- data/lib/generators/coalla/cms/news/scaffold_generator.rb +0 -50
- data/lib/generators/coalla/cms/news/templates/entity.rb.erb +0 -10
- data/lib/generators/coalla/cms/news/templates/entity_controller_template.rb.erb +0 -47
- data/lib/generators/coalla/cms/news/templates/entity_image_uploader.rb.erb +0 -7
- data/lib/generators/coalla/cms/news/templates/migration.rb.erb +0 -15
- data/lib/generators/coalla/cms/news/templates/views/_form.haml.erb +0 -16
- data/lib/generators/coalla/cms/news/templates/views/edit.haml.erb +0 -5
- data/lib/generators/coalla/cms/news/templates/views/index.haml.erb +0 -18
- data/lib/generators/coalla/cms/news/templates/views/new.haml.erb +0 -5
- data/lib/generators/coalla/cms/orm_helpers.rb +0 -31
- data/lib/generators/coalla/cms/scaffold_helper.rb +0 -11
- data/lib/generators/coalla/cms/templates/controllers/admin/base_controller.rb.erb +0 -35
- /data/{lib/generators/coalla/cms/templates/controllers/admin/home_controller.rb.erb → app/controllers/admin/home_controller.rb} +0 -0
@@ -1,18 +0,0 @@
|
|
1
|
-
class CreateProductProperties < ActiveRecord::Migration
|
2
|
-
|
3
|
-
def change
|
4
|
-
create_table :market_product_properties do |t|
|
5
|
-
t.text :value
|
6
|
-
t.references :product
|
7
|
-
t.index :product_id
|
8
|
-
t.foreign_key :market_products, column: :product_id
|
9
|
-
|
10
|
-
t.references :property
|
11
|
-
t.index :property_id
|
12
|
-
t.foreign_key :market_properties, column: :property_id
|
13
|
-
|
14
|
-
t.timestamps
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class CreateProducts < ActiveRecord::Migration
|
2
|
-
|
3
|
-
def change
|
4
|
-
create_table :market_products do |t|
|
5
|
-
t.text :name, null: false
|
6
|
-
t.index :name
|
7
|
-
t.decimal :price, null: false
|
8
|
-
t.index :price
|
9
|
-
t.text :sku, null: false
|
10
|
-
t.references :category
|
11
|
-
t.index :category_id
|
12
|
-
t.foreign_key :market_categories, column: :category_id
|
13
|
-
t.timestamps
|
14
|
-
t.text :description
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
class Market::Category < ActiveRecord::Base
|
2
|
-
|
3
|
-
has_many :subcategories, inverse_of: :category, dependent: :destroy, class_name: '::Market::Category'
|
4
|
-
belongs_to :category, inverse_of: :subcategories, class_name: '::Market::Category'
|
5
|
-
|
6
|
-
validates :name, presence: true
|
7
|
-
|
8
|
-
scope :ordered, -> { order(:position) }
|
9
|
-
scope :top_level, -> { ordered.where(category_id: nil) }
|
10
|
-
|
11
|
-
def full_name
|
12
|
-
categories = [self]
|
13
|
-
category = self
|
14
|
-
while category.category
|
15
|
-
category = category.category
|
16
|
-
categories << category
|
17
|
-
end
|
18
|
-
categories.reverse.map(&:name).join(' -> ')
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.for_combo(category)
|
22
|
-
parents = top_level
|
23
|
-
parents = parents.where.not(id: category.id) if category
|
24
|
-
result = []
|
25
|
-
parents.each do |top_level|
|
26
|
-
result << top_level
|
27
|
-
result << top_level.ordered_subcategories.order(:position).reject { |sub_category| sub_category == category }
|
28
|
-
end
|
29
|
-
result.flatten
|
30
|
-
end
|
31
|
-
|
32
|
-
def ordered_subcategories
|
33
|
-
subcategories.ordered
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
class Market::Product < ActiveRecord::Base
|
2
|
-
|
3
|
-
has_many :product_properties, dependent: :destroy, inverse_of: :product
|
4
|
-
has_many :properties, through: :product_properties
|
5
|
-
|
6
|
-
slider :images
|
7
|
-
|
8
|
-
belongs_to :category
|
9
|
-
|
10
|
-
accepts_nested_attributes_for :product_properties, allow_destroy: true
|
11
|
-
|
12
|
-
validates :name, presence: true
|
13
|
-
validates :price, presence: true
|
14
|
-
validates :sku, presence: true
|
15
|
-
|
16
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class Market::ProductProperty < ActiveRecord::Base
|
2
|
-
|
3
|
-
belongs_to :product, class_name: '::Market::Product', inverse_of: :product_properties
|
4
|
-
belongs_to :property, class_name: '::Market::Property', inverse_of: :product_properties
|
5
|
-
|
6
|
-
def property_name
|
7
|
-
property.try(:name)
|
8
|
-
end
|
9
|
-
|
10
|
-
def property_name=(name)
|
11
|
-
# no-op
|
12
|
-
end
|
13
|
-
|
14
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
= twitter_form_for [:admin, @category] do |f|
|
2
|
-
= field_set do
|
3
|
-
= f.errors
|
4
|
-
= flash_messages
|
5
|
-
|
6
|
-
= f.string :name
|
7
|
-
= f.string :position, div_class: 'col-md-2'
|
8
|
-
= f.combobox :category_id, Market::Category.for_combo(@category).map{|r| [r.full_name, r.id]}, include_blank: true
|
9
|
-
|
10
|
-
= standard_actions(f)
|
@@ -1,17 +0,0 @@
|
|
1
|
-
.page-header
|
2
|
-
%h1= Market::Category.model_name.human
|
3
|
-
|
4
|
-
= actions do
|
5
|
-
= create_link(new_admin_market_category_path)
|
6
|
-
|
7
|
-
= table_for(Market::Category).content(@categories) do |t|
|
8
|
-
- t.column :name
|
9
|
-
- t.column :category, format: ->(category) { category.try(:name) }
|
10
|
-
- t.column :position
|
11
|
-
- t.edit
|
12
|
-
- t.delete
|
13
|
-
|
14
|
-
= admin_paginate @categories
|
15
|
-
|
16
|
-
= actions do
|
17
|
-
= create_link(new_admin_market_category_path)
|
@@ -1,17 +0,0 @@
|
|
1
|
-
= twitter_form_for [:admin, @product] do |f|
|
2
|
-
= field_set do
|
3
|
-
= f.errors
|
4
|
-
= flash_messages
|
5
|
-
|
6
|
-
= f.string :name
|
7
|
-
= f.string :sku, div_class: 'col-md-2'
|
8
|
-
= f.string :price, div_class: 'col-md-2'
|
9
|
-
= f.combobox :category_id, Market::Category.for_combo(nil).map{|r| [r.full_name, r.id]}, include_blank: true
|
10
|
-
= f.textarea :description, rows: 3
|
11
|
-
= render_slides(f, 'Слайдер', :images)
|
12
|
-
|
13
|
-
= render 'admin/common/nested_fields_for', f: f, section_name: 'Свойства', collection: :product_properties
|
14
|
-
|
15
|
-
= standard_actions(f)
|
16
|
-
|
17
|
-
|
data/lib/generators/coalla/cms/market/templates/views/products/_product_property_fields.html.haml
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
= builder.string :property_name, div_class: 'col-md-7', class: 'property_autocomplete'
|
2
|
-
= builder.hidden_field :property_id, class: 'property_id'
|
3
|
-
= builder.string :value, div_class: 'col-md-7'
|
4
|
-
|
5
|
-
:javascript
|
6
|
-
$(function() {
|
7
|
-
$('.property_autocomplete').autocomplete({
|
8
|
-
source: '#{admin_market_properties_path}',
|
9
|
-
select: function(event, ui) {
|
10
|
-
$(this).closest('.fields_container').find('.property_id').val(ui.item.id);
|
11
|
-
}
|
12
|
-
});
|
13
|
-
});
|
@@ -1,17 +0,0 @@
|
|
1
|
-
.page-header
|
2
|
-
%h1= Market::Product.model_name.human
|
3
|
-
|
4
|
-
= actions do
|
5
|
-
= create_link(new_admin_market_product_path)
|
6
|
-
|
7
|
-
= table_for(Market::Product).content(@products) do |t|
|
8
|
-
- t.column :name
|
9
|
-
- t.column :sku, class: "text-center", cols: 1
|
10
|
-
- t.column :price, class: "text-left", cols: 1
|
11
|
-
- t.edit
|
12
|
-
- t.delete
|
13
|
-
|
14
|
-
= admin_paginate @products
|
15
|
-
|
16
|
-
= actions do
|
17
|
-
= create_link(new_admin_market_product_path)
|
@@ -1,15 +0,0 @@
|
|
1
|
-
.page-header
|
2
|
-
%h1= Market::Property.model_name.human
|
3
|
-
|
4
|
-
= actions do
|
5
|
-
= create_link(new_admin_market_property_path)
|
6
|
-
|
7
|
-
= table_for(Market::Property).content(@properties) do |t|
|
8
|
-
- t.column :name
|
9
|
-
- t.edit
|
10
|
-
- t.delete
|
11
|
-
|
12
|
-
= admin_paginate @properties
|
13
|
-
|
14
|
-
= actions do
|
15
|
-
= create_link(new_admin_market_property_path)
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'rails'
|
2
|
-
require 'rails/generators/active_record'
|
3
|
-
|
4
|
-
module Coalla
|
5
|
-
module Cms
|
6
|
-
module News
|
7
|
-
|
8
|
-
class ScaffoldGenerator < ::ActiveRecord::Generators::Base
|
9
|
-
argument :name, type: :string, default: "Article"
|
10
|
-
source_root File.expand_path("../templates", __FILE__)
|
11
|
-
|
12
|
-
def setup_properties
|
13
|
-
@class_name = name
|
14
|
-
@collection_name = name.pluralize.underscore
|
15
|
-
@instance_name = name.underscore
|
16
|
-
@announce_image_uploader_name = "#{name}ImageUploader"
|
17
|
-
end
|
18
|
-
|
19
|
-
def create_model
|
20
|
-
template "entity.rb.erb", "app/models/#{name.underscore}.rb"
|
21
|
-
template "entity_image_uploader.rb.erb", "app/uploaders/#{name.underscore}_image_uploader.rb"
|
22
|
-
end
|
23
|
-
|
24
|
-
def create_model_migration
|
25
|
-
@table_name = name.pluralize.underscore
|
26
|
-
migration_template "migration.rb.erb", "db/migrate/create_#{name.pluralize.underscore}.rb"
|
27
|
-
end
|
28
|
-
|
29
|
-
def create_controller
|
30
|
-
template 'entity_controller_template.rb.erb', "app/controllers/admin/#{name.pluralize.underscore}_controller.rb"
|
31
|
-
end
|
32
|
-
|
33
|
-
def add_routes
|
34
|
-
sentinel = /namespace :admin do\s*$/
|
35
|
-
routing_code = " resources :#{name.pluralize.underscore}"
|
36
|
-
inject_into_file 'config/routes.rb', "\n #{routing_code}", {:after => sentinel, :verbose => false}
|
37
|
-
end
|
38
|
-
|
39
|
-
def create_views
|
40
|
-
target_views_folder = "app/views/admin/#{@collection_name}"
|
41
|
-
empty_directory target_views_folder
|
42
|
-
%w(index new edit _form).each do |view_name|
|
43
|
-
template "views/#{view_name}.haml.erb", "#{target_views_folder}/#{view_name}.haml"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
class <%= name %> < ActiveRecord::Base
|
2
|
-
|
3
|
-
validates_presence_of :title, :published_at, :announce, :announce_image, :body
|
4
|
-
|
5
|
-
mount_uploader :announce_image, <%= @announce_image_uploader_name %>
|
6
|
-
|
7
|
-
scope :ordered, -> { order('created_at DESC')}
|
8
|
-
scope :feed, -> { where(published: true).order('published_at DESC') }
|
9
|
-
|
10
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
module Admin
|
2
|
-
|
3
|
-
class <%= name.pluralize %>Controller < BaseController
|
4
|
-
|
5
|
-
handle_return_path
|
6
|
-
|
7
|
-
PER_PAGE = 20
|
8
|
-
|
9
|
-
def index
|
10
|
-
@<%= @collection_name %> = <%= @class_name %>.ordered.paginate(page: params[:page], per_page: PER_PAGE)
|
11
|
-
end
|
12
|
-
|
13
|
-
def new
|
14
|
-
@<%= @instance_name %> = <%= @class_name %>.new
|
15
|
-
end
|
16
|
-
|
17
|
-
def create
|
18
|
-
@<%= @instance_name %> = <%= @class_name %>.new(params[:<%= @instance_name %>].permit!)
|
19
|
-
if @<%= @instance_name %>.save
|
20
|
-
redirect_or_render :edit
|
21
|
-
else
|
22
|
-
render :new
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def edit
|
27
|
-
@<%= @instance_name %> = <%= @class_name %>.find(params[:id])
|
28
|
-
end
|
29
|
-
|
30
|
-
def update
|
31
|
-
@<%= @instance_name %> = <%= @class_name %>.find(params[:id])
|
32
|
-
if @<%= @instance_name %>.update_attributes(params[:<%= @instance_name %>].permit!)
|
33
|
-
redirect_or_render :edit
|
34
|
-
else
|
35
|
-
render :edit
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def destroy
|
40
|
-
@<%= @instance_name %> = <%= @class_name %>.find(params[:id])
|
41
|
-
@<%= @instance_name %>.destroy
|
42
|
-
redirect_to_last
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
class Create<%= name.pluralize %> < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
create_table :<%= @table_name %> do |t|
|
4
|
-
t.text :title, null: false
|
5
|
-
t.boolean :published, null: false, default: false
|
6
|
-
t.datetime :published_at, null: false
|
7
|
-
t.text :announce, null: false
|
8
|
-
t.text :announce_image, null: false
|
9
|
-
t.text :body, null: false
|
10
|
-
t.timestamps
|
11
|
-
end
|
12
|
-
add_index :<%= @table_name %>, :published
|
13
|
-
add_index :<%= @table_name %>, :published_at
|
14
|
-
end
|
15
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
= twitter_form_for [:admin, @<%= @instance_name %>] do |f|
|
2
|
-
= field_set do
|
3
|
-
= f.errors
|
4
|
-
= flash_messages
|
5
|
-
|
6
|
-
= f.string :title
|
7
|
-
|
8
|
-
= f.image_upload :announce_image, version: :thumb, size: '300x200'
|
9
|
-
= f.textarea :announce, rows: 5
|
10
|
-
|
11
|
-
= f.wysiwyg :body
|
12
|
-
|
13
|
-
= f.checkbox :published
|
14
|
-
= f.datetime :published_at
|
15
|
-
|
16
|
-
= standard_actions(f)
|
@@ -1,18 +0,0 @@
|
|
1
|
-
.page-header
|
2
|
-
%h1= <%= @class_name %>.model_name.human
|
3
|
-
|
4
|
-
= actions do
|
5
|
-
= create_link(new_admin_<%= @instance_name %>_path)
|
6
|
-
|
7
|
-
= table_for(<%= @class_name %>).content(@<%= @collection_name %>) do |t|
|
8
|
-
|
9
|
-
- t.column :title, cols: 7
|
10
|
-
- t.column :published_at, cols: 3, format: '%d.%m.%Y'
|
11
|
-
- t.column :published, cols: 1
|
12
|
-
- t.edit
|
13
|
-
- t.delete
|
14
|
-
|
15
|
-
= admin_paginate @<%= @collection_name %>
|
16
|
-
|
17
|
-
= actions do
|
18
|
-
= create_link(new_admin_<%= @instance_name %>_path)
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Coalla
|
2
|
-
|
3
|
-
module Cms
|
4
|
-
|
5
|
-
module OrmHelpers
|
6
|
-
def model_contents
|
7
|
-
<<-CONTENT
|
8
|
-
devise :database_authenticatable, :rememberable, :validatable
|
9
|
-
CONTENT
|
10
|
-
end
|
11
|
-
|
12
|
-
def model_exists?
|
13
|
-
File.exists?(File.join(destination_root, model_path))
|
14
|
-
end
|
15
|
-
|
16
|
-
def migration_exists?(table_name)
|
17
|
-
Dir.glob("#{File.join(destination_root, migration_path)}/[0-9]*_*.rb").grep(/\d+_add_admin_role_to_#{table_name}.rb$/).first
|
18
|
-
end
|
19
|
-
|
20
|
-
def migration_path
|
21
|
-
@migration_path ||= File.join("db", "migrate")
|
22
|
-
end
|
23
|
-
|
24
|
-
def model_path
|
25
|
-
@model_path ||= File.join("app", "models", "#{file_path}.rb")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Admin
|
2
|
-
|
3
|
-
class BaseController < ApplicationController
|
4
|
-
|
5
|
-
layout 'admin'
|
6
|
-
|
7
|
-
include Admin::PathHistory
|
8
|
-
helper_method :back_uri
|
9
|
-
|
10
|
-
before_action :no_cache!
|
11
|
-
before_action :authenticate_administrator!
|
12
|
-
before_action :load_structure
|
13
|
-
before_action :store_path_history
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def load_structure
|
18
|
-
@structure = ::AdminStructure.new(self)
|
19
|
-
end
|
20
|
-
|
21
|
-
def add_success_msg
|
22
|
-
flash.now[:admin_success] = I18n.t('admin.common.save_success')
|
23
|
-
end
|
24
|
-
|
25
|
-
def redirect_or_render partial
|
26
|
-
if params[:save].present?
|
27
|
-
redirect_to_back
|
28
|
-
else
|
29
|
-
add_success_msg
|
30
|
-
render partial
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|