Skip to main content

JRELEASER

Software Release Management for Joomla 5/6

Documentation

Changelog: v1.0.4 - December 27, 2025

CustomCart Changelog

Version 1.0.4

December 27, 2025
  • Addition product_id option for changelog shortcode to read URL from latest Release record
  • Addition output="releasedate" option for download shortcode
  • Fix CSS framework not inherited when navigating from Products to Releases view
  • Fix Back to Products button not using SEF links with proper Itemid
  • Fix Protected products blocking downloads for logged-in users with valid access levels
  • Fix Joomla access levels not enforced for non-protected product downloads

Version 1.0.3

December 16, 2025
  • Addition Add {jreleaser logged-in-user="show" copy="show"} shortcode to display user's master API key
  • Addition Add "Allow Guest Downloads" setting in Component Options
  • Fix Fix Releases menu routing losing style
  • Fix Fix "Cannot access offset of type array" error on dedicated Releases menu items
  • Fix Fix output="modified" shortcode option (uses release_created since releases are immutable)
  • Fix Fix logged-in-user shortcode not working without product_id
  • Fix Fix API key shortcode styling for better contrast on all themes
  • Fix Fix guest downloads for non-protected products (403 error)
  • Fix Use Route::_() for proper Joomla routing in Products and Releases templates

Version 1.0.2

December 15, 2025
  • Addition Full API key viewing in backend - keys are now displayed in full with copy-to-clipboard button
  • Addition Reset functionality for both master and site keys from the backend
  • Addition Filters on API Keys page (key type, user, status, sorting options)
  • Addition Download count sorting option on API Keys page
  • Removed Removed reference to non-existent modified column from releases query
  • Fix Fixed untranslated filter dropdown labels showing raw language constants
  • Fix Fixed download count sorting (was always sorting by date instead of download count)
  • Fix Fixed SQL error "Unknown column r.modified" in download button plugin
  • Fix Fixed user filter dropdown not populating with users

Version 1.0.1

December 5, 2025
  • Addition Additional download button shortcode options added
  • Addition New download statistics in Download Log page

Version 1.0.0

December 3, 2025
  • Addition JReleaser - First Release

1. Getting Started

What is JReleaser?

JReleaser is a complete software release management system for Joomla 5/6. It provides update server functionality, download management, API key authentication, and shortcode plugins for displaying releases on your site. Manage your Joomla extensions, distribute updates, and track downloads all from your Joomla admin.

System Requirements

  • Joomla: 5.1+ (Recommended: 5.4+ or 6+)
  • PHP: 8.1+ (Recommended: 8.4+)
  • MySQL: 5.7+ or MariaDB 10.3+
  • Web Server: Apache 2.4+ or Nginx 1.18+
  • PHP Extensions: cURL, JSON, SimpleXML, MySQLi/PDO, OpenSSL, mbstring, fileinfo, ZipArchive
  • SSL/HTTPS: Required for secure downloads

Package Contents

JReleaser consists of two extensions that install together as a single package:

  • Component (com_jreleaser): Admin dashboard for products, releases, API keys, downloads tracking, and all configuration settings
  • Content Plugin (plg_content_jreleaser): Shortcodes for download buttons, version display, and changelog rendering

Download the package file: pkg_jreleaser_v1.0.4.zip

Architecture Overview

JReleaser provides a complete release management workflow:

  • Products: Define your extensions with element name, type, and access controls
  • Releases: Upload ZIP files with automatic manifest parsing and hash generation
  • Update Server: Generate Joomla-compatible update XML feeds
  • API Keys: Master keys and child keys for protected downloads
  • Downloads: Track all downloads with user, IP, and timestamp logging
  • Shortcodes: Display download buttons, versions, and changelogs anywhere
  • Multi-Framework: 6 CSS framework templates (UIKit3, Bootstrap5, Tailwind, etc.)

Pre-Installation Checklist

Before installing JReleaser:

  • Verify Joomla 5.0+ is installed and running
  • Confirm PHP 8.1+ with all required extensions enabled
  • Backup your site and database
  • Prepare your extension ZIP files for upload
  • Optional: Host changelog XML files on GitHub or your server

2. Installation

Fresh Installation

Follow these steps for a fresh JReleaser installation:

  • Login to back-end area of your Joomla CMS site using a super administrator account
  • Navigate to System → Extensions → Install → Upload Package File
  • Drag and drop the file or click the green button to browse. The file name will be: pkg_jreleaser_v1.0.4.zip
  • After installation completes, you should see: "JReleaser Package has been successfully installed!"
  • The package automatically installs the component and content plugin

Post-Installation Verification

After installation, verify everything is configured correctly:

  • Go to System → Plugins and find "Content - JReleaser"
  • Ensure the plugin is Enabled
  • Go to Components → JReleaser to verify the component loads
  • Check the Setup guide in the component for detailed configuration instructions

File Storage

Release files are stored securely:

  • Directory: /media/com_jreleaser/releases/
  • Created automatically when uploading your first release
  • Files are served through PHP for access control

The component handles file storage automatically - no manual directory creation needed.

Uninstall JReleaser

To remove JReleaser completely:

  • Navigate to System → Manage → Extensions → Manage
  • Search for "JReleaser"
  • Select the checkbox next to the JReleaser Package
  • Click the dropdown in the Actions menu and choose Uninstall
  • This will remove both extensions automatically

Warning: Uninstalling will delete all products, releases, API keys, and database tables. Ensure you have a backup if needed.


3. Configuration

Accessing Settings

Access JReleaser settings:

  • Path 1: Components → JReleaser → Options button (toolbar)
  • Path 2: System → Global Configuration → JReleaser

The Setup guide in the component provides step-by-step instructions for your first release.

Creating Products

Products represent your Joomla extensions:

Title
Display name for your extension
Example: My Amazing Component
Element
Technical element name matching your manifest
Example: com_mycomponent, plg_system_myplugin
Type
Extension type: component, plugin, module, package, template, library, file
Default: component
Folder
For plugins only - the plugin group
Example: system, content, authentication
Client
Site or Administrator (for modules)
Default: site
Access
Joomla view access level (Public, Registered, Special, etc.)
Default: Public
Protected
Require API key for guest/remote downloads
Default: No

Uploading Releases

Use Quick Upload for the fastest way to add releases:

  • Go to Components → JReleaser → Quick Upload
  • Select the product from the dropdown
  • Upload your extension ZIP file
  • The system automatically extracts:
    • Version from manifest
    • Release date (creationDate)
    • File size
    • SHA256/SHA384/SHA512 checksums
  • Optionally add changelog URL and info URL
  • Save the release

Access Control

JReleaser uses Joomla's standard access levels combined with optional protected product settings:

Joomla Access Levels:

  • Public - Anyone can view and download (if guest downloads enabled)
  • Registered - Only logged-in users can view and download
  • Special - Only users with Author, Editor, or Publisher access
  • Custom levels - Any custom access levels you've created

Protected Products:

User TypeHas AccessProtected=NoProtected=Yes
GuestYes (Public)Can downloadNeeds API key
Logged-inYesCan downloadCan download
Any userNoAccess deniedAccess denied

Update Server Setup

Add the update server URL to your extension's manifest:

<updateservers>
    <server type="extension" name="Your Extension">
        https://yoursite.com/updates/your-extension?format=xml
    </server>
</updateservers>

The URL format is: /updates/{product-alias}?format=xml

For protected products, add the dlid tag:

<dlid prefix="dlid=" suffix=""/>

This allows Joomla to append the API key when checking for updates.

Creating Menu Items

Create frontend menu items for your releases:

  • Go to Menus → [Your Menu] → New
  • Select JReleaser → Products for a product listing
  • Or select JReleaser → Releases for a specific product's releases
  • Configure the Style tab to choose your CSS framework:
    • HTML5 (minimal)
    • Bootstrap 5
    • UIKit 3
    • Foundation 6
    • Tailwind CSS 4
    • Pico CSS 2

Note: The Releases view inherits styling from the parent Products menu item automatically.


4. Features & Usage

Download Button Shortcode

The JReleaser content plugin provides shortcodes for displaying download buttons and information:

Basic Usage:

This displays a download button for the latest release of product ID 1.

Shortcode Options

Button Options:

button="large" or button="small"
Change button size
text="Custom Text"
Custom button text
version="hide"
Hide version from button text
metatext="on"
Show "one-time link" notice below button
link="raw"
Return just the download URL (for custom buttons)

Output Options (no button):

output="version"
Returns only the version number
output="created"
Returns the release creation date
output="releasedate"
Returns the manifest creationDate
output="maturity"
Returns maturity level (stable, rc, beta, alpha, dev)

Info with Button:

showversion="on"
Shows version below button
showcreated="on"
Shows release date below button

Changelog Shortcode

Display formatted changelogs from XML files:

Using Product ID (Recommended):

{jreleaser_changelog product_id="1"}

This reads the changelog URL from the latest release record.

Using Direct URL:

{jreleaser_changelog link="https://raw.githubusercontent.com/joshgilson/MD-Changelogs/main/md_jreleaser_changelog.xml"}
will look like: Click Here To View Changelog

Options:

version="on"
Returns only "v1.2.3" (with prefix)
version="raw"
Returns only "1.2.3" (no prefix)
date="on"
Returns only the changelog date
latest="on"
Shows only the latest entry instead of full history

User API Key Shortcode

Display the logged-in user's API key:

{jreleaser logged-in-user="show" copy="show"}

This displays the user's master API key with a copy-to-clipboard button.

If the user doesn't have an API key yet, one is automatically created.

API Keys Management

JReleaser provides two types of API keys:

Master Keys:

  • One per user (auto-generated on first access)
  • Used for personal downloads
  • Displayed via the shortcode or frontend API Keys page

Child Keys:

  • Created by users from their master key
  • Can be associated with specific websites
  • Separate download tracking per key
  • Can be enabled/disabled individually

Manage keys at: Components → JReleaser → Keys

Download Tracking

Track all downloads at: Components → JReleaser → Downloads

Tracked Information:

  • Release and product details
  • User ID (if logged in)
  • API key used (if applicable)
  • IP address
  • User agent
  • Website (for remote downloads)
  • Local vs Remote flag
  • Timestamp

Filtering Options:

  • By product
  • By release
  • By date range
  • Search by user or IP

5. Troubleshooting / FAQs

Shortcode not displaying

Checklist:

  • Verify Content plugin is enabled: System → Plugins → Content - JReleaser
  • Check that product_id is correct and product is published
  • Verify the product has at least one published release
  • Check user has access level permission for the product
  • Clear Joomla cache: System → Clear Cache

Access denied when downloading

Check Access Levels:

  • Verify the product's Access setting matches user permissions
  • For Protected products, guests need an API key
  • Logged-in users with correct access level can always download

Check Component Options:

  • Guest Downloads setting: Components → JReleaser → Options
  • If disabled, guests cannot download even Public products

Styling not applied to frontend views

Check Menu Item Configuration:

  • Ensure you have a Products menu item with Style set
  • Releases view inherits styling from parent Products menu
  • If no style selected, defaults to HTML5 (minimal styling)

Available Frameworks:

  • HTML5 - Clean, minimal markup
  • Bootstrap 5 - Standard Joomla styling
  • UIKit 3 - YOOtheme Pro compatible
  • Foundation 6
  • Tailwind CSS 4
  • Pico CSS 2

Updates not showing in Joomla

Verify Update Server URL:

  • URL format: https://yoursite.com/updates/{alias}?format=xml
  • Test by visiting the URL directly in your browser
  • Should display XML with your releases

Check Extension Manifest:

  • Ensure <updateservers> section is in manifest
  • For protected products, add <dlid prefix="dlid=" suffix=""/>
  • Enter API key in: System → Update → Update Sites

Clear Update Cache:

  • Go to System → Update → Update Sites
  • Select your extension and click Rebuild

Changelog not loading

Check Changelog URL:

  • Using product_id? Verify the release has a changelog_url set
  • Using direct link? Test the URL in your browser
  • Ensure the XML is valid and accessible

XML Format:

<changelogs>
    <changelog>
        <version>1.0.0</version>
        <date>2025-01-01</date>
        <addition><item>New feature</item></addition>
        <fix><item>Bug fix</item></fix>
    </changelog>
</changelogs>

Supported Tags: addition, change, fix, security, note, remove/removed/deleted


Josh Gilson

Need Help?

Something not working or quick question?
Email me: This email address is being protected from spambots. You need JavaScript enabled to view it.

Join our community for quick help on our
Discord Server