Emancipate yourself from mental slavery; none but ourselves can free our minds. – Nesta

Some of you have been asking why it has taken so long to post my slides from SharePoint Saturday Columbus. Well, I have no excuse other than being a ninny. Link below:

SharePoint Saturday Columbus - The Great InfoPath Voyage

I will be adding to this post within the next day or so, with a link out to the code for the presentation as well.

Thanks for coming to my session, and thanks for the Twitter follows @mack247.

Also, thanks to SharePointSupport.com for footing the bill for me to come to speak to everyone. Please check out our SharePoint Support and Administration services at www.sharepointsupport.com. Thanks!

I will be speaking at SharePoint Saturday Columbus this Saturday, August 14.  It will be one of the more interesting sessions I have given at any of my SharePoint speaking engagements. 

I am going to be building out a comprehensive solution based on InfoPath 2010 and SharePoint 2010.  We are going to have all the tools open at some point – Central Admin, InfoPath Designer, SharePoint Designer, Visual Studio, you name it.

Here is the official abstract for the session:

The Fantastic InfoPath Voyage

Join SharePoint Saturday veteran Joe Mack as he takes you through an end-to-end solution using Microsoft InfoPath and SharePoint 2010. After a brief introduction to some of the key new features in InfoPath 2010, we will: design and deploy a form template for use in the browser through Forms Services; develop a custom WCF service, host it within SharePoint 2010 and wire it up to our InfoPath template; create an on-form State Machine and link it to SharePoint metadata; automate the archival of completed forms to a SharePoint Records Center using SharePoint Designer workflow; and use the very cool ECMAScript Client Object Model to open the forms in a Modal Dialog.

So, if you are already signed up, I look forward to seeing you in Columbus.  If not, then you will be able to get the slides and code here shortly after this Saturday.  Depending on the technology present in Columbus, there might even be a video of my session available somewhere.

Stay tuned to this space for updates.

workmen-1While I would love to just be lazy and link out to someone else's article on this matter, no one has been able to get the product name right yet - everyone keeps referencing the nonsensical Windows SharePoint Server 3.0 - so I will just provide the short and shorter of it right here without giving anyone else the credit. Perhaps they should have just stuck with the WSS 3.0 acronym.

At any rate, there is a patch, Microsoft Security Bulletin MS10-130 (KB983444), that shipped as part of the June "Patch Tuesday" last week. The patch is supposed to fix a security hole whereby a user could elevate his or her privileges on WSS 3.0 all by themselves.

Great idea on paper right? Regular users making themselves site collection admins sounds like a bad thing, and fixing it must be good. Well, several users have been posting to the SharePoint Forums that, after applying the patch, they are seeing an "Unable to connect to configuration database" error, apparently even on Central Admin. There have been reports that running the SharePoint Configuration Wizard has fixed the issue in some cases, but not all of them.

It's kind of funny that I heard the Hippocratic Oath-y phrase "do no harm" put forth by a SharePoint MVP just this week as the mantra of the SharePoint Product Team when working on the WSS 3.0 / MOSS 2007 to SPF 2010 / SPS 2010 upgrade process. Also adding to my personal giggles over this is the fact that I shared a Twitter thread with some friends this week about some great free products in the open source community and personally remarked that sometimes you really don't get what you pay for.

While no "Patch Tuesday" being called "Black Tuesday" scenario is good for Microsoft, it just seems funny to me after seeing those Tweets. You can just picture someone at Microsoft saying -- at least the free stuff is messed up. Could you imagine if we messed up MOSS installations? Now THAT would be bad.

As exepcted, Microsoft is sort of not really acknowledging the issue yet, but probably scrambling behind the scenes to get a fix. Given their recent track record of being highly successful at delivering good patches and quickly fixing those that aren't good, I would expect this issue to be resoved in short order.

The lesson, as always, is this: anything you do that takes control of YOUR environment out of YOUR hands, to include the myopic Download and Install Updates Automatically should have "caveat emptor" written all over it beforehand and "I told you so" afterwards.

Depending on your hosting provider, you may or not end up with portions of your Wordpress blog (main site, admin site, plugins, etc.) that are completely hosed. Yes, that is a technical term.

Like I said - it all depends on your hosting provider. My blogs use 1and1, and I experienced this issue with my admin pages (<blog url>/wp-admin/) only. After about 30 minutes of spinning wheels, I discovered that there was an issue where the new Wordpress admin pages were using PHP5 and the server was not set up to use PHP5.

All I had to do was add the following lines to my .htaccess file, located in the root of my blog's file system, and everything started working like a charm.

Options All -Indexes
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

First things first, thanks to Jomit for his Dialog Platform post, which served as the basis for my work herein.

So, I recently had occasion to open up a browser-based Forms Services form from outside of the site collection where the template and the "Save Location" both reside…you know, kind of like one of those completely unplanned "Real World Scenarios" that we are always hearing about.

Anyway, anyone that has opened up a Forms Services form in the browser has noticed the extremely long URL that is necessary. For the uninitiated, here is a very quick synopsis of the various portions of the URL.

So, I am not sure if you caught on to the main issue reading through all that junk, but here it is in a nutshell. If you try to pass in a "Source" parameter that is from a different site collection than the one where the template is located, Forms Services will barf. That kind of puts on damper on my "Real World" scenario of having the users access a centralized landing page / application, while exhibiting a higher level of control over the document processing center where the forms are going to be filled out.

I know what some of you might be thinking – just use a new window/tab. The problem with that is that not everyone likes popups, plus, sometimes you end up with a useless popup sitting there just displaying "The form has been closed" in the middle of the screen. Besides, popups are just so Web 1.0. Modal windows, that's wave of the future, man!

For those of you that have seen SharePoint 2010 in action, you know Microsoft has gotten behind the whole modal window thing as well. In fact, if you have access to a SharePoint 2010 box, go ahead and type in the URL to the Upload form of one of your document libraries (http://<<site>>/Documents/Forms/Upload.aspx). SharePoint will get the standard Upload page from the _layouts folder, and it pretty much looks like a normal SharePoint page, right? Now, add in a query string parameter so it looks like this (http://<<site>>/Documents/Forms/Upload.aspx?IsDlg=1). See that? That form is damn sure ready for a modal dialog, huh? In fact, it is the standard way that Microsoft allows users to upload documents to a library, by putting the Upload form in a modal window and using the IsDlg parameter to keep all the extraneous stuff from showing up.

Well, that's not the only place where Microsoft has bought into this whole modal window thing. As it turns out, there is a JavaScript method set up for this that comes along with the ECMAScript Class Library that you can use from just about any SharePoint page. Check out Jomit's post that I referenced above for a little more detail and the links to learn more about the method and the ECMA library.

Since the FormsServer.aspx page doesn't even recognize the IsDlg parameter, I didn't even need it. So, armed with everyone's favorite way to hack a SharePoint page (the Content Editor Web Part), I set out to get my InfoPath form to open up in a modal window. Here is the code that got it to work:

<script type="text/javascript">

//Handle the DialogCallback callback

function DialogCallback(dialogResult, returnValue)

{

}

//Open the Dialog

function OpenModalDialog(dlgURL)

{

var options = {

url: dlgURL,

width: 700,

height: 700,

dialogReturnValueCallback: DialogCallback

};

SP.UI.ModalDialog.showModalDialog(options);

}

</script>

//Link to InfoPath Form

<a href="javascript:OpenModalDialog('http://docs.company.com/sites/active/_layouts/FormServer.aspx?XsnLocation=http://docs.company.com/sites/active/Form%20Templates/Form%20Template.xsn&amp;SaveLocation=http%3A%2F%2Fdocs%2Ecompany%2Ecom%2Fsites%2Factive%2FDocuments&amp;DefaultItemOpen=1');" onmouseover="javascript:window.status='';return true;" onmousedown="javascript:window.status='';return true;">Coolest Form Ever</a>

So, you see that I have gotten rid of the "Source" parameter in the Query String, as that still breaks the form if you send it something that is in a different site collection than the template, but the UX is about 100 times better than having a popup or (even worse) sending them to a page that is on a different site collection than where they started.

I still need to move this out of the CEWP before it is ready for prime time, but just think about the implications here. This is a bona fide slam dunk and a huge win for Microsoft by allowing us to quickly deliver solutions that are in line with what others are doing in the industry.

Not too much time to blog today, but several folks have been asking about the slide deck from my metadata talk at SharePoint Saturday in Kansas City.

Please download the slides from the link below.

Metadata Briefing Slide Deck – SPSKC

I should have some time coming up in the next week or two to start blogging a little more frequently. 

I’ll also throw a teaser out there and let you know that I am working on a cool SharePoint content aggregator site that should be live by the end of the year.  Nothing fancy, just a single place to go to get a lot of SharePoint information that is currently somewhat scattered throughout the blogosphere.  Hopefully, I have not said too much - I know there are lots of people out there with more brains and free time than myself.  I would hate for someone to steal and implement my idea, since I would not do well in prison. <grin />

I have had multiple clients over the past couple of years task me with getting external RSS feeds on their WSS sites.  While MOSS comes with an RSS Feed web part, and while there are other RSS Feed web parts out there for free or a nominal fee, I though I would make a post about the two most common ways I have implemented RSS Feeds onto a WSS page or site.

Method 1 – The XML Web Part

1.  Navigate to the page where you would like to show an RSS Feed.

2.  Click on Site Actions, then Edit Page.

3.  Click the Add a Web Part link in the zone where you would like to add the RSS Feed.

4.  Under All Web Parts | Miscellaneous, select the XML Web Part and then click the Add button.

5.  Click the open the tool pane link in the web part.

6.  Enter the RSS Feed URL in the XML Link field.

7.  Click the XSL Editor button.

8.  Add the following code:

 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    exclude-result-prefixes="xsl">
    <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
    <xsl:template match="/">
<div>
           <xsl:apply-templates select="rss/channel"/>
        </div>
 
    </xsl:template>
    <xsl:template match="rss/channel">
        <xsl:variable name="link" select="link"/>
        <xsl:variable name="description" select="description"/>
<ul><xsl:apply-templates select="item"/></ul>
 
    </xsl:template>
    <xsl:template match="item">
        <xsl:variable name="item_link" select="link"/>
        <xsl:variable name="item_title" select="description"/>
<li>
            <a href="{$item_link}" title="{$item_title}"><xsl:value-of select="title"/></a>
        </li>
 
    </xsl:template>
</xsl:stylesheet>
 

9.  Expand the Appearance node and enter your desired web part title in the Title field.

10.  Click the OK button.

11.  You are done.  The RSS Feed should not be displayed on the page as a series of bulleted items.

Method 2 – Using the Data Source Library and DataForm Web Part in SharePoint Designer

1.  In SharePoint Designer, open the page where you would like to add the RSS Feed.

2.  Click on the name of the web part zone where you would like to add the RSS Feed.

3.  In the Data Source Library dialog, expand the Server-side Scripts node and click on Connect to a script or RSS feed…

4.  On the General tab, enter a Name and/or Description.

5.  On the Source tab, enter the RSS Feed’s URL in the Enter the URL to a server-side script field.

6.  If authentication is required for your RSS Feed, enter the authentication information on the Login tab.

7.  Hover over your newly-formed Data Source, click the down arrow to enable the hover menu, and select Show Data.

8.  Browse down to the Item node and select the title field.  Hold down the Ctrl key and then select the description field.

9.  Click on the Insert Selected Fields As button and then click Multiple Item View.

10.  You are done.  The RSS Feed should now be displayed on the page.

NOTES: 

You can click the small arrow in the top right of the newly-created DataFormWebPart and then select Change layout to choose different display options for the web part.  I normally use the second one on the list, as that is a slightly cleaner display. 

You can also make it a little more practical by enabling the title to link to the original post on the site that generated the RSS Feed.  Do this by hovering over the title of the first RSS Feed entry and clicking the small arrow and then selecting Hyperlink in the Format as field.  In the Hyperlink dialog, make sure that the Text to display field says {title} and the Address field says {link}

The last tweak is to get rid of the “description:” text – remove it with your keyboard for the first RSS Feed entry and it will be removed for all entries.

I hope this is a little useful to some of you.  Thanks.

About this Post
Permalink | Trackback | | Print This Article | 7 Comments

Jul

24

Gmail Knows Me Better Than I Know Myself

Filed Under General

Gmail saved me from some mild embarrassment earlier tonight.  At first, I was pretty impressed by the sheer idiot-proof-ness of it…until I realized that without it, I would have looked like an idiot.  I guess that is how idiotproofing works…but it was more than a little disconcerting that I was the idiot beneficiary in this case.

First things first, I love Gmail and can’t stand working with e-mail in anything other than the thread view now.  I will admit that it was originally a little painful, but only because I fear change and I am, as I briefly intimated in the prior paragraph, an idiot of the highest order…or perhaps “lowest order” is the appropriate turn of phrase in this instance.  Zoho mail takes this to the next level by enabling the user to expand and collapse threads on the main Inbox page, which is the goods…and one of the reasons why there will probably be a future blog post entitled “How I Migrated From Gmail to Zoho”.

OK – back to the geeks at Google saving my bacon.  I was trying to accomplish something that should be very simple to do without looking like an idiot…sending an e-mail with an attachment.  Here is an except from the body of the e-mail.  Notice the part that I have underlined.

gmail1

So, I finished typing the message, and being of questionable intelligence, I clicked the “Send” button without actually attaching the ZIP file I referenced in the e-mail.  Gmail told me, in a very unobtrusive and non-condescending way, that I may have been an idiot, or at least committed an act of questionable intelligence.  Here is what I saw next on my screen.

gmail2

I clicked “Cancel”, attached the file as originally intended, and clicked “Send” once again.

This kind of simple solution to a simple problem is what makes the difference between products that people love and products that make people mad…kind of like how my being self-aware enough to know I am an idiot makes me somehow higher up the evolutionary curve than a baboon…although if the lyric genius Danny Alexander is to be believed, I might just be on pretty solid footing with my fellow humans as well.

“I know I’m stupid so I must be smarter than you…”   -- D. Alexander

About this Post
Permalink | Trackback | | Print This Article | Leave a Comment

Jun

23

Two Helpful Web Parts for FREE!!!

Filed Under Development, SharePoint

Since the response was so great to our articles regarding using the QueryString to pass information to PageViewer web parts, I have decided to make both web parts available, as SharePoint features deployed at the Site Collection level.

You can download the web parts at my company web site:  www.theportalgroup.biz

Just click on “Downloads”, register for free, and they are all yours.

UPDATE:  Registration is no longer required…and in an unrelated note, special thanks to the over 200 new registered users with a username of “asdf”…I really appreciate it. <grin />

In case you have not read the blog posts yet (and don’t want to), here is the basic overview:

There are a few caveats to keep in mind as well.

Hope you enjoy the web parts, and please feel free to let us know what you think.

Oh – one more thing.  If you are interested in expanding on these or otherwise developing them yourself, you can get to the blog posts at the links below.  The first one even has a Screencast that might help those without a lot of SharePoint development experience.

Passing Through the Entire Query String

Passing Through a Single Parameter in the Query String

About this Post
Permalink | Trackback | | Print This Article | 1 Comment

Jun

1

The Software You Need – AXIGEN Mail Server

Filed Under Development, General, SharePoint

 

If you are like me and do a lot of demos, especially ones that are running within a virtual environment (Virtual PC, VMWare Server, etc.) you have probably struggled with the best way to demonstrate the e-mail capabilities of whatever you are going to demo.  In my case, Microsoft SharePoint is what I am trying to show, and although there are a few integration touch points only present in Microsoft Exchange, it is a resource hog and kind of a pain to install and maintain, especially if you are not an Exchange administrator.

Enter AXIGEN mail server.  First things first, I have never played around with the “pay” versions of AXIGEN, but according to their web site, the free “Office Edition” is essentially their full-featured product, with a restriction of 5 users and 1 domain…more than enough for a small office, or a demo VPC or VM.

On their web site, they claim that you will have a 10-minute install, which is true…although if you are going to install and use their Active Directory extension, you can probably add another 5 minutes or so.  All told, the very first time I used it, it took around 20 minutes from the time I started the download until I was up and running, with integration to my Windows Server 2003 Domain (Active Directory) and robust full-featured web mail running on a custom port of my choosing.  The second time I set it up, it took me all of 6 or 7 minutes, start to finish.

I have not played around with AXIGEN versions for any other operating system than Windows, but if my experience on Windows is typical of how it works on other operating systems, then you should have nothing to worry about.

I cannot say enough positive things about this little product.  In fact, some time in the next few months, Mack is going to start bringing a lot of his stuff “in house”, as in having a home office with one or 2 “server class” machines, getting a block of static IP addresses, and starting to do a lot of my own hosting for certain domains that I manage, including e-mail.  After my first exposure to AXIGEN, Microsoft would probably have to pay me to install and use Exchange.

Feel free to download the product and try it out yourself.  You will NOT be disappointed.

http://www.axigen.com

One more thing I would be remiss if I did not mention – it installs and runs on non-server Windows operating systems as well.  Couple AXIGEN with Bamboo Solutions’ WssOnVista, and I can do a full-featured demo within my host operating system, instead of even worrying about Virtual PC or VM Ware.  Now THAT’S something worth telling people about!

About this Post
Permalink | Trackback | | Print This Article | Leave a Comment

keep looking »