Index: HTML/Default/xmlbrowser.html =================================================================== --- HTML/Default/xmlbrowser.html (revision 33244) +++ HTML/Default/xmlbrowser.html (working copy) @@ -160,11 +160,19 @@ [% IF item.favorites == 1 %] [% WRAPPER favaddlink noTarget=1 %] + [% IF songinfo.favorites %] + onclick="SqueezeJS.Utils.toggleFavorite(this, '[% songinfo.favorites_url | replace("'", "%27") | uri %]', '[% crumb.values.-1 | html %]');" + [% ELSE %] onclick="Browse.XMLBrowser.toggleFavorite(this, '[% (item.index || index _ (start + loop.index)) | replace("'", "%27") | uri %]', '[% pageinfo.startitem %]', '[% sess %]');" + [% END %] [% END %] [% ELSIF item.favorites == 2 %] [% WRAPPER favdellink noTarget=1 %] + [% IF songinfo.favorites %] + onclick="SqueezeJS.Utils.toggleFavorite(this, '[% songinfo.favorites_url | replace("'", "%27") | uri %]', '[% crumb.values.-1 | html %]');" + [% ELSE %] onclick="Browse.XMLBrowser.toggleFavorite(this, '[% (item.index || index _ (start + loop.index)) | replace("'", "%27") | uri %]', '[% pageinfo.startitem %]', '[% sess %]');" + [% END %] [% END %] [% END %] @@ -189,6 +197,16 @@ [% END %] [%- BLOCK allcontrol -%] + [% IF songinfo.favorites == 1 %] + [% WRAPPER favaddlink noTarget=1 %] + onclick="SqueezeJS.Utils.toggleFavorite(this, '[% songinfo.favorites_url | replace("'", "%27") | uri %]', '[% crumb.values.-1 | html %]');" + [% END %] + [% ELSIF songinfo.favorites == 2 %] + [% WRAPPER favdellink noTarget=1 %] + onclick="SqueezeJS.Utils.toggleFavorite(this, '[% songinfo.favorites_url | replace("'", "%27") | uri %]', '[% crumb.values.-1 | html %]');" + [% END %] + [% END %] + [% WRAPPER playlink %]onclick="Browse.XMLBrowser.playAllLink('[% multiquery %][% searchquery | replace("'", "%27") | uri %]', '[% currentIndex %]', '[% sess %]');"[% END %] [% IF allLinks; WRAPPER insertlink %]onclick="Browse.XMLBrowser.insertLink('[% multiquery %][% searchquery | replace("'", "%27") | uri %]', '[% currentIndex %]', '[% sess %]');"[% END; END %] [% WRAPPER addlink %]onclick="Browse.XMLBrowser.addAllLink('[% multiquery %][% searchquery | replace("'", "%27") | uri %]', '[% currentIndex %]', '[% sess %]');"[% END %] Index: Slim/Menu/BrowseLibrary.pm =================================================================== --- Slim/Menu/BrowseLibrary.pm (revision 33243) +++ Slim/Menu/BrowseLibrary.pm (working copy) @@ -1638,17 +1638,21 @@ my $albumMetadata; my $image; + my $albumTitle; if ($getMetadata) { my ($albumId) = grep {/album_id:/} @searchTags; $albumId =~ s/album_id:// if $albumId; my $album = Slim::Schema->find( Album => $albumId ); - my $feed = Slim::Menu::AlbumInfo->menu( $client, $album->url, $album, undef ) if $album; - $albumMetadata = $feed->{'items'} if $feed; - $image = 'music/' . $album->artwork . '/cover' if $album && $album->artwork; + if ($album) { + $albumTitle = $album->name; + my $feed = Slim::Menu::AlbumInfo->menu( $client, $album->url, $album, undef ); + $albumMetadata = $feed->{'items'} if $feed; + $image = 'music/' . $album->artwork . '/cover' if $album->artwork; + } } - return {items => $items, actions => \%actions, sorted => 0, albumData => $albumMetadata, cover => $image}, $extra; + return {items => $items, actions => \%actions, sorted => 0, albumData => $albumMetadata, albumTitle => $albumTitle, cover => $image}, $extra; }, ); } Index: Slim/Web/XMLBrowser.pm =================================================================== --- Slim/Web/XMLBrowser.pm (revision 33243) +++ Slim/Web/XMLBrowser.pm (working copy) @@ -904,6 +904,13 @@ } delete $details->{'unfold'}; } + + if ($stash->{'playUrl'}) { + $details->{'favorites_url'} = $stash->{'playUrl'}; + } + elsif ($feed->{'albumTitle'}) { + $details->{'favorites_url'} = 'db:album.title=' . URI::Escape::uri_escape_utf8( $feed->{albumTitle} ); + } if (scalar keys %$details) { @@ -918,6 +925,10 @@ $details->{'removeLink'} = 'anyurl?p0=playlist&p1=deleteitem&p2=' . Slim::Utils::Misc::escape($stash->{'playUrl'}); } + + if ($details->{'favorites_url'} && $favs) { + $details->{'favorites'} = $favs->hasUrl($details->{'favorites_url'}) ? 2 : 1; + } $stash->{'songinfo'} = $details; }