summaryrefslogtreecommitdiffstats
path: root/colophon/oddmuse/config
diff options
context:
space:
mode:
Diffstat (limited to 'colophon/oddmuse/config')
-rw-r--r--colophon/oddmuse/config151
1 files changed, 151 insertions, 0 deletions
diff --git a/colophon/oddmuse/config b/colophon/oddmuse/config
new file mode 100644
index 00000000..7ff1d54b
--- /dev/null
+++ b/colophon/oddmuse/config
@@ -0,0 +1,151 @@
+# -*- 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 .= '<link rel="icon" href="/s/emacsconf-logo1-256.png" type="image/png"/>'
+ . '<meta name=viewport content="width=device-width, initial-scale=0.86, maximum-scale=3.0, minimum-scale=0.86"/>';
+
+$SmartTitlesBrowserTitle = '%s - %s - %s';
+$SmartTitlesBrowserTitleWithoutSubtitle = '%s - %s';
+
+$FooterNote = '<p>Permission is granted to copy, distribute and/or
+modify this document under the terms of the
+<a href="https://www.gnu.org/licenses/fdl-1.3-standalone.html">GNU Free Documentation License</a>,
+Version 1.3 or any later version published by the
+<a href="https://www.fsf.org/">Free Software Foundation</a>.</p>
+<p style="font-size:70%"><a href="https://emacsconf.org/colophon">Colophon</a></p>';
+
+$UrlProtocols .= "|data|xmpp";
+
+@UserGotoBarPages = ($RCName);
+# $UserGotoBar = '<a class="local" href="https://emacsconf.org/2019/">2019</a>';
+
+$UserGotoBarPrev = '<a class="local" href="https://emacsconf.org">EmacsConf</a>';
+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!</div>! <a class="local" href="https://emacsconf.org/colophon">Colophon</a></div>!;
+ 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{
+<video controls preload="metadata">
+ <source src="/videos/$vid" type="video/mp4">
+</video><br/>
+<a href="/videos/$vid" download>Download</a>};
+ }
+ return;
+}
+
+# [[vidlink:addr]] rule for linking to videos
+push(@MyRules, \&VidLinkRule);
+
+sub VidLinkRule{
+ if (/\G\[\[vidlink:(\d+\/[a-z0-9-_\.]*)\|(.*)\]\]/cgi) {
+ my ($vid, $cap) = ($1, $2);
+ return qq{<a href="/videos/$vid">$cap</a>};
+ }
+ return;
+}