ToDo R6.1 ūüďĆ

R 6.1

dev repo []

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

Please look here for open issues from R6.0 .

1. PHP

1.1. PHP 8.0


  1. PHP Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null given
    • if (count($file) > 0) -> if (is_countable($file) && count($file) > 0)

1.2. PHP 8.1


2. Features

  • customizable secondary navigation (Menu) out¬†of¬†the¬†box apart from the¬†so¬†called bookmarks
    • most users won't fiddle with the¬†theme to¬†create their own¬†navigation, see¬†theme section

3. Core

  1. made time format depended from localization and user preferences
    • DateTime::format()
    • IntlDateFormatter::format()
  2. add utf8_word_count function DONE
  3. Why does it store interwiki in session and not as JSON in _cache/config/interwiki.conf?
    • get_inter_wiki_url($name, $tag)
  4. move interwiki.conf and antispam.conf into table & _cache/config/*
  5. add option to enforce email validation before a user can login
  6. notify_watcher(): add direct link to diff mode in email body
  7. it sucks to see again and over again all these random session_notice(s), add a option to turn it off for daily work.
  8. COLLATE utf8mb4_bin for¬†tag eats ūĚď¶ūĚď≤ūĚďīūĚď≤ūĚď¶ūĚďłūĚďĽūĚď≠ūĚďľ in¬†LIKE '/%' query, without slash it¬†finds it, whO_Ot
  9. UTF-8 text must be checked for well-formedness
    • static function is_utf8($string)
        return (bool) preg_match('//u', $string);
  10. localize default date formats
  11. improve and foster message sets
  12. set return type declarations : (array | bool | float | int | mixed | string | void | ... )
  13. fix client side JS input validation patterns
    1. new, clone and rename handler
  14. 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.
  15. allow also login with email address instead of user name
  16. move link and notifications functions in own class
    • $this->msg->notify_user()
    • $this->ref->link()

4. Installer

  1. validate username
  2. Nginx: installer seems to activate rewrite_mode ?
  3. use dbal also for installer: $db->sql_query($sql)

5. Handler

  • auto-save function on¬†the¬†edit and¬†_comments handler by¬†applying the¬†localStorage function
  • saved discarded comment due¬†invalidated token to¬†avoid data loss
  • send notice on¬†comment edit and¬†make change visible in¬†actions like it¬†is done for¬†pages, to¬†not¬†miss possible important content changes
  • 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)
  • diff: add¬†page title to¬†diff
  • print: pass arguments? e.g. ?phrase=canonical&lang=&p=2

6. Action

  • registration: add¬†option to¬†enforce certain user name patterns
  • registration: add¬†white and¬†blacklist for¬†allowed email domains
  • poll: improve actions and¬†add templates
  • blog: improve options, sorting and¬†filtering, set¬†namespace patterns, add¬†content templates

7. Formatter

  • add¬†option to¬†wrap caption around code blocks
    • <figure>
        <figcaption>Language of code</figcaption>
            <!-- your code here -->
  • indenting text in¬†quote breaks page
    • <p id="p291-1" class="auto">
      <blockquote>Where authority fails in its duties and indeed betrays the purpose for which it has been established, disobedience is not only lawful but obligatory: non-violent disobedience, at least for now, but determined and courageous.</p>
      <div class="indent">.</blockquote>
      <p id="p291-2" class="auto"></div>
  • auto-paragraph did¬†not terminates correctly in¬†indent div¬†having a¬†code wrapper
    • <div class="indent"><pre class="code">su</pre>
      <p id="p86658-7" class="auto"></div>
  • add¬†support for¬†AVIF ‚Äď GD lib¬†support pending! -> LibGD 2.3.2 -> PHP¬†8.1
  • str_replace("\xc2\xa0", "¬†", $string);
  • text inside ##code formatter## is¬†processed as¬†wikitext with possibly undesired results
    • the¬†text must be¬†escaped to¬†be taken as¬†is
  • 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 are¬†not tracked
  • 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 update body_toc

8. Cache

9. Admin Panel

  • support templates
  • restore: process may¬†fail while restoring page with certain Unicode
    • needs further investigation, backup seems to¬†works while restoring may¬†fail
    • creates empty REPLACE queries for¬†page table until it¬†causes a¬†script termination due¬†timeout

10. Database

11. WikiEdit

  1. Autocomplete seems broken, shows possible page ‚Äď but¬†selection does not¬†work
  2. add Unicode support
  3. use only one popup for new link, having link and link description together
  4. select and remember the color of the highlighter or marker, keep selected color in session
  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

12. Libs


13. Refactoring

14. Themes

  • CSS: [dir=rtl]
  • defer scripts defer></script>
  • default theme
    • background body: #ebeef2
    • code
      border-style: solid;
      border-color: lightgray;
      border-width: 1px;
      border-radius: 4px;

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
  • JSON Feed
  • Captcha dictionary in¬†Russian as¬†drop in¬†
  • Defense Against Spiders

16. Documentation

  • add¬† file to¬†action, handler and¬†formatter folder with a¬†short introduction and¬†HowTo
  • differentiate update instructions between minor and¬†major upgrade
  • add¬†a¬†page for¬†Terms in¬†WackoWiki
    • cluster, free link, wikilink, etc.
  • add CSP¬†help page
  • add¬†example for¬†resizing image from a¬†external source (( width=500 align=center))
    • height, width
    • align=[ left | right | center ]
  • order config page according the¬†sections in¬†the¬†Admin panel via¬†sub-headings
  • write your own¬†action
  • write your own¬†formatter
  • write your own¬†theme
  • When a¬†upgrade should be¬†done?
  • How¬†I¬†reduce the¬†applications footprint?
  • improve translation
  • add¬†example for¬†rewrite with Nginx ‚Äď HELP needed
    1. Converting Apache Rewrite Rules to NGINX Rewrite Rules
    2. Pitfalls and Common Mistakes
    3. Creating NGINX Rewrite Rules

17. Feedback

18. Testing

18.1. Test cases

-> Test cases?

18.2. Debug


Show Files (2 files)