comfortable_media_surfer 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.codeclimate.yml +4 -0
- data/.gitattributes +2 -0
- data/.github/issue_template.md +19 -0
- data/.github/pull_request_template.md +6 -0
- data/.github/workflows/coveralls.yml +40 -0
- data/.github/workflows/rubyonrails.yml +51 -0
- data/.gitignore +21 -0
- data/.rubocop.yml +75 -0
- data/.travis.yml +44 -0
- data/CONTRIBUTING.md +35 -0
- data/Gemfile +38 -0
- data/LICENSE +20 -0
- data/README.md +109 -0
- data/Rakefile +5 -0
- data/app/assets/config/manifest.js +0 -0
- data/app/assets/fonts/comfy/admin/cms/lib/redactor-font.eot +0 -0
- data/app/assets/javascripts/comfy/admin/cms/application.js +39 -0
- data/app/assets/javascripts/comfy/admin/cms/base.js +46 -0
- data/app/assets/javascripts/comfy/admin/cms/categories.js +17 -0
- data/app/assets/javascripts/comfy/admin/cms/codemirror.js +31 -0
- data/app/assets/javascripts/comfy/admin/cms/custom.js +1 -0
- data/app/assets/javascripts/comfy/admin/cms/diff.js +10 -0
- data/app/assets/javascripts/comfy/admin/cms/file_link.js +67 -0
- data/app/assets/javascripts/comfy/admin/cms/file_upload.js +194 -0
- data/app/assets/javascripts/comfy/admin/cms/files_modal.js +40 -0
- data/app/assets/javascripts/comfy/admin/cms/page_fragments.js +22 -0
- data/app/assets/javascripts/comfy/admin/cms/slugify.js +34 -0
- data/app/assets/javascripts/comfy/admin/cms/sortable_list.js +40 -0
- data/app/assets/javascripts/comfy/admin/cms/timepicker.js +30 -0
- data/app/assets/javascripts/comfy/admin/cms/wysiwyg.js +72 -0
- data/app/assets/javascripts/comfy/vendor/Moxie.swf +0 -0
- data/app/assets/javascripts/comfy/vendor/Moxie.xap +0 -0
- data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js +7 -0
- data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js.map +1 -0
- data/app/assets/javascripts/comfy/vendor/codemirror/addon/edit/closetag.js +169 -0
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/css/css.js +832 -0
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/htmlmixed/htmlmixed.js +152 -0
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/javascript/javascript.js +875 -0
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/markdown/markdown.js +861 -0
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/xml/xml.js +394 -0
- data/app/assets/javascripts/comfy/vendor/codemirror.js +9653 -0
- data/app/assets/javascripts/comfy/vendor/diff/diff_match_patch.min.js +49 -0
- data/app/assets/javascripts/comfy/vendor/diff/pretty_text_diff.js +76 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ar.js +52 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bg.js +65 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bn.js +65 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ca.js +83 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cs.js +70 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cy.js +92 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/da.js +71 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/de.js +70 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/default.js +80 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/eo.js +73 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/es.js +69 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/et.js +73 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fa.js +68 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fi.js +69 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fr.js +75 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/gr.js +74 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/he.js +57 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hi.js +65 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hr.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hu.js +72 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/id.js +61 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/it.js +70 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ja.js +57 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ko.js +60 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lt.js +72 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lv.js +67 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mk.js +69 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mn.js +67 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ms.js +68 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/my.js +69 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/nl.js +75 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/no.js +73 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pa.js +65 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pl.js +68 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt-BR.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ro.js +69 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ru.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/si.js +65 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sk.js +70 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sl.js +70 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sq.js +65 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sr.js +69 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sv.js +70 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/th.js +72 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/tr.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/uk.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/vn.js +66 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-CN.js +61 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-TW.js +61 -0
- data/app/assets/javascripts/comfy/vendor/flatpickr.min.js +2 -0
- data/app/assets/javascripts/comfy/vendor/fontawesome.js +5 -0
- data/app/assets/javascripts/comfy/vendor/moxie.min.js +16 -0
- data/app/assets/javascripts/comfy/vendor/plupload.dev.js +2497 -0
- data/app/assets/javascripts/comfy/vendor/redactor/definedlinks.js +53 -0
- data/app/assets/javascripts/comfy/vendor/redactor/filemanager.js +64 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ar.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/az.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ba.js +79 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/bg.js +77 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/by.js +77 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ca.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/cs.js +87 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/da.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/de.js +80 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/el.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/en.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/eo.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/es.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/es_AR.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/fa.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/fi.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/fr.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ge.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/gr.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/he.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/hr.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/hu.js +77 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/id.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/it.js +78 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ja.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/kn.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ko.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/lt.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/lv.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/mk.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/nb.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/nl.js +80 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/pl.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/pt-BR.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/pt.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ro.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ru.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/sk.js +76 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/sl.js +79 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/sq.js +79 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/sr-CIR.js +79 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/sr-LAT.js +79 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/sv.js +74 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/th.js +74 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/tr.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/ua.js +77 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/uk.js +77 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/vi.js +74 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/zh-CN.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/zh-TW.js +75 -0
- data/app/assets/javascripts/comfy/vendor/redactor/imagemanager.js +57 -0
- data/app/assets/javascripts/comfy/vendor/redactor/table.js +337 -0
- data/app/assets/javascripts/comfy/vendor/redactor/video.js +77 -0
- data/app/assets/javascripts/comfy/vendor/redactor.js +9561 -0
- data/app/assets/javascripts/comfy/vendor/sortable.min.js +5 -0
- data/app/assets/stylesheets/comfy/admin/cms/application.sass +11 -0
- data/app/assets/stylesheets/comfy/admin/cms/base.sass +256 -0
- data/app/assets/stylesheets/comfy/admin/cms/codemirror_overrides.sass +19 -0
- data/app/assets/stylesheets/comfy/admin/cms/custom.sass +1 -0
- data/app/assets/stylesheets/comfy/admin/cms/redactor_overrides.sass +22 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_alert.scss +51 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_badge.scss +54 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_breadcrumb.scss +41 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_button-group.scss +163 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_buttons.scss +137 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_card.scss +289 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_carousel.scss +197 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_close.scss +41 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_code.scss +48 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_custom-forms.scss +507 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_dropdown.scss +191 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_forms.scss +330 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_functions.scss +86 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_grid.scss +52 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_images.scss +42 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_input-group.scss +193 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_jumbotron.scss +17 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_list-group.scss +149 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_media.scss +8 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_mixins.scss +47 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_modal.scss +229 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_nav.scss +120 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_navbar.scss +294 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_pagination.scss +73 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_popover.scss +171 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_print.scss +141 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_progress.scss +43 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_reboot.scss +483 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_root.scss +19 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_spinners.scss +55 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_tables.scss +185 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_toasts.scss +44 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_tooltip.scss +115 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_transitions.scss +20 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_type.scss +125 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_utilities.scss +17 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/_variables.scss +1123 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap-grid.scss +29 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap-reboot.scss +12 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/bootstrap.scss +44 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_alert.scss +13 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_background-variant.scss +21 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_badge.scss +17 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_border-radius.scss +63 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_box-shadow.scss +20 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_breakpoints.scss +123 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_buttons.scss +107 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_caret.scss +62 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_clearfix.scss +7 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_deprecate.scss +10 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_float.scss +14 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_forms.scss +192 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_gradients.scss +45 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_grid-framework.scss +66 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_grid.scss +51 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_hover.scss +37 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_image.scss +36 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_list-group.scss +21 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_lists.scss +7 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_nav-divider.scss +10 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_pagination.scss +22 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_reset-text.scss +17 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_resize.scss +6 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_screen-reader.scss +33 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_size.scss +7 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_table-row.scss +39 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-emphasis.scss +16 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-hide.scss +11 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_text-truncate.scss +8 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_transition.scss +16 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/mixins/_visibility.scss +8 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_align.scss +8 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_background.scss +19 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_borders.scss +75 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_clearfix.scss +3 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_display.scss +26 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_embed.scss +39 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_flex.scss +51 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_float.scss +11 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_overflow.scss +5 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_position.scss +32 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_screenreaders.scss +11 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_shadows.scss +6 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_sizing.scss +20 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_spacing.scss +73 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_stretched-link.scss +19 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_text.scss +72 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/utilities/_visibility.scss +13 -0
- data/app/assets/stylesheets/comfy/vendor/bootstrap/vendor/_rfs.scss +204 -0
- data/app/assets/stylesheets/comfy/vendor/codemirror.css +346 -0
- data/app/assets/stylesheets/comfy/vendor/flatpickr.min.css +13 -0
- data/app/assets/stylesheets/comfy/vendor/fontawesome.css +343 -0
- data/app/assets/stylesheets/comfy/vendor/redactor.css +948 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/comfy/admin/base_controller.rb +20 -0
- data/app/controllers/comfy/admin/cms/base_controller.rb +54 -0
- data/app/controllers/comfy/admin/cms/categories_controller.rb +38 -0
- data/app/controllers/comfy/admin/cms/files_controller.rb +139 -0
- data/app/controllers/comfy/admin/cms/layouts_controller.rb +68 -0
- data/app/controllers/comfy/admin/cms/pages_controller.rb +163 -0
- data/app/controllers/comfy/admin/cms/revisions/base_controller.rb +48 -0
- data/app/controllers/comfy/admin/cms/revisions/layout_controller.rb +16 -0
- data/app/controllers/comfy/admin/cms/revisions/page_controller.rb +28 -0
- data/app/controllers/comfy/admin/cms/revisions/snippet_controller.rb +16 -0
- data/app/controllers/comfy/admin/cms/revisions/translation_controller.rb +29 -0
- data/app/controllers/comfy/admin/cms/sites_controller.rb +68 -0
- data/app/controllers/comfy/admin/cms/snippets_controller.rb +65 -0
- data/app/controllers/comfy/admin/cms/translations_controller.rb +105 -0
- data/app/controllers/comfy/cms/assets_controller.rb +38 -0
- data/app/controllers/comfy/cms/base_controller.rb +26 -0
- data/app/controllers/comfy/cms/content_controller.rb +90 -0
- data/app/controllers/concerns/comfy/paginate.rb +11 -0
- data/app/controllers/concerns/comfy/reorder_action.rb +20 -0
- data/app/helpers/comfy/admin/cms_helper.rb +50 -0
- data/app/helpers/comfy/cms_helper.rb +71 -0
- data/app/models/comfy/cms/categorization.rb +14 -0
- data/app/models/comfy/cms/category.rb +22 -0
- data/app/models/comfy/cms/file.rb +65 -0
- data/app/models/comfy/cms/fragment.rb +58 -0
- data/app/models/comfy/cms/layout.rb +114 -0
- data/app/models/comfy/cms/page.rb +173 -0
- data/app/models/comfy/cms/revision.rb +10 -0
- data/app/models/comfy/cms/site.rb +93 -0
- data/app/models/comfy/cms/snippet.rb +43 -0
- data/app/models/comfy/cms/translation.rb +42 -0
- data/app/models/concerns/comfy/cms/with_categories.rb +51 -0
- data/app/models/concerns/comfy/cms/with_fragments.rb +123 -0
- data/app/views/comfy/admin/cms/categories/_categories.html.haml +4 -0
- data/app/views/comfy/admin/cms/categories/_edit.html.haml +7 -0
- data/app/views/comfy/admin/cms/categories/_form.html.haml +5 -0
- data/app/views/comfy/admin/cms/categories/_index.html.haml +28 -0
- data/app/views/comfy/admin/cms/categories/_show.html.haml +15 -0
- data/app/views/comfy/admin/cms/categories/create.js.erb +7 -0
- data/app/views/comfy/admin/cms/categories/destroy.js.erb +8 -0
- data/app/views/comfy/admin/cms/categories/edit.js.erb +3 -0
- data/app/views/comfy/admin/cms/categories/update.js.erb +6 -0
- data/app/views/comfy/admin/cms/files/_file.html.haml +31 -0
- data/app/views/comfy/admin/cms/files/_form.html.haml +26 -0
- data/app/views/comfy/admin/cms/files/_modal.html.haml +3 -0
- data/app/views/comfy/admin/cms/files/destroy.js.erb +4 -0
- data/app/views/comfy/admin/cms/files/edit.html.haml +5 -0
- data/app/views/comfy/admin/cms/files/index.html.haml +31 -0
- data/app/views/comfy/admin/cms/files/new.html.haml +5 -0
- data/app/views/comfy/admin/cms/fragments/_form_fragment_attachments.html.haml +23 -0
- data/app/views/comfy/admin/cms/fragments/_form_fragments.html.haml +38 -0
- data/app/views/comfy/admin/cms/layouts/_form.html.haml +20 -0
- data/app/views/comfy/admin/cms/layouts/_index_branch.html.haml +26 -0
- data/app/views/comfy/admin/cms/layouts/edit.html.haml +9 -0
- data/app/views/comfy/admin/cms/layouts/index.html.haml +10 -0
- data/app/views/comfy/admin/cms/layouts/new.html.haml +5 -0
- data/app/views/comfy/admin/cms/pages/_form.html.haml +31 -0
- data/app/views/comfy/admin/cms/pages/_index_branch.html.haml +44 -0
- data/app/views/comfy/admin/cms/pages/edit.html.haml +10 -0
- data/app/views/comfy/admin/cms/pages/index.html.haml +13 -0
- data/app/views/comfy/admin/cms/pages/new.html.haml +5 -0
- data/app/views/comfy/admin/cms/pages/toggle_branch.js.erb +13 -0
- data/app/views/comfy/admin/cms/revisions/_sidebar.html.haml +2 -0
- data/app/views/comfy/admin/cms/revisions/show.html.haml +36 -0
- data/app/views/comfy/admin/cms/sites/_form.html.haml +15 -0
- data/app/views/comfy/admin/cms/sites/edit.html.haml +5 -0
- data/app/views/comfy/admin/cms/sites/index.html.haml +28 -0
- data/app/views/comfy/admin/cms/sites/new.html.haml +5 -0
- data/app/views/comfy/admin/cms/snippets/_form.html.haml +19 -0
- data/app/views/comfy/admin/cms/snippets/edit.html.haml +9 -0
- data/app/views/comfy/admin/cms/snippets/index.html.haml +33 -0
- data/app/views/comfy/admin/cms/snippets/new.html.haml +5 -0
- data/app/views/comfy/admin/cms/translations/_form.html.haml +20 -0
- data/app/views/comfy/admin/cms/translations/_sidebar.html.haml +19 -0
- data/app/views/comfy/admin/cms/translations/edit.html.haml +10 -0
- data/app/views/comfy/admin/cms/translations/new.html.haml +5 -0
- data/app/views/kaminari/comfy/_first_page.html.haml +3 -0
- data/app/views/kaminari/comfy/_gap.html.haml +2 -0
- data/app/views/kaminari/comfy/_last_page.html.haml +3 -0
- data/app/views/kaminari/comfy/_next_page.html.haml +2 -0
- data/app/views/kaminari/comfy/_page.html.haml +2 -0
- data/app/views/kaminari/comfy/_paginator.html.haml +11 -0
- data/app/views/kaminari/comfy/_prev_page.html.haml +2 -0
- data/app/views/layouts/comfy/admin/cms/_body.html.haml +14 -0
- data/app/views/layouts/comfy/admin/cms/_flash.html.haml +4 -0
- data/app/views/layouts/comfy/admin/cms/_footer_js.html.haml +6 -0
- data/app/views/layouts/comfy/admin/cms/_head.html.haml +19 -0
- data/app/views/layouts/comfy/admin/cms/_left.html.haml +46 -0
- data/app/views/layouts/comfy/admin/cms/_right.html.haml +5 -0
- data/app/views/layouts/comfy/admin/cms.html.haml +4 -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/comfortable_media_surfer.gemspec +37 -0
- data/config/application.rb +59 -0
- data/config/boot.rb +5 -0
- data/config/cable.yml +10 -0
- data/config/cms_routes.rb +8 -0
- data/config/database.yml +40 -0
- data/config/environment.rb +7 -0
- data/config/environments/development.rb +80 -0
- data/config/environments/production.rb +99 -0
- data/config/environments/test.rb +74 -0
- data/config/initializers/assets.rb +14 -0
- data/config/initializers/comfortable_media_surfer.rb +122 -0
- data/config/initializers/content_security_policy.rb +27 -0
- data/config/initializers/filter_parameter_logging.rb +10 -0
- data/config/initializers/inflections.rb +18 -0
- data/config/initializers/json.rb +9 -0
- data/config/initializers/new_framework_defaults_7_0.rb +144 -0
- data/config/initializers/new_framework_defaults_7_1.rb +225 -0
- data/config/initializers/permissions_policy.rb +15 -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.active_storage.rb +50 -0
- data/db/migrate/01_create_cms.rb +143 -0
- data/gemfiles/6.1.gemfile +31 -0
- data/gemfiles/7.0.gemfile +31 -0
- data/gemfiles/7.1.gemfile +31 -0
- data/gemfiles/7.2.gemfile +31 -0
- data/lib/comfortable_media_surfer/access_control/admin_authentication.rb +22 -0
- data/lib/comfortable_media_surfer/access_control/admin_authorization.rb +10 -0
- data/lib/comfortable_media_surfer/access_control/public_authentication.rb +10 -0
- data/lib/comfortable_media_surfer/access_control/public_authorization.rb +10 -0
- data/lib/comfortable_media_surfer/configuration.rb +138 -0
- data/lib/comfortable_media_surfer/content/block.rb +12 -0
- data/lib/comfortable_media_surfer/content/params_parser.rb +149 -0
- data/lib/comfortable_media_surfer/content/renderer.rb +146 -0
- data/lib/comfortable_media_surfer/content/tag.rb +48 -0
- data/lib/comfortable_media_surfer/content/tags/asset.rb +57 -0
- data/lib/comfortable_media_surfer/content/tags/audio.rb +39 -0
- data/lib/comfortable_media_surfer/content/tags/breadcrumbs.rb +43 -0
- data/lib/comfortable_media_surfer/content/tags/checkbox.rb +27 -0
- data/lib/comfortable_media_surfer/content/tags/children.rb +52 -0
- data/lib/comfortable_media_surfer/content/tags/date.rb +19 -0
- data/lib/comfortable_media_surfer/content/tags/datetime.rb +42 -0
- data/lib/comfortable_media_surfer/content/tags/file.rb +70 -0
- data/lib/comfortable_media_surfer/content/tags/file_link.rb +58 -0
- data/lib/comfortable_media_surfer/content/tags/files.rb +41 -0
- data/lib/comfortable_media_surfer/content/tags/fragment.rb +64 -0
- data/lib/comfortable_media_surfer/content/tags/helper.rb +53 -0
- data/lib/comfortable_media_surfer/content/tags/image.rb +56 -0
- data/lib/comfortable_media_surfer/content/tags/markdown.rb +22 -0
- data/lib/comfortable_media_surfer/content/tags/mixins/file_content.rb +42 -0
- data/lib/comfortable_media_surfer/content/tags/number.rb +18 -0
- data/lib/comfortable_media_surfer/content/tags/page_file_link.rb +86 -0
- data/lib/comfortable_media_surfer/content/tags/partial.rb +47 -0
- data/lib/comfortable_media_surfer/content/tags/siblings.rb +66 -0
- data/lib/comfortable_media_surfer/content/tags/snippet.rb +36 -0
- data/lib/comfortable_media_surfer/content/tags/template.rb +42 -0
- data/lib/comfortable_media_surfer/content/tags/text.rb +18 -0
- data/lib/comfortable_media_surfer/content/tags/textarea.rb +19 -0
- data/lib/comfortable_media_surfer/content/tags/wysiwyg.rb +19 -0
- data/lib/comfortable_media_surfer/content/tags.rb +29 -0
- data/lib/comfortable_media_surfer/content.rb +11 -0
- data/lib/comfortable_media_surfer/engine.rb +29 -0
- data/lib/comfortable_media_surfer/error.rb +24 -0
- data/lib/comfortable_media_surfer/extensions/acts_as_tree.rb +114 -0
- data/lib/comfortable_media_surfer/extensions/has_revisions.rb +68 -0
- data/lib/comfortable_media_surfer/extensions.rb +8 -0
- data/lib/comfortable_media_surfer/form_builder.rb +43 -0
- data/lib/comfortable_media_surfer/render_methods.rb +106 -0
- data/lib/comfortable_media_surfer/routing.rb +79 -0
- data/lib/comfortable_media_surfer/seeds/file/exporter.rb +37 -0
- data/lib/comfortable_media_surfer/seeds/file/importer.rb +59 -0
- data/lib/comfortable_media_surfer/seeds/layout/exporter.rb +38 -0
- data/lib/comfortable_media_surfer/seeds/layout/importer.rb +60 -0
- data/lib/comfortable_media_surfer/seeds/page/exporter.rb +88 -0
- data/lib/comfortable_media_surfer/seeds/page/importer.rb +217 -0
- data/lib/comfortable_media_surfer/seeds/snippet/exporter.rb +32 -0
- data/lib/comfortable_media_surfer/seeds/snippet/importer.rb +47 -0
- data/lib/comfortable_media_surfer/seeds.rb +112 -0
- data/lib/comfortable_media_surfer/version.rb +5 -0
- data/lib/comfortable_media_surfer/view_hooks.rb +33 -0
- data/lib/comfortable_media_surfer.rb +56 -0
- data/lib/generators/comfy/cms/README +28 -0
- data/lib/generators/comfy/cms/assets_generator.rb +16 -0
- data/lib/generators/comfy/cms/cms_generator.rb +67 -0
- data/lib/generators/comfy/cms/controllers_generator.rb +15 -0
- data/lib/generators/comfy/cms/models_generator.rb +15 -0
- data/lib/generators/comfy/cms/views_generator.rb +15 -0
- data/lib/generators/comfy/scaffold/scaffold_generator.rb +79 -0
- data/lib/generators/comfy/scaffold/templates/controller.rb.tt +62 -0
- data/lib/generators/comfy/scaffold/templates/migration.rb.tt +11 -0
- data/lib/generators/comfy/scaffold/templates/model.rb.tt +21 -0
- data/lib/generators/comfy/scaffold/templates/tests/controller.rb.tt +115 -0
- data/lib/generators/comfy/scaffold/templates/tests/fixture.yml.tt +4 -0
- data/lib/generators/comfy/scaffold/templates/tests/model.rb.tt +26 -0
- data/lib/generators/comfy/scaffold/templates/views/_form.haml.tt +7 -0
- data/lib/generators/comfy/scaffold/templates/views/edit.haml.tt +5 -0
- data/lib/generators/comfy/scaffold/templates/views/index.haml.tt +21 -0
- data/lib/generators/comfy/scaffold/templates/views/new.haml.tt +5 -0
- data/lib/generators/comfy/scaffold/templates/views/show.haml.tt +4 -0
- data/lib/tasks/cms_seeds.rake +40 -0
- data/public/favicon.ico +0 -0
- data/rakelib/create_release.rake +81 -0
- metadata +797 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
.box.categories-widget
|
2
|
+
|
3
|
+
.read
|
4
|
+
.categories
|
5
|
+
.category
|
6
|
+
- active_class = params[:categories].blank?? "active" : nil
|
7
|
+
= link_to t('.all'), {categories: nil}, class: "btn btn-sm btn-light btn-block #{active_class}"
|
8
|
+
- @site.categories.of_type(type).each do |category|
|
9
|
+
= render "comfy/admin/cms/categories/show", category: category, read: true
|
10
|
+
%button.toggle-cat-edit.btn.btn-secondary.btn-sm.btn-block{type: "button"}
|
11
|
+
= t(".edit")
|
12
|
+
|
13
|
+
.editable
|
14
|
+
.categories
|
15
|
+
- @site.categories.of_type(type).each do |category|
|
16
|
+
= render "comfy/admin/cms/categories/show", category: category
|
17
|
+
|
18
|
+
- url = comfy_admin_cms_site_categories_path(@site)
|
19
|
+
= form_with scope: :category, url: url, html: {id: "new-category"}, local: false do |form|
|
20
|
+
= form.hidden_field :categorized_type, value: type
|
21
|
+
.input-group
|
22
|
+
= form.text_field :label, placeholder: t('.add_placeholder'), class: 'form-control form-control-sm', id: nil
|
23
|
+
.input-group-btn
|
24
|
+
%button.btn.btn-primary.btn-sm{aria: {label: "Create Category"}}
|
25
|
+
%i.fas.fa-fw.fa-plus
|
26
|
+
|
27
|
+
%button.toggle-cat-edit.btn.btn-light.btn-sm.btn-block{type: "button"}
|
28
|
+
= t(".done")
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- read ||= false
|
2
|
+
- categories = [params[:categories]].flatten.compact
|
3
|
+
- active = categories.flatten.member?(category.label)
|
4
|
+
|
5
|
+
.category{id: dom_id(category)}
|
6
|
+
- if read
|
7
|
+
- active_class = active ? "active" : nil
|
8
|
+
- categories = active ? categories.reject{|c| c == category.label} : categories << category.label
|
9
|
+
- url = "?#{{categories: categories}.to_query}"
|
10
|
+
= link_to category.label, url, class: "btn btn-sm btn-light btn-block text-left text-truncate #{active_class}"
|
11
|
+
- else
|
12
|
+
.btn-group.d-flex
|
13
|
+
= link_to category.label, edit_comfy_admin_cms_site_category_path(@site, category), remote: true, class: "btn btn-sm btn-light w-100 text-left text-truncate"
|
14
|
+
= link_to comfy_admin_cms_site_category_path(@site, category), method: :delete, remote: true, data: {confirm: t('.are_you_sure')}, class: 'btn btn-sm btn-danger', aria: {label: "Delete Category"} do
|
15
|
+
%i.fas.fa-fw.fa-times
|
@@ -0,0 +1,7 @@
|
|
1
|
+
$('.categories-widget .editable .categories').append(
|
2
|
+
'<%= escape_javascript(render "show", category: @category) %>'
|
3
|
+
);
|
4
|
+
$('.categories-widget .read .categories').append(
|
5
|
+
'<%= escape_javascript(render "show", category: @category, read: true) %>'
|
6
|
+
);
|
7
|
+
$('.categories-widget .editable form#new-category input[name="category[label]"]').val('');
|
@@ -0,0 +1,6 @@
|
|
1
|
+
$('.editable form#<%= dom_id(@category) %>').replaceWith(
|
2
|
+
'<%= escape_javascript(render "show", category: @category ) %>'
|
3
|
+
);
|
4
|
+
$('.read .category#<%= dom_id(@category) %>').replaceWith(
|
5
|
+
'<%= escape_javascript(render "show", category: @category, read: true) %>'
|
6
|
+
);
|
@@ -0,0 +1,31 @@
|
|
1
|
+
%li{data: {id: file.id}}
|
2
|
+
:ruby
|
3
|
+
file_tag = cms_file_link_tag(file)
|
4
|
+
thumb_url = url_for(file.attachment.representation(resize_to_limit: [200, nil])) if file.attachment.variable?
|
5
|
+
.row
|
6
|
+
.col-md-5.item
|
7
|
+
.item-controls.d-none.d-lg-block
|
8
|
+
- if !params[:categories].present? && @site.files.count > 1
|
9
|
+
.dragger
|
10
|
+
%i.fas.fa-bars
|
11
|
+
.item-content
|
12
|
+
.item-title
|
13
|
+
= link_to file.label, file.attachment, target: "_blank",
|
14
|
+
data: {cms_file_thumb_url: thumb_url, cms_file_link_tag: file_tag}
|
15
|
+
.item-meta
|
16
|
+
.content-type
|
17
|
+
= truncate(file.attachment.content_type)
|
18
|
+
.file-size
|
19
|
+
= number_to_human_size(file.attachment.byte_size)
|
20
|
+
|
21
|
+
.col-md-2.item-categories.d-flex.align-items-center
|
22
|
+
= render partial: "comfy/admin/cms/categories/categories", object: file
|
23
|
+
|
24
|
+
.col-md-2.d-flex.align-items-center
|
25
|
+
%span.file-path
|
26
|
+
= file_tag
|
27
|
+
|
28
|
+
.col-md-3.d-flex.align-items-center.justify-content-md-end
|
29
|
+
.btn-group.btn-group-sm
|
30
|
+
= link_to t(".edit"), edit_comfy_admin_cms_site_file_path(@site, file), class: "btn btn-outline-secondary"
|
31
|
+
= link_to t(".delete"), comfy_admin_cms_site_file_path(@site, file), method: :delete, remote: true, data: {confirm: t(".are_you_sure")}, class: "btn btn-danger"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
= comfy_admin_partial "comfy/admin/cms/partials/file_form_before", form: form
|
2
|
+
|
3
|
+
= form.text_field :label
|
4
|
+
= form.file_field :file
|
5
|
+
|
6
|
+
- unless @file.new_record?
|
7
|
+
|
8
|
+
= form.form_group bootstrap: {label: {text: t('.current_file')}}do
|
9
|
+
- if @file.attachment.image?
|
10
|
+
.file-image
|
11
|
+
= image_tag @file.attachment
|
12
|
+
= link_to @file.attachment.filename, @file.attachment, target: '_blank'
|
13
|
+
|
14
|
+
= form.text_area :description
|
15
|
+
|
16
|
+
= render 'comfy/admin/cms/categories/form', form: form
|
17
|
+
|
18
|
+
= comfy_admin_partial 'comfy/admin/cms/partials/file_form_after', form: form
|
19
|
+
|
20
|
+
= form.form_actions do
|
21
|
+
= submit_tag t(@file.new_record? ? ".create" : ".update"), class: "btn btn-primary"
|
22
|
+
|
23
|
+
- unless @file.new_record?
|
24
|
+
= link_to t(".delete"), comfy_admin_cms_site_file_path(@site, @file), method: :delete, data: {confirm: t(".are_you_sure")}, class: "btn btn-danger"
|
25
|
+
|
26
|
+
= link_to t(".cancel"), comfy_admin_cms_site_files_path, class: "btn btn-link"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
= render "comfy/admin/cms/categories/index", type: "Comfy::Cms::File"
|
3
|
+
|
4
|
+
:ruby
|
5
|
+
session_id = request.session_options[:id]
|
6
|
+
session_id_value = session_id.respond_to?(:public_id) ? session_id.public_id : session_id.to_s
|
7
|
+
cms_uploader_data = {
|
8
|
+
cms_uploader: {
|
9
|
+
url: comfy_admin_cms_site_files_path(@site, source: :plupload, categories: params[:categories]),
|
10
|
+
token: { name: request_forgery_protection_token, value: form_authenticity_token },
|
11
|
+
session: { name: Rails.application.config.session_options[:key], value: session_id_value }
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
#cms-uploader{data: cms_uploader_data}
|
16
|
+
#cms-uploader-drag-drop-target
|
17
|
+
|
18
|
+
.page-header
|
19
|
+
= link_to t('.new_link'), new_comfy_admin_cms_site_file_path(@site), class: "btn btn-secondary float-right", id: "cms-uploader-browse"
|
20
|
+
%h2= t('.title')
|
21
|
+
|
22
|
+
= comfy_admin_partial "comfy/admin/cms/partials/files_before"
|
23
|
+
|
24
|
+
= comfy_paginate @files
|
25
|
+
|
26
|
+
%ul.list.sortable.cms-uploader-filelist
|
27
|
+
= render partial: "file", collection: @files
|
28
|
+
|
29
|
+
= comfy_admin_partial "comfy/admin/cms/partials/files_after"
|
30
|
+
|
31
|
+
= comfy_paginate @files
|
@@ -0,0 +1,23 @@
|
|
1
|
+
.fragment-attachments
|
2
|
+
- attachments.each do |attachment|
|
3
|
+
:ruby
|
4
|
+
thumb_url = if attachment.variable?
|
5
|
+
url_for(attachment.variant(combine_options: Comfy::Cms::File::VARIANT_SIZE[:thumb]))
|
6
|
+
end
|
7
|
+
filename = attachment.filename.to_s
|
8
|
+
truncated_filename = truncate(filename, length: 40, omission: "...#{filename.last(10)}")
|
9
|
+
|
10
|
+
link_data = {
|
11
|
+
cms_file_thumb_url: thumb_url,
|
12
|
+
cms_file_link_tag: cms_page_file_link_tag(
|
13
|
+
fragment_id: fragment_id,
|
14
|
+
attachment: attachment,
|
15
|
+
multiple: multiple
|
16
|
+
)
|
17
|
+
}
|
18
|
+
|
19
|
+
.fragment-attachment.btn-group.btn-group-sm.mb-1
|
20
|
+
= link_to truncated_filename, attachment, data: link_data, class: "btn btn-light text-truncate", target: "_blank"
|
21
|
+
= check_box_tag "#{object_name}[fragments_attributes][#{index}][file_ids_destroy][]", attachment.id, false, id: dom_id(attachment)
|
22
|
+
%label.btn.btn-light{for: dom_id(attachment)}
|
23
|
+
%i.fas.fa-fw.fa-times
|
@@ -0,0 +1,38 @@
|
|
1
|
+
- begin
|
2
|
+
- nodes = record.fragment_nodes
|
3
|
+
- namespace = nodes.group_by(&:namespace)
|
4
|
+
|
5
|
+
#form-fragments
|
6
|
+
- if nodes.empty?
|
7
|
+
.alert.alert-warning
|
8
|
+
- if record.layout
|
9
|
+
= link_to record.layout.label, edit_comfy_admin_cms_site_layout_path(@site, record.layout)
|
10
|
+
= t(".no_tags").html_safe
|
11
|
+
|
12
|
+
- else
|
13
|
+
.tabbable
|
14
|
+
- if namespace.size > 1
|
15
|
+
.row
|
16
|
+
.col-sm-2
|
17
|
+
.col-sm-10
|
18
|
+
%ul.nav.nav-tabs
|
19
|
+
- namespace.each_with_index do |(name, tags), index|
|
20
|
+
%li.nav-item
|
21
|
+
- active = index == 0 ? "active" : nil
|
22
|
+
- label = t("comfy.cms.content.namespace.#{name}", default: name.humanize)
|
23
|
+
= link_to label, "#ns-#{name}", class: "nav-link #{active}", data: {toggle: "tab"}
|
24
|
+
|
25
|
+
.tab-content
|
26
|
+
- frag_index = 0
|
27
|
+
|
28
|
+
- builder_opts = { builder: ComfortableMediaSurfer::FormBuilder, bootstrap: { layout: :horizontal }}
|
29
|
+
= fields scope, model: record, **builder_opts do |form|
|
30
|
+
- namespace.each_with_index do |(name, tags), index|
|
31
|
+
.tab-pane{id: "ns-#{name}", class: index == 0 ? "active" : nil}
|
32
|
+
- tags.each do |tag|
|
33
|
+
= form.fragment_field(tag, frag_index)
|
34
|
+
- frag_index += 1
|
35
|
+
|
36
|
+
- rescue ComfortableMediaSurfer::Content::Renderer::SyntaxError, ComfortableMediaSurfer::Content::Tag::Error => e
|
37
|
+
.alert.alert-danger
|
38
|
+
= e
|
@@ -0,0 +1,20 @@
|
|
1
|
+
= comfy_admin_partial "comfy/admin/cms/partials/layout_form_before", form: form
|
2
|
+
|
3
|
+
= form.text_field :label, data: {slugify: @layout.new_record?}
|
4
|
+
= form.text_field :identifier, data: {slug: true}
|
5
|
+
|
6
|
+
- if (options = Comfy::Cms::Layout.options_for_select(@site, @layout)).present?
|
7
|
+
= form.select :parent_id, [["---- #{t('.select_parent_layout')} ----", nil]] + options, bootstrap: {custom_control: true}
|
8
|
+
|
9
|
+
- if (options = Comfy::Cms::Layout.app_layouts_for_select(lookup_context.view_paths)).present?
|
10
|
+
= form.select :app_layout, [["---- #{t('.select_app_layout')} ----", nil]] + options, bootstrap: {custom_control: true}
|
11
|
+
|
12
|
+
= form.text_area :content, data: {'cms-cm-mode' => 'text/html'}
|
13
|
+
= form.text_area :css, data: {'cms-cm-mode' => 'css'}
|
14
|
+
= form.text_area :js, data: {'cms-cm-mode' => 'javascript'}
|
15
|
+
|
16
|
+
= comfy_admin_partial "comfy/admin/cms/partials/layout_form_after", form: form
|
17
|
+
|
18
|
+
= form.form_actions do
|
19
|
+
= submit_tag t(@layout.new_record? ? ".create" : ".update"), class: "btn btn-primary"
|
20
|
+
= link_to t('.cancel'), comfy_admin_cms_site_layouts_path, class: "btn btn-link"
|
@@ -0,0 +1,26 @@
|
|
1
|
+
- layout ||= index_branch
|
2
|
+
- has_siblings = layout.siblings.select{|l| l.site_id == @site.id}.size > 0
|
3
|
+
|
4
|
+
%li{data: {id: layout.id}}
|
5
|
+
.row
|
6
|
+
.col-md-8.item
|
7
|
+
.item-controls.d-none.d-md-block
|
8
|
+
- if has_siblings
|
9
|
+
.dragger
|
10
|
+
%i.fas.fa-bars
|
11
|
+
|
12
|
+
.item-content
|
13
|
+
.item-title
|
14
|
+
= link_to layout.label, edit_comfy_admin_cms_site_layout_path(@site, layout)
|
15
|
+
.item-meta
|
16
|
+
= layout.identifier
|
17
|
+
|
18
|
+
.col-md-4.d-flex.align-items-center.justify-content-md-end
|
19
|
+
.btn-group.btn-group-sm
|
20
|
+
= link_to t('.add_child_layout'), new_comfy_admin_cms_site_layout_path(@site, parent_id: layout.id), class: "btn btn-outline-secondary"
|
21
|
+
= link_to t('.edit'), edit_comfy_admin_cms_site_layout_path(@site, layout), class: "btn btn-outline-secondary"
|
22
|
+
= link_to t('.delete'), comfy_admin_cms_site_layout_path(@site, layout), method: :delete, data: {confirm: t('.are_you_sure')}, class: "btn btn-danger"
|
23
|
+
|
24
|
+
- if layout.children.present?
|
25
|
+
%ul.list.children.sortable.pl-md-3
|
26
|
+
= render partial: "index_branch", collection: layout.children.order(:position)
|
@@ -0,0 +1,9 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
- link = comfy_admin_cms_site_layout_revisions_path(@site, @layout)
|
3
|
+
= render "comfy/admin/cms/revisions/sidebar", record: @layout, link: link
|
4
|
+
|
5
|
+
.page-header
|
6
|
+
%h2= t('.title')
|
7
|
+
|
8
|
+
= comfy_form_with model: @layout, scope: :layout, url: {action: :update} do |form|
|
9
|
+
= render form
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_comfy_admin_cms_site_layout_path(@site), class: "btn btn-secondary float-right"
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
= comfy_admin_partial "comfy/admin/cms/partials/layouts_before"
|
6
|
+
|
7
|
+
%ul.list.sortable
|
8
|
+
= render partial: "index_branch", collection: @layouts
|
9
|
+
|
10
|
+
= comfy_admin_partial "comfy/admin/cms/partials/layouts_after"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
= comfy_admin_partial "comfy/admin/cms/partials/page_form_before", form: form
|
2
|
+
|
3
|
+
= form.text_field :label, data: { slugify: @page.new_record? }
|
4
|
+
|
5
|
+
- if @page.parent.present?
|
6
|
+
= form.text_field :slug, data: { slug: true }, prepend: @page.parent.full_path
|
7
|
+
|
8
|
+
- if (options = ::Comfy::Cms::Page.options_for_select(site: @site, current_page: @page, exclude_self: true)).present?
|
9
|
+
= form.select :parent_id, options, bootstrap: {custom_control: true}
|
10
|
+
|
11
|
+
- if (options = ::Comfy::Cms::Layout.options_for_select(@site)).present?
|
12
|
+
= form.select :layout_id, options, {bootstrap: {custom_control: true}}, {data: {url: form_fragments_comfy_admin_cms_site_page_path(@site, @page.id.to_i)}, id: "fragments-toggle"}
|
13
|
+
|
14
|
+
= comfy_admin_partial "comfy/admin/cms/partials/page_form_inner", form: form
|
15
|
+
|
16
|
+
#form-fragments-container
|
17
|
+
= render "comfy/admin/cms/fragments/form_fragments", record: @page, scope: :page
|
18
|
+
|
19
|
+
= render "comfy/admin/cms/categories/form", form: form
|
20
|
+
|
21
|
+
- if (options = ::Comfy::Cms::Page.options_for_select(site: @site, current_page: @page)).present?
|
22
|
+
= form.select :target_page_id, [["---- #{t('.select_target_page')} ----", nil]] + options, bootstrap: {custom_control: true}
|
23
|
+
|
24
|
+
= form.check_box :is_published
|
25
|
+
|
26
|
+
= comfy_admin_partial "comfy/admin/cms/partials/page_form_after", form: form
|
27
|
+
|
28
|
+
= form.form_actions do
|
29
|
+
= submit_tag t(".preview"), name: "preview", formtarget: "comfy-cms-preview", id: nil, class: "btn btn-secondary"
|
30
|
+
= submit_tag t(@page.new_record?? ".create" : ".update"), class: "btn btn-primary ml-sm-1"
|
31
|
+
= link_to t(".cancel"), comfy_admin_cms_site_pages_path, class: "btn btn-link"
|
@@ -0,0 +1,44 @@
|
|
1
|
+
- page ||= index_branch
|
2
|
+
- children = @pages_by_parent[page.id]
|
3
|
+
- siblings = @pages_by_parent[page.parent_id]
|
4
|
+
- has_children = children.present?
|
5
|
+
- has_siblings = siblings.size > 1
|
6
|
+
- branch_open = (session[:cms_page_tree] || []).member?(page.id.to_s) || page.root?
|
7
|
+
- category_view = params[:categories].present?
|
8
|
+
|
9
|
+
%li{id: dom_id(page), data: {id: page.id}}
|
10
|
+
.row
|
11
|
+
|
12
|
+
.col-md-6.item
|
13
|
+
- unless category_view
|
14
|
+
.item-controls
|
15
|
+
- if has_siblings
|
16
|
+
.dragger.d-none.d-md-block
|
17
|
+
%i.fas.fa-bars
|
18
|
+
|
19
|
+
- if has_children && !page.root?
|
20
|
+
- status = branch_open ? "open" : ""
|
21
|
+
- url = toggle_branch_comfy_admin_cms_site_page_path(@site, page)
|
22
|
+
= link_to url, remote: true, title: t(".toggle"), class: "toggle #{status}" do
|
23
|
+
%i.fas.fa-plus-square.expand
|
24
|
+
%i.fas.fa-minus-square.collapse
|
25
|
+
|
26
|
+
.item-content
|
27
|
+
.item-title
|
28
|
+
- published_css_class = page.is_published? ? "published" : "draft"
|
29
|
+
= link_to page.label, edit_comfy_admin_cms_site_page_path(@site, page), class: published_css_class
|
30
|
+
.item-meta
|
31
|
+
= link_to page.url, page.url, target: "_blank"
|
32
|
+
|
33
|
+
.col-md-2.item-categories.d-flex.align-items-center
|
34
|
+
= render "comfy/admin/cms/categories/categories", object: page
|
35
|
+
|
36
|
+
.col-md-4.d-flex.align-items-center.justify-content-md-end
|
37
|
+
.btn-group.btn-group-sm
|
38
|
+
= link_to t(".add_child_page"), new_comfy_admin_cms_site_page_path(@site, parent_id: page.id), class: "btn btn-outline-secondary"
|
39
|
+
= link_to t(".edit"), edit_comfy_admin_cms_site_page_path(@site, page), class: "btn btn-outline-secondary"
|
40
|
+
= link_to t(".delete"), comfy_admin_cms_site_page_path(@site, page), method: :delete, data: {confirm: t('.are_you_sure')}, class: "btn btn-danger"
|
41
|
+
|
42
|
+
- if !category_view && has_children && branch_open
|
43
|
+
%ul.list.children.sortable.pl-md-3
|
44
|
+
= render partial: "index_branch", collection: children
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
- link = comfy_admin_cms_site_page_revisions_path(@site, @page)
|
3
|
+
= render "comfy/admin/cms/revisions/sidebar", record: @page, link: link
|
4
|
+
= render "comfy/admin/cms/translations/sidebar"
|
5
|
+
|
6
|
+
.page-header
|
7
|
+
%h2= t('.title')
|
8
|
+
|
9
|
+
= comfy_form_with model: @page, scope: :page, url: {action: :update}, html: {multipart: true} do |form|
|
10
|
+
= render form
|
@@ -0,0 +1,13 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
= render "comfy/admin/cms/categories/index", type: "Comfy::Cms::Page"
|
3
|
+
|
4
|
+
.page-header
|
5
|
+
= link_to t('.new_link'), new_comfy_admin_cms_site_page_path(@site), class: "btn btn-secondary float-right"
|
6
|
+
%h2= t('.title')
|
7
|
+
|
8
|
+
= comfy_admin_partial "comfy/admin/cms/partials/pages_before"
|
9
|
+
|
10
|
+
%ul.list.sortable
|
11
|
+
= render partial: "index_branch", collection: @pages
|
12
|
+
|
13
|
+
= comfy_admin_partial "comfy/admin/cms/partials/pages_after"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// TODO: Extract this so the server only renders the HTML.
|
2
|
+
var li = $('li#comfy_cms_page_<%=@page.id%>');
|
3
|
+
li.find('.item .toggle').first().toggleClass('open');
|
4
|
+
|
5
|
+
<% if session[:cms_page_tree].member?(@page.id.to_s) %>
|
6
|
+
if(!li.find('ul.children')[0]) {
|
7
|
+
li.append('<ul class="children sortable pl-md-3"><%= escape_javascript(render partial: "index_branch", collection: @page.children) %></ul>');
|
8
|
+
CMS.sortableList.dispose();
|
9
|
+
CMS.sortableList.init();
|
10
|
+
}
|
11
|
+
<% else %>
|
12
|
+
li.find('ul.children').remove();
|
13
|
+
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
.box.revisions
|
3
|
+
- @record.revisions.order(created_at: :desc).each do |revision|
|
4
|
+
= active_link_to l(revision.created_at, format: :short), { id: revision.id }, class: "btn btn-sm btn-light d-block text-primary mb-1"
|
5
|
+
|
6
|
+
.page-header
|
7
|
+
%h2
|
8
|
+
= t('.title')
|
9
|
+
= @record.class.to_s.demodulize
|
10
|
+
|
11
|
+
.row.d-none.d-lg-flex
|
12
|
+
.col-lg-10.ml-auto
|
13
|
+
.row
|
14
|
+
.col-lg-6
|
15
|
+
.label= t('.previous')
|
16
|
+
.col-lg-6
|
17
|
+
.label= t('.current')
|
18
|
+
|
19
|
+
- @current_content.each do |label, content|
|
20
|
+
.row.revision
|
21
|
+
.col-lg-2.text-lg-right.bg-light
|
22
|
+
.label= label
|
23
|
+
.col-lg-10
|
24
|
+
.row
|
25
|
+
.col-lg-6
|
26
|
+
.content
|
27
|
+
= safe_join @versioned_content[label].to_s.split("\n"), raw("<br/>")
|
28
|
+
.col-lg-6.diff
|
29
|
+
.original.d-none= @versioned_content[label]
|
30
|
+
.current.d-none= content
|
31
|
+
.content
|
32
|
+
|
33
|
+
= comfy_form_with model: @revision, url: { action: :revert } do |form|
|
34
|
+
= form.form_actions do
|
35
|
+
= submit_tag t(".update"), class: "btn btn-primary"
|
36
|
+
= link_to t(".cancel"), record_path, class: "btn btn-link"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= comfy_admin_partial "comfy/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 = ComfortableMediaSurfer.config.locales.to_a.collect{|l| ["#{l[1]} (#{l[0]})", l[0]]}
|
9
|
+
= form.select :locale, locales, bootstrap: {custom_control: true}
|
10
|
+
|
11
|
+
= comfy_admin_partial "comfy/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"), comfy_admin_cms_sites_path, class: "btn btn-link"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
.page-header
|
2
|
+
= link_to t('.new_link'), new_comfy_admin_cms_site_path, class: "btn btn-secondary float-right"
|
3
|
+
%h2= t('.title')
|
4
|
+
|
5
|
+
= comfy_admin_partial "comfy/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, comfy_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'), comfy_admin_cms_site_pages_path(site), class: 'btn btn-outline-secondary'
|
25
|
+
= link_to t('.edit'), edit_comfy_admin_cms_site_path(site), class: 'btn btn-outline-secondary'
|
26
|
+
= link_to t('.delete'), comfy_admin_cms_site_path(site), method: :delete, data: {confirm: t('.are_you_sure')}, class: 'btn btn-danger'
|
27
|
+
|
28
|
+
= comfy_admin_partial "comfy/admin/cms/partials/sites_after"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
= comfy_admin_partial "comfy/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 'comfy/admin/cms/categories/form', form: form
|
13
|
+
|
14
|
+
= comfy_admin_partial 'comfy/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"), comfy_admin_cms_site_snippets_path, class: "btn btn-link"
|
19
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
- content_for :right_column do
|
2
|
+
- link = comfy_admin_cms_site_snippet_revisions_path(@site, @snippet)
|
3
|
+
= render "comfy/admin/cms/revisions/sidebar", record: @snippet, link: link
|
4
|
+
|
5
|
+
.page-header
|
6
|
+
%h2= t('.title')
|
7
|
+
|
8
|
+
= comfy_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 "comfy/admin/cms/categories/index", type: "Comfy::Cms::Snippet"
|
3
|
+
|
4
|
+
.page-header
|
5
|
+
= link_to t('.new_link'), new_comfy_admin_cms_site_snippet_path(@site), class: "btn btn-secondary float-right"
|
6
|
+
%h2= t('.title')
|
7
|
+
|
8
|
+
= comfy_admin_partial "comfy/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_comfy_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 "comfy/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_comfy_admin_cms_site_snippet_path(@site, snippet), class: 'btn btn-outline-secondary'
|
31
|
+
= link_to t('.delete'), comfy_admin_cms_site_snippet_path(@site, snippet), method: :delete, data: {confirm: t('.are_you_sure')}, class: 'btn btn-danger'
|
32
|
+
|
33
|
+
= comfy_admin_partial "comfy/admin/cms/partials/snippets_after"
|