WackoWiki: ToDo R6.1 πŸ“Œ

https://wackowiki.org/doc     Version: 341 (17.04.2024 17:32)

ToDo R6.1 πŸ“Œ


R 6.1

Roadmap[link1]
dev repo [bitbucket.org][link2]
ChangeLog[link3]
https://github.com/WackoWiki/w[...]pare/6.1.25...master[link4] - Diff since last release

Main Focus: Implement new PHP 8 functionality and improve GUI usability.

Contributions are encouraged.

1. PHP


  1. https://php.watch/articles/php-regex-readability


1.1. PHP 8.3

  1. https://stitcher.io/blog/new-in-php-83
  2. https://php.watch/versions/8.3
  3. https://github.com/php/php-src/blob/php-8.3.0/UPGRADING
  4. https://github.com/rectorphp/r[...]es_overview.md#php83[link5]

Creation of dynamic property Wacko::$mathjax is deprecated in /formatter/highlight/math.php on line 15	

1.2. PHP 8.4

  1. https://php.watch/versions/8.4

2. Features

3. Core

  1. https://developer.mozilla.org/[...]eaders/Cache-Control[link9]
  2. replace col attribute in input and textarea element with CSS percent width and max-width for mobile usage
  3. add max page size[link12] value (2048) for edit handler and a recomended value, show warning text with suggestions if that value is reached
  4. declared visibility on all properties, constants and methods
  5. fix SQL Strict mode issues opportunistically (see error log)
    • 'sql_mode_strict' => '1'
    • const SQL_MODE_STRICT = 'TRADITIONAL,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY';
      const DB_ERROR_MODE = 1;	
  6. unwrap_link() strip also last slash if user provides page="/Cluster/SubPage/" to match tag Cluster/SubPage in database
    • utf8_rtrim(new_tag, '/') or better already via regex
  7. add option to overwrite upload pre-selection (global/local)
  8. migrating from SAH-1 to SHA-256 for all hashes?
  9. improve mixed directionality of text[link13] support
    • set dir in user elements when dir differs from content, e.g content is in Persian and GUI is Greek
    • how to determine the use of the <bdi> tag, e.g. for breadcrumbs or lists
  10. made time format depended from localization and user preferences
    • DateTime::format()
    • IntlDateFormatter::format()
  11. The user name regex allows . and - in usernames however the sanitizer removes it
  12. Why does it store interwiki in session and not as JSON in _cache/config/interwiki.conf?
    • get_inter_wiki_url($name, $tag)
  13. move interwiki.conf and antispam.conf into table & _cache/config/*
  14. COLLATE utf8mb4_bin for tag eats 𝓦𝓲𝓴𝓲𝓦𝓸𝓻𝓭𝓼 in LIKE '/%' query, without slash it finds it, whO_Ot
  15. UTF-8 text must be checked for well-formedness
    • static function is_utf8($string)
      {
        return (bool) preg_match('//u', $string);
      }	
  16. localize default date formats
  17. improve and foster message sets
  18. set return type declarations : (array | bool | float | int | mixed | string | void | ... )
  19. fix client side JS input validation patterns
    1. new, clone and rename handler, import action
    2. $tpl->pattern = $this->lang['TAG'] . '+';
  20. Replace all HTML-Entities except HTML special chars[link15]
    1. nbsp; -- to indent or add extra spacing to a paragraph, sentence, or another portion, better using CSS instead of multiple non-breaking spaces.
  21. allow also login with email address instead of user name
  22. individual CSP per page
  23. move link and notifications functions in own class
    • $this->msg->notify_user()
    • $this->ref->link()
  24. partial mixed usage of DB warnings and exceptions (must use either one or the another)
    • MySQLi: mysqli_sql_exception and mysqli_connect_errno
    • PDO: errorCode and PDOException
  25. Implement a quasi mailing lists where users can register and participate, WackoWiki already comes with all functions for realisation
    • similar to personal messages, but on topics that send outgoing messages to all users subscribed to that topic

4. Installer

  1. commented out auto-creation of empty help, terms and privacy page - needs FEEDBACK
    • make creation optional, the default theme shows the links when set in the config
    • either the user defines them individually in the admin panel or sets an additional option in the installer to create them
  2. set more strict write and create default ACLs for system and user pages
    • user pages: only the user should be able to write and create sub-pages by default in his namespace
    • system pages: no sub-page creation for users
    • requires a option to pass custom ACLs in page creation, e.g. $permissions = ['write' => 'Admins', 'create' => 'Admins']
  3. validate username
  4. Nginx: installer seems to activate rewrite_mode ?
  5. use dbal also for installer: $db->sql_query($sql)
  6. raise DB version requirement (there is a technical minimum requirement as well as a end of support)
    • enforces version for technical requirement
    • show warning for versions with end of support
  7. add config setting for database MySQL / MariaDB
    • const SQL_MODE_PERMISSIVE = [
        'mariadb'	=> 'NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER', 
        'mysql'	=> 'NO_ENGINE_SUBSTITUTION'
      ]	



5. Handler


6. Action

7. Formatter

8. Cache


9. Admin Panel


10. Database

11. WikiEdit

  1. Autocomplete seems broken, shows possible pages - but selection does not work
  2. use only one popup for new link, having link and link description together
  3. select and remember the color of the highlighter or marker, keep selected color in session
  4. do not set multi-line markup beyond paragraph, list ad other terminators, only valid tag nesting
  5. popup for tables
    1. select rows and columns
    2. set table header
  6. select color for text and highlighting
  7. resize textarea
  8. undo / redo
  9. JavaScript search & replace
  10. ECMAScript 2018
  11. some key shortcuts does not work any longer
    • test and map what works & where
    • suggest new shortcuts in case of conflict (Firefox, Chrome, ...)

12. Translations

13. Libs


14. Refactoring

15. Offline usage improvements

Intranet usage, offline, etc.

  1. manual, help
    • installer(option to add help/)
    • provide help cluster as XML for import (de, fr, en, es, ru, zh)
    • add all essential instruction to a doc/ folder
  2. XML export / import
    • improve options (chose cluster, direct download)
    • make import / export more accessible

16. Themes


16.1. Print

CSS Paged Media Module Level 3[link25]
@page {
    size: A4 portrait;
    margin: 15mm;
    font-family: Arial, Helvetica, sans-serif;
    marks: crop cross;

    @bottom-center {
        content: "Seite " counter(page) " von " counter(pages);
        font-size: 10pt;
    }
}

.chapter h1 {
    page-break-before: always;
    string-set: chapter-title content()
}

h2, h3 {
    page-break-after: avoid;
}

p {
    orphans: 3;
    widows: 3;
}

17. Ideas

18. Documentation

19. Feedback

20. Testing

20.1. Debug


declare(strict_types=1);