# HG changeset patch # User Jim Hague # Date 1507644082 -3600 # Node ID f8ab14cc9d8db44db437346c4e7e46c49f3c36ca # Parent f053b23af061b8815dd9e91de86fe5aec91490fb Add previous and next tune links to website. diff -r f053b23af061 -r f8ab14cc9d8d abcfield.py --- 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 @@ # 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 -r f053b23af061 -r f8ab14cc9d8d dottes.html.learnertune --- 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 @@ + diff -r f053b23af061 -r f8ab14cc9d8d dottes.html.tune --- 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} + diff -r f053b23af061 -r f8ab14cc9d8d makeWeb.sh --- 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 diff -r f053b23af061 -r f8ab14cc9d8d web/css/dottes.css --- 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; + } } /*