Tag Archive: SharePoint


Last week, I setup my SharePoint Server 2010 on my laptop for development environment.
After finished all installation, I realized that I need test send mail functions. As you may know, I need to configure outgoing e-mail settings from SharePoint Central Administration with existed mail server, or I have to setup a mail server such as Microsoft Exchange or MDaemon,… but these installations required some technical knowledge about IT and not easy to complete it. More than that, it may required for licenses and make slow performance on my laptop for mail services.

The solution I used my Gmail account to send and receive email from my local SharePoint server via hMailServer, it is a free e-mail server for Microsoft Windows. It’s used by Internet service providers, companies, governments, schools and enthusiasts in all parts of the world.

It supports the common e-mail protocols (IMAP, SMTP and POP3) and can easily be integrated with many existing web mail systems. It has flexible score-based spam protection and can attach to your virus scanner to scan all incoming and outgoing email.

The benefits are:
– There is all free and not required for licenses fee
– Fast and and easy to setup
– Gmail is available and have good performance and security

In this post, I just introduce SMTP to send mail and let you try on POP3 and IMAP ūüėČ
OK, Here we go

Firstly, we can download hMailServer from website, I also uploaded current lasted version to Mediafire

After finished download, run hMailServer-5.3.3.exe file, click Next to continue the installation wizard

If your local machine has database instant, click Next to continue the installation wizard, or you can use SQL Compact if don’t have database engine installation.

Click Next on next screen.

On next screen, select Create a new hMailServer database for the first installation

Select your database server type

Input your database server connection information as below

On next screen, select database service to ensure database service is running before hMailServer service is started

Click Close to finish the wizard

After finished the wizard, it prompts for password to be able manage hMailServer configuraiton

Check Run hMailServer Administrator and click Finish to continue configuration

On Conect screen, check on Automatically connect on start-up and click Connect

From left menu, navigate to SMTP, fill your host name to Local host name textbox and SMTP Relayer information. In this step, you have to provide your email account and password to login to Gmail

On RFC compliance, check  as below

Navigate Auto-ban and uncheck Enabled if you don’t use Auto-ban feature

Navigate to My computer under IP ranges, fill your local IP address or keep 127.0.0.1 in Lower IP and Upper IP. Make sure all check box as below

And same to Internet range

Finally, you should disable Firewall service to make sure you have no problems with connection issues

Next step, Login your SharePoint Central Administration. Go to System Settings and select Configure outgoing e-mail settings under E-Mail and Text Messages (SMS) section

Fill Mail settings with your hMailServer information and email address use to send email

To test send mail function, you can open any your web application and go to Site Permissions. Try to add a user and check on Send welcome e-mai to the new users as below

Finally, open mail box of this user and check result

It’s cool!!!

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

As you know, Access 2007 is a recommended platform to update¬† data and information to SharePoint lists and using lists offline. But a lot of end users don’t familiar with Access so it will better if they can work with¬† Excel instead.

Actually, publishing and synchronizing Excel worksheet to SharePoint list is not a new features. Since mid of 2007, Microsoft allow you to publish and synchronize between  Microsoft Excel 2007 and MOSS2007/WSS3.0 with an Add-In for MS Excel 2007. I tested again and it works well on MS Excel 2010 and SharePoint Server 2010.

In this post, I would like introduce about this Add-in and tell you how to enable in Excel 2010 and work with SP 2010

1. Firsly, you can download this Add-In here: Excel 2007 Add-in: Synchronizing Tables with SharePoint Lists

Run XL2007SynchronizeWSSandExcel.exe and follow the instruction to complete the installation. In this progress, remember where you extract the xlam Add-ins file.

2. Start Microsoft Office Excel 2010, from the File menu, select Options, you will see Add-Ins tab as below

– From the Manage combobox, select Excel Add-ins and click Go

– Browse and select xlam file, then check on Synchronizewssandexcel, click OK to enable this Add-in

3. Create Table data with some information (reate table) and save it with Excel 93-2007 workbook

4. A new Design tab will appear with Publish and allow Sync ribbon button

5. Click on this button and fill SharePoint server information as below

6. Click on Publish button to publish data to Customer Review SharePoint list. From now on, you can change the data from this workbook and sync to SharePoint list and vice versa.

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

As you know, SharePoint allow to define Search scope and condition to create full text search indexes. This is really one of greatest features SharePoint bring to you.

All search scopes will be managed by Share Services Provider (SSP). It’s easy to create a custom search scopes with friendly user interface.

You can see more details here:

For SharePoint 2007: http://dattard.blogspot.com/2007/04/sharepoint-2007-creating-custom-search.html

For SharePoint 2010: http://technet.microsoft.com/en-us/library/ff453895.aspx

In this post, I would like to focus in Developer side, SharePoint not only provide a powerful feature with ability to index many content, break down the content into different scopes, dynamic and friendly search for end user, but also Developer can query in each existed scopes like a Table¬† from SQL. It’s awesome!!!

See image below, I created some search scope: All Sites, Poeple, Document Libraries

From now, we can query on each scope as well as example code below

– Query to People Search Scope

DataTable resultDataTable = new DataTable();string SQLQueryString = “SELECT PersonalTitle, Firstname, Lastname, AccountName, Department, workemail”+
“FROM SCOPE() “+
“WHERE \”scope\”=’People’ ORDER BY Write DESC”;using (FullTextSqlQuery searchQuery = new FullTextSqlQuery(ServerContext.Current))
{
SPSite contextSite = SPControl.GetContextSite(HttpContext.Current);

searchQuery.SiteContext = new Uri(contextSite.Url);
searchQuery.StartRow = 1;

if (rowLimit > 0)
{
searchQuery.RowLimit = 500;
}

searchQuery.EnableStemming = true;
searchQuery.KeywordInclusion = KeywordInclusion.AllKeywords;
searchQuery.ResultTypes = ResultType.RelevantResults;
searchQuery.TrimDuplicates = true;
searchQuery.QueryText = SQLQueryString;

ResultTableCollection searchResultTableCollection = searchQuery.Execute();
if ((int)ResultType.RelevantResults != 0)
{
searchResultTable = searchResultTableCollection[ResultType.RelevantResults];
}
}

– Or more simple to query to All Sites Search Scope

var query = new FullTextSqlQuery(SPContext.Current.Site)
{
QueryText = “SELECT Title FROM SCOPE() WHERE \”scope\” = ‘All Sites’ AND¬† CONTAINS(Title, ‘Example’)”,
ResultTypes = ResultType.RelevantResults
};
var queryResults = query.Execute();
var queryResultsTable = queryResults[ResultType.RelevantResults];
var results = new DataTable();
results.Load(queryResultsTable, LoadOption.OverwriteChanges);

That’s all, You can manually control search result and freely customize SharePoint search with available powerful full text search. So cool!

Related article:

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

Today is a busy day for me. I’m so tired after comeback from BarCamp SaiGon but I have alot of things and many things has been updated for me.

Several days before, I just tried to estimate prices of SharePoint Enterprise Solution, and I would like share to all of you my experiences.

Firstly, to calculate prices of SharePoint solution is very complicated, require to integrate multiple of Microsoft products with many features and many prices of license. Beside that, we need concern more than about purpose of usage, type of company, Microsoft relationship or vendors…

All that things we need answer the question: “How much we need to pay for SharePoint solution planning?”. More than that, you need all employees of your company use FAST Search features, for example, its necessary to pay more than for this feature,¬† for hosting application servers…

Ok, so we start with licensing policy. If we apply for SharePoint 2010 environment, there’re 2 situation for your company maybe:

  • Server + CAL licenses for internal users ‚Äď use for intranet purpose. In this case, we need to by for CAL (Client Access License) for each end user to access to SharePoint server. If you need Enterprise features, you need buy for Standard CAL before upgrade to Enterprise CAL.
  • Internet site server licenses for external users ‚Äď In this case, we need buy license for each server run with SharePoint 2010 on farm. In this solution, we no need to buy CAL and Internet Sites Standard licsence allow all sites run on one unique domain.


FAST Search License

FAST Search provide optimized performance for search features but you need to pay license for each FAST Search server. Of course, you can use only one server for all license. For example, If we need to setup Intranet for your company and public one website, we can apply SharePoint 2010 Server for SharePoint 2010 Internet Site in only one server. About License FAST Search, we can use for SharePoint 2010 server, with this way, we can reduce prices for hardwares but we need license for SharePoint Server and FAST Search.

About the prices, I just mention about SharePoint licenses and don’t count for others software (MS Offices, Windows Server, SQL Server for example. You can refer to attached file for details of all MS products license prices).


*You need buy Standard CAL first, after that you can buy for Enterprise CAL¬† 

Let I try solution with Standard Licsence and Internal use only, we have 3 server in farm

  • Web Front-End (WFE)/Application server
  • SQL server
  • SharePoint 2010 server
  • 1.000 user

Prices: 2 x 4800$ = 9.600$ (SharePoint 2010 Server) + 1.000 user x 93,5$ = 93.500$
If we need FAST Search on one server (21.800$), Enterprise CAL (82,6$ /user) to access and use this features.
Sum are: 9.600$ + 93.500$ + 21.800$ + 82,6$ x 1000 = 207.500$.

In another solution, we have a server run with SharePoint 2010 to build up a website and public to Internet. We also have 3 server in farm:

  • WFE/Application server
  • SQL server
  • SharePoint 2010 server

SharePoint license: 2 x 11.700$ = 23.400$ ( SharePoint 2010 Internet Site Standard)
FAST Search license for SharePoint 2010 Internet Site Enterprise: 2 x 42.000$ = 94.000$.

Above is example for SharePoint license estimation, for more details Microsoft products license fee you can refer to Microsoft Prices Table

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

Debugging Webpart dll from GAC

The global assembly cache (GAC) provides a centralised, machine-wide storage location for .NET assemblies. When you add an assembly to the GAC, you allow it to be shared by many programs, rather than requiring a copy to be installed for each application. It’s also the place you need to register your WebPart library when develop SharePoint WebPart solution.

To reduce the time for debugging, it’s mean without having to deploy my SharePoint solutions, fire up IIS, etc. etc. You can register output library to GAC directly with External Tools extension in Visual Studio.

By this way, you just build and deploy sourcode project only 1 time. After that, any changes from code behind, you can run this tool for your features update.

1. Download and extract bat file at here

2. Open Visual Studio, in this post, I would like show on Visual Studio 2008.
– Browse to Tools/External Tools
– Click Add button
– Fill some information as below. At Command textbox, browse and select bat file above

– Check on Use Output Window and Click OK to finish

3. Make sure it work correctly
– Rebuild project
– Select Tools/copyToGac from Visual Studio top menu
– Open Output window, the output result should be like this.

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

Calendar is a great feature from SharePoint to hep you orgainze task, schedule and collaborate for your workspace. But WSS3.0 just allowed you display calendar data and Calendar view within current web and can not publish in another sites by default.

Today, I will show you how to develop a global calendar WebPart which will get data from specify Calendar list using SPquery and calendar view control. So you can easy to show on any page you want and display recurrence event as well.

Create Calenar list

Firstly, you need a calendar list to store all data for global calendar’s query and filter. In this article, I place this Calendar under subsite Workspace as below

Create Calendar Control

I will implement this webpart receive 2 parameters from WebPart properties

– Calendar List URL: This parameter will tell our Global calendar webpart where is calendart list datasource to query.

protected string calendarListUrl = string.Empty;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(true)]
[System.ComponentModel.Category(“Officience”)]
[WebDisplayName(“Calendar URL”),
DefaultValue(“/workspace/Lists/Calendar/calendar.aspx”),
WebDescription(“Calendar URL Property”)]
public string CalendarListUrl
{
get { return calendarListUrl; }
set { calendarListUrl = value.Trim(); }
}

– Locaton of Department: This parameter will provide name of Location. In this context, I call it as ‚ÄúFilter By Department‚ÄĚ, so base on this parameter, we can filter event belong to this Department

protected string departmentFilter = string.Empty;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(true)]
[System.ComponentModel.Category(“Officience”)]
[WebDisplayName(“Filter By Department”),
DefaultValue(“Others”),
WebDescription(“Filter By Department”)]
public string DepartmentFilter
{
get { return departmentFilter; }set { departmentFilter = value.Trim(); }}

In the webpart code behind, as first thing you need to create and add calendar control inside CreateChildControls() method

protected override void CreateChildControls()
{
div = new HtmlGenericControl(“DIV”);div.Attributes.Add(“class”, “calendar”);Controls.Add(div);base.CreateChildControls();

try

{

AddButtons();

AddCalendar();

}

catch (Exception ex)

{

Controls.Add(new LiteralControl(“<b>Error</b> “));

Controls.Add(new LiteralControl(ex.ToString()));

}

}

Next, we need to implement AddButton and AddCalendar method.
In AddButton method, we will define 2 button, the first one allow you create New Event and the second one will redirect you to original calendar view (View All Events)

private void AddButtons()
{
LiteralControl sbCreate = new LiteralControl();SPList oList = GetListByUrl(CalendarListUrl);
string []strList = oList.DefaultViewUrl.Split(new char[] { ‘/’ });string strUrl = oList.DefaultViewUrl.Replace(strList[strList.Count() – 1].ToString(), “NewForm.aspx”);string NewFormUrl = strUrl + “?Source=” + Context.Request.Url;

sbCreate.Text = “<div id=\”divIdForm\”>” +

“<button id=\”BtnSubmit\” type=\”button\” onclick = ¬†\”javascript:window.location='” + NewFormUrl + “\”)>” +

“New Event” +

“</button> ” +

“<button id=\”BtnViewAll\” class=\”btnView\” target=\”_blank\” width=\”100px\” type=\”button\” onclick = \”javascript:window.location='” + oList.DefaultViewUrl + “‘\”)>” +

“View All Events” +

“</button> ” +

“</div> “;
div.Controls.Add(sbCreate);

}

In AddCalendar method, we will declare and create calendar control. We need reference to specify web and then we play with returned data.

private void AddCalendar()
{
SPCalendarView calendar = null;calendar = new SPCalendarView();calendar.Visible = true;calendar.EnableViewState = true;

calendar.ViewType = GetCalendarType(Page.Request[“CalendarPeriod”]);

calendar.DataSource = getDataFromCalendar(CalendarListUrl, DepartmentFilter);

calendar.DataBind();

div.Controls.Add(calendar);

}
/// <summary>
/// Gets the type of the calendar view.
/// </summary>
/// <param name=”type”>The type to be checked.</param>
/// <returns>Correct view type of calendar.</returns>
private static string GetCalendarType(string type)
{
if (type == null)

type = string.Empty;

switch (type.ToLower())

{

case “day”:

return “day”;

case “week”:

return “week”;

case “timeline”:

return “timeline”;

default:

return “month”;

}

}

Now we implement for getDataFromCalendar() method. In this method, I seperated for 2 kind of event, they’re normal event and recurrence event, this method also use Location field as condition for filter material. Then we detect calendar view type (day view, week view,  month view) by request variables and as a last thing we bind data to calendar and add calendar to web part controls collection.

private SPCalendarItemCollection getDataFromCalendar(String str_calendarlist_url, String Organizer)
{
SPCalendarItemCollection collection = new SPCalendarItemCollection();string temp = “”;SPList oList = GetListByUrl(str_calendarlist_url);SPCalendarItem citem = null;

foreach (SPListItem item in oList.Items)

{

// Get calendar item which is not recurrence event

if (!(bool.Parse(item[“Recurrence”].ToString())))

{

if (item[“Location”] != null)

{

// Filter with Location

if (item[“Location”].ToString().ToLower().Trim() == Organizer.ToLower().Trim())

{

citem = new SPCalendarItem();

citem.ItemID = item[“ID”].ToString();

try

{

citem.StartDate = DateTime.Parse(item[“EventDate”].ToString());

}

catch { }

try

{

citem.EndDate = DateTime.Parse(item[“EndDate”].ToString());

}

catch { }

temp = item[“Title”] as string;

temp += ” ” + item[“RecurrenceData”];

citem.Title = item[“Title”] as string;

temp = oList.ParentWebUrl + “/” + oList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;

citem.DisplayFormUrl = temp.Replace(“//”, “/”);

citem.Location = item[“Location”] as string;

citem.Description = item[“Description”] as string;

if (bool.Parse(item[“Recurrence”].ToString()))

{

citem.IsRecurrence = true;

}

else

{

citem.IsRecurrence = false;

}

citem.CalendarType = Convert.ToInt32(SPCalendarType.Gregorian);

collection.Add(citem);

}

}

else

{

citem = new SPCalendarItem();

citem.ItemID = item[“ID”].ToString();

try

{

citem.StartDate = DateTime.Parse(item[“EventDate”].ToString());

}

catch { }

try

{

citem.EndDate = DateTime.Parse(item[“EndDate”].ToString());

}

catch { }

temp = item[“Title”] as string;

temp += ” ” + item[“RecurrenceData”];

citem.Title = item[“Title”] as string;

temp = oList.ParentWebUrl + “/” + oList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;

citem.DisplayFormUrl = temp.Replace(“//”, “/”);

citem.Description = item[“Description”] as string;

if (bool.Parse(item[“Recurrence”].ToString()))

{

citem.IsRecurrence = true;

}

else

{

citem.IsRecurrence = false;

}

citem.CalendarType = Convert.ToInt32(SPCalendarType.Gregorian);

collection.Add(citem);

}

}

}

// Query recurrence data

SPQuery queryRecurrence = new SPQuery();

queryRecurrence.ExpandRecurrence = true;

queryRecurrence.Query = “<Where>” +

“<And>” +

“<Eq>” +

“<FieldRef Name=’Location’ />” +

“<Value Type=’Text’>” + Organizer + “</Value>” +

“</Eq>” +

“<And>” +

“<Eq>” +

“<FieldRef Name=’fRecurrence’ />” +

“<Value Type=’Recurrence’>1</Value>” +

“</Eq>” +

“<DateRangesOverlap>” +

“<FieldRef Name=’EventDate’ />” +

“<FieldRef Name=’EndDate’ />” +

“<FieldRef Name=’RecurrenceID’ />” +

“<Value Type=’DateTime’>” +

“<Month />” +

“</Value>” +

“</DateRangesOverlap>” +

“</And>” +

“</And>” +

“</Where>” +

“<ViewFields>” +

“<FieldRef Name=’Title’ />” +

“<FieldRef Name=’EventDate’ />” +

“<FieldRef Name=’EndDate’ />” +

“<FieldRef Name=’fRecurrence’ />” +

“<FieldRef Name=’Absentee’ />” +

“</ViewFields>”;

// Look forward from the beginning of the current month

DateTime calendarDate = DateTime.Today;

if (!string.IsNullOrEmpty(Page.Request[“CalendarDate”]))

DateTime.TryParse(Page.Request[“CalendarDate”], out calendarDate);

queryRecurrence.CalendarDate = new DateTime(calendarDate.Year, calendarDate.Month, 1);

// Returns all items (including recurrence instances) that

// would appear in the calendar view for the current month

SPListItemCollection calendarItems = oList.GetItems(queryRecurrence);

foreach (SPListItem listItem in oList.GetItems(queryRecurrence))

{

SPCalendarItem calItem = new SPCalendarItem();

calItem.ItemID = listItem[“Edit Menu Table End”].ToString();

calItem.Title = listItem[“Title”].ToString();

calItem.CalendarType = Convert.ToInt32(SPCalendarType.Gregorian);

calItem.StartDate = (DateTime)listItem[“Start Time”];

if (listItem[“End Time”] != null)

{

calItem.hasEndDate = true;

calItem.EndDate = (DateTime)listItem[“End Time”];

}

else

calItem.hasEndDate = false;

if (listItem[“Description”] != null)

calItem.Description = listItem[“Description”].ToString();

if (listItem[“Location”] != null)

calItem.Location = listItem[“Location”].ToString();

temp = “”;

temp = oList.ParentWebUrl + “/” + oList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;

calItem.DisplayFormUrl = temp.Replace(“//”, “/”);

collection.Add(calItem);

}

return collection;

}

Finally, I implement an utility method to get SPList from an url. So, you can easy to define where is the datasource by webpart’s properties

/// <summary>
/// Get List By URL
/// </summary>
/// <param name=”url”>List’s URL</param>
/// <returns>SPList</returns>
private SPList GetListByUrl(string urlListname)
{
if (urlListname.IndexOf(“http://&#8221;) < 0)if (urlListname.IndexOf(“Forms”) > -1)urlListname = SPContext.Current.Site.Url + urlListname;else if (urlListname.IndexOf(“Lists”) < 0)

urlListname = Microsoft.SharePoint.WebControls.SPControl.GetContextSite(Context).RootWeb.Url + “/Lists/” + urlListname + “/AllItems.aspx”;

else

urlListname = SPContext.Current.Site.Url + urlListname;
SPList listFromUrl;

using (SPSite site = new SPSite(urlListname))

{

using (SPWeb web = site.OpenWeb())

{

string pageUrl = urlListname.Substring(web.Url.Length).TrimStart(new char[] { ‘/’ });

listFromUrl = web.GetListFromUrl(pageUrl);

}

}

return listFromUrl;

}

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen
Related Article:
SMC makes it easier for end user to see calculate data in sharepoint custom list fields.SMC is use visifire(http://www.visifire.com/) charts .This webpart to calculate sharepoint list fields easier and user can make a decision certainly. Webpart use sharepoint webservices for get list information. Users can select a list then set a field name ,and they can see pie or column charts.

Moss1.jpg
Moss2.jpg
Moss3.jpg
Moss4.jpg

Download Installation package and source code here

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

JavaScript logo JavaScript has never been hotter, thanks to projects like Node.js, JQuery and PhoneGap. You can now use JavaScript for scripting in the browser, for creating desktop and mobile applications, and for creating server side web applications. But how do you get started? We’ve compiled a list of six free books and tutorials for beginning programmers, but those with programming experience may find some of these resources valuable as well. Feel free to add more free resources in the comments.

Experienced programmers may also want to take a look at this StackOverflow thread on the subject, but most of the resources there aren’t free.

Eloquent JavaScript

Eloquent JavaScript cover

Eloquent JavaScript is a JavaScript book by Marijn Haverbeke. The digital form is free, and a print version is forthcoming. The book assumes no prior programming experience. Of the books listed here, this one might have the most to offer experienced programmers looking to get started with JavaScript.

Sams Teach Yourself JavaScript in 24 Hours

Sams Teach Yourself JavaScript in 24 Hours cover

Sams Teach Yourself JavaScript in 24 Hours by Michael Moncur is part of the well known series of Sams books.

Learn to Program with Javascript

Learn to Program with Javascript is a series of tutorials from About.com. As the title implies, no programming experience is required.

W3Schools JavaScript Tutorial

W3Schools is one of the most venerable and respected resources for online tutorials, and of course it has its own JavaScript tutorial. It also has a stash of JavaScript examples, including some advanced scripts.

Wikibooks JavaScript

The Wikibooks book on JavaScript isn’t finished yet, but it’s one to watch. If you’re an experienced JavaScript programmer looking for a way to give back to the community, maybe you could contribute to this book.

SitePoint’s JavaScript Tutorials

Simply JavaScript

SitePoint is another well respected online source for tutorials and books. It has a few free tutorials, mostly as previews for its books. Its JavaScript Guru List is a good place to start.

Bonus: Douglas Crockford’s JavaScript Lectures

Well known JavaScript expert and JavaScript: The Good Parts author Douglas Crockford has a series of free lectures available on history of JavaScript, its features, and its use.

ReadWriteWeb

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

1. Permission Level and Group

a. Permission Level

A set of permissions that can be define and grant to users or SharePoint groups on a site, library, list, folder, item, or document. Base on that, SharePoint Authorization to perform specific actions such as viewing pages, opening items, edit item, and creating subsites,…

SharePoint allow administrator easy to change, customize, add or delete permission level, even if you want to clone permission level from existed permission level

b. Group

Default of each SharePoint site has 3 Group of user at least, and these groups are managed by Owner group. Site Ownser can change group settings and assign user group permission

SharePoint also allow Domain user and domain group can be added under permission level without via SharePoint Group. But I suggest we use SharePoint Group to manage user permission.

Administrator can define more SharePoint Groups if pre-configured permission of SharePoint Group is not suitable with their bussiness.

If we have many subsites under root site, we just create one unique Group. It’s available and across sites. So that we can not define more than one duplicated name for SharePoint Group.

Under subsites, we can set it as inherit or not from parent site.

2. Site Permission

As you know, when a Sharepoint site created, SharePoint provides three SharePoint User Groups by default: Visitor, Member and Owner. ¬†These permission are three of nine “Permission Levels” that are provided for different group of security level. ¬†In each Permission Level has been set as a specific permission list for working on portal. So that, SharePoint separate permission in two secion: SharePoint Group and Permision Level

As above, a SharePoint group can be defined maps to permission or combined from many permission levels. People belongs to group will have corresponding site permission in current site and cross subsites (if they’re inherited parent site permissions)
Create a group

a. On the home page of the site, click Site Actions, point to Site Settings, and then click People and Groups.
b. On the New menu, click New Group.

c. Type a name for the group, and then type a brief description of the group’s attributes.
d. To change the owner of the group, type a new account name, or click Browse to find an individual’s account name. It should be owner group instead of ¬†¬† ¬†individual account
e. In the Group Settings section, click the options to specify who can see the members of this group and who can add or remove members.
f. In the Membership Requests section, click the options to specify whether you will accept requests to be added or removed from this group, and to add     the e-mail address that users can send requests to. If you select Auto-accept requests, users are automatically added or removed when they make a request.
g. In the Give Group Permission to this Site section, select the permission level that you want to allow for this group.
h. Click Create.From People and Group page, you can modify Permission, change Group Settings of current group if you have group owner permission. More than that, you can assign or remove domain user/domain group as well from tool bar menu.

3. List Permission

SharePoint also provides ability to manage individual lists, document libraries or on folders with specific permission as below

Windows SharePoint Services 3.0 allows you can stop impaction site permissions to specific lists, then you can add or remove permission of users or groups of users for viewing, editing, or deleting item…
Add users/groups to a list or library
a. Open the list or library in which you want to add users or SharePoint groups.
b. On the Settings menu, click Document Library Settings or List Settings.
c. On the Customize page, in the Permissions and Management column, click Permissions for this document library or Permissions for this list.

d. In this case, on the Actions menu, click Edit Permissions, and then click OK to confirm that you want to create unique permissions. On the New             menu, click Add Users.
e. In the Add Users section, specify the users and SharePoint groups you want to add to this securable object.
f. In the Give Permission section, either add the users to an existing SharePoint group or give them permission directly to the securable object and select         one or more of the check boxes to give these users the permissions you want on this securable object.

g. Click OK.

4. Personal Permission

Beside site permision and list permission, WSS 3.0 provide personal permission to customize on lists like Create, change, and delete personal views of lists. On webparts, they can add or remove, change display position personal Web Parts on a Web Part Page, more than that, they also update Web Parts to display personalized information as well. Ofcourse, these changes will not impact to another people interfaces.

Below table tell you overview about personal permissions

5. Permission management recommended practices?
a. We need to understand where are strengths and weeknesses between using SharePoint groups and Active Directory user groups.In case of SharePoint group, SharePoint allow administrator can group many people responsible to same business team. More than that, SharePoint API allow decentrialized and isolation mainternance, base on that, it also support third party authentication for internal and external using authorization. Because this way, require administrator manage many people so IT has been become bottleneck for too long.Active Directory Domain group is centralized and standardization tool for IT to manage user domain for their enterprise and other external services, fortunately domain groups are visible to SharePoint so that IT can assign a group of people to SharePoint Group without manternance for both of SharePoint Group and AD Groups when they have some changes, there’re also SharePoint API can query for user permission as well. But it should be consider because AD account is not always suitable for external user authentication.

b. Should be consider to use target audiences for your sites when design Access strategy

c. When you break inheritance of sites, lists, libraries,… it’s mean you lose your customizations and make you difficult to manage unique permissions. So             that try to inherit permission whenever you can.

References:

  1. Permission level and Permissions: http://office.microsoft.com/en-ca/windows-sharepoint-services-help/permission-levels-and-permissions-HA010100149.aspx
  2. Manage Permission Level: http://office.microsoft.com/en-us/windows-sharepoint-services-help/manage-permission-levels-HA010100143.aspx
  3. SharePoint Groups, Permissions, Site Security and Depreciated Site Groups: http://blogs.msdn.com/b/joelo/archive/2007/06/29/sharepoint-groups-permissions-site-security-and-depreciated-site-groups.aspx
Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen

Microsoft Office SharePoint Server 2007 also knows as MOSS 2007 is now becoming familier with every body using Microsoft Office. It enables your team to create sub websites, personal sites to share documents, keep track your tasks, discussions, contacts, receive newsletters, communicate and others imformation.

Today, I will introduce to show you how easy to create a publishing website from SharePoint with many available features to make it collaborate

1.Create Web Application

a.From Start menu, focus to Microsoft Office Server, and select SharePoint 3.0 Central Administration.

b.On Central Administration, choose Application Management. Application management screen show as below

c.Click Create or Extend Web Aplication and select Create a new Web Application link.

d.Create New Web Application page show with some information need to fill in

·Description: Should be fill some description about your website

·Port: Input Port number to run web application on IIS

·At Configurable, under Application Pool section, fill username and password will be used to manage this web app.

·Leave others default value and then Click OK to create Web Application

·Wait Operation in process ultil browser redict you to Application Created page. From this page, click on Create Site Collection link to continue create Site Collection on Web Application just created above


2. Create Site Collection

a.On Create Site Collection page. You can fill some information about your Web site as below.

b.At template selection section, we select Collaboration Portal under Publishing Tab

c.Fill Primary Administrator Username and Secondary Administrator Username

d.Click OK to complete create Site Collection.

e.Now, you can enjoy Collaboration publishing web site with some feature:

·News

·Document Library

·Images Library

·Links

·Tasks

·Team Discussion

·Report

·Search

3. Customize Home page

a.Add Document Library to Home page

·From Home page, Select Site Actions, click on Edit Page

·Now you are checked out Default.aspx file for your modification. Click on Add a Web Part under Top Zone section

·Add Webpart Dialog appear, click on Advanced Web Part gallery and options to select find Document Library webpart

·From Add Web Parts on Right panel, click Filter and select Libraries, select Document and then click Add (make sure Add to drop down list has been selected Top Zone) to add Document Library webpart to Top Zone section.

b.Add Team Discussion webpart and Task webpart

From Add Web Part on Right panel, change Filter to Lists, and select Tasks to insert to Top Zone (or you can change another zone to change when the webpart will be place on). Do same step with Team Discussion.

c.Add Events webpart and show it as Calendar View

·From Add Web Part on Right Panel, select Event and Add to Top Zone.

·After that, select edit to show context menu from Event webpart

·Change Selected View and Zone index as below

·Click OK to see result.

·Now you can edit these webpart just added on home to change layout or display position on home page easily.

·Finally, to complete edit and publish for everybody.  Click Publish from the top menu of the page.

·Now you have a collaboration website with many usefull featers for your team or your department like this

References:

1.Create a SharePoint Site: http://office.microsoft.com/en-us/sharepoint-designer-help/create-a-sharepoint-site-HA010131447.aspx

2.Customize SharePoint site on Web browser: http://office.microsoft.com/en-us/windows-sharepoint-services-help/customizing-a-sharepoint-site-in-your-web-browser-part-1-HA001122865.aspx

Hoang Nhut Nguyen
Email: nhutcmos@gmail.com
Skype: hoangnhut.nguyen
%d bloggers like this: