This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git


The following commit(s) were added to refs/heads/7.0.x by this push:
     new ecc4a6ece6 Add matomo groovydocs 15133 (#15312)
ecc4a6ece6 is described below

commit ecc4a6ece648e51bba97ac4b206b1d0005077cc0
Author: Ajay9704 <[email protected]>
AuthorDate: Fri Jan 16 22:05:40 2026 +0530

    Add matomo groovydocs 15133 (#15312)
    
    * Fix #15163: remove grails-docs-core from docs build
    
    * Add Apache/Matomo analytics to all Groovydoc-generated HTML (fix #15133)
    
    * Update build.gradle
    
    * Update build.gradle
    
    * Update doc-config.gradle
    
    * fixed build issues
    
    * Update doc-config.gradle
    
    * Update gradle.properties
---
 buildSrc/build.gradle                    |  2 +-
 gradle/docs-dependencies.gradle          | 17 +++++++++++++++++
 grails-data-docs/stage/build.gradle      | 17 +++++++++++++++++
 grails-data-hibernate5/docs/build.gradle | 17 +++++++++++++++++
 grails-data-mongodb/docs/build.gradle    | 17 +++++++++++++++++
 grails-data-neo4j/docs/build.gradle      | 17 +++++++++++++++++
 grails-doc/build.gradle                  | 19 ++++++++++++++++++-
 grails-forge/gradle/doc-config.gradle    | 19 ++++++++++++++++++-
 grails-gradle/gradle/docs-config.gradle  | 17 +++++++++++++++++
 9 files changed, 139 insertions(+), 3 deletions(-)

diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index 78faeaf43c..1a5a0825d3 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -34,4 +34,4 @@ dependencies {
     implementation 'org.springframework.boot:spring-boot-gradle-plugin'
     implementation 
"org.nosphere.apache.rat:org.nosphere.apache.rat.gradle.plugin:$apacheRatVersion"
     implementation 
"org.cyclonedx.bom:org.cyclonedx.bom.gradle.plugin:$gradleCycloneDxPluginVersion"
-}
\ No newline at end of file
+}
diff --git a/gradle/docs-dependencies.gradle b/gradle/docs-dependencies.gradle
index 9e62c93263..df4244f39c 100644
--- a/gradle/docs-dependencies.gradle
+++ b/gradle/docs-dependencies.gradle
@@ -61,6 +61,23 @@ tasks.withType(Groovydoc).configureEach { Groovydoc gdoc ->
     gdoc.processScripts = false
     gdoc.noTimestamp = true
     gdoc.noVersionStamp = false
+    gdoc.footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
 
     doFirst {
         def gebVersion = resolveProjectVersion('geb-spock')
diff --git a/grails-data-docs/stage/build.gradle 
b/grails-data-docs/stage/build.gradle
index 6d3c92d1d3..b5d71cc03a 100644
--- a/grails-data-docs/stage/build.gradle
+++ b/grails-data-docs/stage/build.gradle
@@ -25,6 +25,23 @@ apply from: 
rootProject.layout.projectDirectory.file('gradle/docs-dependencies.g
 combinedGroovydoc.configure { Groovydoc task ->
     task.windowTitle = "Grails Data Mapping API - ${projectVersion}"
     task.docTitle = "Grails Data Mapping API - ${projectVersion}"
+    task.footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
 
     Set<Project> docProjects = rootProject.subprojects.findAll {
         it.name in [
diff --git a/grails-data-hibernate5/docs/build.gradle 
b/grails-data-hibernate5/docs/build.gradle
index a28ff759f4..aed5772187 100644
--- a/grails-data-hibernate5/docs/build.gradle
+++ b/grails-data-hibernate5/docs/build.gradle
@@ -96,6 +96,23 @@ tasks.withType(Groovydoc).configureEach {
             .collect { ":${it.name}:groovydoc" })
 
     it.docTitle = "GORM for Hibernate 5 - $project.version"
+    it.footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
 
     def sourceFiles = coreProjects.collect {
         rootProject.layout.projectDirectory.files("$it/src/main/groovy")
diff --git a/grails-data-mongodb/docs/build.gradle 
b/grails-data-mongodb/docs/build.gradle
index 04ccf12524..89cfce4530 100644
--- a/grails-data-mongodb/docs/build.gradle
+++ b/grails-data-mongodb/docs/build.gradle
@@ -105,6 +105,23 @@ tasks.withType(Groovydoc).configureEach { Groovydoc 
groovydoc ->
             .findAll { it.findProperty('gormApiDocs') }
             .collect { ":${it.name}:groovydoc" })
     groovydoc.docTitle = "GORM for MongoDB - $project.version"
+    groovydoc.footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
 
     def sourceFiles = coreProjects.collect {
         layout.projectDirectory.files("$it/src/main/groovy")
diff --git a/grails-data-neo4j/docs/build.gradle 
b/grails-data-neo4j/docs/build.gradle
index 1d420bb7cc..783d22faa2 100644
--- a/grails-data-neo4j/docs/build.gradle
+++ b/grails-data-neo4j/docs/build.gradle
@@ -125,6 +125,23 @@ task cleanAsciidoc(type: Delete, dependsOn: copyDocs) {
 tasks.withType(Groovydoc) {
     dependsOn(fetchSource)
     docTitle = "GORM for Neo4j - ${project.version}"
+    footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
     destinationDir = project.file("build/docs/api")
 
     def files
diff --git a/grails-doc/build.gradle b/grails-doc/build.gradle
index a99f19d83e..1802c28395 100644
--- a/grails-doc/build.gradle
+++ b/grails-doc/build.gradle
@@ -63,6 +63,23 @@ apply from: 
rootProject.layout.projectDirectory.file('gradle/docs-dependencies.g
 combinedGroovydoc.configure { Groovydoc gdoc ->
     gdoc.windowTitle = "Grails $projectVersion"
     gdoc.docTitle = "Grails $projectVersion"
+    gdoc.footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
 
     def docProjects = rootProject.subprojects
             .findAll { it.findProperty('includeInApiDocs') }
@@ -309,4 +326,4 @@ artifacts {
 // the dependencies are only used for resolving versions from the bom
 tasks.withType(Jar).configureEach {
     enabled = false
-}
\ No newline at end of file
+}
diff --git a/grails-forge/gradle/doc-config.gradle 
b/grails-forge/gradle/doc-config.gradle
index b3f5cfeb89..d7b0eaf7fb 100644
--- a/grails-forge/gradle/doc-config.gradle
+++ b/grails-forge/gradle/doc-config.gradle
@@ -36,10 +36,27 @@ tasks.withType(Groovydoc).configureEach {
     classpath += project.configurations.documentation
     windowTitle = "${project.findProperty('pomArtifactId') ?: project.name} - 
$projectVersion"
     docTitle = "${project.findProperty('pomArtifactId') ?: project.name} - 
$projectVersion"
+    footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
     access = GroovydocAccess.PROTECTED
     includeAuthor = false
     includeMainForScripts = false
     processScripts = false
     noTimestamp = true
     noVersionStamp = false
-}
\ No newline at end of file
+}
diff --git a/grails-gradle/gradle/docs-config.gradle 
b/grails-gradle/gradle/docs-config.gradle
index e065fa8ab7..be2aaf4f1c 100644
--- a/grails-gradle/gradle/docs-config.gradle
+++ b/grails-gradle/gradle/docs-config.gradle
@@ -52,6 +52,23 @@ groovydocTask.configure { Groovydoc it ->
     it.processScripts = false
     it.noTimestamp = true
     it.noVersionStamp = false
+    it.footer = '''<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    _paq.push(["setDoNotTrack", true]);
+    _paq.push(["disableCookies"]);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+        var u="https://analytics.apache.org/";;
+        _paq.push(['setTrackerUrl', u+'matomo.php']);
+        _paq.push(['setSiteId', '79']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->'''
     it.destinationDir = project.file('build/docs/api')
 }
 

Reply via email to