[mb-commits] r10122 - in mb_server/branches/TemplateToolkit: lib/MusicBrainz/Server lib/MusicBrainz/Server/Action lib/MusicBrainz/Server/Controller root root/artist root/components root/releases root/static root/track
root at musicbrainz.org
root at musicbrainz.org
Fri Jul 18 17:10:53 UTC 2008
Author: acid2
Date: 2008-07-18 17:10:52 +0000 (Fri, 18 Jul 2008)
New Revision: 10122
Added:
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Adapter.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Track.pm
mb_server/branches/TemplateToolkit/root/artist/relations.tt
mb_server/branches/TemplateToolkit/root/track/
mb_server/branches/TemplateToolkit/root/track/relations.tt
Modified:
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Action/ArtistPage.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Artist.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Release.pm
mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Track.pm
mb_server/branches/TemplateToolkit/root/components/relations.tt
mb_server/branches/TemplateToolkit/root/releases/full.tt
mb_server/branches/TemplateToolkit/root/static/main.css
Log:
Full view on advance relationships for entities. Introduced general adapter module to simplify loading entities from a row ID or MBID
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Action/ArtistPage.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Action/ArtistPage.pm 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Action/ArtistPage.pm 2008-07-18 17:10:52 UTC (rev 10122)
@@ -4,6 +4,8 @@
use warnings;
use base 'Catalyst::Action';
+use Carp;
+use MusicBrainz::Server::Adapter;
use MusicBrainz::Server::Artist;
use MusicBrainz;
@@ -35,34 +37,18 @@
my $mb = $c->mb;
my $artist = MusicBrainz::Server::Artist->new($mb->{DBH});
- # Validate the arguments
- unless(MusicBrainz::Server::Validation::IsGUID($mbid))
- {
- if (MusicBrainz::Server::Validation::IsNonNegInteger($mbid))
- {
- # Appears to be a row ID
- $artist->SetId($mbid);
- }
- else
- {
- die "Not a valid GUID or row ID";
- }
- }
- else
- {
- # Looks like a GUID
- $artist->SetMBId($mbid);
- }
+ MusicBrainz::Server::Adapter::LoadEntity ($artist, $mbid);
- $artist->LoadFromId(1)
- or die "Failed to load artist";
-
- die "You cannot view the special DELETED_ARTIST"
+ croak "You cannot view the special DELETED_ARTIST"
if ($artist->GetId == ModDefs::DARTIST_ID);
$c->stash->{_artist} = $artist;
$c->stash->{artist} = $artist->ExportStash qw( name mbid type date quality resolution );
}
+ else
+ {
+ croak "No MBID/row ID given.";
+ }
$self->NEXT::execute(@_);
}
Added: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Adapter.pm
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Artist.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Artist.pm 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Artist.pm 2008-07-18 17:10:52 UTC (rev 10122)
@@ -49,6 +49,23 @@
};
}
+=head2 relations
+
+Shows all the entities (except track) that this artist is related to.
+
+=cut
+
+sub relations : Local Args(1) MyAction('ArtistPage')
+{
+ my ($self, $c, $mbid) = @_;
+
+ my $artist = $c->stash->{_artist};
+ my $links = LoadArtistARLinks ($c->mb->{DBH}, $artist);
+ $c->stash->{relations} = MusicBrainz::Server::Adapter::Relations::ExportLinks($links);
+
+ $c->stash->{template} = 'artist/relations.tt';
+}
+
=head2 create
When given a GET request this displays a form allowing the user to enter
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Release.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Release.pm 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Release.pm 2008-07-18 17:10:52 UTC (rev 10122)
@@ -6,6 +6,7 @@
use ModDefs;
use MusicBrainz;
+use MusicBrainz::Server::Adapter;
use MusicBrainz::Server::Adapter::Relations;
use MusicBrainz::Server::CoverArt;
use MusicBrainz::Server::Release;
@@ -45,6 +46,30 @@
};
}
+=head2 relations
+
+Show all relationships attached to this release
+
+=cut
+
+sub relations : Local Args(1) {
+ my ($self, $c, $mbid) = @_;
+
+ my $release = MusicBrainz::Server::Release->new($c->mb->{DBH});
+ MusicBrainz::Server::Adapter::LoadEntity ($release, $mbid);
+
+ $c->stash->{release} = $release->ExportStash;
+
+ my $link = MusicBrainz::Server::Link->new($c->mb->{DBH});
+ my @arLinks = $link->FindLinkedEntities($release->GetId, 'album');
+
+ MusicBrainz::Server::Adapter::Relations::NormaliseLinkDirections(\@arLinks, $release->GetId, 'album');
+ @arLinks = MusicBrainz::Server::Adapter::Relations::SortLinks(\@arLinks);
+ $c->stash->{relations} = MusicBrainz::Server::Adapter::Relations::ExportLinks(\@arLinks);
+
+ $c->stash->{template} = 'releases/relations.tt';
+}
+
=head2 show
Display a release to the user.
@@ -61,19 +86,8 @@
# Load Release
#
my $release = MusicBrainz::Server::Release->new($c->mb->{DBH});
-
- unless (MusicBrainz::Server::Validation::IsGUID($mbid))
- {
- if (MusicBrainz::Server::Validation::IsNonNegInteger($mbid))
- { $release->SetId($mbid); }
- else
- { die "Not a valid GUID or row ID"; }
- }
- else { $release->SetMBId($mbid); }
-
- $release->LoadFromId(1)
- or die "Failed to load release";
-
+ MusicBrainz::Server::Adapter::LoadEntity ($release, $mbid);
+
$c->stash->{release} = $release->ExportStash qw/ puids track_count quality language type /;
@@ -111,13 +125,11 @@
MusicBrainz::Server::Adapter::Relations::NormaliseLinkDirections(\@trackLinks, $track->GetId, 'track');
@trackLinks = MusicBrainz::Server::Adapter::Relations::SortLinks(\@trackLinks);
- push @{ $c->stash->{tracks} }, {
- number => $track->GetSequence,
- title => $track->GetName,
- puids => $puid_counts->{ $track->GetId },
- duration => MusicBrainz::Server::Track::FormatTrackLength($track->GetLength),
- relations => MusicBrainz::Server::Adapter::Relations::ExportLinks(\@trackLinks),
- };
+ my $trackStash = $track->ExportStash qw/number duration/;
+ $trackStash->{puids} = $puid_counts->{ $track->GetId };
+ $trackStash->{relations} = MusicBrainz::Server::Adapter::Relations::ExportLinks(\@trackLinks);
+
+ push @{ $c->stash->{tracks} }, $trackStash;
}
Added: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Controller/Track.pm
Modified: mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Track.pm
===================================================================
--- mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Track.pm 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/lib/MusicBrainz/Server/Track.pm 2008-07-18 17:10:52 UTC (rev 10122)
@@ -131,6 +131,29 @@
$_[0]->{albumjoinmodpending} = $_[1];
}
+sub ExportStash
+{
+ my ($self, @data) = @_;
+
+ my %stash = (
+ name => $self->GetName,
+ mbid => $self->GetMBId,
+ link_type => 'track',
+ );
+
+ use Switch;
+ for (@data)
+ {
+ switch($_)
+ {
+ case('number') { $stash{number} = $self->GetSequence; }
+ case('duration') { $stash{duration} = FormatTrackLength($self->GetLength); }
+ }
+ }
+
+ return \%stash;
+}
+
# Given an albumjoin id, determine the track id and load it
sub LoadFromAlbumJoin
{
Added: mb_server/branches/TemplateToolkit/root/artist/relations.tt
Modified: mb_server/branches/TemplateToolkit/root/components/relations.tt
===================================================================
--- mb_server/branches/TemplateToolkit/root/components/relations.tt 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/root/components/relations.tt 2008-07-18 17:10:52 UTC (rev 10122)
@@ -1,20 +1,27 @@
[%- DEFAULT maximum=3 -%]
[%- BLOCK list -%]
- <ul>
- [% FOREACH ar IN relations %]
- [% LAST IF loop.count > maximum && !showall %]
+ <ul class="relations_list">
+ [%- FOREACH ar IN relations -%]
+ [%- LAST IF loop.count > maximum && !showall -%]
<li>
[% ar.connector %]
- [% FOREACH entity IN ar.entities %]
- [% INCLUDE "components/entity-link.tt" %][% !loop.last ? "," : "" %]
- [% "(${entity.resolution})" IF entity.resolution %]
- [% END %]
- [% END %]
+ [%- FOREACH entity IN ar.entities -%]
+ [%- IF loop.count > 4 && !showall -%]
+ …
+ [%- LAST -%]
+ [%- ELSE -%]
+ [% INCLUDE "components/entity-link.tt" %][% !loop.last ? "," : "" %]
+ [% "(${entity.resolution})" IF entity.resolution %]
+ [%- END -%]
+ [%- END -%]
+ [%- END -%]
</ul>
[%- IF relations.size > maximum && !showall -%]
[%- n = relations.size - maximum -%]
- [% n %] relationship[% n > 1 ? "s" : "" %] not shown.
- <a href="[% c.uri_for("/relations/${source.link_type}/${source.mbid}") %]">View all relationships…</a>
+ <div class="more_relationships">
+ [% n %] relationship[% n > 1 ? "s" : "" %] not shown.
+ <a href="[% c.uri_for("/${source.link_type}/relations", source.mbid) %]">View all relationships…</a>
+ </div>
[%- END -%]
[%- END -%]
Modified: mb_server/branches/TemplateToolkit/root/releases/full.tt
===================================================================
--- mb_server/branches/TemplateToolkit/root/releases/full.tt 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/root/releases/full.tt 2008-07-18 17:10:52 UTC (rev 10122)
@@ -44,7 +44,11 @@
[%- FOREACH track=tracks -%]
<tr>
<td class="number">[% track.number %]</td>
- <td class="title">[% track.title %]</td>
+ <td class="title">
+ [% track.name %]
+ [% INCLUDE "components/relations.tt" source=track relations=track.relations justlist=1
+ IF track.relations.size%]
+ </td>
<td class="duration">[% track.duration %]</td>
[%- IF c.user_exists -%]
<td class="editinglinks">
@@ -52,13 +56,6 @@
</td>
[%- END -%]
</tr>
- [%- IF track.relations.size -%]
- <tr>
- <td colspan="3">
- [% INCLUDE "components/relations.tt" relations=track.relations justlist=1 %]
- </td>
- </tr>
- [%- END -%]
[%- END -%]
</tbody>
</table>
Modified: mb_server/branches/TemplateToolkit/root/static/main.css
===================================================================
--- mb_server/branches/TemplateToolkit/root/static/main.css 2008-07-18 12:22:22 UTC (rev 10121)
+++ mb_server/branches/TemplateToolkit/root/static/main.css 2008-07-18 17:10:52 UTC (rev 10122)
@@ -327,6 +327,7 @@
div.release table td {
padding: 2pt 3pt;
+ vertical-align: top;
}
div.release table .number {
@@ -400,3 +401,18 @@
table.appears .title {
text-align: left;
}
+
+.release_tracks ul {
+ padding: 0;
+ margin: 0;
+}
+
+.release_tracks ul,
+.release_tracks .more_relationships {
+ margin-left: 15pt;
+ font-size: 8pt;
+}
+
+.release_tracks ul li {
+ list-style-type: none;
+}
Added: mb_server/branches/TemplateToolkit/root/track/relations.tt
More information about the MusicBrainz-commits
mailing list