(Test)
(Replaced content with "Installation of Open CSP is quite easy. See [https://github.com/Open-CSP/open-csp/blob/main/.github/README.md the Open CSP Readme on github].")
Tags: Visual edit Replaced
Line 1: Line 1:
At this moment there is one way to install Open CSP yourself.
+
Installation of Open CSP is quite easy. See [https://github.com/Open-CSP/open-csp/blob/main/.github/README.md the Open CSP Readme on github].
 
 
== Install MediaWiki ==
 
The first step is to [[Mediawikiwiki:Manual:Installing MediaWiki|install MediaWiki]]. If you have done this, go to the next step.
 
 
 
== Install Elasticsearch ==
 
In Open CSP Elasticsearch is used as [https://www.semantic-mediawiki.org/wiki/Help:ElasticStore Elasticstore for Semantic MediaWiki]. Having the data in Elasticsearch is a prerequisite for the use of [[Mediawikiwiki:Extension:WikiSearch|WikiSearch]].
 
 
 
How to install Elasticsearch is described here: https://www.mediawiki.org/wiki/Extension:CirrusSearch#Elasticsearch.
 
 
 
== Download the Open CSP extensions ==
 
Go to [[Extensions-in-open-csp|Extensions in Open CSP]] and download all the extensions that are not included with MediaWiki.
 
 
 
== Configuration of settings ==
 
Our approach is to have LocalSettings.php as it is and put settings in different files. This promotes clarity and upgradability.
 
 
 
=== Change LocalSettings.php ===
 
Add this to the end of LocalSettings.php and create a 'settings' folder in the public_html with these files.
 
<pre>
 
require_once( 'settings/ServerSettings.php' );
 
require_once( 'settings/AdditionalSettings.php' );
 
require_once( 'settings/ExtensionSettings.php' );
 
require_once( 'settings/SkinSettings.php' );
 
</pre>
 
 
 
=== Configure server settings ===
 
<pre>
 
<?php
 
// Project namespace (choose your project namespace)
 
// $wgMetaNamespace = "Wiki";
 
 
 
// Short URL (optional)
 
// $wgArticlePath = "/$1";
 
// $wgUsePathInfo = true;
 
 
 
// Elasticsearch (configure according your ES installation)
 
$GLOBALS['smwgElasticsearchEndpoints'] = [ 'elasticsearch-master.helm.svc.cluster.local:9200', ];
 
$GLOBALS['smwgElasticsearchConfig']['settings']['data'] = [ 'number_of_shards' => 2,
 
'number_of_replicas' => 0 ];
 
 
 
// Disable jobqueue on webrequest (optional, if set to 0 create cronjob to run runJobs.php)
 
// $wgJobRunRate = 0;
 
 
 
</pre>
 
 
 
=== Configure additional settings ===
 
<pre>
 
<?php
 
// Uncomment to see Exception Details
 
// $wgShowExceptionDetails = true;
 
 
 
// Please fill in your page name here:
 
$wgSitename = "CSP Wiki";
 
 
 
// Allow uploads
 
$wgEnableUploads = true;
 
// Under evaluation: Might no longer be required for FlexForm
 
$wgAllowCopyUploads = true;
 
$wgCopyUploadsFromSpecialUpload = true;
 
 
 
// Use img_auth.php for all files served. (optional)
 
// $wgUploadPath = "/img_auth.php";
 
 
 
// Switch off cache (optional)
 
// $wgCachePages = false;
 
// $wgMainCacheType = CACHE_NONE;
 
// $wgCacheDirectory = false;
 
// $wgParserCacheType = CACHE_NONE;
 
 
 
// Enable ElasticSearch as the standard backend
 
$smwgDefaultStore = 'SMWElasticStore';
 
 
 
// Explicitly set wgRawHtml to false, since it is unsafe.
 
$wgRawHtml = false;
 
 
 
// Below are settings for a private wiki that all users can edit
 
// No need to patrol pages
 
$wgUseRCPatrol = false;
 
$wgUseNPPatrol = false;
 
 
 
// Private wiki
 
$wgGroupPermissions['*']['read'] = false;
 
$wgGroupPermissions['*']['edit'] = false;
 
$wgGroupPermissions['*']['createaccount'] = false;
 
 
 
// Give read and write rights to all registered users.
 
$wgGroupPermissions['user']['read'] = true;
 
$wgGroupPermissions['user']['edit'] = true;
 
// Give a faux permission to 'moderator' so it will show up as a role.
 
$wgGroupPermissions['moderator']['read'] = true;
 
 
 
// Allow moderators edit access to the Wiki namespace.
 
$wgNamespaceProtection[NS_PROJECT] = [ 'edit project' ];
 
$wgGroupPermissions['sysop']['edit project'] = true;
 
$wgGroupPermissions['moderator']['edit project'] = true;
 
 
 
</pre>
 
 
 
=== Configure extension settings ===
 
<pre>
 
<?php
 
##### Admin Links
 
wfLoadExtension( 'AdminLinks' );
 
 
 
##### CodeMirror (optional
 
// Required for source editing with CodeMirror.
 
// wfLoadExtension( 'WikiEditor' );
 
// wfLoadExtension( 'CodeMirror' );
 
// $wgDefaultUserOptions['usecodemirror'] = 1;
 
 
 
##### CSPResources
 
wfLoadExtension( 'CSPResources' );
 
$wgCSPShowSmwIndicator = false;
 
 
 
##### DataTransfer
 
wfLoadExtension( 'DataTransfer' );
 
 
 
##### DeleteBatch
 
wfLoadExtension( 'DeleteBatch' );
 
 
 
##### DisplayTitle
 
wfLoadExtension( 'DisplayTitle' );
 
// defaults to true
 
$wgAllowDisplayTitle = true;
 
// defaults to true
 
$wgRestrictDisplayTitle = false;
 
 
 
##### Echo
 
wfLoadExtension( 'Echo' );
 
$wgEchoWatchlistNotifications = true;
 
 
 
$wgExtensionFunctions[] = static function () {
 
global $wgEchoNotifications;
 
unset( $wgEchoNotifications["thank-you-edit"] );
 
 
 
global $wgEchoNotificationCategories;
 
unset( $wgEchoNotificationCategories["edit-user-talk"] );
 
unset( $wgEchoNotificationCategories["mention"] );
 
unset( $wgEchoNotificationCategories["emailuser"] );
 
unset( $wgEchoNotificationCategories["thank-you-edit"] );
 
};
 
 
 
##### FlexForm (formerly: WSForm)
 
wfLoadExtension( 'FlexForm' );
 
$wgFlexFormConfig['sec_key'] = getenv( 'GITLAB_ENVIRONMENT_URL' ) . "salt";
 
$wgFlexFormConfig['auto_save_btn_on'] = 'Autosave on';
 
$wgFlexFormConfig['auto_save_btn_off'] = 'Autosave off';
 
$wgFlexFormConfig['FlexFormDefaultTheme'] = "plain";
 
$wgFlexFormConfig['CreateAndEditForms']['allowedGroups'] = ["sysop","moderator"];
 
$wgFlexFormConfig['form_timeout_limit'] = 7200;
 
 
 
##### Lockdown
 
wfLoadExtension( 'Lockdown' );
 
 
 
##### MultimediaViewer
 
wfLoadExtension( 'MultimediaViewer' );
 
$wgMediaViewerIsInBeta = true;
 
 
 
##### MyVariables
 
wfLoadExtension( 'MyVariables' );
 
 
 
##### NumberFormat
 
require_once "$IP/extensions/NumberFormat/NumberFormat.php";
 
 
 
##### ParserFunctions
 
wfLoadExtension( 'ParserFunctions' );
 
$wgPFEnableStringFunctions = true;
 
$wgPFStringLengthLimit = 80000;
 
 
 
##### Realnames
 
wfLoadExtension( 'Realnames' );
 
$wgRealnamesLinkStyle = "replace";
 
 
 
##### RegexFun
 
require_once $IP . '/extensions/RegexFun/RegexFun.php';
 
 
 
##### ReplaceText
 
wfLoadExtension( 'ReplaceText' );
 
 
 
##### SSO Stack
 
### PluggableAuth
 
### WSAzureAuth
 
### WSOAuth
 
$wgGroupPermissions['*']['autocreateaccount'] = true;
 
wfLoadExtension( 'PluggableAuth' );
 
wfLoadExtension( 'WSAzureAuth' );
 
wfLoadExtension( 'WSOAuth' );
 
$wgPluggableAuth_EnableLocalLogin = true;
 
$wgPluggableAuth_Config['WikibaseSolutionsAAD'] = [
 
'plugin' => 'WSOAuth',
 
'data' => [
 
'type' => 'azure',
 
'clientId' => getenv( 'AAD_CLIENT_ID' ),
 
'clientSecret' => getenv( 'AAD_CLIENT_SECRET' ),
 
'redirectUri' => str_replace( "http",
 
"https",
 
getenv( 'GITLAB_ENVIRONMENT_URL' ) ) . '/Special:PluggableAuthLogin'
 
],
 
'buttonLabelMessage' => 'wikibase-solutions-oauth-button-label'
 
];
 
$wgOAuthAzureTenant = getenv( 'AAD_TENANT_ID' );
 
$wgOAuthAutoPopulateGroups = [ 'sysop',
 
'interface-admin' ];
 
 
 
##### SemanticMediaWiki
 
enableSemantics( 'wikibase.nl' );
 
$smwgConfigFileDir = $IP . '/cache';
 
# Default disabled (CSP Basis#13)
 
$smwgCheckForConstraintErrors = SMW_CONSTRAINT_ERR_CHECK_NONE;
 
const NS_WIDGET = 274;
 
const NS_WIDGET_TALK = 275;
 
$smwgNamespacesWithSemanticLinks[NS_TEMPLATE] = true;
 
$smwgNamespacesWithSemanticLinks[SMW_NS_PROPERTY] = true;
 
$smwgNamespacesWithSemanticLinks[SMW_NS_CONCEPT] = true;
 
$smwgNamespacesWithSemanticLinks[NS_WIDGET] = true;
 
$smwgNamespacesWithSemanticLinks[SMW_NS_PROPERTY_TALK] = false;
 
$smwgNamespacesWithSemanticLinks[SMW_NS_CONCEPT_TALK] = false;
 
$smwgNamespacesWithSemanticLinks[NS_WIDGET_TALK] = false;
 
$smwgPageSpecialProperties = [ '_MDAT',
 
'_CDAT' ];
 
 
 
##### SemanticExtraSpecialProperties
 
wfLoadExtension( 'SemanticExtraSpecialProperties' );
 
$sespgEnabledPropertyList = [ '_EUSER',
 
'_CUSER',
 
'_PAGEID', ];
 
 
 
##### SemanticResultFormats
 
wfLoadExtension( 'SemanticResultFormats' );
 
 
 
##### SyntaxHighlight_GeSHi
 
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
 
 
 
##### TemplateData
 
wfLoadExtension( 'TemplateData' );
 
 
 
##### UrlGetParameters
 
require_once $IP . '/extensions/UrlGetParameters/UrlGetParameters.php';
 
 
 
##### UserFunctions
 
require_once "$IP/extensions/UserFunctions/UserFunctions.php";
 
$wgUFAllowedNamespaces = array_fill( 0,
 
4000,
 
true );
 
$wgUFAllowedNamespaces += array_fill( 50000,
 
5000,
 
true );
 
 
 
##### UserMerge
 
wfLoadExtension( 'UserMerge' );
 
$wgGroupPermissions['bureaucrat']['usermerge'] = true;
 
 
 
##### Variables
 
wfLoadExtension( 'Variables' );
 
 
 
##### VisualEditor
 
wfLoadExtension( 'VisualEditor' );
 
$wgTmpDirectory = $IP . '/images/temp/';
 
$wgExtraSignatureNamespaces = [ NS_MAIN ];
 
$wgVisualEditorEnableWikitext = true;
 
$wgVisualEditorEnableDiffPage = true;
 
for ( $i = 50000; $i < 55000; $i += 2 ) {
 
$wgContentNamespaces[] = $i;
 
}
 
$wgVisualEditorNamespaces = array_merge( $wgContentNamespaces,
 
[ NS_USER ] );
 
 
 
##### Widgets
 
wfLoadExtension( 'Widgets' );
 
 
 
##### WSArrays
 
wfLoadExtension( 'WSArrays' );
 
$wfEnableResultPrinter = true;
 
 
 
##### WSImageVersion
 
wfLoadExtension( 'WSImageVersion' );
 
$wgWSImageVersionVersionDescriptions = [ [ "product" => "CSP",
 
"file" => $IP . "/.version" ], ];
 
 
 
##### WSPageSync
 
wfLoadExtension( 'WSPageSync' );
 
$wgWSPageSync['filePath'] = $IP . '/wsps';
 
 
 
##### WikiSearch (and WikiSearchFront)
 
wfLoadExtension( 'WikiSearch' );
 
wfLoadExtension( 'WikiSearchFront' );
 
 
 
##### WSSemanticParsedText
 
wfLoadExtension( 'WSSemanticParsedText' );
 
$smwgElasticsearchConfig["indexer"]["raw.text"] = true;
 
 
 
##### WSSlots
 
# Note: We still define and append the 'ws-page-props' slot, because it is used on some wikis.
 
wfLoadExtension( 'WSSlots' );
 
$wgWSSlotsDefaultSlotRoleLayout = [ "display" => "none",
 
"region" => "center",
 
"placement" => "append", ];
 
$wgWSSlotsDefaultContentModel = "wikitext";
 
$wgWSSlotsDefinedSlots = [ "ws-base-props", "ws-class-props" ];
 
$wgWSSlotsSemanticSlots = [ "ws-base-props", "ws-class-props" ];
 
$wgWSSlotsDoPurge = true;
 
 
 
##### WSSpaces
 
wfLoadExtension( 'WSSpaces' );
 
for ( $i = 50000; $i < 55000; $i++ ) {
 
$smwgNamespacesWithSemanticLinks[$i] = true;
 
}
 
 
 
##### WSTools
 
wfLoadExtension( 'WSTools' );
 
 
 
</pre>
 
 
 
=== Configure skin settings ===
 
<pre>
 
<?php
 
wfLoadExtension( 'Bootstrap' );
 
wfLoadSkin( 'chameleon' );
 
$wgDefaultSkin = "chameleon";
 
 
 
// Define the location of the css and the layout xml
 
$egChameleonLayoutFile = "$IP/skin/wikibaseLayout.xml";
 
$egChameleonExternalStyleModules = glob( $IP . '/skin/scss/[^_]*.scss' );
 
$wgAllowSiteCSSOnRestrictedPages = true;
 
 
 
// Replace "Powered by SMW" by "Powered by Wikibase"
 
$wgFooterIcons = [ "copyright" => [ "copyright" => [], ],
 
"poweredby" => [ "wikibase" => [ "src" => "/skin/PoweredByWikibase.png",
 
"url" => "https://www.wikibase-solutions.com/",
 
"alt" => "Powered by Wikibase", ], ], ];
 
$wgRightsIcon = null;
 
 
 
// Logo and favicon
 
$wgFavicon = "/skin/favicon.png";
 
 
 
// Common message files
 
$wgMessagesDirs['WikibaseSolutions'] = __DIR__ . '/../skin/i18n';
 
 
 
// Style settings
 
// If you want to use container-max-widths, take this step or it won't respond:
 
// -> Go to skin/wikibaseLayout.xml and from <grid>, remove: 'class="flex-fill" mode="fluid"'
 
// Add this to the following array: 'container-max-widths' => '(sm: 100%, md: 100%, lg: 70vw, xl:
 
// 70vw)'
 
$egChameleonExternalStyleVariables = [ 'primary' => '#0576a8' ];
 
 
 
</pre>
 

Revision as of 11:13, 25 October 2022

Installation of Open CSP is quite easy. See the Open CSP Readme on github.