occams 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.codeclimate.yml +4 -0
- data/.gitattributes +2 -0
- data/.github/issue_template.md +22 -0
- data/.github/pull_request_template.md +6 -0
- data/.gitignore +21 -0
- data/.rubocop.yml +87 -0
- data/.travis.yml +44 -0
- data/CHANGELOG.md +7 -0
- data/CONTRIBUTING.md +35 -0
- data/Gemfile +30 -0
- data/LICENSE +20 -0
- data/LICENSE.comfy +20 -0
- data/README.md +121 -0
- data/Rakefile +5 -0
- data/app/assets/config/manifest.js +0 -0
- data/app/assets/fonts/occams/admin/cms/lib/redactor-font.eot +0 -0
- data/app/assets/javascripts/occams/admin/cms/application.js +39 -0
- data/app/assets/javascripts/occams/admin/cms/base.js +46 -0
- data/app/assets/javascripts/occams/admin/cms/categories.js +17 -0
- data/app/assets/javascripts/occams/admin/cms/codemirror.js +31 -0
- data/app/assets/javascripts/occams/admin/cms/custom.js +1 -0
- data/app/assets/javascripts/occams/admin/cms/diff.js +10 -0
- data/app/assets/javascripts/occams/admin/cms/file_link.js +67 -0
- data/app/assets/javascripts/occams/admin/cms/file_upload.js +194 -0
- data/app/assets/javascripts/occams/admin/cms/files_modal.js +40 -0
- data/app/assets/javascripts/occams/admin/cms/page_fragments.js +22 -0
- data/app/assets/javascripts/occams/admin/cms/slugify.js +34 -0
- data/app/assets/javascripts/occams/admin/cms/sortable_list.js +40 -0
- data/app/assets/javascripts/occams/admin/cms/timepicker.js +30 -0
- data/app/assets/javascripts/occams/admin/cms/wysiwyg.js +72 -0
- data/app/assets/javascripts/occams/vendor/Moxie.swf +0 -0
- data/app/assets/javascripts/occams/vendor/Moxie.xap +0 -0
- data/app/assets/javascripts/occams/vendor/bootstrap.bundle.min.js +7 -0
- data/app/assets/javascripts/occams/vendor/bootstrap.bundle.min.js.map +1 -0
- data/app/assets/javascripts/occams/vendor/codemirror/addon/edit/closetag.js +169 -0
- data/app/assets/javascripts/occams/vendor/codemirror/mode/css/css.js +832 -0
- data/app/assets/javascripts/occams/vendor/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
- data/app/assets/javascripts/occams/vendor/codemirror/mode/javascript/javascript.js +875 -0
- data/app/assets/javascripts/occams/vendor/codemirror/mode/markdown/markdown.js +861 -0
- data/app/assets/javascripts/occams/vendor/codemirror/mode/xml/xml.js +394 -0
- data/app/assets/javascripts/occams/vendor/codemirror.js +9653 -0
- data/app/assets/javascripts/occams/vendor/diff/diff_match_patch.min.js +49 -0
- data/app/assets/javascripts/occams/vendor/diff/pretty_text_diff.js +76 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ar.js +52 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/bg.js +65 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/bn.js +65 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ca.js +83 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/cs.js +70 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/cy.js +92 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/da.js +71 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/de.js +70 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/default.js +80 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/eo.js +73 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/es.js +69 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/et.js +73 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/fa.js +68 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/fi.js +69 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/fr.js +75 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/gr.js +74 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/he.js +57 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/hi.js +65 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/hr.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/hu.js +72 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/id.js +61 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/it.js +70 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ja.js +57 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ko.js +60 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/lt.js +72 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/lv.js +67 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/mk.js +69 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/mn.js +67 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ms.js +68 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/my.js +69 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/nl.js +75 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/no.js +73 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/pa.js +65 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/pl.js +68 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/pt-BR.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/pt.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ro.js +69 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/ru.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/si.js +65 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/sk.js +70 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/sl.js +70 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/sq.js +65 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/sr.js +69 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/sv.js +70 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/th.js +72 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/tr.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/uk.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/vn.js +66 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/zh-CN.js +61 -0
- data/app/assets/javascripts/occams/vendor/flatpickr/i18n/zh-TW.js +61 -0
- data/app/assets/javascripts/occams/vendor/flatpickr.min.js +2 -0
- data/app/assets/javascripts/occams/vendor/fontawesome.js +5 -0
- data/app/assets/javascripts/occams/vendor/moxie.min.js +16 -0
- data/app/assets/javascripts/occams/vendor/plupload.dev.js +2497 -0
- data/app/assets/javascripts/occams/vendor/redactor/definedlinks.js +53 -0
- data/app/assets/javascripts/occams/vendor/redactor/filemanager.js +64 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ar.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/az.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ba.js +79 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/bg.js +77 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/by.js +77 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ca.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/cs.js +87 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/da.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/de.js +80 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/el.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/en.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/eo.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/es.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/es_AR.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/fa.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/fi.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/fr.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ge.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/gr.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/he.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/hr.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/hu.js +77 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/id.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/it.js +78 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ja.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/kn.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ko.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/lt.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/lv.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/mk.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/nb.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/nl.js +80 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/pl.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/pt-BR.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/pt.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ro.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ru.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/sk.js +76 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/sl.js +79 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/sq.js +79 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/sr-CIR.js +79 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/sr-LAT.js +79 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/sv.js +74 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/th.js +74 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/tr.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/ua.js +77 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/uk.js +77 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/vi.js +74 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/zh-CN.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/i18n/zh-TW.js +75 -0
- data/app/assets/javascripts/occams/vendor/redactor/imagemanager.js +57 -0
- data/app/assets/javascripts/occams/vendor/redactor/table.js +337 -0
- data/app/assets/javascripts/occams/vendor/redactor/video.js +77 -0
- data/app/assets/javascripts/occams/vendor/redactor.js +9561 -0
- data/app/assets/javascripts/occams/vendor/sortable.min.js +5 -0
- data/app/assets/stylesheets/occams/admin/cms/application.sass +11 -0
- data/app/assets/stylesheets/occams/admin/cms/base.sass +256 -0
- data/app/assets/stylesheets/occams/admin/cms/codemirror_overrides.sass +19 -0
- data/app/assets/stylesheets/occams/admin/cms/custom.sass +1 -0
- data/app/assets/stylesheets/occams/admin/cms/redactor_overrides.sass +22 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_alert.scss +51 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_badge.scss +54 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_breadcrumb.scss +41 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_button-group.scss +163 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_buttons.scss +137 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_card.scss +289 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_carousel.scss +197 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_close.scss +41 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_code.scss +48 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_custom-forms.scss +507 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_dropdown.scss +191 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_forms.scss +330 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_functions.scss +86 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_grid.scss +52 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_images.scss +42 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_input-group.scss +193 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_jumbotron.scss +17 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_list-group.scss +149 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_media.scss +8 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_mixins.scss +47 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_modal.scss +229 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_nav.scss +120 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_navbar.scss +294 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_pagination.scss +73 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_popover.scss +171 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_print.scss +141 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_progress.scss +43 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_reboot.scss +483 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_root.scss +19 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_spinners.scss +55 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_tables.scss +185 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_toasts.scss +44 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_tooltip.scss +115 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_transitions.scss +20 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_type.scss +125 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_utilities.scss +17 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/_variables.scss +1123 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/bootstrap-grid.scss +29 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/bootstrap-reboot.scss +12 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/bootstrap.scss +44 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_alert.scss +13 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_background-variant.scss +21 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_badge.scss +17 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_border-radius.scss +63 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_box-shadow.scss +20 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_breakpoints.scss +123 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_buttons.scss +107 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_caret.scss +62 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_clearfix.scss +7 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_deprecate.scss +10 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_float.scss +14 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_forms.scss +192 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_gradients.scss +45 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_grid-framework.scss +66 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_grid.scss +51 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_hover.scss +37 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_image.scss +36 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_list-group.scss +21 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_lists.scss +7 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_nav-divider.scss +10 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_pagination.scss +22 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_reset-text.scss +17 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_resize.scss +6 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_screen-reader.scss +33 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_size.scss +7 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_table-row.scss +39 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_text-emphasis.scss +16 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_text-hide.scss +11 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_text-truncate.scss +8 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_transition.scss +16 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/mixins/_visibility.scss +8 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_align.scss +8 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_background.scss +19 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_borders.scss +75 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_clearfix.scss +3 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_display.scss +26 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_embed.scss +39 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_flex.scss +51 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_float.scss +11 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_overflow.scss +5 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_position.scss +32 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_screenreaders.scss +11 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_shadows.scss +6 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_sizing.scss +20 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_spacing.scss +73 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_stretched-link.scss +19 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_text.scss +72 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/utilities/_visibility.scss +13 -0
- data/app/assets/stylesheets/occams/vendor/bootstrap/vendor/_rfs.scss +204 -0
- data/app/assets/stylesheets/occams/vendor/codemirror.css +346 -0
- data/app/assets/stylesheets/occams/vendor/flatpickr.min.css +13 -0
- data/app/assets/stylesheets/occams/vendor/fontawesome.css +343 -0
- data/app/assets/stylesheets/occams/vendor/redactor.css +948 -0
- data/app/controllers/application_controller.rb +7 -0
- data/app/controllers/concerns/occams/paginate.rb +16 -0
- data/app/controllers/concerns/occams/reorder_action.rb +19 -0
- data/app/controllers/occams/admin/base_controller.rb +22 -0
- data/app/controllers/occams/admin/cms/base_controller.rb +55 -0
- data/app/controllers/occams/admin/cms/categories_controller.rb +40 -0
- data/app/controllers/occams/admin/cms/files_controller.rb +142 -0
- data/app/controllers/occams/admin/cms/layouts_controller.rb +69 -0
- data/app/controllers/occams/admin/cms/pages_controller.rb +156 -0
- data/app/controllers/occams/admin/cms/revisions/base_controller.rb +50 -0
- data/app/controllers/occams/admin/cms/revisions/layout_controller.rb +18 -0
- data/app/controllers/occams/admin/cms/revisions/page_controller.rb +30 -0
- data/app/controllers/occams/admin/cms/revisions/snippet_controller.rb +18 -0
- data/app/controllers/occams/admin/cms/revisions/translation_controller.rb +31 -0
- data/app/controllers/occams/admin/cms/sites_controller.rb +69 -0
- data/app/controllers/occams/admin/cms/snippets_controller.rb +66 -0
- data/app/controllers/occams/admin/cms/translations_controller.rb +107 -0
- data/app/controllers/occams/cms/assets_controller.rb +40 -0
- data/app/controllers/occams/cms/base_controller.rb +33 -0
- data/app/controllers/occams/cms/content_controller.rb +87 -0
- data/app/helpers/occams/admin/cms_helper.rb +49 -0
- data/app/helpers/occams/cms_helper.rb +73 -0
- data/app/models/concerns/occams/cms/with_categories.rb +53 -0
- data/app/models/concerns/occams/cms/with_fragments.rb +125 -0
- data/app/models/occams/cms/categorization.rb +16 -0
- data/app/models/occams/cms/category.rb +24 -0
- data/app/models/occams/cms/file.rb +70 -0
- data/app/models/occams/cms/fragment.rb +63 -0
- data/app/models/occams/cms/layout.rb +113 -0
- data/app/models/occams/cms/page.rb +170 -0
- data/app/models/occams/cms/revision.rb +12 -0
- data/app/models/occams/cms/site.rb +94 -0
- data/app/models/occams/cms/snippet.rb +45 -0
- data/app/models/occams/cms/translation.rb +43 -0
- data/app/views/kaminari/occams/_first_page.html.haml +3 -0
- data/app/views/kaminari/occams/_gap.html.haml +2 -0
- data/app/views/kaminari/occams/_last_page.html.haml +3 -0
- data/app/views/kaminari/occams/_next_page.html.haml +2 -0
- data/app/views/kaminari/occams/_page.html.haml +2 -0
- data/app/views/kaminari/occams/_paginator.html.haml +11 -0
- data/app/views/kaminari/occams/_prev_page.html.haml +2 -0
- data/app/views/layouts/occams/admin/cms/_body.html.haml +14 -0
- data/app/views/layouts/occams/admin/cms/_flash.html.haml +4 -0
- data/app/views/layouts/occams/admin/cms/_footer_js.html.haml +6 -0
- data/app/views/layouts/occams/admin/cms/_head.html.haml +19 -0
- data/app/views/layouts/occams/admin/cms/_left.html.haml +39 -0
- data/app/views/layouts/occams/admin/cms/_right.html.haml +5 -0
- data/app/views/layouts/occams/admin/cms.html.haml +4 -0
- data/app/views/occams/admin/cms/categories/_categories.html.haml +4 -0
- data/app/views/occams/admin/cms/categories/_edit.html.haml +7 -0
- data/app/views/occams/admin/cms/categories/_form.html.haml +5 -0
- data/app/views/occams/admin/cms/categories/_index.html.haml +28 -0
- data/app/views/occams/admin/cms/categories/_show.html.haml +15 -0
- data/app/views/occams/admin/cms/categories/create.js.erb +7 -0
- data/app/views/occams/admin/cms/categories/destroy.js.erb +8 -0
- data/app/views/occams/admin/cms/categories/edit.js.erb +3 -0
- data/app/views/occams/admin/cms/categories/update.js.erb +6 -0
- data/app/views/occams/admin/cms/files/_file.html.haml +31 -0
- data/app/views/occams/admin/cms/files/_form.html.haml +26 -0
- data/app/views/occams/admin/cms/files/_modal.html.haml +3 -0
- data/app/views/occams/admin/cms/files/destroy.js.erb +4 -0
- data/app/views/occams/admin/cms/files/edit.html.haml +5 -0
- data/app/views/occams/admin/cms/files/index.html.haml +31 -0
- data/app/views/occams/admin/cms/files/new.html.haml +5 -0
- data/app/views/occams/admin/cms/fragments/_form_fragment_attachments.html.haml +23 -0
- data/app/views/occams/admin/cms/fragments/_form_fragments.html.haml +38 -0
- data/app/views/occams/admin/cms/layouts/_form.html.haml +20 -0
- data/app/views/occams/admin/cms/layouts/_index_branch.html.haml +26 -0
- data/app/views/occams/admin/cms/layouts/edit.html.haml +9 -0
- data/app/views/occams/admin/cms/layouts/index.html.haml +10 -0
- data/app/views/occams/admin/cms/layouts/new.html.haml +5 -0
- data/app/views/occams/admin/cms/pages/_form.html.haml +31 -0
- data/app/views/occams/admin/cms/pages/_index_branch.html.haml +44 -0
- data/app/views/occams/admin/cms/pages/edit.html.haml +10 -0
- data/app/views/occams/admin/cms/pages/index.html.haml +13 -0
- data/app/views/occams/admin/cms/pages/new.html.haml +5 -0
- data/app/views/occams/admin/cms/pages/toggle_branch.js.erb +13 -0
- data/app/views/occams/admin/cms/revisions/_sidebar.html.haml +2 -0
- data/app/views/occams/admin/cms/revisions/show.html.haml +36 -0
- data/app/views/occams/admin/cms/sites/_form.html.haml +15 -0
- data/app/views/occams/admin/cms/sites/edit.html.haml +5 -0
- data/app/views/occams/admin/cms/sites/index.html.haml +28 -0
- data/app/views/occams/admin/cms/sites/new.html.haml +5 -0
- data/app/views/occams/admin/cms/snippets/_form.html.haml +18 -0
- data/app/views/occams/admin/cms/snippets/edit.html.haml +9 -0
- data/app/views/occams/admin/cms/snippets/index.html.haml +33 -0
- data/app/views/occams/admin/cms/snippets/new.html.haml +5 -0
- data/app/views/occams/admin/cms/translations/_form.html.haml +20 -0
- data/app/views/occams/admin/cms/translations/_sidebar.html.haml +19 -0
- data/app/views/occams/admin/cms/translations/edit.html.haml +10 -0
- data/app/views/occams/admin/cms/translations/new.html.haml +5 -0
- data/bin/bundle +3 -0
- data/bin/rails +4 -0
- data/bin/rake +4 -0
- data/bin/setup +36 -0
- data/bin/update +31 -0
- data/bin/yarn +11 -0
- data/config/application.rb +39 -0
- data/config/boot.rb +7 -0
- data/config/cms_routes.rb +8 -0
- data/config/database.yml +11 -0
- data/config/environment.rb +7 -0
- data/config/environments/development.rb +59 -0
- data/config/environments/test.rb +50 -0
- data/config/initializers/occams.rb +122 -0
- data/config/locales/ar.yml +262 -0
- data/config/locales/ca.yml +262 -0
- data/config/locales/cs.yml +262 -0
- data/config/locales/da.yml +262 -0
- data/config/locales/de.yml +262 -0
- data/config/locales/en.yml +262 -0
- data/config/locales/es.yml +262 -0
- data/config/locales/fi.yml +262 -0
- data/config/locales/fr.yml +262 -0
- data/config/locales/gr.yml +262 -0
- data/config/locales/hr.yml +262 -0
- data/config/locales/it.yml +262 -0
- data/config/locales/ja.yml +262 -0
- data/config/locales/nb.yml +262 -0
- data/config/locales/nl.yml +262 -0
- data/config/locales/pl.yml +262 -0
- data/config/locales/pt-BR.yml +262 -0
- data/config/locales/ru.yml +262 -0
- data/config/locales/sk.yml +262 -0
- data/config/locales/sv.yml +262 -0
- data/config/locales/tr.yml +262 -0
- data/config/locales/uk.yml +262 -0
- data/config/locales/zh-CN.yml +262 -0
- data/config/locales/zh-TW.yml +262 -0
- data/config/storage.yml +35 -0
- data/config.ru +6 -0
- data/db/cms_seeds/sample-site/files/_default.jpg.yml +5 -0
- data/db/cms_seeds/sample-site/files/default.jpg +0 -0
- data/db/cms_seeds/sample-site/layouts/default/content.html +16 -0
- data/db/cms_seeds/sample-site/layouts/default/nested/content.html +14 -0
- data/db/cms_seeds/sample-site/pages/index/child_a/content.html +7 -0
- data/db/cms_seeds/sample-site/pages/index/child_b/content.html +6 -0
- data/db/cms_seeds/sample-site/pages/index/cms logo.png +0 -0
- data/db/cms_seeds/sample-site/pages/index/content.es.html +6 -0
- data/db/cms_seeds/sample-site/pages/index/content.fr.html +6 -0
- data/db/cms_seeds/sample-site/pages/index/content.html +25 -0
- data/db/cms_seeds/sample-site/pages/index/footer.png +0 -0
- data/db/cms_seeds/sample-site/pages/index/header.png +0 -0
- data/db/cms_seeds/sample-site/snippets/default.html +8 -0
- data/db/migrate/00_create_active_storage_tables.rb +34 -0
- data/db/migrate/01_create_cms.rb +143 -0
- data/lib/generators/occams/cms/README +17 -0
- data/lib/generators/occams/cms/assets_generator.rb +18 -0
- data/lib/generators/occams/cms/cms_generator.rb +69 -0
- data/lib/generators/occams/cms/controllers_generator.rb +17 -0
- data/lib/generators/occams/cms/models_generator.rb +17 -0
- data/lib/generators/occams/cms/views_generator.rb +17 -0
- data/lib/generators/occams/scaffold/scaffold_generator.rb +80 -0
- data/lib/generators/occams/scaffold/templates/controller.rb.tt +62 -0
- data/lib/generators/occams/scaffold/templates/migration.rb.tt +11 -0
- data/lib/generators/occams/scaffold/templates/model.rb.tt +21 -0
- data/lib/generators/occams/scaffold/templates/tests/controller.rb.tt +115 -0
- data/lib/generators/occams/scaffold/templates/tests/fixture.yml.tt +4 -0
- data/lib/generators/occams/scaffold/templates/tests/model.rb.tt +26 -0
- data/lib/generators/occams/scaffold/templates/views/_form.haml.tt +7 -0
- data/lib/generators/occams/scaffold/templates/views/edit.haml.tt +5 -0
- data/lib/generators/occams/scaffold/templates/views/index.haml.tt +21 -0
- data/lib/generators/occams/scaffold/templates/views/new.haml.tt +5 -0
- data/lib/generators/occams/scaffold/templates/views/show.haml.tt +4 -0
- data/lib/occams/access_control/admin_authentication.rb +24 -0
- data/lib/occams/access_control/admin_authorization.rb +12 -0
- data/lib/occams/access_control/public_authentication.rb +12 -0
- data/lib/occams/access_control/public_authorization.rb +12 -0
- data/lib/occams/configuration.rb +140 -0
- data/lib/occams/content/block.rb +14 -0
- data/lib/occams/content/params_parser.rb +151 -0
- data/lib/occams/content/renderer.rb +149 -0
- data/lib/occams/content/tag.rb +50 -0
- data/lib/occams/content/tags/asset.rb +59 -0
- data/lib/occams/content/tags/checkbox.rb +29 -0
- data/lib/occams/content/tags/date.rb +21 -0
- data/lib/occams/content/tags/datetime.rb +44 -0
- data/lib/occams/content/tags/file.rb +72 -0
- data/lib/occams/content/tags/file_link.rb +63 -0
- data/lib/occams/content/tags/files.rb +43 -0
- data/lib/occams/content/tags/fragment.rb +66 -0
- data/lib/occams/content/tags/helper.rb +55 -0
- data/lib/occams/content/tags/markdown.rb +24 -0
- data/lib/occams/content/tags/mixins/file_content.rb +43 -0
- data/lib/occams/content/tags/number.rb +20 -0
- data/lib/occams/content/tags/page_file_link.rb +84 -0
- data/lib/occams/content/tags/partial.rb +49 -0
- data/lib/occams/content/tags/snippet.rb +38 -0
- data/lib/occams/content/tags/template.rb +44 -0
- data/lib/occams/content/tags/text.rb +20 -0
- data/lib/occams/content/tags/textarea.rb +20 -0
- data/lib/occams/content/tags/wysiwyg.rb +21 -0
- data/lib/occams/content.rb +31 -0
- data/lib/occams/engine.rb +31 -0
- data/lib/occams/error.rb +32 -0
- data/lib/occams/extensions/acts_as_tree.rb +120 -0
- data/lib/occams/extensions/has_revisions.rb +72 -0
- data/lib/occams/form_builder.rb +47 -0
- data/lib/occams/render_methods.rb +112 -0
- data/lib/occams/routes/cms.rb +18 -0
- data/lib/occams/routes/cms_admin.rb +58 -0
- data/lib/occams/routing.rb +12 -0
- data/lib/occams/seeds/file/exporter.rb +43 -0
- data/lib/occams/seeds/file/importer.rb +63 -0
- data/lib/occams/seeds/layout/exporter.rb +40 -0
- data/lib/occams/seeds/layout/importer.rb +62 -0
- data/lib/occams/seeds/page/exporter.rb +92 -0
- data/lib/occams/seeds/page/importer.rb +219 -0
- data/lib/occams/seeds/snippet/exporter.rb +34 -0
- data/lib/occams/seeds/snippet/importer.rb +51 -0
- data/lib/occams/seeds.rb +118 -0
- data/lib/occams/version.rb +7 -0
- data/lib/occams/view_hooks.rb +35 -0
- data/lib/occams.rb +60 -0
- data/lib/tasks/cms_seeds.rake +40 -0
- data/occams.gemspec +33 -0
- data/public/favicon.ico +0 -0
- metadata +666 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
= occams_admin_partial "occams/admin/cms/partials/site_form_before", form: form
|
|
2
|
+
|
|
3
|
+
= form.text_field :label, data: {slugify: @site.new_record?}
|
|
4
|
+
= form.text_field :identifier, data: {slug: true}
|
|
5
|
+
= form.text_field :hostname
|
|
6
|
+
= form.text_field :path
|
|
7
|
+
|
|
8
|
+
- locales = Occams.config.locales.to_a.collect{|l| ["#{l[1]} (#{l[0]})", l[0]]}
|
|
9
|
+
= form.select :locale, locales, bootstrap: {custom_control: true}
|
|
10
|
+
|
|
11
|
+
= occams_admin_partial "occams/admin/cms/partials/site_form_after", form: form
|
|
12
|
+
|
|
13
|
+
= form.form_actions do
|
|
14
|
+
= submit_tag t(@site.new_record? ? ".create" : ".update"), class: "btn btn-primary"
|
|
15
|
+
= link_to t(".cancel"), occams_admin_cms_sites_path, class: "btn btn-link"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
.page-header
|
|
2
|
+
= link_to t('.new_link'), new_occams_admin_cms_site_path, class: "btn btn-secondary float-right"
|
|
3
|
+
%h2= t('.title')
|
|
4
|
+
|
|
5
|
+
= occams_admin_partial "occams/admin/cms/partials/sites_before"
|
|
6
|
+
|
|
7
|
+
%ul.list
|
|
8
|
+
- @sites.each do |site|
|
|
9
|
+
%li
|
|
10
|
+
.row
|
|
11
|
+
.col-md-8.item
|
|
12
|
+
.item-content
|
|
13
|
+
.item-title
|
|
14
|
+
= link_to site.label, occams_admin_cms_site_pages_path(site)
|
|
15
|
+
.item-meta
|
|
16
|
+
.identifier
|
|
17
|
+
= site.identifier
|
|
18
|
+
= "(#{site.locale})"
|
|
19
|
+
.host
|
|
20
|
+
= link_to site.url, site.url, target: '_blank'
|
|
21
|
+
|
|
22
|
+
.col-md-4.d-flex.align-items-center.justify-content-md-end
|
|
23
|
+
.btn-group.btn-group-sm
|
|
24
|
+
= link_to t('.select'), occams_admin_cms_site_pages_path(site), class: 'btn btn-outline-secondary'
|
|
25
|
+
= link_to t('.edit'), edit_occams_admin_cms_site_path(site), class: 'btn btn-outline-secondary'
|
|
26
|
+
= link_to t('.delete'), occams_admin_cms_site_path(site), method: :delete, data: {confirm: t('.are_you_sure')}, class: 'btn btn-danger'
|
|
27
|
+
|
|
28
|
+
= occams_admin_partial "occams/admin/cms/partials/sites_after"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
= occams_admin_partial "occams/admin/cms/partials/snippet_form_before", form: form
|
|
2
|
+
|
|
3
|
+
= form.text_field :label, data: {slugify: @snippet.new_record?}
|
|
4
|
+
= form.text_field :identifier, data: {slug: true}
|
|
5
|
+
= form.check_box :markdown
|
|
6
|
+
|
|
7
|
+
- if @snippet.markdown
|
|
8
|
+
= form.text_area :content, data: {'cms-cm-mode' => 'text/x-markdown'}
|
|
9
|
+
- else
|
|
10
|
+
= form.text_area :content, data: {'cms-cm-mode' => 'text/html'}
|
|
11
|
+
|
|
12
|
+
= render 'occams/admin/cms/categories/form', form: form
|
|
13
|
+
|
|
14
|
+
= occams_admin_partial "occams/admin/cms/partials/snippet_form_after", form: form
|
|
15
|
+
|
|
16
|
+
= form.form_actions do
|
|
17
|
+
= submit_tag t(@snippet.new_record? ? ".create" : ".update"), class: "btn btn-primary"
|
|
18
|
+
= link_to t(".cancel"), occams_admin_cms_site_snippets_path, class: "btn btn-link"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
- content_for :right_column do
|
|
2
|
+
- link = occams_admin_cms_site_snippet_revisions_path(@site, @snippet)
|
|
3
|
+
= render "occams/admin/cms/revisions/sidebar", record: @snippet, link: link
|
|
4
|
+
|
|
5
|
+
.page-header
|
|
6
|
+
%h2= t('.title')
|
|
7
|
+
|
|
8
|
+
= occams_form_with model: @snippet, scope: :snippet, url: {action: :update} do |form|
|
|
9
|
+
= render form
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
- content_for :right_column do
|
|
2
|
+
= render "occams/admin/cms/categories/index", type: "Occams::Cms::Snippet"
|
|
3
|
+
|
|
4
|
+
.page-header
|
|
5
|
+
= link_to t('.new_link'), new_occams_admin_cms_site_snippet_path(@site), class: "btn btn-secondary float-right"
|
|
6
|
+
%h2= t('.title')
|
|
7
|
+
|
|
8
|
+
= occams_admin_partial "occams/admin/cms/partials/snippets_before"
|
|
9
|
+
|
|
10
|
+
%ul.list.sortable
|
|
11
|
+
- @snippets.each do |snippet|
|
|
12
|
+
%li{data: {id: snippet.id}}
|
|
13
|
+
.row
|
|
14
|
+
.col-md-6.item
|
|
15
|
+
.item-controls.d-none.d-lg-block
|
|
16
|
+
- if !params[:categories].present? && @site.snippets.count > 1
|
|
17
|
+
.dragger
|
|
18
|
+
%i.fas.fa-bars
|
|
19
|
+
.item-content
|
|
20
|
+
.item-title
|
|
21
|
+
= link_to snippet.label, edit_occams_admin_cms_site_snippet_path(@site, snippet)
|
|
22
|
+
.item-meta
|
|
23
|
+
= snippet.identifier
|
|
24
|
+
|
|
25
|
+
.col-md-2.item-categories.d-flex.align-items-center
|
|
26
|
+
= render "occams/admin/cms/categories/categories", object: snippet
|
|
27
|
+
|
|
28
|
+
.col-md-4.d-flex.align-items-center.justify-content-md-end
|
|
29
|
+
.btn-group.btn-group-sm
|
|
30
|
+
= link_to t('.edit'), edit_occams_admin_cms_site_snippet_path(@site, snippet), class: 'btn btn-outline-secondary'
|
|
31
|
+
= link_to t('.delete'), occams_admin_cms_site_snippet_path(@site, snippet), method: :delete, data: {confirm: t('.are_you_sure')}, class: 'btn btn-danger'
|
|
32
|
+
|
|
33
|
+
= occams_admin_partial "occams/admin/cms/partials/snippets_after"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
= occams_admin_partial "occams/admin/cms/partials/translation_form_before", form: form
|
|
2
|
+
|
|
3
|
+
= form.select :locale, translation_select_options
|
|
4
|
+
|
|
5
|
+
= form.text_field :label
|
|
6
|
+
|
|
7
|
+
- if (options = ::Occams::Cms::Layout.options_for_select(@site)).present?
|
|
8
|
+
= form.select :layout_id, options, {}, {data: {url: form_fragments_occams_admin_cms_site_page_translation_path(@site, @page, @translation.id.to_i)}, id: "fragments-toggle"}
|
|
9
|
+
|
|
10
|
+
#form-fragments-container
|
|
11
|
+
= render "occams/admin/cms/fragments/form_fragments", record: @translation, scope: :translation
|
|
12
|
+
|
|
13
|
+
= form.check_box :is_published
|
|
14
|
+
|
|
15
|
+
= occams_admin_partial "occams/admin/cms/partials/translation_form_after", form: form
|
|
16
|
+
|
|
17
|
+
= form.form_actions do
|
|
18
|
+
= submit_tag t(".preview"), name: "preview", formtarget: "occams-cms-preview", id: nil, class: "btn btn-secondary", data: {disable_with: false}
|
|
19
|
+
= submit_tag t(@translation.new_record? ? ".create" : ".update"), class: "btn btn-primary", data: {disable_with: false}
|
|
20
|
+
= link_to t(".cancel"), edit_occams_admin_cms_site_page_path(@site, @page), class: "btn btn-link"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.box.translations
|
|
2
|
+
|
|
3
|
+
= active_link_to edit_occams_admin_cms_site_page_path(@site, @page), class: "btn btn-block btn-sm btn-light text-left text-truncate mb-1" do
|
|
4
|
+
= content_tag(:span, @site.locale, class: "badge badge-light text-uppercase")
|
|
5
|
+
= @page.label
|
|
6
|
+
|
|
7
|
+
- @page.translations.each do |translation|
|
|
8
|
+
.btn-group.btn-group-sm.d-flex.mb-1
|
|
9
|
+
- url = edit_occams_admin_cms_site_page_translation_path(@site, @page, translation)
|
|
10
|
+
- published_css_class = translation.is_published? ? "published" : "draft"
|
|
11
|
+
= active_link_to url, class: "#{published_css_class} translation btn text-left text-truncate btn-light w-100" do
|
|
12
|
+
= content_tag(:span, translation.locale, class: "badge badge-light text-uppercase")
|
|
13
|
+
= translation.label
|
|
14
|
+
|
|
15
|
+
- url = occams_admin_cms_site_page_translation_path(@site, @page, translation)
|
|
16
|
+
= link_to url, method: :delete, data: {confirm: t(".confirm")}, class: "btn btn-danger" do
|
|
17
|
+
%i.fas.fa-fw.fa-times
|
|
18
|
+
|
|
19
|
+
= link_to t(".new"), new_occams_admin_cms_site_page_translation_path(@site, @page), class: "btn btn-sm btn-secondary d-block mb-1"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
- content_for :right_column do
|
|
2
|
+
- link = occams_admin_cms_site_page_translation_revisions_path(@site, @page, @translation)
|
|
3
|
+
= render "occams/admin/cms/revisions/sidebar", record: @translation, link: link
|
|
4
|
+
= render "occams/admin/cms/translations/sidebar"
|
|
5
|
+
|
|
6
|
+
.page-header
|
|
7
|
+
%h2= t('.title')
|
|
8
|
+
|
|
9
|
+
= occams_form_with model: @translation, scope: :translation, url: {action: :update}, html: {multipart: true} do |form|
|
|
10
|
+
= render form
|
data/bin/bundle
ADDED
data/bin/rails
ADDED
data/bin/rake
ADDED
data/bin/setup
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
include FileUtils
|
|
4
|
+
|
|
5
|
+
# path to your application root.
|
|
6
|
+
APP_ROOT = File.expand_path('..', __dir__)
|
|
7
|
+
|
|
8
|
+
def system!(*args)
|
|
9
|
+
system(*args) || abort("\n== Command #{args} failed ==")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
chdir APP_ROOT do
|
|
13
|
+
# This script is a starting point to setup your application.
|
|
14
|
+
# Add necessary setup steps to this file.
|
|
15
|
+
|
|
16
|
+
puts '== Installing dependencies =='
|
|
17
|
+
system! 'gem install bundler --conservative'
|
|
18
|
+
system('bundle check') || system!('bundle install')
|
|
19
|
+
|
|
20
|
+
# Install JavaScript dependencies if using Yarn
|
|
21
|
+
# system('bin/yarn')
|
|
22
|
+
|
|
23
|
+
# puts "\n== Copying sample files =="
|
|
24
|
+
# unless File.exist?('config/database.yml')
|
|
25
|
+
# cp 'config/database.yml.sample', 'config/database.yml'
|
|
26
|
+
# end
|
|
27
|
+
|
|
28
|
+
puts "\n== Preparing database =="
|
|
29
|
+
system! 'bin/rails db:setup'
|
|
30
|
+
|
|
31
|
+
puts "\n== Removing old logs and tempfiles =="
|
|
32
|
+
system! 'bin/rails log:clear tmp:clear'
|
|
33
|
+
|
|
34
|
+
puts "\n== Restarting application server =="
|
|
35
|
+
system! 'bin/rails restart'
|
|
36
|
+
end
|
data/bin/update
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
include FileUtils
|
|
4
|
+
|
|
5
|
+
# path to your application root.
|
|
6
|
+
APP_ROOT = File.expand_path('..', __dir__)
|
|
7
|
+
|
|
8
|
+
def system!(*args)
|
|
9
|
+
system(*args) || abort("\n== Command #{args} failed ==")
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
chdir APP_ROOT do
|
|
13
|
+
# This script is a way to update your development environment automatically.
|
|
14
|
+
# Add necessary update steps to this file.
|
|
15
|
+
|
|
16
|
+
puts '== Installing dependencies =='
|
|
17
|
+
system! 'gem install bundler --conservative'
|
|
18
|
+
system('bundle check') || system!('bundle install')
|
|
19
|
+
|
|
20
|
+
# Install JavaScript dependencies if using Yarn
|
|
21
|
+
# system('bin/yarn')
|
|
22
|
+
|
|
23
|
+
puts "\n== Updating database =="
|
|
24
|
+
system! 'bin/rails db:migrate'
|
|
25
|
+
|
|
26
|
+
puts "\n== Removing old logs and tempfiles =="
|
|
27
|
+
system! 'bin/rails log:clear tmp:clear'
|
|
28
|
+
|
|
29
|
+
puts "\n== Restarting application server =="
|
|
30
|
+
system! 'bin/rails restart'
|
|
31
|
+
end
|
data/bin/yarn
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
VENDOR_PATH = File.expand_path('..', __dir__)
|
|
3
|
+
Dir.chdir(VENDOR_PATH) do
|
|
4
|
+
begin
|
|
5
|
+
exec "yarnpkg #{ARGV.join(' ')}"
|
|
6
|
+
rescue Errno::ENOENT
|
|
7
|
+
$stderr.puts "Yarn executable was not detected in the system."
|
|
8
|
+
$stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
|
|
9
|
+
exit 1
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "boot"
|
|
4
|
+
|
|
5
|
+
require "rails/all"
|
|
6
|
+
|
|
7
|
+
# Require the gems listed in Gemfile, including any gems
|
|
8
|
+
# you've limited to :test, :development, or :production.
|
|
9
|
+
Bundler.require(*Rails.groups)
|
|
10
|
+
|
|
11
|
+
module Occams
|
|
12
|
+
class Application < Rails::Application
|
|
13
|
+
|
|
14
|
+
require_relative "../lib/occams"
|
|
15
|
+
|
|
16
|
+
config.load_defaults 5.2
|
|
17
|
+
|
|
18
|
+
# Settings in config/environments/* take precedence over those specified here.
|
|
19
|
+
# Application configuration should go into files in config/initializers
|
|
20
|
+
# -- all .rb files in that directory are automatically loaded.
|
|
21
|
+
|
|
22
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
|
23
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
|
24
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
|
25
|
+
|
|
26
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
|
27
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
|
28
|
+
# config.i18n.default_locale = :de
|
|
29
|
+
|
|
30
|
+
# Ensuring that all ActiveStorage routes are loaded before out globbing route.
|
|
31
|
+
config.railties_order = [ActiveStorage::Engine, :main_app, :all]
|
|
32
|
+
|
|
33
|
+
# Making sure we don't load our dev routes as part of the engine
|
|
34
|
+
config.paths["config/routes.rb"] << "config/cms_routes.rb"
|
|
35
|
+
|
|
36
|
+
config.i18n.enforce_available_locales = true
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
data/config/boot.rb
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# We can't have this in config/routes.rb as they will get pulled in into parent
|
|
4
|
+
# application automatically. We want user to manually place them.
|
|
5
|
+
Occams::Application.routes.draw do
|
|
6
|
+
occams_route :cms_admin
|
|
7
|
+
occams_route :cms
|
|
8
|
+
end
|
data/config/database.yml
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
defined?(Occams::Application) && Occams::Application.configure do
|
|
4
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
|
5
|
+
|
|
6
|
+
# In the development environment your application's code is reloaded on
|
|
7
|
+
# every request. This slows down response time but is perfect for development
|
|
8
|
+
# since you don't have to restart the web server when you make code changes.
|
|
9
|
+
config.cache_classes = false
|
|
10
|
+
|
|
11
|
+
# Do not eager load code on boot.
|
|
12
|
+
config.eager_load = false
|
|
13
|
+
|
|
14
|
+
# Show full error reports.
|
|
15
|
+
config.consider_all_requests_local = true
|
|
16
|
+
|
|
17
|
+
# Enable/disable caching. By default caching is disabled.
|
|
18
|
+
# Run rails dev:cache to toggle caching.
|
|
19
|
+
if Rails.root.join("tmp/caching-dev.txt").exist?
|
|
20
|
+
config.action_controller.perform_caching = true
|
|
21
|
+
|
|
22
|
+
config.cache_store = :memory_store
|
|
23
|
+
config.public_file_server.headers = {
|
|
24
|
+
"Cache-Control" => "public, max-age=#{2.days.to_i}"
|
|
25
|
+
}
|
|
26
|
+
else
|
|
27
|
+
config.action_controller.perform_caching = false
|
|
28
|
+
|
|
29
|
+
config.cache_store = :null_store
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Store uploaded files on the local file system (see config/storage.yml for options)
|
|
33
|
+
config.active_storage.service = :local
|
|
34
|
+
|
|
35
|
+
# Don't care if the mailer can't send.
|
|
36
|
+
config.action_mailer.raise_delivery_errors = false
|
|
37
|
+
|
|
38
|
+
config.action_mailer.perform_caching = false
|
|
39
|
+
|
|
40
|
+
# Print deprecation notices to the Rails logger.
|
|
41
|
+
config.active_support.deprecation = :log
|
|
42
|
+
|
|
43
|
+
# Raise an error on page load if there are pending migrations.
|
|
44
|
+
config.active_record.migration_error = :page_load
|
|
45
|
+
|
|
46
|
+
# Debug mode disables concatenation and preprocessing of assets.
|
|
47
|
+
# This option may cause significant delays in view rendering with a large
|
|
48
|
+
# number of complex assets.
|
|
49
|
+
config.assets.debug = true
|
|
50
|
+
|
|
51
|
+
# Suppress logger output for asset requests.
|
|
52
|
+
config.assets.quiet = true
|
|
53
|
+
|
|
54
|
+
# Use an evented file watcher to asynchronously detect changes in source code,
|
|
55
|
+
# routes, locales, etc. This feature depends on the listen gem.
|
|
56
|
+
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
|
57
|
+
|
|
58
|
+
config.active_job.queue_adapter = :inline
|
|
59
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
defined?(Occams::Application) && Occams::Application.configure do
|
|
4
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
|
5
|
+
|
|
6
|
+
# The test environment is used exclusively to run your application's
|
|
7
|
+
# test suite. You never need to work with it otherwise. Remember that
|
|
8
|
+
# your test database is "scratch space" for the test suite and is wiped
|
|
9
|
+
# and recreated between test runs. Don't rely on the data there!
|
|
10
|
+
config.cache_classes = true
|
|
11
|
+
|
|
12
|
+
# Do not eager load code on boot. This avoids loading your whole application
|
|
13
|
+
# just for the purpose of running a single test. If you are using a tool that
|
|
14
|
+
# preloads Rails for running tests, you may have to set it to true.
|
|
15
|
+
config.eager_load = false
|
|
16
|
+
|
|
17
|
+
# Configure public file server for tests with Cache-Control for performance.
|
|
18
|
+
config.public_file_server.enabled = true
|
|
19
|
+
config.public_file_server.headers = {
|
|
20
|
+
"Cache-Control" => "public, max-age=#{1.hour.to_i}"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
# Show full error reports and disable caching.
|
|
24
|
+
config.consider_all_requests_local = true
|
|
25
|
+
config.action_controller.perform_caching = false
|
|
26
|
+
|
|
27
|
+
# Raise exceptions instead of rendering exception templates.
|
|
28
|
+
config.action_dispatch.show_exceptions = false
|
|
29
|
+
|
|
30
|
+
# Disable request forgery protection in test environment.
|
|
31
|
+
config.action_controller.allow_forgery_protection = false
|
|
32
|
+
|
|
33
|
+
# Store uploaded files on the local file system in a temporary directory
|
|
34
|
+
config.active_storage.service = :test
|
|
35
|
+
config.action_mailer.perform_caching = false
|
|
36
|
+
|
|
37
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
|
38
|
+
# The :test delivery method accumulates sent emails in the
|
|
39
|
+
# ActionMailer::Base.deliveries array.
|
|
40
|
+
config.action_mailer.delivery_method = :test
|
|
41
|
+
|
|
42
|
+
# Print deprecation notices to the stderr.
|
|
43
|
+
config.active_support.deprecation = :stderr
|
|
44
|
+
|
|
45
|
+
config.active_job.queue_adapter = :inline
|
|
46
|
+
|
|
47
|
+
# TODO: This is temporary fix so TravisCI runs until Rails 5.2.3 is out.
|
|
48
|
+
# See: https://github.com/rails/rails/pull/35607
|
|
49
|
+
config.secret_key_base = SecureRandom.hex(64)
|
|
50
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Occams.configure do |config|
|
|
4
|
+
# Title of the admin area
|
|
5
|
+
# config.cms_title = 'Occams CMS Engine'
|
|
6
|
+
|
|
7
|
+
# Controller that is inherited from CmsAdmin::BaseController
|
|
8
|
+
# config.admin_base_controller = 'ApplicationController'
|
|
9
|
+
|
|
10
|
+
# Controller that Occams::Cms::BaseController will inherit from
|
|
11
|
+
# config.public_base_controller = 'ApplicationController'
|
|
12
|
+
|
|
13
|
+
# Module responsible for authentication. You can replace it with your own.
|
|
14
|
+
# It simply needs to have #authenticate method. See http_auth.rb for reference.
|
|
15
|
+
# config.admin_auth = 'OccamsAdminAuthentication'
|
|
16
|
+
|
|
17
|
+
# Module responsible for authorization on admin side. It should have #authorize
|
|
18
|
+
# method that returns true or false based on params and loaded instance
|
|
19
|
+
# variables available for a given controller.
|
|
20
|
+
# config.admin_authorization = 'OccamsAdminAuthorization'
|
|
21
|
+
|
|
22
|
+
# Module responsible for public authentication. Similar to the above. You also
|
|
23
|
+
# will have access to @cms_site, @cms_layout, @cms_page so you can use them in
|
|
24
|
+
# your logic. Default module doesn't do anything.
|
|
25
|
+
# config.public_auth = 'OccamsPublicAuthentication'
|
|
26
|
+
|
|
27
|
+
# Module responsible for public authorization. It should have #authorize
|
|
28
|
+
# method that returns true or false based on params and loaded instance
|
|
29
|
+
# variables available for a given controller.
|
|
30
|
+
# config.public_authorization = 'OccamsPublicAuthorization'
|
|
31
|
+
|
|
32
|
+
# When arriving at /cms-admin you may chose to redirect to arbirtary path,
|
|
33
|
+
# for example '/cms-admin/users'
|
|
34
|
+
# config.admin_route_redirect = ''
|
|
35
|
+
|
|
36
|
+
# Sofa allows you to setup entire site from files. Database is updated with each
|
|
37
|
+
# request (if necessary). Please note that database entries are destroyed if there's
|
|
38
|
+
# no corresponding file. Seeds are disabled by default.
|
|
39
|
+
# config.enable_seeds = false
|
|
40
|
+
|
|
41
|
+
# Path where seeds can be located.
|
|
42
|
+
# config.seeds_path = File.expand_path('db/cms_seeds', Rails.root)
|
|
43
|
+
|
|
44
|
+
# Content for Layouts, Pages and Snippets has a revision history. You can revert
|
|
45
|
+
# a previous version using this system. You can control how many revisions per
|
|
46
|
+
# object you want to keep. Set it to 0 if you wish to turn this feature off.
|
|
47
|
+
# config.revisions_limit = 25
|
|
48
|
+
|
|
49
|
+
# Locale definitions. If you want to define your own locale merge
|
|
50
|
+
# {:locale => 'Locale Title'} with this.
|
|
51
|
+
# config.locales = {:en => 'English', :es => 'Español'}
|
|
52
|
+
|
|
53
|
+
# Admin interface will respect the locale of the site being managed. However you can
|
|
54
|
+
# force it to English by setting this to `:en`
|
|
55
|
+
# config.admin_locale = nil
|
|
56
|
+
|
|
57
|
+
# A class that is included as a sweeper to admin base controller if it's set
|
|
58
|
+
# config.admin_cache_sweeper = nil
|
|
59
|
+
|
|
60
|
+
# By default you cannot have irb code inside your layouts/pages/snippets.
|
|
61
|
+
# Generally this is to prevent putting something like this:
|
|
62
|
+
# <% User.delete_all %> but if you really want to allow it...
|
|
63
|
+
# config.allow_erb = false
|
|
64
|
+
|
|
65
|
+
# Whitelist of all helper methods that can be used via {{cms:helper}} tag. By default
|
|
66
|
+
# all helpers are allowed except `eval`, `send`, `call` and few others. Empty array
|
|
67
|
+
# will prevent rendering of all helpers.
|
|
68
|
+
# config.allowed_helpers = nil
|
|
69
|
+
|
|
70
|
+
# Whitelist of partials paths that can be used via {{cms:partial}} tag. All partials
|
|
71
|
+
# are accessible by default. Empty array will prevent rendering of all partials.
|
|
72
|
+
# config.allowed_partials = nil
|
|
73
|
+
|
|
74
|
+
# Site aliases, if you want to have aliases for your site. Good for harmonizing
|
|
75
|
+
# production env with dev/testing envs.
|
|
76
|
+
# e.g. config.hostname_aliases = {'host.com' => 'host.inv', 'host_a.com' => ['host.lvh.me', 'host.dev']}
|
|
77
|
+
# Default is nil (not used)
|
|
78
|
+
# config.hostname_aliases = nil
|
|
79
|
+
|
|
80
|
+
# Reveal partials that can be overwritten in the admin area.
|
|
81
|
+
# Default is false.
|
|
82
|
+
# config.reveal_cms_partials = false
|
|
83
|
+
#
|
|
84
|
+
# Customize the returned content json data
|
|
85
|
+
# include fragments in content json
|
|
86
|
+
# config.content_json_options = {
|
|
87
|
+
# include: [:fragments]
|
|
88
|
+
# }
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Default credentials for Occams::AccessControl::AdminAuthentication
|
|
92
|
+
# YOU REALLY WANT TO CHANGE THIS BEFORE PUTTING YOUR SITE LIVE
|
|
93
|
+
Occams::AccessControl::AdminAuthentication.username = "user"
|
|
94
|
+
Occams::AccessControl::AdminAuthentication.password = "pass"
|
|
95
|
+
|
|
96
|
+
# Uncomment this module and `config.admin_auth` above to use custom admin authentication
|
|
97
|
+
# module OccamsAdminAuthentication
|
|
98
|
+
# def authenticate
|
|
99
|
+
# return true
|
|
100
|
+
# end
|
|
101
|
+
# end
|
|
102
|
+
|
|
103
|
+
# Uncomment this module and `config.admin_authorization` above to use custom admin authorization
|
|
104
|
+
# module OccamsAdminAuthorization
|
|
105
|
+
# def authorize
|
|
106
|
+
# return true
|
|
107
|
+
# end
|
|
108
|
+
# end
|
|
109
|
+
|
|
110
|
+
# Uncomment this module and `config.public_auth` above to use custom public authentication
|
|
111
|
+
# module OccamsPublicAuthentication
|
|
112
|
+
# def authenticate
|
|
113
|
+
# return true
|
|
114
|
+
# end
|
|
115
|
+
# end
|
|
116
|
+
|
|
117
|
+
# Uncomment this module and `config.public_authorization` above to use custom public authorization
|
|
118
|
+
# module OccamsPublicAuthorization
|
|
119
|
+
# def authorize
|
|
120
|
+
# return true
|
|
121
|
+
# end
|
|
122
|
+
# end
|