AWG Blogs

Monday, February 13, 2012

Setting Default DisplayCategory for Create Site Page

In MOSS 2007, one way to have your template category selected by default when click "Create Site" from Site Actions when Office SharePoint Server Publishing is enabled is edit 12\TEMPLATE\LAYOUTS\EditingMenu\SiteAction.xml (Backup first!). Edit the ConsoleNode item whose action is "cms:CreateNewSiteAction" and ID is "wsaCreateSite." Add (or replace) two attributes:
IsSiteRelative="true"
NavigateUrl="_layouts/newsbweb.aspx?DisplayCategory=MyCustomTemplates"

Note, the IsSiteRelative attribute is required so that subsites don't get file not found errors.

Finally, recycle the app pool.

Another option that applies to site collections only is to edit _catalogs\masterpage\Editing Menu\CustomSiteAction.xml, adding the Console tags with custom content as needed.

Tuesday, February 7, 2012

Publishing Enabled on Root Site

I noticed that unless Office SharePoint Server Publishing is enabled on the root site in a site collection, subsites do not show the Pages Library as a "List Type" in the Content Query Tool Part, regardless of whether Publishing is enabled as site feature in the subsite.

I have not done exhaustive testing to see whether this is related to the initial site definition that was applied, but at any rate, this appears to be a bug (or "gotcha") in MOSS 2007.

Thursday, February 2, 2012

LookupColumn fields require no FieldRef?

That appears to be the case when writing the CAML for a custom field.

I asked the question as it concerns FileLeafRef on MSDN. We'll see if I get a response or pointed to some more documentation.

I did notice in
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\XML\FLDTYPES.XML that the definition for File has its InternalType set to Lookup, so maybe that's my answer.

What got me curious is observing that updates to my computed column via /_layouts/FldEdit.aspx caused the whole FileRefs element to be removed! I noticed that the doclib list continued to show the field, but the list did not. Presumably because the fieldref was not needed...

More questions along these lines:

Why is the FieldRef Name="Created" necessary in a custom computed "Name" field in a document library, but not in a custom computed "Title" field in a List?

How come <Column Name='Created_x0020_Date' /> causes "Exception from HRESULT: 0x80020009 (DISP_E_EXCEPTION)" YSOD, when clearly the documentation states that it should return an integer, since it's a lookup type.

Monday, January 30, 2012

"There is no Web named..." error

When setting up your web reference in Visual Studio 2008, you must enter http://server/sites/mysitecollection/mysubsite/_vti_bin/Lists.asmx?WSDL including the "WSDL" at the end! Or else, you will get this error in your inner exception, when attempting to access a list, using the GetList(listguidstring) method.

Sunday, January 29, 2012

Sharepoint PowerShell Shortcuts

Command to output sorted site columns:
PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> set-variable -option constant -name url -value "http://servername/sites/teamsite/"
PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> $site = new-object Microsoft.SharePoint.SPSite($url)
PS C:\WINDOWS\system32\WindowsPowerShell\v1.0> $site.rootweb.Fields | foreach { $fieldValues = @{ "Display Name" = $_.Title; "Internal Name" = $_.InternalName; "Value" = $site.rootweb.AvailableFields.GetFieldByInternalName($_.InternalName) }; New-Object PSObject -Property $fieldValues | Select @("Display Name","Internal Name","Value") } | Sort-Object -Property "Internal Name" | Out-GridView

refs:
http://get-spscripts.com/2010/09/get-all-column-values-from-sharepoint.html

see also: http://blogs.flexnetconsult.co.uk/colinbyrne/2008/02/26/PowerShellSharePointAddAListItem.aspx

Thursday, January 26, 2012

CQWP Bug

[MOSS 2007] Got the following error when I selected "Show items from the following list" and browsed to a doc lib whose display name contained a forward slash (/):
Cannot save the property settings for this Web Part. The list name is not valid. The list name should refer to a list within the specified site..."

So to workaround the inability of this SP component to recognize lists with forward slashes in them, I decided to try to filter by list ID under Additional Filters. No go again. I entered the list's QUID and no data was returned. This appears to be a bug as well.

So I settled for a Data Form Web Part hooked up to an XML Web Service configured in the Data Source Library: Port set to ListsSoap12, Operation: GetListItems; listName=GUID (including curly brackets). Had to tinker with the XSLT to get the display somewhat correct, e.g. to get the doc image to show, use <img src="/_layouts/images/{ddwrt:MapToIcon('',string(@ows_DocIcon))}"/>

Wednesday, January 18, 2012

Adapting the schema.xml

I wanted to add a new field to the base item content type -- i.e. content type ID 0x01. I also wanted to change the display name of title. This is what worked for my schema.xml.

Copy the Schema.xml from FEATURES\CustomList\CustList to my Feature folder named after the Name attribute of the ListTemplate element.

Comment out both ContentTypeRef elements.

Create a ContentType element that likes like:
<ContentType
ID="0x0100DECA7022CD234bb1BE7E9BCFF593552F"
Name="Item"
Group="List Content Types"
Description="Create a new list item.">
<FieldRefs>
<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"
Name="Title"
Required="TRUE"
DisplayName="My Title"
/>
<FieldRef ID="{AA242460-9794-4d45-A726-938D1B8B7D72}"
Name="My Added field"
Required="FALSE"
/>

</FieldRefs>


</ContentType>

NOTE the ContentType ID structure: follows the GUID method from MSDN http://msdn.microsoft.com/en-us/library/ie/aa543822.aspx, MAKE sure to remove any hyphens!!!

Add all modified fields to the Fields element, including Title, LinkFilenameNoMenu, and LinkTitle. You can get samples from a schema.xml that you copy from a list in SharePoint Manager.

Adjust View BaseViewID="1" as needed.