diff --git a/assets/js/critical/_cookie.js b/assets/js/functional/_cookie.js similarity index 100% rename from assets/js/critical/_cookie.js rename to assets/js/functional/_cookie.js diff --git a/assets/js/critical/color.js b/assets/js/functional/color.js similarity index 100% rename from assets/js/critical/color.js rename to assets/js/functional/color.js diff --git a/assets/js/critical/languageSelector.js b/assets/js/functional/languageSelector.js similarity index 100% rename from assets/js/critical/languageSelector.js rename to assets/js/functional/languageSelector.js diff --git a/eslint.config.js b/eslint.config.js index 49ca62bf3..16e71dc62 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -2,8 +2,8 @@ module.exports = require('neostandard')({ ignores: [ - 'assets/js/critical/languageSelector.js', - 'assets/js/critical/color.js', + 'assets/js/functional/languageSelector.js', + 'assets/js/functional/color.js', 'assets/js/analytics.js', 'assets/js/flexsearch.js', 'assets/js/navbar.js', diff --git a/exampleSite/assets/js/critical/_cookie.js b/exampleSite/assets/js/critical/_cookie.js deleted file mode 100644 index 4fd45fb34..000000000 --- a/exampleSite/assets/js/critical/_cookie.js +++ /dev/null @@ -1,49 +0,0 @@ -/* eslint-disable no-undef, no-unused-vars */ - -let _manager - -function loadScriptSync (src, id) { - const s = document.createElement('script') - s.src = src - s.id = id - s.type = 'text/javascript' - s.async = false - document.getElementsByTagName('head')[0].appendChild(s) -} - -function hasConsent (category) { - if (typeof _manager !== 'undefined' && _manager !== null) { - return _manager.hasConsent(category) - } else { - console.log('no mgr defined: ' + category) - return false - } -} - -function getLocalStorage (key, def, category) { - if (hasConsent(category)) { - return localStorage.getItem(key) - } else { - return def - } -} - -function setLocalStorage (key, val, category) { - if (hasConsent(category)) { - localStorage.setItem(key, val) - } -} - -function getSessionStorage (key, def, category) { - if (hasConsent(category)) { - return sessionStorage.getItem(key) - } else { - return def - } -} - -function setSessionStorage (key, val, category) { - if (hasConsent(category)) { - sessionStorage.setItem(key, val) - } -} diff --git a/exampleSite/assets/js/critical/_cookie2.js b/exampleSite/assets/js/critical/_cookie2.js deleted file mode 100644 index 95c999cdb..000000000 --- a/exampleSite/assets/js/critical/_cookie2.js +++ /dev/null @@ -1,38 +0,0 @@ -// TODO: move to module - -/* eslint-disable no-undef, no-unused-vars */ -{{- if or site.Params.modules.cookieyes.force (not hugo.IsServer) -}} - {{ with site.Params.modules.cookieyes.id }} - -class CookieYesManager { - #consent - - updateConsent () { - if (window.getCkyConsent) { - this.#consent = getCkyConsent() - } - } - - constructor () { - loadScriptSync('https://cdn-cookieyes.com/client_data/{{ (. | urlize) }}/script.js', 'cookieyes') - this.updateConsent() - } - - hasConsent (category) { - if (typeof this.#consent !== 'undefined' && this.#consent !== null) { - console.log('invoke cky consent: ' + category + this.#consent) - return true - } else { - console.log('cky consent undefined: ' + category) - return false - } - } -} - -_manager = new CookieYesManager() -document.addEventListener("cookieyes_consent_update", function () { _manager.updateConsent() }) - - {{ else }} - {{ warnf "Cannot find CookieYes ID, check 'params.modules.cookieyes.id'" }} - {{ end }} -{{ end }} \ No newline at end of file diff --git a/exampleSite/config/_default/hugo.toml b/exampleSite/config/_default/hugo.toml index 01e1e0c2a..74be63be6 100644 --- a/exampleSite/config/_default/hugo.toml +++ b/exampleSite/config/_default/hugo.toml @@ -89,3 +89,23 @@ home = ["HTML", "RSS", "REDIR"] workspace = "hinode.work" [[module.imports]] path = "github.com/gethinode/hinode" + [[module.imports]] + path = "github.com/gethinode/mod-bootstrap" + [[module.imports]] + path = "github.com/gethinode/mod-cookieyes" + [[module.imports]] + path = "github.com/gethinode/mod-flexsearch/v2" + [[module.imports]] + path = "github.com/gethinode/mod-fontawesome" + [[module.imports]] + path = "github.com/gethinode/mod-google-analytics" + [[module.imports]] + path = "github.com/gethinode/mod-katex" + [[module.imports]] + path = "github.com/gethinode/mod-leaflet" + [[module.imports]] + path = "github.com/gethinode/mod-lottie" + [[module.imports]] + path = "github.com/gethinode/mod-simple-datatables" + [[module.imports]] + path = "github.com/gethinode/mod-utils/v2" diff --git a/exampleSite/config/_default/params.toml b/exampleSite/config/_default/params.toml index ed4af7dfc..a155da700 100644 --- a/exampleSite/config/_default/params.toml +++ b/exampleSite/config/_default/params.toml @@ -193,7 +193,5 @@ hinode = "https://gethinode.com" [modules.cookieyes] - state = "immediate" - category = "necessary" id = "a54b5553f349dd13bd225f8e" - force = true \ No newline at end of file + force = false \ No newline at end of file diff --git a/exampleSite/go.mod b/exampleSite/go.mod index 18e8c9d8d..2578abdf4 100644 --- a/exampleSite/go.mod +++ b/exampleSite/go.mod @@ -2,3 +2,4 @@ module github.com/gethinode/hinode/exampleSite go 1.19 +require github.com/gethinode/mod-cookieyes v1.0.0 // indirect diff --git a/exampleSite/go.sum b/exampleSite/go.sum index 90571100e..26d843237 100644 --- a/exampleSite/go.sum +++ b/exampleSite/go.sum @@ -2,6 +2,8 @@ github.com/gethinode/hinode v0.22.5 h1:zpjSDgWQVbq4BjPduxwexQB18gawFeinzPkaRRTs2 github.com/gethinode/hinode v0.22.5/go.mod h1:hsskrlBRnTbpCjrDtGbK8C1VYGML7ezHtCDGDiYL2mQ= github.com/gethinode/mod-bootstrap v1.2.2 h1:Q8E04OKWr9owk7nhQ/NBukUgSFhsECxZsOLEaf5oeiQ= github.com/gethinode/mod-bootstrap v1.2.2/go.mod h1:DcpPc2cNaXUPGEvhD7npuEEPA7573NvakTlrwFbyjr8= +github.com/gethinode/mod-cookieyes v1.0.0 h1:KTkK67uugji9pzYJJalvNhdECHgG1DzPtyeaYL0Xm/0= +github.com/gethinode/mod-cookieyes v1.0.0/go.mod h1:VrBUKm5apop6KIb+R8eRqvlf3AAPnv5aMajL0RorIjY= github.com/gethinode/mod-flexsearch v1.9.0 h1:AE+w7QeZTxh36JNTG+CASDLxaqlCZKn+EUD6ulnPGak= github.com/gethinode/mod-flexsearch v1.9.0/go.mod h1:L8hrnpupx27cez2ObMX8gWnhbW6qss4HGH1Ea4UaBRQ= github.com/gethinode/mod-fontawesome v1.8.1 h1:iyvULrpaGizQoI5Vl9WjFYcMGWefdyG90NGK2UKax+k= diff --git a/exampleSite/layouts/partials/templates/script.html b/exampleSite/layouts/partials/templates/script.html new file mode 100644 index 000000000..ea85ea213 --- /dev/null +++ b/exampleSite/layouts/partials/templates/script.html @@ -0,0 +1,26 @@ + + + +{{ $args := partial "utilities/InitArgs.html" (dict "structure" "script" "args" .) }} +{{ if $args.err }} + {{ partial "utilities/LogErr.html" (dict + "partial" "templates/script.html" + "msg" "Invalid arguments" + "details" $args.errmsg + "file" page.File + )}} +{{ end }} + + +{{ $category := cond (ne $args.category "other") $args.category "" }} + + + diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 7a0d5b835..b6d167ead 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -37,6 +37,7 @@ {{- partial "footer/scripts.html" (dict "page" . "type" "critical") -}} + {{- partial "footer/scripts.html" (dict "page" . "type" "functional") -}} {{ block "head" . }}{{ end -}} diff --git a/layouts/alias.html b/layouts/alias.html index 6d524321b..55b830b1a 100644 --- a/layouts/alias.html +++ b/layouts/alias.html @@ -9,6 +9,7 @@ {{ if site.Params.main.enableLanguageSelectionStorage }} {{- partial "footer/scripts.html" (dict "page" page "type" "critical") -}} + {{- partial "footer/scripts.html" (dict "page" page "type" "functional") -}} {{ else }} {{ end }} diff --git a/layouts/partials/footer/scripts.html b/layouts/partials/footer/scripts.html index 2f887292d..c239cd442 100644 --- a/layouts/partials/footer/scripts.html +++ b/layouts/partials/footer/scripts.html @@ -77,6 +77,7 @@ {{ $patterns := dict "critical" "js/critical/**.js" + "functional" "js/functional/**.js" "core" "{js/*.js,js/vendor/**.js}" }} @@ -84,7 +85,7 @@ {{ $state := "immediate" }} {{ $config := dict }} - {{ if ne $args.type "critical" }} + {{ if not (in (slice "critical" "functional") $args.type) }} {{ $config = $args.page.Scratch.Get "modules" }} {{ if not $config }} {{ errorf "partial [footer/scripts.html] - Cannot initialize module configuration" }} @@ -120,12 +121,13 @@ {{ if not $error }} - - {{ if eq $args.type "critical" }} + + {{ if in (slice "critical" "functional") $args.type }} {{ partial "partials/bundle-script.html" (dict "page" $args.page "match" (index $patterns $args.type) - "destination" (printf "js/%s.bundle.js" $args.type) + "destination" (printf "js/%s.bundle.js" "critical") + "cat" (cond (eq $args.type "functional") $args.type "") "localize" $localize "skipTemplate" $skipTemplate "absoluteURL" $absoluteURL diff --git a/package-lock.json b/package-lock.json index cefe65813..18610f6b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@gethinode/hinode", - "version": "0.27.0-alpha9", + "version": "0.27.0-beta", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@gethinode/hinode", - "version": "0.27.0-alpha9", + "version": "0.27.0-beta", "license": "MIT", "dependencies": { "@fullhuman/postcss-purgecss": "^6.0.0", diff --git a/package.json b/package.json index 256c6693e..28fc548f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gethinode/hinode", - "version": "0.27.0-alpha9", + "version": "0.27.0-beta", "description": "Hinode is a clean documentation and blog theme for Hugo, an open-source static site generator", "keywords": [ "hugo",