public ActionResult DetailsById(int id = invalidId, string slug = null) { if (id == invalidId) { return(NoId()); } // TODO: write test for null slug slug = slug ?? string.Empty; var tagName = queries.LoadTag(id, t => t.UrlSlug ?? string.Empty); if (slug != tagName) { return(RedirectToActionPermanent("DetailsById", new { id, slug = tagName })); } var contract = queries.GetDetails(id); var prop = PageProperties; var thumbUrl = Url.EntryImageOld(contract.Thumb, ImageSize.Original); if (!string.IsNullOrEmpty(thumbUrl)) { PageProperties.OpenGraph.Image = thumbUrl; } prop.Description = markdownParser.GetPlainText(contract.Description.EnglishOrOriginal); return(RenderDetails(contract)); }
private TagForApiContract Merge(int sourceId, int targetId) { var permissionContext = new FakePermissionContext(new UserWithPermissionsContract(Db.UserWithEditPermissions, ContentLanguagePreference.Default)); return(context.RunTest(repository => { var queries = new TagQueries(repository, permissionContext, new FakeEntryLinkFactory(), new InMemoryImagePersister(), new InMemoryImagePersister(), new FakeUserIconFactory(), new EnumTranslations()); queries.Merge(sourceId, targetId); var result = queries.LoadTag(targetId, t => new TagForApiContract(t, ContentLanguagePreference.English, TagOptionalFields.None)); return result; })); }
public async Task <ActionResult> EntryToolTip(string url, string callback) { if (string.IsNullOrWhiteSpace(url)) { return(HttpStatusCodeResult(HttpStatusCode.BadRequest, "URL must be specified")); } var entryId = _entryUrlParser.Parse(url, allowRelative: true); if (entryId.IsEmpty) { return(HttpStatusCodeResult(HttpStatusCode.BadRequest, "Invalid URL")); } var data = string.Empty; var id = entryId.Id; switch (entryId.EntryType) { case EntryType.Album: data = await RenderPartialViewToStringAsync("AlbumWithCoverPopupContent", _albumService.GetAlbum(id)); break; case EntryType.Artist: data = await RenderPartialViewToStringAsync("ArtistPopupContent", _artistService.GetArtist(id)); break; case EntryType.ReleaseEvent: data = await RenderPartialViewToStringAsync("_EventPopupContent", _eventQueries.GetOne(id, ContentLanguagePreference.Default, ReleaseEventOptionalFields.AdditionalNames | ReleaseEventOptionalFields.MainPicture | ReleaseEventOptionalFields.Series)); break; case EntryType.Song: data = await RenderPartialViewToStringAsync("SongPopupContent", _songService.GetSong(id)); break; case EntryType.Tag: data = await RenderPartialViewToStringAsync("_TagPopupContent", _tagQueries.LoadTag(id, t => new TagForApiContract(t, _entryThumbPersister, ContentLanguagePreference.Default, TagOptionalFields.AdditionalNames | TagOptionalFields.MainPicture))); break; } return(Json(data, callback)); }
public TagForApiContract GetById(int id, TagOptionalFields fields = TagOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) => _queries.LoadTag(id, t => new TagForApiContract(t, _thumbPersister, lang, fields));
public TagForApiContract GetById(int id, TagOptionalFields fields = TagOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) { var tag = queries.LoadTag(id, t => new TagForApiContract(t, thumbPersister, WebHelper.IsSSL(Request), lang, fields)); return(tag); }
public ActionResult Merge(int id) { var tag = _queries.LoadTag(id, t => new TagBaseContract(t, PermissionContext.LanguagePreference)); return(View(tag)); }