summaryrefslogtreecommitdiff
path: root/www/wiki/deployments/base
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/deployments/base')
-rw-r--r--www/wiki/deployments/base/LocalSettings.php453
-rw-r--r--www/wiki/deployments/base/README.md1
-rw-r--r--www/wiki/deployments/base/i18n/es.json3
-rw-r--r--www/wiki/deployments/base/layout.xml115
-rw-r--r--www/wiki/deployments/base/logo.svg84
-rw-r--r--www/wiki/deployments/base/style.less52
6 files changed, 708 insertions, 0 deletions
diff --git a/www/wiki/deployments/base/LocalSettings.php b/www/wiki/deployments/base/LocalSettings.php
new file mode 100644
index 00000000..744dbb4e
--- /dev/null
+++ b/www/wiki/deployments/base/LocalSettings.php
@@ -0,0 +1,453 @@
+<?php
+# ----
+# Copyright (C) 2013-2020 - REEVOTech (http://tech.reevo.org)
+# License: Affero GPL version 3 - http://www.gnu.org/licenses/agpl.html
+# ----
+// Replace this line with the correct deployment config file
+// include('/srv/reevotech/etc/global_config-ecoversities.php');
+
+
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+$wgMetaNamespace = $REEVO_CODENAME;
+$wgScriptPath = "";
+
+## The URL path to static resources (images, scripts, etc.)
+$wgResourceBasePath = $wgScriptPath;
+$wgScriptPath = "";
+$wgArticlePath = "/$1";
+$wgUsePathInfo = true;
+$wgResourceBasePath = $wgScriptPath;
+
+
+## Database settings
+$wgDBtype = "mysql";
+$wgDBserver = "localhost";
+$wgDBname = $REEVO_DB_WIKI;
+$wgDBuser = $REEVO_DB_USER;
+$wgDBpassword = $REEVO_DB_PASS;
+$wgDBprefix = "";
+$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
+$wgDBmysql5 = false;
+
+
+## Registro y perfil de usuarios
+$wgHiddenPrefs[] = 'realname';
+$wgHiddenPrefs[] = 'genre';
+$wgGroupPermissions['*']['createaccount'] = true;
+$wgRedirectOnLogin = 'Special:MyPage';
+
+## Permisos
+// $wgEmailConfirmToEdit = true;
+// $wgGroupPermissions['*']['edit'] = false;
+// $wgGroupPermissions['*']['createpage'] = true;
+$wgGroupPermissions['user']['edit'] = true;
+$wgGroupPermissions['user']['upload_by_url'] = true;
+
+
+## Email
+$wgEmergencyContact = "webmaster@$REEVO_URL";
+$wgPasswordSender = "webmaster@$REEVO_URL";
+$wgEnableEmail = true;
+$wgEnableUserEmail = true; # UPO
+$wgEnotifUserTalk = false; # UPO
+$wgEnotifWatchlist = false; # UPO
+$wgEmailAuthentication = true;
+
+## Cache
+$wgMainCacheType = CACHE_ACCEL;
+$wgMemCachedServers = [];
+
+
+## Subidas e imagenes
+$wgEnableUploads = true;
+$wgUseImageMagick = true;
+$wgImageMagickConvertCommand = "/usr/bin/convert";
+$wgAllowImageTag = true;
+// $wgAllowExternalImages = true;
+$wgUseInstantCommons = false;
+$wgDiff3 = "/usr/bin/diff3";
+$wgAllowCopyUploads = true;
+
+
+## Idioma
+$wgShellLocale = "C.UTF-8";
+$wgLanguageCode = "en";
+$wgMessagesDirs['Custom'] = "$IP/deployments/$REEVO_CODENAME/i18n";
+$wgMessagesDirs['Reevo'] = "../../i18n/wiki/reevo";
+$wgMessagesDirs['ISO'] = "../../i18n/wiki/iso";
+
+## Licencia
+$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
+$wgRightsUrl = "https://creativecommons.org/licenses/by-sa/4.0/";
+$wgRightsText = "Creative Commons Atribución-CompartirIgual";
+$wgRightsIcon = "$wgResourceBasePath/resources/assets/licenses/cc-by-sa.png";
+
+
+## Namespaces
+// define("NS_AUDIOVISUAL", 3000); // Este número DEBE ser par.
+// define("NS_AUDIOVISUAL_TALK", 3001); // Éste DEBE ser el siguiente entero impar.
+// $wgExtraNamespaces[NS_AUDIOVISUAL] = "Audiovisual";
+// $wgExtraNamespaces[NS_AUDIOVISUAL_TALK] = "Audiovisual_talk";
+// $wgContentNamespaces[] = NS_AUDIOVISUAL;
+// $smwgNamespacesWithSemanticLinks[NS_AUDIOVISUAL] = true;
+// $wgNamespaceAliases['Pelicula'] = NS_AUDIOVISUAL;
+// $wgNamespaceAliases['Pelicula_talk'] = NS_AUDIOVISUAL_TALK;
+// $wgNamespacesWithSubpages[NS_AUDIOVISUAL] = true;
+
+// define("NS_PRENSA", 3002); // Este número DEBE ser par.
+// define("NS_PRENSA_TALK", 3003); // Éste DEBE ser el siguiente entero impar.
+// $wgExtraNamespaces[NS_PRENSA] = "Prensa";
+// $wgExtraNamespaces[NS_PRENSA_TALK] = "Prensa_talk";
+// $wgContentNamespaces[] = NS_PRENSA;
+// $smwgNamespacesWithSemanticLinks[NS_PRENSA] = true;
+// $wgNamespacesWithSubpages[NS_PRENSA] = true;
+
+define("NS_EXPERIENCIE", 3004); // Este número DEBE ser par.
+define("NS_EXPERIENCIE_TALK", 3005); // Éste DEBE ser el siguiente entero impar.
+$wgExtraNamespaces[NS_EXPERIENCIE] = "Experiencia";
+$wgExtraNamespaces[NS_EXPERIENCIE_TALK] = "Experiencia_talk";
+$wgContentNamespaces[] = NS_EXPERIENCIE;
+$smwgNamespacesWithSemanticLinks[NS_EXPERIENCIE] = true;
+$wgNamespacesWithSubpages[NS_EXPERIENCIE] = true;
+
+// define("NS_REVISAR", 3006); // Este número DEBE ser par.
+// define("NS_REVISAR_TALK", 3007); // Éste DEBE ser el siguiente entero impar.
+// $wgExtraNamespaces[NS_REVISAR] = "Revisar";
+// $wgExtraNamespaces[NS_REVISAR_TALK] = "Revisar_talk";
+// $wgContentNamespaces[] = NS_REVISAR;
+// $smwgNamespacesWithSemanticLinks[NS_REVISAR] = true;
+// $wgNamespacesWithSubpages[NS_REVISAR] = true;
+//
+// define("NS_EVENTO", 3008); // Este número DEBE ser par.
+// define("NS_EVENTO_TALK", 3009); // Éste DEBE ser el siguiente entero impar.
+// $wgExtraNamespaces[NS_EVENTO] = "Evento";
+// $wgExtraNamespaces[NS_EVENTO_TALK] = "Evento_talk";
+// $wgContentNamespaces[] = NS_EVENTO;
+// $smwgNamespacesWithSemanticLinks[NS_EVENTO] = true;
+// $wgNamespacesWithSubpages[NS_EVENTO] = true;
+
+// $wgNamespaceProtection[NS_MAIN] = $wgNamespaceProtection[NS_USER] =
+// $wgNamespaceProtection[NS_PROJECT] = $wgNamespaceProtection[NS_IMAGE] =
+// $wgNamespaceProtection[NS_TEMPLATE] = $wgNamespaceProtection[NS_HELP] =
+// $wgNamespaceProtection[NS_CATEGORY] = $wgNamespaceProtection[NS_AUDIOVISUAL] =
+// $wgNamespaceProtection[NS_AUDIOVISUAL] = $wgNamespaceProtection[NS_EXPERIENCIE] =
+// $wgNamespaceProtection[NS_EVENTO] =
+// $wgNamespaceProtection[NS_PRENSA] = array( 'autoconfirmed' );
+
+$wgNamespaceProtection[NS_EXPERIENCIE] = array( 'autoconfirmed' );
+
+// $wgGroupPermissions['*']['revisar-edit'] = true;
+// $wgNamespaceProtection[NS_REVISAR] = array( 'revisar-edit' );
+
+$wgNamespacesToBeSearchedDefault = [
+ // NS_MAIN => true,
+ // NS_CATEGORY => true,
+ // NS_USER => true,
+ NS_EXPERIENCIE => true
+ // NS_PRENSA => true,
+ // NS_AUDIOVISUAL => true,
+ // NS_EVENTO => true
+];
+
+$wgNamespaceAliases = array(
+ // 'U' => NS_USER,
+ 'E' => NS_EXPERIENCIE,
+ // 'P' => NS_PRENSA,
+ // 'A' => NS_AUDIOVISUAL,
+ // 'V' => NS_EVENTO
+);
+
+
+###### Skin y visuales
+
+## Default skin
+// wfLoadSkin( 'Vector' );
+// wfLoadSkin( 'chameleon' );
+$wgDefaultSkin = 'chameleon';
+$wgLogo = "/deployments/$REEVO_CODENAME/logo.svg";
+$egChameleonLayoutFile = $IP . '/deployments/'. $REEVO_CODENAME .'/layout.xml';
+$wgRawHtml = true;
+
+$egChameleonExternalStyleModules = [
+ $IP . '/skins/bo/assets/fontawesome/css/all.css' => $wgScriptPath, // (ya NO se carga mediante JS en /MediaWiki:Common.js)
+ $IP . '/skins/bo/bootswatch.less' => $wgScriptPath,
+ $IP . '/skins/bo/variables.less' => $wgScriptPath,
+ $IP . '/skins/bo/bo.less' => $wgScriptPath,
+ $IP . '/skins/bo/reevo.less' => $wgScriptPath,
+ $IP . '/deployments/'. $REEVO_CODENAME .'/style.less' => $wgScriptPath
+ ];
+
+\Bootstrap\BootstrapManager::getInstance()->addCacheTriggerFile( $IP . '/deployments/'. $REEVO_CODENAME .'/style.less' );
+
+
+$egChameleonExternalLessVariables = [
+ 'font-size-base' => '16px',
+ 'font-size-large' => '18px',
+ 'font-size-small' => '10px',
+ 'font-size-h1' => '22px',
+ 'font-size-h2' => '20px',
+ 'font-size-h3' => '18px',
+ 'line-height-base' => '1.5',
+ 'navbar-margin-bottom' => '10px',
+ 'navbar-default-bg' => 'rgba( 94, 157, 200, 1 )',
+ 'navbar-default-border' => 'rgba( 94, 157, 200, 1 )',
+ 'nav-tabs-active-link-hover-color' => 'rgba( 255, 255, 255, 1 )',
+ 'input-border-focus' => 'rgba(0, 0, 0, .1)'
+ ];
+
+
+###### Extensiones
+
+## NoTitle
+require_once "$IP/extensions/NoTitle/NoTitle.php";
+$wgRestrictDisplayTitle = false;
+
+## Cite
+wfLoadExtension( 'Cite' );
+
+## Semantic Mediawiki
+// require_once "$IP/extensions/SemanticMediaWiki/SemanticMediaWiki.php";
+enableSemantics( $REEVO_URL );
+// $smwgQMaxInlineLimit = 2000;
+wfLoadExtension( 'SemanticResultFormats' );
+wfLoadExtension( 'SemanticFormsSelect' );
+$smwgQMaxInlineLimit = 2000;
+
+## ModernTimeline
+wfLoadExtension( 'ModernTimeline' );
+
+## PageForms
+wfLoadExtension( 'PageForms' );
+
+## Maps
+wfLoadExtension( 'Maps' );
+require_once $IP . '/extensions/Maps/Maps_Settings.php';
+
+## ParserFunctions
+wfLoadExtension( 'ParserFunctions' );
+$wgPFEnableStringFunctions = true;
+
+## RegexFunctions
+require_once "$IP/extensions/RegexFunctions/RegexFunctions.php";
+
+## EmbedVideo
+wfLoadExtension( 'EmbedVideo' );
+
+## ExternalData
+require_once "$IP/extensions/ExternalData/ExternalData.php";
+
+## DataTrasnfer
+wfLoadExtension( 'DataTransfer' );
+include_once "$IP/extensions/DataTransfer/DataTransfer.php";
+
+## WikiEditor
+wfLoadExtension( 'WikiEditor' );
+$wgDefaultUserOptions['usebetatoolbar'] = 1;
+
+# MixedNamespaceSearchSuggestions
+wfLoadExtension( 'MixedNamespaceSearchSuggestions' );
+
+## LanguageTag
+// require_once "$IP/extensions/LanguageTag/LanguageTag.php";
+// $wgLanguageTagLanguages = array( "en", "es", "pt" );
+//
+// ## UniversalLanguageSelector
+// wfLoadExtension( 'UniversalLanguageSelector' );
+// $wgULSAcceptLanguageList = $wgLanguageTagLanguages;
+// $wgULSIMEEnabled = false;
+// $wgULSPosition = "interlanguage";
+
+## Translate
+// include_once "$IP/extensions/Translate/Translate.php";
+// $wgGroupPermissions['user']['translate'] = true;
+// // $wgGroupPermissions['translator']['skipcaptcha'] = true; // Bug 34182: needed with ConfirmEdit
+// $wgTranslateDocumentationLanguageCode = 'qqq';
+// $wgGroupPermissions['sysop']['pagetranslation'] = true;
+
+// $wgPageLanguageUseDB = true;
+// $wgGroupPermissions['user']['pagelang'] = true;
+//
+// $wgTranslateCC['wiki-sidebar'] = function( $id ) {
+// $mg = new WikiMessageGroup( $id, 'sidebar-messages' );
+// $mg->setLabel( 'Sidebar' );
+// $mg->setDescription( 'Messages used in the sidebar of this wiki' );
+// return $mg;
+// };
+
+// wfLoadExtension( 'SimpleLanguageSelector' );
+// $wgSimpleLangageSelectionLangList = ['es', 'en', 'pt'];
+// $wgSimpleLangageSelectionShowTranslateLink = true;
+
+## EmailLogin
+wfLoadExtension( 'EmailLogin' );
+
+## GetUserName
+require_once "$IP/extensions/GetUserName/GetUserName.php";
+
+## AbuseFilter
+wfLoadExtension( 'AbuseFilter' );
+$wgGroupPermissions['sysop']['abusefilter-modify'] = true;
+$wgGroupPermissions['*']['abusefilter-log-detail'] = true;
+$wgGroupPermissions['*']['abusefilter-view'] = true;
+$wgGroupPermissions['*']['abusefilter-log'] = true;
+$wgGroupPermissions['sysop']['abusefilter-private'] = true;
+$wgGroupPermissions['sysop']['abusefilter-modify-restricted'] = true;
+$wgGroupPermissions['sysop']['abusefilter-revert'] = true;
+
+## Nuke
+wfLoadExtension( 'Nuke' );
+
+## BlockBatch
+require_once "$IP/extensions/BlockBatch/BlockBatch.php";
+
+## OpenGraphMeta
+wfLoadExtension( 'OpenGraphMeta' );
+
+## Description2
+wfLoadExtension( 'Description2' );
+$wgEnableMetaDescriptionFunctions = true;
+
+## HideNamespace
+require_once "$IP/extensions/HideNamespace/HideNamespace.php";
+$wgHidensNamespaces = array(
+ // NS_PRENSA,
+ // NS_AUDIOVISUAL,
+ // NS_USER,
+ NS_EXPERIENCIE,
+ // NS_EVENTO,
+ // NS_REVISAR,
+);
+
+## CSS
+wfLoadExtension( 'CSS' );
+
+## MultimediaViewer
+wfLoadExtension( 'MultimediaViewer' );
+
+## UploadWizard
+
+wfLoadExtension( 'UploadWizard' );
+$wgApiFrameOptions = 'SAMEORIGIN';
+$wgUploadWizardConfig = array(
+ 'debug' => false,
+ 'autoAdd' => array(
+ 'wikitext' => array(
+ 'This file was uploaded with the UploadWizard extension.'
+ ),
+ 'categories' => array(
+ 'Uploaded with UploadWizard'
+ ),
+ ), // Should be localised to the language of your wiki instance
+ 'feedbackPage' => 'Feedback about UploadWizard',
+ 'altUploadForm' => 'Special:Upload',
+ 'fallbackToAltUploadForm' => false,
+ 'feedbackLink' => false, // Disable the link for feedback (default: points to Commons)
+ 'alternativeUploadToolsPage' => false, // Disable the link to alternative upload tools (default: points to Commons)
+ 'enableFormData' => true, // Enable FileAPI uploads be used on supported browsers
+ 'enableMultipleFiles' => true,
+ 'enableMultiFileSelect' => true,
+ // 'uwLanguages' => array(
+ // 'ar' => 'العربية',
+ // 'de' => 'Deutsch',
+ // 'en' => 'English'
+ // ), // Selectable languages for file descriptions - defaults to 'en'
+ 'tutorial' => array(
+ 'skip' => true
+ ), // Skip the tutorial
+ // 'maxUploads' => 15, // Number of uploads with one form - defaults to 50
+ 'fileExtensions' => $wgFileExtensions // omitting this may cause errors
+ );
+
+## MsUpload
+wfLoadExtension( 'MsUpload' );
+$wgMSU_useDragDrop = true; // Should the drag & drop area be shown? (Not set by default)
+$wgMSU_showAutoCat = true; // Files uploaded while editing a category page will be added to that category
+$wgMSU_checkAutoCat = true; // Whether the checkbox for adding a category to a page is checked by default
+$wgMSU_useMsLinks = true; // Insert links in Extension:MsLinks style?
+$wgMSU_confirmReplace = true; // Show the "Replace file?" checkbox
+$wgMSU_imgParams = 'thumb|none'; // Any image parameter separated by a semicolon. Examples are: {width}px, left, right, center, none, border, frameless, frame, thumb etc etc
+
+## ConfirmEdit - ANTISPAM!
+wfLoadExtensions([ 'ConfirmEdit', 'ConfirmEdit/QuestyCaptcha' ]);
+
+$wgCaptchaQuestions = [
+ "es" => [
+ '¿Cuál es la Capital de Francia?' => 'Paris',
+ '¿De qué país es la capital Buenos Aires?' => 'Argentina', // Answers are case insensitive
+ '¿Cuál es el nombre de esta página?' => [ 'Crianza Mutua' ], // A question may have many answers
+ '¿Cuál es el nombre del único satélite natural de la Tierra?' => [ 'Luna', 'La Luna' ], // A question may have many answers
+ ],
+ "en" => [
+ 'What is the name of the Capital of France?' => 'Paris',
+ 'Buenos Aires is the capital city of...' => 'Argentina', // Answers are case insensitive
+ 'What is the name of this website?' => [ 'Crianza Mutua' ], // A question may have many answers
+ 'What is the name of the natural satellite of the Earth' => [ 'Moon', 'The Moon' ], // A question may have many answers
+ ],
+ "pt" => [
+ 'Qual é o nome da capital da França?' => 'Paris',
+ 'De que país é a capital Buenos Aires?' => 'Argentina', // Answers are case insensitive
+ 'Qual é o nome desta página da web?' => [ 'Crianza Mutua' ], // A question may have many answers
+ 'Qual é o nome do único satélite natural na Terra?' => [ 'Lua', 'La lua' ], // A question may have many answers
+ ]
+];
+
+$wgCaptchaTriggers['edit'] = false;
+// $wgCaptchaTriggersOnNamespace[NS_REVISAR]['create'] = true;
+$wgCaptchaTriggers['createtalk'] = false;
+$wgCaptchaTriggers['addurl'] = false;
+$wgCaptchaTriggers['createaccount'] = true;
+$wgCaptchaTriggers['badlogin'] = true;
+
+
+## HideEmptySections
+require_once( "$IP/extensions/HideEmptySections/HideEmptySections.php" );
+
+## NewUserNotif
+require_once "$IP/extensions/NewUserNotif/NewUserNotif.php";
+$wgNewUserNotifEmailTargets = array(
+ 'info2019@reevo.org'
+);
+
+## ContactPage
+$wgUserEmailUseReplyTo = true;
+wfLoadExtension( 'ContactPage' );
+$wgContactConfig['default'] = array(
+ 'RecipientUser' => 'Reebot', // Must be the name of a valid account which also has a verified e-mail-address added to it.
+ 'SenderName' => 'Contact Form on ' . $wgSitename, // "Contact Form on" needs to be translated
+ 'SenderEmail' => null, // Defaults to $wgPasswordSender, may be changed as required
+ 'RequireDetails' => true, // Either "true" or "false" as required
+ 'IncludeIP' => true, // Either "true" or "false" as required
+ 'MustBeLoggedIn' => false, // Check if the user is logged in before rendering the form
+ 'AdditionalFields' => array(
+ 'Text' => array(
+ 'label-message' => 'emailmessage',
+ 'type' => 'textarea',
+ 'rows' => 20,
+ 'required' => true, // Either "true" or "false" as required
+ ),
+ ),
+ // Added in MW 1.26
+ 'DisplayFormat' => 'table', // See HTMLForm documentation for available values.
+ 'RLModules' => array(), // Resource loader modules to add to the form display page.
+ 'RLStyleModules' => array(), // Resource loader CSS modules to add to the form display page.
+);
+$wgCaptchaTriggers['contactpage'] = true;
+
+$wgHooks['EmailUser'][] = function ( &$address, &$from, &$subject, &$text, &$error ) {
+ global $wgPasswordSender;
+ $subject = '[reevo.wiki] Contacto: ' . $subject;
+ $address->address = 'info2019@reevo.org';
+# $from->address = $wgPasswordSender;
+};
+
+
+###### Extensiones propias
+
+## CountryStates
+wfLoadExtension( 'CountryStates' );
+
+$wgShowExceptionDetails = true;
diff --git a/www/wiki/deployments/base/README.md b/www/wiki/deployments/base/README.md
new file mode 100644
index 00000000..440e20a3
--- /dev/null
+++ b/www/wiki/deployments/base/README.md
@@ -0,0 +1 @@
+# ReevoTech Base Template
diff --git a/www/wiki/deployments/base/i18n/es.json b/www/wiki/deployments/base/i18n/es.json
new file mode 100644
index 00000000..dda7ade3
--- /dev/null
+++ b/www/wiki/deployments/base/i18n/es.json
@@ -0,0 +1,3 @@
+{
+ "rv-reevotech-string": "Test"
+}
diff --git a/www/wiki/deployments/base/layout.xml b/www/wiki/deployments/base/layout.xml
new file mode 100644
index 00000000..030b1dee
--- /dev/null
+++ b/www/wiki/deployments/base/layout.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+<?xml-model href="https://cmln.github.io/chameleon/schema/1.0/layout.rng" schematypens="http://relaxng.org/ns/structure/1.0"?>
+
+This file is part of the MediaWiki Chameleon skin and serves its bo flavour.
+
+@copyright 2013 - 2016, Stephan Gambke
+@license GNU General Public License, version 3 (or any later version)
+
+This layout has Pagetools visible in body content as used in http://wiki.ead.pucv.cl
+
+@author Herbert Spencer
+-->
+<structure xmlns="https://cmln.github.io/chameleon/schema/1.0/layout.rng">
+
+
+ <component type="NavbarHorizontal" class='hidden-print'>
+ <modification type="Sticky"/>
+ <component type="Logo" position="head"/>
+ <component type="Html" position="head">
+ <![CDATA[
+ <div class="visible-xs pull-right navbar-tools navbar-nav navbar-xs"><a value="Lang" id="mw-langButton" class="uls-trigger btn btn-default navbar-toplang webfonts-changed"><span class="glyphicon glyphicon-globe"></span></a></div>
+ ]]>
+ </component>
+ <component type="PersonalTools" position="head" class="visible-xs pull-right navbar-xs"/>
+
+ <component type="NavMenu" flatten="navigation" showTools="no" showLanguages="no"/>
+ <component type="SearchBar" position="right" buttons="search"/>
+ <component type="PersonalTools" position="right" class="hidden-xs"/>
+ </component>
+
+ <component type="ContentHeader"/>
+
+
+
+ <row>
+ <modification type="ShowOnlyFor" category="ConFormato" />
+ <component type="ContentBody"/>
+ </row>
+
+ <grid class="smwomaingrid pagetools hidden-print">
+ <modification type="ShowOnlyFor" group="emailconfirmed, autoconfirmed" />
+ <row>
+ <cell span="12">
+ <component type="PageTools" position="right" hideSelectedNameSpace="yes"/>
+ </cell>
+ </row>
+ </grid>
+
+
+
+
+ <grid class="smwomaingrid">
+ <row>
+ <cell span="12 hidden-print">
+ <component type="SiteNotice"/>
+ </cell>
+ </row>
+ <row>
+ <modification type="HideFor" category="ConFormato" />
+ <component type="ContentBody"/>
+ </row>
+ <row>
+ <modification type="ShowOnlyFor" group="emailconfirmed, autoconfirmed" />
+ <component type="LastmodInfo"/>
+ </row>
+ </grid>
+
+ <row class='footerwrap hidden-print'>
+ <grid class="smwofootergrid smwofootergrid-low">
+ <row class="smwofooterrow">
+ <cell span="12">
+ <modification type="ShowOnlyFor" group="emailconfirmed, autoconfirmed" />
+ <component type="ToolbarHorizontal" hideTools="no" hideLanguages="no"/>
+ </cell>
+ </row>
+ </grid>
+ </row>
+
+ <row class='footerwrap hidden-print smwofootergrid-bottom'>
+ <grid class="smwofootergrid">
+ <row class="smwofooterrow">
+ <cell span="12">
+ <component type="LegalInfo"/>
+ </cell>
+
+
+ <cell span="12" class="footer-social">
+ <component type="Html">
+ <![CDATA[
+ <div class="footer-social-box">
+ <a target="_blank" href="/api.php?action=feedrecentchanges&days=14&limit=50&hidebots=1&feedformat=atom"><i class="fas fa-rss"></i></a>
+ </div>
+ ]]>
+ </component>
+ </cell>
+
+
+ <cell span="6">
+ <!-- <component type="FooterPlaces"/>
+ <component type="FooterIcons"/> -->
+ </cell>
+
+ <cell span="6">
+ <!-- <component type="LastmodInfo"/> -->
+ </cell>
+ </row>
+ </grid>
+ </row>
+
+
+
+
+
+</structure>
diff --git a/www/wiki/deployments/base/logo.svg b/www/wiki/deployments/base/logo.svg
new file mode 100644
index 00000000..106a10c0
--- /dev/null
+++ b/www/wiki/deployments/base/logo.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ sodipodi:docname="logo.svg"
+ inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 82.741593 12.289237"
+ height="12.289237mm"
+ width="82.741592mm"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ inkscape:window-maximized="1"
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:window-height="1333"
+ inkscape:window-width="2560"
+ fit-margin-bottom="0"
+ fit-margin-right="0"
+ fit-margin-left="0"
+ fit-margin-top="0"
+ inkscape:guide-bbox="true"
+ showguides="true"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="mm"
+ inkscape:cy="-27.226151"
+ inkscape:cx="184.5328"
+ inkscape:zoom="3.1403631"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ inkscape:pagecheckerboard="0">
+ <sodipodi:guide
+ id="guide2776"
+ orientation="0,-1"
+ position="-153.90274,-394.10803" />
+ <sodipodi:guide
+ id="guide2784"
+ orientation="0,-1"
+ position="85.489229,30.485819" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-4.3423585,-4.1983671)"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Capa 1">
+ <text
+ xml:space="preserve"
+ style="font-size:15.9187px;line-height:1.25;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ececec;stroke-width:0.329994"
+ x="87.612923"
+ y="16.264742"
+ id="text836"><tspan
+ sodipodi:role="line"
+ id="tspan834"
+ x="87.612915"
+ y="16.264742"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.9187px;font-family:'Expletus Sans';-inkscape-font-specification:'Expletus Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ececec;stroke-width:0.329994">REEVO<tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.9187px;font-family:'Expletus Sans';-inkscape-font-specification:'Expletus Sans, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.329994"
+ id="tspan10414">Tech</tspan></tspan></text>
+ </g>
+</svg>
diff --git a/www/wiki/deployments/base/style.less b/www/wiki/deployments/base/style.less
new file mode 100644
index 00000000..f3b75ede
--- /dev/null
+++ b/www/wiki/deployments/base/style.less
@@ -0,0 +1,52 @@
+@font-family-sans-serif: "Open Sans", Calibri, Candara, Arial, sans-serif;
+
+.navbar {
+ background-color: #800000;
+}
+
+div#p-logo {
+ padding: 5px;
+}
+
+.smwofootergrid-bottom {
+ color: #fff;
+ background-color: #1F1F1F;
+}
+
+.navbar-right-aligned #searchInput {
+ border-color: transparent;
+ background-color: #651b00;
+ margin-left: 0;
+}
+
+button#mw-searchButton {
+ background: #4f1501;
+}
+
+.navbar-brand img {
+ max-height: 22px !important;
+ margin: 9px 0px 0px 0px;
+}
+
+.footer-social-text {
+ color: #ccc;
+ font-size: 10pt;
+}
+
+.footer-social-text a, .footer-social-text a:visited{
+ color: white;
+ font-size: 10pt;
+ padding: 0;
+}
+
+.bannerimage {
+ background-position: 50%;
+ background-size: cover;
+ background-blend-mode: luminosity !important;
+ background-color: #87018b !important;
+ color: white !important;
+ text-shadow: 0px 0px 2px #000 !important;
+ margin-top: -10px;
+ position: relative;
+ text-shadow: 1px 1px 10px #000;
+}