SharePoint: The No Code way to Customize FAST Search – Part 1: Search Results


You may also be interested in: O’Reilly – SharePoint 2010 at Work


 

Editor’s note: Contributor Kathryn Ciaralli is the Director of the SharePoint Practice at Rightpoint. Follow her @kciaralli

SharePoint Search can be a great way to elevate the findability of content to a whole new level; even better, it’s easily customizable. I used to think about FAST Search customization in the sense that they can only be achieved via code or PowerShell, and to some degree, that’s correct. However, there’s a lot that can be implemented to enhance the search experience: results, best bets, user targeting, and even document/site promotion and demotion…without writing a drop of code. This is the first of a series, today we will be covering customizing the search results set.

First – a good resources on how to customize (and troubleshoot) SharePoint search using XSLT. A lot of the results customization is very similar to traditional search, with a few exceptions…as such, we won’t cover XSLT updates here, short of a few tips.

Let’s take a practical scenario – perhaps we want to display different things based on the content types within the FAST Search results – how would we do that?

  1. Create the managed property
  2. Update our search results web part to consume the column and update the XSLT to display the results

Step 1 – Create the Managed Property

Creating a managed property in FAST is a little different than in traditional SharePoint search, and it can be a bit confusing.

  • Log into Central Admin
  • Navigate to the FAST Query Service
  • In the left nav, select "FAST Search Administration" (yes, FAST Search Administration…don’t go straight to the Metadata Properties area of the FAST Query Service)
  • Under Property Management, select "Managed Properties"
  • On the Managed Properties page, select "Add Managed Property"
  • In this scenario – we want to add a property called "ContentTypeQuery"; on the add property page:
    • TIP – there is already a Content Type managed property, however, you are not able to use this in your search results, so you must create a new one
    • Give the property a name, such as ContentTypeQuery
    • Set the type to "Text"
    • Add mapping and point to "ows_ContentType"
    • Set additional properties where applicable (in our case, we just want to display the field in our search results, there is no need to activate the other properties):
      • Sort – if this is a parameter that the search results can be sorted by
      • Query – if you are performing property queries from Advanced Search (or other scenarios)
      • Refinement – if you want this to display in the refinement panel
    • Click OK
    • 2012-02-23-CustomizeFastSearch-Part01-01.jpg

  • Conduct a full crawl

Step 2 – Update our search results web part to consume the column and update the XSLT to display the results

Now that our managed property has been created, we need to inform the search results web part that it exists, and pass it on to the search results. Generally speaking, I prefer to use a customized federated location to house search result columns and xslt as it’s a better way to disseminate these settings, especially if there are multiple search result pages, or multiple site collections within a farm. For the purpose of this example, I will not be using a federated location, but rather editing the search results web part directly (which, is a great way to test!).

  • Navigate to your FAST search results page
  • Edit the page, then edit the "Search Core Results" web part
  • Expand the "Display Properties" section
    • Uncheck the "Use Location Visualization" box (which allows overrides of the federated location)
    • Add the column to Fetched Properties
      • Click into the "Fetched Properties" text box and copy all contents to your clipboard, paste it into Notepad (for easier editing)
        • At the end of the XML, before the </Columns> tag, add: <Column Name="ContentTypeQuery"/>
          • Copy from Notepad, and paste it back into the Fetched Properties text box
        • 2012-02-23-CustomizeFastSearch-Part01-02.jpg

    • Customize the XSLT Search results
      • Click on the XSL Editor
      • Copy/Paste into Notepad or SharePoint Designer – somewhere to make the formatting easier
      • Make the XSLT Updates as needed (there’s a whole slew of ways to do this)
        • TIP – the reference to columns in the XSLT is case sensitive…but not in the way one would think. Any references to columns within the Search Results XSLT must be all lowercase, regardless of the way the property is configured.
        • TIP – you do not need to add the property to the top of the XSL file in order to use it within
        • In my case, I was performing some if logic around my content types, which ended up looking like this in the XSLT

        2012-02-23-CustomizeFastSearch-Part01-03.jpg

      • Copy/Paste back into the XSL editor of the web part
      • Click OK
  • Save and Publish the page

With the above information, especially the tips, you can add almost anything to your search results, change up the view, and styling, etc. Some common elements to update:

  • Ratings
  • Description or other pertinent metadata
  • Cusotmized xslt in the event we see a task or calendar item (based on content type)
  • Remove fields that are no longer needed

Happy (no code) customizing! In the next series we will review additional no code customizations around keywords and best bets for FAST.

SharePoint Gone Wild: When Governance Lacks Appropriateness


You may also be interested in: B&R Business Solutions


 

2012-02-17-SPGoneWild-02.jpgIn my last post on when governance lacks quality, I discussed why content quality is important and why the lack thereof can bring many negative issues to an organization. Today’s topic, content appropriateness, also introduces challenges – in my discussions with our customers, I hear the same key problems over and over:

  1. User profile photos – the number one issue I hear about is when organizations leverage user profiles and enable users to upload photos themselves. Due to the fact that there is no approval process, you end up with people re-using their Facebook and Twitter profile pictures, some of which are not appropriate for work. Some employees simply do not understand the difference between a public social network and an internal work-based social network.

  2. User profile properties – along the same lines as photos, often user profile properties are misused. This usually boils down to organizations not being mature enough to integrate line-of-business systems to obtain the data and allow users to update it themselves. The most common issue here I see is “Job Title” being an open-text field and people getting very creative with it. Sorry, but I doubt “World Conqueror” is your job title. This leads to users not trusting information on profiles, and subsequently, slow adoption of social technology.

  3. My Site uploads – another social media challenge that often doesn’t get the focus it deserves is around enabling personal My Sites, which gives each user its own site collection. Often, the quotas have not been discussed with the governance committee and no guidelines have been written. Users think this is much like their personal share drives and store content within Microsoft® SharePoint®2010 that shouldn’t be there due to the costs of storing data in SharePoint (and therefore Microsoft® SQL Server® databases) compared to file shares. Personal music collections, photo galleries, etc. are often very common examples of inappropriate content for a My Site.

  4. Incorrect uploads – along the same lines as uploading inappropriate content into My Sites, the other common issue is uploading content that shouldn’t be in SharePoint. Typically, this happens where there is verbal agreement on when certain content should be stored in another system outside of SharePoint, but poorly communicated and not enforced. This typically is when a certain document type, such as financial data, should be uploaded into a records management system like EMC Documentum rather than stored in SharePoint. Often this adds confusion for users and also annoys other departments who own these third-party systems.

  5. Incorrect managed metadata terms – you will have noticed in SharePoint 2010 the two buttons in the top right of the ribbon on every page. The first main one you’ll notice is the Tags & Notes, once clicked it opens up a My Tags dialog window. This allows users to add their own tags – in a folksonomy approach – to the item. There is no approval process for users creating new tags, which leads to a lot of duplication of terms similar in nature as well as the addition of inappropriate terms.

  6. Social note board comments – the second tab in the Tags & Notes dialog window allows users to add a comment to a note board for that particular page or any list item. There is no approval process for these comments and no real way of notifying users that there are new comments. This leads to a common issue where people add comments to documents that may offend people’s efforts on their own content.

Our customers have come up with ways of leveraging SharePoint out of the box to try and mitigate this. Five of these include:

  1. File type blocking at web application level – this functionality, only available with SharePoint 2010 on-premise, allows you to block particular files from being uploaded into SharePoint altogether. It will mean if you have special cases where that file type is allowed, your information architecture will get a little complicated and have that site isolated in its own web application.

  2. Disabling folksonomy – there is functionality in SharePoint to prevent users from being able to create their own tags and only use tags that already exist in the term store, which acts as a taxonomy. This does require resources to come up with the taxonomy in the first place – it simply disallows users to create their own taxonomy.

  3. Disabling user profile property changes – SharePoint allows you to control whether or not users can directly change each individual user profile property. Out of the box there are quite a few open properties, so it is worth adding as part of your governance discussions what should be allowed to be changed.

  4. Disabling user profile photo uploads – the user profile photo is a user profile property, but of type image. You can prevent this from being modified. Customers we talk to have built custom applications that are managed by the back office team, for example the security department who print the smart cards with the photo of the employee on it will put the same photo into the user profile for that user.

  5. Tags & Notes – if companies are really uncomfortable with social note board and tags, the button can be removed from the ribbon in the user interface by modifying the master page. Often what I have found with customers is they want tags but not the note board, and this is not easily achievable as it is in the same dialog window.

The social aspect of SharePoint definitely raises the biggest concerns around inappropriate content, but it is important to remember that any content in list or libraries should also be monitored and constrained within the acceptable criteria previously established by the organization.

In my next post, I’ll share some head-scratching stories around the next business driver for governance, restrictions.

This article was originally posted on DocAve.com.

Application-Wide Help in SharePoint Using DVWPs and List-Based Content


You may also be interested in: SharePoint Shepherd


 

Editor’s note: Contributor Marc D Anderson is the Co-Founder and President of Sympraxis Consulting LLC. Follow him @sympmarc

In a recent client project, we wanted to offer some sort of online help capability. While SharePoint has a help capability built into it (those little2012-02-28-HelpSPUsingDVWP-01.pngicons on every page which usually take you to a page that has nothing to do with what you are actually doing – Microsoft should really fix that), we wanted something a bit different.

In this case, we were using SharePoint uniquely. Without going into all of the specifics, we were using SharePoint as the new front end to a long-standing existing system which was built with .NET on top of SQL. We were going to have hundreds of sites, if not thousands, with every site having exactly the same pages.

The way this worked was that we set up about 20 different page layouts. Each of those page layouts would be used by exactly one page in each site, and we controlled the names of all of the pages. At least in the near- to mid-term, end users wouldn’t be creating pages of their own. SharePoint would not be used to any significant degree for its collaboration capabilities, but as a way to “Webify” the existing application relatively easily.

There are some other really interesting and cool aspects to what we did, but in this post, I want to focus just on the simple help system we built.

Along with all of the identical sites (though each relied on different content and permissions from the back end system) that we were building, we also set up a Training site. The goal for that site was to hold all of the documents and video content that users would need to get up to speed with the system. We also decided to store the help “pages” there so that we could reuse the same content for both purposes.

Rather than using a publishing model, we decided to use a list to hold the help content. I’m a *huge* fan of list-based content over the publishing model for most internal systems. It gives you the possibility of reusing the same content in multiple ways using different delivery channels far more easily. There are those who think otherwise, but there you go. It always depends.

The simple list for the help content looked like this:

2012-02-28-HelpSPUsingDVWP-02.png

The actual help content was stored in the Help Text column, which was set up to hold Extended Rich Text. All we needed to know about the content to tie it to the appropriate page was the ASPX Name. This looked like “BuildingStatistics.aspx” or “BuildingReportOverView.aspx”. (Yes, each site represented a single building.) Every site would have the exact same set of aspx pages, so the scheme was simple, yet robust enough to do what we needed. We just used the Title to hold a nice title for the help page, which you’ll see below.

Next I added a Data View Web Part (DVWP) into the master page – gasp! A DVWP in the master page!?!? Yes, you can absolutely put DVWPs into master pages. In many cases it might not be a good idea, since it adds overhead to every page that uses it, but that was exactly what we wanted to do in this case. I’ve done this in quite a few production systems to great effect.

The DVWP in the master page read from the help list and determined just if there was a help item for the page we were on. If there was, the DVWP simply put a help icon into the header of the page, like this one:

2012-02-28-HelpSPUsingDVWP-03.png

If we didn’t have help for that page yet, then the icon didn’t show up. Simple enough. Here’s the XSL for that DVWP:


<xsl:template match="/" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls"> 
  <xsl:call-template name="dvt_1"/> 
</xsl:template> 
  
<xsl:template name="dvt_1"> 
  <xsl:variable name="PageName"> 
    <xsl:call-template name="GetPageName"> 
      <xsl:with-param name="URL" select="$URL"/> 
    </xsl:call-template> 
  </xsl:variable> 
  <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[contains(@ASPX_x0020_Name,$PageName) and string-length(@Help_x0020_Text) > 0]"/> 
  <xsl:if test="count($Rows) > 0"> 
    <div class="zzz-help-icon"> 
      <a href="/Training/Help.aspx?FromPage={$PageName}" target="_blank"> 
        <img alt="Help with this Page" style="border:0;" src="/AppImages/Help-icon.png"/> 
      </a> 
    </div> 
  </xsl:if> 
</xsl:template> 
  
<xsl:template name="GetPageName"> 
  <xsl:param name="URL"/> 
  <xsl:choose> 
    <xsl:when test="contains($URL,'/')"> 
      <xsl:call-template name="GetPageName"> 
         <xsl:with-param name="URL" select="substring-after($URL,'/')"/> 
      </xsl:call-template> 
    </xsl:when> 
    <xsl:otherwise> 
      <xsl:value-of select="$URL"/> 
    </xsl:otherwise> 
  </xsl:choose> 
</xsl:template>

When the user clicked on the icon, a new browser window would open up with a help page like the one below. I think we called it something like PageHelp.aspx, and it lived in the Training site. Sorry about the blurred out content, but I think you can see the overall structure of the page.

2012-02-28-HelpSPUsingDVWP-04.png

The help page simply displayed content from the help list on the left, as well as any associated videos on the right, both with DVWPs. We had the videos hosted on ScreenCast.com for easy streaming and reuse, though they will probably be hosted in-house with the application in the near future.

The help text DVWP’s XSL looked like this:


<xsl:template match="/" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls"> 
  <xsl:call-template name="PageHelp"/> 
</xsl:template> 
  
<xsl:template name="PageHelp"> 
  <xsl:variable name="dvt_StyleName">Table</xsl:variable> 
  <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/> 
  <xsl:choose> 
    <xsl:when test="count($Rows) = 0"> 
      <xsl:call-template name="PageHelp.empty"/> 
    </xsl:when> 
    <xsl:otherwise> 
      <table border="0" width="100%" cellpadding="2" cellspacing="0"> 
        <xsl:for-each select="$Rows"> 
          <xsl:call-template name="PageHelp.rowview" /> 
        </xsl:for-each> 
      </table> 
    </xsl:otherwise> 
  </xsl:choose> 
</xsl:template> 
  
<xsl:template name="PageHelp.rowview"> 
  <tr> 
    <td class="ms-vb"> 
      <h3><xsl:value-of select="@Title"/></h3> 
    </td> 
  </tr> 
  <tr> 
    <td class="ms-vb"> 
      <xsl:value-of select="@Help_x0020_Text" disable-output-escaping="yes"/> 
    </td> 
  </tr> 
</xsl:template> 
  
<xsl:template name="PageHelp.empty"> 
  <table border="0" width="100%"> 
    <tr> 
     <td class="ms-vb"> 
        There is no help available for this page. 
      </td> 
    </tr> 
  </table> 
</xsl:template>

The videos DVWP’s XSL looked like this:


<xsl:template match="/" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls"> 
  <xsl:call-template name="dvt_1"/> 
</xsl:template> 
  
<xsl:template name="dvt_1"> 
  <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/> 
  <xsl:choose> 
    <xsl:when test="count($Rows) = 0"> 
      <xsl:call-template name="dvt_1.empty"/> 
    </xsl:when> 
    <xsl:otherwise> 
      <table border="0" width="100%" cellpadding="2" cellspacing="0"> 
        <xsl:call-template name="dvt_1.body"> 
          <xsl:with-param name="Rows" select="$Rows"/></xsl:call-template> 
      </table> 
    </xsl:otherwise> 
  </xsl:choose> 
</xsl:template> 
  
<xsl:template name="dvt_1.body"> 
  <xsl:param name="Rows"/> 
  <xsl:for-each select="$Rows"> 
    <xsl:call-template name="dvt_1.rowview" /> 
  </xsl:for-each> 
</xsl:template> 
  
<xsl:template name="dvt_1.rowview"> 
  <tr> 
    <td class="ms-vb"> 
      <h3><xsl:value-of select="@URL.desc"/></h3> 
    </td> 
  </tr> 
  <tr> 
    <td class="ms-vb"> 
       <object id="scPlayer"  width="300" height="250" type="application/x-shockwave-flash" data="http://content.screencast.com/users/[pathtovideos]/media/{@VideoGUID}/mp4h264player.swf" > 
        <param name="movie" value="http://content.screencast.com/users/[pathtovideos]/media/{@VideoGUID}/mp4h264player.swf" /> 
        <param name="quality" value="high" /> 
        <param name="bgcolor" value="#FFFFFF" /> 
        <param name="flashVars" value="thumb=http://content.screencast.com/users/[pathtovideos]/media/{@VideoGUID}/FirstFrame.jpg&containerwidth=1283&containerheight=877&analytics=UA-24180918-1&content=http://content.screencast.com/users/[pathtovideos]/media/{@VideoGUID}/{@VideoFilename}&blurover=false" /> 
        <param name="allowFullScreen" value="true" /> 
        <param name="scale" value="showall" /> 
        <param name="allowScriptAccess" value="always" /> 
        <param name="base" value="http://content.screencast.com/users/[pathtovideos]/media/{@VideoGUID}/" /> 
        <iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/[pathtovideos]/media/{@VideoGUID}/embed" height="877" width="1283" ></iframe> 
      </object> 
    </td> 
  </tr> 
</xsl:template> 
  
<xsl:template name="dvt_1.empty"> 
  <table border="0" width="100%"> 
    <tr> 
      <td class="ms-vb"> 
        There are no training videos available for this page. 
      </td> 
    </tr> 
  </table> 
</xsl:template>

Note that I’ve replace the actual path to the videos at ScreenCast.com with [pathtovideos] above. We had several columns in the video list that contained the bits of information that we needed for each video: @VideoFilename and @VideoGUID. If the videos were hosted elsewhere, the pieces of information you would need as well as the player specifics would undoubtedly be different.

By keeping things simple and list-based, we very rapidly (in a matter of hours) built out a robust help capability for the whole system. If need be, it can be extended to display other types of content on the help page, such as documents. We could also make the ASPX Page column a multi-select lookup if we wanted to be able to offer up the same help content for multiple pages within the same site.

All in all, we were pretty proud of this as a solution. Simple, yet elegant at the same time. That’s always a good feeling.

Online assessment tool now available for the SharePoint Maturity Model


You may also be interested in: SharePoint Conference.ORG


 

Editor’s note: Contributor Sadie Van Buren is a SharePoint Content Architect at BlueMetal Architects. Follow her @sadalit

I’m thrilled to share the news that this week at SPTechCon San Francisco, I’m launching a beta version of an online self-assessment tool for the SharePoint Maturity Model!

For those unfamiliar with SharePoint Maturity Model, it’s a framework for assessing a SharePoint implementation across eleven categories. It had its first exposure to the community right here on End User SharePoint / Nothing But SharePoint back in November of 2010, and since then the model has been vetted and validated by hundreds of community members and SharePoint experts around the world.

The goal of the new tool is to make it easier for you to do a self-assessment on the maturity of your SharePoint implementation. After you step through the competencies and choose your levels, it generates a report of your results, and an additional report of those results compared to the global average:

2012-02-27-SPMMAppLaunch-01.png

You can print and share this report with your SharePoint team, and use it as a resource as you’re building your roadmap for future enhancements to your implementation.

No registration or login is required to take the assessment – just click the link and begin. Any identifying information you provide will be kept completely confidential.

I’m especially proud of the application because it’s a completely cloud-based solution, with the Silverlight front end living on a hosted SharePoint site (thanks to the folks at FPWeb), and the data stored in Azure. It was truly a team effort to produce, and I want to thank my colleagues at BlueMetal Architects who developed it and provided feedback along the way, as well as my distinguished panel of beta-testers, who are all well-known experts in the SharePoint community.

This week is bringing many exciting launches for the SharePoint community, including the release of Mark Miller’s book SharePoint 2010 at Work, which includes a chapter I wrote on SharePoint Maturity. In the run-up to the release of the book, Jim Bob Howard, one of the chapter contributors, suggested that each of the chapter authors write an article for NBSP discussing why we contributed. My reason for writing that chapter is the same reason I wanted to develop and release the Maturity framework itself, and now its assessment tool: I’m committed to helping organizations understand the full potential of SharePoint and take their implementations to a more mature level. How that’s achieved is unique to every single organization, depending on its business goals and what it is able to invest, but the way forward begins with understanding all that an implementation could be, and discovering the gaps and barriers to greater maturity. To put it more plainly, I’m asking companies NOT to rest on the good work they’ve already done, but to look continuously for areas to improve.

To that end, I encourage you to assess your own SharePoint implementation, by giving the new tool a spin – find your levels, get your report, and build your roadmap to greater SharePoint maturity!

Assign a Custom Content Type to Task Process in a SharePoint Designer 2010 workflow


You may also be interested in: SPTechCon


 

Editor’s note: Contributor Kim Frehe is a SharePoint Solution Specialist at Rightpoint Consulting. Follow her @KimFrehe

SharePoint Designer 2010 has some awesome new features! Two of my favorites are (1) the ability to copy and modify an out of the box workflow and (2) the custom task processes.

What I don’t love is the way SharePoint assigns names with spacing to these tasks that have “_X0028_” and “_X0029_copy” in it. It can cause problems with importing the workflow into Visual Studio, referring to the content type in custom web parts, and as an architect, I just don’t like the way it looks too messy. Plus, if I want to make changes to the task list or roll the task up in a web part, I don’t want to have to guess which task goes with which workflow.

Here is an example of what SPD does when it adds a custom task action to a workflow or when you copy out of the box (OOB) workflow:

2012-02-23-AssignCustomContentType-01.png

And this is what I want it to look like:

2012-02-23-AssignCustomContentType-02.png

And it’s not just aesthetics; I have certain fields that I want to be able to store in the task. I know that I can assign them in the workflow task process, but I don’t want the end user to see them so I want them hidden.

Here are the steps:

  1. Create your custom content type at your parent site (or content hub).
    • Important note: If you are going to be exporting your workflows to other environment (i.e. local to production) and you do not use a content type hub, I STRONGLY recommend creating these content types and any site columns associated with the workflow with code. This will ensure that your GUID’s (custom ID’s) are the same across all environments.
      • I worked with a developer to create my site columns and content types for me since we are moving workflows across environments
      • If you do not have access to a developer, then you will need to replicate these steps in each environment to make sure the ID’s are correct for each.
  2. Optional Step: If you want the “Claim Task”, Custom Outcomes functionality, and the ability to Reassign or Request Changes that comes with the out of the box workflow tasks for Enterprise SharePoint, you will need to change the display and edit forms. If not, you can skip this step.
  3. Example of InfoPath display form vs .aspx display form

    2012-02-23-AssignCustomContentType-03.png

    • If you create the content type in Code, make sure the display and edit form properties include “_layouts/WrkTaskIP.aspx”
    • If you create the content type by hand (or did not assign a display/edit form specification in the code), open the content type in Designer and change the display and edit form to “_layouts/WrkTaskIP.aspx” under “Forms” on the right side of the screen.
    • 2012-02-23-AssignCustomContentType-04.png

  4. Create your workflow
    • Either Copy and Modify an out of the box workflow
    • OR Create a new workflow and add a custom task process – Start Approval Process, Start Custom Task Process or Start Feedback Process
      • (I have not tested this with the other task actions)

    2012-02-23-AssignCustomContentType-05.png

  5. Save the workflow, but do not publish it.
    • NOTE: If you have published it and have the odd-named content type, just delete that task form. We will generate a new task form at the end.
      • This odd-named content type will exist in your Content types library until you delete it from there
  6. Open the custom content type you created in Designer and Copy the ID
  7. 2012-02-23-AssignCustomContentType-06.png

  8. Go to All Files, Workflows, <WorkflowName> folder
    • Note: If the “All Files” folder looks empty, click on another folder, such as subsites, and select “All Files” again.

    2012-02-23-AssignCustomContentType-07.png

  9. Open the file that ends in “.wfconfig.xml” and replace the following items:
    • Line 2: TaskContentType=”<ID>” with your custom content type
    • Line 4: ContentType Name=”<Name>” with your custom content type name
    • Line 4: ContentTypeID = “<ID>” with your content type ID you copied from previous step
    • Line 4: WorkflowForm= “Workflows/<workflowname>/<contenttypename.xsn>” with your content type name (just the name of the form, leave the folder name as is)
    • 2012-02-23-AssignCustomContentType-08.png

      Here is what it should look like (my content type is “IntakeReviewTask”)

      2012-02-23-AssignCustomContentType-09.png

      *Line 2 not pictured

  10. Save the the xml file and go back to your workflow folder
  11. Hover over the file that ends in “.xoml” file and select “Open with” -> “2. SharePoint Designer (Open as XML)”.
  12.  2012-02-23-AssignCustomContentType-10.png

  13. Click (Ctrl+F) for Find and enter “ContentType” in the “Find what” box
  14.  2012-02-23-AssignCustomContentType-11.png

  15. Replace the ContentTypeID=”ID” with your custom content ID
  16. CLOSE SharePoint Designer and re-open it.
    • Refreshing has not worked for me.
  17. Open Designer, open your workflow by clicking on “Workflows” and Save your file. Click “No” if you receive any messages to replace your file.
  18. 2012-02-23-AssignCustomContentType-12.png

  19. Publish your workflow. The right side of the picture below shows my workflow after completing this process.

2012-02-23-AssignCustomContentType-13.png

And Voila, no more messy names and you can use your custom content type for whatever you may need, displayed in a CQWP, for example.

SPrello – an open source UI for SharePoint 2010 inspired by trello.com


You may also be interested in: TRAINSIGNAL


 

Editor’s note: Contributor Ryan Wheeler is an Owner at Pentalogic Technology. Follow him @Pentalogic

Even with all the fancy project management and collaboration tools available I bet most offices still rely to some extent on the more traditional methods – white boards and post it notes!

Last year Fog Creek Software released a very swish app called Trello that aims to move these post-it notes into the 21st century.

“Trello is an online collaboration tool that organizes projects into boards. In one glance, Trello tells you what’s being worked on, who’s working on what, and where something is in a process.”

As we use SharePoint for much of our day to day collaboration (no surprise there) I wondered if a similar interface could be made for SharePoint?

2012-02-22-SPrello-01.png
Click here to see a demonstration of SPrello

Hence SPrello was born. It’s pretty basic (at the moment) and will likely never have the real time features of Trello but I hope it can be useful and, as it’s an open source project, you can adapt and build upon it to fit your requirements.

It’s been released as an open source project on Codeplex http://sprello.codeplex.com

  • SharePoint 2010 sandbox web part
  • EMCAScript Client Object Modell
  • JQuery/JQueryUI libraries

If you find it useful please come back here and let us know how you’re using it!

How To: Remove “Send To” Menu in SharePoint


You may also be interested in: harmon.ie


 

Perform the following steps to remove or hide the “Send To” menu in SharePoint.

  1. Navigate to the document library where the “Send To” menu has to be disabled.
    http://share.com/Documents/Forms/AllItems.aspx
  2. Edit the page and add a Content Editor Web part. You can also edit through SharePoint Designer.
  3. Open the source Editor in the Content editor Web part
    NOTE: Or open the code view of the particular webpage in SharePoint designer.
  4. Copy and paste the following code either in the code view or in source editor in the Content Editor Web part.
<script type="text/javascript">
AddSendSubMenu = function (m,ctx) {}
</script

NOTE: You can add the code on some pages manually, or if you want to apply this to all pages, you have to insert the code in master page

2012-02-21-RemoveSendMenu-01.png

NOTE: Basically this can also be modified by modifying the “Core.js” file, but I don’t advise that.

SharePoint Gone Wild: When Governance Lacks Quality


You may also be interested in: NewsGator


 

2012-02-17-SPGoneWild-01.jpg In my inaugural post for the SharePoint Gone Wild blog series, focusing on when governance lacks accountability, I introduced the key business drivers for governance. Now that we’ve addressed that major pain point, to continue this discussion on another challenge: governance lacking in quality. I believe this is a great segue from accountability, because regardless of whether content has accountability, unless the person accountable for the content has any responsibility in maintaining the quality of the content, it will become a risk to the organization.

In the discussions I have with AvePoint’s existing customers regarding governance, quality is a big issue and can cost the business in various ways, including:

  • Making decisions based on inaccurate information
  • Sending out inaccurate information externally
  • Duplication of content, which leads to confusion on accuracy

There are a few common scenarios that typically lead to low quality:

  • No accountability – Referring back to my previous article again, if there is no accountability, the quality will definitely suffer.
  • Initial push – When someone is made accountable for a new sub site or taking over an existing one, there is often a concentrated focus on improving the quality of the content. This focus, more often than not, starts to dwindle over time as there is typically no process in place to remind the people accountable that their content needs some “tender love and care”.
  • Content Lifecycle – The lifecycle of content differs based on the types of sub sites that exist; for example, a project team site may only be relevant for six months and then people move onto other projects – therefore the content is not updated or finalized, and left in an unfinished state.
  • Duplication – In some instances, where there is no clear distinction of accountability, the same content is created in two different areas on a site, complete with different accountability owners. This typically happens when there is poor information architecture, resulting in content created in disparate locations because knowledge workers believe it is the best place for the content to “live” based upon their own interpretation of best practices.

Some of the organizations I work with have some interesting ways of trying to mitigate the risk of low content quality in the field. The most common one is when an organization has performance measures in place for information managers, librarians, or records managers based upon how well they maintain content quality.

Typically, teams responsible for quality are allocated areas of the intranet or other workloads. Putting the people in place isn’t the most difficult part, though: It is how to measure quality of content. Essentially, many organizations had a request system in place to report potentially low-quality documents. Once reported, the requisite quality teams would follow-up and check the content. The request system was communicated internally, and had a rewards system in place to encourage contributions.

While one person may be accountable for content, it might make sense to identify subject matter experts who can act as content quality control agents. Why? Generally speaking, the person put in charge of content isn’t always the right person to gauge its quality.

The other approach is to say that the accountable stakeholders for a sub site would need to re-publish the document to a new major version every six months. The librarians would then produce reports on which documents hadn’t been re-published, and risk can be assessed by correlating this report with information on how frequently the content is accessed by leveraging the web analytics reports or auditing reports.

The next business driver for governance I’ll tackle is “appropriateness”, which will be covered in my next post.

This article was originally posted on DocAve.com.

SharePoint developer survey


You may also be interested in: Vizit


 

Editor’s note: Contributor Brian Farnhill is a SharePoint Server MVP and Solutions Architect at Extelligent Design. Follow him @BrianFarnhill

2012-02-21-DevSurvey-01.jpgI will be presenting a session at both the Australian and New Zealand SharePoint conferences in March this year called "Managing Application Development for SharePoint 2010". I’ve got a bunch of great content that I want to present there, but as part of the session I’m very keen to get some more information from a wider audience about how the rest of world goes about managing SharePoint development.

So to help with this, I’ve put together a quick survey on SurveyMonkey so you can let me know what you think. The whole thing is multiple choice so you can just click your way through it (unless you like using the "other" box, then you will need to type!). There are 16 questions to it, so it should only take you a couple of minutes to fill out.

Also, I’m not above trying to buy your information – so to that extent I’m going to put up a small prize for those who fill out the survey. I just took delivery of a few copies of the book I contributed a chapter to called "Expert SharePoint 2010 Practices", so I will draw a winner at random from the list of results to give a copy to!

So what are you waiting for – head over to the survey and let me know your responses. I’ll publish the full information after my session at the Australian SharePoint conference (which is March 20) so you can all see as well. Thanks in advance for participating guys! Make sure you spread the word

Take the survey! https://www.surveymonkey.com/s/2012SPDevSurvey