WackoWiki: ToDo R6.1 πŸ“Œ

https://wackowiki.org/doc     Version: 15.05.2022 14:12

R 6.1

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

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

Please look here for open issues from R6.0[link5].

1. PHP

1.1. PHP 8.0

  1. https://stitcher.io/blog/new-in-php-8
  2. https://php.watch/versions/8.0
  3. https://github.com/php/php-src/blob/php-8.0.0/UPGRADING
  4. https://php.watch/articles/php-regex-readability

1.2. PHP 8.1

  1. https://stitcher.io/blog/new-in-php-81
  2. https://github.com/php/php-src/blob/php-8.1.0/UPGRADING
  3. https://github.com/rectorphp/r[...]es_overview.md#php81[link6]
  4. https://php.watch/versions/8.1/gd-avif

Deprecated:
  1. Passing null to non-nullable internal function parameters[link7]

2. Features

3. Core

  1. 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;
  2. 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
  3. add option to overwrite upload pre-selection (global/local)
  4. improve mixed directionality of text[link8] 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
  5. made time format depended from localization and user preferences
    • DateTime::format()
    • IntlDateFormatter::format()
  6. The user name regex allows . and - in usernames however the sanitizer removes it
  7. Why does it store interwiki in session and not as JSON in _cache/config/interwiki.conf?
    • get_inter_wiki_url($name, $tag)
  8. move interwiki.conf and antispam.conf into table & _cache/config/*
  9. add option to enforce email validation before a user can login
  10. notify_watcher(): add direct link to diff mode in email body
  11. it sucks to see again and over again all these random session_notice(s), add a option to turn it off for daily work.
  12. COLLATE utf8mb4_bin for tag eats 𝓦𝓲𝓴𝓲𝓦𝓸𝓻𝓭𝓼 in LIKE '/%' query, without slash it finds it, whO_Ot
  13. UTF-8 text must be checked for well-formedness
    • static function is_utf8($string)
      {
        return (bool) preg_match('//u', $string);
      }
  14. localize default date formats
  15. improve and foster message sets
  16. set return type declarations : (array | bool | float | int | mixed | string | void | ... )
  17. fix client side JS input validation patterns
    1. new, clone and rename handler, import action
    2. $tpl->pattern = $this->language['TAG'] . '+';
  18. Replace all HTML-Entities except HTML special chars[link10]
    1. nbsp; -- to indent or add extra spacing to a paragraph, sentence, or another portion, better using CSS instead of multiple non-breaking spaces.
  19. allow also login with email address instead of user name
  20. move link and notifications functions in own class
    • $this->msg->notify_user()
    • $this->ref->link()

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)

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. popup for tables
    1. select rows and columns
    2. set table header
  5. select color for text and highlighting
  6. resize textarea
  7. undo / redo
  8. JavaScript search & replace
  9. ECMAScript 2018

12. Translations

13. Libs

  1. https://github.com/pear/Text_Highlighter/pull/5

14. Refactoring


15. Themes


15.1. Print

CSS Paged Media Module Level 3[link17]
@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;
}

16. Ideas

17. Documentation

  1. add example for rewrite with Nginx - HELP needed
    1. Converting Apache Rewrite Rules to NGINX Rewrite Rules[link22]
    2. Pitfalls and Common Mistakes[link23]
    3. Creating NGINX Rewrite Rules[link24]

18. Feedback

18.1. Polls

The polls class and actions have been removed from the core. They can be added again to the community folder after evaluation and improvement. Additionally a guide as well as further documentation is needed. See 6.0 branch for source code.

module

class

actions

translations
database table

19. Testing

19.1. Debug

https://app.codacy.com/gh/WackoWiki/wackowiki/dashboard

declare(strict_types=1);