Browse Source

Grayscale Theme adaptiert, comfy CMS aktiviert

master
Christian Aust 1 year ago
parent
commit
9455853834
56 changed files with 1425 additions and 106 deletions
  1. +3
    -0
      .gitignore
  2. +11
    -18
      Gemfile
  3. +276
    -0
      Gemfile.lock
  4. +0
    -60
      README
  5. BIN
      app/assets/images/bg-masthead.jpg
  6. +1
    -0
      app/assets/javascripts/comfy/admin/cms/custom.js
  7. +42
    -0
      app/assets/javascripts/grayscale.js
  8. +1
    -1
      app/assets/stylesheets/1st_load_framework.css.scss
  9. +3
    -2
      app/assets/stylesheets/application.css.scss
  10. +13
    -0
      app/assets/stylesheets/bootstrap.scss
  11. +1
    -0
      app/assets/stylesheets/comfy/admin/cms/custom.sass
  12. +23
    -0
      app/assets/stylesheets/fontawesome.scss
  13. +39
    -0
      app/assets/stylesheets/grayscale.scss
  14. +7
    -0
      app/assets/stylesheets/grayscale/_about.scss
  15. +23
    -0
      app/assets/stylesheets/grayscale/_buttons.scss
  16. +36
    -0
      app/assets/stylesheets/grayscale/_contact.scss
  17. +44
    -0
      app/assets/stylesheets/grayscale/_masthead.scss
  18. +1
    -0
      app/assets/stylesheets/grayscale/_mixins.scss
  19. +76
    -0
      app/assets/stylesheets/grayscale/_navbar.scss
  20. +22
    -0
      app/assets/stylesheets/grayscale/_projects.scss
  21. +20
    -0
      app/assets/stylesheets/grayscale/_signup.scss
  22. +15
    -0
      app/assets/stylesheets/grayscale/_variables.scss
  23. +23
    -0
      app/views/layouts/_navigation.html.erb
  24. +0
    -10
      app/views/layouts/_navigation.html.haml
  25. +0
    -1
      app/views/layouts/_navigation_links.html.erb
  26. +117
    -9
      app/views/layouts/application.html.haml
  27. +5
    -0
      bin/rails
  28. +5
    -0
      bin/rake
  29. +8
    -0
      bin/rspec
  30. +17
    -0
      bin/spring
  31. +3
    -0
      config/application.rb
  32. +122
    -0
      config/initializers/comfortable_mexican_sofa.rb
  33. +4
    -1
      config/routes.rb
  34. +5
    -0
      db/cms_seeds/sample-site/files/_default.jpg.yml
  35. BIN
      db/cms_seeds/sample-site/files/default.jpg
  36. +14
    -0
      db/cms_seeds/sample-site/layouts/default/nested/content.html
  37. +7
    -0
      db/cms_seeds/sample-site/pages/index/child_a/content.html
  38. +6
    -0
      db/cms_seeds/sample-site/pages/index/child_b/content.html
  39. BIN
      db/cms_seeds/sample-site/pages/index/cms logo.png
  40. +6
    -0
      db/cms_seeds/sample-site/pages/index/content.fr.html
  41. +25
    -0
      db/cms_seeds/sample-site/pages/index/content.html
  42. BIN
      db/cms_seeds/sample-site/pages/index/footer.png
  43. +27
    -0
      db/migrate/20190809093304_create_active_storage_tables.active_storage.rb
  44. +142
    -0
      db/migrate/20190809093743_create_cms.rb
  45. +156
    -0
      db/schema.rb
  46. +15
    -1
      package.json
  47. +28
    -0
      yarn.lock

+ 3
- 0
.gitignore View File

@ -28,6 +28,7 @@ db/*.sqlite3
**.war
*.rbc
*.sassc
*.log
.redcar/
.sass-cache
/config/config.yml
@ -39,6 +40,7 @@ db/*.sqlite3
/doc/app/
/doc/features.html
/doc/specs.html
/public/assets
/public/cache
/public/stylesheets/compiled
/public/system/*
@ -51,6 +53,7 @@ db/*.sqlite3
rerun.txt
pickle-email-*.html
.zeus.sock
/node_modules/
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:

+ 11
- 18
Gemfile View File

@ -1,43 +1,36 @@
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.5.5'
gem 'rails', '~> 5.2.3'
gem 'sqlite3'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jbuilder', '~> 2.5'
# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.1.0', require: false
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
gem 'haml-rails'
gem 'comfortable_mexican_sofa', '~> 2.0.0'
gem 'kaminari'
group :development do
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
group :test do
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
gem 'chromedriver-helper'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'bootstrap', '~> 4.0.0'
gem 'haml-rails'
gem 'high_voltage'
group :development do
gem 'better_errors'
gem 'binding_of_caller'
gem 'html2haml'
gem 'rails_layout'
gem 'spring-commands-rspec'
end
group :development, :test do
gem 'factory_bot_rails'
gem 'faker'
gem 'rspec-rails'
end
group :test do
gem 'database_cleaner'
gem 'launchy'

+ 276
- 0
Gemfile.lock View File

@ -0,0 +1,276 @@
GEM
remote: https://rubygems.org/
specs:
actioncable (5.2.3)
actionpack (= 5.2.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailer (5.2.3)
actionpack (= 5.2.3)
actionview (= 5.2.3)
activejob (= 5.2.3)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (5.2.3)
actionview (= 5.2.3)
activesupport (= 5.2.3)
rack (~> 2.0)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (5.2.3)
activesupport (= 5.2.3)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_link_to (1.0.5)
actionpack
addressable
activejob (5.2.3)
activesupport (= 5.2.3)
globalid (>= 0.3.6)
activemodel (5.2.3)
activesupport (= 5.2.3)
activerecord (5.2.3)
activemodel (= 5.2.3)
activesupport (= 5.2.3)
arel (>= 9.0)
activestorage (5.2.3)
actionpack (= 5.2.3)
activerecord (= 5.2.3)
marcel (~> 0.3.1)
activesupport (5.2.3)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.6.0)
public_suffix (>= 2.0.2, < 4.0)
arel (9.0.0)
better_errors (2.5.1)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
bindex (0.8.1)
binding_of_caller (0.8.0)
debug_inspector (>= 0.0.1)
bootsnap (1.4.4)
msgpack (~> 1.0)
builder (3.2.3)
coderay (1.1.2)
comfortable_mexican_sofa (2.0.18)
active_link_to (>= 1.0.0)
comfy_bootstrap_form (>= 4.0.0)
haml-rails (>= 1.0.0)
jquery-rails (>= 4.3.1)
kramdown (>= 1.0.0)
mimemagic (>= 0.3.2)
mini_magick (>= 4.8.0)
rails (>= 5.2.0)
rails-i18n (>= 5.0.0)
sassc-rails (>= 2.0.0)
comfy_bootstrap_form (4.0.6)
rails (>= 5.0.0)
concurrent-ruby (1.1.5)
crass (1.0.4)
database_cleaner (1.7.0)
debug_inspector (0.0.3)
diff-lcs (1.3)
erubi (1.8.0)
erubis (2.7.0)
execjs (2.7.0)
factory_bot (5.0.2)
activesupport (>= 4.2.0)
factory_bot_rails (5.0.2)
factory_bot (~> 5.0.2)
railties (>= 4.2.0)
faker (2.1.0)
i18n (>= 0.7)
ffi (1.11.1)
globalid (0.4.2)
activesupport (>= 4.2.0)
haml (5.1.2)
temple (>= 0.8.0)
tilt
haml-rails (2.0.1)
actionpack (>= 5.1)
activesupport (>= 5.1)
haml (>= 4.0.6, < 6.0)
html2haml (>= 1.0.1)
railties (>= 5.1)
html2haml (2.2.0)
erubis (~> 2.7.0)
haml (>= 4.0, < 6)
nokogiri (>= 1.6.0)
ruby_parser (~> 3.5)
i18n (1.6.0)
concurrent-ruby (~> 1.0)
jquery-rails (4.3.5)
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
kaminari (1.1.1)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.1.1)
kaminari-activerecord (= 1.1.1)
kaminari-core (= 1.1.1)
kaminari-actionview (1.1.1)
actionview
kaminari-core (= 1.1.1)
kaminari-activerecord (1.1.1)
activerecord
kaminari-core (= 1.1.1)
kaminari-core (1.1.1)
kramdown (2.1.0)
launchy (2.4.3)
addressable (~> 2.3)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (0.3.3)
mimemagic (~> 0.3.2)
method_source (0.9.2)
mimemagic (0.3.3)
mini_magick (4.9.5)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.11.3)
msgpack (1.3.1)
nio4r (2.4.0)
nokogiri (1.10.3)
mini_portile2 (~> 2.4.0)
public_suffix (3.1.1)
puma (3.12.1)
rack (2.0.7)
rack-test (1.1.0)
rack (>= 1.0, < 3)
rails (5.2.3)
actioncable (= 5.2.3)
actionmailer (= 5.2.3)
actionpack (= 5.2.3)
actionview (= 5.2.3)
activejob (= 5.2.3)
activemodel (= 5.2.3)
activerecord (= 5.2.3)
activestorage (= 5.2.3)
activesupport (= 5.2.3)
bundler (>= 1.3.0)
railties (= 5.2.3)
sprockets-rails (>= 2.0.0)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.2.0)
loofah (~> 2.2, >= 2.2.2)
rails-i18n (5.1.3)
i18n (>= 0.7, < 2)
railties (>= 5.0, < 6)
railties (5.2.3)
actionpack (= 5.2.3)
activesupport (= 5.2.3)
method_source
rake (>= 0.8.7)
thor (>= 0.19.0, < 2.0)
rake (12.3.3)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
ffi (~> 1.0)
rspec-core (3.8.2)
rspec-support (~> 3.8.0)
rspec-expectations (3.8.4)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-mocks (3.8.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.8.0)
rspec-rails (3.8.2)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec-core (~> 3.8.0)
rspec-expectations (~> 3.8.0)
rspec-mocks (~> 3.8.0)
rspec-support (~> 3.8.0)
rspec-support (3.8.2)
ruby_dep (1.5.0)
ruby_parser (3.13.1)
sexp_processor (~> 4.9)
sassc (2.0.1)
ffi (~> 1.9)
rake
sassc-rails (2.1.2)
railties (>= 4.0.0)
sassc (>= 2.0)
sprockets (> 3.0)
sprockets-rails
tilt
sexp_processor (4.12.1)
spring (2.1.0)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
spring-watcher-listen (2.0.1)
listen (>= 2.7, < 4.0)
spring (>= 1.2, < 3.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.4.1)
temple (0.8.1)
thor (0.20.3)
thread_safe (0.3.6)
tilt (2.0.9)
tzinfo (1.2.5)
thread_safe (~> 0.1)
uglifier (4.1.20)
execjs (>= 0.3.0, < 3)
web-console (3.7.0)
actionview (>= 5.0)
activemodel (>= 5.0)
bindex (>= 0.4.0)
railties (>= 5.0)
websocket-driver (0.7.1)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.4)
PLATFORMS
ruby
DEPENDENCIES
better_errors
binding_of_caller
bootsnap (>= 1.1.0)
comfortable_mexican_sofa (~> 2.0.0)
database_cleaner
factory_bot_rails
faker
haml-rails
html2haml
kaminari
launchy
listen (>= 3.0.5, < 3.2)
puma (~> 3.11)
rails (~> 5.2.3)
rspec-rails
spring
spring-commands-rspec
spring-watcher-listen (~> 2.0.0)
sqlite3
uglifier (>= 1.3.0)
web-console (>= 3.3.0)
RUBY VERSION
ruby 2.5.5p157
BUNDLED WITH
2.0.2

+ 0
- 60
README View File

@ -1,60 +0,0 @@
Daemsing
================
Rails Composer is supported by developers who purchase our RailsApps tutorials.
Need help? Ask on Stack Overflow with the tag 'railsapps.'
Problems? Submit an issue: https://github.com/RailsApps/rails_apps_composer/issues
Your application contains diagnostics in this README file.
Please provide a copy of this README file when reporting any issues.
option Build a starter application?
choose Enter your selection: [rails-bootstrap]
option Get on the mailing list for Rails Composer news?
choose Enter your selection: [none]
option Web server for development?
choose Enter your selection: [puma]
option Web server for production?
choose Enter your selection: [puma]
option Database used in development?
choose Enter your selection: [sqlite]
option Template engine?
choose Enter your selection: [haml]
option Test framework?
choose Enter your selection: [rspec]
option Continuous testing?
choose Enter your selection: [none]
option Front-end framework?
choose Enter your selection: [bootstrap4]
option Add support for sending email?
choose Enter your selection: [none]
option Authentication?
choose Enter your selection: [false]
option Devise modules?
choose Enter your selection: [false]
option OmniAuth provider?
choose Enter your selection: []
option Authorization?
choose Enter your selection: [false]
option Use a form builder gem?
choose Enter your selection: []
option Add pages?
choose Enter your selection: [about]
option Set a locale?
choose Enter your selection: [none]
option Install page-view analytics?
choose Enter your selection: [none]
option Add a deployment mechanism?
choose Enter your selection: [none]
option Set a robots.txt file to ban spiders?
choose Enter your selection: []
option Create a GitHub repository? (y/n)
choose Enter your selection: []
option Add gem and file for environment variables?
choose Enter your selection: []
option Improve error reporting with 'better_errors' during development?
choose Enter your selection: [true]
option Use 'pry' as console replacement during development and test?
choose Enter your selection: [false]
option Use or create a project-specific rvm gemset?
choose Enter your selection: [true]

BIN
app/assets/images/bg-masthead.jpg View File

Before After
Width: 1900  |  Height: 1188  |  Size: 213 KiB

+ 1
- 0
app/assets/javascripts/comfy/admin/cms/custom.js View File

@ -0,0 +1 @@
// Custom JS for the admin area

+ 42
- 0
app/assets/javascripts/grayscale.js View File

@ -0,0 +1,42 @@
(function($) {
"use strict"; // Start of use strict
// Smooth scrolling using jQuery easing
$('a.js-scroll-trigger[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html, body').animate({
scrollTop: (target.offset().top - 70)
}, 1000, "easeInOutExpo");
return false;
}
}
});
// Closes responsive menu when a scroll trigger link is clicked
$('.js-scroll-trigger').click(function() {
$('.navbar-collapse').collapse('hide');
});
// Activate scrollspy to add active class to navbar items on scroll
$('body').scrollspy({
target: '#mainNav',
offset: 100
});
// Collapse Navbar
var navbarCollapse = function() {
if ($("#mainNav").offset().top > 100) {
$("#mainNav").addClass("navbar-shrink");
} else {
$("#mainNav").removeClass("navbar-shrink");
}
};
// Collapse now if page is not at top
navbarCollapse();
// Collapse the navbar when page is scrolled
$(window).scroll(navbarCollapse);
})(jQuery); // End of use strict

+ 1
- 1
app/assets/stylesheets/1st_load_framework.css.scss View File

@ -1,6 +1,6 @@
// import the CSS framework
// Do not use *= require in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
@import "bootstrap";
@import "bootstrap/scss/bootstrap";
// make all images responsive by default
img {

+ 3
- 2
app/assets/stylesheets/application.css.scss View File

@ -10,6 +10,7 @@
* files in this directory. Styles in this file should be added after the last require_* statement.
* It is generally better to create a new file per style scope.
*
*= require_tree .
*= require_self
*= require fontawesome
*= require bootstrap
*= require grayscale
*/

+ 13
- 0
app/assets/stylesheets/bootstrap.scss View File

@ -0,0 +1,13 @@
// import the CSS framework
// Do not use *= require in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
@import "bootstrap/scss/bootstrap";
// make all images responsive by default
img {
@extend .img-fluid;
margin: 0 auto;
}
// override for the 'Home' navigation link
.navbar-brand {
font-size: inherit;
}

+ 1
- 0
app/assets/stylesheets/comfy/admin/cms/custom.sass View File

@ -0,0 +1 @@
// custom CSS for admin area

+ 23
- 0
app/assets/stylesheets/fontawesome.scss View File

@ -0,0 +1,23 @@
// import the CSS framework
// Do not use *= require in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
$fa-font-path: "@fortawesome/fontawesome-free/webfonts";
@import "@fortawesome/fontawesome-free/scss/fontawesome";
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 400;
font-display: $fa-font-display;
src: url(asset_path('#{$fa-font-path}/fa-regular-400.eot'));
src: url(asset_path('#{$fa-font-path}/fa-regular-400.eot?#iefix')) format('embedded-opentype'),
url(asset_path('#{$fa-font-path}/fa-regular-400.woff2')) format('woff2'),
url(asset_path('#{$fa-font-path}/fa-regular-400.woff')) format('woff'),
url(asset_path('#{$fa-font-path}/fa-regular-400.ttf')) format('truetype'),
url(asset_path('#{$fa-font-path}/fa-regular-400.svg#fontawesome')) format('svg');
}
.far {
font-family: 'Font Awesome 5 Free';
font-weight: 400;
}

+ 39
- 0
app/assets/stylesheets/grayscale.scss View File

@ -0,0 +1,39 @@
@import 'grayscale/variables';
@import 'grayscale/mixins';
@import 'grayscale/navbar';
@import 'grayscale/masthead';
@import 'grayscale/buttons';
@import 'grayscale/about';
@import 'grayscale/projects';
@import 'grayscale/signup';
@import 'grayscale/contact';
body {
font-family: 'Nunito';
letter-spacing: 0.0625em;
}
a {
color: $primary;
&:focus,
&:hover {
text-decoration: none;
color: darken($primary, 20%);
}
}
.bg-black {
background-color: $black !important;
}
.bg-primary {
background-color: $primary !important;
}
.text-primary {
color: $primary !important;
}
footer {
padding: 5rem 0;
}

+ 7
- 0
app/assets/stylesheets/grayscale/_about.scss View File

@ -0,0 +1,7 @@
.about-section {
padding-top: 10rem;
background: linear-gradient(to bottom, $black 0%,#{fade-out($black, .1)} 75%,#{fade-out($black, .2)} 100%);
p {
margin-bottom: 5rem;
}
}

+ 23
- 0
app/assets/stylesheets/grayscale/_buttons.scss View File

@ -0,0 +1,23 @@
.btn {
box-shadow: 0 .1875rem .1875rem 0 rgba(0,0,0,.1) !important;
padding: 1.25rem 2rem;
font-family: 'Varela Round';
font-size: 80%;
text-transform: uppercase;
letter-spacing: .15rem;
border: 0;
}
.btn-primary {
background-color: $primary;
&:hover {
background-color: darken($primary, 10%);
}
&:focus {
background-color: darken($primary, 10%);
color: white;
}
&:active {
background-color: darken($primary, 15%) !important;
}
}

+ 36
- 0
app/assets/stylesheets/grayscale/_contact.scss View File

@ -0,0 +1,36 @@
.contact-section {
padding: 5rem 0 0;
.card {
border: 0;
border-bottom: 0.25rem solid $primary;
h4 {
font-size: 0.8rem;
font-family: 'Varela Round';
text-transform: uppercase;
letter-spacing: 0.15rem;
}
hr {
border-color: $primary;
border-width: 0.25rem;
width: 3rem;
}
}
.social {
margin-top: 5rem;
a {
text-align: center;
height: 3rem;
width: 3rem;
background: fade-out($white, 0.9);
border-radius: 100%;
line-height: 3rem;
color: fade-out($white, 0.7);
&:hover {
color: fade-out($white, 0.5);
}
&:active {
color: $white;
}
}
}
}

+ 44
- 0
app/assets/stylesheets/grayscale/_masthead.scss View File

@ -0,0 +1,44 @@
.masthead {
position: relative;
width: 100%;
height: auto;
min-height: 35rem;
padding: 15rem 0;
background: linear-gradient(to bottom, #{fade-out($black, .7)} 0%,#{fade-out($black, .3)} 75%,$black 100%), url(asset_path('bg-masthead.jpg'));
background-position: center;
background-repeat: no-repeat;
background-attachment: scroll;
background-size: cover;
h1 {
font-family: 'Varela Round';
font-size: 2.5rem;
line-height: 2.5rem;
letter-spacing: 0.8rem;
background: -webkit-linear-gradient(fade-out(white, 0.1), fade-out(white, 1));
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
}
h2 {
max-width: 20rem;
font-size: 1rem;
}
@media(min-width: 768px) {
h1 {
font-size: 4rem;
line-height: 4rem;
}
}
@media(min-width: 992px) {
height: 100vh;
padding: 0;
h1 {
font-size: 6.5rem;
line-height: 6.5rem;
letter-spacing: 0.8rem;
}
h2 {
max-width: 30rem;
font-size: 1.25rem;
}
}
}

+ 1
- 0
app/assets/stylesheets/grayscale/_mixins.scss View File

@ -0,0 +1 @@
// Mixins

+ 76
- 0
app/assets/stylesheets/grayscale/_navbar.scss View File

@ -0,0 +1,76 @@
#mainNav {
min-height: 56px;
background-color: $white;
.navbar-toggler {
font-size: 80%;
padding: 0.75rem;
color: $primary;
border: 1px solid $primary;
&:focus {
outline: none;
}
}
.navbar-brand {
color: $black;
font-weight: 700;
padding: .9rem 0;
}
.navbar-nav {
.nav-item {
&:hover {
color: fade(white, 80%);
outline: none;
background-color: transparent;
}
&:active,
&:focus {
outline: none;
background-color: transparent;
}
}
}
@media (min-width: 992px) {
padding-top: 0;
padding-bottom: 0;
border-bottom: none;
background-color: transparent;
transition: background-color 0.3s ease-in-out;
.navbar-brand {
padding: .5rem 0;
color: fade-out($white, .5);
}
.nav-link {
transition: none;
padding: 2rem 1.5rem;
color: fade-out($white, .5);
&:hover {
color: fade-out($white, .25);
}
&:active {
color: white;
}
}
&.navbar-shrink {
background-color: $white;
.navbar-brand {
color: $black;
}
.nav-link {
color: $black;
padding: 1.5rem 1.5rem 1.25rem;
border-bottom: 0.25rem solid transparent;
&:hover {
color: $primary;
}
&:active {
color: darken($primary, 15%);
}
&.active {
color: $primary;
outline: none;
border-bottom: 0.25rem solid $primary;
}
}
}
}
}

+ 22
- 0
app/assets/stylesheets/grayscale/_projects.scss View File

@ -0,0 +1,22 @@
.projects-section {
padding: 10rem 0;
.featured-text {
padding: 2rem;
@media (min-width: 992px) {
padding: 0 0 0 2rem;
border-left: 0.5rem solid $primary;
}
}
.project-text {
padding: 3rem;
font-size: 90%;
@media (min-width: 992px) {
padding: 5rem;
hr {
border-color: $primary;
border-width: .25rem;
width: 30%;
}
}
}
}

+ 20
- 0
app/assets/stylesheets/grayscale/_signup.scss View File

@ -0,0 +1,20 @@
.signup-section {
padding: 10rem 0;
background: linear-gradient(to bottom, #{fade-out($black, .9)} 0%,#{fade-out($black, .5)} 75%,$black 100%), url(asset_path('bg-signup.jpg'));
background-position: center;
background-repeat: no-repeat;
background-attachment: scroll;
background-size: cover;
.form-inline {
input {
box-shadow: 0 0.1875rem 0.1875rem 0 rgba(0,0,0,.1) !important;
padding: 1.25rem 2rem;
height: auto;
font-family: 'Varela Round';
font-size: 80%;
text-transform: uppercase;
letter-spacing: 0.15rem;
border: 0;
}
}
}

+ 15
- 0
app/assets/stylesheets/grayscale/_variables.scss View File

@ -0,0 +1,15 @@
// Variables
$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
$gray-400: #ced4da !default;
$gray-500: #adb5bd !default;
$gray-600: #868e96 !default;
$gray-700: #495057 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
$black: #161616 !default;
$primary: #64a19d !default;

+ 23
- 0
app/views/layouts/_navigation.html.erb View File

@ -0,0 +1,23 @@
<!-- Navigation -->
<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand js-scroll-trigger" href="#page-top">Start Bootstrap</a>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#about">About</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#projects">Projects</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#signup">Contact</a>
</li>
</ul>
</div>
</div>
</nav>

+ 0
- 10
app/views/layouts/_navigation.html.haml View File

@ -1,10 +0,0 @@
-# navigation styled for Bootstrap 3.0
.container
%nav.navbar.navbar-dark.bg-inverse
%ul.nav.navbar-nav.clearfix
%li.nav-item
%button.navbar-toggler.hidden-sm-up.nav-link{"aria-controls" => "exCollapsingNavbar2", "aria-expanded" => "false", "aria-label" => "Toggle navigation", "data-target" => "#exCollapsingNavbar2", "data-toggle" => "collapse", :type => "button"}
\ &#9776;
#exCollapsingNavbar2.collapse.navbar-toggleable-xs
= link_to "Rails bootstrap", root_path, class: 'navbar-brand'
%ul.nav.navbar-nav= render 'layouts/navigation_links'

+ 0
- 1
app/views/layouts/_navigation_links.html.erb View File

@ -1 +0,0 @@
<%# add navigation links to this file %>

+ 117
- 9
app/views/layouts/application.html.haml View File

@ -1,15 +1,123 @@
!!!
%html
%head
%meta{:name => "viewport", :content => "width=device-width, initial-scale=1.0"}
%title= content_for?(:title) ? yield(:title) : 'Daemsing'
%meta{:name => "description", :content => "#{content_for?(:description) ? yield(:description) : 'Daemsing'}"}
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
%meta{ name: "viewport", content: "width=device-width, initial-scale=1.0, shrink-to-fit=no" }
%title= @cms_page.present? ? @cms_page.label : 'Dämsing'
%meta{ name: "description", content: cms_fragment_content('meta-description') }
= stylesheet_link_tag '//fonts.googleapis.com/css?family=Varela+Round', '//fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i', 'application', media: 'all'
= csrf_meta_tags
%body
%header
= render 'layouts/navigation'
%main{:role => "main"}
%body#page-top
= render 'layouts/navigation'
/ Header
%header.masthead
.container.d-flex.h-100.align-items-center
.mx-auto.text-center
%h1.mx-auto.my-0.text-uppercase Grayscale
%h2.text-white-50.mx-auto.mt-2.mb-5 A free, responsive, one page Bootstrap theme created by Start Bootstrap.
%a.btn.btn-primary.js-scroll-trigger{:href => "#about"} Get Started
/ About Section
%section#about.about-section.text-center
.container
.row
.col-lg-8.mx-auto
%h2.text-white.mb-4 Built with Bootstrap 4
%p.text-white-50
Grayscale is a free Bootstrap theme created by Start Bootstrap. It can be yours right now, simply download the template on
= succeed "." do
%a{:href => "http://startbootstrap.com/template-overviews/grayscale/"} the preview page
= image_tag 'ipad.png', class:'img-fluid'
/ Projects Section
%section#projects.projects-section.bg-light
.container
/ Featured Project Row
.row.align-items-center.no-gutters.mb-4.mb-lg-5
.col-xl-8.col-lg-7
= image_tag 'bg-masthead.jpg', class:'img-fluid mb-3 mb-lg-0'
.col-xl-4.col-lg-5
.featured-text.text-center.text-lg-left
%h4 Shoreline
%p.text-black-50.mb-0 Grayscale is open source and MIT licensed. This means you can use it for any project - even commercial projects! Download it, customize it, and publish your website!
/ Project One Row
.row.justify-content-center.no-gutters.mb-5.mb-lg-0
.col-lg-6
= image_tag 'demo-image-01.jpg', class:'img-fluid'
.col-lg-6
.bg-black.text-center.h-100.project
.d-flex.h-100
.project-text.w-100.my-auto.text-center.text-lg-left
%h4.text-white Misty
%p.mb-0.text-white-50 An example of where you can put an image of a project, or anything else, along with a description.
%hr.d-none.d-lg-block.mb-0.ml-0/
/ Project Two Row
.row.justify-content-center.no-gutters
.col-lg-6
= image_tag 'demo-image-02.jpg', class:'img-fluid'
.col-lg-6.order-lg-first
.bg-black.text-center.h-100.project
.d-flex.h-100
.project-text.w-100.my-auto.text-center.text-lg-right
%h4.text-white Mountains
%p.mb-0.text-white-50 Another example of a project with its respective description. These sections work well responsively as well, try this theme on a small screen!
%hr.d-none.d-lg-block.mb-0.mr-0/
/ Signup Section
%section#signup.signup-section
.container
.row
.col-md-10.col-lg-8.mx-auto.text-center
%i.far.fa-paper-plane.fa-2x.mb-2.text-white
%h2.text-white.mb-5 Subscribe to receive updates!
%form.form-inline.d-flex
%input#inputEmail.form-control.flex-fill.mr-0.mr-sm-2.mb-3.mb-sm-0{:placeholder => "Enter email address...", :type => "email"}/
%button.btn.btn-primary.mx-auto{:type => "submit"} Subscribe
/ Contact Section
%section.contact-section.bg-black
.container
.row
.col-md-4.mb-3.mb-md-0
.card.py-4.h-100
.card-body.text-center
%i.fas.fa-map-marked-alt.text-primary.mb-2
%h4.text-uppercase.m-0 Address
%hr.my-4/
.small.text-black-50 4923 Market Street, Orlando FL
.col-md-4.mb-3.mb-md-0
.card.py-4.h-100
.card-body.text-center
%i.fas.fa-envelope.text-primary.mb-2
%h4.text-uppercase.m-0 Email
%hr.my-4/
.small.text-black-50
%a{:href => "#"} hello@yourdomain.com
.col-md-4.mb-3.mb-md-0
.card.py-4.h-100
.card-body.text-center
%i.fas.fa-mobile-alt.text-primary.mb-2
%h4.text-uppercase.m-0 Phone
%hr.my-4/
.small.text-black-50 +1 (555) 902-8832
.social.d-flex.justify-content-center
%a.mx-2{:href => "#"}
%i.fab.fa-twitter
%a.mx-2{:href => "#"}
%i.fab.fa-facebook-f
%a.mx-2{:href => "#"}
%i.fab.fa-github
/ Footer
%footer.bg-black.small.text-center.text-white-50
.container
Copyright © Your Website 2019
%main{ role: "main" }
= render 'layouts/messages'
= yield
= javascript_include_tag 'application'

+ 5
- 0
bin/rails View File

@ -1,4 +1,9 @@
#!/usr/bin/env ruby
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
raise unless e.message.include?('spring')
end
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'

+ 5
- 0
bin/rake View File

@ -1,4 +1,9 @@
#!/usr/bin/env ruby
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
raise unless e.message.include?('spring')
end
require_relative '../config/boot'
require 'rake'
Rake.application.run

+ 8
- 0
bin/rspec View File

@ -0,0 +1,8 @@
#!/usr/bin/env ruby
begin
load File.expand_path('../spring', __FILE__)
rescue LoadError => e
raise unless e.message.include?('spring')
end
require 'bundler/setup'
load Gem.bin_path('rspec-core', 'rspec')

+ 17
- 0
bin/spring View File

@ -0,0 +1,17 @@
#!/usr/bin/env ruby
# This file loads Spring without using Bundler, in order to be fast.
# It gets overwritten when you run the `spring binstub` command.
unless defined?(Spring)
require 'rubygems'
require 'bundler'
lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
if spring
Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
gem 'spring', spring.version
require 'spring/binstub'
end
end

+ 3
- 0
config/application.rb View File

@ -8,6 +8,9 @@ Bundler.require(*Rails.groups)
module Daemsing
class Application < Rails::Application
# Ensuring that ActiveStorage routes are loaded before Comfy's globbing
# route. Without this file serving routes are inaccessible.
config.railties_order = [ActiveStorage::Engine, :main_app, :all]
config.generators do |g|
g.test_framework :rspec,

+ 122
- 0
config/initializers/comfortable_mexican_sofa.rb View File

@ -0,0 +1,122 @@
# frozen_string_literal: true
ComfortableMexicanSofa.configure do |config|
# Title of the admin area
# config.cms_title = 'ComfortableMexicanSofa CMS Engine'
# Controller that is inherited from CmsAdmin::BaseController
# config.admin_base_controller = 'ApplicationController'
# Controller that Comfy::Cms::BaseController will inherit from
# config.public_base_controller = 'ApplicationController'
# Module responsible for authentication. You can replace it with your own.
# It simply needs to have #authenticate method. See http_auth.rb for reference.
# config.admin_auth = 'ComfyAdminAuthentication'
# Module responsible for authorization on admin side. It should have #authorize
# method that returns true or false based on params and loaded instance
# variables available for a given controller.
# config.admin_authorization = 'ComfyAdminAuthorization'
# Module responsible for public authentication. Similar to the above. You also
# will have access to @cms_site, @cms_layout, @cms_page so you can use them in
# your logic. Default module doesn't do anything.
# config.public_auth = 'ComfyPublicAuthentication'
# Module responsible for public authorization. It should have #authorize
# method that returns true or false based on params and loaded instance
# variables available for a given controller.
# config.public_authorization = 'ComfyPublicAuthorization'
# When arriving at /cms-admin you may chose to redirect to arbirtary path,
# for example '/cms-admin/users'
# config.admin_route_redirect = ''
# Sofa allows you to setup entire site from files. Database is updated with each
# request (if necessary). Please note that database entries are destroyed if there's
# no corresponding file. Seeds are disabled by default.
# config.enable_seeds = false
# Path where seeds can be located.
# config.seeds_path = File.expand_path('db/cms_seeds', Rails.root)
# Content for Layouts, Pages and Snippets has a revision history. You can revert
# a previous version using this system. You can control how many revisions per
# object you want to keep. Set it to 0 if you wish to turn this feature off.
# config.revisions_limit = 25
# Locale definitions. If you want to define your own locale merge
# {:locale => 'Locale Title'} with this.
# config.locales = {:en => 'English', :es => 'Español'}
# Admin interface will respect the locale of the site being managed. However you can
# force it to English by setting this to `:en`
# config.admin_locale = nil
# A class that is included as a sweeper to admin base controller if it's set
# config.admin_cache_sweeper = nil
# By default you cannot have irb code inside your layouts/pages/snippets.
# Generally this is to prevent putting something like this:
# <% User.delete_all %> but if you really want to allow it...
# config.allow_erb = false
# Whitelist of all helper methods that can be used via {{cms:helper}} tag. By default
# all helpers are allowed except `eval`, `send`, `call` and few others. Empty array
# will prevent rendering of all helpers.
# config.allowed_helpers = nil
# Whitelist of partials paths that can be used via {{cms:partial}} tag. All partials
# are accessible by default. Empty array will prevent rendering of all partials.
# config.allowed_partials = nil
# Site aliases, if you want to have aliases for your site. Good for harmonizing
# production env with dev/testing envs.
# e.g. config.hostname_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
# Default is nil (not used)
# config.hostname_aliases = nil
# Reveal partials that can be overwritten in the admin area.
# Default is false.
# config.reveal_cms_partials = false
#
# Customize the returned content json data
# include fragments in content json
# config.content_json_options = {
# include: [:fragments]
# }
end
# Default credentials for ComfortableMexicanSofa::AccessControl::AdminAuthentication
# YOU REALLY WANT TO CHANGE THIS BEFORE PUTTING YOUR SITE LIVE
ComfortableMexicanSofa::AccessControl::AdminAuthentication.username = "username"
ComfortableMexicanSofa::AccessControl::AdminAuthentication.password = "password"
# Uncomment this module and `config.admin_auth` above to use custom admin authentication
# module ComfyAdminAuthentication
# def authenticate
# return true
# end
# end
# Uncomment this module and `config.admin_authorization` above to use custom admin authorization
# module ComfyAdminAuthorization
# def authorize
# return true
# end
# end
# Uncomment this module and `config.public_auth` above to use custom public authentication
# module ComfyPublicAuthentication
# def authenticate
# return true
# end
# end
# Uncomment this module and `config.public_authorization` above to use custom public authorization
# module ComfyPublicAuthorization
# def authorize
# return true
# end
# end

+ 4
- 1
config/routes.rb View File

@ -1,3 +1,6 @@
Rails.application.routes.draw do
root to: 'visitors#index'
comfy_route :cms_admin, path: "/admin"
# Ensure that this route is defined last
comfy_route :cms, path: "/"
root to: 'comfy/cms/content#show'
end

+ 5
- 0
db/cms_seeds/sample-site/files/_default.jpg.yml View File

@ -0,0 +1,5 @@
label: Seed File
description: Seed File Description
categories:
- category_a
- category_b

BIN
db/cms_seeds/sample-site/files/default.jpg View File

Before After
Width: 80  |  Height: 80  |  Size: 6.3 KiB

+ 14
- 0
db/cms_seeds/sample-site/layouts/default/nested/content.html View File

@ -0,0 +1,14 @@
[attributes]
label: Nested Seed Layout
position: 42
[content]
{{ cms:file thumbnail }}
<div class="left">{{ cms:markdown left }}</div>
<div class="right">{{ cms:markdown right }}</div>
[js]
// nested js
[css]
div{float:left}

+ 7
- 0
db/cms_seeds/sample-site/pages/index/child_a/content.html View File

@ -0,0 +1,7 @@
[attributes]
label: Child Seed Page
layout: nested
target_page: '/child_b'
[textares content]
Child A Page Seed Content

+ 6
- 0
db/cms_seeds/sample-site/pages/index/child_b/content.html View File

@ -0,0 +1,6 @@
[attributes]
label: Child Seed Page
layout: nested
[textares content]
Child B Page Seed Content

BIN
db/cms_seeds/sample-site/pages/index/cms logo.png View File

Before After
Width: 300  |  Height: 300  |  Size: 6.4 KiB

+ 6
- 0
db/cms_seeds/sample-site/pages/index/content.fr.html View File

@ -0,0 +1,6 @@
[attributes]
label: Bienvenue
layout: default
[wysiwyg content]
French Home Page Seed Content

+ 25
- 0
db/cms_seeds/sample-site/pages/index/content.html View File

@ -0,0 +1,25 @@
[attributes]
label: Home Seed Page
layout: default
position: 69
categories:
- category_a
- category_b
[file header]
header.png
[date published_on]
2015-10-31
[wysiwyg content]
Home Page Seed Contént
{{ cms:snippet default }}
[checkbox published]
true
[files attachments]
header.png
footer.png
cms logo.png

BIN
db/cms_seeds/sample-site/pages/index/footer.png View File

Before After
Width: 300  |  Height: 300  |  Size: 6.4 KiB

+ 27
- 0
db/migrate/20190809093304_create_active_storage_tables.active_storage.rb View File

@ -0,0 +1,27 @@
# This migration comes from active_storage (originally 20170806125915)
class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
def change
create_table :active_storage_blobs do |t|
t.string :key, null: false
t.string :filename, null: false
t.string :content_type
t.text :metadata
t.bigint :byte_size, null: false
t.string :checksum, null: false
t.datetime :created_at, null: false
t.index [ :key ], unique: true
end
create_table :active_storage_attachments do |t|
t.string :name, null: false
t.references :record, null: false, polymorphic: true, index: false
t.references :blob, null: false
t.datetime :created_at, null: false
t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
t.foreign_key :active_storage_blobs, column: :blob_id
end
end
end

+ 142
- 0
db/migrate/20190809093743_create_cms.rb View File

@ -0,0 +1,142 @@
class CreateCms < ActiveRecord::Migration[5.2]
LIMIT = 16777215
def change
# -- Sites -----------------------------------------------------------------
create_table :comfy_cms_sites, force: true do |t|
t.string :label, null: false
t.string :identifier, null: false
t.string :hostname, null: false
t.string :path
t.string :locale, null: false, default: "en"
t.timestamps
t.index :hostname
end
# -- Layouts ---------------------------------------------------------------
create_table :comfy_cms_layouts, force: true do |t|
t.integer :site_id, null: false
t.integer :parent_id
t.string :app_layout
t.string :label, null: false
t.string :identifier, null: false
t.text :content, limit: LIMIT
t.text :css, limit: LIMIT
t.text :js, limit: LIMIT
t.integer :position, null: false, default: 0
t.timestamps
t.index [:parent_id, :position]
t.index [:site_id, :identifier], unique: true
end
# -- Pages -----------------------------------------------------------------
create_table :comfy_cms_pages, force: true do |t|
t.integer :site_id, null: false
t.integer :layout_id
t.integer :parent_id
t.integer :target_page_id
t.string :label, null: false
t.string :slug
t.string :full_path, null: false
t.text :content_cache, limit: LIMIT
t.integer :position, null: false, default: 0
t.integer :children_count, null: false, default: 0
t.boolean :is_published, null: false, default: true
t.timestamps
t.index [:site_id, :full_path]
t.index [:parent_id, :position]
t.index [:is_published]
end
# -- Translations ----------------------------------------------------------
create_table :comfy_cms_translations, force: true do |t|
t.string :locale, null: false
t.integer :page_id, null: false
t.integer :layout_id
t.string :label, null: false
t.text :content_cache, limit: LIMIT
t.boolean :is_published, null: false, default: true
t.timestamps
t.index [:page_id]
t.index [:locale]
t.index [:is_published]
end
# -- Fragments -------------------------------------------------------------
create_table :comfy_cms_fragments, force: true do |t|
t.references :record, polymorphic: true
t.string :identifier, null: false
t.string :tag, null: false, default: "text"
t.text :content, limit: LIMIT
t.boolean :boolean, null: false, default: false
t.datetime :datetime
t.timestamps
t.index [:identifier]
t.index [:datetime]
t.index [:boolean]
end
# -- Snippets --------------------------------------------------------------
create_table :comfy_cms_snippets, force: true do |t|
t.integer :site_id, null: false
t.string :label, null: false
t.string :identifier, null: false
t.text :content, limit: LIMIT
t.integer :position, null: false, default: 0
t.timestamps
t.index [:site_id, :identifier], unique: true
t.index [:site_id, :position]
end
# -- Files -----------------------------------------------------------------
create_table :comfy_cms_files, force: true do |t|
t.integer :site_id, null: false
t.string :label, null: false, default: ""
t.text :description, limit: 2048
t.integer :position, null: false, default: 0
t.timestamps
t.index [:site_id, :position]
end
# -- Revisions -------------------------------------------------------------
create_table :comfy_cms_revisions, force: true do |t|
t.string :record_type, null: false
t.integer :record_id, null: false
t.text :data, limit: LIMIT
t.datetime :created_at
t.index [:record_type, :record_id, :created_at],
name: "index_cms_revisions_on_rtype_and_rid_and_created_at"
end
# -- Categories ------------------------------------------------------------
create_table :comfy_cms_categories, force: true do |t|
t.integer :site_id, null: false
t.string :label, null: false
t.string :categorized_type, null: false
t.index [:site_id, :categorized_type, :label],
unique: true,
name: "index_cms_categories_on_site_id_and_cat_type_and_label"
end
create_table :comfy_cms_categorizations, force: true do |t|
t.integer :category_id, null: false
t.string :categorized_type, null: false
t.integer :categorized_id, null: false
t.index [:category_id, :categorized_type, :categorized_id],
unique: true,
name: "index_cms_categorizations_on_cat_id_and_catd_type_and_catd_id"
end
end
end

+ 156
- 0
db/schema.rb View File

@ -0,0 +1,156 @@
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2019_08_09_093743) do
create_table "active_storage_attachments", force: :cascade do |t|
t.string "name", null: false
t.string "record_type", null: false
t.integer "record_id", null: false
t.integer "blob_id", null: false
t.datetime "created_at", null: false
t.index ["blob_id"], name: "index_active_storage_attachments_on_blob_id"
t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true
end
create_table "active_storage_blobs", force: :cascade do |t|
t.string "key", null: false
t.string "filename", null: false
t.string "content_type"
t.text "metadata"
t.bigint "byte_size", null: false
t.string "checksum", null: false
t.datetime "created_at", null: false
t.index ["key"], name: "index_active_storage_blobs_on_key", unique: true
end
create_table "comfy_cms_categories", force: :cascade do |t|
t.integer "site_id", null: false
t.string "label", null: false
t.string "categorized_type", null: false
t.index ["site_id", "categorized_type", "label"], name: "index_cms_categories_on_site_id_and_cat_type_and_label", unique: true
end
create_table "comfy_cms_categorizations", force: :cascade do |t|
t.integer "category_id", null: false
t.string "categorized_type", null: false
t.integer "categorized_id", null: false
t.index ["category_id", "categorized_type", "categorized_id"], name: "index_cms_categorizations_on_cat_id_and_catd_type_and_catd_id", unique: true
end
create_table "comfy_cms_files", force: :cascade do |t|
t.integer "site_id", null: false
t.string "label", default: "", null: false
t.text "description", limit: 2048
t.integer "position", default: 0, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["site_id", "position"], name: "index_comfy_cms_files_on_site_id_and_position"
end
create_table "comfy_cms_fragments", force: :cascade do |t|
t.string "record_type"
t.integer "record_id"
t.string "identifier", null: false
t.string "tag", default: "text", null: false
t.text "content", limit: 16777215
t.boolean "boolean", default: false, null: false
t.datetime "datetime"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["boolean"], name: "index_comfy_cms_fragments_on_boolean"
t.index ["datetime"], name: "index_comfy_cms_fragments_on_datetime"
t.index ["identifier"], name: "index_comfy_cms_fragments_on_identifier"
t.index ["record_type", "record_id"], name: "index_comfy_cms_fragments_on_record_type_and_record_id"
end
create_table "comfy_cms_layouts", force: :cascade do |t|
t.integer "site_id", null: false
t.integer "parent_id"
t.string "app_layout"
t.string "label", null: false
t.string "identifier", null: false
t.text "content", limit: 16777215
t.text "css", limit: 16777215
t.text "js", limit: 16777215
t.integer "position", default: 0, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["parent_id", "position"], name: "index_comfy_cms_layouts_on_parent_id_and_position"
t.index ["site_id", "identifier"], name: "index_comfy_cms_layouts_on_site_id_and_identifier", unique: true
end
create_table "comfy_cms_pages", force: :cascade do |t|
t.integer "site_id", null: false
t.integer "layout_id"
t.integer "parent_id"
t.integer "target_page_id"
t.string "label", null: false
t.string "slug"
t.string "full_path", null: false
t.text "content_cache", limit: 16777215
t.integer "position", default: 0, null: false
t.integer "children_count", default: 0, null: false
t.boolean "is_published", default: true, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["is_published"], name: "index_comfy_cms_pages_on_is_published"
t.index ["parent_id", "position"], name: "index_comfy_cms_pages_on_parent_id_and_position"
t.index ["site_id", "full_path"], name: "index_comfy_cms_pages_on_site_id_and_full_path"
end
create_table "comfy_cms_revisions", force: :cascade do |t|
t.string "record_type", null: false
t.integer "record_id", null: false
t.text "data", limit: 16777215
t.datetime "created_at"
t.index ["record_type", "record_id", "created_at"], name: "index_cms_revisions_on_rtype_and_rid_and_created_at"
end
create_table "comfy_cms_sites", force: :cascade do |t|
t.string "label", null: false
t.string "identifier", null: false
t.string "hostname", null: false
t.string "path"
t.string "locale", default: "en", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["hostname"], name: "index_comfy_cms_sites_on_hostname"
end
create_table "comfy_cms_snippets", force: :cascade do |t|
t.integer "site_id", null: false
t.string "label", null: false
t.string "identifier", null: false
t.text "content", limit: 16777215
t.integer "position", default: 0, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["site_id", "identifier"], name: "index_comfy_cms_snippets_on_site_id_and_identifier", unique: true
t.index ["site_id", "position"], name: "index_comfy_cms_snippets_on_site_id_and_position"
end
create_table "comfy_cms_translations", force: :cascade do |t|
t.string "locale", null: false
t.integer "page_id", null: false
t.integer "layout_id"
t.string "label", null: false
t.text "content_cache", limit: 16777215
t.boolean "is_published", default: true, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["is_published"], name: "index_comfy_cms_translations_on_is_published"
t.index ["locale"], name: "index_comfy_cms_translations_on_locale"
t.index ["page_id"], name: "index_comfy_cms_translations_on_page_id"
end
end

+ 15
- 1
package.json View File

@ -1,5 +1,19 @@
{
"name": "daemsing",
"private": true,
"dependencies": {}
"license": "MIT",
"contributors": [
"Christian Aust (https://software-berater.net/)"
],
"repository": {
"type": "git",
"url": "https://git.software-berater.net/christian/daemsing.git"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.10.1",
"bootstrap": "4.3.1",
"jquery": "3.4.1",
"jquery.easing": "^1.4.1",
"popper.js": "^1.15.0"
}
}

+ 28
- 0
yarn.lock View File

@ -0,0 +1,28 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@fortawesome/fontawesome-free@^5.10.1":
version "5.10.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.10.1.tgz#dec28ee02c3fc51da46d53ce4da9d5787312fbd7"
integrity sha512-PYncBhgN1l02mwHmczukexmu4yRTjRDAAdcK62jdWSAW8epcnZ9K2win/7rMrffiv/c7XLVDA8vD+yi6WyvbGQ==
bootstrap@4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.3.1.tgz#280ca8f610504d99d7b6b4bfc4b68cec601704ac"
integrity sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==
jquery.easing@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jquery.easing/-/jquery.easing-1.4.1.tgz#47982c5836bd758fd48494923c4a101ef6e93e3b"
integrity sha1-R5gsWDa9dY/UhJSSPEoQHvbpPjs=
jquery@3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
popper.js@^1.15.0:
version "1.15.0"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2"
integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==

Loading…
Cancel
Save