Index: openacs-4/packages/bootstrap-icons/tcl/resource-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/bootstrap-icons/tcl/resource-procs.tcl,v
diff -u -r1.1.2.10 -r1.1.2.11
--- openacs-4/packages/bootstrap-icons/tcl/resource-procs.tcl	3 Feb 2024 08:28:41 -0000	1.1.2.10
+++ openacs-4/packages/bootstrap-icons/tcl/resource-procs.tcl	23 Jul 2024 16:10:50 -0000	1.1.2.11
@@ -102,9 +102,10 @@
             downloadURLs https://github.com/twbs/icons/releases/download/v${version}/bootstrap-icons-${version}.zip \
             cspMap $cspMap \
             urnMap {} \
-            versionCheckURL "https://cdnjs.com/libraries?q=bootstrap-icons"
+            versionCheckURL "https://cdnjs.com/libraries?q=bootstrap-icons" \
+            versionCheckAPI {cdn cdnjs library bootstrap-icons count 1} \
+            installedVersion $version
 
-
         return $result
     }
 
Index: openacs-4/packages/cookie-consent/tcl/cookie-consent-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/cookie-consent/tcl/cookie-consent-procs.tcl,v
diff -u -r1.12.2.10 -r1.12.2.11
--- openacs-4/packages/cookie-consent/tcl/cookie-consent-procs.tcl	12 Sep 2022 09:15:15 -0000	1.12.2.10
+++ openacs-4/packages/cookie-consent/tcl/cookie-consent-procs.tcl	23 Jul 2024 16:10:50 -0000	1.12.2.11
@@ -29,12 +29,12 @@
     # widget also via NaviServer config file:
     #
     #   ns_section ns/server/${server}/acs/cookie-consent
-    #      ns_param Version                     cookieconsent2/3.1.1
+    #      ns_param Version                     3.1.1
 
     set ::cookieconsent::version [parameter::get \
                                       -package_id $package_id \
                                       -parameter Version \
-                                      -default cookieconsent2/3.1.1]
+                                      -default 3.1.1]
 
     ad_proc -private get_relevant_subsite {} {
     } {
@@ -193,7 +193,7 @@
                             "name":       "$cookie_name",
                             "path":       "/",
                             "domain":     "",
-                            "samesite":   "lax",                            
+                            "samesite":   "lax",
                             "expiryDays": "${:expiryDays}"
                         },
                         "theme":    "$theme",
@@ -325,7 +325,10 @@
             prefix $prefix \
             cssFiles {cookieconsent.min.css} \
             jsFiles  {cookieconsent.min.js} \
-            extraFiles {}
+            extraFiles {} \
+            versionCheckURL https://cdnjs.com/libraries/cookieconsent2 \
+            versionCheckAPI {cdn cdnjs library cookieconsent2 count 5} \
+            installedVersion $version
 
         return $result
     }
Index: openacs-4/packages/fa-icons/tcl/resource-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/fa-icons/tcl/resource-procs.tcl,v
diff -u -r1.1.2.6 -r1.1.2.7
--- openacs-4/packages/fa-icons/tcl/resource-procs.tcl	31 May 2024 11:32:59 -0000	1.1.2.6
+++ openacs-4/packages/fa-icons/tcl/resource-procs.tcl	23 Jul 2024 16:10:50 -0000	1.1.2.7
@@ -90,7 +90,10 @@
             downloadURLs https://github.com/FortAwesome/Font-Awesome/releases/download/${version}/fontawesome-free-${version}-web.zip \
             cspMap $cspMap \
             urnMap {} \
-            versionCheckURL https://cdnjs.com/libraries/font-awesome
+            versionCheckURL https://cdnjs.com/libraries/font-awesome \
+            versionCheckAPI {cdn cdnjs library font-awesome count 5} \
+            installedVersion $version
+
         return $result
     }
 
Index: openacs-4/packages/highcharts/tcl/resource-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/highcharts/tcl/resource-procs.tcl,v
diff -u -r1.1.2.10 -r1.1.2.11
--- openacs-4/packages/highcharts/tcl/resource-procs.tcl	31 May 2024 11:32:59 -0000	1.1.2.10
+++ openacs-4/packages/highcharts/tcl/resource-procs.tcl	23 Jul 2024 16:10:50 -0000	1.1.2.11
@@ -101,7 +101,9 @@
             }] \
             cspMap $cspMap \
             urnMap {} \
-            versionCheckURL "https://cdnjs.com/libraries?q=highcharts"
+            versionCheckURL https://cdnjs.com/libraries/highcharts \
+            versionCheckAPI {cdn cdnjs library highcharts count 5} \
+            installedVersion $version
 
         return $result
     }
Index: openacs-4/packages/openacs-bootstrap3-theme/tcl/init-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/openacs-bootstrap3-theme/tcl/init-procs.tcl,v
diff -u -r1.5.2.6 -r1.5.2.7
--- openacs-4/packages/openacs-bootstrap3-theme/tcl/init-procs.tcl	5 Apr 2022 07:43:30 -0000	1.5.2.6
+++ openacs-4/packages/openacs-bootstrap3-theme/tcl/init-procs.tcl	23 Jul 2024 16:10:50 -0000	1.5.2.7
@@ -44,7 +44,9 @@
 	    urnMap {
 		urn:ad:css:bootstrap3 css/bootstrap.min.css
 		urn:ad:js:bootstrap3  js/bootstrap.min.js
-	    }
+	    } \
+            installedVersion $version
+        
         if {$cdnHost ne ""} {
             lappend result cspMap [subst {
                 urn:ad:css:bootstrap3 {
Index: openacs-4/packages/openacs-bootstrap5-theme/tcl/resource-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/openacs-bootstrap5-theme/tcl/resource-procs.tcl,v
diff -u -r1.1.2.11 -r1.1.2.12
--- openacs-4/packages/openacs-bootstrap5-theme/tcl/resource-procs.tcl	20 Mar 2024 10:18:10 -0000	1.1.2.11
+++ openacs-4/packages/openacs-bootstrap5-theme/tcl/resource-procs.tcl	23 Jul 2024 16:10:50 -0000	1.1.2.12
@@ -49,7 +49,9 @@
                 urn:ad:css:bootstrap5 css/bootstrap.min.css
                 urn:ad:js:bootstrap5  js/bootstrap.bundle.min.js
             } \
-            versionCheckURL "https://cdnjs.com/libraries?q=bootstrap"
+            versionCheckURL https://cdnjs.com/libraries/bootstrap \
+            versionCheckAPI {cdn cdnjs library bootstrap count 1} \
+            installedVersion $version
 
         #urn:ad:js:popper2     dist/umd/popper.min.js
 
Index: openacs-4/packages/richtext-ckeditor4/tcl/richtext-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/richtext-ckeditor4/tcl/richtext-procs.tcl,v
diff -u -r1.14.2.26 -r1.14.2.27
--- openacs-4/packages/richtext-ckeditor4/tcl/richtext-procs.tcl	19 Jul 2024 12:44:46 -0000	1.14.2.26
+++ openacs-4/packages/richtext-ckeditor4/tcl/richtext-procs.tcl	23 Jul 2024 16:10:50 -0000	1.14.2.27
@@ -97,6 +97,7 @@
         lappend ckOptionsList \
             "language: '[lang::conn::language]'" \
             "disableNativeSpellChecker: false" \
+            "versionCheck: false" \
             "scayt_autoStartup: [dict get $options spellcheck]"
 
         #
@@ -259,8 +260,13 @@
             extraFiles {} \
             downloadURLs http://download.cksource.com/CKEditor/CKEditor/CKEditor%20${version}/ckeditor_${version}_${ck_package}.zip \
             urnMap {} \
-            versionCheckURL https://cdn.ckeditor.com/
-        
+            versionCheckURL https://cdn.ckeditor.com/ \
+            plugins {
+                a11yhelp about clipboard dialog image link magicline pastefromgdocs pastefromlibreoffice
+                pastefromword pastetools scayt specialchar table tableselection tabletools widget
+            } \
+            versionCheckAPI {cdn cdnjs library ckeditor count 20} \
+            installedVersion $version \
 
         return $result
     }
@@ -348,11 +354,49 @@
             set ck_package ${::richtext::ckeditor4::ck_package}
         }
 
-
         set resource_info [::richtext::ckeditor4::resource_info \
                                -ck_package $ck_package \
                                -version $version]
 
+        set downloadFromCDNnjs 0
+        if {$downloadFromCDNnjs} {
+            #
+            # If you really want to use this, you should also clear
+            # "downloadURLs" in resource_info to avoid the version
+            # check on the tar file in
+            # :util::resources::is_installed_locally. For this
+            # piecewise download the tar file does not exist.
+            #
+            set install_dir_name [acs_package_root_dir richtext-ckeditor4]/www/resources/$version/standard
+            set download_prefix https://cdnjs.cloudflare.com/ajax/libs/ckeditor/$version/
+            if {[info commands ::json::json2dict] eq ""} {
+                package require json
+            }
+            
+            file mkdir $install_dir_name
+            set r [ns_http run https://api.cdnjs.com/libraries/ckeditor/$version]
+            set d [::json::json2dict [dict get $r body]]
+            foreach fn [dict get $d files] {
+                if {[string match *.min.* $fn]} continue
+                if {[regexp {plugins/([^/]+)/} $fn . pluginName]} {
+                    if {$pluginName ni [dict get $resource_info plugins]} {
+                        continue
+                    }
+                }
+                set result [::util::resources::download_helper -url $download_prefix/$fn]
+                #ns_log notice "... returned status code [dict get $result status]"
+                set spool_fn [dict get $result file]
+
+                set subdir [ad_file dirname $install_dir_name/$fn]
+                if {![ad_file isdirectory $subdir]} {
+                    file mkdir $subdir
+                }
+                #ns_log notice "mv $spool_fn $install_dir_name/$fn"
+                file rename -force -- $spool_fn $install_dir_name/$fn
+            }
+            return
+        }
+
         ::util::resources::download \
             -resource_info $resource_info \
             -version_dir $version
Index: openacs-4/packages/richtext-tinymce/tcl/richtext-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/richtext-tinymce/tcl/richtext-procs.tcl,v
diff -u -r1.4.2.10 -r1.4.2.11
--- openacs-4/packages/richtext-tinymce/tcl/richtext-procs.tcl	23 Jul 2024 09:28:05 -0000	1.4.2.10
+++ openacs-4/packages/richtext-tinymce/tcl/richtext-procs.tcl	23 Jul 2024 16:10:50 -0000	1.4.2.11
@@ -123,7 +123,9 @@
                               [::richtext::tinymce::lang_download_url] \
                              ] \
             urnMap {} \
-            versionCheckURL https://www.tiny.cloud/tinymce/
+            versionCheckURL https://cdnjs.com/libraries/tinymce \
+            versionCheckAPI {cdn cdnjs library tinymce count 5} \
+            installedVersion $version
 
         return $result
     }
Index: openacs-4/packages/xowiki/tcl/resource-info-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/resource-info-procs.tcl,v
diff -u -r1.1.2.4 -r1.1.2.5
--- openacs-4/packages/xowiki/tcl/resource-info-procs.tcl	2 Feb 2024 12:14:32 -0000	1.1.2.4
+++ openacs-4/packages/xowiki/tcl/resource-info-procs.tcl	23 Jul 2024 16:10:50 -0000	1.1.2.5
@@ -47,7 +47,10 @@
         urnMap {
           urn:ad:css:bootstrap3-treeview bootstrap-treeview.min.css
           urn:ad:js:bootstrap3-treeview  bootstrap-treeview.min.js
-        }
+        } \
+        versionCheckURL https://cdnjs.com/libraries/bootstrap-treeview \
+        versionCheckAPI {cdn cdnjs library bootstrap-treeview count 1} \
+        installedVersion $version
 
     if {$cdnHost ne ""} {
       lappend result csp_lists [subst {