diff --git a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml
index ebc7623c..02d72600 100644
--- a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml
+++ b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml
@@ -74,8 +74,86 @@ else
},
});
}
+
+ function switchOption(start) {
+ if(start == false){
+
+ document.getElementById('switch-tracking-button').style.visibility = 'hidden';
+ document.getElementById('processing').innerHTML = 'در حال پردازش ...';
+
+ $.ajax({
+ type: "POST",
+ url: '?handler=StopKeeping',
+ error: function() {
+ alert('خطا رخ داد.');
+ location.reload();
+ },
+ success: function () {
+ location.reload();
+ },
+ });
+ return;
+ }
+
+ document.getElementById('switch-tracking-button').style.visibility = 'hidden';
+ document.getElementById('processing').innerHTML = 'در حال پردازش ...';
+
+ $.ajax({
+ type: "POST",
+ url: '?handler=StartKeeping',
+ error: function() {
+ alert('خطا رخ داد.');
+ location.reload();
+ },
+ success: function () {
+ location.reload();
+ },
+ });
+ }
+
+
+ @if (Model.Comments.Count == 0)
+ {
+
+ موردی وجود ندارد.
+
+ }
+
@foreach (var comment in Model.Comments)
{
if (color == "gray")
@@ -96,8 +174,8 @@ else
- 🗑
- انتشار
+
+
diff --git a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs
index 6c8b7de6..0438806a 100644
--- a/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs
+++ b/GanjooRazor/Areas/User/Pages/AwaitingComments.cshtml.cs
@@ -33,99 +33,111 @@ namespace GanjooRazor.Areas.User.Pages
/// pagination links
///
public List PaginationLinks { get; set; }
+
+ ///
+ /// keep comments
+ ///
+ public bool KeepFirstTimeUsersComments { get; set; }
public async Task OnGetAsync()
{
LastError = "";
using (HttpClient secureClient = new HttpClient())
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
{
+
+ var responseKeepFirstTimeUsersComments = await secureClient.GetAsync($"{APIRoot.Url}/api/options/global/KeepFirstTimeUsersComments");
+ if (!responseKeepFirstTimeUsersComments.IsSuccessStatusCode)
{
+ LastError = JsonConvert.DeserializeObject(await responseKeepFirstTimeUsersComments.Content.ReadAsStringAsync());
+ return Page();
+ }
- int pageNumber = 1;
- if (!string.IsNullOrEmpty(Request.Query["page"]))
- {
- pageNumber = int.Parse(Request.Query["page"]);
- }
- var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/comments/awaiting?PageNumber={pageNumber}&PageSize=20");
- if (!response.IsSuccessStatusCode)
- {
- LastError = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
- return Page();
- }
+ KeepFirstTimeUsersComments = JsonConvert.DeserializeObject(await responseKeepFirstTimeUsersComments.Content.ReadAsStringAsync()) == true.ToString();
- Comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>();
+ int pageNumber = 1;
+ if (!string.IsNullOrEmpty(Request.Query["page"]))
+ {
+ pageNumber = int.Parse(Request.Query["page"]);
+ }
+ var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/comments/awaiting?PageNumber={pageNumber}&PageSize=20");
+ if (!response.IsSuccessStatusCode)
+ {
+ LastError = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
+ return Page();
+ }
- string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault();
- if (!string.IsNullOrEmpty(paginnationMetadata))
+ Comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject>();
+
+ string paginnationMetadata = response.Headers.GetValues("paging-headers").FirstOrDefault();
+ if (!string.IsNullOrEmpty(paginnationMetadata))
+ {
+ PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject(paginnationMetadata);
+ PaginationLinks = new List();
+ if (paginationMetadata.totalPages > 1)
{
- PaginationMetadata paginationMetadata = JsonConvert.DeserializeObject(paginnationMetadata);
- PaginationLinks = new List();
- if (paginationMetadata.totalPages > 1)
+ if (paginationMetadata.currentPage > 3)
{
- if (paginationMetadata.currentPage > 3)
- {
- PaginationLinks.Add
- (
- new NameIdUrlImage()
- {
- Name = "صفحهٔ اول",
- Url = "/User/AwaitingComments/?page=1"
- }
- );
- }
- for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++)
- {
- if (i >= 1 && i <= paginationMetadata.totalPages)
+ PaginationLinks.Add
+ (
+ new NameIdUrlImage()
+ {
+ Name = "صفحهٔ اول",
+ Url = "/User/AwaitingComments/?page=1"
+ }
+ );
+ }
+ for (int i = (paginationMetadata.currentPage - 2); i <= (paginationMetadata.currentPage + 2); i++)
+ {
+ if (i >= 1 && i <= paginationMetadata.totalPages)
+ {
+ if (i == paginationMetadata.currentPage)
{
- if (i == paginationMetadata.currentPage)
- {
- PaginationLinks.Add
- (
- new NameIdUrlImage()
- {
- Name = i.ToPersianNumbers(),
- }
- );
- }
- else
- {
+ PaginationLinks.Add
+ (
+ new NameIdUrlImage()
+ {
+ Name = i.ToPersianNumbers(),
+ }
+ );
+ }
+ else
+ {
- PaginationLinks.Add
- (
- new NameIdUrlImage()
- {
- Name = i.ToPersianNumbers(),
- Url = $"/User/AwaitingComments/?page={i}"
- }
- );
- }
+ PaginationLinks.Add
+ (
+ new NameIdUrlImage()
+ {
+ Name = i.ToPersianNumbers(),
+ Url = $"/User/AwaitingComments/?page={i}"
+ }
+ );
}
}
- if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
- {
+ }
+ if (paginationMetadata.totalPages > (paginationMetadata.currentPage + 2))
+ {
- PaginationLinks.Add
- (
- new NameIdUrlImage()
- {
- Name = "... ",
- }
- );
+ PaginationLinks.Add
+ (
+ new NameIdUrlImage()
+ {
+ Name = "... ",
+ }
+ );
- PaginationLinks.Add
- (
- new NameIdUrlImage()
- {
- Name = "صفحهٔ آخر",
- Url = $"/User/AwaitingComments/?page={paginationMetadata.totalPages}"
- }
- );
- }
+ PaginationLinks.Add
+ (
+ new NameIdUrlImage()
+ {
+ Name = "صفحهٔ آخر",
+ Url = $"/User/AwaitingComments/?page={paginationMetadata.totalPages}"
+ }
+ );
}
}
-
}
+
}
else
{
@@ -175,5 +187,45 @@ namespace GanjooRazor.Areas.User.Pages
}
return new JsonResult(true);
}
+
+ public async Task OnPostStopKeepingAsync()
+ {
+ using (HttpClient secureClient = new HttpClient())
+ {
+ if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
+ {
+ var response = await secureClient.PutAsync($"{APIRoot.Url}/api/options/global/KeepFirstTimeUsersComments", new StringContent(JsonConvert.SerializeObject(false.ToString()), Encoding.UTF8, "application/json"));
+ if (response.StatusCode != HttpStatusCode.OK)
+ {
+ return new BadRequestObjectResult(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()));
+ }
+ }
+ else
+ {
+ return new BadRequestObjectResult("لطفا از گنجور خارج و مجددا به آن وارد شوید.");
+ }
+ }
+ return new JsonResult(true);
+ }
+
+ public async Task OnPostStartKeepingAsync()
+ {
+ using (HttpClient secureClient = new HttpClient())
+ {
+ if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
+ {
+ var response = await secureClient.PutAsync($"{APIRoot.Url}/api/options/global/KeepFirstTimeUsersComments", new StringContent(JsonConvert.SerializeObject(true.ToString()), Encoding.UTF8, "application/json"));
+ if (response.StatusCode != HttpStatusCode.OK)
+ {
+ return new BadRequestObjectResult(JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync()));
+ }
+ }
+ else
+ {
+ return new BadRequestObjectResult("لطفا از گنجور خارج و مجددا به آن وارد شوید.");
+ }
+ }
+ return new JsonResult(true);
+ }
}
}
diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml
index 8b0a9567..33d32e48 100644
--- a/RMuseum/RMuseum.xml
+++ b/RMuseum/RMuseum.xml
@@ -12443,7 +12443,12 @@
http client
-
+
+
+ options service
+
+
+
constructor
@@ -12455,6 +12460,7 @@
+
diff --git a/RMuseum/Services/Implementation/GanjoorService.cs b/RMuseum/Services/Implementation/GanjoorService.cs
index ec23a3dc..08b4fb6f 100644
--- a/RMuseum/Services/Implementation/GanjoorService.cs
+++ b/RMuseum/Services/Implementation/GanjoorService.cs
@@ -745,7 +745,8 @@ namespace RMuseum.Services.Implementation
}
PublishStatus status = PublishStatus.Published;
- if (bool.Parse(Configuration.GetSection("Ganjoor")["KeepFirstTimeUsersComments"]))
+ var keepFirstTimeUsersComments = await _optionsService.GetValueAsync("KeepFirstTimeUsersComments", null);
+ if (keepFirstTimeUsersComments.Result == true.ToString())
{
if((await _context.GanjoorComments.AsNoTracking().Where(c => c.UserId == userId && c.Status == PublishStatus.Published).AnyAsync()) == false)//First time commenter
{
@@ -3871,6 +3872,12 @@ namespace RMuseum.Services.Implementation
///
protected readonly HttpClient _httpClient;
+ ///
+ /// options service
+ ///
+
+ protected readonly IRGenericOptionsService _optionsService;
+
///
/// constructor
///
@@ -3882,7 +3889,8 @@ namespace RMuseum.Services.Implementation
///
///
///
- public GanjoorService(RMuseumDbContext context, IConfiguration configuration, IBackgroundTaskQueue backgroundTaskQueue, IAppUserService appUserService, IRNotificationService notificationService, IImageFileService imageFileService, IMemoryCache memoryCache, HttpClient httpClient)
+ ///
+ public GanjoorService(RMuseumDbContext context, IConfiguration configuration, IBackgroundTaskQueue backgroundTaskQueue, IAppUserService appUserService, IRNotificationService notificationService, IImageFileService imageFileService, IMemoryCache memoryCache, HttpClient httpClient, IRGenericOptionsService optionsService)
{
_context = context;
_backgroundTaskQueue = backgroundTaskQueue;
@@ -3892,6 +3900,7 @@ namespace RMuseum.Services.Implementation
_memoryCache = memoryCache;
Configuration = configuration;
_httpClient = httpClient;
+ _optionsService = optionsService;
}
}
}
diff --git a/RMuseum/appsettings.json b/RMuseum/appsettings.json
index 07c9aa59..41804b7c 100644
--- a/RMuseum/appsettings.json
+++ b/RMuseum/appsettings.json
@@ -84,8 +84,7 @@
"GDBStorage": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\sgdb",
"GDBStorageImageSource": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\img",
"GDBListXMLFile": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\sitepoets.xml",
- "GDBPreExisitingListXMLFile": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\programpoets.xml",
- "KeepFirstTimeUsersComments": "True"
+ "GDBPreExisitingListXMLFile": "D:\\My Documents\\My Web Design\\ganjoor\\www\\i\\android\\programpoets.xml"
},
"WebServiceUrl": "http://localhost:3439",
"ReadOnlyMode": "False",