j1-template 2020.0.16 → 2020.0.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/blocks/footer/boxes/about_box.proc +2 -2
- data/_includes/themes/j1/blocks/footer/boxes/links_box.proc +4 -4
- data/_includes/themes/j1/blocks/footer/boxes/news_box.proc +2 -2
- data/_includes/themes/j1/blocks/footer/generator.html +1 -1
- data/_includes/themes/j1/layouts/content_generator_blog_archive.html +19 -16
- data/_includes/themes/j1/layouts/content_generator_collection.html +2 -2
- data/_includes/themes/j1/layouts/content_generator_page.html +8 -56
- data/_includes/themes/j1/layouts/content_generator_post.html +5 -3
- data/_includes/themes/j1/procedures/global/attributes_loader.proc +117 -0
- data/_includes/themes/j1/procedures/global/create_bs_button.proc +10 -10
- data/_includes/themes/j1/procedures/global/create_word_cloud.proc +14 -12
- data/_includes/themes/j1/procedures/global/get_documents_dir.proc +1 -1
- data/_includes/themes/j1/procedures/global/set_env_entry_document.proc +3 -3
- data/_includes/themes/j1/procedures/posts/collate_timeline.proc +37 -38
- data/_layouts/blog_archive.html +4 -3
- data/_layouts/collection.html +1 -1
- data/_layouts/home.html +1 -1
- data/_layouts/page.html +2 -2
- data/_layouts/post.html +3 -3
- data/apps/public/cc/cc.yml +0 -2
- data/assets/data/authclient.html +15 -15
- data/assets/data/banner.html +11 -11
- data/assets/data/carousel.json +1 -1
- data/assets/data/cookiebar.html +8 -8
- data/assets/data/footer.html +1 -1
- data/assets/data/galleries.json +1 -1
- data/assets/data/gallery_customizer.html +4 -4
- data/assets/data/mdi_icons.json +1 -1
- data/assets/data/menu.html +7 -7
- data/assets/data/mmenu.html +5 -5
- data/assets/data/mmenu_sidebar.html +2 -2
- data/assets/data/mmenu_toc.html +2 -2
- data/assets/data/panel.html +115 -95
- data/assets/data/quicklinks.html +2 -2
- data/assets/data/search.json +1 -1
- data/assets/data/ssm.html +2 -2
- data/assets/data/themes.json +3 -1
- data/assets/data/twa_v1.json +1 -1
- data/assets/themes/j1/adapter/js/algolia.js +1 -1
- data/assets/themes/j1/adapter/js/attic.js +1 -1
- data/assets/themes/j1/adapter/js/back2top.js +231 -0
- data/assets/themes/j1/adapter/js/{mdb.js → bmd.js} +11 -11
- data/assets/themes/j1/adapter/js/carousel.js +135 -134
- data/assets/themes/j1/adapter/js/clipboard.js +2 -1
- data/assets/themes/j1/adapter/js/cookiebar.js +2 -1
- data/assets/themes/j1/adapter/js/framer.js +1 -5
- data/assets/themes/j1/adapter/js/gallery_customizer.js +2 -1
- data/assets/themes/j1/adapter/js/j1.js +36 -10
- data/assets/themes/j1/adapter/js/jf_gallery.js +1 -1
- data/assets/themes/j1/adapter/js/lightbox.js +1 -1
- data/assets/themes/j1/adapter/js/logger.js +2 -1
- data/assets/themes/j1/adapter/js/mmenu.js +10 -8
- data/assets/themes/j1/adapter/js/navigator.js +101 -31
- data/assets/themes/j1/adapter/js/searcher.js +1 -1
- data/assets/themes/j1/adapter/js/ssm.js +30 -29
- data/assets/themes/j1/adapter/js/themer.js +7 -13
- data/assets/themes/j1/adapter/js/toccer.js +37 -7
- data/assets/themes/j1/core/css/animate.css +17 -0
- data/assets/themes/j1/core/css/bootstrap.css +54 -48
- data/assets/themes/j1/core/css/bootstrap.min.css +3 -3
- data/assets/themes/j1/core/css/{fontawesome.css → icons-fontawesome.css} +31 -12
- data/assets/themes/j1/core/css/{fontawesome.min.css → icons-fontawesome.min.css} +0 -0
- data/assets/themes/j1/core/css/{iconify-icons.css → icons-iconify.css} +51 -38
- data/assets/themes/j1/core/css/{iconify-icons.min.css → icons-iconify.min.css} +1 -1
- data/assets/themes/j1/core/css/{material-design-icons.css → icons-materialdesign.css} +326 -244
- data/assets/themes/j1/core/css/icons-materialdesign.min.css +1 -0
- data/assets/themes/j1/core/css/{twemoji.css → icons-twemoji.css} +61 -51
- data/assets/themes/j1/core/css/{twemoji.min.css → icons-twemoji.min.css} +0 -0
- data/assets/themes/j1/core/css/{theme_extensions.css → theme-extensions.css} +1754 -1429
- data/assets/themes/j1/core/css/theme-extensions.min.css +1 -0
- data/assets/themes/j1/core/css/uno-dark.css +8109 -0
- data/assets/themes/j1/core/css/uno-dark.min.css +6 -0
- data/assets/themes/j1/core/css/uno.css +15337 -3046
- data/assets/themes/j1/core/css/uno.min.css +8 -1
- data/assets/themes/j1/core/css/vendor.css +86 -13430
- data/assets/themes/j1/core/css/vendor.min.css +1 -7
- data/assets/themes/j1/core/js/template.js +6 -6
- data/assets/themes/j1/core/js/template.js.map +1 -1
- data/assets/themes/j1/core/js/template.min.js +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +12 -13
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +12 -13
- data/assets/themes/j1/modules/bsThemeSwitcher/js/switcher.js +43 -34
- data/assets/themes/j1/modules/bsThemeSwitcher/js/switcher.min.js +11 -12
- data/assets/themes/j1/modules/carousel/css/carousel.css +8 -9
- data/assets/themes/j1/modules/carousel/css/carousel.min.css +7 -9
- data/assets/themes/j1/modules/carousel/css/carousel_transitions.css +7 -8
- data/assets/themes/j1/modules/carousel/css/carousel_transitions.min.css +7 -9
- data/assets/themes/j1/modules/carousel/css/theme/uno.css +7 -8
- data/assets/themes/j1/modules/carousel/css/theme/uno.min.css +8 -9
- data/assets/themes/j1/modules/clipboard/css/theme/uno.css +7 -7
- data/assets/themes/j1/modules/clipboard/css/theme/uno.min.css +8 -45
- data/assets/themes/j1/modules/iframeResizer/examples/frame.absolute.html +2 -5
- data/assets/themes/j1/modules/iframeResizer/examples/frame.content.html +17 -44
- data/assets/themes/j1/modules/iframeResizer/examples/frame.hover.html +2 -5
- data/assets/themes/j1/modules/iframeResizer/examples/frame.nested.html +5 -7
- data/assets/themes/j1/modules/iframeResizer/examples/frame.textarea.html +1 -1
- data/assets/themes/j1/modules/iframeResizer/examples/frame.tolerance.html +3 -5
- data/assets/themes/j1/modules/iframeResizer/examples/index.html +4 -3
- data/assets/themes/j1/modules/iframeResizer/examples/two.html +4 -3
- data/assets/themes/j1/modules/justifiedGallery/css/theme/uno.css +8 -9
- data/assets/themes/j1/modules/justifiedGallery/css/theme/uno.min.css +8 -31
- data/assets/themes/j1/modules/lightGallery/css/themes/uno.css +7 -8
- data/assets/themes/j1/modules/lightGallery/css/themes/uno.min.css +8 -10
- data/assets/themes/j1/modules/lightbox/css/lightbox.css +11 -12
- data/assets/themes/j1/modules/lightbox/css/lightbox.min.css +11 -12
- data/assets/themes/j1/modules/lightbox/css/theme/uno.css +7 -7
- data/assets/themes/j1/modules/lightbox/css/theme/uno.min.css +7 -8
- data/assets/themes/j1/modules/lightbox/js/lightbox.js +11 -12
- data/assets/themes/j1/modules/lightbox/js/lightbox.min.js +11 -27
- data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +82 -0
- data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +15 -0
- data/assets/{README.md → themes/j1/modules/mdiPreviewer/js/readme} +0 -0
- data/assets/themes/j1/modules/mmenuLight/css/mmenu.css +11 -11
- data/assets/themes/j1/modules/mmenuLight/css/mmenu.min.css +12 -386
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno.css +15 -19
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno.min.css +8 -163
- data/assets/themes/j1/modules/popper/js/popper.js +1 -1
- data/assets/themes/j1/modules/popper/js/popper.js.map +1 -1
- data/assets/themes/j1/modules/popper/js/popper.min.js.map +1 -1
- data/assets/themes/j1/modules/tocbot/css/theme/uno.css +12 -19
- data/assets/themes/j1/modules/tocbot/css/theme/uno.min.css +8 -82
- data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.css +153 -0
- data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.min.css +19 -0
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +12 -13
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +12 -268
- data/assets/themes/j1/modules/twemoji/js/twemoji.js +11 -20
- data/assets/themes/j1/modules/twemoji/js/twemoji.min.js +11 -17
- data/lib/j1/version.rb +1 -1
- data/lib/j1_app/j1_auth_manager/config.rb +10 -5
- data/lib/j1_app/j1_auth_manager/views/auth_manager_ui.erb +5 -5
- data/lib/starter_web/Gemfile +6 -2
- data/lib/starter_web/_config.yml +2 -2
- data/lib/starter_web/_data/apps/carousel.yml +6 -7
- data/lib/starter_web/_data/apps/defaults/carousel.yml +2 -3
- data/lib/starter_web/_data/apps/defaults/gallery_customizer.yml +1 -2
- data/lib/starter_web/_data/apps/defaults/justified_gallery.yml +1 -2
- data/lib/starter_web/_data/apps/defaults/light_gallery.yml +1 -2
- data/lib/starter_web/_data/apps/defaults/lightbox.yml +1 -2
- data/lib/starter_web/_data/apps/gallery_customizer.yml +1 -2
- data/lib/starter_web/_data/apps/justified_gallery.yml +4 -5
- data/lib/starter_web/_data/apps/light_gallery.yml +1 -2
- data/lib/starter_web/_data/apps/lightbox.yml +1 -2
- data/lib/starter_web/_data/blocks/banner.yml +25 -21
- data/lib/starter_web/_data/blocks/defaults/banner.yml +3 -4
- data/lib/starter_web/_data/blocks/defaults/footer.yml +1 -2
- data/lib/starter_web/_data/blocks/defaults/panel.yml +3 -4
- data/lib/starter_web/_data/blocks/footer.yml +1 -2
- data/lib/starter_web/_data/blocks/panel.yml +29 -23
- data/lib/starter_web/_data/builder/blog_navigator.yml +1 -2
- data/lib/starter_web/_data/layouts/app.yml +1 -2
- data/lib/starter_web/_data/layouts/blog_archive.yml +1 -2
- data/lib/starter_web/_data/layouts/collection.yml +1 -2
- data/lib/starter_web/_data/layouts/home.yml +7 -28
- data/lib/starter_web/_data/layouts/post.yml +1 -2
- data/lib/starter_web/_data/layouts/raw.yml +1 -2
- data/lib/starter_web/_data/modules/advertising.yml +0 -1
- data/lib/starter_web/_data/modules/attics.yml +0 -1
- data/lib/starter_web/_data/modules/authentication.yml +0 -1
- data/lib/starter_web/_data/modules/back2top.yml +30 -0
- data/lib/starter_web/_data/modules/defaults/attics.yml +5 -3
- data/lib/starter_web/_data/modules/defaults/authentication.yml +0 -1
- data/lib/starter_web/_data/modules/defaults/back2top.yml +146 -0
- data/lib/starter_web/_data/modules/defaults/framer.yml +1 -3
- data/lib/starter_web/_data/modules/defaults/jekyll_search.yml +0 -1
- data/lib/starter_web/_data/modules/defaults/log4javascript.yml +4 -5
- data/lib/starter_web/_data/modules/defaults/log4r.yml +1 -2
- data/lib/starter_web/_data/modules/defaults/navigator.yml +15 -15
- data/lib/starter_web/_data/modules/defaults/stickybits.yml +1 -2
- data/lib/starter_web/_data/modules/defaults/themer.yml +3 -3
- data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -2
- data/lib/starter_web/_data/modules/framer.yml +1 -2
- data/lib/starter_web/_data/modules/log4javascript.yml +4 -5
- data/lib/starter_web/_data/modules/log4r.yml +1 -2
- data/lib/starter_web/_data/modules/navigator_menu.yml +3 -3
- data/lib/starter_web/_data/modules/themer.yml +2 -1
- data/lib/starter_web/_data/modules/toccer.yml +1 -1
- data/lib/starter_web/_data/private.yml +56 -108
- data/lib/starter_web/_data/resources.yml +107 -32
- data/lib/starter_web/_data/template_settings.yml +1 -1
- data/lib/starter_web/assets/images/modules/attics/aditya-joshi-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/alex-holyoake-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/anaya-katlego-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/antonella-lombardi-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/antonino-visalli-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/brandon-mowinkel-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/daniel-jensen-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/giammarco-boscaro-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/go-up-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/ian-schneider-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/ideas-start-here-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/jason-rosewell-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/jessica-ruscello-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/lianhao-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/library-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280-v.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/matthaeus-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/nousnou-iwasaki-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/premium-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/robert-v-ruggiero-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/romain-vignes-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/runner-1920x1200-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/spider-web-1920x1200-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/the-place-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/welcome-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-1.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-2.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-3.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-4.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-5.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-6.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-7.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/cats/cat-8.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/mega_cities/andreas-brucker_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-1_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-2_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/mega_cities/luca-bravo_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/carousel/mega_cities/thomas-tucker_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/andreas-brucker_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/banter-snaps_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-1_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/emmad-mazhari_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/ethan-brooke_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/federico-rizzarelli_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/gints-gailis_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/johan-mouchet_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/luca-bravo_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/oskars-sylwan_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/steven-diaz_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker-bw.jpg +0 -0
- data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker_b.jpg +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/favicon.ico +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/j1-256x256.png +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/j1-32x32.ico +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/j1-512x512.png +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/j1-64x64.png +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/j1.ico +0 -0
- data/lib/starter_web/assets/images/modules/icons/j1/scalable/j1.svg +31 -35
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-image-1.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-image-2.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-image-3.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/bootstrap-1920x1000-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/cards-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/emojies-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/icon-fonts-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/images-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/puzzle-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/tables-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/themes-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/images/pages/roundtrip/typography-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/adriana-lima-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/kick-it-old-school-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video1-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video2-poster.jpg +0 -0
- data/lib/starter_web/assets/videos/gallery/video2-thumb.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/still/underground-broadway.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.jpg +0 -0
- data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +81 -0
- data/lib/starter_web/collections/_biography/becoming.adoc +72 -0
- data/lib/starter_web/collections/_biography/born-to-run.adoc +78 -0
- data/lib/starter_web/collections/_biography/forty-autumns.adoc +75 -0
- data/lib/starter_web/collections/_biography/not-dead-yet.adoc +69 -0
- data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +72 -0
- data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +73 -0
- data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +64 -0
- data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +64 -0
- data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +62 -0
- data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +63 -0
- data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +62 -0
- data/lib/starter_web/collections/_fantasy/terry-pratchet-diary-2017.adoc +60 -0
- data/lib/starter_web/collections/_romance/breath-of-snow-and-ashes-a.adoc +67 -0
- data/lib/starter_web/collections/_romance/dressmaker-the.adoc +61 -0
- data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +69 -0
- data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +66 -0
- data/lib/starter_web/collections/_romance/outlander-novel.adoc +78 -0
- data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +62 -0
- data/lib/starter_web/collections/posts/public/featured/_posts/2019-05-01-top-open-source-static-site-generators.adoc +2 -2
- data/lib/starter_web/collections/posts/public/featured/_posts/2019-06-01-about-cookies.adoc +1 -1
- data/lib/starter_web/collections/posts/public/series/_posts/2018-11-01-docker-using-shared-folders.adoc +28 -24
- data/lib/starter_web/collections/posts/public/series/_posts/includes/attributes.asciidoc +66 -0
- data/lib/starter_web/collections/posts/public/series/_posts/includes/documents/100-docker-using-shared-folders.asciidoc +430 -0
- data/lib/starter_web/collections/posts/public/series/_posts/includes/documents/loop.sh +28 -0
- data/lib/starter_web/collections/posts/public/series/_posts/includes/tables/debug_variables.asciidoc +48 -0
- data/lib/starter_web/collections/posts/public/test_posts/_posts/2020-09-11-test_post.adoc +134 -0
- data/lib/starter_web/collections/posts/public/test_posts/_posts/includes/attributes.asciidoc +41 -0
- data/lib/starter_web/collections/posts/public/test_posts/_posts/includes/tables/debug_variables.asciidoc +48 -0
- data/lib/starter_web/includes/attributes.asciidoc +183 -0
- data/lib/starter_web/index.html +1 -1
- data/lib/starter_web/package.json +2 -2
- data/lib/starter_web/pages/protected/site_search.adoc +8 -19
- data/lib/starter_web/pages/public/blog/navigator/archive.html +11 -17
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +13 -19
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +13 -19
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +11 -12
- data/lib/starter_web/pages/public/bookshelf/100_whats_up.adoc +281 -0
- data/lib/starter_web/pages/public/bookshelf/200_book_shelf_biography.adoc +52 -0
- data/lib/starter_web/pages/public/bookshelf/300_book_shelf_fantasy.adoc +54 -0
- data/lib/starter_web/pages/public/bookshelf/400_book_shelf_romance.adoc +54 -0
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/100_meet_and_greet_jekyll.adoc +10 -19
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/200_preparations.adoc +12 -23
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/300_first_awesome_web.adoc +11 -21
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/{000_includes → includes}/attributes.asciidoc +21 -12
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/{000_includes → includes}/documents/100_meet_and_greet_jekyll.asciidoc +0 -0
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/{000_includes → includes}/documents/200_preparations.asciidoc +0 -0
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/{000_includes → includes}/documents/300_first_awesome_web.asciidoc +0 -0
- data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/{000_includes → includes}/parts.asciidoc +0 -0
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +58 -79
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +27 -40
- data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +33 -48
- data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +40 -54
- data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +81 -96
- data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +14 -54
- data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +25 -40
- data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +21 -36
- data/lib/starter_web/pages/public/learn/roundtrip/510_mdb_preview/mdb_previewer.adoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/attributes.asciidoc +7 -32
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/100_gistblock.asciidoc +0 -0
- data/lib/starter_web/pages/public/learn/roundtrip/includes/documents/410_bottom_info.asciidoc +14 -0
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_bottom_left_warning.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_bottom_right_danger.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_central_success.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_full_height_left_info.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_full_height_right_success.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_table_3_column.asciidoc +0 -0
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_top_info.asciidoc +3 -3
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_top_left_info.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/{000_includes → includes}/documents/410_top_right_success.asciidoc +2 -2
- data/lib/starter_web/pages/public/learn/roundtrip/includes/documents/419_advanced_modals_demo.asciidoc +337 -0
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_bottom_info.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_bottom_left_warning.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_bottom_right_danger.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_central_success.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_full_height_left_info.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_full_height_right_success.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_top_info.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_top_left_info.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_top_right_success.asciidoc +1 -1
- data/lib/starter_web/pages/public/learn/whats_up.adoc +6 -25
- data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +6 -12
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +27 -33
- data/lib/starter_web/pages/public/legal/en/400_license_agreement.adoc +3 -2
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +2 -0
- data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +1297 -717
- data/lib/starter_web/pages/public/previewer/iframer.adoc +2 -7
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/attributes.asciidoc +16 -8
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/100_absolute_sizes.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/110_bs_grid_sizes.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/120_relative_sizes.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/200_rotate.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/300_flip.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/400_spin_pulsed.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/500_bw_color_palette.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/510_bs_color_palette.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/600_md_color_palette.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/601_md_color_palette_indigo.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/mdi_icons/602_md_color_palette_pink.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/twitter_emoji/100_bs_sizes.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/twitter_emoji/100_relative_sizes.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/twitter_emoji/200_rotate.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/twitter_emoji/300_flip.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/{000_includes → includes}/tables/twitter_emoji/400_spin_pulsed.asciidoc +0 -0
- data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +9 -22
- data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +22 -29
- data/lib/starter_web/pages/public/{learn/examples → test_pages}/floating_ad.adoc +0 -0
- data/lib/starter_web/pages/public/{learn/examples → test_pages}/floating_div.adoc +1 -1
- data/lib/starter_web/pages/public/test_pages/includes/attributes.asciidoc +47 -0
- data/lib/starter_web/pages/public/test_pages/includes/documents/100_gistblock.asciidoc +27 -0
- data/lib/starter_web/pages/public/test_pages/includes/images/pages/minneapolis.1200x400.jpg +0 -0
- data/lib/starter_web/pages/public/test_pages/includes/tables/000_bem_specifiers.asciidoc +22 -0
- data/lib/starter_web/pages/public/test_pages/includes/tables/000_specifier_examples.asciidoc +56 -0
- data/lib/starter_web/pages/public/test_pages/nav_pagination_tester.adoc +297 -0
- data/lib/starter_web/pages/public/test_pages/page_attribute_tester.adoc +103 -0
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +106 -65
- data/_includes/themes/j1/blocks/footer/boxes/about_box.proc.org +0 -40
- data/assets/themes/j1/core/css/material-design-icons.min.css +0 -1
- data/assets/themes/j1/core/css/theme_extensions.min.css +0 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js.org +0 -1
- data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.png +0 -0
- data/lib/starter_web/assets/images/modules/attics/mae-mu-Vf9gbsLZyf0-unsplash.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/still/underground-broadway.webp +0 -0
- data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.webp +0 -0
- data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour.1.asciidoc +0 -120
- data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour.adoc +0 -144
- data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour_api.adoc +0 -642
- data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_bottom_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/419_advanced_modals_html.asciidoc +0 -928
- data/lib/starter_web/pages/public/learn/roundtrip/bs_tour.js +0 -98
data/lib/starter_web/index.html
CHANGED
@@ -24,32 +24,21 @@ resource_options:
|
|
24
24
|
alt: featured-1920x800
|
25
25
|
---
|
26
26
|
|
27
|
+
// Page Initializer
|
28
|
+
// =============================================================================
|
27
29
|
// Enable the Liquid Preprocessor
|
28
|
-
// -----------------------------------------------------------------------------
|
29
30
|
:page-liquid:
|
30
31
|
|
31
|
-
//
|
32
|
-
// -----------------------------------------------------------------------------
|
33
|
-
|
34
|
-
// Liquid procedures
|
35
|
-
// -----------------------------------------------------------------------------
|
36
|
-
//{% capture set_env_entry_document %}themes/{{site.template.name}}/procedures/global/set_env_entry_document.proc{%endcapture%}
|
37
|
-
|
38
|
-
// Initialize entry document paths
|
39
|
-
// -----------------------------------------------------------------------------
|
40
|
-
//{% include {{set_env_entry_document}} init_folders=all %}
|
41
|
-
|
42
|
-
// Load tags and urls
|
32
|
+
// Load Liquid procedures
|
43
33
|
// -----------------------------------------------------------------------------
|
44
|
-
|
45
|
-
//include::{includedir}/attributes.asciidoc[tag=urls]
|
46
|
-
//include::{includedir}/attributes.asciidoc[tag=data]
|
34
|
+
{% capture load_attributes %}themes/{{site.template.name}}/procedures/global/attributes_loader.proc{%endcapture%}
|
47
35
|
|
48
|
-
//
|
36
|
+
// Load page attributes (all)
|
49
37
|
// -----------------------------------------------------------------------------
|
38
|
+
{% include {{load_attributes}} %}
|
50
39
|
|
51
|
-
//
|
52
|
-
//
|
40
|
+
// Page content
|
41
|
+
// =============================================================================
|
53
42
|
|
54
43
|
== Site Search
|
55
44
|
|
@@ -72,26 +72,20 @@ resource_options:
|
|
72
72
|
|
73
73
|
<!-- ul class="list-unstyled link-news" -->
|
74
74
|
{% for post in site.posts %}
|
75
|
-
{% assign excerpt = post.excerpt
|
76
|
-
<
|
77
|
-
<
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
<
|
82
|
-
<span class="d-block text-muted text-uppercase g-font-weight-600 g-font-size-12">
|
83
|
-
<i class="mdi mdi-calendar-blank"></i>
|
84
|
-
{{post.date|date:'%Y %B, %e'}}
|
85
|
-
</span>
|
75
|
+
{% assign excerpt = post.excerpt|truncatewords:50|replace:'...',' ...'|strip_html|strip_newlines|strip %}
|
76
|
+
<article class="card raised-z5 mb-5">
|
77
|
+
<h3 id="{{100000|rand}}" class="card-header bg-primary">{{post.title}}</h3>
|
78
|
+
<!-- h5 class="notoc card-subtitle text-muted mb-2">{{post.tagline}}</h5 -->
|
79
|
+
<div class="card-body r-text-300">{{excerpt}}</div>
|
80
|
+
<div class="card-body text-muted r-text-200">
|
81
|
+
<i class="mdi mdi-calendar-blank"></i> {{post.date|date:"%Y %B, %e"}}
|
86
82
|
</div>
|
87
|
-
<div class="card-footer
|
88
|
-
|
89
|
-
|
90
|
-
<i class="fa fa-eye fa-lg mr-2" style="color:#FFFFFF;"></i>
|
91
|
-
Read · {{post.tagline}}
|
83
|
+
<div class="card-footer r-text-200">
|
84
|
+
<a class="card-link md-blue font-weight-bold g-font-size-12 text-uppercase"
|
85
|
+
href="{{post.url}}#readmore">Read · {{post.tagline}}
|
92
86
|
</a>
|
93
87
|
</div>
|
94
|
-
</
|
88
|
+
</article>
|
95
89
|
{% endfor %}
|
96
90
|
</div>
|
97
91
|
|
@@ -33,7 +33,6 @@ resource_options:
|
|
33
33
|
-------------------------------------------------------------------------------- {% endcomment %}
|
34
34
|
{% comment %} site_category_word_list: {{site_category_word_list|debug}} {% endcomment %}
|
35
35
|
|
36
|
-
|
37
36
|
{% comment %} Liquid procedures
|
38
37
|
-------------------------------------------------------------------------------- {% endcomment %}
|
39
38
|
{% capture get_page_path %}themes/{{site.template.name}}/procedures/global/get_page_path.proc{% endcapture %}
|
@@ -103,7 +102,7 @@ resource_options:
|
|
103
102
|
{% for tag in tags %}
|
104
103
|
{% assign category = tag|first %}
|
105
104
|
{% unless category_list contains category %} {% continue %} {% endunless %}
|
106
|
-
<h3 id="{{tag|first}}" class="
|
105
|
+
<h3 id="{{tag|first}}" class="mb-4"><i class="mdi mdi-pin mr-1"></i>{{tag|first|capitalize}}</h3>
|
107
106
|
|
108
107
|
{% for post in sorted_posts %}
|
109
108
|
{%if post.categories contains tag[0]%}
|
@@ -111,26 +110,21 @@ resource_options:
|
|
111
110
|
{% include {{get_category_item}} category=category %}
|
112
111
|
{% include {{select_icon_size}} family=icon_family size=icon_size %}
|
113
112
|
{% assign icon_size = size %}
|
114
|
-
{% assign excerpt = post.excerpt|truncatewords:
|
115
|
-
|
116
|
-
<
|
117
|
-
<
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
<
|
122
|
-
<span class="d-block text-muted text-uppercase g-font-weight-600 g-font-size-12">
|
123
|
-
<i class="mdi mdi-calendar-blank"></i>
|
124
|
-
{{post.date|date:"%Y %B, %e"}}
|
125
|
-
</span>
|
113
|
+
{% assign excerpt = post.excerpt|truncatewords:50|replace:'...',' ...'|strip_html|strip_newlines|strip %}
|
114
|
+
|
115
|
+
<article class="card raised-z5 mb-5">
|
116
|
+
<h3 id="{{100000|rand}}" class="card-header bg-primary notoc">{{post.title}}</h3>
|
117
|
+
<!-- h5 class="notoc card-subtitle text-muted mb-2">{{post.tagline}}</h5 -->
|
118
|
+
<div class="card-body r-text-300">{{excerpt}}</div>
|
119
|
+
<div class="card-body text-muted r-text-200">
|
120
|
+
<i class="mdi mdi-calendar-blank"></i> {{post.date|date:"%Y %B, %e"}}
|
126
121
|
</div>
|
127
|
-
<div class="card-footer
|
128
|
-
<a class="
|
129
|
-
|
130
|
-
Read · {{post.tagline}}
|
122
|
+
<div class="card-footer r-text-200">
|
123
|
+
<a class="card-link md-blue font-weight-bold g-font-size-12 text-uppercase"
|
124
|
+
href="{{post.url}}#readmore">Read · {{post.tagline}}
|
131
125
|
</a>
|
132
126
|
</div>
|
133
|
-
</
|
127
|
+
</article>
|
134
128
|
{% endif %}
|
135
129
|
{% endfor %}
|
136
130
|
{% endfor %}
|
@@ -78,9 +78,9 @@ resource_options:
|
|
78
78
|
{% capture nmonth %}{{post.next.date|date:'%m%Y'}}{% endcapture %}
|
79
79
|
{% capture monthHead %}
|
80
80
|
{% if month != nmonth %}
|
81
|
-
{% if
|
81
|
+
{% if forloop.index != 1 %}{{closeList}}{%endif %}
|
82
82
|
<h3 id="{{100000|rand}}"
|
83
|
-
class="toc-link mt-5 mb-
|
83
|
+
class="toc-link mt-5 mb-3">
|
84
84
|
{% if year != nyear %}
|
85
85
|
<a id="{{post.date|date:'%Y'}}"></a>
|
86
86
|
{% endif %}<a id="{{post.date|date:'%Y-%m' }}">
|
@@ -93,27 +93,21 @@ resource_options:
|
|
93
93
|
{% endcapture %}
|
94
94
|
|
95
95
|
{% capture link %}
|
96
|
-
{% assign excerpt = post.excerpt|truncatewords:50|strip_html|strip_newlines|strip %}
|
96
|
+
{% assign excerpt = post.excerpt|truncatewords:50|replace:'...',' ...'|strip_html|strip_newlines|strip %}
|
97
97
|
<li>
|
98
|
-
<
|
99
|
-
<
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
<
|
104
|
-
<span class="d-block text-muted text-uppercase g-font-weight-600 g-font-size-12">
|
105
|
-
<i class="mdi mdi-calendar-blank"></i>
|
106
|
-
{{post.date|date:'%Y %B, %e'}}
|
107
|
-
</span>
|
98
|
+
<article class="card raised-z5 mb-5">
|
99
|
+
<h3 id="{{100000|rand}}" class="card-header bg-primary notoc">{{post.title}}</h3>
|
100
|
+
<!-- h5 class="notoc card-subtitle text-muted mb-2">{{post.tagline}}</h5 -->
|
101
|
+
<div class="card-body r-text-300">{{excerpt}}</div>
|
102
|
+
<div class="card-body text-muted r-text-200">
|
103
|
+
<i class="mdi mdi-calendar-blank"></i> {{post.date|date:"%Y %B, %e"}}
|
108
104
|
</div>
|
109
|
-
<div class="card-footer
|
110
|
-
|
111
|
-
|
112
|
-
<i class="mdi mdi-eye mdi-lg mr-2" style="color:#FFFFFF;"></i>
|
113
|
-
Read · {{post.tagline}}
|
105
|
+
<div class="card-footer r-text-200">
|
106
|
+
<a class="card-link md-blue font-weight-bold g-font-size-12 text-uppercase"
|
107
|
+
href="{{post.url}}#readmore">Read · {{post.tagline}}
|
114
108
|
</a>
|
115
109
|
</div>
|
116
|
-
</
|
110
|
+
</article>
|
117
111
|
</li>
|
118
112
|
{% endcapture %}
|
119
113
|
|
@@ -146,23 +146,22 @@ resource_options:
|
|
146
146
|
{% include {{select_icon_size}} family=icon_family size=icon_size %}
|
147
147
|
{% assign icon_size = size %}
|
148
148
|
|
149
|
-
{% assign excerpt = post.excerpt
|
149
|
+
{% assign excerpt = post.excerpt|truncatewords:50|replace:'...',' ...'|strip_html|strip_newlines|strip %}
|
150
150
|
|
151
151
|
<!-- place post -->
|
152
|
-
<
|
153
|
-
<
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
<
|
152
|
+
<article class="card raised-z5 mb-5">
|
153
|
+
<h3 id="{{100000|rand}}" class="card-header bg-primary">{{post.title}}</h3>
|
154
|
+
<!-- h5 class="notoc card-subtitle text-muted mb-2">{{post.tagline}}</h5 -->
|
155
|
+
<div class="card-body r-text-300">{{excerpt}}</div>
|
156
|
+
<div class="card-body text-muted r-text-200">
|
157
|
+
<i class="mdi mdi-calendar-blank"></i> {{post.date|date:"%Y %B, %e"}}
|
158
158
|
</div>
|
159
|
-
<div class="card-footer">
|
160
|
-
<a class="
|
161
|
-
|
162
|
-
Read · {{post.tagline}}
|
159
|
+
<div class="card-footer r-text-200">
|
160
|
+
<a class="card-link md-blue font-weight-bold g-font-size-12 text-uppercase"
|
161
|
+
href="{{post.url}}#readmore">Read · {{post.tagline}}
|
163
162
|
</a>
|
164
163
|
</div>
|
165
|
-
</
|
164
|
+
</article>
|
166
165
|
{% endif %}{% endfor %}
|
167
166
|
{% endunless %}{% endfor %}
|
168
167
|
</div>
|
@@ -0,0 +1,281 @@
|
|
1
|
+
---
|
2
|
+
layout: page
|
3
|
+
|
4
|
+
title: What's up
|
5
|
+
tagline: Jekyll Collections Overview
|
6
|
+
description: Most powerful but least understood feature
|
7
|
+
|
8
|
+
tags: [ collections ]
|
9
|
+
index: [ Jekyll, Collections, Overview]
|
10
|
+
categories: [ collections ]
|
11
|
+
|
12
|
+
permalink: /pages/public/collections/whats_up/
|
13
|
+
regenerate: false
|
14
|
+
|
15
|
+
tags: [ Jekyll, Collections, Feature, Overview ]
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
resource_options:
|
20
|
+
- attic:
|
21
|
+
padding_top: 400
|
22
|
+
padding_bottom: 50
|
23
|
+
opacity: 0.5
|
24
|
+
slides:
|
25
|
+
- url: /assets/images/modules/attics/giammarco-boscaro-1920x1280.jpg
|
26
|
+
alt: giammarco-boscaro-1920x1280
|
27
|
+
|
28
|
+
regenerate: false
|
29
|
+
---
|
30
|
+
|
31
|
+
// Enable the Liquid Preprocessor
|
32
|
+
//
|
33
|
+
:page-liquid:
|
34
|
+
|
35
|
+
// Set other global page attributes here
|
36
|
+
// -------------------------------------------------------------------
|
37
|
+
|
38
|
+
|
39
|
+
Collections are Jekyll's most powerful and simultaneously least understood
|
40
|
+
feature. Collections add another possibility, or use-case, outside of Jekyll's
|
41
|
+
post- and page-publishing functionality. Collections have the potential to
|
42
|
+
bring Jekyll's zen-like simplicity to all sorts of other types of content that
|
43
|
+
aren't ordered as with posts (ordered by date), but have a set *relationship*
|
44
|
+
with one another - hence the name: _collection_.
|
45
|
+
|
46
|
+
excerpt__end
|
47
|
+
|
48
|
+
Source: https://ben.balter.com/2015/02/20/jekyll-collections/[Ben Balter: Jekyll Collections]
|
49
|
+
|
50
|
+
[[readmore]]
|
51
|
+
== Traditional - Posts and pages
|
52
|
+
|
53
|
+
{% if page.image.name %}
|
54
|
+
.{{page.tagline}}
|
55
|
+
[role="mb-5"]
|
56
|
+
image::{{page.image.name}}[{{page.title}}]
|
57
|
+
{% endif %}
|
58
|
+
|
59
|
+
Most Jekyll sites are organized around two types of content, posts (ordered)
|
60
|
+
and pages (un-ordered).
|
61
|
+
|
62
|
+
* *http://jekyllrb.com/docs/posts/[Posts]* are organized reverse
|
63
|
+
chronologically. You might use them for blog posts on a personal blog,
|
64
|
+
or articles on a news site. You can recognize a post by its filename.
|
65
|
+
Posts live in the `_posts` folder, and are always named in the form of
|
66
|
+
`YYYY-MM-DD-post-title.md`. Because posts are dated, they're
|
67
|
+
traditionally not updated regularly once published.
|
68
|
+
|
69
|
+
* *http://jekyllrb.com/docs/pages/[Pages]* are documents that don't have
|
70
|
+
a relationship with one another. They can live anywhere within the
|
71
|
+
site's source directory and don't have a set naming pattern. If you have
|
72
|
+
a personal blog, you might have an `index.html` page
|
73
|
+
(https://ben.balter.com/[the site's main page which is used to list
|
74
|
+
posts]), or https://ben.balter.com/about/[an about me page], to name two
|
75
|
+
examples. Because pages aren't date specific, pages are often updated
|
76
|
+
over time to maintain accuracy.
|
77
|
+
|
78
|
+
The problem is, not everything you might want to publish using a Jekyll
|
79
|
+
falls cleanly into the those two categories of content. As I noted in
|
80
|
+
https://github.com/jekyll/jekyll/issues/1941[the original pitch], "If
|
81
|
+
people are using blog posts for a non-blog post thing, Jekyll has
|
82
|
+
already failed". That's where Jekyll's
|
83
|
+
http://jekyllrb.com/docs/collections/[collections] come in.
|
84
|
+
|
85
|
+
|
86
|
+
== Not a post, a page - but a collection?
|
87
|
+
|
88
|
+
Collections add another possibility, or use-case, outside of Jekyll's
|
89
|
+
post- and page-publishing functionality. Collections have the potential to
|
90
|
+
bring Jekyll's zen-like simplicity to all sorts of other types of content that
|
91
|
+
aren't ordered as with posts (ordered by date), but have a set _relationship_
|
92
|
+
with one another - hence the name: _collection_. If you're familiar with
|
93
|
+
traditional CMS's, you can think of collections like
|
94
|
+
http://codex.wordpress.org/Post_Types[WordPress custom post types] or
|
95
|
+
https://www.drupal.org/node/774728[Drupal custom content types], except
|
96
|
+
you do not need to program a specific class, learn any back-end
|
97
|
+
languages, and the syntax used to specify them is very easily readable.
|
98
|
+
|
99
|
+
What then, might you use collections for? Let's say you're making a
|
100
|
+
website for a bakery and want to list the different cupcakes varieties
|
101
|
+
you sell. You might use a collection called *cupcakes*. You'd create a
|
102
|
+
`_cupcakes` folder, and would add `chocolate.md` or `vanilla.md` to it.
|
103
|
+
And just like posts or pages, your list of cupcakes would be accessible
|
104
|
+
as `site.cupcakes`.
|
105
|
+
|
106
|
+
You wouldn't want to use posts here, because cupcakes aren't
|
107
|
+
chronological, and likely wouldn't want to just use a page here, because
|
108
|
+
it's a notably different animal than a document that lists your location
|
109
|
+
and hours. Each cupcake in the cupcakes collection is related to
|
110
|
+
one-another in the sense that they're all cupcakes.
|
111
|
+
|
112
|
+
[NOTE]
|
113
|
+
====
|
114
|
+
Collections are a very new feature to Jekyll, and according to the
|
115
|
+
official documentation may be subject to change
|
116
|
+
http://jekyllrb.com/docs/collections/[Jekyll Documentation on
|
117
|
+
Collections]; but you should not let that put you off of using them,
|
118
|
+
because Jekyll is open-source, which means you should trust the
|
119
|
+
community to work-together for the best common-case solution.
|
120
|
+
====
|
121
|
+
|
122
|
+
|
123
|
+
=== Collections in practice
|
124
|
+
|
125
|
+
But what if one day you decided to expand your offerings and sell
|
126
|
+
cookies in addition to cupcakes. Simply introduce a "cookies"
|
127
|
+
collection, adding `chocolate-chip.md` and `peanut-butter.md` to a
|
128
|
+
`_cookies` directory, exposing the cookies as `site.cookies`. You'll
|
129
|
+
notice the collections concept start to show its value here. Pages
|
130
|
+
wouldn't make sense here, because you'd want to be able to list cupcakes
|
131
|
+
and cookies separately, and besides for both being baked goods, the one
|
132
|
+
cookie doesn't really share a relationship with a cupcake, at least not
|
133
|
+
in the same sense that cookies share with one another.
|
134
|
+
|
135
|
+
Of course you could at this stage, choose to have a more generic
|
136
|
+
collection `products`, which you could develop liquid layouts for, so
|
137
|
+
that you and other developers could get the basic functionality needed
|
138
|
+
to display all products, with specific includes for `cupcakes` and
|
139
|
+
`cookies`.
|
140
|
+
|
141
|
+
Abstractly, because they're not outputted by default, you can think of
|
142
|
+
collections somewhat like http://jekyllrb.com/docs/datafiles/[Jekyll's
|
143
|
+
`_data` folder support], but with the potential to generate content, and
|
144
|
+
be placed into their own specific part of your Jekyll site, so a lot
|
145
|
+
more robust. Like `_data` files, they can support arbitrary key/values
|
146
|
+
through frontmatter, but they also support a full content body (like
|
147
|
+
posts and pages), and can be broken out into separate files. If I wanted
|
148
|
+
to break out my bakery's hours, I might have a `_data/hours.yml` file
|
149
|
+
that looked something like this:
|
150
|
+
|
151
|
+
[source,yaml]
|
152
|
+
----
|
153
|
+
monday: 9-5
|
154
|
+
tuesday: 9-5
|
155
|
+
wednesday: 9-5
|
156
|
+
thursday: 9-5
|
157
|
+
friday: 9-3
|
158
|
+
----
|
159
|
+
|
160
|
+
That makes sense, because my bakery's hours is a relatively small
|
161
|
+
dataset. But trying to represent all my baked goods in that format (or
|
162
|
+
worse posts), would quickly get out of hand. That type of information is
|
163
|
+
better represented as individual markdown files with front matter, not
|
164
|
+
one giant YAML file that will quickly become unwieldy with complexity;
|
165
|
+
and rather than create the data, and pages to display the data, or the
|
166
|
+
data and a plugin to turn it into pages; using collections allows the
|
167
|
+
site owner to focus on the content.
|
168
|
+
|
169
|
+
For a more concrete example, take a look at
|
170
|
+
https://github.com/github/choosealicense.com[the source] for
|
171
|
+
http://choosealicense.com[choosealicense.com] a site which helps explain
|
172
|
+
open source licenses like the MIT or GPL license. There are pages like
|
173
|
+
"about" and "terms of service", but the actual licenses live in
|
174
|
+
https://github.com/github/choosealicense.com/tree/gh-pages/_licenses[a
|
175
|
+
licenses collection] and are displayed via
|
176
|
+
https://github.com/github/choosealicense.com/blob/gh-pages/licenses.html[a
|
177
|
+
licensed page].
|
178
|
+
|
179
|
+
=== Other use-cases
|
180
|
+
|
181
|
+
Of course this is not the only use-case, which is one of the benefits of
|
182
|
+
collections. You can turn on content generation to have the collection
|
183
|
+
contents automatically generated, or use the where syntax to get the
|
184
|
+
contents of specific collections to add common content, or devices to
|
185
|
+
your site.
|
186
|
+
|
187
|
+
|
188
|
+
== Using collections
|
189
|
+
|
190
|
+
The examples above were a slight simplification. There's one other step.
|
191
|
+
Before you can use a collection, you need to tell Jekyll about it. Going
|
192
|
+
back to our bakery example above, I might have a `_config.yml` file that
|
193
|
+
looks something like this:
|
194
|
+
|
195
|
+
[source,yaml]
|
196
|
+
----
|
197
|
+
collections:
|
198
|
+
- cupcakes
|
199
|
+
- cookies
|
200
|
+
----
|
201
|
+
|
202
|
+
This tells Jekyll to look in the `_cupcakes` and `_cookies` folders
|
203
|
+
for documents, and to read them into the appropriate collection, including
|
204
|
+
http://jekyllrb.com/docs/frontmatter/[YAML front matter], just as it
|
205
|
+
would posts (but again, without the date, because collection documents
|
206
|
+
aren't date specific).
|
207
|
+
|
208
|
+
By default, collections are read in (and exposed as `site.[collection]`,
|
209
|
+
an alias per-collection), but not included in the final site; at least
|
210
|
+
not individually like you might expect posts or pages to. If you wanted
|
211
|
+
a page for each type of cupcake, you'd have to modify the `_config.yml`
|
212
|
+
a bit:
|
213
|
+
|
214
|
+
[source,yaml]
|
215
|
+
----
|
216
|
+
collections:
|
217
|
+
cupcakes:
|
218
|
+
output: true
|
219
|
+
permalink: /cupcakes/:path/
|
220
|
+
----
|
221
|
+
|
222
|
+
That way, `_cupcakes/chocolate.md` is outputted as
|
223
|
+
`cupcakes/chocolate/index.html` when the site is built and would be
|
224
|
+
accessible as `example.com/cupcakes/chocolate/`. The other advantage,
|
225
|
+
is, because the data is now structured and machine readable (rather than
|
226
|
+
in plain text), you could also use the `jsonify` filter to output that
|
227
|
+
same information as an API for use elsewhere.
|
228
|
+
|
229
|
+
|
230
|
+
=== When to use a post, a page, or a collection
|
231
|
+
|
232
|
+
I like to think the decision looks roughly like this:
|
233
|
+
|
234
|
+
[source,console]
|
235
|
+
----
|
236
|
+
+-------------------------------------+ +----------------+
|
237
|
+
| Can the things be logically grouped?|---No--->| Use pages |
|
238
|
+
+-------------------------------------+ +----------------+
|
239
|
+
|
|
240
|
+
Yes
|
241
|
+
|
|
242
|
+
V
|
243
|
+
+-------------------------------------+ +----------------+
|
244
|
+
| Are they grouped by date? |---No--->|Use a collection|
|
245
|
+
+-------------------------------------+ +----------------+
|
246
|
+
|
|
247
|
+
Yes
|
248
|
+
|
|
249
|
+
V
|
250
|
+
+-------------------------------------+
|
251
|
+
| Use posts |
|
252
|
+
+-------------------------------------+
|
253
|
+
----
|
254
|
+
|
255
|
+
So if you're not about to open a bakery (if you do, please send
|
256
|
+
cookies); what might you use collections for? In short, any discrete
|
257
|
+
group of "things" that can be logically grouped by a common theme
|
258
|
+
(that's not their date). Here's a few examples:
|
259
|
+
|
260
|
+
* Listing employees on your company's "about" page (or a project's
|
261
|
+
maintainers)
|
262
|
+
* Documenting methods in an open source project (or the project's that
|
263
|
+
use it, or the plugins available)
|
264
|
+
* Organizing jobs on your résumé (or talks given, papers written)
|
265
|
+
* https://github.com/blog/1939-how-github-uses-github-to-document-GitHub[Articles
|
266
|
+
on a support site]
|
267
|
+
* Recipes on your personal blog (or restaurant reviews, or dishes on a
|
268
|
+
menu)
|
269
|
+
* Students in a class (or courses being offered, or listing the faculty)
|
270
|
+
* Cheats, tips, tricks and walkthroughs for games (by platform)
|
271
|
+
* Creating re-usable content snippets for your site such as
|
272
|
+
testimonials, forms, sentences, buzz-words or call-outs
|
273
|
+
* And honestly just about anything else
|
274
|
+
|
275
|
+
Collections are a powerful (and often misunderstood) Jekyll feature, but
|
276
|
+
hopefully you've now got an idea or two for your next Jekyll project. Of
|
277
|
+
course, if you're looking to dig in to collections, be sure to check out
|
278
|
+
http://jekyllrb.com/docs/collections/[the formal documentation] for a
|
279
|
+
much more in-depth explanation.
|
280
|
+
|
281
|
+
Happy Jekylling!
|