Tuesday, February 07, 2012
Retabbed
Login | Register
아티클
  Search
닷넷누크 공지사항 모듈분석-[1]
닷넷누크 공지사항 모듈분석-[1]

닷넷누크의 모듈을 개발하기 위해서는 닷넷누크 코어에 포함된 기본 모듈들을 분석해 보는 것이 가장 빠른 방법이다. 기본 모듈 중에서 대표적으로 많이 사용되는 공지사항 모듈 분석을 통해서 닷넷누크 모듈개발을 토대를 다질 수 있을 것이다.

공지사항 모듈은 DotNetNuke/DesktopModules/Announcements 폴더에 있다. 닷넷누크 프로젝트 솔루션을 열고 이 폴더에 있는 프로젝트 파일을 연다. 해당 모듈 프로젝트만 따로 열수도 있지만 닷넷누크의 소스를 같이 보면서 작업하는 것이 한결 도움이 될 경우가 많으므로 가능하면 닷넷누크 솔루션 안에서 모듈은 개발하는 것이 좋다.

공지사항 모듈의 메인 프로그램은 Announcements.ascx 이다. Announcements.ascx.vb를 살펴보자.

Public MustInherit Class Announcements

 

               Inherits Entities.Modules.PortalModuleBase

               Implements Entities.Modules.IActionable

공지사항의 메인 클래스인 Announcements는 지난번 모듈개발 기초에서 살펴본 바와 같이 PortalModuleBase를 상속하고 있다. 모든 닷넷누크 모듈은 이 클래스를 상속하여 만들어야 한다는 것을 잊지 말자. 그 아래 에서는 IActionable을 구현한다고 되어 있는데 이것은 모듈 메뉴에 항목을 추가 하고자 할 경우에 사용된다. 구현 부분을 보자.

Public ReadOnly Property ModuleActions() As Entities.Modules.Actions.ModuleActionCollection Implements Entities.Modules.IActionable.ModuleActions

            Get

                Dim Actions AsNew Entities.Modules.Actions.ModuleActionCollection

                Actions.Add(GetNextActionID, Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile), Entities.Modules.Actions.ModuleActionType.AddContent, "", "", EditUrl(), False, Security.SecurityAccessLevel.Edit, True, False)

                 Return Actions

            End Get

        End Property

ModuleActionCollection을 생성하고 여기에 항목을 추가하는 것을 볼 수 있다. 매우 긴 인수를 가진 함수이다. 첫 번째 인수는 메뉴항목의 ID를 정해 주는 것이다. 모듈이 생성되면 기본적인 메뉴들이 이미 존재하고 있으므로 ID는 GetNextActionID를 통하여 얻어온다. 다음 인수는 메뉴에 사용될 문자열인데 실제로 화면상에 표시될 문자열이다. 여기서는 또 다른 함수를 통하여 이 문자열을 얻어오고 있는데 현재 닷넷누크에서 설정된 언어에 맞는 문자열을 얻어오기 위해서 사용한다. 자세히 살펴보면,

Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile)

로 되어 있는데 이 함수는 첫 번째 인수로 현재 언어로 바꿀 항목의 이름을 주고 그 다음은 언어번역을 위한 리소스 파일의 위치를 정해 준다. 여기서 사용된 LocalResourceFile은 모듈 폴더내의 App_LocalResources 폴더를 가리킨다. Entities.Modules.Actions.ModuleActionType.AddContent는 상수로 “AddContent.Action”이라는 문자열이다. 그러면 이 항목에 대한 실제 문자열은 어디에 있는가? App_LocalResources폴더에 Announcements.ascx.resx파일에 존재한다. 이 파일을 열어보자.

< data name ="AddContent.Action">

        < value >Add New Announcement</value>

</ data >

라는 항목을 찾아 볼 수 있다. 즉 AddContent.Action은 “Add New Announcement”를 의미하는 것이다. 그러므로 Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile) 함수는 현재 닷넷누크 설정이 영어라면 “Add New Announcement”를 돌려주고 한글이라면 “공지사항 추가”라는 문자열을 돌려주게 된다. 한글에 대한 설정은 Announcements.ascx.ko-KR.resx파일에 있다.(한글팩을 설치한 경우)

세 번째, 네 번째, 다섯 번째 인수는 설명을 생략한다. 이 인수들은 현재로서는 중요하지 않다. 여섯 번째 인수는 EditUrl()이라고 되어 있는데 이 함수는 현재 모듈에서 Edit 키를 가진 컨트롤을 지정하는 URL을 만들어 준다. Edit키가 뭔지 알려면 dnn 파일을 봐야 한다.

<control>

      <key>Edit</key>

      <title>Edit Announcements</title>

      <src>DesktopModules/Announcements/EditAnnouncements.ascx</src>

      <type>Edit</type>

      <helpurl>http://www.dotnetnuke.com/default.aspx?tabid=787</helpurl>

</control>

<control>항목 중에서 <key>항목을 보면 Edit 라는 값을 가진 것이 있다. 이것이 바로 Edit 키이다. 즉 EditUrl()이라는 함수는 DesktopModules/Announcements/EditAnnouncements.ascx 라는 컨트롤을 로드 하도록 하는 URL을 생성하는 것이다. 실제 실행을 하여 어떤 URL이 생성되는 살펴보면,

http://localhost/DotNetNuke_3.2.0/Home/tabid/36/ctl/Edit/mid/372/Default.aspx

식의 문자열을 반환하는 것을 볼 수 있다. 언뜻 보면 URL이 좀 이상한데 이것이 닷넷누크에서 사용하는 Friendly URL이라는 것이다. 즉 위의 URL는 통상적으로는

http://localhost/DotNetNuke_3.2.0/Default.aspx?tabid=36&ctl=Edit&mid=372

식으로 표시되는 것인데 검색엔진이 쉽게 인덱싱을 하고 사람이 볼 때도 일반적인 폴더형식으로 볼 수 있도록 URL을 변형한 것이다. 이러한 URL변형은 URL Rewriter라는 모듈이 하고 있는데 이 부분은 차후에 자세히 살펴볼 기회가 있을 것이다. 어쨌든 이 URL은 현재 표시해야 될 페이지(tabid)와 모듈(mid), 컨트롤(ctl)을 모두 표시하고 있는 것이다. 이러한 URL을 닷넷누크 메인 페이지에서 받으면 이 URL을 적절히 파싱하여 해당 페이지를 Skin에 올려주는 것이다. 즉 닷넷누크의 모든 페이지는 닷넷누크 메인 폴더에 있는 Default.aspx를 열도록 되어 있으며 여기에서 필요한 스킨, 컨테이너, 컨트롤들을 동적으로 로드하는 방식을 사용하고 있는 것이다.

다음 인수를 보자. Security.SecurityAccessLevel.Edit 는 이 메뉴에 접근 할 수 있는 보안 수준을 정해 주는 것인데 여기서는 수정(Edit)권한이 있어야만 이 메뉴에 접근이 가능하다는 것이다. 수정권한이란 모듈 수정권한을 말한다. 모듈의 권한 설정은 모듈 설정에 들어가면 볼 수 있다.(모듈메뉴->설정) 사용자 측면에서 보면 공지사항의 게시는 공지사항모듈 수정권한이 있는 자만 할 수 있다는 뜻이 되는 것이다.







 


 

 


게시일자 Wednesday, December 28, 2005 (Archive on Wednesday, January 04, 2006)
게시자: 사이트관리자  저자: 불나방
돌아가기

평점:
평가:
평가 올리기

현재평점평균:
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게