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
+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 {};