SharePoint 2010에서의 Chart

SharePoint 2010 2012.03.09 08:30 Posted by 정홍주


SharePoint 2010
에서의 Chart

Chart SharePoint 2010에서 나타내기 위해서는 여러 가지 방법이 있습니다.

l 차트 웹 파트

l Excel 액세스 웹 파트

l 사용자 지정 웹 파트(웹 파트, 비쥬얼 웹 파트)

l Silverlight Chart 웹 파트

Chart의 데이터는 Excel 데이터이거나 SharePoint의 목록에 있을 수도 있으며, XML이나 서비스를 통해서 액세스할 수도 있으며 또는 코드에 값을 고정(하드코드)해둘 수 도 있습니다.

여기서는 ASP.NET Chart 컨트롤을 이용하여 SharePoint 2010 웹 파트를 구성해보도록 하겠습니다.

ASP.NET 차트에 대한 내용은 아래 링크를 통해서 Chart gallery 프로젝트를 통해서 살펴볼 수 있습니다.

http://archive.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=4418

위의 ASP.NET Chart 컨트롤을 통해서 SharePoint 2010에 비쥬얼 웹 파트를 구성해서 처리해보도록 하겠습니다. SharePoint 2010의 데이터에 액세스하기 위해서는 SharePoint Object Model, Client Object Model, REST Service를 통해서 가능합니다.
(
http://redju.tistory.com/23)

비쥬얼 웹 파트 프로젝트를 생성하고 솔루션 탐색기에서 System.Web.DataVisualization 어셈블리를 참조 추가합니다. 그리고 위 그림의 Sample 프로젝트에서 html 소스와 c# 소스를 복사하고 일부를 원하는 대로 수정합니다.

ChartTypes\PieDoughnutCharts\3DPie\pie3d.aspx

3D의 경우 속성이 달라서 아래와 같이 수정했습니다.

// Enable 3D

Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D= true;

웹 파트를 배포한다고 해서 바로 보여지지는 않습니다. 해당 SharePoint 웹 응용 프로그램의 Web.Config를 아래와 같이 수정합니다.

l System.Web 아래의 httpHandlers

<httpHandlers>

<add path="ChartImg.axd" verb="GET,HEAD,POST" preCondition="integratedMode" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />

l appSettings

<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\Temp\;" />

</appSettings>

l System.WebServer 아래의 handlers

<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

최종 결과는 아래와 같습니다.



신고

SharePoint 2010 ULS Viewer

SharePoint 2010 2012.02.16 08:30 Posted by 정홍주

ULS Viewer

SharePoint 2010의 오류가 발생할 경우 상관관계 ID를 통해 오류 로그를 액세스하게 됩니다.

C 드라이브일 경우 위치는 아시다시피 아래와 같습니다.

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS

오류를 볼 경우 찾기를 통해 해당 상관관계 ID를 찾게 되는데요.

ULS Viewer를 쓰시면 오류만 필터링하거나 해서 트러블슈팅하실 때 도움이 될 것 같습니다.

아래 링크를 참고하셔서 다운로드 받아서 서버에서 실행하면 됩니다.

http://archive.msdn.microsoft.com/ULSViewer

파일 메뉴의 Open From -> ULS를 통해서 로그를 확인이 가능하며 Level High 보시면 필터링해서 오류등의 결과 확인에 더 도움이 됩니다.


신고

SharePoint 2010 PowerShell- 개발자

SharePoint 2010 2011.10.04 08:30 Posted by 정홍주

SharePoint 2010 PowerShell- 개발자

제 생각에는 SharePoint 2010 관리 셀이라고 관리자만 사용한다고 생각하시면 안될 것 같습니다.

아래의 SharePoint 2010 관리 셀 명령 프롬프트를 이용해서 개발자에게도 상당한 이점을 제공해주는 것 들 중 일부만 정리해보겠습니다.

추가로 필요한 설명이나 예제를 보고 싶다면 위의 그림처럼 Get-Help 를 사용하시면 됩니다. 예제를 보고 싶다면 –examples 를 추가하시면 됩니다.

자 그럼 첫 번째 내용입니다.

l 개발자 대시보드

$svc=[Microsoft.SharePoint.Administration.SPWebService]::ContentService

$ddsetting=$svc.DeveloperDashboardSettings

$ddsetting.DisplayLevel=[Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel]::OnDemand

$ddsetting.Update()

$svc=[Microsoft.SharePoint.Administration.SPWebService]::ContentService

$ddsetting=$svc.DeveloperDashboardSettings

$ddsetting.DisplayLevel=[Microsoft.SharePoint.Administration.SPDeveloperDashboardLevel]::Off

$ddsetting.Update()

개발자 대시보드를 활성화하면 상당히 유용한 정보를 손쉽게 얻을 수 있으며 병목 탐지가 원활해지게 됩니다. SQL 구문까지도 알 수 있습니다. 개발자 대시보드의 모드는 ON, OnDemand, Off 3가지가 있습니다. 저희가 평상시 보는 모드가 Off 이며 On 시키면 모든 사이트에서 On 됩니다. 특정사이트만 On 시킬 수는 없습니다.

위의 명령어를 여러 줄 복사해서 관리 셀에서 붙여 넣기 하면 됩니다.

l 사이트 생성

필요에 따라 동적으로 여러 사이트를 구성해야 할 필요가 있을 수 있습니다. 그리고 해당 사이트 모음은 해당 데이터베이스로 지정되게 해야 할 경우 아래 구문으로 실행할 수 있습니다.

New-SPContentDatabase -Name WSS_Content_Intranet_Sales -WebApplication http://sp.webtime.co.kr

$spsite = New-SPSite -Url "http://sp.webtime.co.kr/sites/Sales" -ContentDatabase WSS_Content_Intranet_Sales -OwnerAlias CONTOSO\hongju -Template "STS#0“

New-SPContentDatabase 를 통해 Content 데이터베이스를 생성하고 New-SPSite 를 통해 사이트 모음을 만들면서 생성한 데이터베이스와 연결하고 있습니다. 중앙관리에서는 할 수 없는 상황이죠.

l 목록 데이터 액세스

필요에 따라 테스트 데이터를 생성해야 할 경우 개체 모델을 통해서 하는 것보다 PowerShell이 더 편할 수 있습니다. 개발자 환경에서 테스트하고 통합 개발 서버에 데이터를 생성해서 테스트 할 수 있습니다. 목록에 기본 데이터를 생성할 경우에도 사용할 수 있습니다.

$site = Get-SPSite "http://sp.webtime.co.kr/sites/Sales"

$web = $site.rootweb

$list = $web.Lists["공지 사항"]

$i = 1

do {

#add item

$newitem = $list.items.Add()

$newitem["Title"] = "Title -" + $i.ToString().PadLeft(4, "0");

$newitem["Body"] = "Body-" + $i.ToString().PadLeft(4, "0");

$newitem.Update()

$i++

}

while ($i -le 100)

$web.dispose()

$site.dispose()

l WSP 배포

필요에 따라 WSP를 중앙 관리를 열어서 배포하지 않고 PowerShell로 배포할 수 있습니다.

Add-SPSolution D:\SP10_DEV\VisualProduct.wsp

Install-SPSolution -Identity VisualProduct.wsp –GACDeployment -Force –AllWebApplications

Uninstall-SPSolution -Identity VisualProduct.wsp -AllWebApplications

Remove-SPSolution -Identity VisualProduct.wsp

위에서 일부 내용을 살펴보았는데 정말 많이 있습니다. 다 확인할 수는 없는 상황이고 필요하다면 Get-Help 를 통해 살펴보시고 액세스하시면 될 것 같습니다.


신고

외부 콘텐츠 형식(3)-Visual Studio 2010

SharePoint 2010 2011.09.27 08:30 Posted by 정홍주

외부 콘텐츠 형식(3)-Visual Studio 2010

외부 콘텐츠 형식을 Visual Studio 2010에서 구성해보도록 하겠습니다. Visual Studio 2010을 이용하여 SharePoint 빈 프로젝트를 생성하고 새 항목 추가에서 비즈니스 데이터 연결 모델을 선택하고 “ProductModel” 로 이름을 지정합니다.

생성된 결과는 아래와 같습니다.

BDC 디자인 창의 Entity1“Product”로 변경합니다. 그리고 Identifier1 속성을 “ProductID” 로 변경하고 속성 창에서 System.Int32로 데이터 형식을 변경합니다.

솔루션 탐색기의 Entity1.cs 파일을 Product.cs 로 변경하고 아래와 같이 속성을 추가합니다. 실제 외부 목록이나 외부 데이터 열에서 표시할 데이터의 속성이며 외부 데이터 원본으로부터의 데이터를 가져와서 ReadList, ReadItem 메서드에서 처리될 클래스 속성입니다.

BDC 탐색기로 이동해서 ReadItem, ReadList 속성을 위의 클래스에 맞게 수정하면 ProductService.cs 클래스의 메서드가 변경되게 됩니다.

BDC 탐색기가 안보인다면 보기 메뉴의 다른 창에서 BDC 탐색기를 클릭하거나 bdcm 파일에서 BDC 탐색기 링크를 클릭합니다.

ReadItem 메서드의 @id 부분을 @ProductID로 변경하고 Identifier1 ProductID 로 변경하고 속성 창에서 데이터 형식을 System.Int32로 변경합니다.

@returnParameter 를 확장해서 Entity1 Product 로 변경하고 속성 창에서 데이터 형식은 현재프로젝트의 Product 클래스를 선택합니다. 그리고 BDC 탐색기의 Product 를 오른쪽 클릭하여 TypeDescriptor 추가를 클릭하여 속성을 추가하고 이름과 데이터 형식을 Product 클래스의 속성과 일치시켜줍니다.

그리고 BDC 탐색기의 ReadList 메서드 아래의 EntityList ProductList로 이름을 변경하고 형식 이름을 현재 프로젝트의 Product 클래스를 지정합니다. 그리고 위에서 생성된 Product 를 오른쪽 클릭하여 복사하고 ReadList 메서드 아래 ProductList 에 붙여넣기 합니다.

이제 솔루션 탐색기의 ProductService.cs 클래스의 코드로 이동하면 Entity1에 대한 기존 메서드 에 해당하는 부분은 삭제합니다.

이제 외부 데이터 원본을 연결하여 해당 제품과 제품 목록을 반환되도록 ADO.NET 코드를 아래와 같이 작성합니다.

프로젝트를 배포하고 BCS 서비스 응용 프로그램에 보면 Product가 아래처럼 생성된 것을 알 수 있습니다. 크롤링은 아니오로 되어 있으며 검색을 위해서는 추가 메서드를 구성해야만 합니다.


Visual Studio 2010을 통해 비즈니스 데이터 연결 모델을 통해 생성한 외부 목록 결과입니다.

Visual Studio 2010의 비즈니스 데이터 연결 모델에 대한 내용을 간단하게 알아보았습니다. 필터와 검색 등에 대한 내용은 더 추가해야 합니다. 다양한 외부 데이터 원본에 대해서 Visual Studio 2010을 통해 복잡한 로직을 구성하여 외부 데이터를 손쉽게 연결할 수 있습니다.



신고


외부 콘텐츠 형식(2)-SharePoint Designer 2010 (3)

이번 내용은 필터를 생성하는 내용을 다루어 보도록 하겠습니다.

SharePoint 2010에서의 열 만들기의 경우 외부 데이터 형식을 선택할 수 있습니다. 그러면 사용자들은 제품 ID나 제품 이름으로 검색해서 데이터를 사용할 수 있습니다. 외부 데이터를 사용하지 않는다면 별도의 목록으로 만들어두어야 하며 데이터를 동기화 해주어야 하고 통합시켜주어야 해서 작업이 더 많아질 수 있습니다. 또한 직접 입력한다면 오타 등으로 인해 데이터 무결성이 떨어지게 됩니다.

SharePoint Designer 2010을 통해 열의 외부 데이터 형식을 손쉽게 접근해 볼 수 있습니다.

자 그러면 SharePoint Designer 2010의 외부 콘텐츠 형식을 생성하고 데이터 원본에 연결합니다.

외부 콘텐츠 형식의 이름은 ProductsFilter로 지정했습니다. 데이터 원본은 SQL Server를 선택하고 AdventureWorks 데이터베이스를 연결했습니다.


데이터 원본 탐색기에서 Product 테이블을 오른쪽 클릭해서 새 항목 읽기 작업”,”새 목록 읽기 작업을 선택합니다. 열의 외부 데이터 형식이므로 생성, 삭제 , 수정에 대한 작업은 필요 없습니다.

새 항목 읽기 작업에서는 별다른 설정이 없으므로 화면은 생략하겠습니다. 관련 데이터를 설정하는 내용입니다.

Product 테이블을 오른쪽 클릭하여 새 목록 읽기 작업을 선택합니다. 목록 읽기 마법사의 처음 화면에서는 다음을 클릭합니다.

필터 매개 변수 구성 화면에서는 필터 매개 변수 추가를 클릭합니다. ProductID 에 대해 필터를 설정하기 위해 추가하려면 클릭링크를 선택합니다. 목록에서 항목을 작성할 때 해당 제품의 ID로 검색하면 해당 외부 데이터가 나타나게 하려고 합니다.

필터 설정 화면에서는 필터 형식은 비교”, 연산자는 같음을 선택하고 확인을 클릭 합니다.

필터 매개 변수 추가를 한번 더 클릭하고 “Name” 필드를 선택합니다. 목록에서 항목을 작성할 때 키워드가 포함된 제품 이름으로 외부 데이터를 검색하려고 합니다.

추가하려면 클릭링크를 선택하여 아래와 같이 필터 형식은 와일드 카드를 선택하고 기본값 여부를 체크하고 확인을 선택합니다. 그리고 기본값에 “*” 를 입력합니다.

아래와 같이 필터 두 개를 추가했고 연산자는 OR로 지정합니다. 아래 오류 및 경고는 제한 필터로 개수를 제한하고 ProductID 필터에 기본값을 설정하면 됩니다만 여기서는 다음으로 넘어가도록 하겠습니다.

다음을 클릭해서 선택 화면에 나오는 내용을 체크해주도로 하겠습니다.

불필요한 열은 체크를 해제하고 ProductID, Name은 선택 컨트롤에 표시를 체크해주고 마침을 선택하고 저장을 해서 외부 콘텐츠 형식을 생성합니다.

새로운 외부 콘텐츠 형식에 대해서 Business Data Connectivity Services 에서 권한을 할당해주어야 합니다. 외부 콘텐츠 형식을 일부 수정해서 저장하면 버전이 달라져 권한 설정을 새로 해주어야 합니다.

제품평가라는 사용자 지정 목록을 생성하고 제품명이라는 열을 추가하면서 열 형식을 “ProductsFilter”로 선택하고 추가 열을 체크해서 화면에 같이 표시되도록 합니다.

제품명을 하나 추가하면 아래와 같은 외부 데이터 화면을 보실 수 있습니다. 제한 필터를 추가해서 200여개 정도로 제한을 해준다면 아래와 같은 붉은색 메시지는 나타나지 않습니다.

필터를 이용해서 제품을 선택한 후 항목을 추가해봅니다. 제품명에 대해서 외부 데이터를 이용해서 효과적으로 관리할 수 있습니다.

제품명에 대해서 외부 데이터를 이용해서 효과적으로 관리할 수 있습니다.

외부 데이터 형식의 필터를 생성하는 내용을 간단히 다루어보았습니다.

신고

SPLINQ 를 통한 페이징

SharePoint 2010 2011.09.13 08:30 Posted by 정홍주

SPLINQ 를 통한 페이징

예전 글에서 SPQuery 통한 페이징에 대해서 다루어 보았습니다. 그리고 LINQ to SharePoint 에 대한 내용도 다루어 보았습니다. 앞부분에서 누락되어 정리해둡니다.

SPLINQ 를 통해서 페이징이 가능합니다. 원래 LINQ에 있는 기능일 뿐입니다. 아래에서 간단히 코드를 통해서 살펴보도록 하겠습니다.

간단히 Title 0에서 Tile 49까지 추가되어 있습니다.

SPMetal 을 이용해서 엔티티 클래스를 생성하고 프로젝트에 엔티티 클래스 파일을 추가했습니다.

자 그럼 1 페이지 코드를 살펴보도록 하겠습니다.

SPLINQ의 쿼리에서 Skip, Take를 사용하고 있습니다. 결과는 다음과 같습니다.

2 페이지의 경우는 int Page=2 라고 바꾸면 됩니다. 아래는 3 페이지의 결과입니다.

항목을 하나 더 추가하고 6 페이지로 가보도록 하겠습니다. 맨 마지막 항목 하나가 보입니다.

SPQuery의 경우보다 더 간단한 듯 합니다~


신고

외부 콘텐츠 형식(2)-SharePoint Designer 2010(2)


앞에 글에 이어 나갑니다.

필터 매개 변수 구성에서는 값을 제한 하거나 와일드 카드를 통해 검색하는 것을 설정합니다. 외부 목록의 경우 값을 제한 하지 않으면 화면에 표시가 되지 않으므로 설정해야 합니다.

필터 매개 변수 추가를 클릭합니다. 그러면 오른쪽 상단의 추가하려면 클릭링크를 볼 수 있습니다. 데이터베이스의 열을 적절히 선택하고 링크를 클릭합니다.

필터 구성 창에서는 필터 형식을 선택할 수 있습니다. 여기에서는 외부 목록을 위해 제한을 선택하고 확인을 클릭합니다.

제한에 대해서는 반드시 제한에 대한 기본값을 지정해야 합니다.

마침을 누르고 저장을 하면 외부 콘텐트 형식을 만들게 되고 Business Data Connectivity Services에 추가되게 됩니다.

외부 콘텐트 형식을 생성했다고 바로 외부 목록 등을 생성해서 이용 할 수는 없습니다. 중앙 관리의 Business Data Connectivity Services 서비스 응용 프로그램에서 개체 사용 권한 설정을 해주어야 합니다.

위에서 생성한 Contacts 를 선택하고 리본 메뉴의 개체 사용 권한 설정을 클릭합니다. 사용자나 그룹을 추가하고 권한을 선택합니다.

팀 사이트로 이동하여 사이트 작업, 기타 옵션에서 외부 목록을 선택하고 만들기를 클릭합니다.

이름을 입력하고 데이터 원본 구성에서 적절한 외부 콘텐츠 형식을 선택하고 확인을 클릭합니다.

그러면 아래와 같은 외부 콘텐츠 형식을 볼 수 있습니다.

외부 콘텐트 형식의 모든 작업 만들기를 선택하였으므로 외부 목록에서 수정하면 해당 데이터베이스의 값이 변경되게 됩니다. 그리고 Office 항목 형식과 오프 라인 사용에 따라서 Outlook의 연락처나 SharePoint Workspace 2010에서의 오프라인 사용도 가능합니다.

수정사항이 발생하여 외부 콘텐트 형식을 수정하면 외부 목록까지 같이 변경되는 것은 아닙니다.

중앙 관리에서 만들어지므로 다른 모든 사이트 모음에서 액세스 가능합니다.

필터의 경우 위와는 별도로 만들어야 할 경우도 있습니다.

다음으로는 필터를 생성하는 내용으로 열 만들기에서 외부 데이터를 이용해보도록 하겠습니다.

신고

외부 콘텐츠 형식(2)-SharePoint Designer 2010(1)

외부 콘텐츠 형식을 만들기 위해 SharePoint Designer 2010을 이용하여 외부 목록을 생성해보도록 하겠습니다.



외부 콘텐츠 형식을 만들기 위해서는 SharePoint Designer 2010에서 사이트를 열어서 생성하게 됩니다.

위의 화면에서 리본 메뉴중의 외부 콘텐츠 형식을 클릭합니다.

이름과 표시이름은 데이터베이스의 테이블 이름과 동일하게 “Contacts”로 지정합니다. 네임스페이스는 이름보다 한 단계 위의 카테고리 개념으로 보면 됩니다. 또한 Office 항목 형식에서 지정한다면 Outlook의 연락처로 연결도 가능합니다. 그리고 SharePoint Workspace 2010에서 오프라인 동기화 사용을 체크할 수 있습니다.

맨 마지막의 외부 시스템을 클릭해서 데이터 원본 설정과 작업을 생성하게 됩니다.



연결 추가를 클릭하면 아래와 같은 화면을 볼 수 있습니다.



데이터 원본 설정에서는 “.NET 형식”, ”SQL Server”, ”WCF 서비스세 가지만 설정할 수 있습니다. 다른 데이터 원본에 대한 요구사항은 Visual Studio 2010을 통해 생성해야 합니다.

SQL Server를 선택하고 필요한 정보를 입력합니다.



보안 저장소 응용 프로그램 ID는 외부 데이터를 통합하는 Business Data Connectivity Services Secure Store Services 와 연관이 있습니다.

데이터 원본이 잘 연결되었다면 데이터 탐색기에서 데이터베이스를 확장해서 Contact 테이프를 오른쪽 클릭해서 모든 작업 만들기를 선택합니다.

마법사에서 작업에 대한 설정을 하게 됩니다.



다음을 클릭하고 외부 항목 선택 컨트롤에 표시하도록 선택한 필드가 없다는 경고에 따라 데이터원본 요소에서 “LastName” 을 선택하고 선택 컨트롤에 표시를 체크하고 다음을 클릭합니다.

Office 항목 형식에서 선택한 것에 따라 마법사에서 선택해야 하는 것은 달라집니다.

글이 길어 바로 이어 쓰도록 하겠습니다.


신고

외부 콘텐트 형식(1) – 소개

SharePoint 2010 2011.08.23 08:33 Posted by 정홍주

외부 콘텐트 형식(1) – 소개

이번 글에서는 개발자들이 접근해야 하는 외부 콘텐트 형식에 관련된 내용입니다.

이전 버전에서는 Business Data Catalog 라는 기능으로 외부 데이터를 SharePoint에 손쉽게 통합을 할 수 있었는데 XML 파일을 생성하는데 도구를 제공하지 않다가 BDC Definition Editor를 제공해서 작업했었습니다.

SharePoint 2010에서는 Business Data Connectivity Services 를 통해 외부 데이터를 손쉽게 통합할 수 있으며 이전 버전보다는 더 많은 기능을 제공하고 있으며 SharePoint Designer 2010 Visual Studio 2010을 통해 개발 도구를 지원해주고 있습니다.

외부 콘텐트 형식으로 이용할 수 있는 내용들을 먼저 알아보도록 하겠습니다. 아래의 아이콘을 보게 된다면 외부 콘텐트 형식이라고 알 수 있습니다.

l 열 만들기에서 열의 정보 형식을 외부 데이터로 선택



l 비즈니스 데이터 관련 웹 파트의 속성

l 사이트 작업의 기타 옵션에서 외부 목록을 생성할 경우

l 차트 웹 파트에서 차트에 데이터 연결할 경우

l 검색 설정에서 검색 데이터 원본을 설정할 경우 (여기서는 아이콘은 나타나지 않습니다.)


l 사용자 프로필에서 BDC를 선택할 경우

Business Data Connectivity Services 서비스 응용 프로그램에 대한 관리 화면은 아래와 같습니다.

아래 화면에서 개체 사용 권한을 설정하거나 BDC 파일을 가져오기 할 수 있습니다.

외부 콘텐트 형식을 생성할 수 있는 도구는 두 가지가 있습니다.

l SharePoint Designer 2010을 통한 방법입니다.

l Visual Studio 2010 SharePoint 프로젝트에서 구성할 수 있습니다.


위 두 가지 방법의 특징을 알아보는 것은 뒤에서 다루도록 하겠습니다. 또한 외부 목록이나 필터필 만드는 것도 뒤에서 다룰 예정입니다. 본 글은 SharePoint 2010에서의 Business Data Connectivity Services 의 외부 콘텐트 형식에 대한 간단한 소개글입니다.


신고

SharePoint 2010 샌드박스 솔루션(2)

SharePoint 2010 2011.08.09 08:30 Posted by 정홍주

샌드박스 솔루션(2)

샌드박스 솔루션에 대한 코드 내용을 한번 살펴보도록 하겠습니다.

Visual 웹 파트 프로젝트는 샌드박스 솔루션을 기본적으로 지원하지 않아 일반 웹 파트로 구성을 해보도록 하겠습니다.

빈 프로젝트를 생성하고(샌드박스 솔루션으로 선택하고) 새 항목을 웹 파트로 추가해서 아래와 같은 코드를 작성해봅니다.

샌드박스 솔루션이지만 코드를 작성하고 빌드, 패키지를 해보면 별 문제 없다는 것을 확인 가능합니다. 해당 사이트 모음의 솔루션 갤러리에 wsp패키지 파일을 업로드하고 활성화합니다.

먼저 결과값을 출력할 Label을 아래와 같이 추가합니다.


l Hello World를 출력한 Button 클래스를 추가하고 이벤트에서 Label에 결과 값을 출력합니다.


물론 잘 됩니다. 일반적인 코딩에서는 별 문제 없습니다.


l SPContext 클래스를 테스트하기 위해 아래와 같이 Button 클래스를 추가하고 이벤트에 코드를 작성합니다.


현재 Context 에 대한 정보이므로 별 문제 없이 잘 됩니다.


l RunWithElevatedPrivileges 를 테스트하기 위해 아래와 같은 코드를 작성하고 이벤트에서 RunWithElevatedPrivileges를 사용해봅니다.


빌드하고 패키지 할 때 까지는 문제 없다가 런타임에서 문제가 발생합니다. 제대로 실행되었다면 결과값이 출력되어야 합니다.


l 위의 코드와 비슷하게 다른 사이트 모음을 방문해보도록 하겠습니다. 물론 권한은 있습니다.


마찬가지로 별 문제 없다가 실행할 경우 문제가 발생합니다.


l 이제 네트워킹을 한번 해보도록 하겠습니다. Google Request를 해보려고 합니다.


오류정보 표시를 클릭해서 좀 더 내려가 보면 System.Net.WebPermission 에 대한 사용 권한을 요청하지 못했다고 문제가 발생합니다. CAS를 적용해주어야 합니다.


l 데이터베이스 Connection Open 해보도록 하겠습니다. 문제없다면 Label Open~ 이라는 글자가 출력되어야 합니다.


TypeInitializationException: 'System.Data.SqlClient.SqlConnection'의 형식 이니셜라이저에서 예외를 Throw했습니다 라는 오류가 발생합니다.

l 마지막으로 SPFarm에 대한 내용을 액세스해보겠습니다.

'Microsoft.SharePoint.Administration.SPFarm' 형식을 로드할 수 없습니다. 라는 오류가 발생합니다.

팜 솔루션으로 배포했을 때는 아무런 문제 없이 진행되는 코드입니다.


샌드박스 솔루션은 코딩과 빌드, 패키지에서는 차이가 없으며 실행시 리소스에 제한적이며 안전하게 동작된다는 것을 아실 수 있습니다.



신고

SharePoint 2010 Sandbox 솔루션(1)

SharePoint 2010 2011.08.02 08:30 Posted by 정홍주


SharePoint 2010 Sandbox 솔루션(1)

SharePoint 2010 프로젝트를 만들려고 하면 팜 솔루션이나 샌드박스 솔루션을 선택하는 창을 보게 됩니다.

Office 365 SharePoint Online 사이트에서는 팜 솔루션으로는 제한되고 Client OM, Silverlight, 샌드박스 솔루션을 위주로 진행하게 됩니다.

샌드박스 루션이 어떤 것인지 좀 더 구체적으로 알아보도록 하겠습니다.


위 화면의 옵션은 프로젝트를 생성할 때 선택이 가능하며 배포하기 전에도 속성을 변경이 가능합니다.

샌드박스 솔루션의 특징은 다음과 같습니다.

l 해당 사이트 컬렉션의 기능에서만 보입니다. 다른 사이트 컬렉션에서는 보이지 않습니다.

l 사이트 컬렉션 소유자가 wsp파일을 솔루션 갤러리에 업로드 할 수 있습니다. 그리고 활성화합니다.

l 보안에 대해 안전하게 사용할 수 있다. 보안에 제한적이라는 의미입니다.

l 리소스가 제한적으로 기본적으로 300 포인트에서만 동작되게 됩니다. 초과하게 되면 임시적으로 중지됩니다. CPU, 데이터베이스 쿼리 등이 리소스에 해당되며 내부적으로 포인트를 계산합니다. 물론 중앙관리에서 포인트를 수정 가능합니다.

l 개발자가 코딩하는 것은 큰 차이 없습니다. 빌드, 디버그, 배포에도 큰 차이 없습니다. 해당 코딩에 대해서는 문제가 있을 경우 런타임에서 에러가 나타나게 됩니다. 전체 개체 모델의 SubSet으로 보면 됩니다.

l SPFarm, SPService, System.Net.HttpWebRequest.Create, SPSite 에서 다른 사이트를 액세스하려고 할 경우, SPSecurity.RunWithElevatedPrivileges, SQL Connection 등은 문제가 발생하게 됩니다. 해당 사이트 컬렉션에서만 놀아야 한다고 보시면 됩니다.

l 모든 프로젝트 템플릿과 프로젝트 항목이 샌드박스 솔루션을 지원하는 것은 아닙니다. (비쥬얼 웹 파트, 사이트 정의, 비즈니스 데이터 연결 모델, 응용 프로그램 페이지 등)

l 페이지 편집에서 웹파트 추가 등 사용하는 것에는 별 차이 없습니다.

l 샌드박스 솔루션을 이용하기 위해서는 중앙관리에서 “Microsoft SharePoint Foundation 샌드박스를 작동하는 코드 서비스서비스를 시작해주어야 합니다.


l w3wp.exe 프로세스에서 운영되는 것이 아니라 SPUCWorkerProcess.exe에서 운영됩니다.


다음 내용에서 샌드박스 솔루션에서 직접 런타임에서 오류가 발생하는 내용을 알아보도록 하겠습니다.

신고

SPQuery 를 통한 페이징

SharePoint 2010 2011.07.26 08:30 Posted by 정홍주

SPQuery 를 통한 페이징

요번 글에서는 페이징에 대한 내용을 다루어 보도록 하겠습니다. 커스터마이징을 통해 List의 데이터를 요구사항에 맞게 보여주게 됩니다. 그럴 경우 Server 개체 모델을 통해서는 SharePoint List의 데이터를 SPQuery 클래스를 이용해 CAML를 통해 쿼리, 정렬, 필터를 처리할수 있습니다.

그런데 트러블슈팅하러 업체에 가서 코드를 보니 전체를 들고 와서 처리하고 있어 간단히 정리해봅니다.

SPListItemCollectionPosition 클래스를 통해 페이징 처리하는 코드의 예를 한번 살펴보도록 하겠습니다. 먼저 아래와 같은 간단한 사용자 지정 목록에 데이터를 50건 입력했습니다. Ref 는 정렬을 하기 위한 내용으로 0~49까지의 값을 가지고 있습니다.

SharePoint OM에서 SPQuery를 통해 RowLimit, Query(Where, OrderBy)를 처리해서 1페이지에 대한 내용을 출력해줄 수 있습니다.

아래 코드의 내용을 보면 10건으로 제한하고 Ref Descending으로 정렬해서 화면에 출력해줍니다. 1 페이지의 경우 아래와 같이 처리하고 2 페이지부터는 페이징이 되도록 처리합니다.


1 페이지에 대한 결과는 아래와 같습니다.

2페이지에 대한 내용은 아래와 같이 처리할 수 있습니다. Lastitem은 직접 입력해서 처리했습니다.


SPListItemCollectionPosition 의 생성자의 매개변수(PageInfo)는 다양한 옵션들(Paged, p_정렬키, Next, Prev) 이 있으며 위의 코드에서는 아래와 같은 내용이 처리됩니다.

Paged=TRUE&p_Ref=40&p_ID=41

결과는 아래와 같습니다.


3페이지의 경우는 lastitem 30으로 해서 실행해보면 됩니다.

물론 페이지 사이즈를 5로 지정해서 테스트할 수도 있습니다.

위의 코드를 기반으로 SPQuery에서 모두 들고 와서 해당 페이지에 대한 내용을 표시해주는 경우 SPListItemCollectionPosition 을 통해 해당 페이지에 대한 내용만 가져와서 표시해 줄 수 있습니다. 실제 SQL 쿼리에서도 SELECT TOP(@NUMROWS)가 처리됩니다.

Client OM에서도 동일한 클래스(SPListItemCollectionPosition) 를 볼 수 있으며 REST 에서도 페이징에 대한 내용을 지원해주고 있습니다.


신고

SharePoint 2010 Service Pack 1 설치

SharePoint 2010 2011.07.18 08:30 Posted by 정홍주

SharePoint 2010 Service Pack 1 설치

서비스 팩을 설치하기 전에 테스트를 해서 이상이 없는지 확인 후 실제 서버에 적용해야 합니다. 또한 14폴더 백업과 팜 백업을 미리 해두어야 합니다. 적용 후 결과를 확인 해보셔야 하며 잘못 되었을 경우 준비를 해두고 진행해야 합니다. 만약 잘못된다면 다 본인 책임입니다.

커스터마이징하거나 개발 사항의 경우 14 폴더의 기본적으로 제공되는 콘텐트(마스터페이지, CSS) 등을 바로 편집했을 경우 서비스 팩이 설치되면 다 덮어써 버릴 수 있습니다. 이번 기회에 제대로 했는지 확인 가능할 것 같군요.

6월 말에 서비스 팩이 출시 되었습니다.
아래 사이트를 방문해서 언어에 맞게 서비스 팩을 다운로드 합니다.

http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=b9fcdc42-eea4-4c08-9169-a9a73e55b8d4&displaylang=ko

실행 파일을 실행하고 동의하면 업데이트가 아래와 같이 진행됩니다. 다 완료되고 나면 재 부팅하시면 됩니다.

서버 재 시작 후 다음 내용을 보시면 설치 여부를 확인 가능합니다.

14.0.6029.1000 이라는 것을 볼 수 있습니다.

테스트 후 이상 없다면 운영 팜에 각각 반영하실 수 있습니다.

서비스 팩을 설치해서 크게 변경된 것은 없지만 기존 화면과 비교해보면 기타 옵션에서 도서관이 없어지고 라이브러리로 변경되어 있는 것을 확인 가능합니다. Connect 사이트에 피드백을 올리긴 했지만 서비스 팩을 설치하면 변경되네요 ^ ^

아래는 기존 사이트의 모습이며 Office 365 사이트도 아래처럼 나옵니다.

오류나 잘못된 사항에 대해서는 맘에만 담아두지 마시고 한국 마이크로소프트나 MVP 에게 얘기해서 반영을 하실 수 있습니다~


 

신고

유효성 검사 – 열, 목록

SharePoint 2010 2011.05.13 08:30 Posted by 정홍주

유효성 검사, 목록


SharePoint 2010
의 목록에서 유효성 검사에 대한 다양한 내용이 있는데 앞에서는 코드를 통한 내용을 살펴보았습니다. 하지만 SharePoint 2010에서는 새롭게 열, 목록에 대한 유효성 검사를 제공하고 있습니다. 웹 페이지를 통해 손쉽게 설정할 수 있습니다.

먼저 열의 유효성 검사에 대한 내용을 알아보겠습니다. 해당 목록의 설정 페이지에서 검사할 열을 클릭하면 아래 부분에 열 유효성 검사라는 링크를 볼 수 있습니다.



확장하면 아래와 같이 보입니다. 간단하게 제목에 “test” 라는 말이 들어오면 메시지를 나타내보도록 하겠습니다. 수식은 유효한 식을 나열하는데 SQL 구문과 유사하게 작업할 수 있으며 수식이 거짓인 경우 사용자 메시지가 나타나게 됩니다.



실행해서 결과를 테스트합니다.


필수 열인데 값을 입력하지 않거나 정수 형식인데 문자를 입력하면 기본적으로 열 유효성 검사가 수행됩니다. 간단하게 열 유효성 검사를 확인할 수 있습니다.

이제 목록의 유효성 검사를 알아봅니다. 열 유효성 검사에서는 다른 열을 참조할 수 없습니다. 목록에서는 다른 열과 비교하여 검사할 수 있습니다. 목록의 유효성 검사는 해당 목록의 설정 페이지에 보면 일반 설정에 유효성 감사 설정이라는 메뉴를 살펴볼 수 있습니다. 클릭하면 아래와 같은 화면을 볼 수 있습니다.

공지사항의 만료 일자와 만든 날짜를 비교해서 만든 날짜보다 작을 경우 메시지를 나타내게 유효성 검사를 설정 할 수 있습니다.


과거 일자를 만료 날짜로 설정하면 아래와 같은 결과를 볼 수 있습니다.

코딩 없이 열, 목록 유효성 검사를 손쉽게 처리한 내용을 살펴보았습니다.


신고


유효성 검사이벤트 수신기 Custom Alert

SharePoint 2010의 목록에서 유효성 검사에 대한 다양한 내용이 있는데 앞에서는 Custom Error Page Redirect 시켰지만 여기에서는 Custom Alert을 나타내도록 해보겠습니다. 대화상자로 열기가 아닌 경우에는 Custom Alert이 더 효과적일 수 있습니다. 실무에서 비슷한 요구사항이 있어 정리를 해봅니다.



이벤트 수신기를 생성하는 등의 내용은 동일하니 설명은 생략하겠습니다.

관련 내용은 아래 링크를 참조하십시오.

http://redju.tistory.com/48

이벤트 수신기에서 유효성 검사에 맞지 않을 경우(잘못된 입력일 경우)의 코드를 아래와 같이 수정합니다.

l HttpContext를 이용하는 방법


l properties.RedirectUrl를 이용하는 방법


위의 방법 둘 다 요청된 주소를 Get 방식으로 Custom Error 페이지로 전달해주고 있습니다.

CustomError 페이지에서는 Get 방식을 검사하여 eventError 인 경우 Alert으로 메시지를 나타내고 요청된 주소를 다시 보여주게 됩니다.

자 잘못된 입력일 경우 Custom Alert를 살펴보시죠~

확인 버튼을 누르면 원래 요청된 페이지로 이동합니다.

간단하게 유효성 검사의 일환으로 Custom Alert을 살펴보았습니다.

신고

이번 내용은 유효성 검사에 대한 내용을 다루어 보겠습니다.

유효성 검사는 코딩 없이 할 수 있도록 SharePoint 2010에서는 제공하는 것도 있으며 이벤트 수신기를 통해서도 처리할 수 있습니다. 기본적으로 제공되는 것은 다음에 다루고 이벤트 수신기를 이용한 Custom Error page 에 대한 내용을 다루어 보겠습니다. 

이벤트 수신기에 대한 일반적인 내용은 앞에서 이미 다루었고 아래 링크를 참조하면 됩니다.

http://redju.tistory.com/13

 공지 사항의 제목에 ‘test’ 라는 값을 입력하면 Custom Error Page Redirection 되는 내용을 알아보도록 하겠습니다.

Visual Studio 2010을 이용해서 이벤트 수신기를 생성합니다. 

이벤트는 목록 항목의 항목 추가중(Adding) 이벤트를 생성하도록 하겠습니다. 

Visual Studio 2010SharePoint 2010 도구는 기본적인 여러 사항을 다 생성해주고 로직에만 신경쓸 수 있도록 개발자 경험을 향상시켜준 것을 이벤트 수신기를 통해 알 수 있습니다.

생성된 이벤트 코드를 볼 수 있습니다. 코드에는 제목을 검사하여 맞지 않다면 Custom Error Page Redirect 시켜보도록 하겠습니다. 이전 버전에서는 System.Web 의 클래스를 통해서 Redirect 되도록 처리해야만 했지만 SharePoint 2010에서는 properties 가 기본적으로 제공되고 있습니다.

아래와 같은 코드를 작성합니다.

public override void ItemAdding(SPItemEventProperties properties)

       {

           base.ItemAdding(properties);

 

           if (properties.AfterProperties["Title"].ToString().ToLower() == "test")

           {

               properties.Status = SPEventReceiverStatus.CancelWithRedirectUrl;

               properties.RedirectUrl = "/_layouts/EventDemo/CustomError.aspx";

           }

       }

 

물론 응용 프로그램 페이지를 통해 에러를 표시해주어야 하겠죠. 

이벤트 수신기를 특정 공지사항에 연결하고 응용 프로그램 페이지에 에러 내용을 표시해줍니다. 또는 Get 방식으로 매개변수를 받아 추가적인 처리가 가능합니다.

배포해서 결과를 테스트해봅니다. 

프로그램으로 유효성 검사를 처리하는 방법을 알아보았습니다. SharePoint 2010의 이벤트 수신기를 통해 Custom Error Page Redirect 되는 내용이며 다른 여러 방법도 있습니다. 그런 방법들은 다음에서 다루도록 하겠습니다.

신고

SharePoint 2010에서의 Silverlight 지원

SharePoint 2010 2011.02.23 08:30 Posted by 정홍주

 

SharePoint 2010에서 Silverlight 에 대한 지원을 알아보도록 하겠습니다. 내용을 살펴보고 나면 또한 손쉽게 Silverlight 콘텐츠를 구성할 수 있다는 것을 알 수 있습니다.

l  사이트 작업 메뉴의 기타 옵션 

l  Silverlight 웹 파트

개발자들이 손쉽게 Silverlight 콘텐츠를 구성하기 위한 웹 파트, 별도로 커스텀 Silverlight 웹 파트를 생성할 수도 있습니다. 

l  미디어 웹 파트

– Client Silverlight 미디어 플레이어 웹 파트, 위에 그림에서 추가 할 수 있습니다. 자산 라이브러리에서는 기본적으로 마우스만 올려도 동영상 플레이가 가능합니다. 

 


l  개발적 요소

– Client 개체 모델과 REST에서 Silverlight 콘텐츠에 대한 내용을 제공하고 있습니다. 이전 블로그를 참조하십시오.

Client Object Model – Silverlight (1) http://redju.tistory.com/19

Client Object Model – Silverlight (2) http://redju.tistory.com/20

REST – Silverlight http://redju.tistory.com/25

 

l  워크플로 시각화

      워크플로의 진행 사항을 시각화해서 살펴볼 수 있습니다, 이 또한 Silverlight 콘텐츠입니다. 

l  Performance Point Services의 분해 트리

– PPS의 분석 차트의 경우 분해 트리 메뉴를 볼 수 있고 사용자가 원하는 대로 손쉽게 분석 데이터를 분해해 볼 수 있습니다.


l  PowerPivot 갤러리

클라이언트용 Excel Add-in이 아닌 SharePoint 2010 PowerPivot 으로 해당 내용을 구성하고 나면 PowerPivot 갤러리를 제공하며 Excel 시트의 내용을 Silverlight으로 미리 보기가 가능합니다. 

 

이상으로 SharePoint 2010에서의 Silverlight 지원에 대한 사항을 살펴보았습니다. Silverlight 웹 파트와 Silverlight 관련 개체 모델, API를 통해 트리뷰 웹 파트, 전역 탐색 웹 파트, 이미지 뷰어 웹 파트, 메인 페이지의 애니메이션, 게시판에서의 Silverlight 등 다양한 내용으로 SharePoint 2010에서는 더 강력한 사용자 경험을 구성할 수 있습니다.

 

신고



SharePoint 2010에서 대화 상자를 리본에서만 Show 시킬 수 있는 것은 아니고 웹 파트의 버튼에서도 손쉽게 대화 상자를 Show 시킬 수 있습니다. 여기서는 앞에서 살펴본 options url 뿐만 아니라 html 을 적용해보도록 하겠습니다.

Visual 웹 파트를 하나 생성하고 웹 파트에 HTML DIV 태그와 버튼을 추가하고 JavaScript로 해당 DIV를 대화상자로 Show 할 것입니다.

 

SharePoint 프로젝트 이름은 DialogDemo 로 입력하고 새로운 프로젝트를 생성합니다. 프로젝트에 새로운 항목으로 비쥬열 웹 파트를 추가합니다. 웹 파트의 이름은 VisualDialogWP 으로 지정합니다.

비쥬얼 웹 파트의 ascx html 컨트롤은 아래와 같이 추가합니다.

 

SP.js를 추가해야 JavaScript에서 사용이 가능합니다. 아래와 같은 SharePoint Script Control 태그아래에 추가합니다.



자 이제 JavaScript를 아래와 같이 작성해서 클릭할 경우에 이벤트와 취소를 클릭할 경우 이벤트를 구성하면 됩니다.

 

비쥬얼 웹 파트를 배포해서 결과를 확인해보도록 하겠습니다.

 

Show ModalDialog를 클릭하면 새로운 divDialog의 내용을 대화상자로 확인할 수 있습니다.



이번 블로그에서는 Ribbon, 대화상자(Dialog)에 대해서 알아보았습니다.


신고

SharePoint 2010에서의 대화상자(Dialog) (1)

 

SharePoint 2010의 사용자 인터페이스 중의 또 다른 큰 변화는 대화상자(Dialog)라고 할 수 있습니다. 목록의 항목이나 리본의 컨트롤을 클릭할 경우 아래처럼 대화 상자를 볼 수 있습니다.

 

여기서는 리본에 컨트롤을 추가했을 경우 컨트롤의 Command에서 해당 대화 상자를 Show 시키는 javascript를 작성해보도록 하겠습니다.

앞에서 다룬 Ribbon에서 CommandUIHandler의 내용을 아래와 구성할 수 있습니다.

 

<CommandUIHandlers>

        <CommandUIHandler

        Command="Demo_HelloWorld" CommandAction="javascript:

         function demoCallback(dialogResult, returnValue)

         {

         SP.UI.Notify.addNotification('Operation Successful');    

         SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK);

         }

        

         var options={

          url:'/_layouts/RibbonDemo/hj.aspx',

          title:'HJ Dialog',

          allowMaximize: true,

          showClose: true,

          width: 600,

          height: 400,

          dialogReturnValueCallback: demoCallback };

         

        

          SP.UI.ModalDialog.showModalDialog(options);

        

         " />

      </CommandUIHandlers>

 

맨 마지막 부분을 보면  SP.UI.ModalDialog.showModalDialog(options); 으로 구성되어 있으며 대화 상자를 Show 시켜주는 구문입니다.

options에서는 해당 페이지 url, 제목, 높이, 넓이 등을 나열 할 수 있습니다.

dialogReturnValueCallback의 경우는 대화상자를 닫을 경우 호출되는 javascript 함수를 참조합니다.

SP.UI.Notify.addNotification('Operation Successful'); SharePoint에서 오른쪽 상단의 알림을 나타내는 부분을 제공하고 있는데 Notify를 통해 해당 문자열을 3초간 표시해주게 됩니다.

SP.UI.ModalDialog.RefreshPage(SP.UI.DialogResult.OK); AJAX 스타일의 새로 고침을 제공해주고 있습니다.

 

전체 Elements.xml은 아래와 같습니다.

 

 

배포해서 결과를 확인해보도록 하겠습니다. 물론 hj.aspx가 추가되어 있어야겠죠

 

대화 상자를 확인 가능합니다. 오른쪽 상단의 X 를 클릭해서 창을 닫아 봅니다. 화면 오른쪽 상단에서 알림을 알아 볼 수 있습니다.

 

다음 블로그에서는 options url외에 html이 올 수 있습니다. 웹 파트에서 대화 상자를 Show 해 보도록 하겠습니다.


신고

SharePoint 2010에서의 Ribbon

SharePoint 2010 2011.01.26 09:00 Posted by 정홍주

 

SharePoint 2010의 사용자 인터페이스 중의 가장 큰 변화는 리본이라고 할 수 있습니다. SharePoint 웹 사이트의 여러 메뉴 들이 복잡하게 구성된 2007 버전과는 달리 2010에서는 아래 그림과 같이 동적으로 바뀌는 리본으로 구성되어 있습니다.

 

개발 측면으로서 볼 때 리본에 버튼을 추가하거나 해서 사용자 요구사항을 해결해야 할 수 있으며 버튼을 클릭할 경우 추가로 Dialog (대화 상자)를 통해 사용자에게 사용자 인터페이스를 제공할 수 있게 됩니다.

 

자 그럼 리본에 원하는 버튼을 추가해보도록 하겠습니다.

Visual Studio 2010의 빈 SharePoint 프로젝트를 통해 새로운 프로젝트를 하나 생성합니다. 여기서 프로젝트 이름은 RibbonDemo라고 합니다. 생성된 프로젝트의 솔루션 탐색기를 통해 새 항목을 추가합니다. 새로 추가할 항목은 빈 요소입니다.

 

빈 요소에는 특별한 내용 없이 Elements.xml 파일에 XML 만 보입니다. 정해진 태그를 통해 리본에 대한 내용을 CustomAction으로 생성할 수 있습니다.

Elements 루트 태그 안에 CustomAction 태그를 추가하고 추가된 태그에 아래와 같은 리본에 대한 내용을 나열합니다.

<CustomAction

Id="DemoHelloWorldButton"

RegistrationType="List"

RegistrationId="101"

Location="CommandUI.Ribbon"

 Sequence="10"

 Title="Ribbon Demo">

    <CommandUIExtension>

      <CommandUIDefinitions>

        <CommandUIDefinition

         Location="Ribbon.Documents.New.Controls._children">

          <Button

           Id="Ribbon.Documents.New.Controls.DemoHelloWorldButton"

           Alt="Hello World Ribbon Button"

           Sequence="10"

           Command="Demo_HelloWorld"

           Image32by32="_layouts/images/ribbondemo/demobutton32.png"

           Image16by16="_layouts/images/ribbondemo/demobutton16.png"

           LabelText="Hello World Demo"

           TemplateAlias="o1"/>

        </CommandUIDefinition>

      </CommandUIDefinitions>

      <CommandUIHandlers>

        <CommandUIHandler

         Command="Demo_HelloWorld" CommandAction="javascript:alert('Hello World!');" />     

      </CommandUIHandlers>

    </CommandUIExtension>

  </CustomAction>

 

CustomAction의 특성에 보면 Location=”CommandUI.Ribbon” 이라는 내용을 볼 수 있으며 리본으로 처리됩니다. RegistrationId=”101”은 문서 라이브러리를 가리킵니다.

그리고 CommandUIExtension 안에 CommandUIDefinitions, CommnadUIHandlers를 배치합니다.

CommandUIDefinitions 는 리본의 UI를 정의하게 되며 CommnadUIHandlers 는 리본의 UI를 클릭할 경우의 Command, 이벤트를 정의하게 됩니다.

 

CommandUIDefinition 에도 Location이 보이는데
Location="Ribbon.Documents.New.Controls._children"
의 경우는 문서 라이브러리의 문서 탭의 새로 만들기 그룹 밑의 컨트롤이라는 정보를 나타내게 됩니다.


CommandUIDefinition에 컨트롤 들의 그룹을 추가 할 수 있으나 여기서는 Button 컨트롤만 배치했습니다. 리본에 추가할 수 있는 컨트롤들은 아래 링크를 참조할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ee537017.aspx

 

Button 컨트롤의 여러 속성(이미지, 제목 등)을 설정하면 되고 이벤트와 연동하기 위해서는 Command라는 속성을 설정하면 됩니다.

CommnadUIHandler 에는 Button Command 속성의 값과 일치하는 이름의 Command를 추가하고 CommandAction에서는 javascript를 통해 대화상자 페이지를 나타내게 할 수 있습니다.

 

솔루션 탐색기에서 추가 새 항목에서 SharePoint “이미지매핑된 폴더를 이용해서 위의 XML처럼 이미지를 추가할 수 있습니다.

TemplateAlias의 경우는 o1(Large 이미지), o2(medium 이미지)로 구분할 수 있습니다.

 

이제 배포를 해서 결과를 확인합니다.


클릭할 경우 아래와 같은 메시지 박스를 볼 수 있습니다.

 

XML에서 Button 컨트롤에 보면 ID가 처리되는데 기존에 있는 여러 컨트롤의 ID는 아래 링크를 참조하면 됩니다.

http://msdn.microsoft.com/en-us/library/ee537543.aspx

ID를 이용해서 HideCustomAction을 사용해 기존 Ribbon의 컨트롤을 안보이게도 가능합니다.

 

다음 블로그에서는 Ribbon을 클릭할 경우 대화 상자를 처리해 보도록 하겠습니다.


신고