#413 search by languages in similars page
This commit is contained in:
parent
09348a8e02
commit
2c0d2db9eb
@ -171,6 +171,24 @@
|
||||
<label for="g" class="width-100per">قافیه:</label>
|
||||
<input type="text" name="g" id="g" class="width-100per" value="@Model.Rhyme" placeholder="حروف قافیه" />
|
||||
|
||||
|
||||
<label for="v" class="width-100per">زبان غالب:</label>
|
||||
|
||||
<select id="l" name="l" class="width-100per">
|
||||
@foreach (var language in Model.Languages)
|
||||
{
|
||||
if (Model.Language == language.Code)
|
||||
{
|
||||
<option value="@language.Code" selected>@language.Name</option>
|
||||
}
|
||||
else
|
||||
{
|
||||
<option value="@language.Code">@language.Name</option>
|
||||
}
|
||||
|
||||
}
|
||||
</select>
|
||||
|
||||
<input type="submit" class="width-100per margin-top-5px" value="اعمال ورودیها" />
|
||||
|
||||
@if (Model.CanEdit)
|
||||
|
||||
@ -66,11 +66,15 @@ namespace GanjooRazor.Pages
|
||||
public int PoetId { get; set; }
|
||||
public string Metre { get; set; }
|
||||
public string Rhyme { get; set; }
|
||||
|
||||
public GanjoorLanguage[] Languages { get; set; }
|
||||
public GanjoorPoetCompleteViewModel Poet { get; set; }
|
||||
public List<GanjoorPoemCompleteViewModel> Poems { get; set; }
|
||||
public string PagingToolsHtml { get; set; }
|
||||
public string LastError { get; set; }
|
||||
|
||||
public string Language { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// can edit
|
||||
@ -96,6 +100,8 @@ namespace GanjooRazor.Pages
|
||||
}
|
||||
|
||||
Poets = poets;
|
||||
|
||||
await ReadLanguagesAsync();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -121,6 +127,18 @@ namespace GanjooRazor.Pages
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task ReadLanguagesAsync()
|
||||
{
|
||||
HttpResponseMessage response = await _httpClient.GetAsync($"{APIRoot.Url}/api/translations/languages");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastError = JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync());
|
||||
return;
|
||||
}
|
||||
|
||||
Languages = JsonConvert.DeserializeObject<GanjoorLanguage[]>(await response.Content.ReadAsStringAsync());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// rhythms alphabetically
|
||||
/// </summary>
|
||||
@ -159,12 +177,22 @@ namespace GanjooRazor.Pages
|
||||
return StatusCode(503);
|
||||
}
|
||||
|
||||
bool anyParamsGiven = false;
|
||||
|
||||
LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]);
|
||||
|
||||
CanEdit = Request.Cookies["CanEdit"] == "True";
|
||||
|
||||
PoetId = string.IsNullOrEmpty(Request.Query["a"]) ? 0 : int.Parse(Request.Query["a"]);
|
||||
|
||||
anyParamsGiven |= PoetId != 0;
|
||||
|
||||
Language = Request.Query["l"];
|
||||
|
||||
anyParamsGiven |= Language != null;
|
||||
|
||||
Language ??= "fa-IR";
|
||||
|
||||
ViewData["GoogleAnalyticsCode"] = Configuration["GoogleAnalyticsCode"];
|
||||
|
||||
//todo: use html master layout or make it partial
|
||||
@ -215,11 +243,20 @@ namespace GanjooRazor.Pages
|
||||
Metre = Request.Query["v"];
|
||||
Rhyme = Request.Query["g"];
|
||||
|
||||
anyParamsGiven |= Metre != null;
|
||||
anyParamsGiven |= Rhyme != null;
|
||||
|
||||
Metre ??= "";
|
||||
Rhyme ??= "";
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty(Metre) && string.IsNullOrEmpty(Rhyme))
|
||||
if (!string.IsNullOrEmpty(Rhyme))
|
||||
{
|
||||
Rhyme = Rhyme.Replace(" ", "");
|
||||
}
|
||||
|
||||
|
||||
if (!anyParamsGiven)
|
||||
{
|
||||
ViewData["Title"] = $"گنجور » شعرها یا ابیات مشابه";
|
||||
return Page();
|
||||
@ -227,10 +264,6 @@ namespace GanjooRazor.Pages
|
||||
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(Rhyme))
|
||||
{
|
||||
Rhyme = Rhyme.Replace(" ", "");
|
||||
}
|
||||
|
||||
string title = "شعرها یا ابیات ";
|
||||
|
||||
@ -260,7 +293,16 @@ namespace GanjooRazor.Pages
|
||||
title += $" حروف قافیهٔ «{Rhyme}»";
|
||||
}
|
||||
|
||||
string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?PageNumber={pageNumber}&PageSize=20&metre={Metre}&rhyme={Rhyme}&poetId={PoetId}";
|
||||
if(Language != "fa-IR")
|
||||
{
|
||||
var langModel = Languages.Where(l => l.Code == Language).FirstOrDefault();
|
||||
if (langModel != null)
|
||||
{
|
||||
title += $"با زبان غالب «{langModel.Name}»";
|
||||
}
|
||||
}
|
||||
|
||||
string url = $"{APIRoot.Url}/api/ganjoor/poems/similar?PageNumber={pageNumber}&PageSize=20&metre={Metre}&rhyme={Rhyme}&poetId={PoetId}&language={Language}";
|
||||
var response = await _httpClient.GetAsync(url);
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
@ -287,7 +329,7 @@ namespace GanjooRazor.Pages
|
||||
title += $" - صفحهٔ {pageNumber.ToPersianNumbers()}";
|
||||
if (paginationMetadata.currentPage > 3)
|
||||
{
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page=1{authorParam}\"><div class=\"circled-number\">۱</div></a> …";
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page=1{authorParam}&language={Language}\"><div class=\"circled-number\">۱</div></a> …";
|
||||
}
|
||||
for (int i = paginationMetadata.currentPage - 2; i <= (paginationMetadata.currentPage + 2); i++)
|
||||
{
|
||||
@ -299,13 +341,13 @@ namespace GanjooRazor.Pages
|
||||
}
|
||||
else
|
||||
{
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page={i}{authorParam}\"><div class=\"circled-number\">{i.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
htmlText += $"<a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page={i}{authorParam}&language={Language}\"><div class=\"circled-number\">{i.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
}
|
||||
}
|
||||
}
|
||||
if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
|
||||
{
|
||||
htmlText += $"… <a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page={paginationMetadata.totalPages}{authorParam}\"><div class=\"circled-number\">{paginationMetadata.totalPages.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
htmlText += $"… <a href=\"/simi/?v={Uri.EscapeDataString(Metre)}&g={Uri.EscapeDataString(Rhyme)}&page={paginationMetadata.totalPages}{authorParam}&language={Language}\"><div class=\"circled-number\">{paginationMetadata.totalPages.ToPersianNumbers()}</div></a>{Environment.NewLine}";
|
||||
}
|
||||
htmlText += $"</div>{Environment.NewLine}";
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user