با ما در تماس باشید! 88520412 (021)

مایکروسافت سی آر ام فارسی: تقویم شمسی در یادداشت‌ها

تابع نمایش یادداشت کد جاوا اسکریپت Wall.Control.js  مایکروسافت داینامیکس سی آر ام

پرنیان امکان استفاده از تقویم شمسی در مایکروسافت داینامیکس سی آر ام را فراهم می‌کند. در نسخه‌های قبلی سی آر ام، نمایش تقویم شمسی در یادداشت‌ ها با پیاده‌ سازی امکانات استاندارد تقویم شمسی انجام می‌شد و ما مشکلی از این بابت نداشتیم. با انتشار نسخه‌ی جدید داینامیکس، این امکان دچار اشکال شد، یادداشت‌ها با تقویم میلادی نشان داده می‌شدند. این مطلب به بررسی این موضوع و روش حل آن می‌پردازد.
با بررسی دقیق‌تر موضوع روشن شد که امکان سی آر ام برای نمایش یادداشت‌ها در نسخه‌ی جدید کاملا تغییر داده شده است. درواقع در نسخه‌ی جدید بخش عمده‌ای از عملیات به کلاینت ساید (client side) و کدهای جاوا اسکریپت منتقل شده است. این تغییر بیشتر برای هماهنگی با امکانات جدید در record wall انجام شده است. به هر حال آنچه مهم است آنست که برای نمایش بهتر تاریخ و مثلا نشان دادن عباراتی مثل “امروز”، “همین الان”، “دیروز” و… عملا فرمت کردن تاریخ در کلاینت ساید انجام می‌شود.
با بررسی کدهای جاوا اسکریپت نهایتا تابعی که برای اینکار استفاده می‌شود در فایل Wall.Control.js پیدا شد این تابع در شکل زیر نشان داده شده است:

این تابع تاریخ و همچنین مقدار فرمت شده‌ی آنرا به عنوان ورودی دریافت میکند و شکل مناسب آن برای نمایش را بازمیگرداند. خروجی ممکن است عبارت‌های “امروز” و یا “دیروز” باشد. دقت کنید که در صورتیکه مقدار formattedDateTime خالی باشد. این مقدار توسط دستورهای dateTime.toLocaleString() محاسبه می‌شود. این تابع در نمایش “فعالیت‌ها” (در رکورد وال) هم استفاده می‌شود. آنچه مشخص شد آنست که به هنگام نمایش فعالیت‌ها formattedDateTime با مقادیر شمسی پر شده است. این در حالی است که برای یادداشت‌ها این پارامتر خالی است. و چون خالی است، وقتی با تابع toLocaleString فرمت میشود، طبیعی است که به شکل میلادی نمایش داده شود. برای تصحیح این موضوع تابع به شکل زیر تغییر داده شد:
تابع  toLocaleString نمایش یادداشتها مایکروسافت داینامیکس سی آر ام
دقت کنید که در این تغییر اگر کالچر انتخاب شده فارسی باشد بدان معنا است که کاربر تقویم شمسی را انتخاب کرده است. در این حالت از تابع convert برای تبدیل به تقویم شمسی استفاده می‌شود و مقدار تاریخ با تقویم شمسی قالب‌بندی (فرمت) می‌شود.

خلاصه:
برای پشتیبانی از تقویم شمسی در نمایش یادداشت‌های سی.آر.ام، پرنیان تابع Wall.Control.Utils.DateUtils.formatDateAsReadableStringWithGivenResources را تغییر میدهد. این تغییر به هنگام نصب پرنیان انجام می‌شود و پس از آن سی.آر.ام یادداشت‌ها را با تقویم شمسی نمایش می‌دهد. این امکان از نسخه‌ی ۸.۱.۲ به پرنیان اضافه شده است.

مشتاقانه منتظر دریافت نظرات شما دوستان عزیز هستیم