easy_cms 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +31 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/easy_cms.gemspec +36 -0
  13. data/lib/easy_cms.rb +5 -0
  14. data/lib/easy_cms/version.rb +3 -0
  15. data/lib/generators/easy_cms/model/model_generator.rb +71 -0
  16. data/lib/generators/easy_cms/model/templates/controllers/model_controller.erb +55 -0
  17. data/lib/generators/easy_cms/model/templates/layouts/_form.html.erb +26 -0
  18. data/lib/generators/easy_cms/model/templates/layouts/edit.html.erb +13 -0
  19. data/lib/generators/easy_cms/model/templates/layouts/index.html.erb +37 -0
  20. data/lib/generators/easy_cms/model/templates/layouts/item_navegation.html.erb +19 -0
  21. data/lib/generators/easy_cms/model/templates/layouts/new.html.erb +13 -0
  22. data/lib/generators/easy_cms/model/templates/layouts/show.html.erb +22 -0
  23. data/lib/generators/easy_cms/namespace/namespace_generator.rb +45 -0
  24. data/lib/generators/easy_cms/namespace/templates/assets/base_javascript.erb +3 -0
  25. data/lib/generators/easy_cms/namespace/templates/assets/base_scss.erb +1 -0
  26. data/lib/generators/easy_cms/namespace/templates/controllers/base_controller.erb +5 -0
  27. data/lib/generators/easy_cms/namespace/templates/layouts/layout.html.erb +71 -0
  28. data/lib/generators/resource_helpers.rb +31 -0
  29. data/vendor/assets/javascripts/.keep +0 -0
  30. data/vendor/assets/javascripts/easy_cms/base.js +351 -0
  31. data/vendor/assets/javascripts/easy_cms/bootstrap-notify.js +404 -0
  32. data/vendor/assets/javascripts/easy_cms/bootstrap.min.js +7 -0
  33. data/vendor/assets/javascripts/easy_cms/chartist.min.js +9 -0
  34. data/vendor/assets/javascripts/easy_cms/demo.js +183 -0
  35. data/vendor/assets/javascripts/easy_cms/jquery-3.1.0.min.js +4 -0
  36. data/vendor/assets/javascripts/easy_cms/material.min.js +1 -0
  37. data/vendor/assets/stylesheets/.keep +0 -0
  38. data/vendor/assets/stylesheets/easy_cms/bootstrap.min.css +5 -0
  39. data/vendor/assets/stylesheets/easy_cms/demo.css +64 -0
  40. data/vendor/assets/stylesheets/easy_cms/easy_cms.css +5065 -0
  41. data/vendor/assets/stylesheets/easy_cms/easy_cms_sass.scss +51 -0
  42. data/vendor/assets/stylesheets/easy_cms/md/_alerts.scss +57 -0
  43. data/vendor/assets/stylesheets/easy_cms/md/_buttons.scss +259 -0
  44. data/vendor/assets/stylesheets/easy_cms/md/_cards.scss +337 -0
  45. data/vendor/assets/stylesheets/easy_cms/md/_chartist.scss +254 -0
  46. data/vendor/assets/stylesheets/easy_cms/md/_checkboxes.scss +193 -0
  47. data/vendor/assets/stylesheets/easy_cms/md/_colors.scss +325 -0
  48. data/vendor/assets/stylesheets/easy_cms/md/_dialogs.scss +99 -0
  49. data/vendor/assets/stylesheets/easy_cms/md/_dropdown.scss +67 -0
  50. data/vendor/assets/stylesheets/easy_cms/md/_footers.scss +44 -0
  51. data/vendor/assets/stylesheets/easy_cms/md/_forms.scss +58 -0
  52. data/vendor/assets/stylesheets/easy_cms/md/_inputs-size.scss +223 -0
  53. data/vendor/assets/stylesheets/easy_cms/md/_inputs.scss +394 -0
  54. data/vendor/assets/stylesheets/easy_cms/md/_misc.scss +115 -0
  55. data/vendor/assets/stylesheets/easy_cms/md/_mixins.scss +422 -0
  56. data/vendor/assets/stylesheets/easy_cms/md/_navbars.scss +329 -0
  57. data/vendor/assets/stylesheets/easy_cms/md/_pills.scss +117 -0
  58. data/vendor/assets/stylesheets/easy_cms/md/_popups.scss +77 -0
  59. data/vendor/assets/stylesheets/easy_cms/md/_radios.scss +114 -0
  60. data/vendor/assets/stylesheets/easy_cms/md/_responsive.scss +453 -0
  61. data/vendor/assets/stylesheets/easy_cms/md/_ripples.scss +40 -0
  62. data/vendor/assets/stylesheets/easy_cms/md/_shadows.scss +138 -0
  63. data/vendor/assets/stylesheets/easy_cms/md/_sidebar-and-main-panel.scss +260 -0
  64. data/vendor/assets/stylesheets/easy_cms/md/_tables.scss +45 -0
  65. data/vendor/assets/stylesheets/easy_cms/md/_tabs.scss +53 -0
  66. data/vendor/assets/stylesheets/easy_cms/md/_togglebutton.scss +87 -0
  67. data/vendor/assets/stylesheets/easy_cms/md/_typography.scss +75 -0
  68. data/vendor/assets/stylesheets/easy_cms/md/_variables.scss +1127 -0
  69. data/vendor/assets/stylesheets/easy_cms/md/mixins/_chartist.scss +89 -0
  70. data/vendor/assets/stylesheets/easy_cms/md/mixins/_transparency.scss +20 -0
  71. data/vendor/assets/stylesheets/easy_cms/md/mixins/_vendor-prefixes.scss +185 -0
  72. data/vendor/assets/stylesheets/easy_cms/md/plugins/_animate.scss +227 -0
  73. data/vendor/assets/stylesheets/easy_cms/md/plugins/_plugin-nouislider.scss +161 -0
  74. metadata +174 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 11dc8e7d025170228a31bcb731e3bc68d3908099
4
+ data.tar.gz: 082b29dbd93902fd24450d14e22950af4bd51be9
5
+ SHA512:
6
+ metadata.gz: d26bfdec362e0eb2217e3194fdafe25a476f88e80cfee573c4f070e7c10150e8501c57ab40594117f6d6b087c687ec4a3cb723dfd7ff32f7917e05b735ff207e
7
+ data.tar.gz: 5ffaf134d3f613560006b7c48972bd938c4fedc59d2d757d13fadff6ce440a4520a54ae8215779b2332fe33e8e28e78ccc4f9680a91f2be6f4d3abd9b14733ea
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.2.2
5
+ before_install: gem install bundler -v 1.14.3
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at 14tinchov@gmail.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in easy_cms.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Martin Villalba
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,31 @@
1
+ # EasyCms
2
+
3
+ A simple CMS with [Material template](https://www.creative-tim.com/product/material-dashboard), this gem helps to create a scaffold with a template to panel admin.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'jquery-rails'
11
+ gem 'easy_cms'
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ First create a model with attributes, run the migrations and run the following command:
17
+
18
+ ```
19
+ rails generate easy_cms:model NAMESPACE MODEL
20
+ ```
21
+
22
+ Example: ```rails generate easy_cms:model admin post```
23
+
24
+ ## Contributing
25
+
26
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Martin Villalba/easy_cms. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
27
+
28
+ ## License
29
+
30
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
31
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "easy_cms"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'easy_cms/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.add_dependency "jquery-rails", "~> 4.3"
8
+
9
+ spec.name = "easy_cms"
10
+ spec.version = EasyCms::VERSION
11
+ spec.authors = ["Martin Villalba"]
12
+ spec.email = ["14tinchov@gmail.com"]
13
+
14
+ spec.summary = %q{Create a simple CMS with a Material Template}
15
+ spec.description = %q{Create a simple CMS with a Material Template and create scaffolding with automated task styles}
16
+ spec.homepage = "https://github.com/14tinchov/easy_cms"
17
+ spec.license = "MIT"
18
+
19
+ if spec.respond_to?(:metadata)
20
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
21
+ else
22
+ raise "RubyGems 2.0 or newer is required to protect against " \
23
+ "public gem pushes."
24
+ end
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.14"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "rspec", "~> 3.0"
36
+ end
@@ -0,0 +1,5 @@
1
+ require "easy_cms/version"
2
+
3
+ module EasyCms
4
+ class Engine < ::Rails::Engine; end
5
+ end
@@ -0,0 +1,3 @@
1
+ module EasyCms
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,71 @@
1
+ require 'generators/resource_helpers'
2
+
3
+ module EasyCms
4
+ module Generators
5
+ class ModelGenerator < Rails::Generators::Base
6
+ include ResourceHelpers
7
+
8
+ source_root File.expand_path("../templates", __FILE__)
9
+ desc "This generator create a Namespace and Scaffold model to CMS"
10
+ argument :namespace, :type => :string, :required => :true
11
+ argument :model , :type => :string, :required => :true
12
+
13
+ def create_namespace
14
+ generate "easy_cms:namespace #{namespace}"
15
+ end
16
+
17
+ def generate_model_controller
18
+ file_name = "app/controllers/#{namespace}/#{model.pluralize}_controller.rb"
19
+ template './controllers/model_controller.erb', file_name, options_params
20
+ end
21
+
22
+ def add_navegation
23
+ path = build_path("easy_cms/model/templates/layouts/item_navegation.html.erb")
24
+ insert_into_file "app/views/layouts/#{namespace}.html.erb", read_file(path), :after => "<!-- Easy CMS - nav - don't delete this line -->\n"
25
+ end
26
+
27
+ def generate_model_layouts
28
+ generate_action_layout('index')
29
+ generate_action_layout('show')
30
+ generate_action_layout('new')
31
+ generate_action_layout('edit')
32
+ generate_action_layout('_form')
33
+ end
34
+
35
+ def generate_route
36
+ easy_cms_route = %Q(namespace :#{namespace} do\n resources :#{model.pluralize}\n end)
37
+ route easy_cms_route
38
+ end
39
+
40
+ private
41
+ def generate_action_layout(action)
42
+ file_name = "app/views/#{namespace}/#{model.pluralize}/#{action}.html.erb"
43
+ template "./layouts/#{action}.html.erb", file_name, options_params
44
+ end
45
+
46
+ def model_attributes
47
+ @model_attributes ||= get_model_attributes(options_params[:model_cap])
48
+ end
49
+
50
+ def options_params
51
+ {
52
+ :namespace => namespace,
53
+ :namespace_cap => namespace.capitalize,
54
+ :model => model,
55
+ :model_plu => model.pluralize,
56
+ :model_cap => model.capitalize,
57
+ :model_cap_plu => model.capitalize.pluralize
58
+ }
59
+ end
60
+
61
+ def build_params_controller
62
+ return '' unless model_attributes.any?
63
+ params = ''
64
+ model_attributes.each do |a|
65
+ params += a != model_attributes.last ? ":#{a[:name]}, " : ":#{a[:name]}"
66
+ end
67
+ params
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,55 @@
1
+ <%= %Q(class #{config[:namespace_cap]}::#{config[:model_cap_plu]}Controller < #{config[:namespace_cap]}::BaseController
2
+ before_action :set_#{config[:model]}, only: [:show, :edit, :update, :destroy]
3
+
4
+ def index
5
+ @#{config[:model_plu]} = #{config[:model_cap]}.all
6
+ end
7
+
8
+ def show
9
+ end
10
+
11
+ def new
12
+ @#{config[:model]} = #{config[:model_cap]}.new
13
+ end
14
+
15
+ def edit
16
+ end
17
+
18
+ def create
19
+ @#{config[:model]} = #{config[:model_cap]}.new(#{config[:model]}_params)
20
+ respond_to do |format|
21
+ if @#{config[:model]}.save
22
+ format.html { redirect_to [:#{config[:namespace]}, @#{config[:model]}], notice: '#{config[:model_cap]} was successfully created.' }
23
+ else
24
+ format.html { render :new }
25
+ end
26
+ end
27
+ end
28
+
29
+ def update
30
+ respond_to do |format|
31
+ if @#{config[:model]}.update(#{config[:model]}_params)
32
+ format.html { redirect_to [:#{config[:namespace]}, @#{config[:model]}], notice: '#{config[:model_cap]} was successfully updated.' }
33
+ else
34
+ format.html { render :edit }
35
+ end
36
+ end
37
+ end
38
+
39
+ def destroy
40
+ @#{config[:model]}.destroy
41
+ respond_to do |format|
42
+ format.html { redirect_to #{config[:namespace]}_#{config[:model_plu]}_url, notice: '#{config[:model_cap]} was successfully destroyed.' }
43
+ end
44
+ end
45
+
46
+ private
47
+ def set_#{config[:model]}
48
+ @#{config[:model]} = #{config[:model_cap]}.find(params[:id])
49
+ end
50
+
51
+ def #{config[:model]}_params
52
+ params.require(:#{config[:model]}).permit(#{build_params_controller})
53
+ end
54
+ end
55
+ )%>
@@ -0,0 +1,26 @@
1
+ <%%= form_for([:<%= options_params[:namespace] %>, <%= options_params[:model] %>]) do |f| %>
2
+ <%% if <%= options_params[:model] %>.errors.any? %>
3
+ <div class="col-md-12">
4
+ <h2><%%= pluralize(<%= options_params[:model] %>.errors.count, "error") %> prohibited this <%= options_params[:model] %> from being saved:</h2>
5
+
6
+ <ul>
7
+ <%% <%= options_params[:model] %>.errors.full_messages.each do |message| %>
8
+ <li><%%= message %></li>
9
+ <%% end %>
10
+ </ul>
11
+ </div>
12
+ <%% end %>
13
+ <%- model_attributes.each do |a| %>
14
+ <div class="col-md-12">
15
+ <div class="form-group label-floating is-empty">
16
+ <%%= f.label :<%= a[:name] %>, class: "control-label" %>
17
+ <%%= f.text_field :<%= a[:name] %>, class: "form-control" %>
18
+ <span class="material-input"></span>
19
+ </div>
20
+ </div><% end %>
21
+
22
+ <div class="actions">
23
+ <%%= f.submit class: "btn btn-primary" %>
24
+ <%%= link_to 'Back', <%= options_params[:namespace] %>_<%= options_params[:model_plu] %>_path %>
25
+ </div>
26
+ <%% end %>
@@ -0,0 +1,13 @@
1
+ <div class="row">
2
+ <div class="col-md-12">
3
+ <div class="card">
4
+ <div class="card-header" data-background-color="purple">
5
+ <h4 class="title">Edit <%= options_params[:model_cap] %></h4>
6
+ </div>
7
+
8
+ <div class="card-content">
9
+ <%%= render 'form', <%= options_params[:model] %>: @<%= options_params[:model] %> %>
10
+ </div>
11
+ </div>
12
+ </div>
13
+ </div>
@@ -0,0 +1,37 @@
1
+ <div class="row">
2
+ <div class="col-md-12">
3
+ <div class="card">
4
+ <div class="card-header" data-background-color="purple">
5
+ <h4 class="title"><%= options_params[:model_cap_plu] %></h4>
6
+ <p class="category">Here is a subtitle for this table</p>
7
+ </div>
8
+ <div class="card-content table-responsive">
9
+ <table class="table">
10
+ <thead class="text-primary">
11
+ <tr><%- model_attributes.each do |a| %>
12
+ <th><%= a[:name].capitalize %></th><% end %>
13
+ </tr>
14
+ </thead>
15
+ <%%- @<%= options_params[:model_plu] %>.each do |<%= options_params[:model] %>| %>
16
+ <tr>
17
+ <tr><%- model_attributes.each do |a| %>
18
+ <td><%%= <%= options_params[:model] %>.<%= a[:name] %> %></td><% end %>
19
+ <td><%%= link_to 'Show', <%= options_params[:namespace] %>_<%= options_params[:model] %>_path(<%= options_params[:model] %>) %></td>
20
+ <td><%%= link_to 'Edit', edit_<%= options_params[:namespace] %>_<%= options_params[:model] %>_path(<%= options_params[:model] %>) %></td>
21
+ <td><%%= link_to 'Destroy', <%= options_params[:namespace] %>_<%= options_params[:model] %>_path(<%= options_params[:model] %>), method: :delete, data: { confirm: 'Are you sure?' } %></td>
22
+ </tr>
23
+ </tr>
24
+ <%% end %>
25
+ <tbody>
26
+ </tbody>
27
+ </table>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+
33
+ <div class="row">
34
+ <div class="col-md-12 text-center">
35
+ <%%= link_to 'Create', new_<%= options_params[:namespace] %>_<%= options_params[:model] %>_path, class: "btn btn-primary" %>
36
+ </div>
37
+ </div>