Skip to content

Conversation

@ceford
Copy link
Contributor

@ceford ceford commented Oct 23, 2025

Pull Request for Issue # .

No issue in the tracker but the problematic list of Help pages has been mentioned in discussions.

Summary of Changes

This PR is for a replacement of the backend list of Help files accessed via Help → Start Here. The current page presents a list of 198 items sorted into alphabet order of the language selected at login. It is very difficult to use! Each time the page is reloaded the displayed item is Start Here. Also, it is generated by a script that fetches all the pages from docs.joomla.org that are categorised as Help5 or Help6 or ... but only in selected languages.

The proposed replacement gives the list of Help pages a similar structure to the Atum side menu. The changes in brief:

  1. The Help page menu source is a handcrafted php array (toc-src.php) in the tmpl folder.
  2. The menu build code has been moved from the Model to the tmpl folder (toc-build.php).
  3. Unused code has been removed from the Model.
  4. Unused code has been removed from the HtmlView.
  5. The unused administrator/help/en-GB/toc.json tree has been deleted.
  6. The now unused build/helpTOC.php has been deleted.
  7. There are additional strings in com_admin.ini
  8. Changes to admin-help.es6.js are significant.
  9. There is styling added in default.php with addInlineStyle() to distinguish the Help menu from the Atum menu.
  10. The last page displayed is recorded in local storage and displayed when the page is reloaded.

There is a potential problem: initialisation of the Help menu requires a delay or it is left inoperative. That needs testing on different platforms.

Testing Instructions

Testing needs a development installation.

  • Apply the patch and use npm run build:js and npm run build:css
  • In the backend visit Help → Start Here / Joomla! Help

Edit: removed instruction to edit configuration.php - the Help proxy has been fixed.

Actual result BEFORE applying this Pull Request

The current long alphabetic list of Help pages is difficult to use.

Expected result AFTER applying this Pull Request

The list of help pages is structured with a Metismenu. Screenshot to follow.

Link to documentations

Please select:

  • Documentation link for docs.joomla.org:

  • [ x] No documentation changes for docs.joomla.org needed

  • Pull Request link for manual.joomla.org:

  • [x ] No documentation changes for manual.joomla.org needed

@joomla-cms-bot joomla-cms-bot added Language Change This is for Translators NPM Resource Changed This Pull Request can't be tested by Patchtester PR-6.1-dev labels Oct 23, 2025
@brianteeman
Copy link
Contributor

Looks good

@brianteeman
Copy link
Contributor

When the menu item wraps to two lines I find the center alignment visually awkward but that might just be me

image

@richard67 richard67 changed the title New backend Joomla! Help page [6.1] New backend Joomla! Help page Oct 23, 2025
@ceford
Copy link
Contributor Author

ceford commented Oct 23, 2025

It works but I am having second thoughts about how I have coded this feature. Perhaps it should be considered a draft for now. I will get on to the points raised by @brianteeman - thank you. Meanwhile, here is a screenshot:

image

@ceford
Copy link
Contributor Author

ceford commented Oct 23, 2025

@brianteeman Should I make the copyright 2026 on the assumption it will be next year before it appears?

@brianteeman
Copy link
Contributor

@brianteeman Should I make the copyright 2026 on the assumption it will be next year before it appears?

no - you wrote it in 2025 and it will hopefully be merged on github in 2025

@C-Lodder
Copy link
Member

C-Lodder commented Oct 24, 2025

You could remove the need for the wait() delays if you wanted to.
Will leave this code here incase you want to use it.

document.addEventListener("DOMContentLoaded", function (event) {
  new MetisMenu('#helpmenu', {
    toggle: true
  });

  const helpIndex = document.getElementById('helpmenu');
  if (helpIndex) {
    helpIndex.querySelectorAll('a:not(.has-arrow)').forEach(element => element.addEventListener('click', () => {
      window.scroll(0, 0);
      // Save clicked link data-id
      const id = element.dataset.id;
      if (id) {
        localStorage.setItem('helpIndex.lastClick', id);
      }
    }));
  }

  // Async restore function
  function restoreMenu() {
    let lastClick = localStorage.getItem('helpIndex.lastClick');
    if (!lastClick) {
      lastClick = 'start-here';
    }

    const selectedLink = helpIndex.querySelector(`a[data-id="${lastClick}"]`);
    if (!selectedLink) return;

    // Collect parent list items top-down
    const lists = [];
    let parentLi = selectedLink.closest('li');
    while (parentLi && parentLi !== helpIndex) {
      const parentUl = parentLi.parentElement;
      const parentLiOfUl = parentUl.closest('li');
      if (parentLiOfUl) {
        const li = parentLiOfUl
        if (li) lists.unshift(li);
      }
      parentLi = parentLiOfUl;
    }

    // Trigger clicks in sequence with a delay
    for (const li of lists) {
      li.classList.add('mm-active');
      li.querySelector('ul').classList.add('mm-show');
      li.querySelector('a').setAttribute('aria-expanded', true);
    }

    // Optional: highlight selected link
    selectedLink.classList.add('active');

    // Ensure it's visible and then "click" it
    //selectedLink.scrollIntoView({ behavior: 'smooth', block: 'start' });

    // Give the submenu a moment to fully render before clicking
    selectedLink.click();
  }

  // Run restore after MetisMenu setup delay
  restoreMenu()
});

@ceford
Copy link
Contributor Author

ceford commented Oct 24, 2025

@C-Lodder only just seen your suggestion - I will give it a try.

@ceford
Copy link
Contributor Author

ceford commented Oct 24, 2025

@C-Lodder I implemented you suggestion. Next problem: In narrow screens the Help menu starts open and it takes two clicks to close it. I want it to start with the Help menu closed. Also, in narrow screen mode I want the Help menu to close after selecting an item. I am looking in to how to do this - do you have any suggestions?

@ceford
Copy link
Contributor Author

ceford commented Oct 24, 2025

I am happy! This PR is ready for testing.

@richard67
Copy link
Member

@ceford What about these 2 unresolved review comments by @brianteeman ?

If they are resolved, please use the button below the comment on GitHub to mark it as resolved.

With the other 2 about the copyright year I've just done that.

Thanks in advance.

@ceford
Copy link
Contributor Author

ceford commented Oct 24, 2025

@ceford What about these 2 unresolved review comments by @brianteeman ?

* [[6.1] New backend Joomla! Help page #46355 (comment)](https://github.com/joomla/joomla-cms/pull/46355#discussion_r2454333605)

* [[6.1] New backend Joomla! Help page #46355 (comment)](https://github.com/joomla/joomla-cms/pull/46355#discussion_r2454339366)

If they are resolved, please use the button below the comment on GitHub to mark it as resolved.

With the other 2 about the copyright year I've just done that.

Thanks in advance.

Done that! As I am a rare contributor I did not realised that I needed to resolve comments. I also addressed the alignment problem mentioned by Brian

@richard67
Copy link
Member

@ceford Thanks. It is not necessarily the author of a PR who has to resolve review comments, it can also be done by the initial reviewer or by a maintainer. But at the end it is good to have them resolved, otherwise GitHub shows a message about unresolved comments which might discourage testers because they might think there will be more changes coming.

@ceford
Copy link
Contributor Author

ceford commented Oct 25, 2025

I adjusted the padding. Current rendering:

image

I have asked Harald to adjust the Help proxy server so it delivers pages for J6.1 and I have put in a PR to adjust the delivered page Toc to no more than 50% width, needed for narrow screens. Both pending.

@brianteeman
Copy link
Contributor

can you look at the background please

your menu

image

main menu

image

@ceford
Copy link
Contributor Author

ceford commented Oct 26, 2025

can you look at the background please

I have noticed another background colour problem too. I am working on it.

@richard67
Copy link
Member

@ceford Could you fix the CSS code style issue reported here by the linter? https://github.com/joomla/joomla-cms/actions/runs/18806977533/job/53662595619?pr=46355

build/media_source/com_admin/css/admin-help.css
  62:3  ✖  Expected "font-weight" to come before "color"  order/properties-order

✖ 1 problem (1 error, 0 warnings)
  1 error potentially fixable with the "--fix" option.

@richard67
Copy link
Member

@ceford
Copy link
Contributor Author

ceford commented Oct 26, 2025

@ceford Now we have CSS and PHP code style errors. Please check https://github.com/joomla/joomla-cms/actions/runs/18822216136/job/53699529076?pr=46355 and https://github.com/joomla/joomla-cms/actions/runs/18822216136/job/53699495439?pr=46355 .

I am still working on the css and js, trying to get the balance between appearance and action just right. I will comment when I think I have it right and the automatic tests are passing.

@ceford
Copy link
Contributor Author

ceford commented Oct 27, 2025

@richard67 could I ask for some guidance on this problem:

1 | WARNING | A file should declare new symbols (classes, functions,
| | constants, etc.) and cause no other side effects, or it should
| | execute logic with side effects, but should not do both. The
| | first symbol is defined on line 30 and the first side effect is
| | on line 19.

Line 19 includes a PHP array named $menu. On line 30 that array is passed to a function that calls itself recursively. The code works so I don't know exactly what to do.

The css problems will be fixed on the next submit. Is there documentation on how to run these tests before I submit a PR?

@richard67
Copy link
Member

@ceford The PHPCS issue could possibly be fixed by moving the // phpcs:enable PSR1.Files.SideEffects from line 16 to below line 19, so you get:

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;

// Include the $menu as a php array.
include __DIR__ . '/toc-src.php';
// phpcs:enable PSR1.Files.SideEffects

The commands to execute the code style checks can be found in file https://github.com/joomla/joomla-cms/blob/6.1-dev/.github/workflows/ci.yml.

For the 2 PHP CS checks:

php-cs-fixer fix -vvv --dry-run --diff
phpcs --extensions=php -p --standard=ruleset.xml .

For CSS and JS CS checks:

npm run lint:css
npm run lint:js

For the CSS linter you can add -- --fix to the command line, then it will fix what can be fixed automatically:

npm run lint:css -- --fix

I hope this helps.

@richard67
Copy link
Member

richard67 commented Oct 27, 2025

@ceford It seems my suggestion for the PHP CS was not sufficient. Maybe it works if you move the // phpcs:enable PSR1.Files.SideEffects further down to below line 27? If that also doesn't help, remove that line // phpcs:enable PSR1.Files.SideEffects completely.

@ceford
Copy link
Contributor Author

ceford commented Oct 27, 2025

I recoded toc-build.php with some help from ChateGPT. So it looks like we are ready for testing!

@brianteeman
Copy link
Contributor

Have you tested in non english languages?

I tried dutch and although the menu is in dutch the content is all in english.

@ceford
Copy link
Contributor Author

ceford commented Oct 28, 2025

Have you tested in non english languages?

I tried dutch and although the menu is in dutch the content is all in english.

Before you asked - No, but I was not expecting a problem as the logic is based on en-GB but the menu output uses the appropriate language file. After you asked - Yes, and it works as I expected. The content being in English is the default behaviour of the proxy - if a translation is not available the English version is delivered.

image

@ceford
Copy link
Contributor Author

ceford commented Oct 28, 2025

Have you tested in non english languages?

I tried dutch and although the menu is in dutch the content is all in english.

Can you give me a specific page to look at? Anything that appears in the iframe comes from the proxy help server. It should not be affected by the help menu.

@brianteeman
Copy link
Contributor

Sorry my bad. The content I checked was not translated

@brianteeman
Copy link
Contributor

When the sidebar main menu is collapsed it messes with the background on the help menu

chrome_UHKXMIokP3.mp4

@ceford
Copy link
Contributor Author

ceford commented Oct 28, 2025

Not sure what went wrong - I tested collapsing the sidebar quite often. There is one problem I have not addressed: on change of viewport the page needs a manual reload. Not sure what I should do about that!

Bit the bullet and did it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Language Change This is for Translators NPM Resource Changed This Pull Request can't be tested by Patchtester PR-6.1-dev

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants