| I love to promote SharePoint as platform for public-facing websites because it has such a rich feature-set to build upon, lists, libraries, ease-of-use, workflow. SharePoint Foundation is even better, especially for smaller businesses or companies looking for something more affordable. If you don’t need MSS, Foundation has a great suite of features to offer, but it can’t be a contender in the CMS arena unless it becomes easier for web designers and developers to find realistic options for their clients that aren’t limiting. It definitely seems like a road less traveled. Sure, there are a lot of hosting companies out there with shared-hosting, virtual server, cloud-based options for you to choose from, but there is a LOT missing. It seems like there should be a push to make SharePoint more accessible. I have had a difficult time, as a web designer, with a few key areas that are paramount to hosting any public-facing site in 2011 and beyond. I finally found some options that fit my customer’s needs as well as mine, but it wasn’t easy. SharePoint Foundation should be on par in its accessibility to WordPress IMHO, but right now it just isn’t, so maybe there’s a potential for improvement… Mobile Views Granted this is great for your company portal, your intranet, your docu-share site, but this is completely unsatisfactory for any public-facing site. If I can’t control the mobile view (yes, yes I know you need to modify compat.browser – ehem server-side!"), what self-respecting web 2.0 and beyond designer would choose to move forward? This is a deal breaker IMHO. If more hosting providers don’t give their customers a way to switch this on/off, then SharePoint will never give other platforms like the Drupals, Wordpresses and Joomlas of the world a run for their money. Be warned, not many hosting providers give you this option and obviously if you’re using your own server, be sure to take a few seconds to make the quick and easy mods to compat.browser in order to truly offer a “mobile” version of your site. Locking down the Back-end Do you really want users or, for that matter, search bots, poking around in your backend? I mean, your site’s backend silly! …I didn’t think so! So, in that case, again you’re going to want to lock down those pages using one technique or another that inevitably requires server-side access. If you don’t, anybody can look under the hood of your site and check out lists, libraries, etc. That’s not really a great idea, especially if your backend isn’t customized and then you’re ruining the User Experience (buzzword!) for the visitor. This is a biggie IMO for a public-facing site. The experience needs to be consistent. It needs to look good inside and out, or else don’t show me your insides! Again, not possible in most hosted environments, so bear this in mind. Customizations Yes, you can, in most cases, use SharePoint Designer to modify your site and go hog wild with branding, data view web parts, etc. However, you can’t deploy any custom web parts in most hosted environments, so plan ahead. Do your research and definitely assess the website’s content needs up front before settling on SharePoint. Please keep in mind that I still drink the SharePoint Kool Aid! This is just a diatribe to warn my fellow fan girls/boys that SharePoint isn’t a one-size-fits-all solution. It’s not open source, it isn’t always flexible, and hosting options are relatively limited – especially when you’re talking about the type of client that is looking to Foundation and not Server. So, what options are there? Host it yourself, on your own hardware. Host it with Rackspace on their hardware and with their stellar support. But… If you just want to one-click-publish, i.e. purchase a hosting plan and go-live, here are my thoughts… (Please keep in mind this is my personal opinion/experience and also I’m strictly looking at Foundation hosting) These guys are number one b/c they offer FTP access to the virtual site collection files. This was perfect for me and gave me access to fix pretty much every one of my issues listed above except deploying custom web parts. However, I wouldn’t doubt that if I asked for that option they would turn me down without a support call or email and a really informative response. Customer service is also A+! They have great packages for Foundation hosting of all sizes/price ranges. They have great support and offer a team of SharePoint gurus at your disposal. You are definitely in good hands w/ these folks. They don’t allow you to access any of the config. files though  Affordable! |
| Another good blog post I have catalogued in my favorites is this blog post by Mike Knowles: Mike Knowles - Add Google Analytics to SharePoint He gives a brief intro to Google Analytics, how to set it up and how to add it to your SharePoint site. Basically you want to put your script before the closing body tag, but I'll just let you read his post. Either way, Analytics is something nearly every client wants these days. |
| If you have a custom list form and would like users to get redirected to a Thank You page or something of the sort after they submit, it is fairly simple to switch out the default "Submit" button w/ one that will do just that. Simply use the following code and insert the url of the page you want them redirected to after they submit the new list item: <input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={http://www.yoursite.com/customPage.aspx}')}" /> That will do the trick! |
| OK, so today, a Friday no less, I had a mini-disaster that was luckily averted. I published an update to my form template and for some reason this time upon publish I found that my promoted columns had been duplicated in the SharePoint library. This was not good. Luckily I was able to clean up this mess and the moral of the story is, just make sure you cross check the method by which columns were promoted in the previous version of your template, before you click that button. For me, the case was that I had published columns to the content type and for some reason when I went in to make my updates and publish, InfoPath decided to create new site columns for me. 
So, luckily I was able to open the manifest.xsn file and update the GUIDs using the ones from the previous version of the template. Here is a link with instructions on how to do this, if you should ever meet the same fate... Click Here to view a post by David Lozzi on this very issue. |
| So far in working with SharePoint 2010 I’ve seen a LOT of improvements worth getting excited over. I am working on a bunch of branding projects right now and one of them is for a corporate intranet. They want to have a mini-calendar, but being that we’re still in beta, there aren’t many options. So, I decided to play around with the calendar CSS file in 2010 to see what was possible. Basically, I applied a theme and opened up the calendarv4.CSS file in Designer to experiment. Before any customizations, I had a larger (but not nearly as ominous as v3) calendar web part. This is such an improvement over what you got OOTB in v3, but for a fixed-width site, it’s still a little too large.
After I added my custom CSS, I had a much tinier calendar. Additionally, for this mini-calendar I went ahead and added styles to hide the “Add” link used to create new Calendar items. You could play around with the sizing and go a little larger as well.
In order to make these changes only apply to the calendar I placed my CSS in a hidden Content Editor Web Part on the page. You wouldn’t want to edit the calendarv4.css file because that will affect ALL calendar web parts, across your site, even in the list view. You can grab the CSS I used in the attached file and test it out on your site. This was just my first time delving in, so I’m interested to hear what anyone else finds :) 2010CEWP_miniCal.txt 
Here it is w/ some events in the calendar. When you hover over, you can still see the full details of that event. Pretty slick for just CSS ;) 
|
| I've been working on developing a pretty hefty form over the past couple weeks and the users want a lot of data pulled in from various data sources. One request they hadwas to be able to use the Contact Selector control to have the same "People Picker" functionality available to them within SharePoint. Well, that's not a problem, but requests didn't stop there. They also wanted to have certain user information fields auto-populate based upon the person they pick in this People Picker. I hadn't implemented this before, but it was fairly easy to find plenty of people who had... Here's a few links that provide instruction there. Now, my form has to pull in quite a bit of demographic data and we're using a connection to the User Profile Service via SharePoint, so in case you're wondering what fields are available to you, here's a list of them. I pulled this information from Ishkay's blog, link provided above. Of course it's only as available as your AD or Profiles in SP make it, so if some of the fields like Birthday pull up blank, check before you blame InfoPath :) 
Alana Helbig: Itay Shakury: http://blogs.microsoft.co.il/blogs/itaysk/archive/2007/04/05/InfoPath-_2D00_-Get-the-current-user-without-writing-code.aspx Itay Shakury's complete list of default profile properties that get returned by the userprofileservice: UserProfile_GUID AccountName FirstName LastName PreferredName WorkPhone Office Department Title Manager AboutMe PersonalSpace PictureURL UserName QuickLinks WebSite PublicSiteRedirect SPS-Dotted-line SPS-Peers SPS-Responsibility SPS-Skills SPS-PastProjects SPS-Interests SPS-School SPS-SipAddress SPS-Birthday SPS-MySiteUpgrade SPS-DontSuggestList SPS-ProxyAddresses SPS-HireDate SPS-LastColleagueAdded SPS-OWAUrl SPS-ResourceAccountName SPS-MasterAccountName Assistant WorkEmail CellPhone Fax HomePhone
|
| This is just a quick share. The other day I was working on installing a WSS 3.0 environment for a client who had already done an all-in-one installation on the server. They had uninstalled SharePoint since, but the Windows Internal Database instance that is created when you perform an All-in-one install was left behind. I knew how to connect to this database, by using a named pipe, but I had no clue how to remove it and I'm no SQL guru. But, I found a technet article and KB that give you a command line which will do the trick. Worked like a charm :) Here's the command and you can read the articles here: KB / TechNet On 32-bit platforms: msiexec /x {CEB5780F-1A70-44A9-850F-DE6C4F6AA8FB} callerid=ocsetup.exe On 64-bit platforms: msiexec /x {BDD79957-5801-4A2D-B09E-852E7FA64D01} callerid=ocsetup.exe |
| Image sprites are nothing new, but their use in web design is trendy right now for good reason. An image sprite is basically one image that contains a bunch of other ones. By using a sprite, like the one on the left, which is used in SharePoint 2010 to display many icons, you can reduce the number of HTTP requests made and thus improve browser load times. Sprites have been around for a long time and have been used in video games as well as other applications. Take a look at the Wikipedia article as well as this article from A List Apart. By using CSS to map out the position of each individual image in the sprite, you can use this one master image to display several different icons on the page. Just take a look at the CSS below… element.style { display:inline-block; height:16px; overflow-x:hidden; overflow-y:hidden; position:relative; width:16px; } element.style { left:0 !important; position:absolute; top:-420px !important; } The image itself is contained within a SPAN tag that has a specified height and width of 16px X 16px to match the size of the RSS icon. Look at the first block of code above and note that the height and width are specified as well as the overflow-x and overflow-y properties. The overflow value of “hidden” means that the rest of the image that does not fit in the 16px box will be clipped or hidden for the user. The second block of code is used to display the RSS Feed icon at the bottom of a blog site by using positioning. The background positioning informs the browser where to position the sprite image. The RSS icon is located 420px from the top of the entire image sprite, so the value for left and top in our element style allows us to see just that particular icon in this sprite. 
|
| Please download my slide deck from SharePoint Saturday DC and Kansas City this December... This is also the presentation I gave at SPS Raleigh in early November as well. 
Thanks for all those who attended my session at both events. I had a great time and hope you enjoyed the session. Feel free to contact me with any questions :) SharePoint Branding Presentation.pdf
|
| New and improved on SharePoint 2010!! I will be moving over my posts from the old site very soon! In the meantime you can still read the old posts here: Old Site |
View in Web Browser /_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 |
|
|
|
|

| Welcome to The SharePoint Grind! This blog is about all things SharePoint... Branding. Administration. Etc. Enjoy! 
|
|
|
|
View in Web Browser /_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 View in Browser /_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 |
|
|
|