# -*- mode: perl -*- use utf8; # this file contains utf8 strings. do "$ENV{OMHOME}/omecp.pl"; $CookieName = 'ECwiki'; $SiteName = 'EmacsConf'; $HomePage = 'main'; $RCName = "recent_changes"; $FullUrl = 'https://emacsconf.org'; $ScriptName = "$FullUrl"; # $LogoUrl = '/s/emacsconf-logo1-64.png'; $StyleSheet = '/s/ecom.css'; $UploadAllowed = 1; #$SurgeProtectionTime = 10; #$SurgeProtectionViews = 50; # As we're now behind a caching proxy, the environment variable # REMOTE_ADDR is no longer what we want. We now want # HTTP_X_FORWARDED_FOR. $ENV{REMOTE_ADDR} = $ENV{HTTP_X_FORWARDED_FOR}; $HtmlHeaders .= '' . ''; $SmartTitlesBrowserTitle = '%s - %s - %s'; $SmartTitlesBrowserTitleWithoutSubtitle = '%s - %s'; $FooterNote = '
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation.
'; $UrlProtocols .= "|data|xmpp"; @UserGotoBarPages = ($RCName); # $UserGotoBar = '2019'; $UserGotoBarPrev = 'EmacsConf'; sub GetGotoBar { my $id = shift; return $q->span({-class=>'gotobar bar'}, $UserGotoBarPrev, (map { GetPageLink($_) } @UserGotoBarPages), $UserGotoBar); } # Allow namespaces starting with a digit # From https://github.com/kensanata/oddmuse/issues/19#issuecomment-503984930 $InterSitePattern = '[\p{Uppercase}\d][\w_ ]*'; # Redefine these as well if you change $InterSitePattern since InitLinkPatterns is called before InitConfig! $InterLinkPattern = "($InterSitePattern:[-a-zA-Z0-9\x{0080}-\x{fffd}_=!?#\$\@~`\%&*+\\/:;.,]*[-a-zA-Z0-9\x{0080}-\x{fffd}_=#\$\@~`\%&*+\\/])$QDelim"; $FreeInterLinkPattern = "($InterSitePattern:[-a-zA-Z0-9\x{0080}-\x{fffd}_=!?#\$\@~`\%&*+\\/:;.,()' ]+)"; # Link to author page at the root namespace # From https://github.com/kensanata/oddmuse/issues/20#issuecomment-500402339 sub GetAuthorLink { my ($username, $host) = @_; $username = FreeToNormal($username); $username =~ s/^(?:$InterSitePattern:)?$FreeLinkPattern/$1/; my $name = NormalToFree($username); if (ValidId($username) ne '') { # ValidId() returns error string $username = ''; # Just pretend it isn't there. } if ($username) { local $ScriptName = $NamespacesRoot; return ScriptLink(UrlEncode($username), $name, 'author'); } return T('Anonymous') if $host eq 'Anonymous'; return ColorCode($host); } # Fix visiting Main:X if the page doesn't exist but namespace X does. # Redirect! # From https://github.com/kensanata/oddmuse/issues/19#issuecomment-513640039 push(@MyInitVariables, \&MyNamespacesFix); sub MyNamespacesFix { if (not GetParam('title', '') and GetParam('action', 'browse') eq 'browse') { my $id = FreeToNormal(GetId()); if (not $NamespaceCurrent and (not $IndexHash{$id} or OpenPage($id) and PageMarkedForDeletion()) and $Namespaces{$id}) { print GetRedirectPage("$id/", NormalToFree($id)); exit; } } }; @QuestionaskerQuestions = (['Please say HELLO.' => sub { shift =~ /^\s*(hello*|hewo*|hi*|h(i|e)ya*)!*\s*$/i }], ); # If enabling Markdown, to allow users to switch between Creole and Markdown # see https://oddmuse.org/wiki/Creole_or_Markdown $CommentsPrefix = 'comments_on_'; # Add 'Back to ' prefix to the link back to the article # with adaptation from https://oddmuse.org/wiki/Comments_on_Comment_Pages *MyOldGetFooterLinks = *GetFooterLinks; *GetFooterLinks = *MyNewGetFooterLinks; sub MyNewGetFooterLinks { my $html = MyOldGetFooterLinks(@_); my ($id, $rev) = @_; if ($id and $rev ne 'history' and $rev ne 'edit' and $CommentsPrefix) { if ($id =~ /^$CommentsPrefix(.*)/o) { my $from = NormalToFree($1); my $to = T('Back to ') . $from; $html =~ s/>$from accesskey="a">$to; } else { my $from = NormalToFree($CommentsPrefix); my $to = T('Comments on '); $html =~ s/$from/$to/; } } # $html =~ s!! Colophon!; return $html; } # [[vid:addr]] rule for embedding videos push(@MyRules, \&VidRule); sub VidRule{ if (/\G\[\[vid:(\d+\/[a-z0-9-_\.]*)\]\]/cgi) { my $vid = $1; return qq{