coalla-cms 0.5.1.9 → 0.6.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +1 -1
  3. data/Rakefile +24 -24
  4. data/app/assets/javascripts/admin/admin.js +236 -33
  5. data/app/assets/stylesheets/admin/admin.scss +1 -2
  6. data/app/assets/stylesheets/admin/vendor/bootstrap.min.css +6242 -4
  7. data/app/assets/stylesheets/admin/vendor/token-input-bootstrap.scss +144 -0
  8. data/app/controllers/admin/autocomplete_controller.rb +3 -1
  9. data/app/controllers/admin/base_controller.rb +35 -0
  10. data/{lib/generators/coalla/cms/templates/controllers/admin/home_controller.rb.erb → app/controllers/admin/home_controller.rb} +0 -0
  11. data/app/controllers/concerns/admin/editable_columns.rb +55 -0
  12. data/app/controllers/concerns/admin/sortable_columns.rb +16 -0
  13. data/app/controllers/{admin/sortable_controller.rb → concerns/admin/sortable_models.rb} +1 -5
  14. data/app/helpers/admin/alerts_helper.rb +31 -0
  15. data/app/helpers/admin/content_helper.rb +29 -0
  16. data/app/helpers/admin/form_helper.rb +50 -0
  17. data/app/helpers/admin/resource_helpers.rb +102 -0
  18. data/app/helpers/admin/search_helper.rb +44 -40
  19. data/app/helpers/admin/table_helper.rb +40 -0
  20. data/app/helpers/common_helper.rb +2 -2
  21. data/app/models/file_upload.rb +1 -1
  22. data/app/models/lookup.rb +1 -1
  23. data/app/models/site_meta_tags.rb +2 -2
  24. data/app/views/admin/common/_menu_section.haml +1 -1
  25. data/app/views/admin/common/_nested_fields_for.html.haml +10 -4
  26. data/app/views/admin/common/_nested_fields_for_element.html.haml +21 -5
  27. data/app/views/admin/common/_table_template.html.haml +26 -7
  28. data/app/views/admin/common/_upload_form.html.haml +2 -1
  29. data/app/views/admin/editable_columns/edit/_boolean.haml +2 -0
  30. data/app/views/admin/editable_columns/edit/_date.haml +2 -0
  31. data/app/views/admin/editable_columns/edit/_datetime.haml +3 -0
  32. data/app/views/admin/editable_columns/edit/_enumerize.haml +2 -0
  33. data/app/views/admin/editable_columns/edit/_string.haml +2 -0
  34. data/app/views/admin/editable_columns/edit/_text.haml +2 -0
  35. data/app/views/admin/editable_columns/edit/_time.haml +3 -0
  36. data/app/views/admin/editable_columns/edit_column.haml +8 -0
  37. data/app/views/admin/editable_columns/result/_boolean.haml +2 -0
  38. data/app/views/admin/editable_columns/result/_date.haml +1 -0
  39. data/app/views/admin/editable_columns/result/_datetime.haml +1 -0
  40. data/app/views/admin/editable_columns/result/_enumerize.haml +1 -0
  41. data/app/views/admin/editable_columns/result/_string.haml +1 -0
  42. data/app/views/admin/editable_columns/result/_text.haml +1 -0
  43. data/app/views/admin/editable_columns/result/_time.haml +1 -0
  44. data/app/views/admin/site_meta_tags/index.html.haml +2 -2
  45. data/app/views/layouts/admin.html.haml +12 -0
  46. data/app/views/structure/_section.haml +2 -9
  47. data/coalla-cms.gemspec +10 -11
  48. data/lib/coalla/builders/actions_column_definition.rb +44 -0
  49. data/lib/coalla/builders/admin_structure.rb +86 -0
  50. data/lib/coalla/builders/column_definition.rb +9 -0
  51. data/lib/coalla/builders/form_builder.rb +291 -0
  52. data/lib/coalla/builders/link_renderer.rb +43 -0
  53. data/lib/coalla/builders/policy.rb +30 -0
  54. data/lib/coalla/builders/table_builder.rb +99 -0
  55. data/lib/coalla/builders/table_formatter.rb +133 -0
  56. data/lib/coalla/builders/text_formatter.rb +22 -0
  57. data/lib/coalla/cms/engine.rb +3 -2
  58. data/lib/coalla/cms/version.rb +2 -2
  59. data/lib/coalla/ext/mapper.rb +7 -0
  60. data/lib/coalla/orm/{relation.rb → multi_field.rb} +7 -8
  61. data/lib/coalla/orm/page_slider.rb +2 -28
  62. data/lib/coalla/orm/sanitized.rb +1 -5
  63. data/lib/coalla/orm/sortable_association.rb +30 -0
  64. data/lib/coalla/uploaders/file_uploader.rb +9 -0
  65. data/lib/coalla/uploaders/image_uploader.rb +62 -0
  66. data/lib/coalla/uploaders/meta_image_uploader.rb +7 -0
  67. data/lib/coalla-cms.rb +10 -0
  68. data/lib/generators/coalla/cms/create_admin_administrators_generator.rb +5 -7
  69. data/lib/generators/coalla/cms/create_admin_generator.rb +9 -7
  70. data/lib/generators/coalla/cms/create_admin_login_view_generator.rb +4 -6
  71. data/lib/generators/coalla/cms/create_markup_generator.rb +2 -2
  72. data/lib/generators/coalla/cms/file_uploads/install_generator.rb +0 -17
  73. data/lib/generators/coalla/cms/file_uploads/mount_generator.rb +4 -7
  74. data/lib/generators/coalla/cms/image/install_generator.rb +0 -3
  75. data/lib/generators/coalla/cms/image/mount_generator.rb +0 -3
  76. data/lib/generators/coalla/cms/image/templates/mount/uploader.rb.erb +1 -1
  77. data/lib/generators/coalla/cms/image/templates/uploader.rb.erb +1 -1
  78. data/lib/generators/coalla/cms/init_generator.rb +42 -49
  79. data/lib/generators/coalla/cms/lookups/install_generator.rb +0 -3
  80. data/lib/generators/coalla/cms/meta_tags/install_generator.rb +0 -2
  81. data/lib/generators/coalla/cms/scaffold_generator.rb +7 -7
  82. data/lib/generators/coalla/cms/setup_admin_generator.rb +9 -9
  83. data/lib/generators/coalla/cms/setup_routes_generator.rb +3 -3
  84. data/lib/generators/coalla/cms/slider/init_generator.rb +1 -3
  85. data/lib/generators/coalla/cms/slider/templates/slider_image.rb.erb +0 -1
  86. data/lib/generators/coalla/cms/slider/templates/slider_image_uploader.rb.erb +1 -1
  87. data/lib/generators/coalla/cms/templates/.gitignore +3 -3
  88. data/lib/generators/coalla/cms/templates/controllers/admin/administrators_controller.rb +2 -40
  89. data/lib/generators/coalla/cms/templates/controllers/admin/scaffold_controller_template.rb.erb +0 -39
  90. data/lib/generators/coalla/cms/templates/initializers/carrierwave.rb +0 -90
  91. data/lib/generators/coalla/cms/templates/locales/activerecord.en.yml +14 -1
  92. data/lib/generators/coalla/cms/templates/views/admin/administrators/_form.html.haml +1 -1
  93. data/lib/generators/coalla/cms/templates/views/admin/administrators/edit.html.haml +1 -1
  94. data/lib/generators/coalla/cms/templates/views/admin/administrators/index.html.haml +5 -5
  95. data/lib/generators/coalla/cms/templates/views/admin/administrators/new.html.haml +1 -1
  96. data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/_form.html.haml.erb +1 -1
  97. data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/edit.html.haml.erb +1 -1
  98. data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/index.html.haml.erb +5 -5
  99. data/lib/generators/coalla/cms/templates/views/admin/scaffold_template/new.html.haml.erb +1 -1
  100. data/lib/generators/coalla/cms/templates/views/administrators/sessions/new.html.haml +1 -1
  101. data/lib/generators/coalla/cms/utils/orm.rb +29 -0
  102. data/lib/generators/coalla/cms/utils/scaffold.rb +11 -0
  103. metadata +60 -145
  104. data/Gemfile.lock +0 -198
  105. data/app/assets/stylesheets/admin/vendor/token-input-facebook.patched.css +0 -126
  106. data/app/assets/stylesheets/admin/vendor/token-input.patched.css +0 -116
  107. data/app/controllers/admin/notifier_controller.rb +0 -7
  108. data/app/helpers/admin_helper.rb +0 -29
  109. data/app/helpers/nested_fields_helper.rb +0 -12
  110. data/app/helpers/static_text_formatter.rb +0 -25
  111. data/app/helpers/twitter_builder_helper.rb +0 -253
  112. data/app/helpers/twitter_form_builder.rb +0 -202
  113. data/app/uploaders/file_uploader.rb +0 -10
  114. data/app/uploaders/generic_image_uploader.rb +0 -74
  115. data/app/uploaders/meta_tags_image_uploader.rb +0 -5
  116. data/app/utils/admin_structure.rb +0 -82
  117. data/app/utils/bootstrap_link_renderer.rb +0 -40
  118. data/app/utils/table_helpers.rb +0 -196
  119. data/lib/generators/coalla/cms/market/install_generator.rb +0 -71
  120. data/lib/generators/coalla/cms/market/templates/controllers/categories_controller.rb +0 -47
  121. data/lib/generators/coalla/cms/market/templates/controllers/products_controller.rb +0 -50
  122. data/lib/generators/coalla/cms/market/templates/controllers/properties_controller.rb +0 -59
  123. data/lib/generators/coalla/cms/market/templates/market.rb +0 -5
  124. data/lib/generators/coalla/cms/market/templates/market.ru.yml +0 -53
  125. data/lib/generators/coalla/cms/market/templates/migrations/create_categories.rb +0 -15
  126. data/lib/generators/coalla/cms/market/templates/migrations/create_product_properties.rb +0 -18
  127. data/lib/generators/coalla/cms/market/templates/migrations/create_products.rb +0 -18
  128. data/lib/generators/coalla/cms/market/templates/migrations/create_properties.rb +0 -11
  129. data/lib/generators/coalla/cms/market/templates/models/category.rb +0 -36
  130. data/lib/generators/coalla/cms/market/templates/models/product.rb +0 -16
  131. data/lib/generators/coalla/cms/market/templates/models/product_property.rb +0 -14
  132. data/lib/generators/coalla/cms/market/templates/models/property.rb +0 -7
  133. data/lib/generators/coalla/cms/market/templates/views/categories/_form.html.haml +0 -10
  134. data/lib/generators/coalla/cms/market/templates/views/categories/edit.html.haml +0 -5
  135. data/lib/generators/coalla/cms/market/templates/views/categories/index.html.haml +0 -17
  136. data/lib/generators/coalla/cms/market/templates/views/categories/new.html.haml +0 -4
  137. data/lib/generators/coalla/cms/market/templates/views/products/_form.html.haml +0 -17
  138. data/lib/generators/coalla/cms/market/templates/views/products/_product_property_fields.html.haml +0 -13
  139. data/lib/generators/coalla/cms/market/templates/views/products/edit.html.haml +0 -5
  140. data/lib/generators/coalla/cms/market/templates/views/products/index.html.haml +0 -17
  141. data/lib/generators/coalla/cms/market/templates/views/products/new.html.haml +0 -4
  142. data/lib/generators/coalla/cms/market/templates/views/properties/_form.html.haml +0 -9
  143. data/lib/generators/coalla/cms/market/templates/views/properties/edit.html.haml +0 -5
  144. data/lib/generators/coalla/cms/market/templates/views/properties/index.html.haml +0 -15
  145. data/lib/generators/coalla/cms/market/templates/views/properties/new.html.haml +0 -4
  146. data/lib/generators/coalla/cms/news/scaffold_generator.rb +0 -50
  147. data/lib/generators/coalla/cms/news/templates/entity.rb.erb +0 -10
  148. data/lib/generators/coalla/cms/news/templates/entity_controller_template.rb.erb +0 -47
  149. data/lib/generators/coalla/cms/news/templates/entity_image_uploader.rb.erb +0 -7
  150. data/lib/generators/coalla/cms/news/templates/migration.rb.erb +0 -15
  151. data/lib/generators/coalla/cms/news/templates/views/_form.haml.erb +0 -16
  152. data/lib/generators/coalla/cms/news/templates/views/edit.haml.erb +0 -5
  153. data/lib/generators/coalla/cms/news/templates/views/index.haml.erb +0 -18
  154. data/lib/generators/coalla/cms/news/templates/views/new.haml.erb +0 -5
  155. data/lib/generators/coalla/cms/orm_helpers.rb +0 -31
  156. data/lib/generators/coalla/cms/scaffold_helper.rb +0 -11
  157. data/lib/generators/coalla/cms/templates/controllers/admin/base_controller.rb.erb +0 -35
@@ -4,8 +4,7 @@ require 'rails/generators/active_record'
4
4
  module Coalla
5
5
  module Cms
6
6
  module Slider
7
-
8
- class InitGenerator < ::ActiveRecord::Generators::Base
7
+ class InitGenerator < ActiveRecord::Generators::Base
9
8
  argument :name, type: :string, default: 'SliderImage'
10
9
  source_root File.expand_path('../templates', __FILE__)
11
10
 
@@ -33,7 +32,6 @@ module Coalla
33
32
  inject_into_file 'config/routes.rb', "\n #{routing_code}", {:after => sentinel, :verbose => false}
34
33
  end
35
34
  end
36
-
37
35
  end
38
36
  end
39
37
  end
@@ -1,7 +1,6 @@
1
1
  class <%= @class_name %> < ActiveRecord::Base
2
2
 
3
3
  mount_uploader :image, <%= @uploader_name %>
4
- acts_as_list scope: 'container_slider_id = #{container_slider_id} AND slider_type = \'#{slider_type}\''
5
4
 
6
5
  def self.with_type(slider_type)
7
6
  where(slider_type: slider_type)
@@ -1,4 +1,4 @@
1
- class <%= @uploader_name %> < GenericImageUploader
1
+ class <%= @uploader_name %> < Coalla::ImageUploader
2
2
 
3
3
  version :thumb do
4
4
  resize_to_fill 80, 80
@@ -1,5 +1,4 @@
1
1
  .bundle
2
- Gemfile.lock
3
2
  db/*.sqlite3
4
3
  log/*.log
5
4
  tmp/
@@ -10,9 +9,7 @@ db/*.sqlite3-journal
10
9
  *.log
11
10
  tmp
12
11
  tmp/**/*
13
-
14
12
  /db/sphinx
15
- /db/schema.rb
16
13
  /log/development.sphinx.pid
17
14
 
18
15
  # Documentation
@@ -84,3 +81,6 @@ capybara-*html
84
81
  .rvmrc
85
82
  .rvmrc.*
86
83
 
84
+ node_modules
85
+ node_modules/*
86
+
@@ -2,35 +2,9 @@ module Admin
2
2
 
3
3
  class AdministratorsController < BaseController
4
4
 
5
- PER_PAGE = 20
6
-
7
- def index
8
- @administrators = Administrator.order(created_at: :desc).paginate(page: params[:page], per_page: PER_PAGE)
9
- end
10
-
11
- def new
12
- @administrator = Administrator.new
13
- end
14
-
15
- def create
16
- @administrator = Administrator.new(params[:administrator].permit!)
17
- if @administrator.save
18
- redirect_or_render :edit
19
- else
20
- render :new
21
- end
22
- end
23
-
24
- def edit
25
- @administrator = Administrator.find(params[:id])
26
- end
27
-
28
5
  def update
29
- @administrator = Administrator.find(params[:id])
30
- success = administrator_params[:password].present? ? @administrator.update(administrator_params) : @administrator.update_without_password(administrator_params)
31
- if current_administrator == @administrator
32
- sign_in(@administrator, bypass: true)
33
- end
6
+ success = administrator_params[:password].present? ? resource.update(administrator_params) : resource.update_without_password(resource_params)
7
+ sign_in(resource, bypass: true) if current_administrator == resource
34
8
  if success
35
9
  redirect_or_render :edit
36
10
  else
@@ -38,18 +12,6 @@ module Admin
38
12
  end
39
13
  end
40
14
 
41
- def destroy
42
- @administrator = Administrator.find(params[:id])
43
- @administrator.destroy
44
- redirect_to_last
45
- end
46
-
47
- private
48
-
49
- def administrator_params
50
- params[:administrator].permit!
51
- end
52
-
53
15
  end
54
16
 
55
17
  end
@@ -1,45 +1,6 @@
1
1
  module Admin
2
2
 
3
3
  class <%= name.camelize.pluralize %>Controller < BaseController
4
-
5
- PER_PAGE = 20
6
-
7
- def index
8
- @<%= @collection_name %> = <%= @class_name %>.order(created_at: :desc).paginate(page: params[:page], per_page: PER_PAGE)
9
- end
10
-
11
- def new
12
- @<%= @instance_name %> = <%= @class_name %>.new
13
- end
14
-
15
- def create
16
- @<%= @instance_name %> = <%= @class_name %>.new(params[:<%= @instance_name %>].permit!)
17
- if @<%= @instance_name %>.save
18
- redirect_or_render :edit
19
- else
20
- render :new
21
- end
22
- end
23
-
24
- def edit
25
- @<%= @instance_name %> = <%= @class_name %>.find(params[:id])
26
- end
27
-
28
- def update
29
- @<%= @instance_name %> = <%= @class_name %>.find(params[:id])
30
- if @<%= @instance_name %>.update_attributes(params[:<%= @instance_name %>].permit!)
31
- redirect_or_render :edit
32
- else
33
- render :edit
34
- end
35
- end
36
-
37
- def destroy
38
- @<%= @instance_name %> = <%= @class_name %>.find(params[:id])
39
- @<%= @instance_name %>.destroy
40
- redirect_to_last
41
- end
42
-
43
4
  end
44
5
 
45
6
  end
@@ -5,94 +5,4 @@ unless RUBY_PLATFORM.downcase.include?("win") || RUBY_PLATFORM.downcase.include?
5
5
 
6
6
  CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
7
7
 
8
- end
9
-
10
- if RUBY_VERSION == "1.9.3"
11
-
12
- module CarrierWave
13
-
14
- class SanitizedFile
15
-
16
- private
17
-
18
- # Sanitize the filename, to prevent hacking
19
- def sanitize(name)
20
- name = name.force_encoding(Encoding::UTF_8)
21
- name = name.gsub("\\", "/") # work-around for IE
22
- name = File.basename(name)
23
- name = name.gsub(sanitize_regexp, "_")
24
- name = "_#{name}" if name =~ /\A\.+\z/
25
- name = "unnamed" if name.size == 0
26
- return name.mb_chars.to_s
27
- end
28
-
29
- end
30
-
31
- end
32
-
33
- module CarrierWave
34
-
35
- module Mount
36
-
37
- class Mounter
38
-
39
- def url(*args)
40
- url = uploader.url(*args)
41
- url = url.force_encoding(Encoding::UTF_8) if url
42
- url
43
- end
44
-
45
- end
46
-
47
- end
48
-
49
- end
50
-
51
- end
52
-
53
-
54
- # for STI
55
- module CarrierWave
56
-
57
- module Mount
58
-
59
- class Mounter
60
-
61
- def cache_name=(cache_name)
62
- unless uploader.cached?
63
- result = uploader.retrieve_from_cache!(cache_name)
64
- record.send("#{serialization_column}_will_change!")
65
- result
66
- end
67
- rescue CarrierWave::InvalidParameter
68
- end
69
-
70
- end
71
-
72
- end
73
-
74
- end
75
-
76
-
77
- # override presence validator
78
- module Carrierwave
79
- module Validations
80
- class PresenceValidator < ActiveRecord::Validations::PresenceValidator # :nodoc:
81
- def validate_each(record, attr_name, value)
82
- record.errors.add(attr_name, :blank, options) if value.blank? || carrier_wave_image_present?(record, attr_name)
83
- end
84
-
85
- private
86
-
87
- def carrier_wave_image_present?(record, attr_name)
88
- (record.send(attr_name).try(:is_a?, CarrierWave::Uploader::Base) && record.try("remove_#{attr_name}?"))
89
- end
90
- end
91
- end
92
- end
93
-
94
- ActiveRecord::Base.instance_eval do
95
- def validates_presence_of(*attr_names)
96
- validates_with Carrierwave::Validations::PresenceValidator, _merge_attributes(attr_names)
97
- end
98
8
  end
@@ -3,6 +3,7 @@ en:
3
3
  models:
4
4
  administrator: Administrators
5
5
  lookup: Settings
6
+ site_meta_tags: Meta-Tags
6
7
  structure:
7
8
  administrator: Administrators list management
8
9
 
@@ -13,4 +14,16 @@ en:
13
14
  lookup:
14
15
  code: Name
15
16
  value: Value
16
-
17
+ file_name: Filename
18
+ site_meta_tags:
19
+ identifier: Identifier
20
+ identifier_text: Page identifier
21
+ site: Site
22
+ title: Title
23
+ description: Description
24
+ image: Image
25
+ url: URL
26
+ og_title: Title
27
+ og_description: Description
28
+ og_image: Image
29
+ og_url: URL
@@ -1,4 +1,4 @@
1
- = twitter_form_for [:admin, @administrator] do |f|
1
+ = twitter_form_for [:admin, resource] do |f|
2
2
  = field_set do
3
3
  = f.errors
4
4
  = flash_messages
@@ -1,4 +1,4 @@
1
- %h1= Administrator.model_name.human
1
+ %h1= resource_model.model_name.human
2
2
  .page-header
3
3
  %h3= t('admin.form.edit')
4
4
 
@@ -1,15 +1,15 @@
1
1
  .page-header
2
- %h1= Administrator.model_name.human
2
+ %h1= resource_model.model_name.human
3
3
 
4
4
  = actions do
5
- = create_link(new_admin_administrator_path)
5
+ = create_link
6
6
 
7
- = table_for(Administrator).content(@administrators) do |t|
7
+ = table_for(resource_model).content(resources) do |t|
8
8
  - t.column :email
9
9
  - t.edit
10
10
  - t.delete if: ->(admin) { current_administrator != admin }
11
11
 
12
- = admin_paginate @administrators
12
+ = admin_paginate resources
13
13
 
14
14
  = actions do
15
- = create_link(new_admin_administrator_path)
15
+ = create_link
@@ -1,4 +1,4 @@
1
- %h1= Administrator.model_name.human
1
+ %h1= resource_model.model_name.human
2
2
  .page-header
3
3
  %h3 Добавление
4
4
  = render 'form'
@@ -1,4 +1,4 @@
1
- = twitter_form_for [:admin, @<%= @instance_name %>] do |f|
1
+ = twitter_form_for [:admin, resource] do |f|
2
2
  = field_set do
3
3
  = f.errors
4
4
  = flash_messages
@@ -1,4 +1,4 @@
1
- %h1= <%= @class_name.constantize %>.model_name.human
1
+ %h1= resource_model.model_name.human
2
2
  .page-header
3
3
  %h3= t('admin.form.edit')
4
4
 
@@ -1,15 +1,15 @@
1
1
  .page-header
2
- %h1= <%= @class_name.constantize %>.model_name.human
2
+ %h1= resource_model.model_name.human
3
3
 
4
4
  = actions do
5
- = create_link(new_admin_<%= @instance_name %>_path)
5
+ = create_link
6
6
 
7
- = table_for(<%= @class_name.constantize %>).content(@<%= @collection_name %>) do |t|
7
+ = table_for(resource_model).content(resources) do |t|
8
8
  <% @table_columns.each do |column| %><% if @reflections[column[0]] %>- t.column :<%= @reflections[column[0]].name %>, format: ->(c) { c.try(:<%= cms_select_name(@reflections[column[0]].klass) %>) }<% else %>- t.column :<%= column[0]%><% end %>
9
9
  <% end %>- t.edit
10
10
  - t.delete
11
11
 
12
- = admin_paginate @<%= @collection_name %>
12
+ = admin_paginate resources
13
13
 
14
14
  = actions do
15
- = create_link(new_admin_<%= @instance_name %>_path)
15
+ = create_link
@@ -1,4 +1,4 @@
1
- %h1= <%= @class_name.constantize %>.model_name.human
1
+ %h1= resource_model.model_name.human
2
2
  .page-header
3
3
  %h3= t('admin.form.new')
4
4
  = render 'form'
@@ -6,7 +6,7 @@
6
6
  %h3= t('admin.auth.title')
7
7
 
8
8
  = twitter_form_for(resource, url: session_path(resource_name), width_class: 'col-md-8') do |f|
9
- = flash_alert_messages
9
+ = render_alert(flash[:alert], :danger)
10
10
  = f.string :email
11
11
  = f.password :password
12
12
 
@@ -0,0 +1,29 @@
1
+ module Coalla
2
+ module Cms
3
+ module Utils
4
+ module Orm
5
+ def model_contents
6
+ <<-CONTENT
7
+ devise :database_authenticatable, :rememberable, :validatable
8
+ CONTENT
9
+ end
10
+
11
+ def model_exists?
12
+ File.exists?(File.join(destination_root, model_path))
13
+ end
14
+
15
+ def migration_exists?(table_name)
16
+ Dir.glob("#{File.join(destination_root, migration_path)}/[0-9]*_*.rb").grep(/\d+_add_admin_role_to_#{table_name}.rb$/).first
17
+ end
18
+
19
+ def migration_path
20
+ @migration_path ||= File.join('db', 'migrate')
21
+ end
22
+
23
+ def model_path
24
+ @model_path ||= File.join('app', 'models', "#{file_path}.rb")
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,11 @@
1
+ module Coalla
2
+ module Cms
3
+ module Utils
4
+ module Scaffold
5
+ def cms_select_name(klass)
6
+ (([:title, :name, :caption] & klass.new.methods) << :id).first
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end