Joomla Documenter Manual

Manual Index

JUGL Presentation

Preface

This article arose from a presentation at the Joomla! User Group London on 20 May 2025. For preparation I made a series of screen shots with minimal notes, which are expanded a little here.

In the beginning...

I began contributing to Joomla! documentation in 2020 when I revised all of the Help screens for Joomla 4 (and later 5). In the process I became very familiar with the MediaWiki installation that powers docs.joomla.org. This is the Home page:

docs joomla org

  • I am a beginner: which link first?
  • Beginners: Quite long and mostly links to other places
  • Beginners Tutorials: Links to resources, many out of date
  • Tasks: Where to start?

My Lists

Being unable to easily re-find articles after a first visit I started making categorised lists:

joomla tutorials project

There are category lists for this sort of thing but they include all language versions and are no more helpful than the Home page. So my lists are a personally selected list of useful articles.

Translation markup:

MediaWiki uses a version of Markdown, which is supposed to make text clear and simple. However it provides for translation markup, which makes an edit page cluttered and difficult to use for the inexperienced:

edit articles

Conclusion

Something better was needed! I decided to build a custom Joomla! component, something easy to use, easy to update and easy to translate: Jdocmanual.

Inspiration

I took inspiration from other software documentation projects that typically have an Index of Articles to the left, Article text in the centre and article Contents to the right. Some examples:

mdn web docs

bootstrap 5.3

Compare with 5.1.3: the formerly collapsible index is now expanded.

Docusaurus

I was not aware of Docusaurus at the outset. The core developers had started using it at the same time as I started Jdocmanual.

manual joomla org

I tried Docusaurus and was not satisfied with it. Amongst other problems there was no obvious provision for translation other than vague references to Crowdin, which I tried and found wanting.

Jdocmanual

Jdocmanual evolved from the initial idea and went through several major changes of approach. This is the current incarnation:

jdocmanual live site

Index of Articles to the left, Article content in the centre and article Contents to the right, just like the doctor ordered. The initial idea was to use Jdocmanual as an Administrator component for backend users. The frontend usage came later as an option.

The Manuals

The original documentation attempted to separate users into Beginners, Administrators, Developers and Core Developers. Some have suggested there should be other groups such as Template Developers and Site Builders. I chose to organise articles by the following groups:

list of manuals

  • The Joomla! User Manual contains articles requiring no knowledge of HTML, CSS or JavaScript.
  • The Joomla! Help Screens are the pages delivered in response to selection of an Administrator Toolbar Help button. They are defined in the code.
  • The Joomla! Developer Manual contains articles requiring knowledge of HTML, CSS or JavaScript. This initially used the same MediaWiki sources as manual.joomla.org (Docusaurus) but my intention is to move the articles to...
  • The Joomla! Programmers Documentation This is an import of the docs pages from manual.joomla.org that allows Jdocmanual to keep everything together.
  • The Joomla Documenter Manual contains articles on how to create and maintain documentation.

The Languages

The User, Help and Developer manuals have all been translated into a selection of languages using AI (more on that later). The Page language and the Index language can be separately selected:

list of languages

If an article is not available in the selected language the English version is delivered instead.

Search

The search feature is very helpful for answering Forum questions. I often stumble upon articles I had forgotten existed!

search for this and that

Help Screens

joomla help screens

Joomla! Help screens follow a common pattern described in the Documenter articles. They use a lot of chunks, some from Joomla 3 documentation, and many links to here, there and everywhere. This is difficult to maintain and translate! I decided the Help pages needed to be simplified for delivery on another platform. So I made sections such Toolbar and List descriptions into Common Elements so that individual Help pages could focus on the important page elements.

Jdocmanual Data

The source text for Jdocmanual is stored in files in GitHub flavoured Markdown. Jdocmanual contains tools to edit and otherwise manage source content - more on that under Stashes later. However, I now prefer to use VSCode or VSCodium:

help start here in markdown

  • Markdown: simple, clean text with a few markup symbols.
  • The top HTML comment contains a link key and the real title.
  • The image link may look strange! It is done this way to allow images to be saved before the text is ready to use them. In Vscode you can type in ../../../and then select from a list.

Preview

To see what it looks like so far (on Mac: Shift + cmd + V):

help start here preview

Make a few more changes and switch back to the Preview. Easy!

Articles Index

Articles stored in Markdown format are converted to HTML and stored in a Joomla database table using a build process that also generates a suite of responsive images from the single image stored in the source. The build process for Help pages also creates article versions for the Help proxy server. The list of articles to be included in a manual is kept in an articles-index.txt file in the English section of the source:

help articles index

  • The order does not matter but it is convenient to use the same order as the menu.
  • Each language is a separate git repository.

Menu Index

At the outset I decided not to use Joomla menus: too many articles in too many languages.

help menu index

  • The menus are simple text files easily used in scripting.
  • The menu order is the item order in the menu-index.txt file.
  • There is a simple method to control nesting. Originally, only one nesting level was used. More nesting leads to accessibility problems.
  • The menu-index.txt file in the English manual is used to build menus in other languages.

Commit and Push

Changes made to sources locally can be immediately built to see how they look in Jdocmanual. When I am happy, I commit the changes to the GitHub repository (one for each Language in each Manual).

git commit and push

The changes are then available to Pull in the public site (jdocmanual.org).

Jdocmanual Administration

Manual View

The Administrator, Manual view is similar to the Site view:

jdocmanual administrator manual view

The extra Toolbar button allows the Administrator menu to toggle on/off.

Sources View

The Sources view shows the list of Manuals available and the buttons to build a Manual in a selected language. Building an entire manual in one language can take 5 minutes or more. Building a single article takes a few seconds. This screenshot shows my localhost installation:

jdocmanual administrator sources view

This screenshot shows my live site with an extra column of buttons to Pull any changes from GitHub. So the normal procedure is to Pull then Build.

jdocmanual live site administrator sources view

  • There is a CLI interface so building can be accomplished from the command line.

Article Stashes View

The original idea was to manage all contributions within Jdocmanual. So custom Groups can be configured for the equivalent of Editor and Publisher. Either way, the process starts with a user making a personal Stash copy of an article to work on. This is the list of articles, one with a Stash already created.

article stashes list

  • Some of the Tabs are for Publisher only...

Article Edit Stash

And this is the Stash view with the Edit tab selected:

article edit stash

The additional tabs show other parts of the Stash preparation process:

  • Details: all read only data showing article details.
  • Source: the original source for reference.
  • Diff: the diff between the Stash and Source to show what has changed.
  • Preview: a preview of the Stash version.
  • Comments: for the Pull request and Publisher.

I have stopped using this method as it does not Push to GitHub and can be confusing. Also, I did not want to manage Joomla users.

Screenshots with Playwright

To make screenshots for Help pages I make bilingual Joomla installations with a number of settings designed to illustrate the features of each Help page. I then use Playwright to capture the screenshots. It takes a few minutes to capture all 469 screenshots. That can be done before any translations are available.

playwright files in vscode

  • The functions beforeAll, beforeEach and afterEach set up and tear down individual tests.
  • A single test can be run manually for debugging purposes.
  • Debugging can be performed with Browser activation so the problem points can be identified.
  • The screenshots are usually collected using a console command.

Translation with Openai

Three of the Manuals have been translated into 8 langues using Open AI. Each one costs a few dollars and I pay for that myself. I could translate the Joomla! Programmers Documentation but was waiting for it to be more nearly finished! This is a fragment of my stand-alone PHP translation script.

openai files in vscode

This script is not published!

The Help Proxy Server

The configuration.php file contains the url of the Help server. It is easy to change it to point at the Jdocmanual proxy to get its Help pages rather than those coming from help.joomla.org.

joomla help window

Questions

  • How am I doing for time?

Some Statistics

Number of articles in each manual:

Manual Count
User 222
Help 279
Developer 39
Programmer 275
Docs 32
Total 857

With translations there are currently a total of 5175 articles.