logo
میهمان عزیز خوش آمدید! برای بهره‌مندی از تمام امکانات لطفا وارد حساب کاربری خود شوید ورود یا ثبت نام.

اطلاع رسانی

Icon
Error

ورود


گزینه ها
مشاهده آخرین ارسال مشاهده آخرین ارسال خوانده نشده
admin  
#1 ارسال شده : 1392/08/28 05:44:05 ب.ظ
admin

رتبه: Administration

گروه ها: Administrators
تاریخ عضویت: 1392/08/28
ارسالها: 16

5 تشکر دریافتی در 5 ارسال
در این مطلب به نحوه تغییر هسته اصلی برنامه جهت نمایش تاریخ جلالی می پردازیم.
برای تغییر در نمایش تاریخ در اورچارد با توجه به Part Base بودن برنامه، با تغییر قسمت مربوطه به راحتی تمامی ماژول هایی که از این قسمت استفاده میکنند منطق جدیدی که اضافه گشته را به کار خواهند برد.
قسمت زمان و ساعت در پروژه Orchard.Core قرار دارد و با نام CommonPart در محتوا های طراحی شده به کار میرود.
کد های مربوط به CommonPart در فولدر Common قرار دارد.
فایل های مربوط به نمایش (View) تاریخ و زمان در فولدر Views به شرح زیر میباشد:
Parts.Common.Metadata.cshtml
Parts.Common.Metadata.Summary.cshtml
مدل این فایل ها با استفاده از متد PublishedState که توسط شکل (Shape) با نام فایل Shapes.cs که در فولدر Common است ساخته میشود.
متد PublishedState با فراخوانی متد DateTime و با ارسال متغیر DateTimeUtc تاریخ و زمان را فرامیخواند.
متد DateTime در کلاس DateTimeShapes وجود دارد، این فایل در پروژه Orchard.Core در فولدر Shapes با نام DateTimeShapes.cs موجود است.
در متد DateTime مقدار ارسالی به صورت محلی در می آید و سپس با تایپ IHtmlString عودت داده میشود.
در این کلاس با اضافه نمودن یک متد تبدیل و اضافه نمودن شرط فرهنگ fa-IR میتوانیم به راحتی تاریخ را به صورت جلالی عودت دهیم:
متد تبدیل:

کد:
 
///
/// Converts gregorian date to persian date (Jalali Calendar).
///
/// The Gregorian date.
/// The Persian date.
private string ConvertToPersianTime(DateTime displayDateTime)
{
PersianCalendar p = new PersianCalendar();
int year = p.GetYear(displayDateTime);
int month = p.GetMonth(displayDateTime);
int day = p.GetDayOfMonth(displayDateTime);
return string.Format("{0}/{1}/{2} {3}", year, month, day, displayDateTime.TimeOfDay.ToString());
}


تغییر متد DateTime به صورت زیر :

کد:

[Shape]
public IHtmlString DateTime(DateTime DateTimeUtc, LocalizedString CustomFormat)
{
//using a LocalizedString forces the caller to use a localizable format
if (CustomFormat == null || String.IsNullOrWhiteSpace(CustomFormat.Text))
{
return DateTime(DateTimeUtc, _dateTimeLocalization.LongDateTimeFormat);
}
if (_cultureInfo.Value.Name == "fa-IR") return new MvcHtmlString(ConvertToPersianTime(ConvertToDisplayTime(DateTimeUtc)));
return new MvcHtmlString(ConvertToDisplayTime(DateTimeUtc).ToString(CustomFormat.Text, _cultureInfo.Value));
}



تغییرات کد را از آدرس زیر میتوانید ببینید و دریافت کنید.
فایل اسمبلی شده تغییرات فوق
admin  
#2 ارسال شده : 1394/04/29 03:52:28 ب.ظ
admin

رتبه: Administration

گروه ها: Administrators
تاریخ عضویت: 1392/08/28
ارسالها: 16

5 تشکر دریافتی در 5 ارسال
خوشبختانه در هسته اصلی برنامه در ورژن های بالای 1.8 تغییرات تقویم اعمال گشته و فقط دوستانی که از ورژن های پایین تر استفاده میکنند نیاز به تغییرات کد دارند .
در سایت اصلی فایل هسته ورژن 1.7.1 تغییر داده شده قرار دارد که میتوانید دانلود کنید.
دریافت فایل نسخه 1.7.1 Orchard.Core.dll که برای نمایش تاریخ شمسی تغییر داده شده
کاربرانی که در حال مشاهده انجمن هستند
رفتن به انجمن  
شما نمی توانید مطلب جدید در این انجمن ایجاد کنید
شما نمی توانید برای مطالب ارسالی پاسخ ارسال کنید
شما نمی توانید مطلب ارسالی خود را حذف کنید
شما نمی توانید مطلب ارسالی خود را ویرایش کنید
شما نمی توانید در مطلب ارسالی خود نظرسنجی ایجاد کنید
شما نمی توانید در این انجمن نظر دهید

ایجاد شده توسط YAF.NET 2.2.3 | YAF.NET © 2003-2018, Yet Another Forum.NET
این صفحه در مدت زمان 0/047 ثانیه ایجاد شد.