From f03a7a4d06385e27f51c76fac9fc334725398d4e Mon Sep 17 00:00:00 2001 From: ibrahimhalilgunduz Date: Fri, 27 Jan 2023 20:50:09 +0300 Subject: [PATCH] =?UTF-8?q?ArticleRightSideBarWidgetOptions=20s=C4=B1n?= =?UTF-8?q?=C4=B1f=C4=B1=20yaz=C4=B1ld=C4=B1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BloggerWay.Entities/ComplexTypes/FilterBy.cs | 8 +- BloggerWay.Entities/ComplexTypes/OrderBy.cs | 7 +- .../ArticleRightSideBarWidgetOptions.cs | 52 ++++++++ .../Admin/Controllers/OptionsController.cs | 56 ++++++++- ...ticleRightSideBarWidgetOptionsViewModel.cs | 55 +++++++++ .../ArticleRightSideBarWidgetSettings.cshtml | 114 ++++++++++++++++++ .../Components/AdminMenu/Default.cshtml | 10 +- .../AutoMapper/ViewModelsProfile.cs | 2 + .../Controllers/ArticleController.cs | 14 ++- BloggerWay.MVC/Startup.cs | 2 + BloggerWay.MVC/appsettings.json | 14 +++ .../js/articleRightSideBarWidgetSettings.js | 87 +++++++++++++ 12 files changed, 408 insertions(+), 13 deletions(-) create mode 100644 BloggerWay.Entities/Concrete/ArticleRightSideBarWidgetOptions.cs create mode 100644 BloggerWay.MVC/Areas/Admin/Models/ArticleRightSideBarWidgetOptionsViewModel.cs create mode 100644 BloggerWay.MVC/Areas/Admin/Views/Options/ArticleRightSideBarWidgetSettings.cshtml create mode 100644 BloggerWay.MVC/wwwroot/AdminLTE/js/articleRightSideBarWidgetSettings.js diff --git a/BloggerWay.Entities/ComplexTypes/FilterBy.cs b/BloggerWay.Entities/ComplexTypes/FilterBy.cs index 1db581d..3d5acf0 100644 --- a/BloggerWay.Entities/ComplexTypes/FilterBy.cs +++ b/BloggerWay.Entities/ComplexTypes/FilterBy.cs @@ -1,10 +1,16 @@ -namespace BloggerWay.Entities.ComplexTypes +using System.ComponentModel.DataAnnotations; + +namespace BloggerWay.Entities.ComplexTypes { public enum FilterBy { + [Display(Name = "Kategori")] Category = 0, + [Display(Name = "Tarih")] Date = 1, + [Display(Name = "Okunma Sayısı")] ViewCount = 2, + [Display(Name = "Yorum Sayısı")] CommentCount = 3 } } diff --git a/BloggerWay.Entities/ComplexTypes/OrderBy.cs b/BloggerWay.Entities/ComplexTypes/OrderBy.cs index 5aa9e1e..7884616 100644 --- a/BloggerWay.Entities/ComplexTypes/OrderBy.cs +++ b/BloggerWay.Entities/ComplexTypes/OrderBy.cs @@ -1,9 +1,14 @@ -namespace BloggerWay.Entities.ComplexTypes +using System.ComponentModel.DataAnnotations; + +namespace BloggerWay.Entities.ComplexTypes { public enum OrderBy { + [Display(Name = "Tarih")] Date = 0, + [Display(Name = "Okunma Sayısı")] ViewCount = 1, + [Display(Name = "Yorum Sayısı")] CommentCount = 2 } } diff --git a/BloggerWay.Entities/Concrete/ArticleRightSideBarWidgetOptions.cs b/BloggerWay.Entities/Concrete/ArticleRightSideBarWidgetOptions.cs new file mode 100644 index 0000000..a63bb56 --- /dev/null +++ b/BloggerWay.Entities/Concrete/ArticleRightSideBarWidgetOptions.cs @@ -0,0 +1,52 @@ +using BloggerWay.Entities.ComplexTypes; +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace BloggerWay.Entities.Concrete +{ + public class ArticleRightSideBarWidgetOptions + { + [DisplayName("Widget Başlığı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [MaxLength(150, ErrorMessage = "{0} alanı en fazla {1} karakter olmalıdır.")] + [MinLength(5, ErrorMessage = "{0} alanı en az {1} karakter olmalıdır.")] + public string Header { get; set; } + [DisplayName("Makale Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [Range(0, 50, ErrorMessage = "{0} alanı en az {1}, en fazla {2} olmalıdır.")] + public int TakeSize { get; set; } + [DisplayName("Kategori")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int CategoryId { get; set; } + [DisplayName("Filtre Türü")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public FilterBy FilterBy { get; set; } + [DisplayName("Sıralama Türü")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public OrderBy OrderBy { get; set; } + [DisplayName("Sıralama Ölçütü")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public bool IsAscending { get; set; } + [DisplayName("Başlangıç Tarihi")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [DataType(DataType.Date, ErrorMessage = "{0} alanı tarih formatında olmalıdır.")] + public DateTime StartAt { get; set; } + [DisplayName("Bitiş Tarihi")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [DataType(DataType.Date, ErrorMessage = "{0} alanı tarih formatında olmalıdır.")] + public DateTime EndAt { get; set; } + [DisplayName("Maksimum Okunma Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MaxViewCount { get; set; } + [DisplayName("Minimum Okunma Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MinViewCount { get; set; } + [DisplayName("Maksimum Yorum Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MaxCommentCount { get; set; } + [DisplayName("Minimum Yorum Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MinCommentCount { get; set; } + } +} diff --git a/BloggerWay.MVC/Areas/Admin/Controllers/OptionsController.cs b/BloggerWay.MVC/Areas/Admin/Controllers/OptionsController.cs index 317098d..d322277 100644 --- a/BloggerWay.MVC/Areas/Admin/Controllers/OptionsController.cs +++ b/BloggerWay.MVC/Areas/Admin/Controllers/OptionsController.cs @@ -1,9 +1,13 @@ -using BloggerWay.Entities.Concrete; +using AutoMapper; +using BloggerWay.Entities.Concrete; +using BloggerWay.MVC.Areas.Admin.Models; +using BloggerWay.Services.Abstract; using BloggerWay.Shared.Utilities.Extensions.Helpers.Abstract; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using NToastNotify; +using System.Threading.Tasks; namespace BloggerWay.MVC.Areas.Admin.Controllers { @@ -18,13 +22,21 @@ public class OptionsController : Controller private readonly IWritableOptions _websiteInfoWriter; private readonly SmtpSettings _smtpSettings; private readonly IWritableOptions _smtpSettingsWriter; + private readonly ArticleRightSideBarWidgetOptions _articleRightSideBarWidgetOptions; + private readonly IWritableOptions _articleRightSideBarWidgetOptionsWriter; + private readonly ICategoryService _categoryService; + private readonly IMapper _mapper; - public OptionsController(IOptionsSnapshot aboutUsPageInfo, IWritableOptions aboutUsPageInfoWriter, IToastNotification toastNotification, IOptionsSnapshot websiteInfo, IWritableOptions websiteInfoWriter, IOptionsSnapshot smtpSettings, IWritableOptions smtpSettingsWriter) + public OptionsController(IOptionsSnapshot aboutUsPageInfo, IWritableOptions aboutUsPageInfoWriter, IToastNotification toastNotification, IOptionsSnapshot websiteInfo, IWritableOptions websiteInfoWriter, IOptionsSnapshot smtpSettings, IWritableOptions smtpSettingsWriter, IOptionsSnapshot articleRightSideBarWidgetOptions, IWritableOptions articleRightSideBarWidgetOptionsWriter, ICategoryService categoryService, IMapper mapper) { _aboutUsPageInfoWriter = aboutUsPageInfoWriter; _toastNotification = toastNotification; _websiteInfoWriter = websiteInfoWriter; _smtpSettingsWriter = smtpSettingsWriter; + _articleRightSideBarWidgetOptionsWriter = articleRightSideBarWidgetOptionsWriter; + _categoryService = categoryService; + _mapper = mapper; + _articleRightSideBarWidgetOptions = articleRightSideBarWidgetOptions.Value; _smtpSettings = smtpSettings.Value; _websiteInfo = websiteInfo.Value; _aboutUsPageInfo = aboutUsPageInfo.Value; @@ -112,5 +124,45 @@ public IActionResult EmailSettings(SmtpSettings smtpSettings) } return View(smtpSettings); } + [HttpGet] + public async Task ArticleRightSideBarWidgetSettings() + { + var categoriesResult = await _categoryService.GetAllByNonDeletedAndActiveAsync(); + var articleRightSideBarWidgetOptionsViewModel = + _mapper.Map(_articleRightSideBarWidgetOptions); + articleRightSideBarWidgetOptionsViewModel.Categories = categoriesResult.Data.Categories; + return View(articleRightSideBarWidgetOptionsViewModel); + } + [HttpPost] + public async Task ArticleRightSideBarWidgetSettings(ArticleRightSideBarWidgetOptionsViewModel articleRightSideBarWidgetOptionsViewModel) + { + var categoriesResult = await _categoryService.GetAllByNonDeletedAndActiveAsync(); + articleRightSideBarWidgetOptionsViewModel.Categories = categoriesResult.Data.Categories; + if (ModelState.IsValid) + { + _articleRightSideBarWidgetOptionsWriter.Update(x => + { + x.Header = articleRightSideBarWidgetOptionsViewModel.Header; + x.TakeSize = articleRightSideBarWidgetOptionsViewModel.TakeSize; + x.CategoryId = articleRightSideBarWidgetOptionsViewModel.CategoryId; + x.FilterBy = articleRightSideBarWidgetOptionsViewModel.FilterBy; + x.OrderBy = articleRightSideBarWidgetOptionsViewModel.OrderBy; + x.IsAscending = articleRightSideBarWidgetOptionsViewModel.IsAscending; + x.StartAt = articleRightSideBarWidgetOptionsViewModel.StartAt; + x.EndAt = articleRightSideBarWidgetOptionsViewModel.EndAt; + x.MaxViewCount = articleRightSideBarWidgetOptionsViewModel.MaxViewCount; + x.MinViewCount = articleRightSideBarWidgetOptionsViewModel.MinViewCount; + x.MaxCommentCount = articleRightSideBarWidgetOptionsViewModel.MaxCommentCount; + x.MinCommentCount = articleRightSideBarWidgetOptionsViewModel.MinCommentCount; + }); + _toastNotification.AddSuccessToastMessage("Makale sayfalarınızın widget ayarları başarıyla güncellenmiştir.", new ToastrOptions + { + Title = "Başarılı İşlem!" + }); + return View(articleRightSideBarWidgetOptionsViewModel); + + } + return View(articleRightSideBarWidgetOptionsViewModel); + } } } diff --git a/BloggerWay.MVC/Areas/Admin/Models/ArticleRightSideBarWidgetOptionsViewModel.cs b/BloggerWay.MVC/Areas/Admin/Models/ArticleRightSideBarWidgetOptionsViewModel.cs new file mode 100644 index 0000000..ee6a43a --- /dev/null +++ b/BloggerWay.MVC/Areas/Admin/Models/ArticleRightSideBarWidgetOptionsViewModel.cs @@ -0,0 +1,55 @@ +using BloggerWay.Entities.ComplexTypes; +using BloggerWay.Entities.Concrete; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace BloggerWay.MVC.Areas.Admin.Models +{ + public class ArticleRightSideBarWidgetOptionsViewModel + { + [DisplayName("Widget Başlığı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [MaxLength(150, ErrorMessage = "{0} alanı en fazla {1} karakter olmalıdır.")] + [MinLength(5, ErrorMessage = "{0} alanı en az {1} karakter olmalıdır.")] + public string Header { get; set; } + [DisplayName("Makale Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [Range(0, 50, ErrorMessage = "{0} alanı en az {1}, en fazla {2} olmalıdır.")] + public int TakeSize { get; set; } + [DisplayName("Kategori")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int CategoryId { get; set; } + [DisplayName("Filtre Türü")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public FilterBy FilterBy { get; set; } + [DisplayName("Sıralama Türü")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public OrderBy OrderBy { get; set; } + [DisplayName("Sıralama Ölçütü")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public bool IsAscending { get; set; } + [DisplayName("Başlangıç Tarihi")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [DataType(DataType.Date, ErrorMessage = "{0} alanı tarih formatında olmalıdır.")] + public DateTime StartAt { get; set; } + [DisplayName("Bitiş Tarihi")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + [DataType(DataType.Date, ErrorMessage = "{0} alanı tarih formatında olmalıdır.")] + public DateTime EndAt { get; set; } + [DisplayName("Maksimum Okunma Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MaxViewCount { get; set; } + [DisplayName("Minimum Okunma Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MinViewCount { get; set; } + [DisplayName("Maksimum Yorum Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MaxCommentCount { get; set; } + [DisplayName("Minimum Yorum Sayısı")] + [Required(ErrorMessage = "{0} alanı zorunludur.")] + public int MinCommentCount { get; set; } + public IList Categories { get; set; } + } +} diff --git a/BloggerWay.MVC/Areas/Admin/Views/Options/ArticleRightSideBarWidgetSettings.cshtml b/BloggerWay.MVC/Areas/Admin/Views/Options/ArticleRightSideBarWidgetSettings.cshtml new file mode 100644 index 0000000..ffd9b75 --- /dev/null +++ b/BloggerWay.MVC/Areas/Admin/Views/Options/ArticleRightSideBarWidgetSettings.cshtml @@ -0,0 +1,114 @@ +@using BloggerWay.Entities.ComplexTypes +@model BloggerWay.MVC.Areas.Admin.Models.ArticleRightSideBarWidgetOptionsViewModel + +@{ + Layout = "_Layout"; + ViewBag.Title = "Makale Sayfaları için Widget Ayarları"; + +} +
+
+
+
+

Makale Sayfaları için Widget Ayarları

+
+
+
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + Ä°ptal +
+
+ +
+
+
+
+
+@section Scripts +{ + + + +} +@section Styles +{ + + + + + +} diff --git a/BloggerWay.MVC/Areas/Admin/Views/Shared/Components/AdminMenu/Default.cshtml b/BloggerWay.MVC/Areas/Admin/Views/Shared/Components/AdminMenu/Default.cshtml index 142ab77..92b094f 100644 --- a/BloggerWay.MVC/Areas/Admin/Views/Shared/Components/AdminMenu/Default.cshtml +++ b/BloggerWay.MVC/Areas/Admin/Views/Shared/Components/AdminMenu/Default.cshtml @@ -45,9 +45,13 @@ Genel Ayarlar - - E-Posta Ayarları - + + E-Posta Ayarları + + + + Makale Sayfaları için Widget Ayarları + Hakkımızda Sayfa İçerikleri diff --git a/BloggerWay.MVC/AutoMapper/ViewModelsProfile.cs b/BloggerWay.MVC/AutoMapper/ViewModelsProfile.cs index dbe92c1..58cfdc4 100644 --- a/BloggerWay.MVC/AutoMapper/ViewModelsProfile.cs +++ b/BloggerWay.MVC/AutoMapper/ViewModelsProfile.cs @@ -1,4 +1,5 @@ using AutoMapper; +using BloggerWay.Entities.Concrete; using BloggerWay.Entities.Dtos; using BloggerWay.MVC.Areas.Admin.Models; @@ -10,6 +11,7 @@ public ViewModelsProfile() { CreateMap(); CreateMap().ReverseMap(); + CreateMap(); } } } diff --git a/BloggerWay.MVC/Controllers/ArticleController.cs b/BloggerWay.MVC/Controllers/ArticleController.cs index acd36fc..0ceabb1 100644 --- a/BloggerWay.MVC/Controllers/ArticleController.cs +++ b/BloggerWay.MVC/Controllers/ArticleController.cs @@ -1,9 +1,9 @@ -using BloggerWay.Entities.ComplexTypes; +using BloggerWay.Entities.Concrete; using BloggerWay.MVC.Models; using BloggerWay.Services.Abstract; using BloggerWay.Shared.Utilities.Results.ComplexTypes; using Microsoft.AspNetCore.Mvc; -using System; +using Microsoft.Extensions.Options; using System.Threading.Tasks; namespace BloggerWay.MVC.Controllers @@ -11,10 +11,12 @@ namespace BloggerWay.MVC.Controllers public class ArticleController : Controller { private readonly IArticleService _articleService; + private readonly ArticleRightSideBarWidgetOptions _articleRightSideBarWidgetOptions; - public ArticleController(IArticleService articleService) + public ArticleController(IArticleService articleService, IOptionsSnapshot articleRightSideBarWidgetOptions) { _articleService = articleService; + _articleRightSideBarWidgetOptions = articleRightSideBarWidgetOptions.Value; } [HttpGet] public async Task Search(string keyword, int currentPage = 1, int pageSize = 5, bool isAscending = false) @@ -35,8 +37,8 @@ public async Task Detail(int articleId) if (articleResult.ResultStatus == ResultStatus.Success) { var userArticles = await _articleService.GetAllByUserIdOnFilter(articleResult.Data.Article.UserId, - FilterBy.Category, OrderBy.Date, false, 10, articleResult.Data.Article.CategoryId, DateTime.Now, - DateTime.Now, 0, 99999, 0, 99999); + _articleRightSideBarWidgetOptions.FilterBy, _articleRightSideBarWidgetOptions.OrderBy, _articleRightSideBarWidgetOptions.IsAscending, _articleRightSideBarWidgetOptions.TakeSize, _articleRightSideBarWidgetOptions.CategoryId, _articleRightSideBarWidgetOptions.StartAt, + _articleRightSideBarWidgetOptions.EndAt, _articleRightSideBarWidgetOptions.MinViewCount, _articleRightSideBarWidgetOptions.MaxViewCount, _articleRightSideBarWidgetOptions.MinCommentCount, _articleRightSideBarWidgetOptions.MaxCommentCount); await _articleService.IncreaseViewCountAsync(articleId); return View(new ArticleDetailViewModel { @@ -44,7 +46,7 @@ public async Task Detail(int articleId) ArticleDetailRightSideBarViewModel = new ArticleDetailRightSideBarViewModel { ArticleListDto = userArticles.Data, - Header = "Kullanıcının Aynı Kategori Ãœzerindeki En Çok Okunan Makaleleri", + Header = _articleRightSideBarWidgetOptions.Header, User = articleResult.Data.Article.User } }); diff --git a/BloggerWay.MVC/Startup.cs b/BloggerWay.MVC/Startup.cs index 65fee53..eff31e4 100644 --- a/BloggerWay.MVC/Startup.cs +++ b/BloggerWay.MVC/Startup.cs @@ -35,6 +35,8 @@ public void ConfigureServices(IServiceCollection services) services.ConfigureWritable(Configuration.GetSection("AboutUsPageInfo")); services.ConfigureWritable(Configuration.GetSection("WebsiteInfo")); services.ConfigureWritable(Configuration.GetSection("SmtpSettings")); + services.ConfigureWritable( + Configuration.GetSection("ArticleRightSideBarWidgetOptions")); services.AddControllersWithViews(options => { options.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor(value => "Bu alan boþ geçilmemelidir."); diff --git a/BloggerWay.MVC/appsettings.json b/BloggerWay.MVC/appsettings.json index 7ffc3ea..5ef0605 100644 --- a/BloggerWay.MVC/appsettings.json +++ b/BloggerWay.MVC/appsettings.json @@ -28,5 +28,19 @@ "SenderEmail": "aliveli4950.39@outlook.com", "Username": "aliveli4950.39@outlook.com", "Password": "aliveli4950" + }, + "ArticleRightSideBarWidgetOptions": { + "Header": "Kategoriler", + "TakeSize": 8, + "CategoryId": 1, + "FilterBy": 2, + "OrderBy": 1, + "IsAscending": false, + "StartAt": "2022-05-05T00:00:00", + "EndAt": "2023-05-09T00:00:00", + "MaxViewCount": 10000, + "MinViewCount": 0, + "MaxCommentCount": 10000, + "MinCommentCount": 0 } } \ No newline at end of file diff --git a/BloggerWay.MVC/wwwroot/AdminLTE/js/articleRightSideBarWidgetSettings.js b/BloggerWay.MVC/wwwroot/AdminLTE/js/articleRightSideBarWidgetSettings.js new file mode 100644 index 0000000..c80c0b0 --- /dev/null +++ b/BloggerWay.MVC/wwwroot/AdminLTE/js/articleRightSideBarWidgetSettings.js @@ -0,0 +1,87 @@ +$(document).ready(function () { + + + // Select2 + $('#categoryList').select2({ + theme: 'bootstrap4', + placeholder: "Lütfen bir kategori seçiniz...", + allowClear: true + }); + + $('#filterByList').select2({ + theme: 'bootstrap4', + placeholder: "Lütfen bir filtre türü seçiniz...", + allowClear: true + }); + + $('#orderByList').select2({ + theme: 'bootstrap4', + placeholder: "Lütfen bir sıralama türü seçiniz...", + allowClear: true + }); + + $('#isAscendingList').select2({ + theme: 'bootstrap4', + placeholder: "Lütfen bir sıralama tipi seçiniz...", + allowClear: true + }); + + // Select2 + + + // jQuery UI - DatePicker + + $(function () { + $("#startAtDatePicker").datepicker({ + closeText: "kapat", + prevText: "<geri", + nextText: "ileri>", + currentText: "bugün", + monthNames: ["Ocak", "Åžubat", "Mart", "Nisan", "Mayıs", "Haziran", + "Temmuz", "AÄŸustos", "Eylül", "Ekim", "Kasım", "Aralık"], + monthNamesShort: ["Oca", "Åžub", "Mar", "Nis", "May", "Haz", + "Tem", "AÄŸu", "Eyl", "Eki", "Kas", "Ara"], + dayNames: ["Pazar", "Pazartesi", "Salı", "ÇarÅŸamba", "PerÅŸembe", "Cuma", "Cumartesi"], + dayNamesShort: ["Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct"], + dayNamesMin: ["Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct"], + weekHeader: "Hf", + dateFormat: "dd.mm.yy", + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: "", + duration: 1000, + showAnim: "drop", + showOptions: { direction: "down" }, + /*minDate: -3,*/ + maxDate: 0 + }); + $("#endAtDatePicker").datepicker({ + closeText: "kapat", + prevText: "<geri", + nextText: "ileri>", + currentText: "bugün", + monthNames: ["Ocak", "Åžubat", "Mart", "Nisan", "Mayıs", "Haziran", + "Temmuz", "AÄŸustos", "Eylül", "Ekim", "Kasım", "Aralık"], + monthNamesShort: ["Oca", "Åžub", "Mar", "Nis", "May", "Haz", + "Tem", "AÄŸu", "Eyl", "Eki", "Kas", "Ara"], + dayNames: ["Pazar", "Pazartesi", "Salı", "ÇarÅŸamba", "PerÅŸembe", "Cuma", "Cumartesi"], + dayNamesShort: ["Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct"], + dayNamesMin: ["Pz", "Pt", "Sa", "Ça", "Pe", "Cu", "Ct"], + weekHeader: "Hf", + dateFormat: "dd.mm.yy", + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: "", + duration: 1000, + showAnim: "drop", + showOptions: { direction: "down" }, + /*minDate: -3,*/ + maxDate: 0 + }); + }); + + + // jQuery UI - DatePicker +}); \ No newline at end of file