PDA

View Full Version : تاریخ شمسی برای Dot Net Nuke



smirabolg
چهارشنبه 25 مهر 1386, 11:14 صبح
سلام
ابتدا چند نکته:
1- زحمت این کدها رو در حقیقت آقای جعفر محمدى در فروم Persiadevelopers کشیدند. بنده فقط پیگیر کار بودم.
2- پیش از این هم جناب DelphiAssistant و آقای مهدوی مقاله های نسبتاً کاملی در این زمینه نوشته اند.
3- با اینکه DNN با VB.NET نوشته شده، من معال #C کدها رو هم برای دوستان علاقه مند به #C گذاشتم.
4- این کدها قابل استفاده در هر WebSite یا هر WinApp دات نتی هستند.
5- در استفاده از این کدها احتیاج به دست کاری بانک DNN نیست ولی بعضی از ماژول ها با آن مشکل دارند که با یک کم تلاش قابل حل است.
6- بعضی از انواع کنترل Calendar هم با این کدها مشکل دارند که من فکر می کنم مربوط به خود کنترل هست نه کد ما.

خوب بریم سر اصل مطلب:

قبل از هر چیز چند تا Refrence باید برزنیم:
جهت اطلاع دوستان کم تجربه: این کدها را در بالاترین قسمت صفحه کپی کنید.


:#C



Using System.Globalization
Using System.Reflection
Using System.Threading



:VB


Imports System.Globalization
Imports System.Reflection
Imports System.Threading




سپس کد های زیر رو در Load صفحه مورد نظر (در DNN صفحه Default.aspx) کپی کنید.



:#C



System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;
info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
info.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
info.AMDesignator = "ق.ظ";
info.PMDesignator = "ب.ظ";
info.ShortDatePattern = "yyyy/MM/dd";
info.FirstDayOfWeek = DayOfWeek.Saturday;
System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar();
typeof(System.Globalization.DateTimeFormatInfo).Ge tField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (info, cal);
object obj = typeof(System.Globalization.DateTimeFormatInfo).Ge tField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (info);
obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(ob j, new object[] { cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (cal, null) });
typeof(System.Globalization.CultureInfo).GetField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (calture, cal);
System.Threading.Thread.CurrentThread.CurrentCultu re = calture;
System.Threading.Thread.CurrentThread.CurrentUICul ture = calture;
System.Globalization.CultureInfo.CurrentCulture.Da teTimeFormat = info;
System.Globalization.CultureInfo.CurrentUICulture. DateTimeFormat = info;


:VB



Dim calture As New CultureInfo("fa-IR")
Dim info As DateTimeFormatInfo = calture.DateTimeFormat
info.AbbreviatedDayNames = New String() {"ى", "د", "س", "چ", "پ", "ج", "ش"}
info.DayNames = New String() {"یکشنبه", "دوشنبه", "سهشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه"}
info.AbbreviatedMonthNames = New String() {"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", ""}
info.MonthNames = New String() {"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", ""}
info.AMDesignator = "ق.ظ"
info.PMDesignator = "ب.ظ"
info.ShortDatePattern = "yyyy/MM/dd"
info.FirstDayOfWeek = DayOfWeek.Saturday
Dim PersianCal As New PersianCalendar
GetType(DateTimeFormatInfo).GetField("calendar", (BindingFlags.NonPublic Or(BindingFlags.Public Or BindingFlags.Instance))).SetValue(info, PersianCal)
Dim obj As Object = GetType(DateTimeFormatInfo).GetField("m_cultureTableRecord", (BindingFlags.NonPublic Or (BindingFlags.Public Or BindingFlags.Instance))).GetValue(info)
obj.GetType.GetMethod("UseCurrentCalendar", (BindingFlags.NonPublic OrBindingFlags.Instance)).Invoke(obj, New Object() {PersianCal.GetType.GetProperty("ID", (BindingFlags.NonPublic Or BindingFlags.Instance)).GetValue(PersianCal,Nothin g)})
GetType(CultureInfo).GetField("calendar", (BindingFlags.NonPublic Or(BindingFlags.Public Or BindingFlags.Instance))).SetValue(calture, PersianCal)
Thread.CurrentThread.CurrentCulture = calture
Thread.CurrentThread.CurrentUICulture = calture
CultureInfo.CurrentCulture.DateTimeFormat = info
CultureInfo.CurrentUICulture.DateTimeFormat = info



حالا همه تاریخها و حتی کنترل Calendar هم شمسی است.
دوستان گرامی اگر به نکته جدیدی دست پیدا کردند حتماً در همین تایپیک اون رو به اطلاع همه برسونند.
امیدوارم که مدیران فروم گله نکنند که چرا تایپیک تکراری درست کردم چون این تایپیک واقعاً تکراری نیست.
یا علی

Qermezkon
چهارشنبه 25 مهر 1386, 16:09 عصر
روی برنام های ویندوز و کنترل MonthCalendar کار نمی کنه؟؟؟؟

mp2009
پنج شنبه 26 مهر 1386, 09:46 صبح
دوست عیز میشه بگید dnn چیه؟

Qermezkon
پنج شنبه 26 مهر 1386, 12:08 عصر
DotNetNuke یک CMS است.

این کدها قابل استفاده در هر WebSite یا هر WinApp دات نتی هستند.

rtech
جمعه 27 مهر 1386, 10:54 صبح
دوست عیز میشه بگید dnn چیه؟

DNN مخفف DotNetNuke هست ، برای اطلاعات بیشتر به سایت زیر مراجعه کنید :



www.dotnetnuke.com


قبلا تاپیکی در مورد تاریخ شمسی برای DNN بود که دوستان استفاده از یک فایل JS رو پیشنهاد دادند و خیلی خوب هم کار میکنه و به جای تقویم خود DNN میشه ازش استفاده کرد ( جناب سار زحمتش رو کشیدند )

smirabolg
شنبه 28 مهر 1386, 09:40 صبح
DNN مخفف DotNetNuke هست ، برای اطلاعات بیشتر به سایت زیر مراجعه کنید :



www.dotnetnuke.com


قبلا تاپیکی در مورد تاریخ شمسی برای DNN بود که دوستان استفاده از یک فایل JS رو پیشنهاد دادند و خیلی خوب هم کار میکنه و به جای تقویم خود DNN میشه ازش استفاده کرد ( جناب سار زحمتش رو کشیدند )


دوست عزیز اگر دقت کنید این تایپیک ناقض تایپیک جناب سار نیست بلکه مکمل اونه. یعنی موضوع دو تایپیک با هم فرق می کنه. حتماً جناب سار هم این موضوع رو تأیید می کنن.

delphi77
دوشنبه 12 آذر 1386, 15:14 عصر
این به درد می خوره
ResourcePack.Full.04.03.04.fa-IR.zip

سار
دوشنبه 12 آذر 1386, 16:01 عصر
به تعداد آدمهای روی زمین راه برای رسیدن به خدا هست و دقیقن به تعداد Developerهای روی زمین راه برای شمسی کردن تقویم یک سیستم. :چشمک:
(امام سار (ع) :لبخند:)

از شوخی گذشته، خوبی این کار نصب به کنترل من اینکه نیازی به اعمال روی همه جاهایی که تقویم استفاده شده نیست.

فقط یه چیزی روی پاپا کلندر آژاکس هم کار میکنه؟
یا کلندر کامپوننت های دیگه؟!

delphi77
سه شنبه 20 آذر 1386, 13:55 عصر
راهی نیسیت که بشه بدون دستکاری کد دات نت نیوک تاریخ میلادی آن را شمسی کرد؟

delphi77
شنبه 24 آذر 1386, 10:32 صبح
بالاخره چه باید کرد برای نمایش تاریخ جلالی در dnn دوستان تا حالا چنین کار ی نکردند؟

سار
شنبه 24 آذر 1386, 12:16 عصر
یه کنترل من قبل تو همین بخش گذاشتم و اگر کدهای آقا یا خانم (متاسفانه من با ایشون آشنا نیستم) smirabolg (http://barnamenevis.org/forum/member.php?u=39880) رو به VB تبدیل کنی مشکلت حل میشه.

delphi77
شنبه 24 آذر 1386, 14:04 عصر
با تشکر من یک بار سوالم را برای اینکه خودم مطمن شوم که شما متوجه سوالم شدید مطرح کنم
من می خواهم تاریخ را شمسی کنم بدون اینکه سورس برنامه را باز کنم و دستکاریش کنم ! می شه؟
اگر می شه کدام فایل ها را بایستی تغییر بدم ؟

سار
شنبه 24 آذر 1386, 15:00 عصر
دوست عزیز،
DNN از کلندر خود VS استفاده می کنه، و برای شمسی کردنش هم دو راه داری یا کلندر اون رو حذف کنی و کلندر خودت رو بجاش قرار بدی(مثل کاری که من کردم) یا از کدهای smirabolg (http://barnamenevis.org/forum/member.php?u=39880) استفاده کنی که خیلی راحت تر و مفید تره.

delphi77
شنبه 24 آذر 1386, 16:00 عصر
و این یعنی اینکه بایستی سورس dnn را دانلود کنم و روی آن کار کنم درسته؟

سار
یک شنبه 25 آذر 1386, 09:05 صبح
نه عزیزم تو فایل Default.aspx.vb رو داری، اون تو اصلاح کن.

Nightbat
دوشنبه 26 آذر 1386, 11:08 صبح
اینو تو msdn نوشته بود

Do not use a PersianCalendar object as the default calendar for a culture. The default calendar is specified by the CultureInfo.Calendar (http://barnamenevis.org/forum/P_System_Globalization_CultureInfo_Calendar.htm) property, and must be one of the calendars returned by the CultureInfo.OptionalCalendars (http://barnamenevis.org/forum/P_System_Globalization_CultureInfo_OptionalCalenda rs.htm) property. Currently, the PersianCalendar class is not an optional calendar for any culture supported by the CultureInfo (http://barnamenevis.org/forum/T_System_Globalization_CultureInfo.htm) class and consequently cannot be a default calendar.

a66as_gh
پنج شنبه 09 اسفند 1386, 11:13 صبح
دوست عزیز میشه لطفا بگین که این کدها رو کجا باید وارد کنم ؟
پیشاپیش ممنونم

miladr
پنج شنبه 22 فروردین 1387, 01:04 صبح
http://www.irandnn.ir/tabid/64/forumid/18/tpage/1/view/topic/postid/65/Default.aspx#65

nobody_300
شنبه 07 دی 1387, 11:29 صبح
[quote=smirabolg;408915]سلام
ابتدا چند نکته:
1- زحمت این کدها رو در حقیقت آقای جعفر محمدى در فروم Persiadevelopers کشیدند. بنده فقط پیگیر کار بودم.
2- پیش از این هم جناب DelphiAssistant و آقای مهدوی مقاله های نسبتاً کاملی در این زمینه نوشته اند.
3- با اینکه DNN با VB.NET نوشته شده، من معال #C کدها رو هم برای دوستان علاقه مند به #C گذاشتم.
4- این کدها قابل استفاده در هر WebSite یا هر WinApp دات نتی هستند.
5- در استفاده از این کدها احتیاج به دست کاری بانک DNN نیست ولی بعضی از ماژول ها با آن مشکل دارند که با یک کم تلاش قابل حل است.
6- بعضی از انواع کنترل Calendar هم با این کدها مشکل دارند که من فکر می کنم مربوط به خود کنترل هست نه کد ما.
.....

اگر 2تا تقویم داشته باشیم و بخواهیم فقط یکیش به این صورت فارسی بشه! چطوری می تونیم ؟؟؟

Devilprogramer
دوشنبه 21 اردیبهشت 1388, 10:33 صبح
یه سوال .. من فکر می کردم این روش تاریخ رو همه جا تو پرتال فارسی می کنه ولی اینکارو نمی کنه .. وقتی که مثلاً دارم از ماژول announcement واسه اخبار استفاده می کنم تاریخی که موقع ویرایش می بینم فارسیه اما در حالت نمایشی اونو به فرمت میلادی نشون می ده .. دلیلش چیه؟

odiseh
سه شنبه 29 اردیبهشت 1388, 11:17 صبح
سلام
من رفتم تو سایت dot net nuke و کلی چیز میز برای Download داشت. این calendar شما توی کدوم فایل دانلودیش هست؟

kalali
جمعه 01 خرداد 1388, 12:51 عصر
این به درد می خوره
ResourcePack.Full.04.03.04.fa-IR.zip
به :عصبانی:در خودت مخوره

Mohandes2009
یک شنبه 07 شهریور 1389, 21:03 عصر
بچه ها من بلد نیستم چجوری استفاده کنم ا ز این کد آخه تازه شرو به یادگیری ASP.NET کردم میشه تو یه پروژه با vs2008 بزارید ببینم؟

مرسی

shokrmhd
شنبه 22 آبان 1389, 16:49 عصر
سلام
دوستان عزیز این تاریخ شمسی برای پورتال 5.5.1 که از framework 4 هم استفاده می کنه ، کار نمی کند
کد جدیدی برای شمسی کردن تاریخ پورتال وجود داره؟

lovers_ali
یک شنبه 22 اسفند 1389, 18:09 عصر
http://www.abdolabadonline.com