My Latest Findings

An update to SharePoint 2010 Language Pack Downloader was just posted to Codeplex that handles the download of the Service Pack 1 of the SharePoint 2010 Language Packs.

Grab it while it’ s hot!

http://sp2010dl.codeplex.com

Download link here.

 

Microsoft has just released the Service Pack 1 of SharePoint 2010 and Office 2010 today. A breakdown of the new features of SharePoint 2010 is available in my post here.

To download the updates, select the following links :

Links removed. see official download page.

The Official announcement is here!

*** I will be updating my SharePoint 2010 Language Pack Downloader tool on Codeplex very soon to help the download of the SP1 language packs.

You can also visit the SharePoint 2010 update center and the Office 2010 update center .

Office 2010 Service Pack 1 Changes include:

  • Outlook fixes an issue where “Snooze Time” would not reset between appointments.
  • The default behavior for PowerPoint “Use Presenter View” option changed to display the slide show on the secondary monitor.
  • Integrated community content in the Access Application Part Gallery.
  • Better alignment between Project Server and SharePoint Server browser support.
  • Improved backup / restore functionality for SharePoint Server
  • The Word Web Application extends printing support to “Edit Mode.”
  • Project Professional now synchronizes scheduled tasks with SharePoint task lists.
  • Internet Explorer 9 “Native” support for Office Web Applications and SharePoint
  • Office Web Applications Support for Chrome
  • Inserting Charts into Excel Workbooks using Excel Web Application
  • Support for searching PPSX files in Search Server
  • Visio Fixes scaling issues and arrowhead rendering errors with SVG export
  • Proofing Tools improve spelling suggestions in Canadian English, French, Swedish and European Portuguese.
  • Outlook Web Application Attachment Preview (with Exchange Online only)

Please post here if you encounter any issues during the installation of these updates.

 

Microsoft CEO Steve Balmer has just completed his official launch presentation of Office 365, Office in the Cloud. This collaboration suite is available today in 40 markets around the world.

This service offers all the convenience of Microsoft Exchange, Lync, Office and SharePoint in a convenient and cost-effective service hosted up in the Microsoft cloud online. More details on this platform can be obtained from www.office365.com.

SharePoint 2010 in the cloud had a few features that I am looking forward to investigate, specifically the way they have made the public facing site templates to edit the header logo by double clicking the logo location. I have also noticed the zones for content seem to be editable by the user. I hope all these features can be ported back to the full SharePoint 2010 environment. I can see these features bringing increased flexibility for our end users when creating their content. More on that in a future post.

 

Microsoft just released a document detailing the new features and updates to SharePoint 2010 in their soon to be released Service Pack 1 update that should be available today at 9AM PST (Tuesday June 28). Here is a rundown of these changes:

  • SP1 will add support for SQL server code named ‘Denali’ (Future SQL Server Editions (Microsoft Site)) which is essentially SQL Server 2011.
    Some of the top new features that will be included in SQL ‘Denali’ are listed here: Top 9 New Features of SQL Server Denali.
  • SP1 brings a new functionality called Shallow Copy, which essentially lets you move a site to a different content database without having to move all the Remote Blob storage content. The links will get updated to point to the existing external storage locations. This will significantly increase the migration speed in a large site collection. Note: This feature requires the use of Microsoft® SQL Server 2008 R2 Remote Blob Store.
  • SP1 adds a site recycle bin so site collections and sites can be recovered after an accidental deletion. The process is similar to the existing recycle bin features that were already available in SharePoint.
  • The Storage Space Allocation page (StorMan.aspx) has been reintroduced in SP1 with an improved version of StorMan.aspx that displays better information to the end users with regards to their quota information. The StorMan.aspx functionality was present in past SharePoint versions but was removed from SharePoint 2010.
  • Filter values can now be passed from one filter to the next in PerformancePoint Services
  • SP1 now adds support for Internet Explorer 9 in Internet Explorer 8 Standards Mode and also adds support for Google Chrome.
  • The SP1 update includes all the fixes that were released in past cumulative updates from RTM until April 2011.
  • The following are three new Powershell commands that are being introduced in SP1:
    • Get-SPDeletedSite
    • Remove-SPDeletedSite
    • Restore-SPDeletedSite
  • The Move-SPSite Powershell command has been updated to add the Shallow Copy parameter (RBSProviderMapping)

The complete release information is available from Microsoft here.

 

The World Partner Conference 2011 is approaching fast and Orangutech will be presented on stage during the opening keynote as 2011 World Partner of the Year in Public Sector, Health. This is a great achievement and I would like to congratulate the whole team for the hard work.

Orangutech Recognized as 2011 Microsoft Public Sector – Health Partner of the Year

Ottawa, Ontario, Canada — June 22, 2011 —
Today, Orangutech proudly announced it has won the 2011 Microsoft Public Sector – Health Partner of the Year Award. The company was honored among a global field of top Microsoft partners for demonstrating excellence in innovation and implementation of customer solutions based on Microsoft technology.

“It is truly an honor to be recognized by Microsoft in the category of Health Partner of the Year,” said Mike Maadarani, president and CEO of Orangutech.  “This achievement comes from our dedication to bettering the public sector industry abroad leveraging Microsoft technologies for areas such as application and knowledge sharing, public accountability, and business process improvement.”

Awards were presented in multiple categories, with winners chosen from a set of more than 3,000 entrants worldwide. Orangutech was recognized for providing outstanding solutions and services in Microsoft Public Sector – Health Partner of the Year. The Public Sector – Health Partner of the Year Award honors partners who have exhibited excellence in providing innovative and unique services or solutions based on Microsoft technologies to health customers. This award recognizes Orangutech for demonstrating industry knowledge and expertise, as well as consistent, high-quality, predictable service or solutions to health customers. This partner also has shown business leadership and success through strong growth in new customer additions and revenue.

“Microsoft is pleased to honor our partner Orangutech with the Public Sector – Health Partner of the Year Award,” said Linda Zecher, corporate vice president of Worldwide Public Sector at Microsoft. “Orangutech improves the quality of healthcare by providing smart, efficient collaboration and access solutions that help its health customers improve patient care.”

The Microsoft Partner Awards recognize Microsoft partners that have developed and delivered exceptional Microsoft-based solutions over the past year.

Orangutech

Orangutech is an award-winning Microsoft Gold Certified Partner that helps public and private organizations navigate through the jungle of available information technology by providing flexible and scalable information systems designed to improve business processes, productivity and profitability.

See the press release here: http://www.orangutech.com/Eng/company/Pages/awards.aspx

The award is posted here on the WPC 2011 web site: http://digitalwpc.com/Awards/2011-Awards?awardId=9&categoryId=136#fbid=CVpA-2oydiR

 

I just posted an update to the SharePoint 2010 Language Pack Downloader on Codeplex. This update brings auto URL grabbing from the Microsoft Download Center site. This will ensure a smoother experience in the future even if the download URLs were to change.

Please let me know if there is anything else any of you would require out of this tool by leaving a comment here.

Here is a download link to the latest version (1.2): SharePoint 2010 Language Pack Downloader 1.2

Here is the project on Codeplex: http://sp2010dl.codeplex.com/

Thanks.

 

Please visit this page for updated information on the Language Pack Downloader tool.

I came across an article this morning that lets you Download ALL SharePoint 2010 Language Packs using PowerShell.

It occured to me that it would be interesting to extend this even further and have a windows app to download these language packs instead of going to the Microsoft’s site.

One thing that bugs me when I need to download language packs is that I can’t read the interface when the language is switched. I always have to guess where the download button is located.

I came up with a desktop application that presents the user with a simple interface to download the language packs.

The interface to download language packs

Here is another view as a download is progressing.

The interface with download progress

The application has been updated here and on codeplex to address a small issue when downloading a single language pack.

Here is the download link for the updated application: SharePoint 2010 Language Pack Downloader 1.1

This software is provided as is with no warranties. I will not be held liable it it fries your computer. 🙂

The code for this project is available on codeplex here: http://sp2010dl.codeplex.com/

 
I had a requirement recently to create and delete a web application and associated site collection programmatically. Deleting was achieved using the following code:
SPServiceCollection services = SPFarm.Local.Services;
foreach (SPService curService in services)
{
	if (curService is SPWebService)
	{
		SPWebService webService = (SPWebService)curService;
		foreach (SPWebApplication webApp in webService.WebApplications)
		{
			foreach (SPAlternateUrl alturl in webApp.AlternateUrls)
			{
				if (alturl.Uri.ToString().Contains("http://sp"))
				{
					foreach (SPContentDatabase db in webApp.ContentDatabases) db.Unprovision(); //delete databases
					webApp.UnprovisionGlobally(true); //removes iis site, app pool and inetpub folder
					webApp.Delete(); //delete from central admin
				}
			}
		}
	}
}

The function to create the WebApp and Site Collection is:

SPWebApplicationBuilder builder = new SPWebApplicationBuilder(SPFarm.Local);
SPWebApplication newApplication;
builder.Port = port;
Uri url = new Uri("http://sp");
string host = url.Host;
int port = 80;
builder.HostHeader = host;
builder.ApplicationPoolId = "Sharepoint - " + host + port.ToString();
builder.IdentityType = IdentityType.SpecificUser;
SPFarmManagedAccountCollection manaccountcollection = new SPFarmManagedAccountCollection(SPFarm.Local);
SPManagedAccount maccount = manaccountcollection.FindOrCreateAccount("DomainUser");
builder.ManagedAccount = maccount; //use the SPManagedAccount to receive the username and password automatically
builder.RootDirectory = new System.IO.DirectoryInfo("C:\Inetpub\wwwroot\wss\VirtualDirectories\" + host + port.ToString());
builder.CreateNewDatabase = true;
builder.DatabaseName = "WSS_Content_" + host + port.ToString();
builder.DatabaseServer = "SPDB";
builder.UseNTLMExclusively = true;
newApplication = builder.Create(); // Create new web application
newApplication.Provision();

SPSite mySiteCollection = newApplication.Sites.Add("/","New Site","Site Description",1033,"BLANKINTERNETCONTAINER#0","Domainme","Me","my@email.com");
mySiteCollection.Close();
We were using both functions together to do an automated redeployment of the complete solution everytime a new build was done. Many things in here were not documented in MSDN so a lot of trial and error was used more specifically with the use of the SPManagedAccount.
If you end up using this code, please let me know in the comments.
 

In past projects, we’ve always made web parts customizable in the web part properties panel using a custom toolbox. I have found that in doing that, you are allowing the end users of your site to make changes to the other properties of the web part thinking these other settings are their’s to play with. Yes I know you’ve seen it before.

What I have started to do in more recent projects is to make the web parts customizable directly in the WebPart display view – when the page is in edit mode. This way, you only expose the properties that the end user should be playing with and it makes for a better editing experience from the end-user’s perspective.

A typical scenario would be:

  • The user inserts the web part on the page
  • The user fills in the required properties in the web part itself
  • The user clicks save on the web part form and boom, the web part is ready to use.

This process has successfully been used in many web parts so far so here is the process I use to make it work:

First, one of the properties i always want to override is the chrome of the web part. we force the web part to display with no chrome using the following block of code inside the WebPart class:

public override PartChromeType ChromeType
{
	get { return PartChromeType.None; }
	set { base.ChromeType = PartChromeType.None; }
}

Then we declare the properties for the web part:

private int _Height;
[Browsable(true)]
[Category("Appearance")]
[DefaultValue(false)]
[Description("Max Height")]
public int Height
{
	get
	{
		return _Height;
	}
	set
	{
		_Height = value;
	}
}

Then what we need to do is override CreateChildControls and check the current display mode:

Panel editPanel;
TextBox height;
Button submit;

protected override void CreateChildControls()
{
	if (SPContext.Current.FormContext.FormMode == SPControlMode.Display)
	{
		//Render WebPart here for display mode
		//check if properties are configured and display message if not
	}
	else// SPContext.Current.FormContext.FormMode = SPControlMode.Edit
	{
		editPanel = new Panel();
		editPanel.Width = Unit.Pixel(460);
		editPanel.Controls.Add(new LiteralControl("WebPart Configuration"));
		editPanel.Controls.Add(new LiteralControl("<br/>Please define the height in pixels<br/>"));
		height = new TextBox();
		if (Height >= 0)
		{
			height.Text = Height.ToString();
		}
		editPanel.Controls.Add(height);
		editPanel.Controls.Add(new LiteralControl("<br/>"));
		submit = new Button();
		submit.Text = "Save";
		submit.Click += new EventHandler(submit_Click);
		editPanel.Controls.Add(submit);
		Controls.Add(editPanel);
	}
}

Finally we need to define the event handler for the button click:

void submit_Click(object sender, EventArgs e)
{
	if (!string.IsNullOrEmpty(height.Text.Trim()))
	{
		Controls.Remove(editPanel);
		Height = Convert.ToInt32(height.Text);
		this.SetPersonalizationDirty(); //This is what saves the property
		Controls.Add(new LiteralControl("WebPart Configured."));
	}
	else
	{
		Controls.Add(new LiteralControl("Missing value."));
	}
}

When you click the submit button, the value gets saved to the web part properties.

The end-users have reported great feedback on this simplified web part configuration process so we intend on using this method on all future projects.

Let me know if you try it out!

 

If you have multiple send to connections to create or prefer to automate the deployment tasks related to your SharePoint environment, the following bit of code will help you create them automatically using the SPOfficialFileHost collection of your current site’s web application:

using (SPSite site = new SPSite("http://sp/"))
{
    SPWebApplication webapp = site.WebApplication;
    SPOfficialFileHost newhost = new SPOfficialFileHost(true);
    newhost.OfficialFileUrl = new Uri(site.Url+"/records/_vti_bin/officialfile.asmx");
    newhost.OfficialFileName = "Records Center";
    newhost.ShowOnSendToMenu = true;
    newhost.Action = SPOfficialFileAction.Move;
    webapp.OfficialFileHosts.Add(newhost);

    webapp.Update();
}

The options for the action are the following:

  • You can move the document from one location to another
    SPOfficialFileAction.Move;
  • You can create a copy of the document and send it to another location
    SPOfficialFileAction.Copy;
  • Or you can move the document but leave a link of its new location in its former location
    SPOfficialFileAction.Link;