Flash WebPart , User Info WebPart

سلام ، امروز تصمیم دارم تا پیاده سازی دو نمونه وب پارت رو به همراه سورس کُد اونها به طور خلاصه براتون توضیح بدم…

اولین وب پارت یک وب پارت ساده در مورد نمایش اطلاعات سیستمی کاربر در شرپوینت هست.این وب پارت اطلاعاتی در مورد نام کاربر وارد شده به سیستم،مجوزهای دسترسی کاربر،زبان سیستم و IP سیستم کاربر و … ارائه می دهد.بدنه کامل کد مربوط به فایل .CS این وب پارت به صورت زیر است :

using System;

using System.Runtime.InteropServices;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Serialization;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.WebPartPages;

 

namespace WebPart1

{

[Guid("3243cdc3-d678-498c-97ed-2ed0f9990824")]

public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart

{

 

protected override void CreateChildControls()

{

base.CreateChildControls();

}

 

protected override void Render(HtmlTextWriter writer)

{

writer.Write("<TABLE id='tblUser'>");

writer.Write("<TR><TD>مجوز دسترسی</TD><TD>");

writer.Write(this.Context.User.Identity.IsAuthenticated.ToString());

writer.Write("</TD></TR><TR><TD>نام کاربر</TD><TD>");

writer.Write(this.Context.User.Identity.Name);

writer.Write("</TD></TR><TR><TD>نوع دسترسی</TD><TD>");

writer.Write(this.Context.User.Identity.AuthenticationType);

writer.Write("</TD></TR><TR><TD>زبان سیستم : </TD><TD>");

writer.Write(this.Context.Request.UserLanguages[0]);

writer.Write("</TD></TR><TR><TD>نام سیستم : </TD><TD>");

writer.Write(this.Context.Request.UserHostName);

writer.Write("</TD></TR><TR><TD>IP Address : </TD><TD>");

writer.Write(this.Context.Request.UserHostAddress);

writer.Write("</TD></TR></TABLE>");

 

}

}

}

 

وب پارت دوم برای درج یک فایل فلش (.SWF) با اندازه دلخواه در سایت شرپوینتی هست. کد این وب پارت در سایت CodeProject گذاشته شده ولی دارای اشکالاتی بود که من اونهارو برطرف کردم و جاهایی از کد رو هم تغییر دادم و اونرو تست و اجرا کردم. اصلاح شده این کد به شکل زیر است :

 

using System;

using System.ComponentModel;

using System.Runtime.InteropServices;

using System.Web.UI;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.WebControls;

using System.Xml.Serialization;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.Utilities;

using System.Web.UI.HtmlControls;

 

namespace WebPart2

{

[Guid("bcdd8075-6c6e-4947-b299-026b8941f593")]

[XmlRoot(Namespace = "FlashWebPart2")]

public class Flash : System.Web.UI.WebControls.WebParts.WebPart

{

public Flash()

{

this.ExportMode = WebPartExportMode.All;

}

 

private int flashWidth = 400;

[Personalizable(PersonalizationScope.Shared),

WebBrowsable(true),

Category("Flash Info"),

DefaultValue(400),

WebPartStorage(Storage.Shared),

WebDisplayName("Width"),

WebDescription("Width of the web part")]

public int FlashWidth

{

get { return this.flashWidth; }

set { this.flashWidth = value; }

}

 

private int flashHeight = 300;

[Personalizable(PersonalizationScope.Shared),

WebBrowsable(true),

Category("Flash Info"),

DefaultValue(300),

WebPartStorage(Storage.Shared),

WebDisplayName("Height"),

WebDescription("Height of the web part")]

public int FlashHeight

{

get { return this.flashHeight; }

set { this.flashHeight = value; }

}

 

private string flashUrl = "";

[Personalizable(PersonalizationScope.Shared),

WebBrowsable(true),

Category("Flash Info"),

DefaultValue(""),

WebPartStorage(Storage.Shared),

WebDisplayName("URL"),

WebDescription("URL of the web part")]

public string FlashURL

{

get { return this.flashUrl; }

set { this.flashUrl = value; }

}

 

protected override void Render(HtmlTextWriter writer)

{

string outHTML = "<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" " +

"codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" " +

"WIDTH=" + flashWidth + " HEIGHT=" + flashHeight + "> " +

"<PARAM NAME=movie VALUE=\"" + flashUrl + "\"> " +

"<PARAM NAME=WMODE VALUE=\"Transparent\">" +

"<PARAM NAME=quality VALUE=high> " +

"<EMBED src=\"" + flashUrl +

"\" quality=high wmode=\"transparent\" WIDTH=\"" + flashWidth +

"\" HEIGHT=\"" + flashHeight +

"\"TYPE=\"application/x-shockwave-flash\"

PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\"></EMBED> " + "</OBJECT>";

writer.Write(outHTML);

}

}

}

 

پس از اجرای وب پارت، یک منو در بخش تنظیمات وب پارت ایجاد شده که از طریق اون می تونید آدرس فایل .SWF و سایز نمایش فایل فلش رو تعیین نمایید.

روش ساخت وب پارت ها در VS 2008: برای پیاده سازی این وب پارت ها پس از نصب Extension مربوط به Visual Studio 2008، از منوی File>New>Project را انتخاب کرده و در قسمت Sharepoint ، WebPart را انتخاب نمایید. با این کار شما یک پروژه برای ساخت وب پارت ها ایجاد کرده اید. حال فایل کلاس .CS مربوط به پروژه رو از قسمت Solution Explorer باز کرده و هر کدام از کدهای بالا را براساس نیاز داخل آن کپی نمایید.حال باید پروژه را Build نمایید تا فایل .dll مربوط به کلاس شما ساخته شود.این فایل .dll را باید به طور دستی در داخل پوشه Bin از سایت شرپوینتی که قرار است این وب پارت داخل آن اجرا شود و در این آدرس کپی نمایید :

C:\Inetpub\wwwroot\virtual directory\<sharepointsite>or<PortAddress>\Bin\

 

سپس باید فایل Web.config مربوط به سایت شرپوینتی در همان آدرس بالا را باز کرده و تگ زیر را در قسمت <Safe Control> برای هر وب پارت به صورت جدا وارد کنید :

 

<safe control Assembly="webPart1" Namespace="WebPart1" TypeName="*" />

<safe control Assembly="webPart2" Namespace="WebPart2" TypeName="*" />

 

اکنون باید وارد سایت شرپوینتی خود شده و در قسمت Site Setting این وب پارت را به لیست وب پارت ها وارد نموده و سپس آن را در صفحه سایت از قسمت Edit Page اضافه نمایید و خروجی آنها را مشاهده کنید.

نکته مهم : در ویژوال استودیو ۲۰۰۸ پس از اینکه پروژه وب پارت را Build می نمایید با یک پیغام خطا در مورد تنظیمات Security مواجه خواهید شد! برای رفع این خطا باید خط زیر را در انتهای فایل Assembly.info در قسمت Properties از پروژه وب پارتتان اضافه کنید و سپس مجدداً انرا Build نمایید.

[assembly: System.Security.AllowPartiallyTrustedCallers()]

 

پاسخ دهید