I'm sure that will get a few people talking.
Anyway, if you want to know what SharePoint Designer can do then there are 3 options:
- Books
- E-Learning
- Instructor led training
I just received a book in the mail to review. "SharePoint Designer Tutorial" by Mike Poole from PACKT Publishing (170 pages).
The tutorial claims that "it is ideal for people new to SharePoint Designer who need to put together a working SharePoint site as quickly as possible. If you want to get started, and finished, as quickly as possible, this book is for you." So does it live up to its claims?
Two pages on "What is SharePoint" was a bit light in my opinion given that you can probably configure and use 80% of SharePoint's functionality from the browser. This leads onto the "Why Choose SharePoint Designer?" question which should have highlighted the features that you would be missing out on if you only used the browser.
The first half of the book is devoted to general SPD UI and basic WEB tasks without making any use of SharePoint specific features. The second half is where the action is with coverage of Data Sources and the Data Form Web Part. I was a little confused over the "Adding Graphs" section as this used a third party web part which didn't even support SPD design time configuration and had to be setup from the browser. The last quarter of the book gets very much into IIS server configuration, Forms based authentication and configuring Outlook Web Access for FBA so that Outlook web parts will work. I wouldn't consider this a common business site scenario.
The tutorial is well written with easy to follow instructions so if you do want to set up an IIS server with SharePoint & OWA for FBA Authentication and a web page with a couple of web parts, then it will get you started but I feel it didn't deliver on the claim of building a "SharePoint Site" which to me implies that I would be walked through the process required to build something like one of the Fantastic 40 templates.
I have had many people asking me how I built the demo that displays multiple pins on a map from a SharePoint list of locations. http://www.wssdemo.com/Pages/map.aspx
You can do this with SharePoint Designer and the Data View web part. Nothing has to be run on the server as this is a "content" solution.
This demo was based on some examples from the SharePoint Designer blog but the problem is that the Virtual Earth API's have been updated since these articles were written.
So, here are some instructions that will hopefully get you up and running quickly.
Assuming that you have a list with Title and Description fields that includes 2 additional fields called "Lat" and "Long", create a web part page in SharePoint Designer and add a Data View of the list containing the locations. Here is the raw list from my demo http://www.wssdemo.com/Lists/Location/AllItems.aspx
Add the following script and html to the page above the data view web part
<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=5"> </script>
<script type="text/javascript">
var map = null;
// Loads the Virtual Earth map control
function GetMap()
{
map = new VEMap('myMap');
map.LoadMap(new VELatLong(0,0), 1,'r' ,false);
AddPins();
}
// Places a pushpin on the map using the parameters given, iconurl is ignored
function AddPin(lat, lon, iconurl, title, desc)
{
var shape =
new VEShape(VEShapeType.Pushpin,
new VELatLong(lat,lon));
shape.SetTitle(title);
shape.SetDescription(desc);
map.AddShape(shape);
}
// Programmatically adds func as a handler for the onload event
// This method has been used by many developers, but the code is
// via the ViaVirtualEarth Wiki
// http://www.viavirtualearth.com/Wiki/Load+VE+control+without+body+onload.ashx.
function addLoadEvent(func)
{
var oldonload = window.onload;
if (typeof window.onload != 'function')
{ window.onload = func; }
else
{ window.onload = function()
{ oldonload(); func(); }
}
}
addLoadEvent(GetMap);
</script>
<div id='myMap' style="width:800px; height:600px;"></div>
Add the following XSL template section to the Data View web part
<xsl:template name="AddMapPins">
<xsl:param name="Rows"/>
<xsl:text disable-output-escaping="yes"><![CDATA[
<script type="text/javascript">
function AddPins()
{
]]></xsl:text>
<xsl:for-each select="$Rows">
<xsl:if test="not(normalize-space(@Lat) = '' and normalize-space(@Long) = '')">
AddPin(<xsl:value-of select="@Lat" />,
<xsl:value-of select="@Long" />,
null,
"<xsl:value-of select="@Title" />",
"<xsl:value-of select="@Description"/>");
</xsl:if>
</xsl:for-each>
<xsl:text disable-output-escaping="yes"><![CDATA[
}
</script>
]]></xsl:text>
</xsl:template>
Find the following code in the Data View
<xsl:template name="dvt_1">
<xsl:variable name="dvt_StyleName">Table</xsl:variable>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/>
And insert the following immediately after
<xsl:call-template name="AddMapPins">
<xsl:with-param name="Rows" select="$Rows"/>
</xsl:call-template>