chiark / gitweb /
Move playlist menu code to playlists.c
[disorder] / templates / macros.tmpl
index 495c29a978f772385bd3bac0bbeac14f846aa15a..33d1fb27d99caf995a5863c8239e2520c1f2e03a 100644 (file)
@@ -24,7 +24,7 @@ Standard macros
 This file is read before any other template.  Its output is discarded
 but side effects (definitions of macros) are retained.  To override it,
 create /etc/disorder/macros.tmpl that includes this file by absolute path
 This file is read before any other template.  Its output is discarded
 but side effects (definitions of macros) are retained.  To override it,
 create /etc/disorder/macros.tmpl that includes this file by absolute path
-and then redefines macros as desired.
+and then redefine macros as desired.
 ------------------------------------------------------------------------
 
 
 ------------------------------------------------------------------------
 
 
@@ -47,18 +47,28 @@ and then redefines macros as desired.
 @# Standard menu
 @#   @current is the name of the current page, e.g. choosealpha, login
 @define {stdmenu} {current}
 @# Standard menu
 @#   @current is the name of the current page, e.g. choosealpha, login
 @define {stdmenu} {current}
-        {  <p class=menubar>
+        {  <div class=top>
+   <p class=menubar>
 @menuitem{@current}{playing}{true}
 @menuitem{@current}{recent}{true}
 @menuitem{@current}{choose}{@right{play}}
 @menuitem{@current}{manage}{true}
 @menuitem{@current}{playing}{true}
 @menuitem{@current}{recent}{true}
 @menuitem{@current}{choose}{@right{play}}
 @menuitem{@current}{manage}{true}
+@menuitem{@current}{new}{true}
 @menuitem{@current}{login}{true}
 @menuitem{@current}{help}{true}
 @menuitem{@current}{login}{true}
 @menuitem{@current}{help}{true}
-@menuitem{@current}{about}{true}
    </p>
    </p>
-   <hr>
+   <div class=logo>
+@menuicon{@current}{about}{true}{logosmall}
+   </div>
+  <div style="clear:both"></div>
+  </div>
 }
 
 }
 
+@define {menuurl} {name}
+        {@if{@eq{name}{playing}}
+           {@url}
+           {@url?action=@name}}
+
 @# Menu entry
 @#  Used by @stdmenu
 @#  @current is the name of the current page (not necessarily the action that
 @# Menu entry
 @#  Used by @stdmenu
 @#  @current is the name of the current page (not necessarily the action that
@@ -68,16 +78,40 @@ and then redefines macros as desired.
 @#  
 @define {menuitem} {current name available}  
         {@if{@available}
 @#  
 @define {menuitem} {current name available}  
         {@if{@available}
-            {   <a @if{@eq{@current}{@name}}
-                     {class=activemenu}
-                     {class=inactivemenu}
-@if{@eq{name}{playing}}
-   {      href="@url"}
-   {      href="@url?action=@name"}
-      title="@label{menu.@q{@name}verbose}">@label{menu.@name}</a>}
-            {   <span class=invalidmenu 
-         title="@label{menu.@q{@name}verbose}">@label{menu.@name}</span>}}
+            {    <a @if{@eq{@current}{@name}}
+                       {class=activemenu}
+                       {class=inactivemenu}
+       href="@menuurl{@name}"
+       title="@label{menu.@q{@name}verbose}">@label{menu.@name}</a>}
+            {    <span class=invalidmenu 
+          title="@label{menu.@q{@name}verbose}">@label{menu.@name}</span>}}
 
 
+@# Icon-based menu entry (very similar to @menuitem)
+@#  Used by @stdmenu
+@#  @current is the name of the current page
+@#  @name is the name of the menu item
+@#  @available is true if the menu item is available, else false
+@#  @icon is the name of the icon
+@#  
+@define {menuicon} {current name available icon}  
+        {@if{@available}
+            {    <a class=menuicon
+       href="@menuurl{@name}">
+     <img @if{@eq{@current}{@name}}
+             {class=activemenu}
+             {class=inactivemenu}
+          title="@label{menu.@q{@name}verbose}"
+          alt="@label{menu.@name}"
+          src="@image{@icon}">
+    </a>}
+            {    <span class=menuicon>
+     <img @if{@eq{@current}{@name}}
+             {class=activemenu}
+             {class=inactivemenu}
+          title="@label{menu.@q{@name}verbose}"
+          alt="@label{menu.@name}"
+          src="@image{@icon@_inactive}">
+    </a>}}
 
 @# Standard footer text
 @define {credits} {}
 
 @# Standard footer text
 @define {credits} {}
@@ -136,7 +170,7 @@ and then redefines macros as desired.
 @#  @what is the section
 @#  @track is the track name
 @define {mtitleplay} {what track}
 @#  @what is the section
 @#  @track is the track name
 @define {mtitleplay} {what track}
-        {<a title="@part{@track}{title}" href="@url?action=play&#38;file=@urlquote{@track}&#38;back=@urlquote{@thisurl}">@part{@track}{title}{short}</a>}
+        {<a title="@part{@track}{title}" href="@url?action=play&#38;track=@urlquote{@track}&#38;back=@urlquote{@thisurl}">@part{@track}{title}{short}</a>}
 
 @# Expand to the remove/scratch entry for @id
 @#  @what is the section
 
 @# Expand to the remove/scratch entry for @id
 @#  @what is the section
@@ -174,6 +208,95 @@ and then redefines macros as desired.
                   title="@label{playing.@q{@dir}verbose}"
                   alt="@label{playing.@dir}">}}
 
                   title="@label{playing.@q{@dir}verbose}"
                   alt="@label{playing.@dir}">}}
 
+@# Size of input box for preferences forms
+@define{prefsize}{}{40}
+
+@# Expand to the weight of a track.  This macro knows the default weight,
+@# and does two lookups, which is rather inelegant.
+@#  @track is the track name.
+@define{weight}{track}{@if{@eq{@pref{@track}{weight}}{}} 
+                          {90000}
+                          {@pref{@track}{weight}}}
+
+@# Expand to preference form section for a track
+@#  @index is the track number
+@#  @track is the track name
+@define {mprefs} {index track}
+        {
+   <p class="prefs_head">Preferences for <span class="prefs_track">@quote{@resolve{@track}}</span>:</p>
+   <input type=hidden name="@index@__track" value="@quote{@resolve{@track}}">
+   <table class=prefs>
+    <tr class=headings>
+     <th class="prefs_name">@label{prefs.name}</th>
+     <th class="prefs_value">@label{prefs.value}</th>
+    </tr>
+    <tr class=even>
+     <td class="prefs_name">@label{heading.title}</td>
+     <td class="prefs_value">
+      <input size=@prefsize type=text name="@index@__title"
+             value="@part{@track}{title}{display}">
+     </td>
+    </tr>
+    <tr class=odd>
+     <td class="prefs_name">@label{heading.album}</td>
+     <td class="prefs_value">
+      <input size=@prefsize type=text name="@index@__album"
+             value="@part{@track}{album}{display}">
+     </td>
+    </tr>
+    <tr class=even>
+     <td class="prefs_name">@label{heading.artist}</td>
+     <td class="prefs_value">
+      <input size=@prefsize type=text name="@index@__artist"
+             value="@part{@track}{artist}{display}">
+     </td>
+    </tr>
+    <tr class=odd>
+     <td class="prefs_name">@label{prefs.tags}</td>
+     <td class="prefs_value">
+      <input size=@prefsize type=text name="@index@__tags"
+             value="@pref{@track}{tags}">
+     </td>
+    </tr>
+    <tr class=even>
+     <td class="prefs_name">@label{prefs.weight}</td>
+     <td class="prefs_value">
+      <input size=@prefsize type=text name="@index@__weight"
+             value="@weight{@track}">
+     </td>
+    </tr>
+    <tr class=odd>
+     <td class="prefs_name">@label{prefs.random}</td>
+     <td class="prefs_value">
+      <input type=checkbox value=true
+             name="@index@__random" 
+             @if{@ne{@pref{@track}{pick_at_random}}{0}}
+                {checked}>
+      </td>
+    </tr>
+   </table>
+}
+
+@# Expand to a submit button
+@#  @text is the text to put inside the button
+@define {submit} {text}
+        {<button class=button name=submit type=submit>@text</button>}
+
+@# Expand to an action button
+@#  @text is the text to put inside the button
+@#  @long is the text to put in the caption
+@#  @action is the target action
+@define {actbutton} {text long action}
+        {<form method=POST class=button action="@url">
+           <input type=hidden name=action value="@action">
+           <input type=submit name=submit value="@text" title="@long">
+@formback@#
+         </form>}
+
+@# Used for inserting back= elements
+@define {back} {} {}
+@define {formback} {} {}
+
 Local variables:
 mode:sgml
 sgml-always-quote-attributes:nil
 Local variables:
 mode:sgml
 sgml-always-quote-attributes:nil