Wednesday, April 4, 2012

News feed with CQWP

How come I always tell the company I work or consult for, that I am not a developer.. and then I always end up developing stuff anyway? For my part, it is more of a frustration part, because it takes so much time to develop than to use the out of the box functionality. But sometimes out of the box is just not enough.

The last few months I have been working on setting up a SP 2010 server farm from scratch, setting up a new intranet, branded it, structuring it and... developing some parts like the News rollup. I have used the CQWP and it is so powerful, I love it. I have built kind of a Facebook news stream with it, that rolls up news from all departments, the site image and source where the news comes from and also ratings and news images.

This is the result:

And here is an explanation of the parts on the news webpart:



This is how I built the CQWP:

I have built a custom news page layout, where I have a site column called "Siteimage" where I store the actual site image. (The site image is marked with a red number 1 in the image above). So there will be different site images depending on where the news are created. In this case I have for example a picture of a vessel if the news comes from a vessel site. And that is how Facebook news feed works, you have the source image to the left in the news feed (the profile picture) and if you click on the news you will land on that persons wall. This works the same way, but you will land on the site where the news was created.

Red number 2 in the picture above shows that I have selected the Title and Byline and the title is the URL to the news page.

Then I have added the site title (our sites are named by department), the Author and the Article Date as red number 3 shows in the picture above.

Of course any thumbnail photos are displayed and you can make them clickable so they enlarge on click (red number 4 in picture above)

And last, I wanted to add the ratings since I like the social interaction also. Red number 5 in pic above, if not obvious :) In fact, I also have added the Note board to our news, so if you open the news page you can post comments on it. I have not added the "Comments" though on the front page, since I have not found any good way to do that. I don't think the Note board comments are connected to the page itself, but maybe someone out there knows? I have found a way to display comments on Blogs, but not on Page libraries.

My next news project will be based completely on Blogs. There are many reasons for that: it is so easy to blog (and use Word if the user wants to), the entire news is displayed, you can display ratings and number of comments, I have built the similiar news feed as above but using Blog instead.

I really like the CQWP but I wish it was even more flexible and that you could perform lookups on custom fields and values a bit easier. And maybe a drag and drop GUI to build the CQWP without having to export and import it, copy and modify xsl etc. Also, you need to be very creative and use your imagination to find the solution on how to bring out the stuff you want to show in your CQWP.

Tuesday, April 3, 2012

Setup connection filter on AD

If you want to reduce the amount of user profiles that are imported from AD, then a good way is to filter the AD connection. Then you can filter out disabled accounts and for example, accounts that does not have a mail address. Go to you AD connection in the User Profile Service Application and hover the name of the AD connection. Click on "Edit connection filters":


To filter out disabled accounts, select "userAccountControl" from the Attributes list, and wait for the page to reload.

Then select "Bit on equals" and set it to "2" (without quotation marks)

                              
To filter out accounts that does not have a mail address, select "mail" from the Attributes list and wait for the page to reload.
Then select "not present" from the Operator list.

Monday, April 2, 2012

Cmdlets I use most often

I love the power of PowerShell. And I use it a lot to do stuff, it is much easier and faster than using CA. And I find myself googling Microsoft or other pages over and over for the same commands, because I simply cannot remember the parameters and it is faster to just google it. So I will add them here now, for my own convenience! Copy and paste away ;)

Features

Install-SPFeature -path "MySiteLayouts"
Enable-SPFeature -Identity MySiteLayouts -Url https://sps
Uninstall-SPFeature "MySiteLayouts"
Disable-SPFeature "MySiteLayouts" -Url https://sps

Solutions

Add-SPSolution E:\SP_install_files\Webparts\WebPart.wsp
Install-SPSolution –Identity WebPart.wsp –WebApplication https://sps -GACDeployment

Delete a list by GUID

$w = Get-SPWeb "https://sps"
$w.Lists.Delete([System.Guid]$w.Lists["844d6cc3-3a64-48fa-858e-15ec1ce3ccc4"].ID)

Create a site using custom template

Get custom template ID
$url = "https://sps"
$site= new-Object Microsoft.SharePoint.SPSite($url )
$loc= [System.Int32]::Parse(1033)
$templates= $site.GetWebTemplates($loc)
foreach ($child in $templates){ write-host $child.Name "  " $child.Title }
$site.Dispose()

Create a new site with the custom template id
$newWeb = New-SPWeb -Url https://sps/newsite -Name "New Site Name"
$newweb.ApplyWebTemplate("{E56C86A6-1A7A-4448-9422-F0EB5C0D99F8}#Custom_Site_Template")
$newWeb.Dispose()

Delete database

get-spdatabase
$del = get-spdatabase "9437afae-953a-4373-81dc-88186e0ec30e"
$del
$del.Delete()

Get all site features and save them in a txt file

Get-SPFeature | Sort -Property Scope,DisplayName | FT -GroupBy Scope DisplayName,Id > E:\output\AllInstalledFeatures.txt

Create new site and import cmp

New-SPWeb -url "https://sps/docs/"
Import-SpWeb -identity "https://sps/documents/" -path "E:\imports\docs.cmp" -IncludeUserSecurity

Import photo thumbnails from AD

Note: To be able to import the photos you need to first add an import of those in the User Profile Service Application. Go to User Properties, scroll down to "Pictures", scroll down to the list of AD fields and select "thumbnailphoto". Click on Import and add it. Save and do a full user profile import synchronization. Then you can run this command (I have this in Scheduled Tasks, it runs every night):

Update-SPProfilePhotoStore -CreateThumbnailsForImportedPhotos 1 -MySiteHostLocation https://mysites

Create State Service Application

New-SPStateServiceDatabase –Name “StateService” | New-SPStateServiceApplication –Name “State Service” | New-SPStateServiceApplicationProxy –DefaultProxyGroup

Start a Service Application

Often the WSS_Usage service application is not started by default when you install a new server.

Get-SPServiceApplicationProxy
$UP = Get-SPServiceApplicationProxy | where {$_.ID -eq "e31e3a1b-3c46-42d0-ad78-822cb48daafc"}
$UP.Provision()

The GUID is the service application that is not started.