Sharepoint Designer 2010 Reusable Workflows - well sort of

ahhh so annoying - so you've created a parent content type and you've associated it with multiple child content types and you want to associate it to a workflow for them, they are really similar BUT not with every damned content type in the box - can you do it? NOPE. SO ANNOYING, the solution is that you'll have to create workflows for each of your content types. Before you say it - yes I know you can probably solve this in Visual studio but are you familiar with change management in big companies -  lots of not fun and puts the mockers on doing any development. So that's off the agenda. I know someone who built a WHOLE CMDB application in SPD on a development box just to avoid any change management oooh the irony, the upshot is it featurized, of course not , is it supportable , you'd hope....
I digress, so the only solution is to use the ability of globally reusable workflows to be copied and modified, to speed the process up BUT I am not relishing the request that will inevitably come for changes to the workflow.

Sharepoint Designer 2010 List views

Can I find anything good on how these work? - can I heck as like ... not a sausage. Well that's not entirely true there are three blog posts , here is the first:
http://blogs.msdn.com/b/sharepointdesigner/archive/2009/11/16/sharepoint-2010-list-view-blog-series-part-1-introduction-to-the-new-list-view.aspx by Greg Chan, but though he promises oodles of posts we have but three. So like the Flash Gordon style cliff-hangers of old we are left not knowing how Flash escapes certain doom, in our case we don't know how we are to get out of list view doom.
Don't get me wrong, list view are good because they look to scale much better than what we had before but but how do you do any of the things we'd do in DVWP's I've not found out yet, excepting to say that jquery looks to come to our aid for the purpose of representing lists in whatever way we need for example you want horizontal lists, here is some jquery that looks to do the trick http://social.msdn.microsoft.com/Forums/en/sharepointcustomization/thread/ef43f6bd-1276-4760-8996-a6c9eedf75db
I am hoping there are great untapped depth in this that I just haven't got to the bottom of yet.

Erik Swenson - the New Heather Solomon ?

Maybe maybe not - but in any event here is a very handy Heather Solomon like show and tell explaining the CSS behind some well known Sharepoint 2010 base css classes http://erikswenson.blogspot.com/2010/01/sharepoint-2010-base-css-classes.html

Searching DVWP with the Data form web part

How come I've not noticed this before....excellent how to on this http://philwicklund.com/archive/2009/04/11/using-the-data-view-web-part-to-search-a-sharepoint-list.aspx. Which works like a charm. However you'll want it to be a bit cleverer than that . e.g. search as you type so here's how http://zieglers.wordpress.com/2009/09/08/document-library-search-web-part/ in particular if you want to do searching of a contacts list then here's how http://zieglers.wordpress.com/2009/03/01/search-contacts-web-part/

Cascading lookup columns

Well the answer to most every question lately seems to be Jquery and if you want to do cascading lookups then jquery seem to have the answer - here is a very clear description of what is necessary http://spservices.codeplex.com/wikipage?title=%24%28%29.SPServices.SPCascadeDropdowns&referringTitle=Documentation.

case insensitive filtering of dataview by server variable URL

The lesson learned today is knowing a thing is quite different from being able to apply it- so in this case the thing I knew was that XML is CASE SENSITIVE and URL's ARE NOT so when trying to use this excellent trick for using the address of a site to filter a list http://vspug.com/maartene/2007/09/10/how-to-filter-data-in-a-data-view-web-part-based-on-the-url-of-the-web-part-page/ it didn't work- didn't work UNTIL I remembered that if my site address didn't match the case of the URL it wouldn't wouldn't work. To make it so that the filter parameter and the URL don't have to match for case I used a variation on this trick http://geekswithblogs.net/ranganh/archive/2005/09/12/53520.aspx
Happy day only 3-4 hours wasted.

Totals in Sharepoint Designer

It turns out that this is pretty straightforward - but woh betide you if you try putting sum against currency - it just doesn't want to know - but if you follow these instructions http://community.bamboosolutions.com/blogs/bambooteamblog/archive/2009/04/24/how-to-total-calculated-columns-in-a-sharepoint-list.aspx should see you right.

Tricks with Picture Libraries

How to make picture library default to the excellent film strip view http://www.endusersharepoint.com/STP/topic/force-picture-library-display

Picture library and web part connections can be friends - but only one picture at a time!

http://social.technet.microsoft.com/Forums/en-US/sharepointgeneral/thread/ace32505-f31b-41fc-b3e1-5e4bd56a234e

Locale ID's explained

Thank you Mr/Ms Sharethelearning here are locale ID's are explained so you get the date showing as you would want it to be http://sharethelearning.blogspot.com/2007/05/formatflag-in-ddwrtformatdate-method.html

Sharepoint and redirects.

What I have learnt - using the source in the url is all very well but I have not found it to be universally useable SO.
If you just want to submit a form and have it wizz off to somewhere other than the all items view then you want somethig like this

<input type="button" value="Form Action" name="btnFormAction" onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={your address goes here with no quotes}')}" /&gp;

However if you want the redirect to be dynamic - and of course that is what you want
then MR autosponge has the answer here

http://autosponge.spaces.live.com/blog/cns!D7F85948C20F0293!233.entry

However what this post doesn't say explicitly is what to do when you want to redirect to a child site that or to a child list so you need the ID of the item to generate the URL - here's what I used


<xsl:variable name="dvt_1_automode">0</xsl:variable>
<xsl:param name="ListItemId">


<xsl:variable name="rec"<>xsl:value-of select="@Title"></xsl:variable>
<xsl:variable name="RedirectLoc">https://blah/sites/isms/<xsl:value-of select="/dsQueryResponse/Rows/Row/@Title"></xsl:variable

or

<xsl:variable name="RedirectLoc">https://blah.com/auditrecnfollowups.aspx?recid=<xsl:value-of select="/dsQueryResponse/Rows/Row/@Title"/>%lt;/xsl:variable>


the xpath /dsquery/Rows/Row/@Title is the important bit that uniquely identifies the attribute. This cost me much swearing, the chief reason being that when the redirect url is wrong IN ANY WAY it just does nothing and gives you a 404 so the only way to test this is to have the $redirectloc redisplayed on the screen till its right.

Creating one to many relationships between Sharepoint Lists

People will say that creating two (or more lists) that are joined in sharepoint is difficult / impossible/ involves 3rd party web parts well its just not true. Admittedly its not exactly like doing it in 'normal' database, but it can be done and furthermore there are numerous ways to do it:
  1. Assuming that you have list A and list b then you could simply use a lookup. To view them is to connect the web parts. Assuming that the two lists are on the same page then you can use a radio button (and it can only be a radio button) to produce (master details views). I have to admit this a little limited but I have use it and when the details is actually a library this represents quite a lot of advantages. Users can create a list entry for each project lets say and then see all the documents related to a particular project - actually its a lot like folders.
  2. To return to classic example list M for master and list D for details - how to create a 'Detail' entry from within a Master entry. The scenario I have in mind is that the user chooses a particular company and then they want to 'add a new employer'. I've seen various options for doing this but this one worked for me- assuming that you only want to ever edit the child details and master details seperately then create a link column on the master list called something like 'add a employee' to do this you'll need to know how to create an html calculated column http://pathtosharepoint.wordpress.com/category/the-html-calculated-column/
    and into this you'll need to put a unique key from the parent column. In my case each master had a RecID which was a GUID (we were trying to port a database into sharepoint), this RecID was used to tie the two lists together, you can use this column later to do joins. This column can be of almost any type -e.g. date and time suggests itself and here is a microsoft article detailing the steps to pulling the contents from the query string - and pre-populating some part of a new item form http://blogs.msdn.com/sharepointdesigner/archive/2007/06/13/using-javascript-to-manipulate-a-list-form-field.aspx . They use a similar trick to put default values into lists.
  3. To create views from multiple lists again lots of options
    http://blah.winsmarts.com/2007-10-Performing_joins_between_SharePoint_lists.aspx - though its not necessary you can just put the two lists into dataviews and attach the same querystring filter to both of them - assuming that the two lists share the same column. If you are feeling very naughty and assuming that you have to produce some sort of report of masters and details then you can create a formula column with a querystring in the url and use that to populate an iframe (make sure you create a blank master page , or it will take up too much space) . Strictly speaking this is v bad for accessibility and all sorts of other best practice, however in my case it was to produce printable reports so it didn't matter.
  4. In my case I had a siutation where the master and child lists needed to be edited together, after much swearing, because I was trying to edit two lists on the same page, which I couldn't do, the only way I found to fix this was to update the entries in the master and use workflow to copy them to them to the details list.

Got to get started with Jquery

Nice looking introductions and such for those wanting a way in to this http://docs.jquery.com/Tutorials

and here is Jan Tielens - every reliable intro to jquery and sharepoint

http://weblogs.asp.net/jan/archive/2008/11/20/sharepoint-2007-and-jquery-1.aspx

and those nice people at endusersharepoint have some pretty cool stuff too

http://www.endusersharepoint.com/?p=1075

Taking the Oh out of Folders

I was due to give a presentation at SPtechcon in Boston come June - but I shan't be anymore and one of the topics that I was to address was about folders well those nice people at enduser sharepoint have some thoughts here http://www.endusersharepoint.com/?p=1610

I'll be adding my own in due course

Server Variables in Sharepoint Designer

This looks to me to be away of creating something like a view with permissions - grrrreat

http://blogs.msdn.com/spdsupport/archive/2008/07/25/data-view-data-form-parameters-you-don-t-know-about.aspx

use the server variable for the logged on user against a column in a list and you can create a paramaterized page with permissions on it - least ways that is what I am thinking I can do - need to try it out.

KPI's in MOSS and WSS

Well you think you know how things go...and then you see something that makes you think again...in particular I didn't realise that you could slip HTML inside calculated columns - how useful is that!

This creates formulas, using some simple html and css inside a calcuated column, completely automatically, its rather lovely.http://www.pathtosharepoint.com/HTMLcc/default.aspx and a little script needs putting in a CEWP the script lives here http://pathtosharepoint.wordpress.com/2008/09/01/using-calculated-columns-to-write-html/

Also if you have MOSS and you want KPI's from your Sharepoint Lists then try this

http://sharepointservices.wordpress.com/2008/09/30/how-to-creating-a-kpi-list-based-on-a-sharepoint-lists/

My sites only cons few pros

People claim to want facebook like functionality inside Sharepoint presumably because that profile stuff seems really neat...and yet and yet:

Facebook is very popular but does it make sense in an organization, well here is someone who thinks not http://www.steptwo.com.au/columntwo/my-sites-do-they-work/ and here is another with a less diplomatic view http://community.bamboosolutions.com/blogs/bambooteamblog/archive/2009/04/16/sharepoint-my-sites-suck.aspx

So what is the beef well
  1. Facebook does whatever it does really well but what is that exactly that helps advance a business case inside your organization. Really what?
  2. Consider Facebook takes NO HTML to use BUT to tweak sharepoint mysites you'll need to get your head round web parts and potentially HTML and - be honest - how many users do you know that can use this web parts, even with training, how many want to spend the time?.
  3. In a few sentences explain what my sites are for? Can't? perhaps there is a reason for that.
  4. Maybe in answer to three you said something about the profile feature. Wouldn't it be useful to see what expertise there is around the organization / enterprise?. OK let's think about a scenario: You are the best DB programmer in a big organization and you are a busy busy fellow, and now you have the opportunity to tell the whole enterprise that you are also an expert in COBOL would you? NO you wouldn't, you're busy, there is no chance you would spend time making yourself more work. If you don't believe me then here is some evidence from 10 years at IBM http://giatalks.com/blog/sharepoint-my-sites-it-aint-just-about-profiles-people/

BUT before we all give up in despair, the same article has some interesting and perhaps obvious alternatives. To return to the scenario above : you are an expert you might like to have a blog or an FAQ that you can direct people to make sure that you don't get asked the same question for the hundredth time. Gia Lyons makes the distinction between seekers and contributors, one are always looking over profile type information and contributors are the sort who they are looking for.

Contributors share their experiences and expertise via an internal Internet-style blog service that enables not only individual blogs, but team blogs, and offers all blogs on a single website for easy browsing, searching, and integration with other applications via a RESTful API, also automatically associated with and accessible from a user’s profile. Seekers can discover experts simply by subscribing to a particular topic from the blog service - no need to go through a profile first (but you can if you want).


Content query web part is fine - as far as it goes

Make sure that you're using the thing to the max
http://www.datasprings.com/Resources/ArticlesInformation/AboutSharePointContentQueryWebPart/tabid/835/language/en-US/Default.aspx


So Microsoft has a good looking paper - to tweak the query to do someone pretty cool stuff
http://msdn.microsoft.com/en-us/library/aa981241.aspx
but it looks a bit too easy to make a mistake - a bit headache inducing

But hey codeplex comes to the rescue -
http://www.codeplex.com/ECQWP


If that looks a bit too much like rare meat try -

http://www.heathersolomon.com/blog/articles/customitemstyle.aspx

Graphical sharepoint planning

Wow - just when I was waiting for some solutions to the numerous planning and documentation problems that are inherent in Sharepoint two come along at once, if you want to go the Visio 2007 route and have a look at this:

http://www.visio-for-sharepoint.com/VFS-Pages/VFS-Purchase.asp

You might like to hear someone saying that Visio is the way to go http://sharepoint.microsoft.com/blogs/mikeg/Lists/Posts/Post.aspx?ID=1524

And here is free wireframe to do site designs on
http://cid-1b6acb7b24d13da6.skydrive.live.com/self.aspx/.Public/Site%20Wireframe%20Template.vsd

There look to be a tonne more here
http://www.visguy.com/2006/12/05/sharepoint-planning-visio-diagrams/

but I can't vouch for this lot as I am sat at a mac so no go the Visio.

But wait those nice people at endusersharepoint use Mind Manager (which despite its frankly Orwellian name seems to be a very useful tool) - don't believe me ? have a look at this http://ow.ly/1aS1

sharepoint and jquery - hmmm interesting

Those smarty pants at sharepointenduser have some terrific stuff about jquery

http://www.endusersharepoint.com/?cat=457

Sharepoint admin Videos

What's not to love about video that explain things - I can't think of anything :

http://www.sharepointbuzz.com/blog/tag/video/

Invalid look-up when you try to upload a document to offce 2007

You curse you swear but then you read this:

http://patrikluca.blogspot.com/2009/01/invalid-look-up-value-durig-upload-of.html

and fantastic its' all fixed and into the bargain you have discovered something new in office 2007 called the document inspector.

And wait a mo' what if you need to do remove 'hidden metadata' from your Office 2003 documents - well those nice people at Microsoft have an add-on for this very problem:

http://www.microsoft.com/downloads/details.aspx?familyid=144e54ed-d43e-42ca-bc7b-5446d34e5360&displaylang=en

Nested if statements in calculated columns

Assuming that you have a column called severity and likelihood and you've multiplied them together in column called risk score:

=IF([Risk Score]<=3,"Low",IF([Risk Score]=9,"High","Medium"))
should work out what is a high medium and low risk. The post below this, from endusersharepoint.com is fine and lays out in excruiting detail all that is necessary to do anything with calculated columns. However the above solution for nesting columns looks easier on the eye, and mind or at least my eye and mind and sort of explain itself really.