Fix queue ordering, and handling of queue containing repeated tracks.
[adorno.git] / inc / show-album.php
blob1c4d73ba5212109d845497db653252137e404dc2
1 <script language="javascript"><!--
2 function show_hide() {
3 var args = show_hide.arguments;
4 var tbody = document.getElementById('album-' + args[0]);
5 var control = document.getElementById('control-' + args[0]);
6 // alert(tbody.style.display);
7 if ( tbody.style.display == 'none' ) {
8 tbody.style.display = '';
9 control.innerHTML = '–';
11 else {
12 tbody.style.display = 'none';
13 control.innerHTML = '+';
16 --></script>
17 <?php
18 /**
19 * List artists
21 function album_track( $trk, $link_title, $row_class = "" ) {
22 global $letter_get, $ltrtype;
24 $track_link_url = sprintf( "?type=%s&l=%s&a=%s&t=%s",
25 $ltrtype, urlencode($trk->album), urlencode($trk->artist), urlencode($trk->title) );
26 $safe_title = htmlspecialchars($link_title);
27 $duration = preg_replace( "/^[0:]{1,4}/", "", $trk->duration );
28 $enqueue = sprintf( "enqueue('%s','%s','%s')", rawurlencode($trk->artist),
29 rawurlencode($trk->album), rawurlencode($trk->title) );
30 $link = <<<EOHTML
31 <a class="track$row_class" onclick="$enqueue" title="$trk->path_name">$safe_title</a>
32 </td>
33 <td class="track$row_class" width="7%">$duration</td>
34 <td class="track$row_class" width="4%">
35 <a class="alphabetica" href="edit_track.php$track_link_url" title="Edit Track Info">E</a>
37 EOHTML;
39 return $link;
42 if ( isset($l) ) {
43 echo '<h3>'.htmlspecialchars($l).'</h3>';
45 $qa = 'SELECT artist, album, title, tracknum, path_name, duration::interval(0), ';
46 $qa .= 'extract( EPOCH FROM duration)::int AS secs, quality, get_last_played(hash_key) AS last_played ';
47 $qa .= 'FROM tracks WHERE lower(album) = lower(?) ';
48 $qa .= 'ORDER BY lower(album), setpart, tracknum';
49 $qry = new AwlQuery($qa, $l);
50 if ( $qry->Exec() && $qry->rows() > 0 ) {
51 echo '<table width="100%" cellspacing="0" cellpadding="0">
53 $last_album = '';
54 $rownum = 0;
55 $id = 0;
56 while ( $track = $qry->Fetch() ) {
57 if ( $track->album != '' && $track->album != $last_album ) {
58 if ( $rownum != 0 ) echo '</tbody>';
59 echo '<tr class="th4">';
60 $id++;
61 echo '<td width="3%" class="th4"><span class="expand_hide" id="control-'.$id.'" onclick="show_hide('.$id.')" title="Expand section">+</span></td>';
62 echo '<td width="86%" class="th4" style="text-align:left"><a class="th4" onclick="';
63 printf( "enqueue('','%s','')", rawurlencode($track->album) );
64 echo '" title="Play Entire Album">'.htmlspecialchars($track->album).'</a></td>';
65 echo '<td width="7%">&nbsp;</td>';
66 echo '<td width="4%" class="th4"><a class="alphabetica" class="track" href="edit_track.php?l='
67 . rawurlencode($track->album) . '&a='
68 . rawurlencode($track->artist) . '" title="Edit Album Info">E</a>
69 </td></tr>
70 <tbody id="album-'.$id.'" style="display:none;">
71 <tr class="th4">
73 $last_album = $track->album;
75 else if ( $rownum == 0 ) {
76 echo '<tr class="th4">';
77 $id++;
78 echo '<td width="3%" class="th4"><span onclick="show_hide(\'album-'.$id.'\')">+</span></td>';
79 echo '<td class="th4" colspan="3" style="text-align:left">Unkown Album</td></tr>
80 <tbody id="album-'.$id.'" style="display:none;">
81 <tr class="th4">
84 else {
85 echo '<tr class="th4">';
87 $rowclass = ($rownum % 2);
88 echo '<td colspan="2" style="text-align:left;" class="track'.$rowclass.'">';
89 echo album_track($track, ($track->tracknum > 0 ? $track->tracknum.': ' : '') . $track->title, $rowclass );
90 $rownum++;
91 echo '</td>';
92 echo '</tr>
95 if ( $rownum != 0 ) echo '</tbody>';
96 echo '</table>';