<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6606423461258811033</id><updated>2024-09-05T06:03:20.532+12:00</updated><category term="sharepoint"/><category term="columns"/><category term="javascript"/><category term="web services"/><category term="2010"/><category term="SPAPI"/><category term="amarok"/><category term="bash"/><category term="caml"/><category term="css"/><category term="data source"/><category term="dcop"/><category term="install"/><category term="jquery"/><category term="registry"/><category term="sed"/><category term="sharepoint 2007 search scope"/><category term="sharepoint nintex workflow 2007"/><category term="sharepoint xslt permissions"/><category term="ssp"/><category term="themes"/><category term="workflow"/><title type='text'>Sack of Holding</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-6872081602481999002</id><published>2011-07-04T19:48:00.000+12:00</published><updated>2011-07-04T19:48:29.382+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint 2007 search scope"/><title type='text'>Folder Search Scopes</title><content type='html'>There&#39;s something that drives me nuts every time I need to use it, but because I don&#39;t do it often I always forget what it is I do to fix it. This is setting up Search Scopes.&lt;br /&gt;
&lt;br /&gt;
There&#39;s plenty of information out there regarding how to set up a search scope for a folder so I&#39;m not going to go into those details, but one thing that comes up is the dreaded &quot;xyz Items, Total: 0&quot; error. That is, when you set up a search scope, an approximate number of items within the scope is returned, but after a refresh, there is still 0 items in total - what gives?&lt;br /&gt;
&lt;br /&gt;
Well, the basic answer is that when you set up a folder search scope, you need to use the url of the default server mapping. In the case I&#39;ve just worked with, the default server mapping is &lt;b&gt;http://appname.company.com&lt;/b&gt;, but because it&#39;s available externally the urls I work with are &lt;b&gt;http&lt;u&gt;s&lt;/u&gt;://appname.company.com&lt;/b&gt;. When creating the rule for the search scope, I had to enter &lt;b&gt;http://appname.company.com/sites/collection/Lists/listname&lt;/b&gt; for the scope to pick up the valid items.</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/6872081602481999002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2011/07/folder-search-scopes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6872081602481999002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6872081602481999002'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2011/07/folder-search-scopes.html' title='Folder Search Scopes'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-7559337936647524990</id><published>2011-05-10T09:34:00.001+12:00</published><updated>2011-05-10T16:44:02.394+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint nintex workflow 2007"/><title type='text'>Nintex 2007 - Query Workflow Tasks list for approval comments</title><content type='html'>When using the Request Approval action in Nintex workflow, you can use the Approver Comments field for notifications. However, it&#39;s pretty ugly when there are multiple approvers, e.g.:&lt;br /&gt;
&lt;blockquote&gt;Joe Bloggs (Approved) 10/05/2011 8:05 a.m. - 10/05/2011 8:05 a.m.&lt;br /&gt;
(DOMAIN\jbloggs) This is good to go!&lt;br /&gt;
Fred Dagg (Not Required) 10/05/2011 8:05 a.m. -&lt;/blockquote&gt;What people find is that they don&#39;t want all that extra information, just the comments.&lt;br /&gt;
&lt;br /&gt;
Nintex provides a &lt;a href=&quot;http://connect.nintex.com/files/folders/tutorials_and_how_tos_nw2010/entry14757.aspx&quot;&gt;tutorial&lt;/a&gt; for doing this by querying the Workflow Tasks list directly for the ApproverComments fields and putting them into a collection variable. The key is to set up the filters for the query:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Workflow Item ID:&lt;/b&gt;&amp;nbsp;ID&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Workflow List ID:&lt;/b&gt;&amp;nbsp;List ID&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;This is all well and good if there is only ever one approval workflow performed on an item. What happens if the approval workflow is run multiple? Querying the Workflow Tasks list will bring back the comments from all instances of the workflow. By default, there isn&#39;t a way to differentiate between the workflow instances because there isn&#39;t a &quot;Workflow Instance ID&quot; field in the tasks list.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;So how can we get around this? It&#39;s quite simple - create a unique task name for each instance of the workflow and perform the query based on this unique task name:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Calculate a date:&lt;/b&gt;&amp;nbsp;Use date when action is executed and include time. Store the ISO 8601 date string into a text workflow variable, e.g. &lt;i&gt;Workflow Start ISO&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Request approval:&lt;/b&gt;&amp;nbsp;Set the task name to &quot;XYZ Approval - &lt;i&gt;Workflow Start ISO&lt;/i&gt;&quot;, i.e. include the workflow start variable in the task name.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Query list:&lt;/b&gt;&amp;nbsp;Add filter rule for Title = &quot;XYZ Approval - &lt;i&gt;Workflow Start ISO&lt;/i&gt;&quot;, while still including the original filters from above.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;This will bring back the ApproverComments for all tasks relating to this workflow instance. You can add an additional filter rule where ApproverComments is not null to cut down the results (e.g. if there are multiple approvers, but you are only interested in the first response, the others are blank).&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/7559337936647524990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2011/05/nintex-2007-query-workflow-tasks-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/7559337936647524990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/7559337936647524990'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2011/05/nintex-2007-query-workflow-tasks-list.html' title='Nintex 2007 - Query Workflow Tasks list for approval comments'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-7973678367915625336</id><published>2010-09-03T13:30:00.000+12:00</published><updated>2010-09-03T13:30:45.833+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint xslt permissions"/><title type='text'>ddwrt:IfHasRights() and site permissions</title><content type='html'>There&#39;s plenty of blog articles out there about using the IfHasRights() function, including a list of all the possible permission entities. But one thing I didn&#39;t find and had to work out for myself is the fact that the IfHasRights() function is executed at the site permissions level, not the list level.&lt;br /&gt;
&lt;br /&gt;
For example, in the site I&#39;m developing I had a group set with Read access only as the default site permission, but for a custom list gave them Contribute access. On the custom display form I have a block that should only be visible to users with edit access, i.e. IfHasRights(4). This doesn&#39;t work for people who are in this group because at the site level they don&#39;t have edit access.&lt;br /&gt;
&lt;br /&gt;
The upshot is that if you are intending to have different levels of access within a site and are using IfHasRights(), you will need to give the users the highest level of access required for whatever list, and then reduce their access level for the elements they won&#39;t have access to.</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/7973678367915625336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/09/ddwrtifhasrights-and-site-permissions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/7973678367915625336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/7973678367915625336'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/09/ddwrtifhasrights-and-site-permissions.html' title='ddwrt:IfHasRights() and site permissions'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-6455586247534358168</id><published>2010-08-18T10:15:00.001+12:00</published><updated>2010-08-18T10:15:28.369+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2010"/><category scheme="http://www.blogger.com/atom/ns#" term="css"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><category scheme="http://www.blogger.com/atom/ns#" term="themes"/><title type='text'>SharePoint 2010 Publishing Site Gotchas</title><content type='html'>&lt;div&gt;Just been playing with SharePoint 2010 Publishing sites and have found a couple of &quot;gotchas&quot;, or items of interest where Microsoft have made little mistakes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The first one relates to the default Master page for a Publishing Site. It is called &quot;nightandday&quot;, however inside the master page and the associated css file, there are two spellings:&lt;/div&gt;&lt;div&gt;nightandday - attached to the body tag&lt;/div&gt;&lt;div&gt;nightanday - attached to the left navigation menu&lt;/div&gt;&lt;div&gt;If you are creating a new custom master page based on the nightandday master, be sure to update both class names to your new name.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The second one relates to the new themeable styles feature. This is where you can add &#39;commands&#39; to the css file to tell SharePoint what to do with the colours when a site administrator changes the theme of the site.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The basic command is:&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;/* [ReplaceColor(themeColor:&quot;Dark1&quot;)] */ background-color: #000000;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Adding this line to a css definition tells SharePoint to set the background-color of the relevant tag to the Dark1 colour of the site&#39;s theme.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;There are 12 definable colours with five generated variations each (Lightest, Lighter, Medium, Darker, Darkest), giving a total of 60 colours to choose from for styling your site (not including all the other variations that can be created using extended commands such as tinting).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;In the nightandday.css file, there are instances of a non-existent variation being used, e.g. Accent6-Light. SharePoint ignores the variation and the resulting colour is the base colour, i.e.:&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;Accent6-Light === Accent6&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The below image shows the full colour table when the site theme is set to &quot;Classic&quot;:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivGDBI5I7VnOLAHez-lz89fmq8s5LSxFSiivYjAU0mCQjQ7AI8Oyn1BRG3jbTDR3SAan1VldlSqZAORhbtzrvscGXL-KG-HXUeqk6G9gyrPzFkunA6SvZG4XwB3kXO7qTzIrYRchIXJ2B1/s1600/sp2010+colour+table.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivGDBI5I7VnOLAHez-lz89fmq8s5LSxFSiivYjAU0mCQjQ7AI8Oyn1BRG3jbTDR3SAan1VldlSqZAORhbtzrvscGXL-KG-HXUeqk6G9gyrPzFkunA6SvZG4XwB3kXO7qTzIrYRchIXJ2B1/s400/sp2010+colour+table.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/6455586247534358168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/08/sharepoint-2010-publishing-site-gotchas.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6455586247534358168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6455586247534358168'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/08/sharepoint-2010-publishing-site-gotchas.html' title='SharePoint 2010 Publishing Site Gotchas'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivGDBI5I7VnOLAHez-lz89fmq8s5LSxFSiivYjAU0mCQjQ7AI8Oyn1BRG3jbTDR3SAan1VldlSqZAORhbtzrvscGXL-KG-HXUeqk6G9gyrPzFkunA6SvZG4XwB3kXO7qTzIrYRchIXJ2B1/s72-c/sp2010+colour+table.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-1398884941711179532</id><published>2010-07-27T11:14:00.000+12:00</published><updated>2010-07-27T11:14:39.684+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="registry"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><category scheme="http://www.blogger.com/atom/ns#" term="ssp"/><title type='text'>Creating new SSP with host headers</title><content type='html'>I&#39;ve just spent several hours banging my head against the desk trying to set up a MOSS development environment, and not being able to access the newly created SSP. It has nothing to do with permissions (couldn&#39;t access with the account that was used to create the SSP), or having the SSP name the same as the App Pool name.&lt;br /&gt;
&lt;br /&gt;
What was the issue was that I was being tricksy and using port 80 with all three of the sites (SSP Admin, MySite and Portal) and using host headers to identify them. Without any changes, this causes a 401.1 error because in Microsoft&#39;s words: &quot;...the Web Site uses Integrated Authentication and has a name that&#39;s mapped to the local loopback address.&quot;&lt;br /&gt;
&lt;br /&gt;
In the &lt;a href=&quot;http://support.microsoft.com/kb/896861&quot;&gt;Microsoft KB article&lt;/a&gt;, there are two fixes, both involve editing the registry:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Specify host names in the BackConnectionHostNames multi-string value, or&lt;/li&gt;
&lt;li&gt;Disable the loopback check.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;The second one is easier if it&#39;s a dev environment, but the first is preferred if using NTLM authentication.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/1398884941711179532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/07/creating-new-ssp-with-host-headers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/1398884941711179532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/1398884941711179532'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/07/creating-new-ssp-with-host-headers.html' title='Creating new SSP with host headers'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-6888167685717462923</id><published>2010-07-16T05:52:00.001+12:00</published><updated>2010-07-21T15:29:16.238+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="amarok"/><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="dcop"/><category scheme="http://www.blogger.com/atom/ns#" term="sed"/><title type='text'>Add album to amarok playlist remotely</title><content type='html'>Completely different track here, this is more for my own reference until I get around to creating the bash script...&lt;br /&gt;
&lt;br /&gt;
I&#39;ve just discovered the need to manipulate amarok remotely through SSH and came across DCOP which is really cool.&lt;br /&gt;
&lt;br /&gt;
The first problem is when you login in via SSH, DCOP is not running in your session because it&#39;s not a KDE session. You can connect to the one that is already running, by adding the &#39;--user `whoami`&#39; parameter to each DCOP call. I just created an alias to automatically do all that:&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;alias damarok=&#39;dcop --user bruzie amarok&#39;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Get list of tracks for an album:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;damarok collection query &quot;select url from tags, album where tags.album = album.id and album.name = &#39;&amp;lt;album name&amp;gt;&#39; order by track&quot; | sed &#39;s/^\./&quot;/g; s/$/&quot;/g&#39; &amp;gt; playlist&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Then replace the newlines with a space:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;sed &#39;{:q;N;s/\n/ /g;t q}&#39; playlist&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Which leaves me with a nicely formatted list of tracks to paste into:&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;damarok playlist addMediaList [ &amp;lt;tracklist&amp;gt; ]&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;So I can start playing them:&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;damarok player play&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/6888167685717462923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/07/add-album-to-amarok-playlist-remotely.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6888167685717462923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6888167685717462923'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/07/add-album-to-amarok-playlist-remotely.html' title='Add album to amarok playlist remotely'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-1621245570451403168</id><published>2010-06-22T12:12:00.002+12:00</published><updated>2010-07-16T05:39:49.059+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="caml"/><category scheme="http://www.blogger.com/atom/ns#" term="data source"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><title type='text'>Filter linked data source based on the current date</title><content type='html'>If you use a linked data source for your fancy page, but need to only show &quot;current items&quot;, you need to manually edit the &lt;b&gt;SelectCommand &lt;/b&gt;CAML&amp;nbsp;attribute of the &lt;b&gt;SharePoint:SPDataSource &lt;/b&gt;node for the relevant list:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;lt;View&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;Query&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;Where&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Gt&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;FieldRef Name=&quot;EventDate&quot; Type=&quot;DateTime&quot;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Value Type=&quot;DateTime&quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;Today OffsetDays=&quot;-7&quot;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/Value&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/Gt&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/Where&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/Query&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;,Courier,monospace;&quot;&gt;&amp;lt;/View&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;OffsetDays allows you to specify an offset from Today. In this case it is one week in the past (to show recently &quot;expired&quot; items). Don&#39;t forget to htmlencode it!&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/1621245570451403168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/06/filter-linked-data-source-based-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/1621245570451403168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/1621245570451403168'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/06/filter-linked-data-source-based-on.html' title='Filter linked data source based on the current date'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-9102303431833941552</id><published>2010-06-16T06:35:00.004+12:00</published><updated>2010-06-16T08:41:33.350+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><category scheme="http://www.blogger.com/atom/ns#" term="SPAPI"/><category scheme="http://www.blogger.com/atom/ns#" term="web services"/><category scheme="http://www.blogger.com/atom/ns#" term="workflow"/><title type='text'>Get Workflow TemplateID</title><content type='html'>On my custom display form for a list I want to create a link to the Start Workflow page of a specified workflow. Getting the URL is simple, open an item and select to start the desired workflow. Copy the resultant URL and use it on the custom page (after sanitising the Source parameter to make it generic or to add an XSL parameter).&lt;br /&gt;
&lt;br /&gt;
However, one of the required URL parameters is the &lt;b&gt;TemplateID&lt;/b&gt; of the workflow, which changes every time it is edited. This is an annoyance if you are in active development and the workflow is being updated regularly.&lt;br /&gt;
&lt;br /&gt;
So what we ideally want is the ability to get the workflow TemplateID from code. Luckily for us, MOSS provides the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/websvcworkflow.workflow.gettemplatesforitem(v=office.12).aspx&quot;&gt;GetTemplatesForItem&lt;/a&gt; method of the Workflow web service. I use Darren Johnstone&#39;s &lt;a href=&quot;http://darrenjohnstone.net/2008/07/22/a-cross-browser-javascript-api-for-the-sharepoint-and-office-live-web-services/&quot;&gt;JavaScript API for SharePoint services&lt;/a&gt;. Darren didn&#39;t implement the Workflow web service so I had to create it myself (only implemented the GetTemplatesForItem method so far).&lt;br /&gt;
&lt;br /&gt;
The GetTemplatesForItem method only takes one parameter, the full URL of an item, e.g. &#39;&lt;i&gt;http://moss2007/sites/WorkflowTestSite/Shared Documents/doc1.docx&lt;/i&gt;&#39;. If the item is in a list (and not a library), the ows_FileRef attribute of the item is required, e.g. &#39;&lt;i&gt;http://moss2007/sites/WorkflowTestSite/Custom List/23_.000&lt;/i&gt;&#39;.&lt;br /&gt;
&lt;br /&gt;
The returned XML includes information about the workflows attached to the item. To get the templateID, we use a simple jQuery selector with the name of the workflow:&lt;br /&gt;
&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;workflows = new SPAPI_Workflows(GetRootUrl());&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;wfitems = workflows.getTemplatesForItem(&quot;http://moss2007/sites/WorkflowTestSite/Custom List/23_.000&quot;);&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$(wfitems.responseXML).find(&quot;WorkflowTemplate[Name=&lt;i&gt;Name of Workflow&lt;/i&gt;] [nodeName=WorkflowTemplateIdSet]&quot;).attr(&quot;TemplateId&quot;)&lt;/span&gt;&lt;/blockquote&gt;Of course if all we are really wanting is the URL to get to the start workflow page, we could simply use:&lt;br /&gt;
&lt;blockquote&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;$(wfitems.responseXML).find(&quot;WorkflowTemplate[Name=&lt;i&gt;Name of Workflow&lt;/i&gt;]&quot;).attr(&quot;InstantiationUrl&quot;)&lt;/span&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/9102303431833941552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/06/get-workflow-templateid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/9102303431833941552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/9102303431833941552'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/06/get-workflow-templateid.html' title='Get Workflow TemplateID'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-876812624147779534</id><published>2010-06-15T19:00:00.001+12:00</published><updated>2010-06-15T19:00:01.735+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="columns"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><category scheme="http://www.blogger.com/atom/ns#" term="web services"/><title type='text'>Create list columns via Web Services</title><content type='html'>I have just spent a day up to my armpits in JavaScript, specifically JavaScript for creating columns on custom lists for a site configuration utility (where the team I was working in doesn&#39;t have developer level access to the farm).&lt;br /&gt;
&lt;br /&gt;
The bulk of the work for creating lists and libraries was done by my predecessor but the scope for adding columns to a list was restricted to adding existing site columns. I need to be able to automatically create new list columns.&lt;br /&gt;
&lt;br /&gt;
Using the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/lists.lists.updatelist(v=office.12).aspx&quot;&gt;UpdateList&lt;/a&gt; method of the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms774654(v=office.12).aspx&quot;&gt;Lists&lt;/a&gt; web service makes this quite simple. The tricky part is working out what parameters you use to create the fields (also applies to updating).&lt;br /&gt;
&lt;br /&gt;
The CAML query for creating a field is of the format:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Fields&amp;gt;&amp;lt;Method ID=&quot;1&quot;&amp;gt;&amp;lt;Field [attributes]/&amp;gt;&amp;lt;Field [attributes]/&amp;gt;&amp;lt;/Method&amp;gt;&amp;lt;/Fields&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There are lots of attributes to use for the &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;field&gt;&lt;/field&gt;&lt;/span&gt; node, but these are the common ones:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Type:&lt;/b&gt;&amp;nbsp;Corresponds to the column type in the Create Column screen (more details below)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Name:&lt;/b&gt;&amp;nbsp;Internal name of the field (replaced with the internalised version of the Display Name, see &lt;a href=&quot;http://sackofholding.blogspot.com/2010/06/use-friendly-developer-column-names.html&quot;&gt;this post&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Display Name:&lt;/b&gt;&amp;nbsp;The visible name of the column&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Required:&lt;/b&gt;&amp;nbsp;&quot;TRUE&quot; or &quot;FALSE&quot;, whether or not this column must contain information (not applicable to Yes/No or Calculated columns)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Description:&lt;/b&gt;&amp;nbsp;The column description&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Other attributes are used depending on the column type (with typical examples):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Single line of text&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Text&quot;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Multiple lines of text&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Note&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;AppendOnly=&quot;TRUE&quot;&lt;/span&gt; (append changes to the field, but only if versioning on the list is enabled)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;RestrictedMode=&quot;TRUE&quot;&lt;/span&gt; (defines whether users can use normal rich text, or enhanced rich text)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;RichText=&quot;TRUE&quot;&lt;/span&gt; (rich or plain text)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;NumLines=&quot;6&quot;&lt;/span&gt; (number of lines to display to the user while editing)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Choice&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Choice&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Format=&quot;Dropdown&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;FillInChoice=&quot;FALSE&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Mult=&quot;FALSE&lt;/span&gt;&quot; (sets multiple selection)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;CHOICES&amp;gt;&amp;lt;CHOICE&amp;gt;Choice 1&amp;lt;/CHOICE&amp;gt;&amp;lt;CHOICE&amp;gt;Choice 2&amp;lt;/CHOICE&amp;gt;&amp;lt;/CHOICES&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Default&amp;gt;Choice 2&amp;lt;/Default&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Currency&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Currency&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Max=&quot;321&quot;&lt;/span&gt; (maximum value)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Min=&quot;123&lt;/span&gt;&quot; (minimum value)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Decimals=&quot;0&lt;/span&gt;&quot; (number of decimal places)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;LCID=&quot;1033/5129&quot;&lt;/span&gt; (currency format, 1033 is USA, 5129 is NZ)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Date and Time&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;DateTime&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Format=&quot;DateOnly&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Default&amp;gt;[today]&amp;lt;/Default&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lookup&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Lookup&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;List=&quot;Lists/[List Name]&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ShowField=&quot;Title&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Mult=&quot;FALSE&quot;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Yes/No&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Boolean&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Default&amp;gt;Yes&amp;lt;/Default&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Person or Group&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;User&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;UserSelectionMode=&quot;0&quot;&lt;/span&gt; (all people)&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ShowField=&quot;ImnName&quot;&lt;/span&gt; (Name with presence)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Calculated&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Type=&quot;Calculated&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ResultType=&quot;Text&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;ReadOnly=&quot;TRUE&quot;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;Formula&amp;gt;=If([ECM Status]=&quot;Draft&quot;,&quot;Work in progress&quot;,&quot;Submitted&quot;)&amp;lt;/Formula&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;lt;FieldRefs&amp;gt;&amp;lt;FieldRef Name=&quot;ECM_x0020_Status&quot;/&amp;gt;&amp;lt;/FieldRefs&amp;gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/876812624147779534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/06/create-list-columns-via-web-services.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/876812624147779534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/876812624147779534'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/06/create-list-columns-via-web-services.html' title='Create list columns via Web Services'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6606423461258811033.post-6962545066582667982</id><published>2010-06-10T06:12:00.002+12:00</published><updated>2010-06-11T08:48:37.574+12:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="columns"/><category scheme="http://www.blogger.com/atom/ns#" term="sharepoint"/><title type='text'>Use friendly &#39;developer&#39; column names</title><content type='html'>When you create new columns in your SharePoint site, an internal name is created from the entered display name. SharePoint uses this internally for what it does and if you use SharePoint Designer to create custom pages for your lists, document libraries, etc. then this internal name is what you interact with.&lt;br /&gt;
&lt;br /&gt;
The internal name (&lt;b&gt;FieldName&lt;/b&gt;) is generated by replacing any spaces with &lt;i&gt;_x0020_&lt;/i&gt;, so for example, if you create a column called &lt;i&gt;Registration of Interest&lt;/i&gt;, the generated &lt;b&gt;FieldName &lt;/b&gt;will be&lt;i&gt; Registration_x0020_of_x0020_Interest&lt;/i&gt;. You can see this by looking at the field parameter in the URL when editing the column:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSnyQYGee-YOZvSBPmpCKayHZ97TkiKE-C2aO7wEgdgj1kju0GS5zYWf1tjnLISqK16mJwPhzNmjGk2Z7lVESmkaMu3ohzBGoGYK5qiMJTyAqKN4g_JJ73H9OIBtsVsDN3KjvwWxFtHDW1/s1600/column+edit+url.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;20&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSnyQYGee-YOZvSBPmpCKayHZ97TkiKE-C2aO7wEgdgj1kju0GS5zYWf1tjnLISqK16mJwPhzNmjGk2Z7lVESmkaMu3ohzBGoGYK5qiMJTyAqKN4g_JJ73H9OIBtsVsDN3KjvwWxFtHDW1/s320/column+edit+url.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In this case, SharePoint encodes the &#39;_&#39; as &lt;i&gt;%5F&lt;/i&gt;, which makes it even more messy.&lt;br /&gt;
&lt;br /&gt;
Now if you only work with out of the box configuration through the browser then that&#39;s fine, you don&#39;t need to worry about the &lt;b&gt;FieldName&lt;/b&gt;. But if you work with SharePoint Designer then it becomes horrible to look at, less than to use.&lt;br /&gt;
&lt;br /&gt;
What can you do? If you rename a site column, all you are doing is changing the display name, the &lt;b&gt;FieldName&lt;/b&gt; remains the same. So when you create a new column, give it the name you want to use internally, then change it afterwards to what you want it to display. In our above example, we would create the column by calling it &lt;i&gt;RegistrationOfInterest&lt;/i&gt; (alternatively &lt;i&gt;RegOfInterest&lt;/i&gt; or even &lt;i&gt;RoI&lt;/i&gt;). Once the column is created we can then rename it to &lt;i&gt;Registration of Interest&lt;/i&gt; but the &lt;b&gt;FieldName&lt;/b&gt; will still be &lt;i&gt;RegistrationOfInterest&lt;/i&gt;. A lot easier to use.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHhLVfsfK1RIFUdSueqZ_alpHkfug5t7eBwONpVuoknWheT2NIMQZPIpTjO2SgqD2Wjv31BcHLVXPylwINO3uKsT0NqtuAWeaxelmFBlJnxdxuexXl9Q-Dp4OgSvyzfkMvBuOa70yKmLha/s1600/column+edit+nice+name.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHhLVfsfK1RIFUdSueqZ_alpHkfug5t7eBwONpVuoknWheT2NIMQZPIpTjO2SgqD2Wjv31BcHLVXPylwINO3uKsT0NqtuAWeaxelmFBlJnxdxuexXl9Q-Dp4OgSvyzfkMvBuOa70yKmLha/s320/column+edit+nice+name.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You can also use this trick when creating lists and libraries to create friendlier URLs. A list called &lt;i&gt;Training Providers&lt;/i&gt; will display &lt;i&gt;/Training%20Providers/&lt;/i&gt; in the URL, but if you name the list &lt;i&gt;TrainingProviders&lt;/i&gt; on creation, then rename it, the URL portion will remain &lt;i&gt;/TrainingProviders/&lt;/i&gt;.</content><link rel='replies' type='application/atom+xml' href='http://sackofholding.blogspot.com/feeds/6962545066582667982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sackofholding.blogspot.com/2010/06/use-friendly-developer-column-names.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6962545066582667982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6606423461258811033/posts/default/6962545066582667982'/><link rel='alternate' type='text/html' href='http://sackofholding.blogspot.com/2010/06/use-friendly-developer-column-names.html' title='Use friendly &#39;developer&#39; column names'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSnyQYGee-YOZvSBPmpCKayHZ97TkiKE-C2aO7wEgdgj1kju0GS5zYWf1tjnLISqK16mJwPhzNmjGk2Z7lVESmkaMu3ohzBGoGYK5qiMJTyAqKN4g_JJ73H9OIBtsVsDN3KjvwWxFtHDW1/s72-c/column+edit+url.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>