آموزش ماژول نویسی دات نت نیوک- بخش اول
- ظاهر
- محتوا
- تنظیمات
از حالا به بعد توضیحات همراه با مثال و در قالب یک نمونه پروژه بیان خواهد شد تا جزئیات بصورت ملموسی قابل درک باشند:
- یک پروژه ی Web Application در ویژوال استودیو بسازید و نام پروژه را همنام با نام ماژولی که می خواهید بنویسید بگذارید.
- فایلها و پوشه های اضافی مثل App_Data و Web Config، Default.aspx را پاک نمایید. فعلا فقط پوشه های Properties و References را نیاز داریم.
- روی پوشه ی 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 رو انتخاب کنید و ...با این روش می توانید ماژول مختص به ورژن های خاصی از نیوک را تولید نمایید.
سپس تب را ذخیره کرده و ببندید. - Assembly name
- پوشه ی بعدی، پوشه ی References است. اینجا باید یک reference اضافه کنیم به نام : DotNetNuke.dll ازکجا؟! از داخل پوشه ی bin پرتالی که قبلا نصب کرده اید. (یا به هر حال پرتالی که می خواهید نصب کنید. مثلا اگر می خواهید از پکیج DNN 5. به بالا استفاده کنید و فریم ورک را هم 3.5 انتخاب کرده اید dll ی که اینجا ادد می کنید باید از داخل همان پکیج باشد.)
- Right-Click on References > Add Reference > Browse tab > Look in ….
- یک یوزر کنترل (Web user control) همنام با پروژه مان، به پروژه اضافه می کنیم :
- Right-Click on project name > Add > New Item > WebUserControl.ascx
نکته: اولین صفحه که بیس اصلی ماژول هست و Action Command ها را اینجا تعریف می کنیم بایستی همنام ماژول تعریف شود. (روال معمول به این صورت است) - پس فعلا اولین صفحه مان که صفحه ی اصلی ماژول هست را می نویسیم.همان طور که می دانید یوزر کنترل ها صفحات Code behind دارند که کدهای کلاس برنامه آنجا قرار دارند (مثلا در زبان سی شارپ Name.ascx.cs ها) که فعلا ما با این فایلها کار داریم نه فایلهای name.ascx که کدهای مربوط به دیزاین و کنترل های مورد نیاز مثل لیبل (Label) و باتن (Button) و .. در آن قرار می گیرد.
خوب صفحه ی ascx.cs را باز کنید:
اینجا دو نکته داریم:-
using ها (که با توجه به Reference ی که اضافه کردیم ، namespace هایی که برای نوشتن ماژول لازم هستند را اضافه می کنیم) برای صفحه ی اصلی
بعنوان مثال :
-
using
DotNetNuke;
-
using
DotNetNuke.Common;
-
using
DotNetNuke.Entities.Modules;
-
using
DotNetNuke.Services.Localization;
-
using
DotNetNuke.Entities.Modules.Actions;
-
-
ارث بری : برای صفحه ی اصلی مان که از Action ها استفاده می کنیم از دو کلاس و در واقع از یک Class (به نام PortalModuleBase ) و یه Class Interface (به نام : I Actionable ) ارث می بریم :
-
public
partial
class
YourClassName : PortalModuleBase,IActionable
-
نکته: برای صفحه های دیگر به جز صفحه تنظیمات که در جای خودش راجع به آن صحبت خواهیم کرد، فقط کافی ست که کلاس هایمان از کلاس PortalModuleBase ارث ببرند.
-
- برای تعریف کلیدها نیاز به تابع داریم که ساختار کلی آن برای ماژول های متفاوت ، مشابه هست و این تابع را اولِ کلاس و قبل از تابع Page_Load تعریف می کنیم.
public
Entities.Modules.Actions.ModuleActionCollection ModuleActions
{
get
{
Entities.Modules.Actions.ModuleActionCollection _actions =
new
Entities.Modules.Actions.ModuleActionCollection();
//------------------تعریف هر کلید
ModuleAction AddImage =
new
ModuleAction(GetNextActionID());
AddText.Title = Localization.GetString(
"AddImage"
,LocalResourceFile);
AddImage.CommandName = ModuleActionType.PrintModule;
AddImage.CommandArgument =
""
;
AddImage.Icon =
"../DesktopModules/YourModuleName/images/OK.gif"
;
AddImage.Url = EditUrl(
"AddImage"
);
AddImage.Secure = Security.SecurityAccessLevel.Edit;
AddImage.UseActionEvent =
true
;
AddImage.Visible =
true
;
AddImage.NewWindow =
false
;
_actions.Add(AddImage);
//------------------
return
_actions;
}
}
- در خط 12 تعریفِ _action را داریم که ثابت است و در واقع یک مجموعه تعریف می کنیم که کلیدهایمان را چند خط پایین تر با تابع Add به آن اضافه می کنیم. و در آخر هم تابع ،کل مجموعه کلیدها یا همون Action Collection ها را برمی گرداند.
- : قطعه کدی که بین علامت کامنت قرار گرفته است برای تعریف هر کلید تکرار می شود که آیتم های دیگری هم می تواند داشته باشد . مهم ترین هایش را بررسی می کنیم:
- در خط 16 کلید مورد نظرمان را تعریف می کنیم و درخط های بعدی آیتم های مورد نیازمان را به آن اختصاص می دهیم.مثلا عنوان کلید (در واقع Action مان) و آیکن آن ، آدرسی که هدایت می کند و ...
- در خط 17 عنوان Action ماژولمان را مشخص می کنیم (که اگر دقت نمایید برایش یک Namespace هم تعریف کرده بودیم) که واژه هایی که اینجا نوشته می شود متن کلید است که شما بعدا در اجرای ماژول آنها را می بینید و برای نمایشش باید این واژه به فایل Resx مربوط به صفحه ی مورد نظرمان اضافه شود . برای ترجمه ی این واژه ها به فارسی (یا هر زبانی) باید این کلمه به فایل Resx مربوط به آن زبان مثلا برای فارسی Fa-IR.Resx هم اضافه و هم ترجمه شود .توضیح اینکه چگونه این کار را انجام دهید در شماره 8 گفته شده است.
- در خط 20 می توانیم یک آیکن برای کلیدمان تخصیص بدهیم. برای این کار می توانیم یک پوشه به نام Images به پروژه ی ماژولمان اضافه کنیم و تصویرهایمان را آنجا قرار دهیم.
- در خط 21 اسمی که برای url می نویسیم در واقع اسم صفحه ای خواهد بود که این کلید ما را به آنجا هدایت خواهد کرد. در مراحل بعدی باید یک یوزر کنترل دیگر دقیقا به همین نام به پروژه اضافه کنیم که برای مثال اینجا ما اسمش را گذاشتیم AddImage یعنی می خواهیم یه ماژول داشته باشیم که یک سری تصویر را نمایش بدهد و با کلیک روی این کلید به صفحه ای هدایت می شویم که امکان اضافه کردن تصاویر را به ما می دهد.
- و اما اضافه کردن فایلهای Resx : برای این کار اول یک پوشه ی App_ Local Resources به پروژه اضافه می کنیم:
- Right-Click on project name > Add ASP.NET Folder > App_LocalResources
- Right-Click on App_LocalResources > Add > New Item > Resources File
- XXX.ascx.resx
- XXX.ascx.fa-IR.resx
- AddImage.Text Add Image //for xxx.ascx.resx
- AddImage.Text تصویر را اضافه کن //for xxx.ascx.fa-IR.resx
- در این مرحله تا اینجای برنامه را build می کنیم و فایلها و پوشه های مورد نظر را به پرتال اضافه می کنیم و ماژول را نصب می کنیم. پس روی نام پروژه راست کلیک و سپس build را می زنیم تا فایل dll ماژول تا اینجای کار ساخته شود.
-
در یک پروژه ی دات نت نیوکی که قبلا نصب و اجرایش کرده اید مثلا روی لوکال ، مرحله به مرحله ماژول را ایجاد می کنیم و اجرا را می بینیم.
- در مسیر زیر یک پوشه به اسم ماژولمان می سازیم و پوشه های 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 انتخاب می شود.
- حالا می توانید با مراجعه به صفحه ی تست که به منوها اضافه شده است کلید اضافه شده در فِلش کوچک باز شونده ماژول را مشاهده نمایید...
- منبع:هیراد
-
دانلود
- در مسیر زیر یک پوشه به اسم ماژولمان می سازیم و پوشه های App_LocalResources و Images را به همراه فایل های ascx - که فعلا یک فایل داریم - از پوشه ی پروژه مان به این پوشه اضافه می کنیم:
اگر می خوای با دات نت کار کنی بهتره elanat framework نصب کنی
ماژول برای elanat می سازی در عرض یک ثانیه