Added a link to music brainz for releaseS/artists

This commit is contained in:
emeric
2020-05-15 14:12:36 +02:00
parent 0f4e3270cf
commit 2d8c350dea
13 changed files with 157 additions and 107 deletions
+9 -3
View File
@@ -12,6 +12,14 @@
</div>
${releases class="Lms-explore-artist-entries-container"}
</div>
${<if-has-mbid>}
<div class="col-md-4">
<div class="well well-sm">
<h3>${tr:Lms.Explore.links}</h3>
${mbid-link class="text-muted"}
</div>
</div>
${</if-has-mbid>}
<div class="col-md-4">
<div class="well well-sm">
<h3>${tr:Lms.Explore.Artist.similar-artists}</h3>
@@ -22,8 +30,7 @@
</message>
<message id="Lms.Explore.Artist.template.entry">
<div class="row Lms-explore-artist-entry Lms-entry-hoverable">
<div class="col-xs-12">
<div class="Lms-explore-artist-entry Lms-entry-hoverable">
<div class="media">
<div class="media-left media-middle">
<div class="media-object Lms-cover-container-medium">
@@ -40,7 +47,6 @@
</div>
</div>
</div>
</div>
</message>
</messages>
+3 -9
View File
@@ -13,27 +13,21 @@
</div>
</div>
${artists}
<div class="row">
<div class="col-xs-12 Lms-horizontal-center">
<div class="Lms-horizontal-center">
${show-more class="btn-primary Lms-show-more"}
</div>
</div>
</message>
<message id="Lms.Explore.Artists.template.entry">
<div class="row Lms-explore-artists-entry Lms-entry-hoverable Lms-vertical-align">
<div class="col-xs-12">
<div class="Lms-explore-artists-entry Lms-entry-hoverable Lms-vertical-align">
<h4>${name class="Lms-artistname text-primary"}</h4>
</div>
</div>
</message>
<message id="Lms.Explore.Artists.template.entry-small">
<div class="row Lms-explore-artists-entry-small Lms-entry-hoverable Lms-vertical-align">
<div class="col-xs-12">
<div class="Lms-explore-artists-entry-small Lms-entry-hoverable Lms-vertical-align">
${name class="Lms-artistname text-primary"}
</div>
</div>
</message>
</messages>
+3 -1
View File
@@ -105,7 +105,10 @@
<message id="Lms.Explore.artists">Artists</message>
<message id="Lms.Explore.filter-added">Filter added</message>
<message id="Lms.Explore.filters">Filters</message>
<message id="Lms.Explore.links">Links</message>
<message id="Lms.Explore.most-played">Most played</message>
<message id="Lms.Explore.musicbrainz-artist">MusicBrainz Artist</message>
<message id="Lms.Explore.musicbrainz-release">MusicBrainz Release</message>
<message id="Lms.Explore.random">Random</message>
<message id="Lms.Explore.recently-added">Recently added</message>
<message id="Lms.Explore.recently-played">Recently played</message>
@@ -193,4 +196,3 @@
<message id="Lms.Settings.settings-saved">New settings saved!</message>
</messages>
+4 -2
View File
@@ -105,7 +105,10 @@
<message id="Lms.Explore.artists">Artistes</message>
<message id="Lms.Explore.filter-added">Filtre ajouté</message>
<message id="Lms.Explore.filters">Filtres</message>
<message id="Lms.Explore.mostly-played">Plus joués</message>
<message id="Lms.Explore.links">Liens</message>
<message id="Lms.Explore.most-played">Plus joués</message>
<message id="Lms.Explore.musicbrainz-artist">MusicBrainz Artist</message>
<message id="Lms.Explore.musicbrainz-release">MusicBrainz Release</message>
<message id="Lms.Explore.random">Aléatoire</message>
<message id="Lms.Explore.recently-added">Ajoutés récemment</message>
<message id="Lms.Explore.recently-played">Joués récemment</message>
@@ -190,7 +193,6 @@
<message id="Lms.Settings.transcode-mode.always">Toujours</message>
<message id="Lms.Settings.transcode-mode.if-format-not-supported">Seulement lorsque le format n'est pas pris en charge</message>
<message id="Lms.Settings.transcode-mode.never">Jamais</message>
<message id="Lms.Settings.settings">Paramètres</message>
<message id="Lms.Settings.settings-saved">Paramètres sauvegardés !</message>
<!--Wt-->
+2 -4
View File
@@ -9,20 +9,18 @@
<message id="Lms.PlayQueue.template">
<div class="row">
<div class="col-md-8">
<div class="col-lg-8">
<div class="Lms-header">
<h2>${tr:Lms.PlayQueue.playqueue}</h2>
${clear-btn}${shuffle-btn}${repeat-btn}${radio-btn}
<h4><small>${nb-tracks}</small></h4>
</div>
${entries}
<div class="row">
<div class="col-xs-12 Lms-horizontal-center">
<div class="Lms-horizontal-center">
${show-more class="btn-primary Lms-show-more"}
</div>
</div>
</div>
</div>
</message>
<message id="Lms.PlayQueue.template.play-btn"><i class="fa fa-fw fa-play-circle Lms-playqueue-btn Lms-control-btn"></i></message>
+15 -4
View File
@@ -21,13 +21,24 @@
</div>
${container class="Lms-explore-release-entries-container"}
</div>
${<if-has-copyright>}
<div class="col-md-4">
<div class="well well-sm">
${<if-has-copyright-or-copyright-url>}
<h3>${tr:Lms.Explore.Release.copyright}</h3>
${<if-has-copyright>}<small>${copyright}</small>${</if-has-copyright>}
${<if-has-copyright-url>}<small>${copyright-url}</small>${</if-has-copyright-url>}
${</if-has-copyright-or-copyright-url>}
${copyright class="text-muted"}
</div>
</div>
${</if-has-copyright>}
${<if-has-mbid>}
<div class="col-md-4">
<div class="well well-sm">
<h3>${tr:Lms.Explore.links}</h3>
${mbid-link class="text-muted"}
</div>
</div>
${</if-has-mbid>}
<div class="col-md-4">
<div class="well well-sm">
<h3>${tr:Lms.Explore.Release.similar-releases}</h3>
${similar-releases}
</div>
+3 -9
View File
@@ -9,16 +9,13 @@
${play-btn}${add-btn}
</div>
${releases}
<div class="row">
<div class="col-xs-12 Lms-horizontal-center">
<div class="Lms-horizontal-center">
${show-more class="btn-primary Lms-show-more"}
</div>
</div>
</message>
<message id="Lms.Explore.Releases.template.entry">
<div class="row Lms-explore-releases-entry Lms-entry-hoverable">
<div class="col-xs-12">
<div class="Lms-explore-releases-entry Lms-entry-hoverable">
<div class="media">
<div class="media-left media-middle">
<div class="media-object Lms-cover-container-medium">
@@ -34,12 +31,10 @@
</div>
</div>
</div>
</div>
</message>
<message id="Lms.Explore.Releases.template.entry-small">
<div class="row Lms-explore-releaselink Lms-entry-hoverable">
<div class="col-xs-12">
<div class="Lms-explore-releaselink Lms-entry-hoverable">
<div class="media">
<div class="media-left media-middle">
<div class="media-object Lms-cover-container-smaller">
@@ -54,7 +49,6 @@
</div>
</div>
</div>
</div>
</message>
+12 -2
View File
@@ -3,26 +3,36 @@
<!--FORMS message blocks-->
<message id="Lms.Explore.Search.template">
<div class="row">
<div class="col-lg-8">
<div class="Lms-header">
<h2>${tr:Lms.Explore.Search.search}</h2>
</div>
${<if-artists>}
<div class="well well-sm">
<h3>${tr:Lms.Explore.artists}</h3>
${artists}
</div>
${</if-artists>}
${<if-releases>}
<div class="well well-sm">
<h3>${tr:Lms.Explore.releases}</h3>
${releases}
</div>
${</if-releases>}
${<if-tracks>}
<div class="well well-sm">
<h3>${tr:Lms.Explore.tracks}</h3>
${tracks}
</div>
${</if-tracks>}
</div>
</div>
</message>
<message id="Lms.Explore.Search.template.track-entry">
<div class="row Lms-explore-tracks-entry Lms-entry-hoverable Lms-vertical-align">
<div class="col-xs-12 Lms-explore-tracks-entry-name">
<div class="Lms-explore-tracks-entry Lms-entry-hoverable Lms-vertical-align">
<div class="Lms-explore-tracks-entry-name">
<div class="media">
<div class="media-left media-middle hidden-xs">
<div class="media-object Lms-cover-container-small">
+4 -6
View File
@@ -4,21 +4,19 @@
<!--FORMS message blocks-->
<message id="Lms.Explore.Tracks.template">
<div class="row">
<div class="col-lg-8">
<div class="Lms-header">
<h2>${tr:Lms.Explore.tracks}</h2>
${mode class="nav nav-pills Lms-explore-mode-container"}
${play-btn}${add-btn}
</div>
<div class="row">
<div class="col-lg-8">
${tracks}
</div>
</div>
<div class="row">
<div class="col-lg-8 col-xs-12 Lms-horizontal-center">
<div class="Lms-horizontal-center">
${show-more class="btn-primary Lms-show-more"}
</div>
</div>
</div>
</message>
<message id="Lms.Explore.Tracks.template.entry">
+18 -2
View File
@@ -77,10 +77,11 @@ Artist::refreshView()
auto transaction {LmsApp->getDbSession().createSharedTransaction()};
const Database::Artist::pointer artist = Database::Artist::getById(LmsApp->getDbSession(), *artistId);
const Database::Artist::pointer artist {Database::Artist::getById(LmsApp->getDbSession(), *artistId)};
if (!artist)
throw ArtistNotFoundException {*artistId};
refreshLinks(artist);
refreshSimilarArtists(similarArtistIds);
Wt::WContainerWidget* clusterContainers = bindNew<Wt::WContainerWidget>("clusters");
@@ -199,7 +200,7 @@ Artist::createRelease(const Database::Artist::pointer& artist, const Release::po
void
Artist::refreshSimilarArtists(const std::vector<Database::IdType>& similarArtistsId)
{
auto* similarArtistsContainer {bindNew<Wt::WContainerWidget>("similar-artists")};
Wt::WContainerWidget* similarArtistsContainer {bindNew<Wt::WContainerWidget>("similar-artists")};
for (Database::IdType artistId : similarArtistsId)
{
@@ -211,5 +212,20 @@ Artist::refreshSimilarArtists(const std::vector<Database::IdType>& similarArtist
}
}
void
Artist::refreshLinks(const Database::Artist::pointer& artist)
{
const auto mbid {artist->getMBID()};
if (mbid)
{
setCondition("if-has-mbid", true);
Wt::WLink link {"https://musicbrainz.org/artist/" + std::string {mbid->getAsString()}};
link.setTarget(Wt::LinkTarget::NewWindow);
bindNew<Wt::WAnchor>("mbid-link", link, Wt::WString::tr("Lms.Explore.musicbrainz-artist"));
}
}
} // namespace UserInterface
+1
View File
@@ -50,6 +50,7 @@ class Artist : public Wt::WTemplate
private:
void refreshView();
void refreshSimilarArtists(const std::vector<Database::IdType>& similarArtistsId);
void refreshLinks(const Wt::Dbo::ptr<Database::Artist>& artist);
std::unique_ptr<Wt::WTemplate> createRelease(const Wt::Dbo::ptr<Database::Artist>& artist, const Wt::Dbo::ptr<Database::Release>& release);
+27 -10
View File
@@ -84,6 +84,7 @@ Release::refreshView()
throw ReleaseNotFoundException {*releaseId};
refreshCopyright(release);
refreshLinks(release);
refreshSimilarReleases(similarReleasesIds);
bindString("name", Wt::WString::fromUTF8(release->getName()), Wt::TextFormat::Plain);
@@ -261,24 +262,40 @@ Release::refreshCopyright(const Database::Release::pointer& release)
std::optional<std::string> copyright {release->getCopyright()};
std::optional<std::string> copyrightURL {release->getCopyrightURL()};
setCondition("if-has-copyright-or-copyright-url", copyright || copyrightURL);
if (!copyright && !copyrightURL)
return;
setCondition("if-has-copyright", true);
std::string copyrightText {copyright ? *copyright : ""};
if (copyrightText.empty() && copyrightURL)
copyrightText = *copyrightURL;
if (copyrightURL)
{
setCondition("if-has-copyright-url", true);
Wt::WLink link {*copyrightURL};
link.setTarget(Wt::LinkTarget::NewWindow);
Wt::WAnchor* anchor {bindNew<Wt::WAnchor>("copyright-url", link)};
anchor->setTextFormat(Wt::TextFormat::XHTML);
anchor->setText(Wt::WString::tr("Lms.Explore.Release.template.link-btn"));
Wt::WAnchor* anchor {bindNew<Wt::WAnchor>("copyright", link)};
anchor->setTextFormat(Wt::TextFormat::Plain);
anchor->setText(Wt::WString::fromUTF8(copyrightText));
}
if (copyright)
{
setCondition("if-has-copyright", true);
else
bindString("copyright", Wt::WString::fromUTF8(*copyright), Wt::TextFormat::Plain);
}
void
Release::refreshLinks(const Database::Release::pointer& release)
{
const auto mbid {release->getMBID()};
if (mbid)
{
setCondition("if-has-mbid", true);
Wt::WLink link {"https://musicbrainz.org/release/" + std::string {mbid->getAsString()}};
link.setTarget(Wt::LinkTarget::NewWindow);
bindNew<Wt::WAnchor>("mbid-link", link, Wt::WString::tr("Lms.Explore.musicbrainz-release"));
}
}
+1
View File
@@ -47,6 +47,7 @@ namespace UserInterface
private:
void refreshView();
void refreshCopyright(const Wt::Dbo::ptr<Database::Release>& release);
void refreshLinks(const Wt::Dbo::ptr<Database::Release>& release);
void refreshSimilarReleases(const std::vector<Database::IdType>& similarReleasesId);
Filters* _filters {};