From dab61c6bbd78382ab416c7e47ef2698aa133eb4f Mon Sep 17 00:00:00 2001 From: Jim Hague Date: Tue, 10 Oct 2017 15:01:22 +0100 Subject: [PATCH] Add previous and next tune links to website. --- abcfield.py | 2 +- dottes.html.learnertune | 15 +++++ dottes.html.tune | 10 +++ makeWeb.sh | 86 ++++++++++++++++++-------- web/css/dottes.css | 133 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 219 insertions(+), 27 deletions(-) diff --git a/abcfield.py b/abcfield.py index cb3db54..ecffb1c 100755 --- a/abcfield.py +++ b/abcfield.py @@ -176,7 +176,7 @@ def convertMarkdown(t, latex): # 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) diff --git a/dottes.html.learnertune b/dottes.html.learnertune index d5d0c66..19321f0 100644 --- a/dottes.html.learnertune +++ b/dottes.html.learnertune @@ -142,6 +142,21 @@ + diff --git a/dottes.html.tune b/dottes.html.tune index b8fb50a..23d035c 100644 --- a/dottes.html.tune +++ b/dottes.html.tune @@ -85,6 +85,16 @@ Last changed ${lastchanged} + diff --git a/makeWeb.sh b/makeWeb.sh index e8a3e14..d1bd7bc 100755 --- a/makeWeb.sh +++ b/makeWeb.sh @@ -66,35 +66,69 @@ cp $1-*.pdf $webdir # 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 + # Copy the ABC into the web. + cp $filename $webdir - # Generate MusicXML into the web. - python $abc2xml $filename > ${webdir}/${name}.xml + # Generate MusicXML into the web. + python $abc2xml $filename > ${webdir}/${name}.xml - # 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 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 - # Get date and time of last change to tune. - lastchanged=`hg log --limit 1 --template "{date|shortdate}" $masterbookedir/${name}.abc` + # 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 + # Get previous and next tune page names and titles. + prevpage="" + prevtitle="" + nextpage="" + nexttitle="" - $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 + 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 + + $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 diff --git a/web/css/dottes.css b/web/css/dottes.css index a23be71..0779a1d 100644 --- a/web/css/dottes.css +++ b/web/css/dottes.css @@ -244,6 +244,26 @@ div.dottes-tune-footer-last 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 @@ div.dottes-tune-learner-download 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 @@ div.dottes-history-yes 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 @@ div.dottes-history-yes 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; + } } /*