Friday, March 2, 2012

Lesson 10: Explorer user and permission in sharepoint object model


Exercise : Tìm hiểu về User và phân quyền trong Object Model cho WebPart
·        Tiếp tục với WebPartSoln
v    Exercise 01: Chuẩn bị tài nguyên cho webpart
Ø     Thêm mi Class Library Project  tên là UseObjectModelWebPart
Ø     Click vào References | R-Right | Add Reference
Ø     Chọn Microsoft.Sharepoint.Dll vào  thư mục của  WebPartSoln
Ø     Tiếp tục chọn Tab .NET | System.Web
§        Khai báo Using
·        using System.Web;
·        using System.Web.UI;
·        using Microsoft.SharePoint;
·        using Microsoft.SharePoint.WebPartPages;
·        using System.Web.UI.WebControls;
§        Khai báo kế thừa từ WebPart Class cho Class1
Ø      Chọn Microsoft.Sharepoint.Dll vào  thư mục của  WebPartSoln
Ø     Vào thư mục Properties m file AssemblyInfo.cs
§        Di chuyển xuống phần cuối cùng của File AssemblyInfo.cs, thêm vào : (tùy với vị trí đặt Hkgsolution.snk).
·        [assemblyAssemblyKeyFile("..\\hkgsolution.snk")]
Ø     Build project ở chế độ Release và succsessfull

Exercise 02: Cách lấy user hiện hành Trong WebPart
Ø     Tiếp tục với UseObjectModelWebPart project
Ø     Đổi Class1 thành UserWebPart.cs
Ø     Khai báo code trong phương thức CreateChildControls
§        Khai báo và khởi tạo Literal literalForText
·        Gán “List: ” cho thuộc tính Text của literalForText
·        Thêm literalForText vào webpart
§        Khai báo và khởi tạo Literal literalForValue
·        Khai báo code để Gán user hiện hành cho thuộc tính Text của literalForValue
·        Thêm literalForValue vào webpart
Ø     Thêm UserWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy UseObjectModelWebPart.dll đến thư mục bin
§        Copy UserWebPart.dwp đến thư mục wpcatalog
§        Thêm thẻ <SafeControl>
Ø     Quay lại sharepoint site
§        Thêm WebPart này đến WebPart page
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.WebControls;




namespace UserObjectModelWebPart

{

    public class UserWebPart:WebPart

    {

        Literal literalForValue;

        SPSite spSite;

        SPWeb spWeb;

        protected override void CreateChildControls()

        {

            spSite = SPControl.GetContextSite(Context);

            spWeb = spSite.OpenWeb();

            Literal literalForText = new Literal();

            literalForText.Text = "Hello: ";

            this.Controls.Add(literalForText);




            literalForValue = new Literal();

            this.Controls.Add(literalForValue);




            Button btnShowUserWebPart = new Button();

            btnShowUserWebPart.Text = "Show User WebPart";

            btnShowUserWebPart.Click += new EventHandler(btnShowUserWebPart_Click);

            this.Controls.Add(btnShowUserWebPart);

        }




        void btnShowUserWebPart_Click(object sender, EventArgs e)

        {

            literalForValue.Text = spWeb.CurrentUser.Name;

        }

    }

}

v    Exercise 03: Cách lấy những user trên site
Ø     Tiếp tục với UseObjectModelWebPart project
Ø     Thêm mới Class UsersWebPart.cs
Ø     Khai báo code trong phương thức CreateChildControls
§        Khai báo và khởi tạo Literal literalForText
·        Gán “Users: ” cho thuộc tính Text của literalForText
·        Thêm literalForText vào webpart
Literal literalForText = new Literal();
            literalForText.Text = "Users: ";
            this.Controls.Add(literalForText);
§        Khai báo và khởi tạo DropDownList tên dropDownListForUsers
·        Khai báo sự kiện Load để hiển thị tất cả Users của site hiện hành đến dropDownListForUsers
·        Thêm dropDownListForUsers vào webpart
            dropDownListForUsers = new DropDownList();
            dropDownListForUsers.Load += new System.EventHandler(dropDownListForUsers_Load);
            this.Controls.Add(dropDownListForUsers);

        void dropDownListForUsers_Load(object sender, System.EventArgs e)
        {
            if (dropDownListForUsers.Items.Count==0)
            {
                foreach (SPUser spUser in spWeb.AllUsers)
                {
                    dropDownListForUsers.Items.Add(new ListItem(spUser.LoginName, spUser.Name));
                }
            }
        }
Ø     Thêm UsersWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
§        Copy UsersWebPart.dwp đến thư mục wpcatalog
Ø     Quay lại sharepoint site
§        Thêm WebPart này đến WebPart page
using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.WebControls;




namespace UserObjectModelWebPart

{

    public class UsersWebPart:WebPart

    {

        DropDownList dropDownListForUsers;

        SPSite spSite;

        SPWeb spWeb;

        protected override void CreateChildControls()

        {

            spSite = SPControl.GetContextSite(Context);

            spWeb = spSite.OpenWeb();




            Literal literalForText = new Literal();

            literalForText.Text = "Users: ";

            this.Controls.Add(literalForText);




            dropDownListForUsers = new DropDownList();

            dropDownListForUsers.Load += new System.EventHandler(dropDownListForUsers_Load);

            this.Controls.Add(dropDownListForUsers);

        }




        void dropDownListForUsers_Load(object sender, System.EventArgs e)

        {

            if (dropDownListForUsers.Items.Count==0)

            {

                foreach (SPUser spUser in spWeb.AllUsers)

                {

                    dropDownListForUsers.Items.Add(new ListItem(spUser.LoginName, spUser.Name));

                }

            }

        }

    }

}

v    Exercise 04: Cách hiển thị Roles của User
Ø     Tiếp tục với UseObjectModelWebPart project
Ø     Thêm mới Class RolesWebPart.cs
Ø     Trong phương thức CreateChildControls khai báo thêm
§        Khai báo và khởi tạo Literal literalForText
·        Gán “Roles: ” cho thuộc tính Text của literalForText
·        Thêm literalForText vào webpart
§        Khai báo và khởi tạo DropDownList tên dropDownListForRoles
·        Khai báo sự kiện Load để hiển thị tất cả Roles của site hiện hành đến dropDownListForRoles
·        Thêm dropDownListForRoles vào webpart
Ø     Thêm RolesWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này
using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.WebControls;




namespace UserObjectModelWebPart

{

    public class RolesWebPart:WebPart

    {

        DropDownList dropDownListForRoles;

        SPSite spSite;

        SPWeb spWeb;

        protected override void CreateChildControls()

        {

            spSite = SPControl.GetContextSite(Context);

            spWeb = spSite.OpenWeb();




            Literal literalForText = new Literal();

            literalForText.Text = "Roles: ";

            this.Controls.Add(literalForText);




            dropDownListForRoles = new DropDownList();

            dropDownListForRoles.Load += new System.EventHandler(dropDownListForRoles_Load);

            this.Controls.Add(dropDownListForRoles);

        }




        void dropDownListForRoles_Load(object sender, System.EventArgs e)

        {

            if (dropDownListForRoles.Items.Count==0)

            {

                foreach (SPRole spRole in spWeb.Roles)

                {

                    dropDownListForRoles.Items.Add(new ListItem(spRole.Name,spRole.ID.ToString()));

                }

            }

        }

    }




}
v    Exercise 05: hiểu biết thêm về cách lấy role
Ø     Tiếp tục với UseObjectModelWebPart project
Ø     Thêm mới Class RoleWebPart.cs
Ø     Trong phương thức CreateChildControls khai báo thêm
§        Khai báo và khởi tạo Literal literalForText
·        Gán “Roles: ” cho thuộc tính Text của literalForText
·        Thêm literalForText vào webpart
§        Khai báo và khởi tạo DropDownList tên dropDownListForRoles
·        Khai báo sự kiện Load để hiển thị tất cả Roles của site hiện hành đến dropDownListForRoles
·        Thêm dropDownListForRoles vào webpart
§        Khai báo và khởi tạo DropDownList tên dropDownListForUsers
·        Thêm dropDownListForUsers vào webpart
·        Khai báo sự kiện SelectedIndexChanged để hiển thị tất cả users vào dropDownListForUsers có roles được chọn từ dropDownListForRoles
Ø     Thêm RoleWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này
using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.WebControls;




namespace UserObjectModelWebPart

{

    public class RolesWebPart:WebPart

    {

        DropDownList dropDownListForRoles;

        DropDownList dropDownListForUsers;

        SPSite spSite;

        SPWeb spWeb;

        protected override void CreateChildControls()

        {

            spSite = SPControl.GetContextSite(Context);

            spWeb = spSite.OpenWeb();




            Literal literalForText = new Literal();

            literalForText.Text = "Roles: ";

            this.Controls.Add(literalForText);




            dropDownListForRoles = new DropDownList();

            dropDownListForRoles.AutoPostBack = true;

            dropDownListForRoles.Load += new System.EventHandler(dropDownListForRoles_Load);

            this.Controls.Add(dropDownListForRoles);




            dropDownListForUsers = new DropDownList();

            this.Controls.Add(dropDownListForUsers);




            dropDownListForRoles.SelectedIndexChanged += new System.EventHandler(dropDownListForRoles_SelectedIndexChanged);

        }




        void dropDownListForRoles_SelectedIndexChanged(object sender, System.EventArgs e)

        {

            //dropDownListForUsers.Items.Clear();

            //SPRoleCollection spRoleCollection = spWeb.Roles;

            //SPRole spRole = spRoleCollection[dropDownListForRoles.SelectedItem.ToString()];

            //SPUserCollection spUserCollection = spRole.Users;

            SPUserCollection spUserCollection = spWeb.Roles[dropDownListForRoles.SelectedItem.ToString()].Users;




            foreach (SPUser spUser in spUserCollection)

            {

                dropDownListForUsers.Items.Add(new ListItem(spUser.Name, spUser.ID.ToString()));

            }

        }




        void dropDownListForRoles_Load(object sender, System.EventArgs e)

        {

            if (dropDownListForRoles.Items.Count==0)

            {

                foreach (SPRole spRole in spWeb.Roles)

                {

                    dropDownListForRoles.Items.Add(new ListItem(spRole.Name, spRole.ID.ToString()));

                }

            }

        }

    }

}
v    Exercise 06: Cách hiển thị Groups
Ø     Tiếp tục với UseObjectModelWebPart project
Ø     Thêm mới Class GroupsWebPart.cs
Ø     Trong phương thức CreateChildControls khai báo thêm
§        Khai báo và khởi tạo Literal literalForText
·        Gán “Groups: ” cho thuộc tính Text của literalForText
·        Thêm literalForText vào webpart
§        Khai báo và khởi tạo DropDownList tên dropDownListForGroups
·        Khai báo sự kiện Load để hiển thị tất cả Groups của site hiện hành đến dropDownListForGroups
·        Thêm dropDownListForGroups vào webpart
Ø     Thêm GroupsWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này
using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.WebControls;




namespace UserObjectModelWebPart

{

    public class GroupsWebPart:WebPart

    {

        SPSite spSite;

        SPWeb spWeb;

        Literal literalForValue;

        protected override void CreateChildControls()

        {

            spSite = SPControl.GetContextSite(Context);

            spWeb = spSite.OpenWeb();




            Literal literalForText = new Literal();

            literalForText.Text = "Group: ";

            this.Controls.Add(literalForText);




            literalForValue = new Literal();           

            this.Controls.Add(literalForValue);

            ShowGroupName();

        }




        private void ShowGroupName()

        {

            foreach (SPGroup spGroup in spWeb.CurrentUser.Groups)

            {

                literalForValue.Text += spGroup.Name + "---";

            }

        }

    }

}

v    Exercise 07: Cách hiển thị Groups của user hiện hành
Ø     Tiếp tục với UseObjectModelWebPart project
Ø     Thêm mới Class GroupWebPart.cs
Ø     Trong phương thức CreateChildControls khai báo thêm
§        Khai báo và khởi tạo Literal literalForText
·        Gán “Group: ” cho thuộc tính Text của literalForText
·        Thêm literalForText vào webpart
§        Khai báo và khởi tạo Literal literalForValue
·        Thêm literalForValue vào webpart
·        Khai báo code để hiển thị tên group của user hiện hành vào literalForValue
Ø     Thêm GroupWebPart.dwp
Ø     Build project chế độ Release và Deploy WebPart
Ø     Quay lại sharepoint site
§        Refesh WebPart này
using System.Text;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebPartPages;

using Microsoft.SharePoint.WebControls;




namespace UserObjectModelWebPart

{

    public class GroupWebPart:WebPart

    {

        SPSite spSite;

        SPWeb spWeb;

        Literal literalForValue;

        protected override void CreateChildControls()

        {

            spSite = SPControl.GetContextSite(Context);

            spWeb = spSite.OpenWeb();




            Literal literalForText = new Literal();

            literalForText.Text = "Group: ";

            this.Controls.Add(literalForText);




            literalForValue = new Literal();           

            this.Controls.Add(literalForValue);

            ShowGroupName();

        }




        private void ShowGroupName()

        {

            foreach (SPGroup spGroup in spWeb.CurrentUser.Groups)

            {

                literalForValue.Text += spGroup.Name + "---";

            }

        }

    }

}

0 comments:

Post a Comment