ToDo R6.0


R 6.0

Roadmap
dev repo [bitbucket.org]
ChangeLog


Main Focus: UTF-8 support and migration


R6.0 is more or less R5.5 with Unicode support. Please look here for open issues from R5.5 .

1. PHP

1.1. PHP 7.4

  1. https://secure.php.net/manual/en/migration74.php
  2. "Trying to access array offset on value of type ..." warning for accessing null/bool/int/float/resource as if it were an array -> bugs:553

1.2. PHP 8.0

  1. https://stitcher.io/blog/new-in-php-8
  2. https://github.com/php/php-src[...]8.0.0beta4/UPGRADING

2. Features

3. Core

  1. facilitate language codes like pt-br or zh-tw, currently it accepts only two-letter ISO language code DONE
  2. localize date formats
  3. set return type declarations : (array | bool | float | int | mixed | string | void | ... )
  4. fix client side JS input validation patterns, see below under testing
    1. login and registration action
    2. new, clone and rename handler
  5. Replace all HTML-Entities except HTML special chars
    1. nbsp; — to indent or add extra spacing to a paragraph, sentence, or another portion, better using CSS instead of multiple non-breaking spaces.
  6. add option to disable hit counter
  7. move link and notifications functions in own class
    • $this->msg->notify_user()
    • $this->ref->link()

4. Installer

  1. define('CACHE_SESSION_DIR', '/tmp'); is defined in constant.php, and currently not set via the installer
    1. use ini_get('session.save_path') as indicator, BUT we do not use the PHP build in session! -> write value, its a nuisance that the user currently has to do this on his own
  2. offer to create the recovery_password within the install process

5. Handler

  • increase the default size of the comment textarea in the default theme
  • add option to send a copy of the personal message also to the sender
  • edit: set custom textarea size (user settings/JS)
  • properties: add page tag below page title: Tag: Cluster/Page – looks ugly
  • wordbreak, how to break lines of Chinese, Japanese, or Korean
    • line-break: strict;
      white-space: nowrap;
      word-break: keep-all; 

6. Action

  • registration: add option to enforce user name patterns
  • registration: add white and blacklist for allowed email domains

7. Formatter

  • str_replace("\xc2\xa0", " ", $string);
  • removes intentional left empty lines inside info formatter
  • parse also anchor with dash, e.g. tag#one-two
  • ((../ Go Back)) goes back two levels, but should go to parent page only
  • interwiki links were not tracked
  • <ignore> tags must be removed for diff-mode 0
    • check output other than show handler, the replace should be done in one place
  • relative links were not parsed in the context of the page they are included, what is the default behavior?
  • re-parsing all pages and links may result in wrong toc references, when the included page gets parsed after the page which includes them
    • HOTFIX: save all included pages with wrong toc reference again, this will updated body_toc

8. Cache

  • set new default cache_ttl values in config default and description in documentation
    • 600 = 10 minutes
    • 1200 = 20 minutes
    • 3600 = 1 hours
    • 7200 = 2 hours
    • 18000 seconds = 5 hours
    • 86400 seconds = 24 hours
    • 2678400 seconds = 31 days

Evaluate page cache

SELECT cache_lang, method, count(cache_id) AS n 
FROM `prefix_cache` 
GROUP BY cache_lang, method 
ORDER BY `cache_lang`, n DESC, method;

9. Admin Panel

  • support templates
  • resync links excludes pages from owner System, we may remove this restriction

10. Database


11. WikiEdit

  • add Unicode support

12. Libs

  1. php-diff successor
    1. https://github.com/jfcherng/php-diff
    2. https://github.com/JBlond/php-diff <— SWITCHED TO 
    3. https://github.com/sebastianbergmann/diff

13. Refactoring


14. Themes

  • CSS: [dir=rtl]
  • defer scripts defer></script>
  • default theme
    • background body: #ebeef2

15. Ideas

  • add action with conditional redirect by browser language to pre-selected pages, e.g. ['fr'] --> "/Doc/Français"
  • moderation/remove/rename of sub pages without modifying the parent cluster
  • add extension for https://github.com/mermaid-js/mermaid

16. Documentation

  • add example for resizing image from a external source ((http://example.com/image.png width=500 align=center))
    • height, width
    • align=[ left | right | center ]
  • write your own action
  • write your own formatter
  • write your own theme
  • improve translation

17. Feedback


18. Testing


HTML5 pattern

Unable to check <input pattern='[\p{L}\p{Nd}\-\.]+'> because the pattern is not a valid regexp: invalid identity escape in regular expression

JavaScript does not support the construct \p{}.

Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf eval blockiert ("script-src"). 5 autocomplete.js:280:2

18.1. Test cases

-> Test cases

18.2. Debug

declare(strict_types=1);