<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>XOOPS Web Application System</title>
        <link>https://xoops.org/modules/publisher</link>
        <description>Powered by You!</description>
        <lastBuildDate>Sun, 26 Apr 2026 10:39:12 +0000</lastBuildDate>
        <docs>https://backend.userland.com/rss/</docs>
        <generator>Publisher</generator>
        <category>Publisher</category>
        <managingEditor>webmaster@xoops.org( XOOPS Web Application System )</managingEditor>
        <webMaster>webmaster@xoops.org( XOOPS Web Application System )</webMaster>
        <language>en</language>
                    <image>
                <title>XOOPS Web Application System</title>
                <url>https://xoops.org/images/logo.png</url>
                <link>https://xoops.org/modules/publisher</link>
                <width>140</width>
                <height>43</height>
            </image>
                            <item>
                <title>xPages</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6115</link>
                <description>xPages - Advanced Static Page Management Module for XOOPS xPages is a professional static page management module developed for XOOPS 2.7.0 and above. It makes content management easier with its user-friendly interface and powerful features.</description>
                <pubDate>Sat, 18 Apr 2026 05:50:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6115</guid>
            </item>
                    <item>
                <title>XOOPS 2.7.0 RC5 is here</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6114</link>
                <description>UPDATE: XOOPS 2.7.0-RC5 Released for Testing&lt;br&gt;&lt;br&gt;DOWNLOAD: https://github.com/XOOPS/XoopsCore27/releases&lt;br&gt;&lt;br&gt;What&apos;s Changed&lt;br&gt;&lt;br&gt;• chore(deps): bump actions/cache from 5.0.4 to 5.0.5 by @dependabot[bot] in #22&lt;br&gt;• show section for system services always, after controlpanel by @ggoffy in #21&lt;br&gt;• normalize profile and session indexes for 2.7.0 by @mambax7 in #23&lt;br&gt;• TinyMCE default config was not actually loading the full plugin set. by @mambax7 in #24&lt;br&gt;• the /install folder is deleted after installation, so we can&apos;t call d… by @mambax7 in #25&lt;br&gt;• SonarQube settings update by @mambax7 in #26&lt;br&gt;• fix(install): add menusitems FK during fresh install for schema parity (#9) by @mambax7 in #27&lt;br&gt;• RC-scoped 3.6.4 fixes for PHP 8, dblayertrap, and filter loading by @mambax7 in #28&lt;br&gt;• fix for skipping index normalisation on profile_field.field_name, if … by @mambax7 in #29&lt;br&gt;• Setting utf8mb4 as a default by @mambax7 in #30&lt;br&gt;• fix(xbootstrap5): load runtime scripts in the right order by @mambax7 in #31&lt;br&gt;&lt;br&gt;Full Changelog: v2.7.0-RC4...v2.7.0-RC5&lt;br&gt;&lt;br&gt;&lt;br&gt;XOOPS 2.7.0 RC1 — A New Chapter&lt;br&gt;&lt;br&gt;The XOOPS Development Team is pleased to announce XOOPS 2.7.0 Release Candidate 1.&lt;br&gt;&lt;br&gt;Quote:&lt;br&gt;Why the version jump? The cumulative changes since 2.5.11 — PHP 8.2 as the new baseline, Smarty 4, a new admin theme, a rewritten system menu, aggressive security hardening, and a rebuilt dependency chain — far exceeded a patch release. Betas 1–8 published as 2.5.12 remain in the changelog under their original numbers for historical accuracy.&lt;br&gt;&lt;br&gt;&lt;br&gt;Download RC1: https://github.com/XOOPS/XoopsCore27/releases&lt;br&gt;&lt;br&gt;This is a release candidate intended for testing only. Use in a production system is not without risks.&lt;br&gt;&lt;br&gt;Headline Changes&lt;br&gt;&lt;br&gt;Modern PHP&lt;br&gt;&lt;br&gt;PHP 7.x support is dropped. PHP 8.2 is the new minimum; CI runs against 8.2, 8.3, 8.4, and 8.5 on every commit. Dead code for older PHP versions is removed, session handlers are consolidated, and the installer enforces the 8.2.0 minimum.&lt;br&gt;&lt;br&gt;Smarty 4&lt;br&gt;&lt;br&gt;The template engine moves from the ancient forked Smarty 2 to Smarty 4.5.5. Sites with old Smarty 2 syntax need a review before upgrading. The bundled  upgrade/preflight.php   scanner identifies outdated themes and module templates before you begin.&lt;br&gt;&lt;br&gt;New Admin Theme: Modern&lt;br&gt;&lt;br&gt;XOOPS 2.7.0 ships Modern, the first major admin UI refresh in years. The existing Transition theme continues to work. System admin themes gain a template overload capability for customisation without patching core files.&lt;br&gt;&lt;br&gt;System Menu — Rebuilt Clean-Room&lt;br&gt;&lt;br&gt;Custom site navigation is now a first-class admin feature. Inspired by MyMenus module by Trabis and work done by Mage, the system menu module is fully rewritten with new tables, controller, templates, CSRF protection, permission handling, cycle detection, and depth limits. Manage categories, items, display order, icons, and per-group permissions from System Admin.&lt;br&gt;&lt;br&gt;Four New Front-End Theme Platforms&lt;br&gt;&lt;br&gt;• xSwatch5 — Bootstrap 5.3.8, successor to xSwatch4. Drop in, pick a Bootswatch variant, done.&lt;br&gt;• xBootstrap5 — Pure Bootstrap 5 reference theme, kept in sync with upstream.&lt;br&gt;• xTailwind — Tailwind CSS + DaisyUI (35 palettes) + Alpine.js, with a new XoopsFormRendererTailwind so forms render natively without overrides.&lt;br&gt;• xTailwind2 — Art-directed sibling of xTailwind with curated palettes and stronger visual hierarchy.&lt;br&gt;&lt;br&gt;Security Hardening&lt;br&gt;&lt;br&gt;• CSRF tokens on all module admin AJAX requests — previously some GET-based toggle handlers had no token validation.&lt;br&gt;• SameSite + Secure session cookies are now admin-configurable (Lax/Strict/None) with secure-by-default values.&lt;br&gt;• eval() removed from core. DB-stored PHP blocks are retired; file-based PHP blocks still work. Protector&apos;s lifecycle files also purged of eval().&lt;br&gt;• unserialize() audit — every core call now uses [&apos;allowed_classes&apos; =&gt; false], blocking PHP object injection.&lt;br&gt;• Protector hardened — proper exec() override, input validation on table prefixes, safe badips file handling, failure-aware admin actions.&lt;br&gt;• XSS sweep — all SonarCloud-flagged reflected-data paths escaped.&lt;br&gt;• Open redirect fix — URL scheme check decodes HTML entities before matching, checks scheme only, and is whitelist-based.&lt;br&gt;• Directory traversal — filename allowlists call basename() before the character check.&lt;br&gt;• Multibyte validation — form length checks use mb_strlen() throughout; CJK/Arabic/emoji no longer over-count.&lt;br&gt;• Password comparisons use strict === and hash_equals() throughout.&lt;br&gt;• Request::getInt() Elvis pitfall fixed — 0 no longer silently falls back.&lt;br&gt;&lt;br&gt;Form &amp; UI Fixes&lt;br&gt;&lt;br&gt;• XoopsFormTextDateSelect — renders genuinely empty when stored value is 0 instead of defaulting to today&apos;s date.&lt;br&gt;• DHTML editor image width — strict regex replaces permissive parseInt, so real widths are preserved.&lt;br&gt;• Required-field asterisks (*) now render correctly in module admin forms.&lt;br&gt;• Breadcrumbs and xoAdminIcons are consistent across all system admin pages.&lt;br&gt;• PM recipient pickers filter by module access permission.&lt;br&gt;• PM delete confirmation UX improved with centred popups and xBootstrap5 templates.&lt;br&gt;&lt;br&gt;Developer Changes&lt;br&gt;&lt;br&gt;Dependencies Inlined&lt;br&gt;&lt;br&gt;The external xoops/base-requires25 metapackage is removed. All dependencies are listed directly in  htdocs/xoops_lib/composer.dist.json  .&lt;br&gt;&lt;br&gt;Updated Libraries&lt;br&gt;&lt;br&gt;• Bootstrap 5.3.8&lt;br&gt;• Font Awesome 7.1.0&lt;br&gt;• Smarty 4.5.5&lt;br&gt;• HTML Purifier 4.19.0&lt;br&gt;• PhpMailer 6.12.0 (moved to /xoops_lib/)&lt;br&gt;• jQuery UI 1.14.1&lt;br&gt;• TinyMCE 7.9.2 (new default) + 5.10.9 (legacy, retained)&lt;br&gt;• tablesorter 2.32.0&lt;br&gt;• jquery.form 4.3.1&lt;br&gt;• jGrowl 1.4.10&lt;br&gt;&lt;br&gt;Database Layer&lt;br&gt;&lt;br&gt;• queryF() deprecated — use exec() for writes/DDL, query() for SELECTs.&lt;br&gt;• quoteString() deprecated — use quote().&lt;br&gt;• XoopsDatabase declares error(), errorno(), and query() as abstract methods.&lt;br&gt;• Criteria IN clauses accept arrays safely.&lt;br&gt;• All fetch calls require the two-part isResultSet() + instanceof \mysqli_result guard.&lt;br&gt;&lt;br&gt;Observability&lt;br&gt;&lt;br&gt;XoopsLogger now supports a composite logger pattern — PSR-3 and Debugbar receive raw messages with context rather than pre-formatted strings, opening the door to structured logging.&lt;br&gt;&lt;br&gt;Legacy Cleanup&lt;br&gt;&lt;br&gt;• PSR-12 throughout; legacy @package / @subpackage / @category PHPDoc tags removed.&lt;br&gt;• pda.php handler deleted.&lt;br&gt;• Direct-access guards use http_response_code(404) instead of bare exit().&lt;br&gt;• htmlSpecialChars() wrapper calls replaced with native htmlspecialchars().&lt;br&gt;• browse.php now serves source maps for JS/CSS files.&lt;br&gt;&lt;br&gt;Tests &amp; CI&lt;br&gt;&lt;br&gt;• PHPUnit 11 with #[Test] / #[CoversClass] attribute syntax throughout.&lt;br&gt;• SonarCloud, Qodana, Scrutinizer, and CodeRabbit integrated into the PR workflow.&lt;br&gt;• CI now runs the real XOOPS test suite — the silent placeholder test is gone.&lt;br&gt;&lt;br&gt;RTL Support&lt;br&gt;&lt;br&gt;XOOPS 2.7.0 adds right-to-left language support at core level. Arabic, Hebrew, Persian, and Urdu sites now get proper directional rendering in admin and theme templates.&lt;br&gt;&lt;br&gt;&lt;br&gt;System Requirements&lt;br&gt;&lt;br&gt;• PHP &gt;= 8.2.0 (8.4+ strongly recommended)&lt;br&gt;• MySQL &gt;= 8.0 (8.4+ strongly recommended)&lt;br&gt;• Web server: Apache 2.4+ or nginx&lt;br&gt;&lt;br&gt;Upgrading from 2.5.x&lt;br&gt;&lt;br&gt;Supported upgrade path from 2.5.11. Sites older than 2.5.11 should upgrade there first.&lt;br&gt;&lt;br&gt;• Back up site files and database.&lt;br&gt;• Enable debugging; set site offline via System → Preferences → General.&lt;br&gt;• Copy  /upgrade/   into your XOOPS root.&lt;br&gt;• Run  /upgrade/preflight.php   — fix flagged items, repeat until clean.&lt;br&gt;• Copy new  htdocs/   contents over your web root.&lt;br&gt;• Copy  htdocs/xoops_lib/   and  htdocs/xoops_data/   to their configured locations.&lt;br&gt;• Browse to  /upgrade/   and step through the prompts.&lt;br&gt;• Update the system, pm, profile, and protector modules from System → Modules.&lt;br&gt;• Turn your site back on.&lt;br&gt;&lt;br&gt;The upgrade script handles: removing legacy HTMLPurifier and PhpMailer locations, creating the  tokens   table, widening  bannerclient.passwd  , and inserting the new session cookie preferences.&lt;br&gt;&lt;br&gt;After upgrading, install or update the Protector module. It adds intrusion detection, SQL inspection, and request logging, and received material hardening in this release.&lt;br&gt;&lt;br&gt;&lt;br&gt;This is a Release Candidate&lt;br&gt;&lt;br&gt;This is a release candidate intended for testing only. Use in a production system is not without risks.&lt;br&gt;&lt;br&gt;The feature set is complete and is now fixed for 2.7.0. Only bug fixes will be accepted.&lt;br&gt;&lt;br&gt;• Bug reports: github.com/XOOPS/XoopsCore27/issues&lt;br&gt;• Support forums: xoops.org/modules/newbb/&lt;br&gt;• Contributing: CONTRIBUTING.md&lt;br&gt;&lt;br&gt;Please download from the current master!&lt;br&gt;&lt;br&gt;If you are downloading this release for testing, please download from the current master instead.&lt;br&gt;&lt;br&gt;Any bugs that have been found and fixed will be included in your testing that way, so we all won&apos;t keep finding and reporting the same bug over and over.&lt;br&gt;&lt;br&gt;You can grab the current master here: https://github.com/XOOPS/XoopsCore25/archive/master.zip&lt;br&gt;&lt;br&gt;Full Changelog: v2.7.0-RC1&lt;br&gt;&lt;br&gt;&lt;br&gt;Thank You&lt;br&gt;&lt;br&gt;Thank you to everyone who submitted pull requests, reported issues, tested betas, translated strings, reviewed security findings, and kept the conversation going on the forums and GitHub.&lt;br&gt;&lt;br&gt;Special thanks to new contributors since Beta 8: @koreus, @CHCCD, and عبدالعزيز الجهني.&lt;br&gt;&lt;br&gt;Standing thanks to JetBrains for complimentary PhpStorm licenses.&lt;br&gt;&lt;br&gt;For the complete change list see  docs/changelog.270.txt  . For the language-constant diff see  docs/lang_diff.txt  .&lt;br&gt;&lt;br&gt;Download XOOPS 2.7.0 RC1: https://github.com/XOOPS/XoopsCore27/releases&lt;br&gt;&lt;br&gt;The XOOPS Development Team&lt;br&gt;April 2026</description>
                <pubDate>Fri, 10 Apr 2026 16:10:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6114</guid>
            </item>
                    <item>
                <title>xTailwind2: A Sharper Tailwind Theme for XOOPS</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6113</link>
                <description>xTailwind2 is a new Tailwind CSS and DaisyUI-powered theme for XOOPS 2.5.11+, created to deliver a more polished and modern front-end experience. Instead of feeling like a generic utility-based skin, it focuses on stronger visual hierarchy, cleaner content presentation, and a more intentional overall atmosphere.&lt;br&gt;&lt;br&gt;The theme introduces a floating glass-style navigation bar, a more editorial homepage hero, quieter side rails, and a refined central content canvas that helps articles and module content stand out. It also includes six curated palettes, with both light and dark moods, so the site can shift personality without losing consistency.&lt;br&gt;&lt;br&gt;Under the hood, xTailwind2 keeps the flexibility of Tailwind CSS while tightening the design system around XOOPS itself. Blocks, typography, tables, links, and other raw XOOPS output are styled to feel more cohesive, and the theme switcher remembers the visitor’s preferred light and dark palette choices for a smoother experience.&lt;br&gt;&lt;br&gt;If you want a XOOPS theme that feels lighter, more contemporary, and more design-driven than a standard framework port, xTailwind2 is a strong step forward.&lt;br&gt;&lt;br&gt;Download: https://github.com/mambax7/xtailwind2</description>
                <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6113</guid>
            </item>
                    <item>
                <title>xTailwind — a fresh Tailwind CSS theme for XOOPS 2.5.11+</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6112</link>
                <description>We&apos;re excited to introduce xTailwind, a new theme for XOOPS 2.5.11+ that brings the modern utility-first approach of Tailwind CSS to the XOOPS ecosystem. Paired with DaisyUI&apos;s elegant component library, xTailwind gives site administrators and developers a fresh alternative to Bootstrap-based themes — without sacrificing any of the features you expect.&lt;br&gt;&lt;br&gt; Why Tailwind?&lt;br&gt;&lt;br&gt;Tailwind CSS has reshaped how modern websites are built. Instead of pre-styled components you override and fight against, Tailwind provides small utility classes you compose to build exactly what you want. The result is less CSS, more control, and designs that don&apos;t all look the same.&lt;br&gt;&lt;br&gt;DaisyUI sits on top of Tailwind to bring back the convenience of semantic component classes — btn, card, navbar, modal, dropdown — along with a built-in theming system. It&apos;s the best of both worlds: utility-first flexibility when you need it, ready-made components when you don&apos;t.&lt;br&gt;&lt;br&gt; 34 Themes, One Click Away&lt;br&gt;&lt;br&gt; xTailwind ships with DaisyUI&apos;s full collection of 34 pre-built themes: light, dark, cupcake, corporate, cyberpunk, synthwave, dracula, forest, sunset, nord, and many more. Users can switch between them live from the navbar, with no page reload.&lt;br&gt;&lt;br&gt; The switcher is accompanied by a clean Light/Dark toggle button with a translatable text label. Both preferences are saved to the visitor&apos;s browser and persist across sessions. A tiny inline script applies the saved theme before the page paints, so there&apos;s never a flash of the wrong colors.&lt;br&gt;&lt;br&gt; Drop-In Simplicity for Site Admins&lt;br&gt;&lt;br&gt; We know most XOOPS site administrators aren&apos;t JavaScript developers, and we respect that. xTailwind is a true drop-in theme: download it, copy it into your themes/ directory, activate it in XOOPS admin, and you&apos;re done. The compiled CSS ships with the theme. No Node.js. No npm. No build step.&lt;br&gt;&lt;br&gt; Developers who want to customize styles, add components, or bundle a new DaisyUI theme can still do all of that — the source files are right there in the repo, and rebuilding takes one command. But that&apos;s an opt-in path, not a requirement.&lt;br&gt;&lt;br&gt; Built for the Modern Web&lt;br&gt;&lt;br&gt; Behind the scenes, xTailwind embraces everything that makes modern web development pleasant:&lt;br&gt;&lt;br&gt; - Alpine.js for declarative interactivity — dropdowns, mobile navigation, toasts, and modals all work without a single custom JavaScript file. Shared from xoops_lib/Frameworks/alpine/ so multiple Tailwind themes can use the same copy.&lt;br&gt; - XoopsFormRendererTailwind — a brand-new form renderer contributed to XOOPS core that outputs native DaisyUI form components. Every XOOPS form (user registration, admin preferences, module settings) renders with proper Tailwind styling, matching whichever DaisyUI theme is active.&lt;br&gt; - Native RTL support via Tailwind&apos;s logical properties (ms-/me-, text-start/text-end) and the XOOPS _TEXT_DIRECTION constant. Arabic, Hebrew, and Persian sites get correct mirroring automatically.&lt;br&gt; - WCAG AA contrast baked into every DaisyUI theme&apos;s color palette.&lt;br&gt; - Self-hosted with no external CDN dependencies, following the same principle as xSwatch5.&lt;br&gt;&lt;br&gt; A New Architecture, Not a Replacement&lt;br&gt;&lt;br&gt; xTailwind doesn&apos;t replace xSwatch5 — it joins it. Site owners who love Bootstrap and the Bootswatch variant collection can continue using xSwatch5 v2.0 (also recently released). Site owners who want to explore a utility-first workflow or prefer DaisyUI&apos;s aesthetic can pick xTailwind. Both are supported, both are actively maintained, and both share XOOPS&apos;s commitment to stability.&lt;br&gt;&lt;br&gt; For developers building custom themes, xTailwind also serves as a reference implementation. A complete TUTORIAL.md walks through how to create your own Tailwind theme from scratch, plus a class-by-class guide for porting existing Bootstrap themes to Tailwind + DaisyUI.&lt;br&gt;&lt;br&gt; Share a Library, Not the Libraries&lt;br&gt;&lt;br&gt; One of the nicer architectural decisions in xTailwind: Alpine.js lives in XOOPS core&apos;s xoops_lib/Frameworks/alpine/ directory, right alongside jQuery and Chart.js. If you build additional Tailwind themes down the road, they all share the same 45 KB Alpine.js runtime. One download for site administrators, one place to update, no duplication across themes.&lt;br&gt;&lt;br&gt; Status and Availability&lt;br&gt;&lt;br&gt; xTailwind is currently released as a proof of concept — the core theme, navigation, block system, theme switcher, and form renderer are all working. Module-specific template overrides (newbb, publisher, wggallery, etc.) are the next phase of development, and community contributions are very welcome.&lt;br&gt;&lt;br&gt; Grab it from the repo, drop it into your XOOPS installation, and let us know what themes you bundle, what components you build, and what you&apos;d like to see next. The future of XOOPS theming is wide open, and we&apos;d love for you to help shape it.&lt;br&gt;&lt;br&gt; Happy theming.&lt;br&gt;&lt;br&gt;Download: https://github.com/mambax7/xtailwind</description>
                <pubDate>Sat, 04 Apr 2026 23:50:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6112</guid>
            </item>
                    <item>
                <title>xSwatch5 v2.0 — Bootstrap 5.3 Arrives, With a Twist You Can Actually See</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6111</link>
                <description>We&apos;re thrilled to announce the release of xSwatch5 v2.0, a complete refresh of the beloved xSwatch theme family for XOOPS. This release brings your site into the modern web with Bootstrap 5.3.8, and adds some features we think you&apos;ll genuinely enjoy using every day.&lt;br&gt;&lt;br&gt; Pick Your Look, Live&lt;br&gt;&lt;br&gt; The headline feature is the brand-new Theme Switcher right in your navbar. With a single click, your visitors can instantly switch between any of the 21 bundled Bootswatch variants — Cerulean, Cosmo, Slate, Darkly, Lux, Minty, and more. No page reload, no admin panel, no fuss. Their choice is remembered across visits.&lt;br&gt;&lt;br&gt; Even better: the switcher builds its list automatically from the theme&apos;s CSS folders. Drop a new variant directory in, and it appears in the dropdown. No configuration, no code changes, no cache to clear.&lt;br&gt;&lt;br&gt;  Light Mode, Dark Mode, Your Call&lt;br&gt;&lt;br&gt; Right next to the theme picker lives a Dark/Light toggle button with a clear label so users always know what they&apos;ll get. It uses Bootstrap 5&apos;s native Color Modes API, which means each Bootswatch variant now includes both light and dark styles in a single CSS file. That&apos;s half the CSS payload compared to the old dual-stylesheet approach.&lt;br&gt;&lt;br&gt; On first visit, the theme respects the visitor&apos;s OS preference. Once they make a choice, it sticks — saved to browser storage with no cookies, no tracking, no HTTP overhead. A tiny script runs before the page paints, so there&apos;s never a flash of the wrong theme.&lt;br&gt;&lt;br&gt;  Right-to-Left, Out of the Box&lt;br&gt;&lt;br&gt; For the global XOOPS community, v2.0 ships with automatic RTL support. The theme reads the _TEXT_DIRECTION constant from your language pack and Bootstrap 5&apos;s logical properties handle the rest — spacing, alignment, dropdowns, and layouts all mirror correctly for Arabic, Hebrew, Persian, and other RTL languages.&lt;br&gt;&lt;br&gt; The Foundation: Modern, Accessible, Clean&lt;br&gt;&lt;br&gt; Under the hood, every template has been rebuilt for Bootstrap 5.3.8. That meant touching dozens of files across the main theme and module overrides for 13 popular XOOPS modules — newbb, publisher, wggallery, xoopsfaq, and more. Along the way we:&lt;br&gt;&lt;br&gt; - Dropped jQuery dependency from Bootstrap (XOOPS core still uses it, but the theme itself is vanilla JS)&lt;br&gt; - Tightened WCAG AA contrast across every color combination in every variant&lt;br&gt; - Fixed absolute image paths so subdirectory installs work correctly&lt;br&gt; - Cleaned up dead code, duplicate selectors, and BS3 leftovers&lt;br&gt; - Switched to the current form renderer (XoopsFormRendererBootstrap5)&lt;br&gt;&lt;br&gt; Compatibility&lt;br&gt;&lt;br&gt; xSwatch5 v2.0 works on XOOPS 2.5.11 and later. The theme runs cleanly on 2.5.11 with RTL auto-detection becoming active on 2.5.12+. PHP 8.2 or newer required.&lt;br&gt;&lt;br&gt;  A Family Legacy&lt;br&gt;&lt;br&gt; This release stands on the shoulders of years of community work. The xSwatch story began in 2016 with Richard Griffith&apos;s (Geekwright) original theme, evolved through Bootstrap 3 and 4, and got its first Bootstrap 5 migration from Alain01 in 2023. v2.0 builds on all of that — keeping what worked, polishing what didn&apos;t, and adding the live theme switching that users have been asking for.&lt;br&gt;&lt;br&gt; Get It Now&lt;br&gt;&lt;br&gt; https://github.com/mambax7/xswatch5&lt;br&gt;&lt;br&gt; Drop it into your XOOPS themes/ directory, select it in the admin panel, and you&apos;re done. We&apos;d love to hear what you think — and if you build a new Bootswatch variant, remember: it just takes a folder drop to get it into the switcher.&lt;br&gt;&lt;br&gt; Happy theming.</description>
                <pubDate>Sat, 04 Apr 2026 15:30:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6111</guid>
            </item>
                    <item>
                <title>The Modern Developer’s Swiss Army Knife: 6 Surprising Features of XOOPS Smarty Extensions</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6110</link>
                <description> The Modern Developer’s Swiss Army Knife: 6 Surprising Features of XOOPS Smarty Extensions Legacy CMS development often falls into the trap of &quot;template soup,&quot; where business logic and markup collide in a tangled, unmaintainable mess. As a CMS architect, I’ve spent years remediating the technical debt left behind when developers treat the view layer as a dumping ground for raw PHP. The XOOPS Smarty Extensions represent a sophisticated paradigm shift, providing a bridge that decouples complex operations from elegant template design while enforcing modern development standards. 1. The &quot;Invisible&quot; Bridge (Smarty 4/5 Dual-Support) One of the most exhausting aspects of maintaining long-lived CMS modules is managing major dependency shifts. Smarty 5 introduced a radical departure from previous versions, moving toward a PSR-compliant, namespaced Extension architecture. For most developers, this would mean rewriting every plugin registration call. These extensions abstract that entire architectural shift away through an automated registry system. By detecting the environment and wrapping extensions in a Smarty5Adapter, the library allows your view layer to remain functional and future-proof without manual intervention. The registry detects the Smarty version and uses the appropriate registration path:  Smarty 4 : calls registerPlugin() on each extension Smarty 5 : wraps each extension in Smarty5Adapter and calls addExtension()  2. Security as a Default, Not an Afterthought In traditional templating, security is often a manual checklist—and humans are notoriously bad at checklists. The SecurityExtension and FormExtension implement a &quot;fail-closed&quot; philosophy that is essential for modern web security. For instance, base64_encode_file doesn&apos;t just blindly read from the filesystem; it validates paths against XOOPS_ROOT_PATH or DOCUMENT_ROOT. If a path resolves outside these boundaries, it returns an empty string, silently neutralizing potential directory traversal vulnerabilities.     Feature   Manual Approach   Automated Extension Approach     CSRF Protection   Manual creation of hidden input fields and token management.   Automatic injection via the form_open function.     File Access   Manual realpath and boundary checks in PHP logic.   &quot;Fail-closed&quot; restriction to XOOPS_ROOT_PATH or DOCUMENT_ROOT.     URL Safety   Complex Regex or manual scheme filtering.   sanitize_url automatically blocks unsafe schemes like javascript: or data:.     3. Human-Centric Data Formatting (and Portability) A surprising and powerful feature of this library is its portability. Several modules, specifically the TextExtension and FormatExtension, are Pure PHP. This means they have zero dependencies on the XOOPS core, allowing you to carry these utilities into non-XOOPS projects. They move the needle from robotic data output to contextual User Experience (UX) wins. UX Wins:  reading_time: Estimates engagement (e.g., &quot;3 min read&quot;) based on word count. relative_time: Replaces static timestamps with context like &quot;2 hours ago.&quot; bytes_format: Automatically converts raw integers into readable units like &quot;1.5 MB.&quot; pluralize: Handles grammatical nuances, including irregular plurals (e.g., ).  Pro-Tip: Avoid Double Escaping. When using HTML-producing modifiers like nl2p, linkify, or highlight_text, do not apply |escape afterward. Doing so will break the intended HTML markup and render the tags as literal text on the screen. 4. The &quot;Assign&quot; Rule – Logic Without the Mess A common pitfall in Smarty is the direct output of functions that return booleans or structured arrays. This usually results in a useless stringified &apos;1&apos; or an empty space appearing in your HTML. These extensions enforce a &quot;best practice&quot; by encouraging the assign parameter. This keeps your templates architecturally sound by handling logic within variables rather than force-outputting return values. Example: Handling User States      Welcome back, member!   By adopting the assign pattern for functions like validate_form or has_user_permission, the template remains a clean tool for presentation rather than a dumping ground for PHP results. 5. Modern Media and Social Mastery The NavigationExtension enables a template to act like a modern web application by parsing complex external data on the fly. The youtube_id modifier is particularly robust, handling standard watch URLs, short links (youtu.be), embeds, and even YouTube Shorts. Furthermore, the social_share function allows for the instantaneous generation of share links for a specific set of supported platforms: Twitter, Facebook, LinkedIn, Reddit, and Email. Combined with the slugify modifier—which transforms messy titles into SEO-friendly URL segments—developers can implement high-level marketing features with a single line of template code. 6. Zero-Risk Production Debugging Debugging a live production site is usually a high-stakes gamble. The RayDebugExtension eliminates this risk through its &quot;no-op&quot; design. It specifically integrates with the Ray desktop app; if the Ray debugger is missing or the logger is disabled, the tags do absolutely nothing. This allows you to leave tags like , , or  in your templates during the development cycle. You can push to production with confidence, knowing that these tags won&apos;t crash the site or leak sensitive debug information to the public browser if you forget to remove them. Conclusion: The Future of XOOPS Templating The XOOPS Smarty Extensions represent a significant evolution in how we approach the view layer. By abstracting version compatibility, automating security, and providing portable PHP utilities, they shift the developer’s focus from &quot;fixing templates&quot; to &quot;architecting experiences.&quot; This raises a fundamental question for the modern CMS architect: Should templates remain &quot;dumb&quot; containers for data, or is this &quot;Smarty&quot; evolution—where the view layer is empowered to secure, format, and debug itself—the necessary path forward for building sustainable, modern web applications? </description>
                <pubDate>Tue, 31 Mar 2026 20:10:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6110</guid>
            </item>
                    <item>
                <title>XOOPS Council 2026</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6109</link>
                <description>The XOOPS Community is fortunate to have many outstanding individuals who dedicate countless hours to helping XOOPS move forward. Their commitment is visible in the forums and reflected in the steady stream of new and updated modules, themes, fixes, and improvements.&lt;br&gt;&lt;br&gt;The key to XOOPS’ success is a strong team working together toward a common goal. To help with the governance of the project, in 2009 the XOOPS organization has added the XOOPS Council.&lt;br&gt;&lt;br&gt;As with many Open Source projects, XOOPS governance is based on meritocracy. In other words, the more a person contributes to the project and the community, the more weight their voice carries in helping shape its direction. The XOOPS Council is made up of individuals who have made tremendous contributions to XOOPS and who remain actively engaged in its ongoing development.&lt;br&gt;&lt;br&gt;This model encourages openness and participation while also ensuring that leadership is grounded in experience, commitment, and meaningful contribution. Anyone can help shape the future of XOOPS, but real influence comes through active and sustained involvement.&lt;br&gt; &lt;br&gt;Here is an update about the current XOOPS Council to lead and guide XOOPS forward (you can see their detailed bios below): &lt;br&gt;&lt;br&gt;• Modules Team: Gottfried Gabor (Goffy) from Austria. &lt;br&gt; &lt;br&gt;• Support Team: Christelle Gaulupeau (Cesagonchu) from France &lt;br&gt; &lt;br&gt;• Theme Design Team: Eren Yumak (Heyula) from Turkey&lt;br&gt; &lt;br&gt;• Core Team: Michael Beck (Mamba) currently from USA &lt;br&gt;&lt;br&gt;We are all looking forward to working together to keep moving XOOPS forward!</description>
                <pubDate>Tue, 31 Mar 2026 16:40:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6109</guid>
            </item>
                    <item>
                <title>XOOPS 4.0 – Vision, Direction, and Roadmap (Discussion)</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6108</link>
                <description>XOOPS 4.0 – Vision, Direction, and Roadmap (Discussion)&lt;br&gt;&lt;br&gt;Over the past months, a significant amount of work has been done to move XOOPS forward in a practical and future-proof way. I’d like to consolidate that into a clear starting point for discussion, feedback, and alignment.&lt;br&gt;&lt;br&gt;Please join us in this thread on XOOPS Forums!&lt;br&gt;&lt;br&gt;Core Principle: Evolution, not Revolution&lt;br&gt;&lt;br&gt;XOOPS 4.0 is designed with one key goal:&lt;br&gt;&lt;br&gt;Do not break existing modules and themes — extend them.&lt;br&gt;&lt;br&gt;• Existing modules will continue to work &lt;br&gt;• Developers can adopt new architecture incrementally &lt;br&gt;• No forced rewrites or disruptive migrations &lt;br&gt;&lt;br&gt;This follows XOOPS’ long-standing philosophy: stability + gradual evolution</description>
                <pubDate>Mon, 30 Mar 2026 15:30:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6108</guid>
            </item>
                    <item>
                <title>Coming soon: XOOPS 4.0 PageBuilder</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6107</link>
                <description>The &quot;No-Code&quot; Revolution: 5 Game-Changing Secrets of the XTF Page Builder  Join our Facebook group: https://www.facebook.com/groups/xoops   For years, web design has been haunted by a persistent shadow: the &quot;gap.&quot; It is that frustrating space between a visionary design mockup and the technical reality of a live web page. Historically, moving from concept to a functional layout required a tedious cycle of drafting, coding, and debugging. Creative intent was often diluted by technical constraints, and the final product rarely felt as polished as the original vision because developers were forced to work with &quot;placeholder&quot; boxes rather than the final, realistic content.  The coming soon XOOPS 4.0 PageBuilder  arrives as the definitive bridge across this gap. By shifting the focus from manual coding to visual assembly, it allows creators to manifest their ideas in real-time. It transforms the web development process from a static drafting phase into a dynamic, living environment where the final product is shaped as quickly as you can imagine it. You are no longer looking at abstractions; you are building the actual site from minute one. The philosophy behind this tool is simple yet transformative: Build beautiful pages with XTF themes and XMF widgets — no coding required. By combining pre-styled themes with a robust catalog of XMF widgets—including immersive heroes, feature grids, and complex pricing tables—the XTF Page Builder democratizes high-end web design, allowing strategists to focus on the story rather than the syntax. </description>
                <pubDate>Mon, 30 Mar 2026 06:50:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6107</guid>
            </item>
                    <item>
                <title>Beyond the Inspect Tool: How cssHolmes3 Provides X-Ray Vision for XOOPS Themes</title>
                <link>https://xoops.org/modules/publisher/item.php?itemid=6106</link>
                <description> Introduction: The &quot;Invisible&quot; Problem of Modern Theming  In modern CMS development, the browser’s &quot;Inspect Element&quot; tool is our first line of defense, but it’s often blind to the architectural intent of the page. As XOOPS themes have evolved into complex, structured systems involving the XOOPS Theme Framework (XTF) and XMF widgets, the boundary between a &quot;theme shell,&quot; a layout &quot;slot,&quot; and a &quot;widget&quot; has become invisible to standard tools. You see a sea of nested div tags, but you can’t easily tell which logic layer rendered them.  cssHolmes3 is the purpose-built diagnostic workbench for XOOPS (v2.5.12+) that bridges this gap. It doesn&apos;t just look at the DOM; it analyzes the underlying XTF logic to provide true &quot;X-ray vision.&quot; For a Senior Architect, this tool represents a shift from guessing at styles to auditing a structured system. Code: You can download it from https://github.com/mambax7/cssholmes   </description>
                <pubDate>Thu, 26 Mar 2026 21:20:00 +0000</pubDate>
                <guid>https://xoops.org/modules/publisher/item.php?itemid=6106</guid>
            </item>
            </channel>
</rss>
