تصویر محمدعلی اکبری

از روز اولی که مودل را شناختم، مشکل تاریخ شمسی همواره گریبانگیر استفاده کنندگان ایرانی آن بوده است. تلاش‌های زیادی نیز انجام شده است. اولین نسخه از تقویم شمسی روی مودل 1.9.4 و در حال حاضر آخرین نسخه تست شده آن روی مودل 2.5 توسط مهندس شمیم رضایی فرآهم شده است. خبر خوب این است که در نسخه بعدی مودل (2.6) این ویژگی به هسته منتقل می‌شود و با خیال راحت می‌توانید از مودل شمسی لذت ببرید.

اما اضافه کردن این امکان به مودل با توجه به معماری آن تنها از راه patch کردن هسته آن ممکن است. همچنین مراحل شمسی سازی ممکن است با مشکلات زیادی رو‌به‌رو شود. از این رو سعی می‌کنم تمامی مواردی را که به آنها برخوردم در قالب این مطلب به اشتراک بگذارم. از این رو این مطلب ممکن است به مرور زمان به روزرسانی شود.

 

اعمال patch شمسی سازی مودل

این patch با نام MDL-18375 ارائه شده است. ابتدا فایل foodle_calendar25_2013051400.08.txt.zip یا هر نسخه جدیدتر آن را دانلود و از حالت فشرده خارج کنید سپس پسوند آن را به diff تغییر دهید. سپس مراحل patch کردن را که در ادامه آمده است، دنبال کنید.

1- راه اول: با استفاده از نرم افزار patch

1-1- گام اول: نسخه استاندارد و پایدار مودل را دانلود و از حالت فشرده خارج کنید.

(برای من: E:\wamp\www\sper.ir\lms)

1-2- گام دوم: نرم‌افزار patch را دانلود و نصب کنید. (در لینوکس: GNU patch) همچنین مسیر نصب آن را به Environment Variables اضافه کنید.

(مسیر نصب در اینجا: C:\Program Files (x86)\GnuWin32\bin)

1-3- گام سوم: فایل foodle_calendar25_2013051400.08.diff را در ریشه مودل کنار بقیه فایل‌ها قرار دهید.

(برای من: E:\wamp\www\sper.ir\lms\foodle_calendar25_2013051400.08.diff)

1-4- گام چهارم: برای اعمال patch در محیط commant line مراحل زیر را طی کنید.

C:\>cd /d e:/
e:\>cd wamp/www/sper.ir/lms/
e:\wamp\www\sper.ir\lms>patch -b -p1 < foodle_calendar25_2013051400.08.diff

گزینه -b باعث می‌شود در صورت عدم همخوانی patch (در اینجا 2.4.1) با نسخه مودل (در اینجا 2.5) تغییرات patch تا جای ممکن اعمال شود و مشکلات به وجود آمده توسط خود شما و با دست حل شود. برای این کار نرم افزار patch نسخه اصلی هر فایل را با پسوند orig و در صورت عدم موفقیت patch کردن یک فایل، موارد خطا را در فایل rej در کنار فایل اصلی قرار می‌دهد.

بعد از اجرای دستورات بالا گزارش زیر را دریافت خواهید کرد.

...
patching file `calendar/export_execute.php'
Hunk #1 succeeded at 34 with fuzz 1.
patching file `calendar/lib.php'
...
Hunk #4 FAILED at 771.
...
1 out of 7 hunks FAILED -- saving rejects to calendar/lib.php.rej
...

تغییرات فایل به فایل و در بسته های کوچکی با نام Hunk انجام می‌شود. در مواردی که یک Hunk با پیام FAILED روبه‌رو می‌شود تمام تغییرات مربوط به آن فایل را به صورت دستی اعمال کنید.

 

2- راه دوم: با استفاده از نرم‌افزار netbeans

برای اعمال patch می‌توانید از نرم‌افزارهای دیگر نظیر netbeans نیز استفاده کنید. بعد از ایجاد پروژه در مسیر ریشه مودل قرار گرفته و از گزینه "tools > apply diff patch" اقدام به patch کردن نمایید. در تب output از محیط netbeans می‌توانید HUNK های FAILED شده را مشاهده کنید. در این حالت نیز تمامی تغییرات مربوط به آن فایل را از فایل diff مشاهده کرده و به صورت دستی اعمال کنید.

apply diff patch in netbeans

رفع ایرادهای احتمالی

مشکل اول: عدم نمایش صحیح عبارات فارسی و به هم خوردن encoding عبارات. به عنوان مثال "ظپط±ظˆط±ط¯غŒظ† 1392"

برای رفع این ایراد باید ابتدا فایل‌های مربوط به زبان در تقویم را در نرم‌افزار notepad++ باز کرده و encoding آن را به utf8 تغییر دهید. همچنین ممکن است مجبور شوید عبارات را از ابتدا وارد کنید.

calendarsystem\gregorian\lang\fa\calendarsystem_gregorian.php
calendarsystem\hijri\lang\en\calendarsystem_hijri.php
calendarsystem\hijri\lang\fa\calendarsystem_hijri.php
calendarsystem\jalali\lang\fa\calendarsystem_jalali.php

همچنین در مسیر پوشه‌ی داده‌های مودل (moodledata) در فایل "lang\fa\langconfig.php" تغییر زیر را اعمال کنید.

$string['localewincharset'] = '';
$string['oldcharset'] = '';

ممکن است برای اعمال تغییرات به پاک کردن cache نیاز داشته باشید. برای اینکار از مسیر "مدیریت سایت ◄ توسعه ◄ Purge all caches" اقدام کنید.

 

دیدگاه‌ها

تصویر محمدعلی اکبری

محمدعلی اکبری

1- برای تعیین تنظیمات پیش فرض زبان: خانه ◄ مدیریت سایت ◄ زبان ◄ تنظیمات زبانی

نکته: مطمئن شوید گزینه "تشخیص خودکار زبان" انتخاب نشده باشد.

2- برای تعیین تنظیمات پیش فرض تقویم: خانه ◄ مدیریت سایت ◄ نما ◄ تقویم

نکته: پیش فرض، روز ابتدای هفته و روزهای تعطیل هفته را تعیین کنید.

تصویر safa

safa (تایید نشده)

خطای زیر و میده :

Fatal error: Call to undefined function get_list_of_calendars() in /home/---/public_html/lms/blocks/calendar_month/block_calendar_month.php on line 63

تصویر محمدعلی اکبری

محمدعلی اکبری

اون hunk های مشکل خورده رو به صورت دستی حل کردید؟

تصویر safa

safa (تایید نشده)

سلام
مرسی از پاسخت
آره، خودم بررسی کردم و جاهایی که حتی تگ پی اچ پی بسته نشده بود و هم اصلاح کردم.
مطمئن هستید برای ورژن 2.4.5 هم جواب میده تا دوباره روش کار کنم؟

تصویر محمدعلی اکبری

محمدعلی اکبری

مطمئن باشید این patch ها کار می‌کنند؛ patch رو روی مودل بعد از نصب دارید اعمال می‌کنید یا هنوز نصب نکردید؟ از کدوم استفاده می‌کنید؟ foodle_calendar241.txt یا foodle_calendar25_2013051400.08.txt.zip؟

* لطفا روی کامنتهای من پاسخ بدید تا رشته کلام حفظ بشه

تصویر مهدی

مهدی (تایید نشده)

اول باید نصب کنم بعد پچ را اعمال کنم یا قبل از نصب ابن کار رو بکنم.

من بعد از نصب تست کردم نشد :(

تصویر محمدعلی اکبری

محمدعلی اکبری

سلام؛ اگر سامانه آموزشی شما تازه داره راه اندازی می‌شه، چه کاریه؟! اول patch رو اعمال کنید و بعد نصب کنید.

اما اگر محتوای روی سامانه آموزشی شما هست، علاوه بر این تغییات در کد‌ها باید تغییراتی که کدهای نصب patch شده ایجاد می‌کنند را به صورت دستی اعمال کنید. به عنوان مثال تغییرات روی پایگاه داده.

تصویر safa

safa (تایید نشده)

مودل و نصب کردم.از foodle_calendar25_2013051400.08.txt.zip استفاده کردم!

تصویر حمید رضا

حمید رضا (تایید نشده)

با درود،
بنده در حال راه اندازی یک آموزشگاه تحت وب می باشم. و جهت بخش مدیریت یادگیری مودل را انتخاب کرده ام.
در همين راستا نيازمند آخرين نسخه فارسي شده مودل به همراه ترجمه كامل و تاريخ شمسي مي باشيم.
خواهشمند است در صورتيكه امكان تامين اين درخواست وجود دارد اعلام قيمت فرماييد در غير اينصورت بفرماييد از چه مرجعي مي توانيم تهيه كنيم. همچنين خوشحال مي شويم از تجربيات و مشاوره جنابعالي بهره مند گرديم.
در ضمن من داستان پتچ را می دونم ولی دنبال یک نسخه فارسی شده مطمئن و استیبل هستم.
پيشاپيش از حسن توجه و عنايت شما سپاسگزارم.

تصویر محمدعلی اکبری

محمدعلی اکبری

با سلام؛ با توجه به چند درخواستی که وجود داشته است، طی هفته آتی نسخه patch شده و آماده نصب را برای دانلود قرار خواهم داد.

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

تصویر nasim

nasim (تایید نشده)

سلام دوستان
من کلا patch را نتونستم اجرا کنم اول کامندcd c:\wamp\www\moodle را زدم و سپس مسیر را در Environment تعریف کردم و وقتی کامند patch -b -p1 < foodle_calendar25_2013051400.08.diff را می نویسم و enter را میزنم یک صفحه جدید مانند cmd باز میشه ولی هیچ نوشته و یا پروسسی انجام نمیشه.
لطفا راهنمایی بفرمایید مشکل بنده کجاست.
ممنون

تصویر محمدعلی اکبری

محمدعلی اکبری

سلام، یکبار هم در حالت run as adminstrator مراحل را اجرا کنید.

تصویر amir

amir (تایید نشده)

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

تصویر محمدعلی اکبری

محمدعلی اکبری

خواهش میکنم ;) موفق باشید

تصویر الهام

الهام (تایید نشده)

سلام
من از نرم افزار  netbeans برای patch  استفاده کردم ولی زمانی که مودل را اجرا میکنم این error ها را میده:

( ! ) Warning: require_once(C:\wamp\www\moodle\calendarsystem\calendarsystem.class.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\moodle\lib\setup.php on line 540
Call Stack
# Time Memory Function Location
1 0.0014 497592 {main}( ) ..\index.php:0
2 0.0017 504872 require_once( 'C:\wamp\www\moodle\config.php' ) ..\index.php:31
3 0.0042 765672 require_once( 'C:\wamp\www\moodle\lib\setup.php' ) ..\config.php:26

( ! ) Fatal error: require_once() [function.require]: Failed opening required 'C:\wamp\www\moodle/calendarsystem/calendarsystem.class.php' (include_path='C:\wamp\www\moodle/lib/zend;C:\wamp\www\moodle/lib/pear;.;C:\php\pear') in C:\wamp\www\moodle\lib\setup.php on line 540
Call Stack
# Time Memory Function Location
1 0.0014 497592 {main}( ) ..\index.php:0
2 0.0017 504872 require_once( 'C:\wamp\www\moodle\config.php' ) ..\index.php:31
3 0.0042 765672 require_once( 'C:\wamp\www\moodle\lib\setup.php' ) ..\config.php:26

میشه راهنماییم کنید
ممنون

تصویر الهام

الهام (تایید نشده)

سلام
برای patch کردن از طریق نرم افزار netbeans منظور از در مسیر ریشه مودل قرار گرفته و از گزینه "tools > apply diff patch" اقدام به patch کردن نمایید یعنی چه؟ میشه واضح تر توضیح بدین چطور با نرم افزار netbeans کار کنم؟

تصویر محمدعلی اکبری

محمدعلی اکبری

سلام دوست عزیز؛ مطلب به روزرسانی شد. به تصویر دقت کنید. خطایی که برخورد کردید هم مربوط به درست اعمال نشدن patch هست.

تصویر مهران

مهران (تایید نشده)

سلام علیکم
بسیار ممنونم از پستهای کاربردی شما در خصوص موودل
ممکن است راهنمایی بفرمایید چطور تقویم مودل 1.9.19 را شمسی نمایم؟
سپاس فراوان

تصویر شادی

شادی (تایید نشده)

سلام
بعد از نصب روی نمایش لینک ماهها error 500 را میدهد لطفا در این خصوص راهنمایی فرمایید.
تشکر

تصویر مسعود

مسعود (تایید نشده)

سلام
من با استفاده از netbeans پچ رو اعمال کردم . اما بعد از نصب مودل خطایی رو که مشاهده کردم این بود که روز جاری رو به درستی نشان میداد اما دی ماه رو 31 روزه نشان میداد ! لطفا در این خصوص راهنمایی بفرمایید

تصویر محمدعلی اکبری

محمدعلی اکبری

سلام؛ کدوم نسخه از مودل؟

تصویر مسعود

مسعود (تایید نشده)

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

تصویر الهام

الهام (تایید نشده)

سلام
من patch را روی نسخه 2.5.4 مودل اعمال کردم تقویم فارسی را میاره روز و ماه را فارسی میاره ولی سال را به میلادی نشون میده
ممنون میشم کمکم کنید

تصویر الهام

الهام (تایید نشده)

سلام
patch را روی نسخه 2.5 اعمال کردم تقویم درست کار می کند. مشکلی که هست اینه که زمانی که سفارشی سازی زبان از قسمت زبان که انتخاب و زبان فارسی را انتخاب میکنم error writing to database میده
چیکار کنم؟

تصویر امير قاسميان

امير قاسميان (تایید نشده)

سلام.
اين روش هايي كه توضيح داديد فقط روي لوكال كاربرد داره؟ چطوري ميشه روي سايت اصلي اعمال كرد؟
با تشكر

تصویر سالاری

سالاری (تایید نشده)

سلام
من نسخه 2.8 رو میخوام نصب کنم آیا مشکل تقویم برای این نسخه هم قابل حله؟ چطوری؟

تصویر nemo

nemo (تایید نشده)

سلام
من نسخه 2.8 رو نصب کردم ایا مشکل تقویم برای این نسخه هم قابل حل هست؟ میشه بفرمایید چطور؟
ممنون

تصویر مريم راپويي

مريم راپويي (تایید نشده)

سلام
لطفا بفرماييد چطور ميشه ورژن مودل نصب شده رو پيدا کرد؟
ممنونم

افزودن نظر جدید