[PATCH] Add MOTD display to hgweb and hgwebdir.

Colin McMillen mcmillen at cs.cmu.edu
Fri Apr 28 01:39:58 UTC 2006


# HG changeset patch
# User Colin McMillen <mcmillen at cs.cmu.edu>
# Node ID dbcde194840b5f0ea0f1672faeff4f039645d7eb
# Parent  4334be196f8db44effc59167fb57cb4bbbc1d065
Add MOTD display to hgweb and hgwebdir.

The hgweb "footer" template now has space for an optional message of
the day (MOTD). This is used in two contexts:

1) On the hgwebdir index page
2) On various pages of each individual repo

For both cases, the MOTD is read out of an entry named "motd" in the
[web] section of a config file -- the only difference is which file is
used. For #1, you need to add the section to hgweb.config; for #2, you
need to add to the repo's .hgrc file.

I suggest something like this:

[web]
motd = <p>To download these repositories, <a href="http://www.selenic.com/mercurial">get Mercurial</a> and then type something like:</p><p><pre>hg clone http://gs3080.sp.cs.cmu.edu/hg.cgi/cpmpy</pre></p>You can also click the Download links to get an archive of the latest revision.

An online sample is available here:
http://gs3080.sp.cs.cmu.edu/hg.cgi

diff -r 4334be196f8db44effc59167fb57cb4bbbc1d065 -r dbcde194840b5f0ea0f1672faeff4f039645d7eb mercurial/hgweb.py
--- a/mercurial/hgweb.py        Wed Apr 26 16:54:07 2006 +0200
+++ b/mercurial/hgweb.py        Thu Apr 27 21:38:45 2006 -0400
@@ -727,7 +727,9 @@ class hgweb(object):
             yield self.t("header", **map)

         def footer(**map):
-            yield self.t("footer", **map)
+            yield self.t("footer",
+                         motd=self.repo.ui.config("web", "motd", ""),
+                         **map)

         def expand_form(form):
             shortcuts = {
@@ -1006,6 +1008,7 @@ class hgwebdir(object):
         def cleannames(items):
             return [(name.strip(os.sep), path) for name, path in items]

+        self.motd = ""
         if isinstance(config, (list, tuple)):
             self.repos = cleannames(config)
         elif isinstance(config, dict):
@@ -1015,6 +1018,8 @@ class hgwebdir(object):
             cp = ConfigParser.SafeConfigParser()
             cp.read(config)
             self.repos = []
+            if cp.has_section('web') and cp.has_option('web', 'motd'):
+                self.motd = cp.get('web', 'motd')
             if cp.has_section('paths'):
                 self.repos.extend(cleannames(cp.items('paths')))
             if cp.has_section('collections'):
@@ -1032,7 +1037,7 @@ class hgwebdir(object):
             yield tmpl("header", **map)

         def footer(**map):
-            yield tmpl("footer", **map)
+            yield tmpl("footer", motd=self.motd, **map)

         m = os.path.join(templater.templatepath(), "map")
         tmpl = templater.templater(m, templater.common_filters,
diff -r 4334be196f8db44effc59167fb57cb4bbbc1d065 -r dbcde194840b5f0ea0f1672faeff4f039645d7eb templates/footer.tmpl
--- a/templates/footer.tmpl     Wed Apr 26 16:54:07 2006 +0200
+++ b/templates/footer.tmpl     Thu Apr 27 21:38:45 2006 -0400
@@ -1,3 +1,4 @@
+#motd#
 <div class="logo">
 powered by<br/>
 <a href="http://www.selenic.com/mercurial/">mercurial</a>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 191 bytes
Desc: Digital signature
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20060427/2a221b77/attachment-0001.asc>


More information about the Mercurial mailing list