]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
wip bootstrap theme
authorJoey Hess <joeyh@joeyh.name>
Sun, 3 Apr 2016 20:31:23 +0000 (16:31 -0400)
committerJoey Hess <joeyh@joeyh.name>
Sun, 3 Apr 2016 21:05:47 +0000 (17:05 -0400)
The only real blocker to merging this is that it's using the CDN for bootstrap,
tether, and font-awesome. ikiwiki as a matter of policy does not make sites
that rely on offsite resources, so those need to be pulled into the package (or
dependencies of the debian package).

Also, other parts of ikiwiki use jquery 1.6.2, and I guess that would
need to be upgraded for use by bootstrap. I don't know what the jquery
compatability story is like, so worry that upgrading it could break the
parts of ikiwiki that use it.

Also, it's missing a few bits of styles from ikiwiki's
style.css for ikiwiki's login page, the calendar plugin, etc.

Makefile.PL
debian/changelog
ikiwiki.spec
po/ikiwiki.pot
templates/comment.tmpl
templates/feedlink.tmpl
templates/googleform.tmpl
templates/inlinepage.tmpl
templates/page.tmpl
templates/searchform.tmpl
themes/bootstrap/fullstyle.css [new file with mode: 0644]

index bee9dfa11817d52aba1985fd7022d2a80d33f4b7..f9c0cc96a3f7d8b7308e0a4af8deb40b7eae0132 100755 (executable)
@@ -112,11 +112,14 @@ underlay_install:
 
        # Themes have their base.css (if present) and then
        # style.css appended to the normal one.
+       # Or, fullstyle.css in a theme replaces the normal style.css.
        for theme in themes/*; do \
                install -d $(DESTDIR)$(PREFIX)/share/ikiwiki/$$theme; \
                for file in $$theme/*; do \
                        if echo "$$file" | grep -q style.css; then \
                                (cat doc/style.css; cat $$theme/base.css 2>/dev/null; cat $$file) > $(DESTDIR)$(PREFIX)/share/ikiwiki/$$theme/style.css; \
+                       elif echo "$$file" | grep -q fullstyle.css; then \
+                               cp $$file $(DESTDIR)$(PREFIX)/share/ikiwiki/$$theme/style.css; \
                        elif echo "$$file" | grep -q base.css; then \
                                :; \
                        elif [ -f "$$file" ]; then \
index ea77c6e3d26ea1cb89842eb86fe4ee4374445014..f70be1d8201c8dbf4e6267e4d37a7dfd58d1be75 100644 (file)
@@ -8,6 +8,8 @@ ikiwiki (3.20160122) UNRELEASED; urgency=medium
   * loginselector: When only openid and emailauth are enabled, but
     passwordauth is not, avoid showing a "Other" box which opens an
     empty form.
+  * Added bootstrap theme, based on ikistrap by Guus Sliepen,
+    and using bootstrap 4. This theme only works in html5 mode.
 
   [ Amitai Schlair ]
   * mdwn: Process .md like .mdwn, but disallow web creation.
index 6de6cb27c586b0c883ce52e700a2b5884cb2a52e..c0ffd45025b7eef10660e4ab34d48265ad1f9778 100644 (file)
@@ -1,5 +1,5 @@
 Name:           ikiwiki
-Version: 3.20160121
+Version: 3.20160122
 Release:        1%{?dist}
 Summary:        A wiki compiler
 
index f13acc8fbdd7ea9662dee2e827e10c0de80d3445..f48db3bf15bd938d14fd944c68ce97e344eb1c66 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-01-21 09:43+0000\n"
+"POT-Creation-Date: 2016-04-03 20:53+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -244,66 +244,66 @@ msgstr ""
 msgid "Comment Moderation"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:381 ../IkiWiki/Plugin/comments.pm:385
+#: ../IkiWiki/Plugin/comments.pm:382 ../IkiWiki/Plugin/comments.pm:386
 msgid "email replies to me"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:419 ../IkiWiki/Plugin/editpage.pm:96
+#: ../IkiWiki/Plugin/comments.pm:420 ../IkiWiki/Plugin/editpage.pm:96
 #: ../IkiWiki/Plugin/editpage.pm:102
 msgid "bad page name"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:422
+#: ../IkiWiki/Plugin/comments.pm:423
 #, perl-format
 msgid "commenting on %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:439
+#: ../IkiWiki/Plugin/comments.pm:440
 #, perl-format
 msgid "page '%s' doesn't exist, so you can't comment"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:449
+#: ../IkiWiki/Plugin/comments.pm:450
 #, perl-format
 msgid "comments on page '%s' are not allowed"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:456
+#: ../IkiWiki/Plugin/comments.pm:457
 #, perl-format
 msgid "comments on page '%s' are closed"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:583
+#: ../IkiWiki/Plugin/comments.pm:584
 msgid "comment stored for moderation"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:585
+#: ../IkiWiki/Plugin/comments.pm:586
 msgid "Your comment will be posted after moderator review"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:598
+#: ../IkiWiki/Plugin/comments.pm:599
 msgid "Added a comment"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:602
+#: ../IkiWiki/Plugin/comments.pm:603
 #, perl-format
 msgid "Added a comment: %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:676 ../IkiWiki/Plugin/userlist.pm:55
+#: ../IkiWiki/Plugin/comments.pm:677 ../IkiWiki/Plugin/userlist.pm:55
 #: ../IkiWiki/Plugin/websetup.pm:272
 msgid "you are not logged in as an admin"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:735
+#: ../IkiWiki/Plugin/comments.pm:736
 msgid "Comment moderation"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:776
+#: ../IkiWiki/Plugin/comments.pm:777
 msgid "comment moderation"
 msgstr ""
 
-#: ../IkiWiki/Plugin/comments.pm:941
+#: ../IkiWiki/Plugin/comments.pm:942
 #, perl-format
 msgid "%i comment"
 msgid_plural "%i comments"
@@ -313,7 +313,7 @@ msgstr[1] ""
 #. translators: Here "Comment" is a verb;
 #. translators: the user clicks on it to
 #. translators: post a comment.
-#: ../IkiWiki/Plugin/comments.pm:951
+#: ../IkiWiki/Plugin/comments.pm:952
 msgid "Comment"
 msgstr ""
 
@@ -347,14 +347,14 @@ msgstr ""
 msgid "email comments to me"
 msgstr ""
 
-#: ../IkiWiki/Plugin/editpage.pm:319
+#: ../IkiWiki/Plugin/editpage.pm:320
 #, perl-format
 msgid "creating %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/editpage.pm:337 ../IkiWiki/Plugin/editpage.pm:356
-#: ../IkiWiki/Plugin/editpage.pm:367 ../IkiWiki/Plugin/editpage.pm:414
-#: ../IkiWiki/Plugin/editpage.pm:456
+#: ../IkiWiki/Plugin/editpage.pm:338 ../IkiWiki/Plugin/editpage.pm:357
+#: ../IkiWiki/Plugin/editpage.pm:368 ../IkiWiki/Plugin/editpage.pm:415
+#: ../IkiWiki/Plugin/editpage.pm:457
 #, perl-format
 msgid "editing %s"
 msgstr ""
@@ -560,15 +560,15 @@ msgstr ""
 msgid "Other"
 msgstr ""
 
-#: ../IkiWiki/Plugin/loginselector.pm:107
+#: ../IkiWiki/Plugin/loginselector.pm:106
 msgid "Password"
 msgstr ""
 
-#: ../IkiWiki/Plugin/mdwn.pm:52
+#: ../IkiWiki/Plugin/mdwn.pm:53
 msgid "multimarkdown is enabled, but Text::MultiMarkdown is not installed"
 msgstr ""
 
-#: ../IkiWiki/Plugin/mdwn.pm:97
+#: ../IkiWiki/Plugin/mdwn.pm:98
 #, perl-format
 msgid "failed to load Markdown.pm perl module (%s) or /usr/bin/markdown (%s)"
 msgstr ""
@@ -956,24 +956,24 @@ msgstr ""
 msgid "rename %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/rename.pm:164
+#: ../IkiWiki/Plugin/rename.pm:165
 msgid "Also rename SubPages and attachments"
 msgstr ""
 
-#: ../IkiWiki/Plugin/rename.pm:266
+#: ../IkiWiki/Plugin/rename.pm:267
 msgid "Only one attachment can be renamed at a time."
 msgstr ""
 
-#: ../IkiWiki/Plugin/rename.pm:269
+#: ../IkiWiki/Plugin/rename.pm:270
 msgid "Please select the attachment to rename."
 msgstr ""
 
-#: ../IkiWiki/Plugin/rename.pm:379
+#: ../IkiWiki/Plugin/rename.pm:380
 #, perl-format
 msgid "rename %s to %s"
 msgstr ""
 
-#: ../IkiWiki/Plugin/rename.pm:605
+#: ../IkiWiki/Plugin/rename.pm:606
 #, perl-format
 msgid "update for rename of %s to %s"
 msgstr ""
index c16ca7c810c78f6cabac99bfed6b5bfb19c8b72c..8c3a1e2e4d26d899e575b928142583f3949e7062 100644 (file)
@@ -1,23 +1,46 @@
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><article class="comment" id="<TMPL_VAR COMMENTID>">
 <TMPL_ELSE><div class="comment" id="<TMPL_VAR COMMENTID>"></TMPL_IF>
+<TMPL_ELSE>
+<article class="comment card" id="<TMPL_VAR COMMENTID>">
+</TMPL_UNLESS>
 
 <TMPL_IF COMMENTAUTHORAVATAR><div class="comment-avatar">
 <img src="<TMPL_VAR COMMENTAUTHORAVATAR>" alt="" />
 </div></TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><header class="comment-subject"><TMPL_ELSE><div class="comment-subject"></TMPL_IF>
+<TMPL_ELSE>
+<div class="commentheader card-header">
+<header class="comment-subject" title="<TMPL_VAR TITLE>">
+</TMPL_UNLESS>
 <TMPL_IF PERMALINK>
 <a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
 <TMPL_ELSE>
 <TMPL_VAR TITLE>
 </TMPL_IF>
 <TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
+<TMPL_UNLESS THEME_BOOTSTRAP>
+<TMPL_ELSE>
+</div>
+</TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><section class="inlinecontent"><TMPL_ELSE><div class="inlinecontent"></TMPL_IF>
 <TMPL_VAR CONTENT>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+<div class="commentcontent card-block card-text">
+<TMPL_VAR CONTENT>
+</div>
+</TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><header class="comment-header"><TMPL_ELSE><div class="comment-header"></TMPL_IF>
+<TMPL_ELSE>
+<footer class="commentfooter card-footer text-muted">
+</TMPL_UNLESS>
 <TMPL_IF COMMENTUSER>
 Comment by
 <TMPL_IF COMMENTOPENID>
@@ -50,17 +73,23 @@ Comment by
 </span>
 </TMPL_IF>
 &mdash; <TMPL_VAR CTIME>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
+</TMPL_UNLESS>
 
 <TMPL_IF HAVE_ACTIONS>
 <TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
 <ul>
 <TMPL_IF REMOVEURL>
-<li><a href="<TMPL_VAR REMOVEURL>" rel="nofollow">Remove comment</a></li>
+<li><a href="<TMPL_VAR REMOVEURL>" rel="nofollow"><i class="fa fa-trash"></i>Remove comment</a></li>
 </TMPL_IF>
 </ul>
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
 </TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div style="clear: both"></div>
+<TMPL_ELSE>
+</footer>
+</TMPL_UNLESS>
 <TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
index c67ad9c2b26dc752738fe5b8e47983c8a2b07342..ea4b4127b597976e5f046c9ff7c4c4adf55999d3 100644 (file)
@@ -1,8 +1,23 @@
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div <TMPL_IF ID>id="<TMPL_VAR ID ESCAPE=HTML>"</TMPL_IF> class="feedlink">
+<TMPL_ELSE>
+<div <TMPL_IF ID>id="<TMPL_VAR ID ESCAPE=HTML>"</TMPL_IF> class="feedlink btn-group">
+</TMPL_UNLESS>
 <TMPL_IF RSSURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <a class="feedbutton" type="application/rss+xml" rel="alternate" title="<TMPL_VAR RSSDESC>" href="<TMPL_VAR RSSURL>">RSS</a>
+<TMPL_ELSE>
+<a class="feedbutton btn btn-secondary" type="application/rss+xml" rel="alternate" title="<TMPL_VAR RSSDESC>" href="<TMPL_VAR RSSURL>"><i class="fa fa-rss"></i>RSS</a>
+</TMPL_UNLESS>
 </TMPL_IF>
 <TMPL_IF ATOMURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <a class="feedbutton" type="application/atom+xml" rel="alternate" title="<TMPL_VAR ATOMDESC>" href="<TMPL_VAR ATOMURL>">Atom</a>
+<TMPL_ELSE>
+<a class="feedbutton btn btn-secondary" type="application/atom+xml" rel="alternate" title="<TMPL_VAR ATOMDESC>" href="<TMPL_VAR ATOMURL>"><i class="fa fa-rss"></i>Atom</a>
+</TMPL_UNLESS>
 </TMPL_IF>
 </div>
+<TMPL_IF THEME_BOOTSTRAP>
+<p>
+</TMPL_IF>
index 155a08155198224b6202ceb1c150f6881752fef3..17fba18f5be9af0cf24c05cf811417e4ccd6d13e 100644 (file)
@@ -1,8 +1,7 @@
 
-<form method="get" action="https://www.google.com/search" id="searchform">
- <div>
+<form method="get" action="https://www.google.com/search" id="searchform" class="form-inline pull-xs-right">
+ <TMPL_UNLESS THEME_BOOTSTRAP><div></TMPL_UNLESS>
   <input name="sitesearch" value="<TMPL_VAR URL>" type="hidden" />
-  <input name="q" value="" id="searchbox" size="16" maxlength="255" type="text"
-    placeholder="search" />
- </div>
+  <input name="q" value="" id="searchbox" size="12" type="text" placeholder="search" class="form-control" />
+ <TMPL_UNLESS THEME_BOOTSTRAP></div></TMPL_UNLESS>
 </form>
index 37d7e48c135b430b47308b8f5c3f4b1b4446e5ce..5e2b42cc7ddfa040f5432d64dbac9e4a2a43b41c 100644 (file)
@@ -1,5 +1,10 @@
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><article class="inlinepage"><TMPL_ELSE><div class="inlinepage"></TMPL_IF>
+<TMPL_ELSE>
+<article class="inlinepage card">
+</TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><section class="inlineheader"><TMPL_ELSE><div class="inlineheader"></TMPL_IF>
 <TMPL_IF AUTHOR>
 <span class="author">
 </span>
 </TMPL_IF>
 <TMPL_IF HTML5><header class="header"><TMPL_ELSE><span class="header"></TMPL_IF>
+<TMPL_ELSE>
+<div class="inlineheader card-header">
+<header title="<TMPL_VAR TITLE>">
+</TMPL_UNLESS>
 <TMPL_IF PERMALINK>
 <a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
 <TMPL_ELSE>
 <a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
 </TMPL_IF>
 <TMPL_IF HTML5></header><TMPL_ELSE></span></TMPL_IF>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+</TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><section class="inlinecontent"><TMPL_ELSE><div class="inlinecontent"></TMPL_IF>
+<TMPL_ELSE>
+<TMPL_IF HAVE_ACTIONS>
+<div class="inline-actions">
+<ul>
+<TMPL_IF EDITURL>
+<li><a href="<TMPL_VAR EDITURL>" rel="nofollow"><i class="fa fa-pencil"></i>Edit</a></li>
+</TMPL_IF>
+<TMPL_IF COMMENTSLINK>
+<li><TMPL_VAR COMMENTSLINK></li>
+<TMPL_ELSE>
+<TMPL_IF DISCUSSIONLINK>
+<li><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_IF>
+</TMPL_IF>
+</ul>
+</div>
+</TMPL_IF>
+</div>
+
+<div class="inlinecontent card-block card-text">
+</TMPL_UNLESS>
 <TMPL_VAR CONTENT>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+</div>
+</TMPL_UNLESS>
 
 <TMPL_IF ENCLOSURE>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><section id="inlineenclosure"><TMPL_ELSE><div id="inlineenclosure"></TMPL_IF>
+<TMPL_ELSE>
+<div id="inlineenclosure">
+</TMPL_UNLESS>
 <a href="<TMPL_VAR ENCLOSURE>">Download</a>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+</div>
+</TMPL_UNLESS>
 </TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><footer class="inlinefooter"><TMPL_ELSE><div class="inlinefooter"></TMPL_IF>
-
+<TMPL_ELSE>
+<footer class="inlinefooter card-footer text-muted">
+<div class="pageinfo">
+</TMPL_UNLESS>
 <span class="pagedate">
 Posted <TMPL_VAR CTIME>
 </span>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF TAGS>
 <TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><span class="tags"></TMPL_IF>
 Tags:
@@ -43,19 +93,46 @@ Tags:
 </TMPL_LOOP>
 <TMPL_IF HTML5></nav><TMPL_ELSE></span></TMPL_IF>
 </TMPL_IF>
+</TMPL_UNLESS>
+
+<TMPL_IF THEME_BOOTSTRAP>
+<TMPL_IF AUTHOR>
+by
+<span class="author">
+<TMPL_IF AUTHORURL>
+<a href="<TMPL_VAR AUTHORURL>"><TMPL_VAR AUTHOR></a>
+<TMPL_ELSE>
+<TMPL_VAR AUTHOR>
+</TMPL_IF>
+</span>
+</TMPL_IF>
+</TMPL_IF>
 
 <TMPL_IF COPYRIGHT>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div class="pagecopyright">
 <TMPL_VAR COPYRIGHT>
 </div>
+<TMPL_ELSE>
+<span class="pagecopyright">
+<TMPL_VAR COPYRIGHT>
+</span>
+</TMPL_UNLESS>
 </TMPL_IF>
 
 <TMPL_IF LICENSE>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div class="pagelicense">
 License: <TMPL_VAR LICENSE>
 </div>
+<TMPL_ELSE>
+<span class="pagelicense">
+License: <TMPL_VAR LICENSE>
+</span>
+</TMPL_UNLESS>
 </TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HAVE_ACTIONS>
 <TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
 <ul>
@@ -76,3 +153,17 @@ License: <TMPL_VAR LICENSE>
 <TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
 
 <TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
+
+<TMPL_ELSE>
+
+<TMPL_IF TAGS>
+<nav class="tags">
+<i class="fa fa-tag"></i>Tags:
+<TMPL_LOOP TAGS>
+<TMPL_VAR LINK>
+</TMPL_LOOP>
+</nav>
+</TMPL_IF>
+</footer>
+</article>
+</TMPL_UNLESS>
index 183d733e1637f518f99a0c835765364f38edffd5..572e89175f14968654bcf6dc0bae573f7f690dc5 100644 (file)
 <TMPL_IF FAVICON>
 <link rel="icon" href="<TMPL_VAR BASEURL><TMPL_VAR FAVICON>" type="image/x-icon" />
 </TMPL_IF>
+<TMPL_IF THEME_BOOTSTRAP>
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" type="text/css" />
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" type="text/css" />
+</TMPL_IF>
 <link rel="stylesheet" href="<TMPL_VAR BASEURL>style.css" type="text/css" />
 <TMPL_IF LOCAL_CSS>
 <link rel="stylesheet" href="<TMPL_VAR BASEURL><TMPL_VAR LOCAL_CSS>" type="text/css" />
 <TMPL_ELSE>
 <link rel="stylesheet" href="<TMPL_VAR BASEURL>local.css" type="text/css" />
 </TMPL_IF>
+<TMPL_IF THEME_BOOTSTRAP>
+<TMPL_ELSE>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.2.0/js/tether.js"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/js/bootstrap.min.js"></script>
+</TMPL_IF>
 
 <TMPL_UNLESS DYNAMIC>
 <TMPL_IF EDITURL>
@@ -40,6 +50,8 @@
 </head>
 <body>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
+
 <TMPL_IF HTML5><article class="page"><TMPL_ELSE><div class="page"></TMPL_IF>
 
 <TMPL_IF HTML5><section class="pageheader"><TMPL_ELSE><div class="pageheader"></TMPL_IF>
 </TMPL_IF>
 </span>
 </span>
+
+<TMPL_ELSE>
+
+<div id="notfooter">
+<div id="header">
+<header class="navbar navbar-dark bg-inverse navbar-full">
+<div class="container">
+<button type="button" class="navbar-toggler hidden-sm-up pull-xs-right" data-toggle="collapse" data-target="#header-nav">&#9776;</button>
+<ul class="nav navbar-nav">
+<TMPL_LOOP NAME="PARENTLINKS">
+<li class="nav-item <TMPL_UNLESS NAME="DEPTH_0">hidden-md-down</TMPL_UNLESS>"><a class="nav-link" href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a></li>
+</TMPL_LOOP>
+<li class="nav-item"><a class="nav-link active <TMPL_IF HAS_PARENTLINKS>hidden-md-down</TMPL_IF>" href="#"><TMPL_VAR TITLE><TMPL_IF ISTRANSLATION>&nbsp;(<TMPL_VAR PERCENTTRANSLATED>%)</TMPL_IF></a></li>
+</ul>
+
+<div class="collapse navbar-toggleable-xs" id="header-nav">
+</TMPL_UNLESS>
+
 <TMPL_UNLESS DYNAMIC>
 <TMPL_IF SEARCHFORM>
 <TMPL_VAR SEARCHFORM>
 </TMPL_IF>
 </TMPL_UNLESS>
+
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></header><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+<TMPL_IF OTHERLANGUAGES>
+<nav id="otherlanguages" class="pull-xs-right">
+<ul class="nav navbar-nav">
+<TMPL_LOOP OTHERLANGUAGES>
+<li class="nav-item">
+<a class="nav-link" href="<TMPL_VAR URL>"><TMPL_VAR LANGUAGE></a>
+<TMPL_IF MASTER>(master)<TMPL_ELSE>&nbsp;(<TMPL_VAR PERCENT>%)</TMPL_IF>
+</li>
+</TMPL_LOOP>
+</ul>
+</nav>
+</TMPL_IF>
+</TMPL_UNLESS>
 
 <TMPL_IF HAVE_ACTIONS>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><nav class="actions"><TMPL_ELSE><div class="actions"></TMPL_IF>
 <ul>
+<TMPL_ELSE>
+<nav class="actions pull-xs-right">
+<ul class="nav navbar-nav">
+</TMPL_UNLESS>
 <TMPL_IF EDITURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
+<TMPL_ELSE>
+<li class="nav-item"><a class="nav-link" href="<TMPL_VAR EDITURL>" rel="nofollow"><i class="fa fa-pencil"></i>Edit</a></li>
+</TMPL_UNLESS>
 </TMPL_IF>
 <TMPL_IF RECENTCHANGESURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><a href="<TMPL_VAR RECENTCHANGESURL>">RecentChanges</a></li>
+<TMPL_ELSE>
+<li class="nav-item"><a class="nav-link" href="<TMPL_VAR RECENTCHANGESURL>">RecentChanges</a></li>
+</TMPL_UNLESS>
 </TMPL_IF>
 <TMPL_IF HISTORYURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><a href="<TMPL_VAR HISTORYURL>">History</a></li>
+<TMPL_ELSE>
+<li class="nav-item"><a class="nav-link" href="<TMPL_VAR HISTORYURL>">History</a></li>
+</TMPL_UNLESS>
 </TMPL_IF>
 <TMPL_IF GETSOURCEURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><a href="<TMPL_VAR GETSOURCEURL>">Source</a></li>
+<TMPL_ELSE>
+<li class="nav-item"><a class="nav-link" href="<TMPL_VAR GETSOURCEURL>">Source</a></li>
+</TMPL_UNLESS>
 </TMPL_IF>
 <TMPL_IF PREFSURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><a href="<TMPL_VAR PREFSURL>">Preferences</a></li>
+<TMPL_ELSE>
+<li class="nav-item"><a class="nav-link" href="<TMPL_VAR PREFSURL>"><i class="fa fa-cog"></i>Preferences</a></li>
+</TMPL_UNLESS>
 </TMPL_IF>
 <TMPL_IF ACTIONS>
 <TMPL_LOOP ACTIONS>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><TMPL_VAR ACTION></li>
+<TMPL_ELSE>
+<li class="nav-item nav-link"><TMPL_VAR ACTION></li>
+</TMPL_UNLESS>
 </TMPL_LOOP>
 </TMPL_IF>
 <TMPL_IF COMMENTSLINK>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><TMPL_VAR COMMENTSLINK></li>
 <TMPL_ELSE>
+<li class="nav-item nav-link"><TMPL_VAR COMMENTSLINK></li>
+</TMPL_UNLESS>
+<TMPL_ELSE>
 <TMPL_IF DISCUSSIONLINK>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <li><TMPL_VAR DISCUSSIONLINK></li>
+<TMPL_ELSE>
+<li class="nav-item nav-link"><TMPL_VAR DISCUSSIONLINK></li>
+</TMPL_UNLESS>
 </TMPL_IF>
 </TMPL_IF>
 </ul>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+</nav>
+</TMPL_UNLESS>
 </TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF OTHERLANGUAGES>
 <TMPL_IF HTML5><nav id="otherlanguages"><TMPL_ELSE><div id="otherlanguages"></TMPL_IF>
 <ul>
 </ul>
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
 </TMPL_IF>
+</TMPL_UNLESS>
 
 <TMPL_UNLESS DYNAMIC>
 <TMPL_VAR TRAILS>
 </TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+</div>
+</div>
+</header>
+</div>
+</TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_UNLESS DYNAMIC>
 <TMPL_IF SIDEBAR>
 <TMPL_IF HTML5><aside class="sidebar"><TMPL_ELSE><div class="sidebar"></TMPL_IF>
 <TMPL_IF HTML5></aside><TMPL_ELSE></div></TMPL_IF>
 </TMPL_IF>
 </TMPL_UNLESS>
+<TMPL_ELSE>
+<div class="container">
+<TMPL_UNLESS DYNAMIC>
+<TMPL_IF SIDEBAR>
+<div class="row">
+<div class="col-sm-8 col-md-9">
+</TMPL_IF>
+</TMPL_UNLESS>
+</TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div id="pagebody">
 
 <TMPL_IF HTML5><section<TMPL_ELSE><div</TMPL_IF> id="content" role="main">
 <TMPL_VAR CONTENT>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+<main id="content">
+<TMPL_VAR CONTENT>
+</main>
+</TMPL_UNLESS>
 
 <TMPL_IF ENCLOSURE>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><section id="enclosure"><TMPL_ELSE><div id="enclosure"></TMPL_IF>
 <a href="<TMPL_VAR ENCLOSURE>">Download</a>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+<section id="enclosure" title="Download">
+<a href="<TMPL_VAR ENCLOSURE>">Download</a>
+</section>
+</TMPL_UNLESS>
 </TMPL_IF>
 
 <TMPL_UNLESS DYNAMIC>
 <TMPL_IF COMMENTS>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><section<TMPL_ELSE><div</TMPL_IF> id="comments" role="complementary">
 <TMPL_VAR COMMENTS>
+<TMPL_ELSE>
+<section id="comments" title="Comments">
+<a href="<TMPL_VAR ADDCOMMENTURL>" class="btn btn-primary">Add a comment</a>
+<TMPL_VAR COMMENTS>
+</TMPL_UNLESS>
 <TMPL_IF ADDCOMMENTURL>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div class="addcomment">
 <a href="<TMPL_VAR ADDCOMMENTURL>">Add a comment</a>
 </div>
+</TMPL_UNLESS>
 <TMPL_ELSE>
 <div class="addcomment">Comments on this page are closed.</div>
 </TMPL_IF>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></section><TMPL_ELSE></div></TMPL_IF>
+<TMPL_VAR COMMENTS>
+<TMPL_ELSE>
+<TMPL_VAR COMMENTS>
+</section>
+</TMPL_UNLESS>
 </TMPL_IF>
 </TMPL_UNLESS>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
+<TMPL_ELSE>
+<TMPL_UNLESS DYNAMIC>
+<TMPL_IF SIDEBAR>
+</div>
+<div class="col-sm-4 col-md-3">
+<aside id="sidebar" class="card card-block">
+<TMPL_VAR SIDEBAR>
+</aside>
+</div>
+</div>
+</TMPL_IF>
+</TMPL_UNLESS>
+</div>
+</TMPL_UNLESS>
+
 </div>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><footer<TMPL_ELSE><div</TMPL_IF> id="footer" class="pagefooter" role="contentinfo">
+<TMPL_ELSE>
+<footer id="footer" class="container">
+</TMPL_UNLESS>
 <TMPL_UNLESS DYNAMIC>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><nav id="pageinfo"><TMPL_ELSE><div id="pageinfo"></TMPL_IF>
 
+<TMPL_ELSE>
+<nav id="pageinfo">
+</TMPL_UNLESS>
 <TMPL_VAR TRAILS>
 
 <TMPL_IF TAGS>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><nav class="tags"><TMPL_ELSE><div class="tags"></TMPL_IF>
 Tags:
+<TMPL_ELSE>
+<span class="tags">
+<i class="fa fa-tag"></i>Tags:
+</TMPL_UNLESS>
 <TMPL_LOOP TAGS>
 <TMPL_VAR LINK>
 </TMPL_LOOP>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+</span>
+</TMPL_UNLESS>
 </TMPL_IF>
 
 <TMPL_IF BACKLINKS>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5><nav id="backlinks"><TMPL_ELSE><div id="backlinks"></TMPL_IF>
 Links:
+<TMPL_ELSE>
+<span id="backlinks">
+<i class="fa fa-link"></i>Links:
+</TMPL_UNLESS>
 <TMPL_LOOP BACKLINKS>
 <a href="<TMPL_VAR URL>"><TMPL_VAR PAGE></a>
 </TMPL_LOOP>
@@ -188,27 +358,51 @@ Links:
 </span>
 </span>
 </TMPL_IF>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
+<TMPL_ELSE>
+</span>
+</TMPL_UNLESS>
 </TMPL_IF>
 
 <TMPL_IF COPYRIGHT>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div class="pagecopyright">
 <a name="pagecopyright"></a>
 <TMPL_VAR COPYRIGHT>
 </div>
+<TMPL_ELSE>
+<span id="pagecopyright">
+<a name="pagecopyright"/><TMPL_VAR COPYRIGHT>
+</span>
+</TMPL_UNLESS>
 </TMPL_IF>
 
 <TMPL_IF LICENSE>
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div class="pagelicense">
 <a name="pagelicense"></a>
 License: <TMPL_VAR LICENSE>
 </div>
+<TMPL_ELSE>
+<span id="pagelicense">
+<a name="pagelicense"/>License: <TMPL_VAR LICENSE>
+</span>
+</TMPL_UNLESS>
 </TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <div class="pagedate">
+<TMPL_ELSE>
+<span id="pagedate">
+</TMPL_UNLESS>
 Last edited <TMPL_VAR MTIME>
 <!-- Created <TMPL_VAR CTIME> -->
+<TMPL_UNLESS THEME_BOOTSTRAP>
 </div>
+<TMPL_ELSE>
+</span>
+</TMPL_UNLESS>
 
 <TMPL_IF HTML5></nav><TMPL_ELSE></div></TMPL_IF>
 <TMPL_IF EXTRAFOOTER><TMPL_VAR EXTRAFOOTER></TMPL_IF>
@@ -216,7 +410,9 @@ Last edited <TMPL_VAR MTIME>
 <!-- from <TMPL_VAR WIKINAME> -->
 <TMPL_IF HTML5></footer><TMPL_ELSE></div></TMPL_IF>
 
+<TMPL_UNLESS THEME_BOOTSTRAP>
 <TMPL_IF HTML5></article><TMPL_ELSE></div></TMPL_IF>
+</TMPL_UNLESS>
 
 </body>
 </html>
index 8cdf745f9a9e1d6b53a19be2780fd76fcae9fbf9..8b0c625abc5112113da3bda33c1e5c20810de86c 100644 (file)
@@ -1,6 +1,10 @@
-<form method="get" action="<TMPL_VAR SEARCHACTION>" id="searchform">
-<div>
-<input type="text" id="searchbox" name="P" value="" size="16"
-  placeholder="search" />
-</div>
+<form method="get" action="<TMPL_VAR SEARCHACTION>" id="searchform" class="form-inline input-group input-group-sm pull-xs-right">
+<TMPL_UNLESS THEME_BOOTSTRAP><div></TMPL_UNLESS>
+<input type="text" id="searchbox" name="P" value="" size="12" placeholder="search" class="form-control" />
+<TMPL_IF THEME_BOOTSTRAP>
+<span class="input-group-btn">
+<button class="btn btn-secondary" type="submit"><i class="fa fa-search"></i></button>
+</span>
+</TMPL_IF>
+<TMPL_UNLESS THEME_BOOTSTRAP></div></TMPL_UNLESS>
 </form>
diff --git a/themes/bootstrap/fullstyle.css b/themes/bootstrap/fullstyle.css
new file mode 100644 (file)
index 0000000..58daa3d
--- /dev/null
@@ -0,0 +1,115 @@
+/* There isn't much space between the Bootstrap navbar and the page content */
+#header {
+       padding-bottom: 1em;
+}
+
+/* Ensure the footer is pushed down to the bottom of the screen,
+ * if the main content doesn't fill it. */
+body, html {
+       height: 100%;
+}
+
+#notfooter {
+       min-height: 100%;
+       padding-bottom: 2em;
+}
+
+#footer {
+       position: relative;
+       margin-top: -2em;
+       height: 2em;
+       color: grey;
+       border-top: 1px solid lightgrey;
+}
+
+#pagedate {
+       float: right;
+}
+
+/* Bootstrap's navbar packs everything without margins or padding.
+ * Ensure the search form has some space. */
+
+#searchform {
+       margin-left: 1em;
+}
+
+.parentlinks {
+       margin-right: 1em;
+}
+
+/* Alignment of header and footer items of the default inline pages.
+ * Using flexbox layout here, since it can wrap when things get too crowded.
+ * It's a bit better than floats. */
+.inlineheader {
+       display: flex;
+}
+
+.inlineheader header {
+       flex: 1 1 auto;
+}
+
+.inlineheader {
+       flex: 0 1 auto;
+}
+
+.inlinefooter {
+       display: flex;
+       flex-wrap: wrap;
+}
+
+.inlinefooter .pageinfo {
+       flex: 1 1 auto;
+}
+
+.inlinefooter .tags {
+       flex: 0 1 auto;
+}
+
+.inline-actions {
+       display: inline;
+}
+
+.inline-actions ul, .inline-actions li {
+       list-style-type: none;
+       display: inline;
+}
+
+/* Quick and simple table style */
+table {
+       border: 1px solid grey;
+       padding: 0.5em;
+}
+
+/* Give RSS and Atom buttons an orange color */
+.feedbutton {
+       background: #ff8000;
+       border-color: #e07000;
+       color: white;
+       font-weight: bold;
+}
+
+.feedbutton:hover {
+       background: #ffc080;
+       border-color: #e07000;
+}
+
+/* Carousel alignment */
+.carousel-page {
+       margin: 1em;
+}
+
+.carousel-image {
+       margin: auto;
+}
+
+/* Bootstrap 4.0.0-alpha.2 forgot to define a blockquote style? */
+blockquote {
+       border-left: 4px solid rgba(0,0,0,.1);
+       padding-left: 0.5em;
+}
+
+/* Fix image width in cards. */
+.card-img-top, .card-img-bottom {
+       width: 100%;
+       height: auto;
+}