<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="/doc/theme/default/css/wacko.css" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
<title>WackoWiki - Recent comments</title>
<link>https://wackowiki.org/doc/</link>
<description>Recent comments to the WackoWiki</description>
<language>en</language>
<lastBuildDate>Tue, 12 May 2026 08:05:28 +0200</lastBuildDate>
<image>
<title>WackoWiki - Recent comments</title>
<link>https://wackowiki.org/doc/</link>
<url>https://wackowiki.org/doc/image/logo.png</url>
<width>108</width>
<height>50</height>
</image>
<item>
<title>Preview Files Before Upload from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4563</link>
<guid>https://wackowiki.org/doc/Comment4563</guid>
<pubDate>Thu, 23 Apr 2026 08:40:06 +0200</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[<strong>Advantages</strong> of implementing a client-side preview system with removal and metadata editing capabilities include <strong>enhanced user experience</strong> through immediate visual feedback, which allows users to confirm they have selected the correct file and catch errors like blurry images or incorrect aspect ratios before submission. This approach <strong>reduces server load and bandwidth usage</strong> by preventing the upload of invalid, oversized, or unwanted files, while also <strong>increasing user confidence</strong> by letting them verify input visually. Additionally, providing a <strong>remove option</strong> prevents unnecessary data transmission; if files are deleted client-side, they are not included in the <code>FormData</code> payload, avoiding the "unneeded payload" issue where deleted images are still sent to the server.<br>
<br>
<strong>Disadvantages</strong> primarily involve <strong>performance and memory management</strong>. Reading large images as Data URLs via <code>FileReader.readAsDataURL()</code> can consume significant browser memory and cause slowdowns, whereas using <code>URL.createObjectURL()</code> requires careful management with <code>URL.revokeObjectURL()</code> to prevent memory leaks, especially in single-page applications. Implementing metadata editing and dynamic DOM manipulation for previews adds <strong>development complexity</strong>, requiring robust handling of edge cases such as clearing previous previews, managing multiple file selections, and ensuring accessibility for screen readers. Furthermore, relying on client-side validation for file types and sizes is <strong>insufficient for security</strong>, necessitating redundant server-side validation to prevent malicious uploads.
]]></description>
</item>
<item>
<title>Re: Имя загружаемого файла на кириллице from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4561</link>
<guid>https://wackowiki.org/doc/Comment4561</guid>
<pubDate>Sun, 05 Apr 2026 20:18:48 +0200</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[<strong><a href="https://codeberg.org/WackoWiki/wackowiki/commit/bc55d6c9ab5003dbfbd6959828bc9ad995ffedbc" title="" class="iw-commit"><span class="icon"></span>Fixed token selector</a></strong> issue when starting with a unescaped number by adding a <code>cb-</code> prefix which caused the copy to clipboard to fail.<br>
<br>
The clipboard.js library, while once popular for enabling copy-to-clipboard functionality without Flash, is now considered outdated due to the evolution of modern web APIs and lack of active maintenance.<br>
<br>
Guess the clipboard.js should replaced with the modern Clipboard API.<br>


<div class="hl-main"><pre><span class="hl-comment">/*</span><span class="hl-comment">*
* Native Clipboard API using data-clipboard-target attribute
* Just like the popular Clipboard.js library, but 100% vanilla JS
</span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">addEventListener</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">DOMContentLoaded</span><span class="hl-quotes">&#039;</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> =&gt; </span><span class="hl-brackets">{</span><span class="hl-code">
 
    </span><span class="hl-comment">//</span><span class="hl-comment"> Find ALL buttons that have the data-clipboard-target attribute</span><span class="hl-comment"></span><span class="hl-code">
    </span><span class="hl-reserved">const</span><span class="hl-code"> </span><span class="hl-identifier">copyButtons</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">querySelectorAll</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">button[data-clipboard-target]</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
 
    </span><span class="hl-identifier">copyButtons</span><span class="hl-code">.</span><span class="hl-identifier">forEach</span><span class="hl-brackets">(</span><span class="hl-identifier">button</span><span class="hl-code"> =&gt; </span><span class="hl-brackets">{</span><span class="hl-code">
 
        </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">addEventListener</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">click</span><span class="hl-quotes">&#039;</span><span class="hl-code">, </span><span class="hl-identifier">async</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">event</span><span class="hl-brackets">)</span><span class="hl-code"> =&gt; </span><span class="hl-brackets">{</span><span class="hl-code">
            </span><span class="hl-identifier">event</span><span class="hl-code">.</span><span class="hl-identifier">preventDefault</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
 
            </span><span class="hl-comment">//</span><span class="hl-comment"> Get the target selector (e.g. &quot;#token-pre&quot;)</span><span class="hl-comment"></span><span class="hl-code">
            </span><span class="hl-reserved">const</span><span class="hl-code"> </span><span class="hl-identifier">targetSelector</span><span class="hl-code"> = </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">getAttribute</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">data-clipboard-target</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
 
            </span><span class="hl-comment">//</span><span class="hl-comment"> Find the element to copy from</span><span class="hl-comment"></span><span class="hl-code">
            </span><span class="hl-reserved">const</span><span class="hl-code"> </span><span class="hl-identifier">targetElement</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">querySelector</span><span class="hl-brackets">(</span><span class="hl-identifier">targetSelector</span><span class="hl-brackets">)</span><span class="hl-code">;
 
            </span><span class="hl-reserved">if</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">targetElement</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">console</span><span class="hl-code">.</span><span class="hl-identifier">error</span><span class="hl-brackets">(</span><span class="hl-code">`</span><span class="hl-identifier">Target</span><span class="hl-code"> </span><span class="hl-identifier">element</span><span class="hl-code"> </span><span class="hl-quotes">&quot;</span><span class="hl-string">${targetSelector}</span><span class="hl-quotes">&quot;</span><span class="hl-code"> </span><span class="hl-identifier">not</span><span class="hl-code"> </span><span class="hl-identifier">found</span><span class="hl-code">!`</span><span class="hl-brackets">)</span><span class="hl-code">;
                </span><span class="hl-reserved">return</span><span class="hl-code">;
            </span><span class="hl-brackets">}</span><span class="hl-code">
 
            </span><span class="hl-comment">//</span><span class="hl-comment"> Get the text to copy</span><span class="hl-comment"></span><span class="hl-code">
            </span><span class="hl-identifier">let</span><span class="hl-code"> </span><span class="hl-identifier">textToCopy</span><span class="hl-code"> = </span><span class="hl-quotes">&#039;</span><span class="hl-quotes">&#039;</span><span class="hl-code">;
 
            </span><span class="hl-comment">//</span><span class="hl-comment"> Smart detection: use .value for form elements, .textContent for everything else</span><span class="hl-comment"></span><span class="hl-code">
            </span><span class="hl-reserved">if</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">targetElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code"> === </span><span class="hl-quotes">&#039;</span><span class="hl-string">TEXTAREA</span><span class="hl-quotes">&#039;</span><span class="hl-code"> || </span><span class="hl-identifier">targetElement</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code"> === </span><span class="hl-quotes">&#039;</span><span class="hl-string">INPUT</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">textToCopy</span><span class="hl-code"> = </span><span class="hl-identifier">targetElement</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code">.</span><span class="hl-identifier">trim</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
            </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">else</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">textToCopy</span><span class="hl-code"> = </span><span class="hl-identifier">targetElement</span><span class="hl-code">.</span><span class="hl-identifier">textContent</span><span class="hl-code">.</span><span class="hl-identifier">trim</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
            </span><span class="hl-brackets">}</span><span class="hl-code">
 
            </span><span class="hl-comment">//</span><span class="hl-comment"> If there&#039;s nothing to copy, do nothing</span><span class="hl-comment"></span><span class="hl-code">
            </span><span class="hl-reserved">if</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-code">!</span><span class="hl-identifier">textToCopy</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">console</span><span class="hl-code">.</span><span class="hl-identifier">warn</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">Nothing to copy – text is empty</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
                </span><span class="hl-reserved">return</span><span class="hl-code">;
            </span><span class="hl-brackets">}</span><span class="hl-code">
 
            </span><span class="hl-reserved">try</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-comment">//</span><span class="hl-comment"> The modern Clipboard API</span><span class="hl-comment"></span><span class="hl-code">
                </span><span class="hl-identifier">await</span><span class="hl-code"> </span><span class="hl-builtin">navigator</span><span class="hl-code">.</span><span class="hl-identifier">clipboard</span><span class="hl-code">.</span><span class="hl-identifier">writeText</span><span class="hl-brackets">(</span><span class="hl-identifier">textToCopy</span><span class="hl-brackets">)</span><span class="hl-code">;
 
                </span><span class="hl-comment">//</span><span class="hl-comment"> Visual feedback</span><span class="hl-comment"></span><span class="hl-code">
                </span><span class="hl-reserved">const</span><span class="hl-code"> </span><span class="hl-identifier">originalText</span><span class="hl-code"> = </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code">;
 
                </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">classList</span><span class="hl-code">.</span><span class="hl-identifier">add</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">copied</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
                </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = `✅ </span><span class="hl-identifier">Copied</span><span class="hl-code">!`;
 
                </span><span class="hl-comment">//</span><span class="hl-comment"> Reset button after 2 seconds</span><span class="hl-comment"></span><span class="hl-code">
                </span><span class="hl-identifier">setTimeout</span><span class="hl-brackets">(</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> =&gt; </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">classList</span><span class="hl-code">.</span><span class="hl-identifier">remove</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">copied</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
                </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">originalText</span><span class="hl-code">;
                </span><span class="hl-brackets">}</span><span class="hl-code">, </span><span class="hl-number">2000</span><span class="hl-brackets">)</span><span class="hl-code">;
 
                </span><span class="hl-identifier">console</span><span class="hl-code">.</span><span class="hl-identifier">log</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">✅ Copied to clipboard:</span><span class="hl-quotes">&#039;</span><span class="hl-code">, </span><span class="hl-identifier">textToCopy</span><span class="hl-code">.</span><span class="hl-identifier">substring</span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-number">30</span><span class="hl-brackets">)</span><span class="hl-code"> + </span><span class="hl-quotes">&#039;</span><span class="hl-string">...</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
 
            </span><span class="hl-brackets">}</span><span class="hl-code"> </span><span class="hl-reserved">catch</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">err</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">console</span><span class="hl-code">.</span><span class="hl-identifier">error</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">Failed to copy using Clipboard API:</span><span class="hl-quotes">&#039;</span><span class="hl-code">, </span><span class="hl-identifier">err</span><span class="hl-brackets">)</span><span class="hl-code">;
 
                </span><span class="hl-comment">//</span><span class="hl-comment"> Fallback message</span><span class="hl-comment"></span><span class="hl-code">
                </span><span class="hl-reserved">const</span><span class="hl-code"> </span><span class="hl-identifier">originalText</span><span class="hl-code"> = </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code">;
                </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">background</span><span class="hl-code"> = </span><span class="hl-quotes">&#039;</span><span class="hl-string">#ef4444</span><span class="hl-quotes">&#039;</span><span class="hl-code">;
                </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = `❌ </span><span class="hl-identifier">Failed</span><span class="hl-code">`;
 
                </span><span class="hl-identifier">setTimeout</span><span class="hl-brackets">(</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> =&gt; </span><span class="hl-brackets">{</span><span class="hl-code">
                    </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">style</span><span class="hl-code">.</span><span class="hl-identifier">background</span><span class="hl-code"> = </span><span class="hl-quotes">&#039;</span><span class="hl-quotes">&#039;</span><span class="hl-code">;
                    </span><span class="hl-identifier">button</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">originalText</span><span class="hl-code">;
                </span><span class="hl-brackets">}</span><span class="hl-code">, </span><span class="hl-number">2000</span><span class="hl-brackets">)</span><span class="hl-code">;
            </span><span class="hl-brackets">}</span><span class="hl-code">
        </span><span class="hl-brackets">}</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-brackets">)</span><span class="hl-code">;
 
    </span><span class="hl-identifier">console</span><span class="hl-code">.</span><span class="hl-identifier">log</span><span class="hl-brackets">(</span><span class="hl-quotes">&#039;</span><span class="hl-string">Clipboard API ready!</span><span class="hl-quotes">&#039;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-brackets">)</span><span class="hl-code">;</span></pre></div>
]]></description>
</item>
<item>
<title>Ответ: Имя загружаемого файла на кириллице from VictorAlx</title>
<link>https://wackowiki.org/doc/Comment4560</link>
<guid>https://wackowiki.org/doc/Comment4560</guid>
<pubDate>Sun, 05 Apr 2026 17:29:46 +0200</pubDate>
<dc:creator>VictorAlx</dc:creator>
<description><![CDATA[Thank you very much! It works fine.<br>
By the way, there is one more minor issue. <br>
The “Copy to clipboard” button next to the name of the uploaded file doesn't copy anything.<br>
Maybe there's also something that can be easily fixed in the settings?]]></description>
</item>
<item>
<title>Re: Имя загружаемого файла на кириллице from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4559</link>
<guid>https://wackowiki.org/doc/Comment4559</guid>
<pubDate>Sun, 05 Apr 2026 16:43:55 +0200</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[Please turn off <code>upload_translit</code> in your Admin panel -&gt; Upload module.<br>
<br>
Should allow you to use <code>file:/пасхальные_яйца.jpg</code>.<br>
<br>]]></description>
</item>
<item>
<title>Re: Error when creating a new user from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4557</link>
<guid>https://wackowiki.org/doc/Comment4557</guid>
<pubDate>Wed, 11 Mar 2026 08:16:45 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[[1] <strong>The culprit</strong><br>
<br>
<ol type="1"><li> The DEFAULT value was always set from the beginning.
<ul><li> <a href="https://codeberg.org/WackoWiki/wackowiki/commit/832a6ccf925202319b704d7327bde046d730d505" title="" class="iw-commit"><span class="icon"></span>commit:832a6ccf925202319b704d7327bde046d730d505</a>
</li></ul>
</li>
<li> However the <strong>backup script</strong> did not stored the DEFAULT in some cases.
<ul><li> <a href="https://codeberg.org/WackoWiki/wackowiki/commit/280f5ae0379ef2113a3f9a797ed30399e84c3818" title="" class="iw-commit"><span class="icon"></span>commit:280f5ae0379ef2113a3f9a797ed30399e84c3818</a></li></ul>
</li></ol>

<br>
That is how there was suddenly a missing default value. This was fixed with WackoWiki <strong><span class="cl-green">6.1.10</span></strong>.<br>
<br>
[2] <strong>SQL Strict mode</strong><br>
<br>
<ul><li> <strong>MySQL</strong> 5.7 made strict mode default, effectively requiring <code>DEFAULT</code> values for <code>NOT NULL</code> columns during <code>INSERT</code>. 
</li>
<li> <strong>MariaDB</strong> never enables strict mode by default, so <code>DEFAULT</code> is not mandatory unless explicitly configured.
</li>
<li> <strong>SQLite</strong> 3.37.0 introduced a STRICT tables feature, but does not support SQL Strict modes.</li></ul>

<br>
In both databases, the enforcement is governed by the <code>sql_mode</code> setting. If <code>STRICT_TRANS_TABLES</code> or <code>STRICT_ALL_TABLES</code> is active, <code>NOT NULL</code> columns without <code>DEFAULT</code> values must be explicitly included in <code>INSERT</code> statements.<br>
<br>
You can change the SQL Strict mode in WackoWiki via the <code>sql_mode</code> in the primary setting.<br>
<ul><li> <code>0</code> – server SQL mode (default)
</li>
<li> <code>1</code> – lax </li>
<li> <code>2</code> – strict</li></ul>

<br>
class Dbal<br>


	<div class="code">
<pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php

</span><span style="color: #FF8000">// change the current SQL mode at runtime
</span><span style="color: #0000BB">$sql_modes </span><span style="color: #007700">= match((int) </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">sql_mode</span><span style="color: #007700">) {
    </span><span style="color: #0000BB">1        </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">SQL_MODE_LAX</span><span style="color: #007700">[</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">db_vendor</span><span style="color: #007700">],
    </span><span style="color: #0000BB">2        </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">SQL_MODE_STRICT</span><span style="color: #007700">[</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">db_vendor</span><span style="color: #007700">],
    default    =&gt; </span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #FF8000">// server SQL mode
</span><span style="color: #007700">};

if (</span><span style="color: #0000BB">$sql_modes</span><span style="color: #007700">)
{
    </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">db</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"SET SESSION sql_mode = '</span><span style="color: #0000BB">$sql_modes</span><span style="color: #DD0000">'"</span><span style="color: #007700">);
}</span></code></pre>	</div>

<br>
<br>
constants.php<br>


	<pre class="code">
const SQL_MODE_STRICT	= [
	'mariadb'	=&gt; 'TRADITIONAL,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY',
	'mysql'		=&gt; 'TRADITIONAL,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY'
];
const SQL_MODE_LAX	= [
	'mariadb'	=&gt; 'NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER',
	'mysql'		=&gt; 'NO_ENGINE_SUBSTITUTION'
];	</pre>

<br>
<br>
config.php<br>


	<pre class="code">
'sql_mode' =&gt; '0',	</pre>

<br>
<br>
Thanks for the feedback.]]></description>
</item>
<item>
<title>Aw: Error when creating a new user from hatho</title>
<link>https://wackowiki.org/doc/Comment4556</link>
<guid>https://wackowiki.org/doc/Comment4556</guid>
<pubDate>Tue, 10 Mar 2026 21:49:53 +0100</pubDate>
<dc:creator>hatho</dc:creator>
<description><![CDATA[Thanks, I set DB_ERROR_MODE to 1 before, now I set it to 2. Should have done that from the beginning.<br>
<br>
Now i got an error, that user_ip has no default value set.<br>
I set it to '' in MariaDB, and the user creation from admin panel now works normally.<br>
<br>
I don't know how I got into that state (missing default value).<br>
Wouldn't a database check catch that? The db check from the admin panel reported no errors.<br>
<br>
So, it works, thank you very much for your help and input!<br>
<br>
So in the end my assumption (that the error happens in the application) was wrong and your inital comment regarding missing default value was spot on.<br>
<br>
For context I can answer your questions:<br>
<br>
1. + 2. Yes, I mean the integrated backup/restore from admin panel. <br>
3. I restored both<br>
4. I tried both, the backup was taken in 6.1.29 and then restored once to same version, and afterwards also restored into 6.2.0 or 6.2.1, not sure anymore. It generally worked fine in the higher versions, but my error did persist (of course).<br>
<br>
Thanks again!]]></description>
</item>
<item>
<title>Re: Error when creating a new user from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4555</link>
<guid>https://wackowiki.org/doc/Comment4555</guid>
<pubDate>Tue, 10 Mar 2026 21:11:26 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[The error log indicate no related error. Please set <br>


	<pre class="code">
const DB_ERROR_MODE		= 2;	</pre>

<br>
<br>
Then try to create a new account. It should throw a Fatal error message.<br>
All indicates that the <code>INSERT</code> query for the new user regarding the <code>user</code> table fails. Now is the question WHY?<br>
<br>
<ol type="1"><li> What kind of backup?
</li>
<li> Was the backup created and restored with the backup and restore module in the admin panel?
</li>
<li> Did you restore only data or also the table structure?
</li>
<li> Was the WackoWiki version of the backup the same of the WackoWiki you restored it in?</li></ol>

<br>
It is possible that the restored user table structure is inconsistent.<br>
<ul><li> <a href="https://codeberg.org/WackoWiki/wackowiki/src/tag/6.1.29/src/admin/module/user_users.php#L126" title="Outgoing link" class="external-link"><span class="icon"></span>https://codeberg.org/WackoWiki[...]/user_users.php#L126</a></li></ul>

<br>
Does the <code>registration</code> action also work after you restored your backup? <br>
<ul><li> <a href="https://codeberg.org/WackoWiki/wackowiki/src/tag/6.1.29/src/action/registration.php" title="Outgoing link" class="external-link"><span class="icon"></span>https://codeberg.org/WackoWiki[...]ion/registration.php</a></li></ul>]]></description>
</item>
<item>
<title>Aw: Error when creating a new user from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4554</link>
<guid>https://wackowiki.org/doc/Comment4554</guid>
<pubDate>Tue, 10 Mar 2026 20:38:24 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[<blockquote>Debugging</blockquote><br>
I think the error is before the insert/update into the DB, because PHP itself gives the following error messages regarding undefined variables.<br>
<br>
<br>


	<pre class="code">
PHP Warning:  Undefined variable $user in /wiki/admin/module/user_users.php on line 687
PHP Warning:  Trying to access array offset on value of type null in /wiki/admin/module/user_users.php on line 687
PHP Warning:  Undefined variable $user in /wiki/admin/module/user_users.php on line 702
PHP Warning:  Trying to access array offset on value of type null in /wiki/admin/module/user_users.php on line 702[...]	</pre>

<br>
<br>
The registration email however is sent to the user.<br>
<br>
I am using MariaDB.<br>
<br>
<blockquote>Can you register a new user via the registration action?</blockquote><br>
Actually yes, that worked, thanks for the hint. The user appears in the table.<br>
<br>
<blockquote>[2] Upgrade to the latest version (6.1.29 → 6.2.1)</blockquote><br>
I would love to upgrade, in fact, I did. But this did not solve the problem. Also in fresh installation of 6.1.29 obviously user creation from the admin panel works fine, but after importing the backup the error happens again.<br>
<br>
So the error only seems to be in the admin panel «Users» page, not in the <mark>registration</mark> action]]></description>
</item>
<item>
<title>Re: Error when creating a new user from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4553</link>
<guid>https://wackowiki.org/doc/Comment4553</guid>
<pubDate>Tue, 10 Mar 2026 10:42:30 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[[1] <strong>Debugging</strong><br>
<br>
If you wanna know what went wrong, <a id="a-256" href="https://wackowiki.org/doc/Dev/Testing" title=" Dev / Testing">turn on error reporting</a> including setting <code>DB_ERROR_MODE</code> to <code>1</code> or <code>2</code>.<br>


	<pre class="code">
const DB_ERROR_MODE		= 1;
const PHP_ERROR_REPORTING	= 6;	</pre>

<br>
It will show you in the error_log or the Exception message what failed.<br>
<br>
You can check if your <code>user</code> table is OK and up to date. Maybe there is a missing default value or the like causing an SQL Strict mode issue.<br>
<ul><li> <a href="https://codeberg.org/WackoWiki/wackowiki/src/branch/master/src/setup/database/mysql.php" title="" class="iw-source"><span class="icon"></span>setup/database/mysql.php</a></li></ul>

<br>
What database and database version are you using, MySQL or MariaDB? <br>
You can check why the SQL query which should INSERT the new user is failing.<br>
<br>
Can you register a new user via the <code>registration</code> action?<br>
If not it is probably the user table.<br>
<br>
[2] <strong>Upgrade to the latest version</strong> (6.1.29 → 6.2.1)<br>
<br>
Most SQL queries have been rewritten. No changes to the tables.]]></description>
</item>
<item>
<title>Comentario 4552 from ascrsoft</title>
<link>https://wackowiki.org/doc/Comment4552</link>
<guid>https://wackowiki.org/doc/Comment4552</guid>
<pubDate>Sun, 08 Mar 2026 22:22:44 +0100</pubDate>
<dc:creator>ascrsoft</dc:creator>
<description><![CDATA[It works perfectly; it was my mistake since I'm using an older 6.2.0 theme :)
]]></description>
</item>
<item>
<title>Re: text centering question from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4551</link>
<guid>https://wackowiki.org/doc/Comment4551</guid>
<pubDate>Sun, 08 Mar 2026 20:15:42 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[<code>(colspan=3 align=center)</code> works, doesn't it?<br>
<br>
<table class="usertable">
	<tr><td colspan="2" style="width: 20%;"> </td><td class="text-center" colspan="3" style="width: 40%;">Despliegue de la pantalla</td><td class="text-center" colspan="3" style="width: 40%;">Lista de Despliegue </td></tr>
	<tr><td>GR</td><td>Ventana de texto</td><td>siempre sin uso</td><td>bytes condicionales</td><td>uso de la pantalla</td><td>bytes sin uso</td><td>bytes usados</td><td>Total</td></tr>
</table>
<br>
<table class="dtable">
	<tr><td colspan="2"> </td><td class="text-center mark-green" colspan="3">Despliegue de la pantalla</td><td class="text-center" colspan="3">Lista de Despliegue </td></tr>
	<tr><td colspan="8"> <hr>
</td></tr>
	<tr><td>GR</td><td>Ventana de texto</td><td>siempre sin uso</td><td>bytes condicionales</td><td>uso de la pantalla</td><td>bytes sin uso</td><td>bytes usados</td><td>Total</td></tr>
	<tr><td colspan="8"> <hr>
</td></tr>
</table>]]></description>
</item>
<item>
<title>text centering question from ascrsoft</title>
<link>https://wackowiki.org/doc/Comment4550</link>
<guid>https://wackowiki.org/doc/Comment4550</guid>
<pubDate>Sun, 08 Mar 2026 19:25:34 +0100</pubDate>
<dc:creator>ascrsoft</dc:creator>
<description><![CDATA[Thank you so much for this improvement to the tables, but how do you apply a colspan with text centered in a cell?<br>


	<pre class="code">
#||
||(colspan=2) |(colspan=3 align=center)Despliegue de la pantalla|(colspan=3 align=center)Lista de Despliegue ||
||(colspan=8) ----||
||GR|Ventana de texto|siempre sin uso|bytes condicionales|uso de la pantalla|bytes sin uso|bytes usados|Total||
||(colspan=8) ----||
||#	</pre>


]]></description>
</item>
<item>
<title>Re: Experimental new table syntax from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4549</link>
<guid>https://wackowiki.org/doc/Comment4549</guid>
<pubDate>Tue, 24 Feb 2026 11:23:54 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[see <a id="a-5063" href="https://wackowiki.org/doc/Dev/NewFeatures/ExtendTableSyntax" title=" Dev / New Features / Extend Table Syntax">ExtendTableSyntax</a>]]></description>
</item>
<item>
<title>Re: Multilanguage support from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4548</link>
<guid>https://wackowiki.org/doc/Comment4548</guid>
<pubDate>Mon, 16 Feb 2026 10:31:26 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[The <code>accept-language</code> header in your request header determines the language for the guest. The default value may differ between browsers. Usually you can change the value in your browser language settings, where you can fine-tune language order and preferences.<br>
<br>
<a href="https://wackowiki.org/doc/Forum/Discussion/MultilanguageSupport/filemeta?m=show&amp;file_id=1572" title="browser accept language settings (4.7 KiB)" class="file-link"><img src="https://wackowiki.org/doc/file/global/browser_language_settings.webp" loading="lazy" id="a-1572" class="media-default" title="browser accept language settings (4.7 KiB)" alt="browser accept language settings"  width="525" height="327"></a><br>
Use the up/down arrows to reorder the languages — the top language will have the highest priority in the <code>Accept-Language</code> header.<br>
<br>
For advanced control (e.g., setting custom quality values like <code>en;q=0.9</code>), you may need browser extensions like <strong>Locale Switcher</strong>, <strong>Quick Locale Switcher</strong> or tools that modify HTTP headers.<br>
<br>


	<pre class="code">
Accept-Language	en-US,en;q=0.9,de-DE;q=0.8,de;q=0.7	</pre>

<br>


	<pre class="code">
Accept-Language	ru	</pre>

<br>
<br>
The <code>Http</code> class loads the page or the page cache for guests according the determined <code>user_agent_language()</code>, fallback is the set default <code>language</code> in your config.<br>
<br>
Guest settings to set for instance the language are on the ToDo list. <br>
<br>
<strong>Update:</strong><br>
<a href="https://codeberg.org/WackoWiki/wackowiki/commit/4d41b3bbab49b97996e23d457f1dbc624597ceaa" title="" class="iw-commit"><span class="icon"></span>Fixed a bug</a> where the <code>date_pattern</code> got not updated when a guest changes his user-agent language within the session.]]></description>
</item>
<item>
<title>Ответ: Multilanguage support from VictorAlx</title>
<link>https://wackowiki.org/doc/Comment4547</link>
<guid>https://wackowiki.org/doc/Comment4547</guid>
<pubDate>Sun, 15 Feb 2026 19:33:33 +0100</pubDate>
<dc:creator>VictorAlx</dc:creator>
<description><![CDATA[Hi.<br>
How to set default interface language for guests to ru? <br>
Rel 6.2. Multilanguage – ON. Allowed en + ru]]></description>
</item>
<item>
<title>Fixed X11 Colors Highlighting issue from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4546</link>
<guid>https://wackowiki.org/doc/Comment4546</guid>
<pubDate>Sat, 24 Jan 2026 14:03:47 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[<a href="https://codeberg.org/WackoWiki/wackowiki/commit/8fa99c8379a4c8866c4a021f3890244e6a34a96a" title="" class="iw-commit"><span class="icon"></span>X11 Colors patch</a><br>
<br>
No longer interferes with wacko.css definitions.
]]></description>
</item>
<item>
<title>cite &amp; mark from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4545</link>
<guid>https://wackowiki.org/doc/Comment4545</guid>
<pubDate>Fri, 16 Jan 2026 19:15:14 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[Right now it is one and the same, a <code>if</code> clause should be added.<br>
<br>
See <a href="https://codeberg.org/WackoWiki/wackowiki/src/branch/master/src/formatter/class/wackoformatter.php" title="" class="iw-source"><span class="icon"></span>/formatter/class/wackoformatter.php</a><br>
search for <code>x11_colors</code>
]]></description>
</item>
<item>
<title>Комментарий 4544 from VictorAlx</title>
<link>https://wackowiki.org/doc/Comment4544</link>
<guid>https://wackowiki.org/doc/Comment4544</guid>
<pubDate>Fri, 16 Jan 2026 19:04:18 +0100</pubDate>
<dc:creator>VictorAlx</dc:creator>
<description><![CDATA[I would change the names of Wacкo's three classes and give them their own colors. <br>
For examlpe  - .mark-green-w<br>
If I knew where they were generated.
]]></description>
</item>
<item>
<title>X11 colors replacements for red, blue and green are not suited to highlight text from WikiAdmin</title>
<link>https://wackowiki.org/doc/Comment4543</link>
<guid>https://wackowiki.org/doc/Comment4543</guid>
<pubDate>Fri, 16 Jan 2026 18:32:18 +0100</pubDate>
<dc:creator>WikiAdmin</dc:creator>
<description><![CDATA[The highlighting color for <mark class="mark-red">red</mark>, <mark class="mark-blue">blue</mark> and <mark class="mark-green">green</mark> makes the text <mark>unreadable</mark>. <br>
That's a catch. Not sure how this can be solved as long as it uses the same names.]]></description>
</item>
<item>
<title>X11 overrides definitions in wacko.css from VictorAlx</title>
<link>https://wackowiki.org/doc/Comment4542</link>
<guid>https://wackowiki.org/doc/Comment4542</guid>
<pubDate>Fri, 16 Jan 2026 17:08:40 +0100</pubDate>
<dc:creator>VictorAlx</dc:creator>
<description><![CDATA[After enabling X11, overrides definitions in wacko.css<br>
.mark-green {background: #a0ffa4;} &gt;&gt;&gt; #008000<br>
.mark-blue {background: #9ec6ff;} &gt;&gt;&gt; #0000ff<br>
.mark-red {background: #ffbaba;} &gt;&gt;&gt; #ff0000<br>
How to fix it?
]]></description>
</item>
</channel>
</rss>