Wikisphere extensions: Difference between revisions

From Wikisphere
Jump to navigation Jump to search
No edit summary
(Reverted edits by Admin (talk) to last revision by [[User:en>Admin|en>Admin]])
Tags: Replaced Rollback
 
(8 intermediate revisions by one other user not shown)
Line 1: Line 1:
Through the following set of Wikisphere extensions you can:


* assign page and sub-pages to specific users, specific groups or any combination of the two, with specific roles and permissions, through a user-friendly control panel
== Wikisphere ==
*enforce an "indirect moderation" on your wiki. You don't moderate pages (or page versions) one by one as in [[mediawikiwiki:Extension:FlaggedRevs|FlaggedRevs]] or [[mediawikiwiki:Extension:Approved_Revs|Approved_Revs]], instead, you assign a page and its sub-pages to authorized user(s) or group(s) which can edit their properties. When the page is ready for publishing, either you publish it as moderator, or you provide the page creator with the relevant permission
* easily set an empty title for pages, without having to resort in solutions [https://www.hostknox.com/knowledgebase/703/How-to-hide-page-titles-in-MediaWiki.html#hide-page-titles-with-magic-word-DISPLAYTITLE like the following]
* easily assign display title, language, content model, and SEO metadata to each page and its sub-pages
*easily create pages with pre-loaded content through regular expressions
*assign an user to a page for a given period, e.g. until your team members are affiliated to your organization
* ... (to be completed)




=== Common ===


==Modules==
Common methods required from the various Wikisphere extensions
(each module is technically an autonomous extension)
{| class="wikitable"
|+
!name
!description
!required extensions
|-
|Wikisphere common
|Common methods required from the various Wikisphere extensions
|Semantic Mediawiki/PageForms
|-
|Wikisphere PageProperties
|Allows to easily edit display title, language and content model of a page. Provides support for SEO and published/draft state of pages
|Wikisphere common
|-
|Wikisphere PageOwnership
|Provides support for page ownership and attribution
|Wikisphere common
|-
|Wikisphere Subpages
|Provides a list of sub-pages on the navigation panel, a magic word to display sub-pages of a given page, and a special page to navigate through sub-pages
|none
|-
|Wikisphere FileInclusion
|A simple extension to display the content of authorized files within pages
|SyntaxHighlight (optionally)
|-
|Wikisphere PreloadContent
|developed as global variable $wgWikispherePreloadContent (see below), '''to-do''': create a special page and move to a dedicated extension
|Wikisphere common
|}




==Configuration==
=== Subpages ===
{| class="wikitable"
|+
!variable
!possible values
!description
|-
|$wgWikispherePreloadContent
|object
|On page creation, automatically creates one or more pages associated to the matched regular expression:
<pre>
$wgWikispherePreloadContent = [


[
Provides the list of subpages on the navigation panel, a magic word to display subpages of a given page, and a special page to navigate through suppages


// can be a regular expression
// 1638769189/News_articles/2021/12/article_test
'match' => '#^([^/]+)/(News articles|News digests)/([^/]+)/([^/]+)/([^/]+)$#',
'pages' => [
[
'page' => '$1/$2',
'template' => "Subpages list"
],
[
'page' => '$1/$2/$3',
'template' => "Subpages list"
],
]


],
=== PageProperties ===


...
Provides SEO and published/draft state of pages. Only admins and page creators can publish a page.




];
=== PageOwnership ===
</pre>
|-
|$wgWikisphereUploadDisableWarnings
|true/false
|disables "was-deleted", "duplicate", "duplicate-archive" and "bad-prefix" warnings on file upload (requires the patches in the file [[Source code & patches/includes/upload/UploadBase.php|includes/upload/UploadBase.php]])
|-
|$wgWikisphereUploadUnderCurrentPage
|true/false
|uploads images under the current page, so that the picture file name will be [title of current page]/[picture filename]
This allows the use of generic names, which are by contrast characterized by their path.


This feature requires the patches [[Source code & patches#Files.2FUpload|described here]] and is currently used in PageForms, input with "uploadable" parameter and $wgPageFormsSimpleUpload set to true, and it works also with the "one-step process" using [[mediawikiwiki:Extension:Page_Forms/Linking_to_forms#The_one-step_process|page name formulas]].


It does also exist a patch [[Source code & patches#MsUpload|MsUpload]] currently not used.
=== Preload content ===
|-
|$wgWikisphereOnBoardCreateOwnedPages
|object
|if the extension Wikisphere PageOwnership is installed, automatically creates "on board" owned page as defined in an object like
<pre>
$wgWikisphereOnBoardCreateOwnedPages = [
[
'page_name' => '{{realname_or_username}}',
'role' => 'editor',
'permissions' => 'edit,create,subpages',
'template' => "Personal_page_name"
],


...


];
</pre>
|-
|$wgWikispherePostOnWikisphere
|true/false
|posts the semantic content on the global wikisphere.org database (front-end)
|-
|$wgWikisphereHandleDraftState
|none, new, all, owned
|requires the extension Wikisphere PageProperties. If set to "none" the pages don't need to be explicitly published through the page Properties (reachable from the dropdown of page actions, see picture ...) in order to be accessible to everybody. If set to "new" only new pages need to be explicitly published to be accessible to everybody. If set to "owned" only owned pages and sub-pages need to be published in order to be accessible to everybody or to be posted on the global  wikisphere.org database (front-end)
|}


Once installed, the extension '''Wikisphere PageOwnership''' prevents standard users to edit pages to which they have not been assigned (individually, or as a group).


{| class="wikitable"
== CI Forms ==
|+groups
!name
!description
!example
|-
|Unassigned pages editor (wikisphere-regularpageseditors)
|members of this group can edit unassigned pages (pages without owners)
|
|-
|Moderator (wikisphere-moderator)
|members of this group can insert other users in the group  "Unassigned pages editor"
|
|}
{| class="wikitable"
|+rights
!right
!description
!example
|-
|wikisphere-editregularpages
|allow to edit unassigned pages (pages without an owner)
|$wgGroupPermissions['*']['wikisphere-editregularpages'] = false:
$wgGroupPermissions['user']['wikisphere-editregularpages'] = false;
|}
 
 
To further restrict editing of system namespaces you can use [[mediawikiwiki:Manual:$wgNamespaceProtection|$wgNamespaceProtection]]
 
<pre>
// restrict editing
$wgNamespaceProtection[NS_PROJECT]  =
$wgNamespaceProtection[NS_TEMPLATE] =
$wgNamespaceProtection[NS_CATEGORY] =
$wgNamespaceProtection[NS_MODULE]  =
$wgNamespaceProtection[PF_NS_FORM]  =
$wgNamespaceProtection[NS_MEDIAWIKI]  =
// if restricted new users cannot create an account
//$wgNamespaceProtection[NS_SPECIAL]  =
 
['editinterface'];
</pre>
{| class="wikitable"
|+custom semantic properties
!property
!description
|-
|wikisphere published (__wikisphere_published)
|marks a page as published (through the Page properties control panel)
|}
 
==Magic Words / Parser functions==
{| class="wikitable"
|+
!name
!use case
!description
!extension
|-
|wikisphere_userpages
|<nowiki>{{wikisphere_userpages}}</nowiki>
|prints the list of pages owned by the logged-in user (to be used in forms, in order to create new pages under pages owned by the creator)
|Wikisphere PageOwnership
|-
|wikisphere_subpages
|<nowiki>{{#wikisphere_subpages: }}</nowiki>
|prints the list of subpages of a given page, it accept a prefix as unnamed parameter, and "template" and "limit" as names parameters
|Wikisphere Subpages
|-
|noparse
|<nowiki>{{#noparse: <a href="">my link</a>}}</nowiki>
|can be used to print raw html within the page when [[mediawikiwiki:Manual:$wgRawHtml|$wgRawHtml]] is disabled
|Wikisphere common
|-
|hostname
|<nowiki>{{hostname}}</nowiki>
|prints the host name, currently used by [[Template:Pdf thumbnail|Pdf thumbnail]] to open display the pdf file from the pdf viewer of the browser
|Wikisphere common
|-
|registration_timestamp
|<nowiki>{{registration_timestamp}}</nowiki>
|print the Unix timestamp of user's registration date
|Wikisphere common
|-
|realname_or_username
|<nowiki>{{realname_or_username}}</nowiki>
|prints logged-in real name, or the username if the real name is empty
|Wikisphere common
|-
|realname
|<nowiki>{{realname}}</nowiki>
|prints logged-in real name
|Wikisphere common
|-
|username
|<nowiki>{{username}}</nowiki>
|prints logged-in username
|Wikisphere common
|-
|random_code
|<nowiki>{{#random_code: 8}}</nowiki>
|prints a random code of n digits
|Wikisphere common
|}
 
 
==Features==
 
 
 
===Wikisphere Common===
 
*Displays the list of forms on the left navigation panel
*outputs script global variables on page head
*implements "userCan" on behalf of other Wikisphere extensions
*displays "Powered by WikiSphere" icon
*implements magic words "noparse" and "hostname"
*implements basic functions required by other Wikisphere extensions
*implements the hooks necessary to move the files uploaded using the "[[mediawikiwiki:Extension:Page_Forms/Linking_to_forms#The_one-step_process|one-step process]]" of PageForms under the target page (if the configuration variable  $wgWikisphereUploadUnderCurrentPage is set to true)
*implements $wgWikispherePreloadContent to automatically create pages when the title of a created page matches a regular expression
 
 
===PageProperties===
 
*implements the special page PageProperties in order to assign properties like display_title, language, published state, meta (Html metadata), and more, to any page
*displays the action "Properties" in the page's dropdown menu
*prints HTML metadata in the head of the page
*handles the link rendered in each page according to the saved display_title
*retrieves and saves the page's semantic data on the global Wikisphere database (if the variable  $wgWikispherePostOnWikisphere is enabled)
 
<br />
===PageOwnership===
 
*displays the action "Ownership" in the page's dropdown menu
*displays the list of personal pages on the left navigation panel
*implements the parser function "wikisphere_userpages" to print the list of pages owned by the logged-in user
*implements the special page PageOwnership in order to assign specific users and/or specific groups specific roles and permissions
 
 
===Subpages===
 
*implements the parser function "wikisphere_subpages"
*displays the list of subpages of the current page on the left navigation panel
*implements the special page WikisphereSubpages in order to display and navigate through subpages of a given page
*allows to format the list of sub-pages using a template
 
 
 
== Use-cases ==
 
* A page with the user's real name and one with timestamp of account registration as titles, are automatically created and the user is assigned to them as "editor" (an editor can edit a page but cannot edit its properties, including its publishing state)
* Regular users cannot create new pages, except sub-pages of personal/owned pages, and pages created through forms
* All the pages without an owner are visible to other users, and the published state of pages with an owner has to be set to true in order to let other users to access them
*New pages created through forms are immediately visible as long as they are not saved under an owned page, while inherit the publishing state of the owned page if they are saved below it.
 
 
 
Installed extensions: Wikisphere common, Wikisphere PageProperties, Wikisphere PageOwenrship
{| class="wikitable"
|+'''Configuration'''
!variable
!value
|-
|$wgWikisphereAllowEditRegularPages
|false
|-
|$wgWikisphereHandleDraftState
|owned
|-
|$wgWikisphereCreateOwnedPageRealName
|<pre>
$wgWikisphereOnBoardCreateOwnedPages = [
[
'page_name' => '{{registration_timestamp}}',
'role' => 'editor',
'content' => 'This is your anonymous page ...'
],
 
[
'page_name' => '{{realname_or_username}}',
'role' => 'editor',
'content' => 'This is your page ...'
],
 
];
</pre>
|}
As above, with the following differences:
 
* users can edit all regular pages (i.e. pages without an owner), and can create regular new pages
* they cannot edit page properties of existing regular pages
* newly
 
 
Installed extensions: Wikisphere common, Wikisphere PageProperties, Wikisphere PageOwenrship
{| class="wikitable"
|+'''Configuration'''
!variable
!value
|-
|$wgWikisphereAllowEditRegularPages
|true
|-
|$wgWikisphereAutoAssignNewRegularPages
|editor
|-
|$wgWikisphereHandleDraftState
|owned
|-
|$wgWikisphereCreateOwnedPageRealName
|<pre>
$wgWikisphereOnBoardCreateOwnedPages = [
[
'page_name' => '{{registration_timestamp}}',
'role' => 'editor',
'content' => 'This is your anonymous page ...'
],
 
[
'page_name' => '{{realname_or_username}}',
'role' => 'editor',
'content' => 'This is your page ...'
],
 
];
</pre>
|}

Latest revision as of 21:36, 29 April 2024

Wikisphere[edit | edit source]

Common[edit | edit source]

Common methods required from the various Wikisphere extensions


Subpages[edit | edit source]

Provides the list of subpages on the navigation panel, a magic word to display subpages of a given page, and a special page to navigate through suppages


PageProperties[edit | edit source]

Provides SEO and published/draft state of pages. Only admins and page creators can publish a page.


PageOwnership[edit | edit source]

Preload content[edit | edit source]

CI Forms[edit | edit source]