changeset 722:f8ab14cc9d8d build-default-281

Add previous and next tune links to website.
author Jim Hague <jim.hague@acm.org>
date Tue, 10 Oct 2017 15:01:22 +0100 (2017-10-10)
parents f053b23af061
children 0818dcbaf5af
files abcfield.py dottes.html.learnertune dottes.html.tune makeWeb.sh web/css/dottes.css
diffstat 5 files changed, 221 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/abcfield.py	Mon Oct 09 19:07:36 2017 +0100
+++ b/abcfield.py	Tue Oct 10 15:01:22 2017 +0100
@@ -176,7 +176,7 @@
 # <foo.abc> will expand to ['title of foo'](foo.abc).
 def expandCustomMarkdown(t, dir, latex):
     # Given a match to (foo.abc), return a markdown link to the tune with the
-    # title of the tune as the text of the link.
+    # title (and subtitle, if present) of the tune as the text of the link.
     def getTitle(m):
         fname = m.group(1) + ".abc"
         path = pathlib.Path(dir, fname)
--- a/dottes.html.learnertune	Mon Oct 09 19:07:36 2017 +0100
+++ b/dottes.html.learnertune	Tue Oct 10 15:01:22 2017 +0100
@@ -142,6 +142,21 @@
             </div>
           </div>
         </div>
+        <div class="dottes-tune-footer-learner">
+          <div class="dottes-tune-footer-learner-prev-column"></div>
+          <div class="dottes-tune-footer-learner-booke-column"></div>
+          <div class="dottes-tune-footer-learner-next-column"></div>
+          <div class="dottes-tune-footer-learner-row">
+            <div class="dottes-tune-footer-learner-prev">
+              <a href="${prevpage}">${prevtitle}</a>
+            </div>
+            <div class="dottes-tune-footer-learner-booke">
+            </div>
+            <div class="dottes-tune-footer-learner-next">
+              <a href="${nextpage}">${nexttitle}</a>
+            </div>
+          </div>
+        </div>
       </div>
     </div>
   </div>
--- a/dottes.html.tune	Mon Oct 09 19:07:36 2017 +0100
+++ b/dottes.html.tune	Tue Oct 10 15:01:22 2017 +0100
@@ -85,6 +85,16 @@
               Last changed ${lastchanged}
             </div>
           </div>
+          <div class="dottes-tune-footer-row">
+            <div class="dottes-tune-footer-prev">
+              <a href="${prevpage}">${prevtitle}</a>
+            </div>
+            <div class="dottes-tune-footer-booke">
+            </div>
+            <div class="dottes-tune-footer-next">
+              <a href="${nextpage}">${nexttitle}</a>
+            </div>
+          </div>
         </div>
       </div>
     </div>
--- a/makeWeb.sh	Mon Oct 09 19:07:36 2017 +0100
+++ b/makeWeb.sh	Tue Oct 10 15:01:22 2017 +0100
@@ -66,35 +66,69 @@
 
 # Now, for each tune, make the tune page.
 rm -f $webdir/$tunelist
-find $bookedir -name "*.abc" | sort |
-    while read filename
-    do
-        name=`basename $filename .abc`
+declare -a filenames
+filenames=(`find $bookedir -name "*.abc" | sort`)
+nofiles=${#filenames[@]}
+for (( i=0; i < ${nofiles}; i++ ))
+do
+    filename=${filenames[$i]}
+    name=`basename $filename .abc`
+
+    # Copy the ABC into the web.
+    cp $filename $webdir
+
+    # Generate MusicXML into the web.
+    python $abc2xml $filename > ${webdir}/${name}.xml
 
-        # Copy the ABC into the web.
-        cp $filename $webdir
+    # If we are not the master booke, link the mp3s in from the
+    # master page in a desperate attempt to make IE8 work.
+    # The Jenkins archive will dereference the soft link, it seems,
+    # but I guess I can live with copies of the MP3 for now.
+    if [ "$booke" != "$masterbooke" ]; then
+        pushd ${webdir} > /dev/null
+        ln -f -s ../${masterbooke}/*${name}.mp3 .
+        popd > /dev/null
+    fi
 
-        # Generate MusicXML into the web.
-        python $abc2xml $filename > ${webdir}/${name}.xml
+    # Get date and time of last change to tune.
+    lastchanged=`hg log --limit 1 --template "{date|shortdate}" $masterbookedir/${name}.abc`
+
+    # Get previous and next tune page names and titles.
+    prevpage=""
+    prevtitle=""
+    nextpage=""
+    nexttitle=""
 
-        # If we are not the master booke, link the mp3s in from the
-        # master page in a desperate attempt to make IE8 work.
-        # The Jenkins archive will dereference the soft link, it seems,
-        # but I guess I can live with copies of the MP3 for now.
-        if [ "$booke" != "$masterbooke" ]; then
-            pushd ${webdir} > /dev/null
-            ln -f -s ../${masterbooke}/*${name}.mp3 .
-            popd > /dev/null
-        fi
+    if [ $i -gt 0 ]; then
+        prev=${filenames[$((i - 1))]}
+        prevpage=`basename $prev .abc`.html
+        prevtitle=`./abcfield.py --display --field="T" $prev`
+    fi
+    if [ $i -lt $((nofiles - 1)) ]; then
+        next=${filenames[$((i + 1))]}
+        nextpage=`basename $next .abc`.html
+        nexttitle=`./abcfield.py --display --field="T" $next`
+    fi
+
+    # Generate the tune web page.
+    tunepage=${name}.html
+    learnerpage=learner-${name}.html
 
-        # Get date and time of last change to tune.
-        lastchanged=`hg log --limit 1 --template "{date|shortdate}" $masterbookedir/${name}.abc`
-
-        # Generate the tune web page.
-        tunepage=${name}.html
-        learnerpage=learner-${name}.html
-
-        $dir/abctemplate.py --value "masterbooke=${masterbooke}" --value "lastchanged=${lastchanged}" --template dottes.html.tune $filename > $webdir/$tunepage
-        $dir/abctemplate.py --value "masterbooke=${masterbooke}" --value "lastchanged=${lastchanged}" --template dottes.html.learnertune $filename > $webdir/$learnerpage
-        $dir/abctemplate.py --template dottes.html.tuneindex $filename >> $webdir/$tunelist
-    done
+    $dir/abctemplate.py \
+        --value "masterbooke=${masterbooke}" \
+        --value "lastchanged=${lastchanged}" \
+        --value "prevpage=${prevpage}" \
+        --value "prevtitle=${prevtitle}" \
+        --value "nextpage=${nextpage}" \
+        --value "nexttitle=${nexttitle}" \
+        --template dottes.html.tune $filename > $webdir/$tunepage
+    $dir/abctemplate.py \
+        --value "masterbooke=${masterbooke}" \
+        --value "lastchanged=${lastchanged}" \
+        --value "prevpage=learner-${prevpage}" \
+        --value "prevtitle=${prevtitle}" \
+        --value "nextpage=learner-${nextpage}" \
+        --value "nexttitle=${nexttitle}" \
+        --template dottes.html.learnertune $filename > $webdir/$learnerpage
+    $dir/abctemplate.py --template dottes.html.tuneindex $filename >> $webdir/$tunelist
+done
--- a/web/css/dottes.css	Mon Oct 09 19:07:36 2017 +0100
+++ b/web/css/dottes.css	Tue Oct 10 15:01:22 2017 +0100
@@ -244,6 +244,26 @@
     vertical-align: middle;
 }
 
+div.dottes-tune-footer-prev
+{
+    display: table-cell;
+    vertical-align: middle;
+}
+
+div.dottes-tune-footer-booke
+{
+    display: table-cell;
+    text-align: center;
+    vertical-align: middle;
+}
+
+div.dottes-tune-footer-next
+{
+    display: table-cell;
+    text-align: right;
+    vertical-align: middle;
+}
+
 div.dottes-tune-learner
 {
     display: table;
@@ -290,6 +310,55 @@
     text-align: right;
 }
 
+div.dottes-tune-footer-learner
+{
+    display: table;
+    width: 100%;
+}
+
+div.dottes-tune-footer-learner-prev-column
+{
+    display: table-column;
+    width: 25%;
+}
+
+div.dottes-tune-footer-learner-booke-column
+{
+    display: table-column;
+    width: 50%;
+}
+
+div.dottes-tune-footer-learner-next-column
+{
+    display: table-column;
+    width: 25%;
+}
+
+div.dottes-tune-footer-learner-row
+{
+    display: table-row;
+}
+
+div.dottes-tune-footer-learner-prev
+{
+    display: table-cell;
+    vertical-align: middle;
+}
+
+div.dottes-tune-footer-learner-booke
+{
+    display: table-cell;
+    text-align: center;
+    vertical-align: middle;
+}
+
+div.dottes-tune-footer-learner-next
+{
+    display: table-cell;
+    text-align: right;
+    vertical-align: middle;
+}
+
 a.dottes-tune-icon-link
 {
     text-decoration: none;
@@ -476,6 +545,27 @@
         vertical-align: middle;
     }
 
+    div.dottes-tune-footer-prev
+    {
+        display: table-row;
+        text-align: center;
+        vertical-align: middle;
+    }
+
+    div.dottes-tune-footer-booke
+    {
+        display: table-row;
+        text-align: center;
+        vertical-align: middle;
+    }
+
+    div.dottes-tune-footer-next
+    {
+        display: table-row;
+        text-align: center;
+        vertical-align: middle;
+    }
+
     div.dottes-tune-learner
     {
     }
@@ -515,6 +605,49 @@
         display: table-row;
         text-align: center;
     }
+
+    div.dottes-tune-footer-learner
+    {
+    }
+
+    div.dottes-tune-footer-learner-prev-column
+    {
+    }
+
+    div.dottes-tune-footer-learner-booke-column
+    {
+    }
+
+    div.dottes-tune-footer-learner-next-column
+    {
+    }
+
+    div.dottes-tune-footer-learner-row
+    {
+        display: table;
+        width: 100%;
+    }
+
+    div.dottes-tune-footer-learner-prev
+    {
+        display: table-row;
+        text-align: center;
+        vertical-align: middle;
+    }
+
+    div.dottes-tune-footer-learner-booke
+    {
+        display: table-row;
+        text-align: center;
+        vertical-align: middle;
+    }
+
+    div.dottes-tune-footer-learner-next
+    {
+        display: table-row;
+        text-align: center;
+        vertical-align: middle;
+    }
 }
 
 /*