بلاگ تخصصی دات نت نیوک ایران

وبلاگ تخصصی دات نت نیوک فارسی

بلاگ تخصصی دات نت نیوک ایران

وبلاگ تخصصی دات نت نیوک فارسی

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

نویسندگان

آموزش ماژول نویسی دات نت نیوک- بخش اول

دوشنبه, ۱۹ خرداد ۱۳۹۳، ۰۱:۰۱ ب.ظ
http://i.stack.imgur.com/aEDVG.png
  • آشنایی با کلیاتی در مورد ماژول و ماژول نویسی
  • شروع ساخت ماژول ، تنظیمات ورژن ، افزودن Dll و فضاهای نام (namespace) مورد نیاز ، صفحه ها و بخش ها و کلاس های لازم
  • افزودن ماژول به پرتال
  • قبل از شروع مراحل کار دانستن اطلاعاتی در مورد ماهیت ماژول ضروری است: 
    در حالت کلی یک ماژول از سه بخش تشکیل شده است و یا به عبارتی به سه یوزر کنترل نیاز دارد:
    1. ظاهر
    2. محتوا
    3. تنظیمات
    در حقیقت کاربر عادی فقط ظاهر ماژول و کاری که انجام می دهد را می بیند. در بخش محتوا اطلاعاتی را که می خواهیم ماژول نمایش دهد و کارهایی که می خواهیم انجام بدهد را وارد می کنیم. و در بخش تنظیمات می توانیم یک سری امکانات اضافی برای تنظیماتش مثلا انتخاب تمپلیت ، رنگ ها، نوع چیدمان و ... اضافه نماییم. پس به جز صفحه ی اصلی ماژول که مربوط به نمایش ظاهری عملکرد ماژول می باشد و قابل مشاهده است ، باقی صفحات حالت ویرایشی دارند و قابل مشاهده برای کاربر نیستند.
    در ماژول ها آیتم هایی داریم به نام Action Command  ها که این آیتم ها در واقع مثل کلیدی هستند که شما را از صفحه ی اصلی ماژول به صفحات دیگر منتقل می کنند، مثلا کلید "اضافه کردن تصویر" که با کلیک روی آن به صفحه ای هدایت می شوید که امکان اضافه کردن تصویر را می دهد.این موارد در مثال بهتر مشخص خواهد شد.
    نکته ی دیگری هم هست و آن اینکه جدای یوزر کنترل ها ، 3 کلاس Info, Controller, Data Provider)) در برنامه ی ماژولمان داریم که برای اتصال به پایگاه داده و خواندن و نوشتن اطلاعاتمان از آنها استفاده می کنیم که این سه کلاس که معمولا ساختار درونی شان برای ماژولهای متفاوت، مشابه هست خودشان با یک کلاس دیگری در یک پروژه ی جدا اما با فضای نام (Namespace) مشابه با برنامه ی ماژول مورد نظر ما مرتبط هستند ، به نام : SQL Data Provider .CS که dll ش را حتما در پکیج های دات نت نیوک دیده اید.پس ما یک solution داریم با دو project  که Namespace هایشان یکی هستند .هر کدام از این سه کلاس توضیح خودشان را دارند که وقتی به آنها رسیدیم بیان خواهد شد. فعلا هدف تنها اشاره و بیان کلیات بوده است.

    از حالا به بعد توضیحات همراه با مثال و در قالب یک نمونه پروژه بیان خواهد شد تا جزئیات بصورت ملموسی قابل درک باشند:

    1. یک پروژه ی Web Application در ویژوال استودیو بسازید و نام پروژه را همنام با نام ماژولی که می خواهید بنویسید بگذارید.
    2. فایلها و پوشه های اضافی مثل App_Data و Web Config، Default.aspx را پاک نمایید. فعلا فقط پوشه های  Properties  و  References را نیاز داریم.
    3. روی پوشه ی Properties  کلیک نمایید تا باز شود، یا راست کلیک و open. (روی علامت + اش نه، روی خودش کلیک نمایید چون نمی خواهیم وارد پوشه شویم). در صفحه ای که باز می شود، در اولین تب (Tab) به نام Application سه قسمت هست که باید به آن توجه کنید:
      • Assembly name

        که باید مانند مثال کامل باشد

      • Default namespace

        که بهتر است  و معمولا با Assembly name یکی است

      • DotNetNuke.Modules.XXX
      • Target Framework

        که یک دراپ دان دارد و امکان انتخاب ورژن دات نت فریم ورک را فراهم کرده است.اگر ماژولی که می نویسید برای دات نت نیوک 5  (DNN 5) باشد ورژن 3.5 را باید انتخاب کنید در این صورت ماژولی که نوشتید روی همه نسخه های قبلی DotNetNuke 5. هم کار می کند اما روی نسخه های بالاتر اگر از فریم ورک مثلا .4 در آنها استفاده شده باشد کار نمی کند. مثلا برای دات نت نیوک نسخه ی 4 به پایین باید Framework 2.0 رو انتخاب کنید و ...با این روش می توانید ماژول مختص به ورژن های خاصی از نیوک را تولید نمایید.

      سپس تب را ذخیره کرده و ببندید.
    4. پوشه ی بعدی، پوشه ی References است. اینجا باید یک reference  اضافه کنیم به نام : DotNetNuke.dll ازکجا؟! از داخل پوشه ی bin پرتالی که قبلا نصب کرده اید. (یا به هر حال پرتالی که می خواهید نصب کنید. مثلا اگر می خواهید از پکیج DNN 5. به بالا استفاده کنید و فریم ورک را هم 3.5 انتخاب کرده اید dll ی که اینجا ادد می کنید باید از داخل همان پکیج باشد.)
      • Right-Click on References > Add Reference > Browse tab > Look in ….
      حالا بعد از انجام کارهای پایه ای به بررسی بخش ها و صفحات ماژول می پردازیم:
    5. یک یوزر کنترل (Web user control) همنام با پروژه مان، به پروژه اضافه می کنیم :
      • Right-Click on project name > Add > New Item > WebUserControl.ascx
      که به جای Web User Control اسم صفحه تان را می نویسید. 
      نکته: اولین صفحه که بیس اصلی ماژول هست و Action Command ها را  اینجا تعریف می کنیم بایستی همنام ماژول تعریف شود. (روال معمول به این صورت است)
    6. پس فعلا اولین صفحه مان که صفحه ی اصلی ماژول هست را می نویسیم.همان طور که می دانید یوزر کنترل ها صفحات Code behind دارند که کدهای کلاس برنامه آنجا قرار دارند (مثلا در زبان سی شارپ Name.ascx.cs  ها) که فعلا ما با این فایلها کار داریم نه فایلهای name.ascx که کدهای مربوط به دیزاین و کنترل های مورد نیاز مثل لیبل (Label) و باتن (Button) و .. در آن قرار می گیرد.
      خوب صفحه ی ascx.cs را باز کنید:
       اینجا دو نکته داریم:
      • using  ها (که با توجه به Reference ی که اضافه کردیم ، namespace هایی که برای نوشتن ماژول لازم هستند را اضافه می کنیم) برای صفحه ی اصلی

        بعنوان مثال :

        1. using DotNetNuke;
        2. using DotNetNuke.Common;
        3. using DotNetNuke.Entities.Modules;
        4. using DotNetNuke.Services.Localization;
        5. using DotNetNuke.Entities.Modules.Actions;
        Namespace خط 4 و 5 فقط توی همین صفحه کاربرد دارند. خط 4 برای متون و کلماتی که برای نام صفحات و آیتم های موجود در آنها بکار گرفته می شود استفاده می گردد. و خط 5 برای تعریفAction Command  ها که اگر به خاطر بیاورید همان کلیدهایی هستند که ما را به صفحات دیگر هدایت می کردند.
      • ارث بری : برای صفحه ی اصلی مان که از Action ها استفاده می کنیم از دو کلاس و در واقع از یک Class  (به نام PortalModuleBase ) و یه Class  Interface (به نام : I Actionable ) ارث می بریم :

        1. public partial class YourClassName : PortalModuleBase,IActionable

      نکته: برای صفحه های دیگر به جز صفحه تنظیمات که در جای خودش راجع به آن صحبت خواهیم کرد، فقط کافی ست که کلاس هایمان از کلاس PortalModuleBase ارث ببرند.

    7. برای تعریف کلیدها نیاز به تابع داریم که ساختار کلی آن برای ماژول های متفاوت ، مشابه هست و این تابع را  اولِ کلاس و قبل از تابع Page_Load تعریف می کنیم.
      1. public Entities.Modules.Actions.ModuleActionCollection ModuleActions
      2. {
      3.     get
      4.     {
      5.         Entities.Modules.Actions.ModuleActionCollection _actions = new Entities.Modules.Actions.ModuleActionCollection();
      6.         //------------------تعریف هر کلید
      7.         ModuleAction AddImage = new ModuleAction(GetNextActionID());
      8.         AddText.Title = Localization.GetString("AddImage",LocalResourceFile);
      9.         AddImage.CommandName = ModuleActionType.PrintModule;
      10.         AddImage.CommandArgument = "";
      11.         AddImage.Icon = "../DesktopModules/YourModuleName/images/OK.gif";
      12.         AddImage.Url = EditUrl("AddImage");
      13.         AddImage.Secure = Security.SecurityAccessLevel.Edit;
      14.         AddImage.UseActionEvent = true;
      15.         AddImage.Visible = true;
      16.         AddImage.NewWindow = false;
      17.         _actions.Add(AddImage);
      18.         //------------------
      19.         return _actions;
      20.     }
      21. }
      • در خط 12  تعریفِ _action را داریم که ثابت است و در واقع یک مجموعه تعریف می کنیم که کلیدهایمان را چند خط پایین تر با تابع Add به آن اضافه می کنیم. و در آخر هم تابع ،کل مجموعه کلیدها یا همون Action Collection  ها را برمی گرداند.
      • : قطعه کدی که بین علامت کامنت قرار گرفته است برای تعریف هر کلید تکرار می شود  که آیتم های دیگری هم می تواند داشته باشد . مهم ترین هایش را بررسی می کنیم:
      • در خط 16 کلید مورد نظرمان را تعریف می کنیم و درخط های بعدی آیتم های مورد نیازمان را به آن اختصاص می دهیم.مثلا عنوان کلید (در واقع  Action مان) و آیکن آن ، آدرسی که هدایت می کند و ...
      • در خط 17 عنوان Action ماژولمان را مشخص می کنیم (که اگر دقت نمایید برایش یک Namespace هم تعریف کرده بودیم) که واژه هایی که اینجا نوشته می شود متن کلید است که شما بعدا در اجرای ماژول آنها را می بینید و برای نمایشش باید این واژه به فایل Resx مربوط به صفحه ی مورد نظرمان اضافه شود . برای ترجمه ی این واژه ها به فارسی (یا هر زبانی) باید این کلمه به فایل Resx مربوط به آن زبان مثلا برای فارسی        Fa-IR.Resx هم اضافه و هم ترجمه شود .توضیح اینکه چگونه این کار را انجام دهید در شماره 8 گفته شده است.
      • در خط 20 می توانیم یک آیکن برای کلیدمان تخصیص بدهیم. برای این کار می توانیم یک پوشه به نام  Images به پروژه ی ماژولمان اضافه کنیم و تصویرهایمان را آنجا قرار دهیم.
      • در خط 21 اسمی که برای url می نویسیم در واقع اسم صفحه ای خواهد بود که این کلید ما را به آنجا هدایت خواهد کرد. در مراحل بعدی باید یک یوزر کنترل دیگر دقیقا به همین نام به پروژه اضافه کنیم که برای مثال اینجا ما اسمش را گذاشتیم AddImage یعنی می خواهیم یه ماژول داشته باشیم که یک سری تصویر را نمایش بدهد و با کلیک روی این کلید به صفحه ای هدایت می شویم که امکان اضافه کردن تصاویر را به ما می دهد.
    8. و اما اضافه کردن فایلهای Resx : برای این کار اول یک پوشه ی App_ Local Resources به پروژه اضافه می کنیم:
      • Right-Click on project name > Add ASP.NET Folder > App_LocalResources
       و بعد باید به این پوشه فایل rscx را اضافه کنید:
      • Right-Click on App_LocalResources > Add > New Item > Resources File 
      نام فایل Resource1.resx که اضافه شده است را تغییر می دهیم و به جای Resource1 اسم کامل صفحه مان را با پسوند ascx اضافه می کنیم:
      • XXX.ascx.resx
       و برای ترجمه فارسی اش و در واقع همان بومی شدنش این فایل را اضافه می کنیم:
      • XXX.ascx.fa-IR.resx
       زمانیکه این فایل ها را باز می کنید سه ستون می بینید که در ستون Name واژه ای که می خواهیم نمایش داده شود و ترجمه شود را به صورت Word. Text قرار می دهیم و در ستون Value چیزی که می خواهیم برای واژه مورد نظر نمایش داده شود را می نویسیم. در ستون سوم که Comment نام دارد می توانیم توضیحاتی را بنویسیم یا ننویسیم. برای مثال در این مثال بالا:
      • AddImage.Text    Add Image   //for xxx.ascx.resx 
      • AddImage.Text   تصویر را اضافه کن //for xxx.ascx.fa-IR.resx 
    9. در این مرحله تا اینجای برنامه را build می کنیم و فایلها و پوشه های مورد نظر را به پرتال اضافه می کنیم و ماژول را نصب می کنیم. پس روی نام پروژه راست کلیک و سپس build را می زنیم تا فایل dll ماژول تا اینجای کار ساخته شود.
    10. در یک پروژه ی دات نت نیوکی که قبلا نصب و اجرایش کرده اید مثلا روی لوکال ، مرحله به مرحله ماژول را ایجاد می کنیم و اجرا را می بینیم.

      • در مسیر زیر یک پوشه به اسم ماژولمان می سازیم و پوشه های App_LocalResources  و Images را به همراه فایل های ascx - که فعلا یک فایل داریم - از پوشه ی پروژه مان به این پوشه اضافه می کنیم:
        • Portal Root Folder > Desktop Module Folder > Your Module’s Folder Name
      • فایل dll که به نام ماژولمان هست را از پوشه ی bin پروژه مان برداشته و در پوشه ی bin پرتال کپی می کنیم.
      • سایت را اجرا کرده و وارد پرتال می شویم و به قسمت تعریف ماژول از منوی میزبان (Host) رفته و ایجاد ماژول جدید را انتخاب می کنیم.
      • در صفحه ای که باز می شود  Create Module From: Control را انتخاب کرده و صبر می کنیم تا صفحه یه بار پست بَک شود تا آیتم های آن بارگذاری شوند و بعد آیتم های Module Folder   و Module Name را انتخاب و کامل می کنیم و در صورت تمایل می توانید تیک مربوط به ساخته شدن صفحه ی تست Add Test Page را هم بزنید که روال انجام کار را مشاهده نمایید.

        در انتها لینک ایجاد ماژول جدید را کلیک نمایید.

      • بعد از این کار دوباره برمی گردیم به صفحه تعریف ماژول و کنار ماژولی که ایجاد کردیم روی  لینک ویرایشش کلیک می کنیم و وارد ویرایش ماژول می شویم. در قسمت Module Controls  با کلیک روی Add Module Control کنترل مربوط به این صفحه ای از ماژول که ایجاد کردیم را اضافه می کنیم. وارد صفحه ی افزودن کنترل می شویم.
      • در صفحه ی افزودن کنترل، دو حالت داریم:
        • یکی اینکه صفحه ی ما، صفحه ی اصلی ماژول باشد مثل صفحه ای که الان اضافه کردیم که در اینصورت فقط آیتم های زیر باید کامل شوند: Module ،Definition ، Source ، Type =View .
        • برای صفحه های بعدی ای که اضافه می کنیم، علاوه بر موارد قبل باید Key  و  Title هم کامل شوند. برای key  باید دقیقا همان عباراتی را که جلوی EditUrl در تابع صفحه ی اصلی ماژول نوشتیم بنویسیم . البته این برای صفحه ی Settings ماژول فرق دارد و در صفحه ی مربوط به تنظیمات key = Settings خواهد بود. به جای Title هم یک عنوان برای ماژول که معمولا همان نامش هست را می نویسیم.
        • نکته ی مهم این است که در صفحاتِ به جز صفحه ی اصلی ماژول Type = Edit انتخاب می شود.
        • حالا می توانید با مراجعه به صفحه ی تست که به منوها اضافه شده است کلید اضافه شده در فِلش کوچک باز شونده ماژول را مشاهده نمایید...
        • منبع:هیراد
        • دانلود
    موافقین ۰ مخالفین ۰ ۹۳/۰۳/۱۹

    نظرات (۵)

    عالی بود

    ۲۵ مهر ۹۵ ، ۰۰:۲۷ سعید بخشی
    مزخرف ترین سی ام اس جهان همین دات نت نیوک هست

    39 صفحه باید کتاب و مطلب باید بخونی تا یک hello world ساده برات چاپ کنه
    پاسخ:
    برای سایت دانلود و وبلاگ سی ام اس خوبی نیست ولی برای پرتال عالیه
    ۱۹ آبان ۹۴ ، ۱۰:۰۱ حسین مهدوی
    ممنون لطفا ادامه بدبد
    چرا مطالب را ادامه نمی دهید؟
    عالی بود

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی