Jump to content

ICT:FinalConfig-Clutter and protection: Difference between revisions

From Costa Sano MediaWiki
mNo edit summary
No edit summary
 
Line 53: Line 53:
* Slight left‑alignment quirk in toolbar (Vector‑2022 internal behavior)   
* Slight left‑alignment quirk in toolbar (Vector‑2022 internal behavior)   


== 4. Final LocalSettings.php Configuration ==
== 4. Role‑Based Interface Flow (Diagram) ==


=== 4.1 Skin & Interface ===
<pre>
                +----------------------+
                |  User logs in?      |
                +----------+-----------+
                          |
              +-----------+------------+
              |                        |
            Yes                      No
              |                        |
  +-----------+-----------+    +------+------+
  | Is user sysop?        |    | Anonymous  |
  +-----------+-----------+    +-------------+
              |                        |
      +--------+--------+              |
      |                |              |
    Yes              No              |
      |                |              |
+-----+-----+    +-----+-----+  +-----+-----+
| Sysop UI |    | User UI  |  | Public UI |
+-----------+    +-----------+  +-----------+
</pre>
 
== 5. Sidebar Decision Tree (Diagram) ==
 
<pre>
SidebarBeforeOutput Hook
------------------------------------
 
                +----------------------+
                |  Is user anon?      |
                +----------+-----------+
                            |
                    Yes    |    No
                            |
        +-------------------+-------------------+
        |                                      |
+-------+-------+                      +-------+-------+
| Minimal menu  |                      | Is sysop?    |
| (Home only)  |                      +-------+-------+
+---------------+                              |
                                                |
                                      +---------+---------+
                                      |      Yes        |
                                      |                  |
                                +-----+-----+    +-------+-------+
                                | Full menu |    | Simplified    |
                                | (default) |    | menu (Dash,  |
                                +-----------+    | Research, Out)|
                                                  +---------------+
</pre>
 
== 6. Namespace Architecture (Diagram) ==
 
<pre>
+-------------------------------------------------------------+
|                        Namespaces                          |
+----------------------+----------------+----------------------+
| Public Content      | User Content  | Admin / System      |
+----------------------+----------------+----------------------+
| NS_MAIN              | NS_RESEARCH    | NS_ICT              |
| NS_CHAPTER          |                | NS_DASHBOARD        |
| NS_PLACE            |                |                      |
| NS_ORGANISATION      |                |                      |
| NS_PERSON            |                |                      |
| NS_HERITAGE          |                |                      |
| NS_ASSET            |                |                      |
+----------------------+----------------+----------------------+
 
Protection:
- NS_MAIN: protect
- NS_ICT: editinterface
- NS_DASHBOARD: editinterface
</pre>
 
== 7. CSS Layering Model (Diagram) ==
 
<pre>
                +------------------------+
                |  MediaWiki:Common.css |
                |  (applies to everyone) |
                +-----------+------------+
                            |
                            v
                +------------------------+
                | MediaWiki:Group-user.css |
                |  (registered users)      |
                +-----------+--------------+
                            |
                            v
                +------------------------+
                | MediaWiki:Group-sysop.css |
                |  (sysops only)            |
                +---------------------------+
</pre>
 
== 8. Visual Layout Comparison (Diagram) ==
 
=== 8.1 Anonymous ===
<pre>
+-----------------------------------------------------------+
| [No toolbar]                                              |
+-----------------------------------------------------------+
| [No right column]                                        |
|                                                          |
|  FULL-WIDTH CONTENT                                      |
|                                                          |
+-----------------------------------------------------------+
| Sidebar: Home                                            |
+-----------------------------------------------------------+
</pre>
 
=== 8.2 User (Dashboard/Main) ===
<pre>
+-----------------------------------------------------------+
| [No toolbar]                                              |
+-----------------------------------------------------------+
| [No right column]                                        |
|                                                          |
|  FULL-WIDTH CONTENT                                      |
|                                                          |
+-----------------------------------------------------------+
| Sidebar: Dashboard | Research | Logout                    |
+-----------------------------------------------------------+
</pre>
 
=== 8.3 User (Research) ===
<pre>
+-----------------------------------------------------------+
| Namespace | Discussion        Read | Edit | History | ★  |
+-----------------------------------------------------------+
| Right column visible (default Vector)                    |
|                                                          |
|  FULL-WIDTH CONTENT                                      |
|                                                          |
+-----------------------------------------------------------+
| Sidebar: Dashboard | Research | Logout                    |
+-----------------------------------------------------------+
</pre>
 
=== 8.4 Sysop ===
<pre>
+-----------------------------------------------------------+
| Namespace | Discussion        Read | Edit | History | ★  |
| (slightly left-aligned due to Vector-2022 flex behavior)  |
+-----------------------------------------------------------+
| Right column restored                                    |
|                                                          |
|  FULL-WIDTH CONTENT                                      |
|                                                          |
+-----------------------------------------------------------+
| Full default sidebar                                      |
+-----------------------------------------------------------+
</pre>
 
== 9. Permission Flow Diagram ==
 
<pre>
+-----------------------------+
|        User Group          |
+-----------------------------+
| * (anon)                    |
| user                        |
| sysop                      |
+-----------------------------+
 
Permissions:
-----------------------------------------
*      → read only
user  → read + edit (no upload)
sysop  → full control (upload + interface)
-----------------------------------------
</pre>
 
== 10. System Philosophy Diagram ==
 
<pre>
+-----------------------------------------------------------+
|                    SYSTEM PHILOSOPHY                      |
+----------------------+----------------+--------------------+
| Senior-friendly      | Stable        | Successor-ready    |
+----------------------+----------------+--------------------+
| Minimal clutter      | Avoid deep    | Clear structure    |
| Predictable UI      | Vector hacks  | Documented logic  |
| Full-width content  | No JS tricks  | Easy to maintain  |
+----------------------+----------------+--------------------+
</pre>
 
== 11. Final LocalSettings.php Configuration ==
 
=== 11.1 Skin & Interface ===
<pre>
<pre>
wfLoadSkin( 'Vector' );
wfLoadSkin( 'Vector' );
Line 69: Line 258:
</pre>
</pre>


=== 4.2 Global Permissions ===
=== 11.2 Global Permissions ===
<pre>
<pre>
# Anonymous
# Anonymous
Line 90: Line 279:
</pre>
</pre>


=== 4.3 Namespace Protection ===
=== 11.3 Namespace Protection ===
<pre>
<pre>
$wgNamespaceProtection[NS_MAIN]      = [ 'protect' ];
$wgNamespaceProtection[NS_MAIN]      = [ 'protect' ];
Line 97: Line 286:
</pre>
</pre>


=== 4.4 Content Namespaces ===
=== 11.4 Content Namespaces ===
<pre>
<pre>
$wgContentNamespaces = [
$wgContentNamespaces = [
Line 108: Line 297:
</pre>
</pre>


=== 4.5 Sidebar Model (Final Working Version) ===
=== 11.5 Sidebar Model (Final Working Version) ===
<pre>
<pre>
$wgHooks['SidebarBeforeOutput'][] = function ( $skin, &$sidebar ) {
$wgHooks['SidebarBeforeOutput'][] = function ( $skin, &$sidebar ) {
Line 142: Line 331:
</pre>
</pre>


=== 4.6 Cargo Hardening ===
=== 11.6 Cargo Hardening ===
<pre>
<pre>
$wgGroupPermissions['user']['runcargoqueries']  = false;
$wgGroupPermissions['user']['runcargoqueries']  = false;
Line 148: Line 337:
</pre>
</pre>


=== 4.7 Optional Hardening ===
=== 11.7 Optional Hardening ===
<pre>
<pre>
$wgNonincludableNamespaces[] = NS_ICT;
$wgNonincludableNamespaces[] = NS_ICT;
Line 154: Line 343:
</pre>
</pre>


== 5. Final CSS Configuration ==
== 12. Final CSS Configuration ==


=== 5.1 MediaWiki:Common.css (Anonymous users) ===
=== 12.1 MediaWiki:Common.css (Anonymous users) ===
<pre>
<pre>
/* Hide toolbar and right column for anonymous users */
/* Hide toolbar and right column for anonymous users */
Line 170: Line 359:
</pre>
</pre>


=== 5.2 MediaWiki:Group-user.css (Registered users) ===
=== 12.2 MediaWiki:Group-user.css (Registered users) ===
<pre>
<pre>
/* Hide toolbar & right column in Dashboard and Main */
/* Hide toolbar & right column in Dashboard and Main */
Line 194: Line 383:
</pre>
</pre>


=== 5.3 MediaWiki:Group-sysop.css (Sysops) ===
=== 12.3 MediaWiki:Group-sysop.css (Sysops) ===
<pre>
<pre>
/* Restore toolbar */
/* Restore toolbar */
Line 215: Line 404:
</pre>
</pre>


== 6. Known Limitations ==
== 13. Known Limitations ==


=== 6.1 Sysop toolbar alignment ===
=== 13.1 Sysop toolbar alignment ===
Vector‑2022 aligns the sysop toolbar slightly differently due to internal flexbox logic.   
Vector‑2022 aligns the sysop toolbar slightly differently due to internal flexbox logic.   
This is harmless and not worth overriding.
This is harmless and not worth overriding.


=== 6.2 Vector‑2022 sidebar dependency ===
=== 13.2 Vector‑2022 sidebar dependency ===
Vector‑2022 cannot render with an empty sidebar.   
Vector‑2022 cannot render with an empty sidebar.   
Anonymous users must always receive at least one menu item.
Anonymous users must always receive at least one menu item.


=== 6.3 PageForms visibility ===
=== 13.3 PageForms visibility ===
PageForms buttons must be explicitly forced visible for non‑sysops.
PageForms buttons must be explicitly forced visible for non‑sysops.


== 7. Future Extensions ==
== 14. Future Extensions ==


=== 7.1 Public navigation ===
=== 14.1 Public navigation ===
When more public pages exist, extend the anonymous sidebar:
When more public pages exist, extend the anonymous sidebar:
<pre>
<pre>
Line 240: Line 429:
</pre>
</pre>


=== 7.2 Role‑based dashboards ===
=== 14.2 Role‑based dashboards ===
Dashboard namespace can later host:
Dashboard namespace can later host:
* User dashboards   
* User dashboards   
Line 246: Line 435:
* Admin dashboards   
* Admin dashboards   


=== 7.3 Omeka‑S style modular archive ===
=== 14.3 Omeka‑S style modular archive ===
The current structure is ready for:
The current structure is ready for:
* Entities   
* Entities   
Line 253: Line 442:
* Cargo tables   
* Cargo tables   


== 8. Final Notes for Successors ==
== 15. Final Notes for Successors ==
* All interface behavior is controlled by three CSS files and one PHP hook.   
* All interface behavior is controlled by three CSS files and one PHP hook.   
* Avoid modifying Vector‑2022 templates unless absolutely necessary.   
* Avoid modifying Vector‑2022 templates unless absolutely necessary.   

Latest revision as of 17:27, 13 February 2026

MediaWiki Interface & Permissions Architecture (Final Version)

A stable, senior‑friendly, successor‑ready configuration for MW 1.43 + Vector‑2022

1. Purpose of This Document

This document describes the final, working configuration of the MediaWiki interface, permissions, and layout model used for the club’s digital archive. It reflects the validated behavior after the February 2026 refinements.

It is written for future administrators who may inherit the system.

2. Design Philosophy

2.1 Senior‑friendly

  • Minimal clutter
  • Predictable navigation
  • Clean, distraction‑free layout

2.2 Role‑based clarity

  • Anonymous visitors: clean public view
  • Users: simplified workspace
  • Sysops: full interface

2.3 Stability over cleverness

  • Avoid deep Vector‑2022 overrides
  • Avoid fragile JavaScript
  • Prefer CSS and PHP hooks that are easy to maintain

2.4 Successor‑friendly

  • Clear separation of responsibilities
  • Minimal magic
  • Everything documented

3. Final Behavior Overview

3.1 Anonymous visitors

  • No top toolbar
  • No right column
  • Full‑width content
  • Minimal sidebar (“Home”)
  • Clean, public‑facing layout

3.2 Registered users (non‑sysop)

  • No top toolbar in Dashboard/Main
  • Classical toolbar in Research
  • No right column except in Research
  • Full‑width content
  • Simplified sidebar (Dashboard + Research + Logout)
  • PageForms buttons always visible

3.3 Sysops

  • Full toolbar restored
  • Right column restored
  • Full‑width content
  • Classical Vector‑2022 behavior (except for full‑width layout)
  • Slight left‑alignment quirk in toolbar (Vector‑2022 internal behavior)

4. Role‑Based Interface Flow (Diagram)

                +----------------------+
                |   User logs in?      |
                +----------+-----------+
                           |
               +-----------+------------+
               |                        |
             Yes                       No
               |                        |
   +-----------+-----------+     +------+------+
   | Is user sysop?        |     | Anonymous   |
   +-----------+-----------+     +-------------+
               |                        |
      +--------+--------+               |
      |                 |               |
     Yes               No               |
      |                 |               |
+-----+-----+     +-----+-----+   +-----+-----+
| Sysop UI |     | User UI  |   | Public UI |
+-----------+     +-----------+   +-----------+

5. Sidebar Decision Tree (Diagram)

SidebarBeforeOutput Hook
------------------------------------

                 +----------------------+
                 |   Is user anon?      |
                 +----------+-----------+
                            |
                     Yes    |    No
                            |
        +-------------------+-------------------+
        |                                       |
+-------+-------+                       +-------+-------+
| Minimal menu  |                       | Is sysop?     |
| (Home only)   |                       +-------+-------+
+---------------+                               |
                                                |
                                      +---------+---------+
                                      |       Yes         |
                                      |                   |
                                +-----+-----+     +-------+-------+
                                | Full menu |     | Simplified    |
                                | (default) |     | menu (Dash,   |
                                +-----------+     | Research, Out)|
                                                  +---------------+

6. Namespace Architecture (Diagram)

+-------------------------------------------------------------+
|                         Namespaces                          |
+----------------------+----------------+----------------------+
| Public Content       | User Content   | Admin / System       |
+----------------------+----------------+----------------------+
| NS_MAIN              | NS_RESEARCH    | NS_ICT               |
| NS_CHAPTER           |                | NS_DASHBOARD         |
| NS_PLACE             |                |                      |
| NS_ORGANISATION      |                |                      |
| NS_PERSON            |                |                      |
| NS_HERITAGE          |                |                      |
| NS_ASSET             |                |                      |
+----------------------+----------------+----------------------+

Protection:
- NS_MAIN: protect
- NS_ICT: editinterface
- NS_DASHBOARD: editinterface

7. CSS Layering Model (Diagram)

                +------------------------+
                |   MediaWiki:Common.css |
                |  (applies to everyone) |
                +-----------+------------+
                            |
                            v
                +------------------------+
                | MediaWiki:Group-user.css |
                |  (registered users)      |
                +-----------+--------------+
                            |
                            v
                +------------------------+
                | MediaWiki:Group-sysop.css |
                |  (sysops only)            |
                +---------------------------+

8. Visual Layout Comparison (Diagram)

8.1 Anonymous

+-----------------------------------------------------------+
| [No toolbar]                                              |
+-----------------------------------------------------------+
| [No right column]                                         |
|                                                           |
|  FULL-WIDTH CONTENT                                       |
|                                                           |
+-----------------------------------------------------------+
| Sidebar: Home                                             |
+-----------------------------------------------------------+

8.2 User (Dashboard/Main)

+-----------------------------------------------------------+
| [No toolbar]                                              |
+-----------------------------------------------------------+
| [No right column]                                         |
|                                                           |
|  FULL-WIDTH CONTENT                                       |
|                                                           |
+-----------------------------------------------------------+
| Sidebar: Dashboard | Research | Logout                    |
+-----------------------------------------------------------+

8.3 User (Research)

+-----------------------------------------------------------+
| Namespace | Discussion        Read | Edit | History | ★   |
+-----------------------------------------------------------+
| Right column visible (default Vector)                     |
|                                                           |
|  FULL-WIDTH CONTENT                                       |
|                                                           |
+-----------------------------------------------------------+
| Sidebar: Dashboard | Research | Logout                    |
+-----------------------------------------------------------+

8.4 Sysop

+-----------------------------------------------------------+
| Namespace | Discussion        Read | Edit | History | ★   |
| (slightly left-aligned due to Vector-2022 flex behavior)  |
+-----------------------------------------------------------+
| Right column restored                                     |
|                                                           |
|  FULL-WIDTH CONTENT                                       |
|                                                           |
+-----------------------------------------------------------+
| Full default sidebar                                      |
+-----------------------------------------------------------+

9. Permission Flow Diagram

+-----------------------------+
|        User Group           |
+-----------------------------+
| * (anon)                    |
| user                        |
| sysop                       |
+-----------------------------+

Permissions:
-----------------------------------------
*      → read only
user   → read + edit (no upload)
sysop  → full control (upload + interface)
-----------------------------------------

10. System Philosophy Diagram

+-----------------------------------------------------------+
|                    SYSTEM PHILOSOPHY                      |
+----------------------+----------------+--------------------+
| Senior-friendly      | Stable         | Successor-ready    |
+----------------------+----------------+--------------------+
| Minimal clutter      | Avoid deep     | Clear structure    |
| Predictable UI       | Vector hacks   | Documented logic   |
| Full-width content   | No JS tricks   | Easy to maintain   |
+----------------------+----------------+--------------------+

11. Final LocalSettings.php Configuration

11.1 Skin & Interface

wfLoadSkin( 'Vector' );
$wgDefaultSkin = "vector-2022";

$wgVectorNightMode = [
    'beta' => true,
    'logged_in' => true,
    'logged_out' => true,
];

$wgDefaultUserOptions['vector-theme'] = 'night';

11.2 Global Permissions

# Anonymous
$wgGroupPermissions['*']['read']          = true;
$wgGroupPermissions['*']['edit']          = false;
$wgGroupPermissions['*']['createaccount'] = false;

# Users
$wgGroupPermissions['user']['read']       = true;
$wgGroupPermissions['user']['edit']       = true;
$wgGroupPermissions['user']['upload']     = false;
$wgGroupPermissions['user']['reupload']   = false;
$wgGroupPermissions['user']['reupload-own'] = false;

# Sysops
$wgGroupPermissions['sysop']['editinterface'] = true;
$wgGroupPermissions['sysop']['upload']        = true;
$wgGroupPermissions['sysop']['reupload']      = true;
$wgGroupPermissions['sysop']['reupload-own']  = true;

11.3 Namespace Protection

$wgNamespaceProtection[NS_MAIN]      = [ 'protect' ];
$wgNamespaceProtection[NS_ICT]       = [ 'editinterface' ];
$wgNamespaceProtection[NS_DASHBOARD] = [ 'editinterface' ];

11.4 Content Namespaces

$wgContentNamespaces = [
    NS_MAIN, NS_RESEARCH, NS_ICT, NS_DASHBOARD,
    NS_CHAPTER, NS_PLACE, NS_ORGANISATION,
    NS_PERSON, NS_HERITAGE, NS_ASSET
];

$wgNamespacesWithSubpages[NS_DASHBOARD] = true;

11.5 Sidebar Model (Final Working Version)

$wgHooks['SidebarBeforeOutput'][] = function ( $skin, &$sidebar ) {
    $user = $skin->getUser();

    # Anonymous: minimal sidebar
    if ( $user->isAnon() ) {
        $sidebar = [
            'Navigation' => [
                [ 'text' => 'Home', 'href' => '/Hoofdpagina' ]
            ]
        ];
        return true;
    }

    # Users (non-sysop): simplified sidebar
    if ( !$user->isAllowed( 'editinterface' ) ) {
        $sidebar = [
            'Project Navigation' => [
                [ 'text' => 'Dashboard',     'href' => '/Dashboard:Main' ],
                [ 'text' => 'Research Area', 'href' => '/Research:Main' ],
            ],
            'Account' => [
                [ 'text' => 'Logout', 'href' => '/Special:UserLogout' ]
            ]
        ];
        return true;
    }

    # Sysop: default sidebar
    return true;
};

11.6 Cargo Hardening

$wgGroupPermissions['user']['runcargoqueries']   = false;
$wgGroupPermissions['user']['recreatecargodata'] = false;

11.7 Optional Hardening

$wgNonincludableNamespaces[] = NS_ICT;
$wgRedirectOnLogin = "Hoofdpagina";

12. Final CSS Configuration

12.1 MediaWiki:Common.css (Anonymous users)

/* Hide toolbar and right column for anonymous users */
.ns-0 .vector-page-toolbar,
.ns-0 .vector-column-end {
    display: none !important;
}

/* Full-width layout */
.ns-0 .mw-content-container {
    max-width: none !important;
}

12.2 MediaWiki:Group-user.css (Registered users)

/* Hide toolbar & right column in Dashboard and Main */
.ns-3020 .vector-page-toolbar,
.ns-0    .vector-page-toolbar,
.ns-3020 .vector-column-end,
.ns-0    .vector-column-end {
    display: none !important;
}

/* Full-width layout */
.ns-3020 .mw-content-container,
.ns-0    .mw-content-container {
    max-width: none !important;
}

/* Ensure PageForms buttons are always visible */
.mw-body-content .mw-ui-button,
.mw-body-content .pfForm {
    display: inline-block !important;
    visibility: visible !important;
}

12.3 MediaWiki:Group-sysop.css (Sysops)

/* Restore toolbar */
html body.skin-vector-2022 .vector-page-toolbar {
    display: flex !important;
    visibility: visible !important;
}

/* Restore right column in normal flow */
html body.skin-vector-2022 .vector-column-end {
    display: block !important;
    visibility: visible !important;
    position: static !important;
}

/* Full-width content */
html body.skin-vector-2022 .mw-content-container {
    max-width: none !important;
}

13. Known Limitations

13.1 Sysop toolbar alignment

Vector‑2022 aligns the sysop toolbar slightly differently due to internal flexbox logic. This is harmless and not worth overriding.

13.2 Vector‑2022 sidebar dependency

Vector‑2022 cannot render with an empty sidebar. Anonymous users must always receive at least one menu item.

13.3 PageForms visibility

PageForms buttons must be explicitly forced visible for non‑sysops.

14. Future Extensions

14.1 Public navigation

When more public pages exist, extend the anonymous sidebar:

'Navigation' => [
    [ 'text' => 'Home', 'href' => '/Hoofdpagina' ],
    [ 'text' => 'About', 'href' => '/Main:About' ],
    [ 'text' => 'Archive', 'href' => '/Main:Archive' ]
]

14.2 Role‑based dashboards

Dashboard namespace can later host:

  • User dashboards
  • Research dashboards
  • Admin dashboards

14.3 Omeka‑S style modular archive

The current structure is ready for:

  • Entities
  • Assets
  • Relations
  • Cargo tables

15. Final Notes for Successors

  • All interface behavior is controlled by three CSS files and one PHP hook.
  • Avoid modifying Vector‑2022 templates unless absolutely necessary.
  • Keep the anonymous sidebar non‑empty.
  • Maintain full‑width layout for consistency.
  • Document every change in ICT namespace.