Header Logo Implementation (Timeless) and Side Bar removal
Header Logo Implementation (Timeless) and Side Bar removal
- $wgSitename remains "അഭിപ്രായവേദി"
- Sidebar logo hidden via CSS
- Header logo implemented as SVG background on #p-banner
- Search placeholder uses site name
- No Timeless PHP modifications required
Localsettings.php
<?php
$wgShowExceptionDetails = true;
$wgShowDBErrorBacktrace = true;
wfDebugLog( 'session', 'LOGIN DEBUG: ' . $_SERVER['HTTP_USER_AGENT'] );
# MediaWiki Configuration for AbhiprayaVedi
# Generated and Cleaned: January 2026
# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
}
# ============================================================================
# BASIC SITE CONFIGURATION
# ============================================================================
$wgSitename = "അഭിപ്രായവേദി";
$wgMetaNamespace = "AbhiprayaVedi";
## URL Configuration
$wgScriptPath = "";
$wgServer = "https://abhiprayavedi.org"; # Changed to HTTPS for security
$wgCookieSecure = true;
$wgResourceBasePath = $wgScriptPath;
## Logo Configuration
$wgLogos = [
'1x' => "$wgResourceBasePath/resources/assets/AV-Logo.svg",
'tagline' => [
"src" => "Debate * Discuss * Evolve",
"width" => 117,
"height" => 13
],
'icon' => "$wgResourceBasePath/resources/assets/AV-Icon.svg",
];
# ============================================================================
# LANGUAGE AND LOCALIZATION
# ============================================================================
$wgLanguageCode = "en"; # Malayalam as primary language
$wgLocaltimezone = "Asia/Kolkata"; # Indian Standard Time
date_default_timezone_set( $wgLocaltimezone );
## Enable English as fallback
$wgUsersLanguages = [ 'en', 'ml' ];
# ============================================================================
# DATABASE CONFIGURATION
# ============================================================================
$wgDBtype = "mysql";
$wgDBserver = "localhost";
$wgDBname = "abhip6c6_abhi";
$wgDBuser = "abhip6c6_vij";
$wgDBpassword = "Free@2026";
$wgDBprefix = "";
$wgDBssl = false;
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
$wgSharedTables[] = "actor";
## Secret keys
$wgSecretKey = "10840d43e32a0bc34bf870e6a90ced2d39447729bde9b134bedc86ca7442c20c";
$wgUpgradeKey = "0985e053df130967"; # Replace with your actual key
$wgAuthenticationTokenVersion = "1";
## Force HTTPS (optional, but recommended if SSL is properly configured)
$wgForceHTTPS = true;
# ============================================================================
# EMAIL CONFIGURATION
# ============================================================================
$wgEnableEmail = true;
$wgEnableUserEmail = true;
$wgEmergencyContact = "admin@abhiprayavedi.org";
$wgPasswordSender = "noreply@abhiprayavedi.org";
$wgEnotifUserTalk = true;
$wgEnotifWatchlist = true;
$wgEmailAuthentication = true;
# ============================================================================
# FILE UPLOAD CONFIGURATION
# ============================================================================
$wgEnableUploads = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";
$wgMaxUploadSize = 100 * 1024 * 1024; # 100MB
$wgFileExtensions = array_merge(
$wgFileExtensions,
['png', 'gif', 'jpg', 'jpeg', 'pdf', 'svg', 'webp']
);
## Upload directory permissions
$wgUploadDirectory = "$IP/images";
$wgUploadPath = "$wgScriptPath/images";
$wgUseInstantCommons = false;
# ============================================================================
# CUSTOM NAMESPACES
# ============================================================================
define("NS_DRAFT", 3000);
define("NS_DRAFT_TALK", 3001);
define("NS_PRIVATE", 3002);
define("NS_PRIVATE_TALK", 3003);
define("NS_SUBMISSIONS", 3004);
define("NS_SUBMISSIONS_TALK", 3005);
define("NS_ARTICLES", 3006);
define("NS_ARTICLES_TALK", 3007);
$wgExtraNamespaces = [
NS_DRAFT => "Draft",
NS_DRAFT_TALK => "Draft_talk",
NS_PRIVATE => "Private",
NS_PRIVATE_TALK => "Private_talk",
NS_SUBMISSIONS => "Submissions",
NS_SUBMISSIONS_TALK => "Submissions_talk",
NS_ARTICLES => "Articles",
NS_ARTICLES_TALK => "Articles_talk",
];
# Do not index editorial namespaces
$wgNamespacesToBeSearchedDefault[NS_DRAFT] = false;
$wgNamespacesToBeSearchedDefault[NS_SUBMISSIONS] = false;
$wgNamespacesToBeSearchedDefault[NS_PRIVATE] = false;
# ============================================================================
# ============================================================================
# GLOBAL READ POLICY & NAMESPACE LOCKDOWN
# ============================================================================
$wgGroupPermissions['*']['read'] = true;
$wgNamespacePermissionLockdown[NS_DRAFT]['*'] = ['user'];
$wgNamespacePermissionLockdown[NS_SUBMISSIONS]['*'] = ['user'];
$wgNamespacePermissionLockdown[NS_PRIVATE]['*'] = ['sysop'];
# ============================================================================
# EDITORIAL WRITE PROTECTION
# ============================================================================
$wgNamespaceProtection[NS_DRAFT] = ['edit'];
$wgNamespaceProtection[NS_SUBMISSIONS] = ['edit'];
$wgNamespaceProtection[NS_PRIVATE] = ['editprivate'];
# ============================================================================
# GROUP PERMISSIONS & USER RIGHTS
# ============================================================================
# Anonymous users (*)
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['autocreateaccount'] = false;
# Regular users (user)
$wgGroupPermissions['user']['edit'] = true;
$wgTemplateStylesNamespaces[NS_USER] = true;
$wgGroupPermissions['user']['formedit'] = true;
# Editors (editor)
$wgGroupPermissions['editor']['edit'] = true;
$wgGroupPermissions['editor']['createpage'] = true;
$wgGroupPermissions['editor']['move'] = true;
$wgGroupPermissions['editor']['upload'] = true;
$wgGroupPermissions['editor']['formedit'] = true;
# Sysops (sysop)
$wgGroupPermissions['sysop']['edit'] = true;
$wgGroupPermissions['sysop']['editprivate'] = true;
$wgGroupPermissions['sysop']['formedit'] = true;
$wgGroupPermissions['sysop']['editinterface'] = true;
$wgGroupPermissions['sysop']['viewedittab'] = true;
$wgGroupPermissions['*']['viewedittab'] = false;
# ============================================================================
# SKIN CONFIGURATION
# ============================================================================
wfLoadSkin( 'timeless' );
$wgDefaultSkin = 'timeless';
#wfLoadSkin( 'Chameleon' );
#$wgDefaultSkin = "vector";
#wfLoadSkin( 'Vector' );
## Vector skin options
# $wgVectorDefaultSkinVersion = '2';vi
# $wgVectorDefaultSkinVersionForExistingAccounts = '2';
# ============================================================================
# EXTENSIONS
# ============================================================================
## Core extensions
wfLoadExtension( 'CategoryTree' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'CiteThisPage' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'WikiEditor' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'PageForms' );
wfLoadExtension( 'VisualEditor' );
#wfLoadExtension( 'DynamicPageList4' );
wfLoadExtension( 'SemanticMediaWiki' );
$smwgCompactLinkSupport = true;
$smwgChangePropagationProtection = true;
$wgDefaultUserOptions['visualeditor-enable'] = 1;
$wgHiddenPrefs[] = 'visualeditor-enable';
wfLoadExtension( 'TemplateStyles' );
wfLoadExtension( 'DisplayTitle' );
wfLoadExtension( 'Lockdown' );
$wgAllowDisplayTitle = true;
$wgRestrictDisplayTitle = false;
# PageForms configuration
$wgPageFormsRenameEditTabs = true;
$wgPageFormsRenameMainEditTab = true;
$wgPageFormsShowEditFormTab = true;
$wgPageFormsEnableFormEditTab = true;
$wgPageFormsAutocompleteOnAllChars = true;
$wgPageFormsMaxAutocompleteValues = 100;
## ParserFunctions configuration
$wgPFEnableStringFunctions = true;
# Enable Universal Language Selector for Malayalam input
wfLoadExtension( 'UniversalLanguageSelector' );
$wgULSEnable = true;
$wgULSIMEEnabled = true;
$wgULSLanguageDetection = true;
## WikiEditor configuration
$wgDefaultUserOptions['usebetatoolbar'] = 1;
$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
# ============================================================================
# PERFORMANCE AND OPTIMIZATION
# ============================================================================
## Disable some features for better performance on shared hosting
$wgDisableOutputCompression = false;
$wgJobRunRate = 0; # Disable job queue on page requests (set up cron instead)
## Cache expiry
$wgParserCacheExpireTime = 86400; # 1 day
$wgRevisionCacheExpiry = 86400;
## Resource loader
$wgResourceLoaderMaxQueryLength = 2000;
# FIXED SESSION CONFIGURATION (KEEPS LOGIN WORKING)
$wgSessionCacheType = CACHE_DB;
$wgMainCacheType = CACHE_ANYTHING;
$wgSessionsInObjectCache = true;
# Cookie fixes
$wgCookieSecure = false; // if not HTTPS
$wgCookieHttpOnly = true;
ini_set( 'session.cookie_httponly', 1 );
# ============================================================================
# MISCELLANEOUS
# ============================================================================
## Copyright/License
$wgRightsPage = "";
$wgRightsUrl = "https://creativecommons.org/licenses/by-sa/4.0/";
$wgRightsText = "Creative Commons Attribution-ShareAlike 4.0";
$wgRightsIcon = "$wgResourceBasePath/resources/assets/licenses/cc-by-sa.png";
## Diff tool
$wgDiff3 = "/usr/bin/diff3";
## Pingback to MediaWiki.org
$wgPingback = false; # Disable for privacy
## Recent changes
$wgRCMaxAge = 90 * 24 * 3600; # 90 days
## Page title
$wgRestrictDisplayTitle = false;
## Prevent anonymous page creation
$wgGroupPermissions['*']['createpage'] = false;
# Set contributor guide as prominent
$wgDefaultUserOptions['welcomecreation'] = true;
# ============================================================================
# DEBUG CONFIGURATION (Disable in production)
# ============================================================================
## Uncomment these lines for debugging (NEVER on production)
# error_reporting( -1 );
# ini_set( 'display_errors', 1 );
# $wgShowExceptionDetails = true;
# $wgShowDBErrorBacktrace = true;
# $wgDebugToolbar = true;
# ============================================================================
# END OF CONFIGURATION
# ============================================================================
Mediawiki:Timeless.css
#mw-site-navigation #p-logo {
display: none;
}
#p-banner {
display: inline-block;
width: 260px;
height: 42px;
background-image: url("/resources/assets/AV-Logo.svg");
background-repeat: no-repeat;
background-size: contain;
background-position: left center;
text-indent: -9999px;
overflow: hidden;
}
#simpleSearch {
margin-left: 30px;
}
Mediawiki:Common.css
/* ==========================================================================
1. LOAD MALAYALAM GOOGLE FONTS
========================================================================== */
@import url('https://smc.org.in/fonts/manjari.css');
@import url('https://googleapis.com');
/* GLOBAL FONTS FORCE (Combined to eliminate duplications) */
- lang(ml), :lang(ml) *,
body:lang(ml), .mw-body:lang(ml), .mw-body-content:lang(ml), #content:lang(ml),
.mw-parser-output:lang(ml), .article-content:lang(ml), .article-content *,
.intro-box:lang(ml), p:lang(ml), span:lang(ml), div:lang(ml),
h1:lang(ml), h2:lang(ml), h3:lang(ml), h4:lang(ml),
#firstHeading, .mw-first-heading, .firstHeading {
font-family: 'Manjari', 'Meera', 'Rachana', 'Noto Sans Malayalam', 'Nirmala UI', sans-serif !important;
}
/* ഫയൽ എറർ ഒഴിവാക്കാൻ ഗൂഗിൾ വെബ് ഫോണ്ടുകൾ ഫോഴ്സ് ചെയ്യുക */
@font-face {
font-family: 'Meera';
src: url('https://gstatic.com') format('woff2'); /* സെർവർ എറർ മറികടക്കാൻ */
}
/* GLOBAL MINOR TWEAKS */
body {
line-height: 1.7;
}
.article-content * {
line-height: 1.85 !important;
}
/* ==========================================================================
2. HEADINGS & TITLES
========================================================================== */
#firstHeading, .mw-first-heading, .firstHeading {
font-size: 2.35em !important;
font-weight: 700 !important;
margin-bottom: 0.4em !important;
color: #222;
border-bottom: solid 4px #36c;
}
- lang(en) #firstHeading, :lang(en) .mw-first-heading {
font-size: 2.45em !important;
}
/* HIDE NAMESPACE SUBTITLE FOR PUBLISHED ARTICLES */
.mw-displaytitle-subtitle {
display: none !important;
}
/* ==========================================================================
3. LAYOUT & SIDEBARS (FULL WIDTH)
========================================================================== */
#mw-site-navigation, #mw-related-navigation {
display: none !important;
}
#mw-content-container {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 2rem !important;
padding-right: 2rem !important;
max-width: 100% !important;
}
#content {
max-width: 100% !important;
}
/* ==========================================================================
4. FIXED: HIDE PAGE TABS FOR ANONYMOUS USERS (Dynamic Fix)
========================================================================== */
/* ==========================================================================
4. FIXED: HIDE PAGE TABS FOR ANONYMOUS USERS ONLY
========================================================================== */
.anon-visitor #mw-page-header-links,
.anon-visitor #siteSub {
display: none !important;
}
/* ==========================================================================
5. LOGO INTEGRATION FOR DISPLAY NAME PLACE
========================================================================== */
.mw-wiki-title {
font-family: 'Manjari', sans-serif !important;
font-weight: bold;
font-size: 22px;
color: #002B49 !important; /* Deep Navy */
}
Mediawiki:Common.js
/* ഇവിടെ നൽകുന്ന ജാവാസ്ക്രിപ്റ്റ് എല്ലാ ഉപയോക്താക്കൾക്കും, എല്ലാ താളുകളിലും പ്രവർത്തിക്കുന്നതായിരിക്കും */
// Show display titles in category pages instead of page names
$(document).ready(function() {
if ($('.mw-category').length) {
$('.mw-category li a').each(function() {
var pageTitle = $(this).attr('title');
if (pageTitle) {
// This will use the page's actual display title
// MediaWiki automatically uses DISPLAYTITLE in title attribute
$(this).text(pageTitle);
}
});
}
});
/* ==========================================================================
ANONYMOUS USERS ONLY: HIDE PAGE TABS (View Source, History etc.)
========================================================================== */
(function () {
// ഉപയോക്താവ് ലോഗിൻ ചെയ്തിട്ടില്ലെങ്കിൽ (അനോണിമസ് ആണെങ്കിൽ)
if (mw.config.get('wgUserId') === null) {
// ഡോക്യുമെന്റ് ലോഡ് ആയതിനു ശേഷം റൺ ചെയ്യുക
$(document).ready(function () {
// പേജ് ടാബുകൾ അടങ്ങിയ കണ്ടെയ്നർ പൂർണ്ണമായി നീക്കം ചെയ്യുക
$('#mw-page-header-links').remove();
// 'From AbhiprayaVedi' എന്ന ലൈൻ നീക്കം ചെയ്യുക
$('#siteSub').remove();
});
}
}());