diff --git a/README.md b/README.md index 3bf465f..e26e701 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,14 @@ BRIEF: Documentation for MokoCassiopeia template --> -# README - MokoCassiopeia (VERSION: 03.09.03) +# MokoCassiopeia **A Modern, Lightweight Joomla Template Based on Cassiopeia** +[![Version](https://img.shields.io/badge/version-03.09.04-green.svg)](https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/tag/v03) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) -[![Joomla](https://img.shields.io/badge/Joomla-4.4.x%20%7C%205.x-blue.svg)](https://www.joomla.org) -[![PHP](https://img.shields.io/badge/PHP-8.0%2B-blue.svg)](https://www.php.net) +[![Joomla](https://img.shields.io/badge/Joomla-5.x%20%7C%206.x-blue.svg)](https://www.joomla.org) +[![PHP](https://img.shields.io/badge/PHP-8.1%2B-blue.svg)](https://www.php.net) MokoCassiopeia is a modern, lightweight enhancement layer built on top of Joomla's Cassiopeia template. It adds **Font Awesome 7**, **Bootstrap 5** helpers, an automatic **Table of Contents (TOC)** utility, advanced **Dark Mode** theming, and optional integrations for **Google Tag Manager** and **Google Analytics (GA4)**—all while maintaining minimal core template overrides for maximum upgrade compatibility. diff --git a/scripts/download-google-fonts.php b/scripts/download-google-fonts.php new file mode 100644 index 0000000..98ea144 --- /dev/null +++ b/scripts/download-google-fonts.php @@ -0,0 +1,73 @@ + + * + * This file is part of a Moko Consulting project. + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * # FILE INFORMATION + * DEFGROUP: Joomla.Template.Site + * INGROUP: MokoCassiopeia + * PATH: scripts/download-google-fonts.php + * VERSION: 03.09.05 + * BRIEF: Download Google Fonts (woff2) for local self-hosting + */ + +$fontsDir = __DIR__ . '/../src/media/fonts'; + +if (!is_dir($fontsDir)) { + fwrite(STDERR, "Error: Fonts directory not found: {$fontsDir}\n"); + exit(1); +} + +$fonts = [ + 'Roboto' => 'https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;700&display=swap', + 'Noto Sans' => 'https://fonts.googleapis.com/css2?family=Noto+Sans:wght@100;300;400;700&display=swap', + 'Fira Sans' => 'https://fonts.googleapis.com/css2?family=Fira+Sans:wght@100;300;400;700&display=swap', +]; + +$userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'; + +echo "Google Fonts Downloader for MokoCassiopeia\n"; +echo str_repeat('=', 48) . "\n"; +echo "Target: {$fontsDir}\n\n"; + +foreach ($fonts as $name => $url) { + echo "Downloading {$name}...\n"; + + $ctx = stream_context_create(['http' => ['header' => "User-Agent: {$userAgent}\r\n"]]); + $css = @file_get_contents($url, false, $ctx); + + if ($css === false) { + fwrite(STDERR, " FAIL: could not fetch CSS for {$name}\n"); + continue; + } + + preg_match_all('#https://fonts\.gstatic\.com[^)]*\.woff2#', $css, $matches); + + if (empty($matches[0])) { + fwrite(STDERR, " FAIL: no woff2 URLs found for {$name}\n"); + continue; + } + + $count = 0; + foreach ($matches[0] as $fontUrl) { + $filename = basename($fontUrl); + $dest = $fontsDir . '/' . $filename; + + $data = @file_get_contents($fontUrl, false, $ctx); + if ($data === false) { + fwrite(STDERR, " FAIL: {$filename}\n"); + continue; + } + + file_put_contents($dest, $data); + $size = round(strlen($data) / 1024, 1); + echo " OK: {$filename} ({$size} KB)\n"; + $count++; + } + + echo " {$count} file(s) downloaded\n\n"; +} + +echo "Done.\n"; diff --git a/scripts/download-google-fonts.sh b/scripts/download-google-fonts.sh deleted file mode 100755 index dc861b1..0000000 --- a/scripts/download-google-fonts.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash -# Copyright (C) 2026 Moko Consulting -# SPDX-License-Identifier: GPL-3.0-or-later -# -# Download Google Fonts for self-hosting -# This script downloads Roboto, Noto Sans, and Fira Sans fonts - -set -e - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Target directory -FONTS_DIR="../src/media/fonts" - -echo -e "${BLUE}╔════════════════════════════════════════════════╗${NC}" -echo -e "${BLUE}║ Google Fonts Downloader for MokoCassiopeia ║${NC}" -echo -e "${BLUE}╚════════════════════════════════════════════════╝${NC}" -echo "" - -# Check if fonts directory exists -if [ ! -d "$FONTS_DIR" ]; then - echo -e "${RED}✗ Error: Fonts directory not found: $FONTS_DIR${NC}" - exit 1 -fi - -cd "$FONTS_DIR" - -echo -e "${YELLOW}Target directory: $(pwd)${NC}" -echo "" - -# Function to download font CSS and extract font files -download_font() { - local font_name="$1" - local font_url="$2" - local display_name="$3" - - echo -e "${GREEN}Downloading $display_name...${NC}" - - # Download CSS with user agent for woff2 format - css=$(curl -s -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" "$font_url") - - if [ -z "$css" ]; then - echo -e "${RED} ✗ Failed to download CSS${NC}" - return 1 - fi - - # Extract woff2 URLs - urls=$(echo "$css" | grep -oP 'https://fonts\.gstatic\.com[^\)]*\.woff2' || true) - - if [ -z "$urls" ]; then - echo -e "${RED} ✗ No font URLs found in CSS${NC}" - return 1 - fi - - count=0 - while IFS= read -r url; do - if [ -z "$url" ]; then - continue - fi - - filename=$(basename "$url") - echo -e " → Downloading ${filename}..." - - if curl -s "$url" -o "$filename"; then - size=$(du -h "$filename" | cut -f1) - echo -e "${GREEN} ✓ Downloaded ($size)${NC}" - ((count++)) - else - echo -e "${RED} ✗ Failed${NC}" - fi - done <<< "$urls" - - echo -e "${GREEN} ✓ Downloaded $count font files${NC}" - echo "" -} - -# Download fonts -download_font "roboto" "https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;700&display=swap" "Roboto" -download_font "noto-sans" "https://fonts.googleapis.com/css2?family=Noto+Sans:wght@100;300;400;700&display=swap" "Noto Sans" -download_font "fira-sans" "https://fonts.googleapis.com/css2?family=Fira+Sans:wght@100;300;400;700&display=swap" "Fira Sans" - -echo -e "${GREEN}╔════════════════════════════════════════════╗${NC}" -echo -e "${GREEN}║ ✓ All fonts downloaded successfully! ║${NC}" -echo -e "${GREEN}╚════════════════════════════════════════════╝${NC}" -echo "" -echo -e "Font files saved to: ${BLUE}$(pwd)${NC}" -echo "" -echo "Next steps:" -echo "1. Verify font files are present" -echo "2. Update templateDetails.xml font options (if needed)" -echo "3. Remove Google Fonts CDN preconnect links from PHP templates" diff --git a/src/index.php b/src/index.php index 4fc14e0..5a5abf0 100644 --- a/src/index.php +++ b/src/index.php @@ -448,7 +448,10 @@ $wa->useScript('user.js'); // js/user.js countModules('search', true)) : ?> -