Skip to content

Commit

Permalink
Add the first version of the CRUD addon with a simple bootstrap layout
Browse files Browse the repository at this point in the history
  • Loading branch information
malparty committed Nov 29, 2023
1 parent 87b6039 commit dd031b2
Show file tree
Hide file tree
Showing 8 changed files with 162 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test_generated_app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ env:
DOCKER_REGISTRY_TOKEN: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
RUBY_VERSION: 3.2.2
NODE_VERSION: 16
RAILS_VERSION: 7.0.6
RAILS_VERSION: 7.0.8

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test_production_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ env:
DOCKER_REGISTRY_HOST: ${{ secrets.DOCKER_REGISTRY_HOST }}
RUBY_VERSION: 3.2.2
NODE_VERSION: 16
RAILS_VERSION: 7.0.6
RAILS_VERSION: 7.0.8

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand Down
25 changes: 25 additions & 0 deletions .template/addons/crud/app/views/layouts/application.html.slim.tt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
doctype html
html lang= I18n.locale
head
meta charset="utf-8"
meta name="viewport" content="width=device-width, initial-scale=1.0"
title= content_for?(:title) ? yield(:title) : '<%= app_name %>'
= csrf_meta_tags
= csp_meta_tag
= stylesheet_link_tag 'application', :media => 'all'
= javascript_include_tag "application"

body class=class_names(controller_name.dasherize, action_name.dasherize)
header
= render('layouts/application/nav_bar_top')
.app
.side_bar
= render('layouts/application/side_bar')
.app__container
main.app__main
= yield
footer.app__footer
p.text-center.text-muted
| &copy;
= ' <%= app_name %>'
= Date.today.year
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
.app__nav_bar_top
nav.navbar.navbar-expand-lg.navbar-light.bg-light
.container-fluid
a.navbar-brand[href="#"]
| NavbarTop
button.navbar-toggler[type="button" data-bs-toggle="collapse" data-bs-target="#top_navbar_nav" aria-controls="top_navbar_nav" aria-expanded="false" aria-label="Toggle navigation"]
span.navbar-toggler-icon
#top_navbar_nav.collapse.navbar-collapse
ul.navbar-nav.me-auto.mb-2.mb-lg-0
li.nav-item
a.nav-link.active[aria-current="page" href="#"]
| Home
li.nav-item
a.nav-link[href="#"]
| Link
li.nav-item
a.nav-link.disabled[href="#" tabindex="-1" aria-disabled="true"]
| Disabled
li.nav-item.dropdown
a#dropdown09.nav-link.dropdown-toggle[href="#" data-bs-toggle="dropdown" aria-expanded="false"]
| Account
ul.dropdown-menu[aria-labelledby="dropdown09"]
li
a.dropdown-item[href="#"]
| Profile
li
a.dropdown-item[href="#"]
| Settings
li
a.dropdown-item[href="#"]
| Logout
form
input.form-control[type="text" placeholder="Search" aria-label="Search"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
.app__side_bar
a.d-flex.align-items-center.mb-3.mb-md-0.me-md-auto.link-dark.text-decoration-none[href="/"]
svg.bi.pe-none.me-2[width="40" height="32"]
use[xlink:href="#bootstrap"]
span.fs-4
| Sidebar
hr
ul.list-unstyled.ps-0
li.mb-1
button.btn.btn-toggle.d-inline-flex.align-items-center.rounded.border-0.collapsed[data-bs-toggle="collapse" data-bs-target="#home-collapse" aria-expanded="false"]
| Home
#home-collapse.collapse[style=""]
ul.btn-toggle-nav.list-unstyled.fw-normal.pb-1.small
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Overview
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Updates
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Reports
li.mb-1
button.btn.btn-toggle.d-inline-flex.align-items-center.rounded.border-0.collapsed[data-bs-toggle="collapse" data-bs-target="#dashboard-collapse" aria-expanded="false"]
| Dashboard
#dashboard-collapse.collapse[style=""]
ul.btn-toggle-nav.list-unstyled.fw-normal.pb-1.small
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Overview
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Weekly
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Monthly
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Annually
li.mb-1
button.btn.btn-toggle.d-inline-flex.align-items-center.rounded.border-0.collapsed[data-bs-toggle="collapse" data-bs-target="#orders-collapse" aria-expanded="false"]
| Orders
#orders-collapse.collapse[style=""]
ul.btn-toggle-nav.list-unstyled.fw-normal.pb-1.small
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| New
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Processed
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Shipped
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Returned
li.border-top.my-3
li.mb-1
button.btn.btn-toggle.d-inline-flex.align-items-center.rounded.border-0.collapsed[data-bs-toggle="collapse" data-bs-target="#account-collapse" aria-expanded="false"]
| Account
#account-collapse.collapse
ul.btn-toggle-nav.list-unstyled.fw-normal.pb-1.small
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| New...
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Profile
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Settings
li
a.link-body-emphasis.d-inline-flex.text-decoration-none.rounded[href="#"]
| Sign out
5 changes: 5 additions & 0 deletions .template/addons/crud/template.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# frozen_string_literal: true

remove_file 'app/views/layouts/application.html.erb'
directory 'app/views/layouts/application'
template 'app/views/layouts/application.html.slim.tt'
2 changes: 1 addition & 1 deletion Gemfile.tt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ source 'https://rubygems.org'
ruby '<%= RUBY_VERSION %>'

# Backend
gem 'rails', '7.0.6' # Latest stable
gem 'rails', '7.0.8' # Latest stable
gem 'pg' # Use Postgresql as database
gem 'puma' # Use Puma as the app server
gem 'mini_magick' # A ruby wrapper for ImageMagick or GraphicsMagick command line
Expand Down
36 changes: 22 additions & 14 deletions template.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,20 +80,27 @@ def apply_template!(template_root)
end

def ask_for_optional_addons
@install_github_action = true if yes?(install_addon_prompt('Github Action and Wiki'))
@install_openapi = true if API_VARIANT || yes?(install_addon_prompt('OpenAPI'))
@install_mock_server = true if @install_openapi && yes?(install_addon_prompt('Mock Server'))
@install_semaphore = true if yes?(install_addon_prompt('SemaphoreCI'))
@install_nginx = true if yes?(install_addon_prompt('Nginx'))
@install_phrase = true if yes?(install_addon_prompt('Phrase'))
@install_devise = true if yes?(install_addon_prompt('Devise'))

return unless WEB_VARIANT

@install_bootstrap = true if yes?(install_addon_prompt('Bootstrap'))
@install_slim = true if yes?(install_addon_prompt('Slim Template Engine'))
@install_hotwire = true if yes?(install_addon_prompt('Hotwire'))
@install_svgeez = true if yes?(install_addon_prompt('Svgeez'))
ask_for_all_variant_addons

ask_for_web_variant_addons if WEB_VARIANT
end

def ask_for_all_variant_addons
@install_github_action = yes?(install_addon_prompt('Github Action and Wiki'))
@install_openapi = API_VARIANT || yes?(install_addon_prompt('OpenAPI'))
@install_mock_server = @install_openapi && yes?(install_addon_prompt('Mock Server'))
@install_semaphore = yes?(install_addon_prompt('SemaphoreCI'))
@install_nginx = yes?(install_addon_prompt('Nginx'))
@install_phrase = yes?(install_addon_prompt('Phrase'))
@install_crud = WEB_VARIANT && yes?(install_addon_prompt('Crud (includes Devise, Bootstrap and Slim)'))
@install_devise = @install_crud || yes?(install_addon_prompt('Devise'))
end

def ask_for_web_variant_addons
@install_bootstrap = @install_crud || yes?(install_addon_prompt('Bootstrap'))
@install_slim = @install_crud || yes?(install_addon_prompt('Slim Template Engine'))
@install_hotwire = yes?(install_addon_prompt('Hotwire'))
@install_svgeez = yes?(install_addon_prompt('Svgeez'))
end

def apply_optional_addons
Expand All @@ -103,6 +110,7 @@ def apply_optional_addons
apply '.template/addons/nginx/template.rb' if @install_nginx
apply '.template/addons/phrase/template.rb' if @install_phrase
apply '.template/addons/devise/template.rb' if @install_devise
apply '.template/addons/crud/template.rb' if @install_crud
end

# Set Thor::Actions source path for looking up the files
Expand Down

0 comments on commit dd031b2

Please sign in to comment.