Feature Wiki

Information about planned and released features

Tabs

Convert Internal Links to Permalinks if Possible

1 Initial Problem

When ILIAS users copy paste URLs from ILIAS they tend to obtain them from the browsers address bar. However these URLs are prone to invalidation with later code changes (e.g. minor/major updates of ILIAS, or custom patches). They also don't survive a login-process: Even if the link is still valid, a user will be redirected to their individual start page instead if they need to login first.

Many users  learn the hard way that they must obtain stable URLs from the perma-link box.

Additionally the perma-link box is visual clutter. Also I claim that this concept is very unusual for web applications - most web applications don't have a differentiation between permalinks and the internal links of the web application. This aspect adds to the learning curve or 'perceived complexity' of ILIAS.

1.1 About cmdNodes and Control Structure

The control structure is a lookup table with randomly generated keys (=cmdNode-values). These keys are used to encode arbitrarily complex path information, which might otherwise be too long for URLs.

Most URLs contain a 'cmdNode'-Parameter which changes upon regeneration of the so called 'control structure', if the programme code has changed. A code change in one php-file usually invalidates most (all?) cmdNodes at once.

2 Conceptual Summary

This request is composed of two complementary proposals:

  1. Internal links should be automatically converted into perma-links, if a perma-link exists
    • e.g. a wiki page linking another wiki page should do this via the perma-link
    • This process should be centralized and automatic, e.g. via some kind of reverse lookup
  2. CmdNodes should be stable, if possible
    • The algorithm to recalculate cmdNode-values should always reusepreviously existing keys, if the full code-path information is unchanged.
    • Therefore a cmdNode will only change if the full code-path information of some "page" is changed, e.g. due to refactoring. But it will not change by just some random change in other components.
Both proposals are complementary, because
  1. perma-links can be made to survive extensive refactoring of components
  2. not every page has a perma-link yet - and most likely it will always be like that

2.1 Optional: Fate of the Perma-Link Box

The Perma-Link box becomes redundant. This request therefore proposes to remove the Perma-Link box in the footer. It can however stay in the Info-Page of objects.

This aspect is however not substantial to the request as a whole and can be discussed!

2.2 Bonus Goal: Universal cmdNodes

A bonus goal would be to make cmdNodes compatible across different ILIAS installations. This would require reproducible generation of cmdNodes. I.e. some full code-path should always lead to exactly the same cmdNode in the control structure.

UUIDs are commonly used for goals like this. With base64-encoding this can be represented with 22 characters in an URL friendly way. This is obviously longer than the current 8 characters of cmdNodes.

A typical URL is already around 173 characters long and would increase by 14 characters (=8%). Note that URLs should be shorter than approx. 2000 characters to not cause trouble with browsers/servers/search engines/etc.

  • Example (173 characters): https://docu.ilias.de/ilias.php?ref_id=1357&page=Convert_Internal_Links_to_Permalinks_if_Possible&cmd=edit&cmdClass=ilwikipagegui&cmdNode=g9:g8:ge&baseClass=ilwikihandlergui

3 User Interface Modifications

3.1 List of Affected Views

All pages are affected - but the changes are quite subtle.

3.2 User Interface Details

  • URLs of internal links will change
  • Biggest change (optional): The Perma-Link will disappear from the footer, because the perma-link will already be in the address bar of the browser

3.3 New User Interface Concepts

None

4 Technical Information

{The maintainer has to provide necessary technical information, e.g. dependencies on other ILIAS components, necessary modifications in general services/architecture, potential security or performance issues.}

5 Contact

  • Author of the Request: Kiegel, Colin [kiegel]
  • Maintainer: {Please add your name before applying for an initial workshop or a Jour Fixe meeting.}
  • Implementation of the feature is done by: {The maintainer must add the name of the implementing developer.}

6 Funding

If you are interest in funding this feature, please add your name and institution to this list.

7 Discussion

Killing, Alexander [alex], 17 Sep 2018: Wrt the internal links: this would fall under my maintainership and I would support this. If we get solid funding we could/should revise the internal links concepts in general. The cmdNode requirements would be a separate request imo. Making cmdNodes "fix" would be possible I think. The discussion could even end in revising the whole URL routing in ILIAS. I think it may be time to try to tackle this.

8 Implementation

{The maintainer has to give a description of the final implementation and add screenshots if possible.}

Test Cases

Test cases completed at {date} by {user}

  • {Test case number linked to Testrail} : {test case title}

Approval

Approved at {date} by {user}.

Last edited: 16. Oct 2018, 12:10, Kiegel, Colin [kiegel]