<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kraft Kennedy &#124; Technology Blog &#187; Development</title>
	<atom:link href="http://blogs.kraftkennedy.com/index.php/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.kraftkennedy.com</link>
	<description>Trends and insight into legal technology, infrastructure and strategic thinking.</description>
	<lastBuildDate>Wed, 14 Jul 2010 20:44:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Auto Launching a Published Desktop from the Citrix Web Interface</title>
		<link>http://blogs.kraftkennedy.com/index.php/2010/07/01/auto-launching-a-published-desktop-from-the-citrix-web-interface/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2010/07/01/auto-launching-a-published-desktop-from-the-citrix-web-interface/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 16:16:22 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Citrix Web Interface]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=1350</guid>
		<description><![CDATA[The Citrix Web Interface allows you to publish desktop applications as links on a web page.  If only one link is published, such as a &#8220;Windows 7 Desktop&#8221; link, then users will have to come into the web interface and manually click on the link to launch it.  It&#8217;s easy however, to update the code [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F07%2F01%2Fauto-launching-a-published-desktop-from-the-citrix-web-interface%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F07%2F01%2Fauto-launching-a-published-desktop-from-the-citrix-web-interface%2F" height="61" width="51" /></a></div><p>The Citrix Web Interface allows you to publish desktop applications as links on a web page.  If only one link is published, such as a &#8220;Windows 7 Desktop&#8221; link, then users will have to come into the web interface and manually click on the link to launch it.  It&#8217;s easy however, to update the code on the home page so that the published desktop automatically launches when the user opens the web interface.  This shortcut saves users a click and some time, and makes the process more streamlined, especially if there is only one published application.</p>
<p><span id="more-1350"></span></p>
<p>To make this change, just log onto the Citrix server and open the following file:</p>
<p>C:\inetpub\wwwroot\Citrix\XenApp\site\default.aspx</p>
<p>That file is the home page of the Citrix web interface.  Add a script such as the following to the bottom of the page:</p>
<div dir="ltr"><span style="color: #ff0000">&lt;script language=&#8221;javascript&#8221;&gt;<br />
document.getElementById(&#8217;&lt;LINK NAME&gt;&#8217;).onclick();</span></div>
<div dir="ltr"><span style="color: #ff0000">&lt;/script&gt;</span></div>
<div dir="ltr"></div>
<div dir="ltr">Note, that you will have to look through the page source to find the name of the link to place in the above code.  All of the links also have the same class name, so it&#8217;s possible to write a custom javascript to loop through all of the elements with that class name and select only the appropriate one.  You could also loop through the class elements to see how many links are present, and select the first one if there&#8217;s one link, or do nothing if there&#8217;s more than one link.  There&#8217;s many possibilities for how you can code the javascript to meet your business need.</div>
<div dir="ltr"></div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2010/07/01/auto-launching-a-published-desktop-from-the-citrix-web-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Outlook Meeting Reminders In Focus, Over Other Applications</title>
		<link>http://blogs.kraftkennedy.com/index.php/2010/06/07/getting-outlook-meeting-reminders-in-focus-over-other-applications/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2010/06/07/getting-outlook-meeting-reminders-in-focus-over-other-applications/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 14:28:05 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Focus]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Outlook Add-in]]></category>
		<category><![CDATA[Reminders]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=1307</guid>
		<description><![CDATA[The Problem – Hidden Outlook Reminders
In Outlook 2003, 2007, and 2010, reminder windows pop up in Outlook, but they do not steal the focus if you are working in another program.  For example, if you currently working in Word or Internet Explorer, you won’t see a reminder window if one pops up, since you’re not [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F06%2F07%2Fgetting-outlook-meeting-reminders-in-focus-over-other-applications%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F06%2F07%2Fgetting-outlook-meeting-reminders-in-focus-over-other-applications%2F" height="61" width="51" /></a></div><h3>The Problem – Hidden Outlook Reminders</h3>
<p>In Outlook 2003, 2007, and 2010, reminder windows pop up in Outlook, but they do not steal the focus if you are working in another program.  For example, if you currently working in Word or Internet Explorer, you won’t see a reminder window if one pops up, since you’re not in Outlook.</p>
<p>In previous versions of Windows, this wasn’t as big of a deal because you would still see the reminder window in the task bar.  So even though you didn’t see the actual window, you would see the tab for it flashing on the taskbar.</p>
<p>In Windows 7 however, the default grouping of same-application windows, makes is much harder to see when a reminder window pops up.  For example, the image below shows a second Outlook window, which is actually a reminder window.</p>
<p><img src="http://blogs.kraftkennedy.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /><span id="more-1307"></span></p>
<p><img src="http://blogs.kraftkennedy.com/wp-content/uploads/2010/06/Capture1.JPG" alt="Capture1" width="74" height="60" /></p>
<p>As a result, Windows 7 users may find that they’re more likely to miss reminders and meetings.</p>
<h3>The Solution – An Outlook Addin to Bring Reminders to Focus</h3>
<p>Kraft Kennedy has created an Outlook addin which responds to the “reminder” event in Outlook, and uses Windows API functions to locate the reminder window and force it into the foreground.</p>
<p>With this addin installed, users would see the reminder window pop up in front of whatever application they are working in, and it will stay in the foreground until the reminder is dismissed or snoozed.</p>
<p>People who may have missed reminders before should now find that it is no longer an issue.</p>
<p>The image below shows a reminder in the foreground, over an Internet Explorer session.</p>
<p>We&#8217;re giving this addin away for free to anyone that is interested, but with no support.  If you&#8217;re interested in using it, please contact Michael Worth at  (212) 692-5610 or <a href="mailto:worth@kraftkennedy.com">worth@kraftkennedy.com</a>.</p>
<h1><img src="http://blogs.kraftkennedy.com/wp-content/uploads/2010/06/Capture21.JPG" alt="Capture2" width="523" height="413" /></h1>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2010/06/07/getting-outlook-meeting-reminders-in-focus-over-other-applications/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fixing SharePoint 2010 Menus on Pages with Flash</title>
		<link>http://blogs.kraftkennedy.com/index.php/2010/05/21/fixing-sharepoint-2010-menus-on-pages-with-flash/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2010/05/21/fixing-sharepoint-2010-menus-on-pages-with-flash/#comments</comments>
		<pubDate>Fri, 21 May 2010 19:14:31 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=1255</guid>
		<description><![CDATA[In SharePoint 2007, menus in some master pages opened behind page content and Flash animations.  However, there was an easy fix which was to just locate the css style for the dynamic menus, and change the &#8220;z-index&#8221; property to a high number.  This same fix does not work in 2010 however, and to make matters worse, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F05%2F21%2Ffixing-sharepoint-2010-menus-on-pages-with-flash%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F05%2F21%2Ffixing-sharepoint-2010-menus-on-pages-with-flash%2F" height="61" width="51" /></a></div><p>In SharePoint 2007, menus in some master pages opened behind page content and Flash animations.  However, there was an easy fix which was to just locate the css style for the dynamic menus, and change the &#8220;z-index&#8221; property to a high number.  This same fix does not work in 2010 however, and to make matters worse, the menus on the default master page in 2010 always open behind Flash videos.  (The built-in Silverlight web part in 2010 does not have this problem, but I suspect there are still many people who will have home pages with Flash content.)<span id="more-1255"></span></p>
<p>Here&#8217;s an example of how the menus open by default, behind the Flash content.</p>
<p> <img class="alignnone size-full wp-image-1257" src="http://blogs.kraftkennedy.com/wp-content/uploads/2010/05/Capture3.JPG" alt="Capture3" width="230" height="317" /></p>
<p>After much digging around, I was able to find a way to correctly display the menus in front of Flash content.  You have to add the following parameters to your actual object html code for the Flash object, to make it transparent.</p>
<p><span style="color: #ff0000">Add the following parameter to the OBJECT tag:</span><br/></p>
<p><span style="color: #ff0000">   &lt;param name=&#8221;wmode&#8221; value=&#8221;transparent&#8221;&gt;</span></p>
<p><span style="color: #ff0000">Add the following parameter to the EMBED tag: </span><br/></p>
<p><span style="color: #ff0000">   wmode=&#8221;transparent&#8221;</span></p>
<p><br/><br />
After that the page menus should load correctly, as shown below.<br />
<br/><br />
<img class="alignnone size-full wp-image-1258" src="http://blogs.kraftkennedy.com/wp-content/uploads/2010/05/Capture2.JPG" alt="Capture2" width="231" height="286" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2010/05/21/fixing-sharepoint-2010-menus-on-pages-with-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outlook private items &#8211; Not as private as you might think</title>
		<link>http://blogs.kraftkennedy.com/index.php/2010/05/03/outlook-private-items-not-as-private-as-you-might-think/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2010/05/03/outlook-private-items-not-as-private-as-you-might-think/#comments</comments>
		<pubDate>Mon, 03 May 2010 19:04:35 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Infrastructure]]></category>
		<category><![CDATA[Exchange]]></category>
		<category><![CDATA[Exchange Web Services]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[OWA]]></category>
		<category><![CDATA[Private]]></category>
		<category><![CDATA[Sensitivity]]></category>
		<category><![CDATA[WebDAV]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=1185</guid>
		<description><![CDATA[A common situation in organizations is to make calendars public, so that employees can see other employee&#8217;s availability, and collaborate better.  Users may also delegate rights to other users to view their messages, tasks, and contacts.  In these situations, people may rely on marking sensitive items private to hide them from other users.  In Outlook or OWA, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F05%2F03%2Foutlook-private-items-not-as-private-as-you-might-think%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2010%2F05%2F03%2Foutlook-private-items-not-as-private-as-you-might-think%2F" height="61" width="51" /></a></div><p>A common situation in organizations is to make calendars public, so that employees can see other employee&#8217;s availability, and collaborate better.  Users may also delegate rights to other users to view their messages, tasks, and contacts.  In these situations, people may rely on marking sensitive items private to hide them from other users.  In Outlook or OWA, other users will see a placeholder for the private items, but won&#8217;t be able to view any of the details.  However, you should keep in mind that this privacy is only a feature of the client application&#8211;Outlook or OWA&#8211;and is not inherent to Exchange.  Exchange itself does not support any kind of item-level security or privacy, and only has a field called &#8220;sensitivity&#8221; which is used by Outlook and OWA.  The client applications look at that field to determine whether to display the item.<span id="more-1185"></span></p>
<p>This architecture is common to all versions of Outlook and Exchange, through 2010, and is not really a bug, so much as an architectural decision by Microsoft to keep item-level permissions in the client-tier.  The end result is that people should realize that just because they mark an appointment or other item private in Outlook, it doesn&#8217;t mean that no one else will be able to see it.  Items that are extrememly sensitive should probably not be stored in Exchange in the first place, or you should take off all delegate / view rights to your mailbox.  People who you give delegate rights to should also be people who you trust.</p>
<p>Developers should note that when writing custom applications with WebDAV, Exchange Web Services, or any other method, all items will be returned including private items.  The custom application should look at the sensitivity setting of each message before displaying it.  If the sensitivity is private, then the mesage should not be displayed.  We, at Kraft Kennedy, have run into this issue several times when creating custom applications with WebDAV that pull back appointments from the Exchange calendar.</p>
<p>Microsoft has details about allowing other users to manage your mail and calendar here: </p>
<p><a href="http://office.microsoft.com/en-us/outlook/HA100750811033.aspx?pid=CH100788801033">http://office.microsoft.com/en-us/outlook/HA100750811033.aspx?pid=CH100788801033</a></p>
<p>Note, the last paragraph of the article:</p>
<address><strong><span style="text-decoration: underline">Important</span></strong>   You should not rely on the Private feature to prevent other people from accessing the details of your appointments, contacts, or tasks. To make sure that other people cannot read the items that you marked as private, do not grant them Reviewer (can read items) permission to your Calendar, Contacts, or Tasks folder. A person who is granted Reviewer (can read items) permission to access your folders could use programmatic methods or other e-mail programs to view the details of a private item. Use the Private feature only when you share folders with people whom you trust.</address>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2010/05/03/outlook-private-items-not-as-private-as-you-might-think/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Importing Employee Photos into MOSS 2007 MySites</title>
		<link>http://blogs.kraftkennedy.com/index.php/2009/12/25/importing-employee-photos-into-moss-2007-mysites/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2009/12/25/importing-employee-photos-into-moss-2007-mysites/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 14:36:10 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[MySite]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=994</guid>
		<description><![CDATA[Most of the information in an employee&#8217;s MySite profile comes from the Active Directory profile import, which is set up in the SharePoint Shared Service Provider.  However, this can be tricky with employee photos since links to photos are not normally stored in Active Directory.  An easy way around this if you don&#8217;t want to store [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F12%2F25%2Fimporting-employee-photos-into-moss-2007-mysites%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F12%2F25%2Fimporting-employee-photos-into-moss-2007-mysites%2F" height="61" width="51" /></a></div><p>Most of the information in an employee&#8217;s MySite profile comes from the Active Directory profile import, which is set up in the SharePoint Shared Service Provider.  However, this can be tricky with employee photos since links to photos are not normally stored in Active Directory.  An easy way around this if you don&#8217;t want to store the links in Active Directory, is to simply create a picture library in SharePoint and upload all of the employee photos to the picture library with a standard name, such as username.jpg.  Then you can write a script to update each MySite profile and associate the photo with the person.<span id="more-994"></span></p>
<p>The code below is VB.Net code to interact with the SharePoint profile database by using the userprofilemanager class.  This will update one profile, so it would need to be put in a loop to update all of the employee profiles.</p>
<pre><span style="color: #ff0000">'Objects for profile database</span></pre>
<pre><span style="color: #ff0000">dim strUrl as string = &lt;site collection url&gt;</span></pre>
<pre><span style="color: #ff0000">dim site as Microsoft.SharePoint.SPSite = new SPSite(strUrl)</span></pre>
<pre><span style="color: #ff0000">dim sc as Microsoft.Office.Server.ServerContext = Microsoft.Office.Server.ServerContext.GetContext(site)</span></pre>
<pre><span style="color: #ff0000">dim upm as UserProfileManager = new UserProfileManager(sc)</span>
<pre><span style="color: #ff0000">dim sAccount as string = "domain\username"</span></pre>
<pre><span style="color: #ff0000">Dim u As UserProfile = upm.GetUserProfile(sAccount)        </span></pre>
<pre><span style="color: #ff0000">if u.ProfileManager.Properties.GetPropertyByName("PictureURL") is nothing then</span></pre>
<pre><span style="color: #ff0000"> 'error code</span></pre>
<pre><span style="color: #ff0000">else</span></pre>
<pre><span style="color: #ff0000"> u("PictureURL").Value = '&lt;put the url plus username.jpg here&gt;</span></pre>
<pre><span style="color: #ff0000"> u.Commit</span></pre>
<pre><span style="color: #ff0000">end if</span></pre>
<p>Remember to also include the following assembly and namespace...</p>
<pre><span style="color: #ff0000">&lt;%@ Assembly Name="Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;</span></pre>
<pre><span style="color: #ff0000">&lt;%@ Import Namespace="Microsoft.Office.Server.UserProfiles" %&gt;</span></pre>
<p>If you import additional fields into the profile store, it may be necessary to also run a complete profile import and an incremental search index process to make sure that everything is up to date.  Future profile imports won't overwrite the PictureURL property, so all employee photos should be permanent.  The only drawback is that you will have to run the script for new users or manually enter their picture URL.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2009/12/25/importing-employee-photos-into-moss-2007-mysites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful Free Web Parts for SharePoint</title>
		<link>http://blogs.kraftkennedy.com/index.php/2009/10/08/useful-free-web-parts-for-sharepoint/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2009/10/08/useful-free-web-parts-for-sharepoint/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 11:52:12 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Web Parts]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=811</guid>
		<description><![CDATA[Windows SharePoint Services (WSS) doesn&#8217;t come with a whole lot of web parts out of the box, but here&#8217;s a few handy ones we&#8217;ve found to spice up some of the home pages we&#8217;ve built.  These are all free and work with WSS.

Tim Heuer&#8217;s RSS Feed Reader
http://feedreader.codeplex.com/

Only MOSS comes with an RSS reader, and even that [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F10%2F08%2Fuseful-free-web-parts-for-sharepoint%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F10%2F08%2Fuseful-free-web-parts-for-sharepoint%2F" height="61" width="51" /></a></div><p>Windows SharePoint Services (WSS) doesn&#8217;t come with a whole lot of web parts out of the box, but here&#8217;s a few handy ones we&#8217;ve found to spice up some of the home pages we&#8217;ve built.  These are all free and work with WSS.</p>
<ul>
<li>Tim Heuer&#8217;s RSS Feed Reader<br />
<a href="http://feedreader.codeplex.com/">http://feedreader.codeplex.com/</a></li>
</ul>
<p>Only MOSS comes with an RSS reader, and even that one can display only one feed.  This web part is invaluable if you&#8217;re using WSS.  This is the best free RSS feed web part that I&#8217;ve found, and it allows you to neatly pull multiple feeds next to each other.</p>
<ul>
<li>Bamboo World Clock and Weather<br />
<a href="http://store.bamboosolutions.com/pc-55-1-world-clock-and-weather-web-part.aspx">http://store.bamboosolutions.com/pc-55-1-world-clock-and-weather-web-part.aspx</a></li>
</ul>
<p>This web part neatly displays the weather in 3 cities side-by-side and can optionally display the time if they are in different time zones.  This is a nice looking web part and tends to fit nicely on the right-hand side of a home page for a firm with multiple offices.</p>
<ul>
<li>Amrein MSN Money Stock Quote<br />
<cite><a href="http://www.amrein.com/apps/page.asp?Q=5731">http://</a><a href="http://www.amrein.com/apps/page.asp?Q=5731">www.amrein.com/apps/page.asp?Q=5731</a></cite></li>
</ul>
<p>This web part displays stock quotes, company names, changes, and percent changes pulled from MSN Money.  It&#8217;s the best free web part I&#8217;ve seen to do this, and will save a lot of time over trying to follow one of the examples online for doing this with a data view.</p>
<ul>
<li>Matt Jimison&#8217;s Twitter Search Web Part<br />
<a href="http://www.mattjimison.com/blog/2009/03/04/twitter-search-webpart/">http://www.mattjimison.com/blog/2009/03/04/twitter-search-webpart/</a></li>
</ul>
<p>This uses the twitter search API to search twitter based on the parameters you specify in the web part, and you can download the wsp or the source code from the web page.</p>
<ul>
<li>Kraft &amp; Kennedy Google Search Box<br />
(Code below)</li>
</ul>
<p>We&#8217;ve had a few instances where we were asked to put a Google search box on a SharePoint page.  This can easily be accomplished by just inserting a content editor web part on the page and editing the HTML directly.  You can paste in the following code, which includes JavaScript, to open a Google results page after the person enters a search term and presses enter or clicks a button.  This is of course a simple approach&#8211;you could also federate search results in your search center to include Google&#8211;but this simple html code works well in many cases.</p>
<p><img class="alignnone size-full wp-image-812" src="http://blogs.kraftkennedy.com/wp-content/uploads/2009/10/Search-Google.JPG" alt="Search Google" width="416" height="76" /></p>
<pre><span style="color: #ff0000">&lt;P align=left&gt;Search Google: &lt;INPUT id=Google name=Google onkeydown="javascript:if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {
window.open('http://www.google.com/search?hl=en&amp;amp;q=' + this.value + '&amp;amp;btnG=Google+Search','_blank','');
return false;}};"&gt; &lt;IMG alt="Go" id="btnGo" name="btnGo" src="/images1/icongo.gif" onclick="window.open('http://www.google.com/search?hl=en&amp;amp;q=' + document.all.Google.value + '&amp;amp;btnG=Google+Search','_blank','')"  onmouseover="this.style.cursor='hand'"&gt;
&lt;/P&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2009/10/08/useful-free-web-parts-for-sharepoint/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introduction to BlackBerry Development</title>
		<link>http://blogs.kraftkennedy.com/index.php/2009/09/24/introduction-to-blackberry-development/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2009/09/24/introduction-to-blackberry-development/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 12:03:00 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/?p=694</guid>
		<description><![CDATA[Research in Motion (RIM) offers two ways of writing applications for BlackBerry devices&#8211;Native Java, and the Microsoft Visual Studio plugin.  As a VB.Net developer, I was tempted to go the Visual Studio plugin approach, but I decided against it for the following reasons:

It&#8217;s geared more towards rapid forms-based applications that communicate by web services.
It requires the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F09%2F24%2Fintroduction-to-blackberry-development%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F09%2F24%2Fintroduction-to-blackberry-development%2F" height="61" width="51" /></a></div><p>Research in Motion (RIM) offers two ways of writing applications for BlackBerry devices&#8211;Native Java, and the Microsoft Visual Studio plugin.  As a VB.Net developer, I was tempted to go the Visual Studio plugin approach, but I decided against it for the following reasons:</p>
<ul>
<li>It&#8217;s geared more towards rapid forms-based applications that communicate by web services.</li>
<li>It requires the user to be on a BlackBerry Enterprise Server.</li>
<li>It does not provide access to all of the APIs and BlackBerry features that you get with Java; for example, camera, phone, Bluetooth, address book, GPS, BlackBerry Maps, and BlackBerry Message features.</li>
<li>It doesn&#8217;t support the BlackBerry Storm touch screen and accelerometer.</li>
<li>Debugging and deployment is more difficult, and the Visual Studio plugin only comes with a BlackBerry Bold simulator.  The Java tools come with a BlackBerry Storm simulator.</li>
</ul>
<p>For these reasons, to be able to debug for the Storm, and to have access to the entire BlackBerry library, I decided to go with the Java approach.  The transition is quite easy, once you get the development environment in place and write your first test application.  The BlackBerry website has a lot of good information for developers, if you&#8217;re able to find it.</p>
<p>I found that this page has everything you need to get started developing BlackBerry applications:</p>
<p><a href="http://na.blackberry.com/eng/developers/resources/tutorials.jsp#tab_tab_development">http://na.blackberry.com/eng/developers/resources/tutorials.jsp#tab_tab_development</a></p>
<p>Rather than copy and paste information from their guides, I&#8217;ll just point out some of the things I wish were clearer in each document.</p>
<p><span id="more-694"></span></p>
<h3>Setting Up Necessary Tools</h3>
<p>First you need to install the JDK, as specified in the BlackBerry documentation.  <span style="text-decoration: underline;">However, you can skip the step get the Eclipse IDE</span>.  The Eclipse IDE is installed automatically with the BlackBerry Plug-in for Eclipse, which is mentioned in the next step.  In addition to the BlackBerry plugin for Eclipse, you&#8217;ll need to install the BlackBerry plugin for Eclipse Component Pack 4.7, in order to get the BlackBerry Storm simulator (and target the 4.7 platform), which is available here:</p>
<p><a href="http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp">http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp</a><br />
 </p>
<h3>Writing Your First Application</h3>
<p><span style="font-family: Arial">I found the Eclipse environment for Java to be very similar to Visual Studio.  If you&#8217;ve ever done any JavaScript programming, then you&#8217;ll be somewhat familiar with the syntax, and it shouldn&#8217;t be too bad to start developing in Java.  The &#8220;Writing Your First Application&#8221; guide from BlackBerry is a great first step to follow along with to create a simple test application or proof of concept.  Two things I would add are:</span></p>
<ol>
<li><span style="font-family: Arial">Creating an icon for your application&#8211;It will look much better if you pick one, rather than the default RIM folder icon.  Right click on your project in Project Explorer, and choose properties.  Click on BlackBerry Project Properties.  Click Resources, and &#8220;Add,&#8221; under Icon Files.  You can choose a png, gif, or jpg to use as your icon.</span></li>
<p> </p>
<li><span style="font-family: Arial">Creating custom backgrounds and borders&#8211;This was hard to find information on.  Basically, you have to import these classes:</span></li>
</ol>
<p style="margin-left:40px"><span style="color: red">import net.rim.device.api.ui.decor.BorderFactory;<br />
import net.rim.device.api.ui.decor.BackgroundFactory;</span></p>
<p style="margin-left:40px">Then you can add code like the following to set a background color or border:</p>
<p style="margin-left:40px"><span style="color: red">_fieldManagerTop.setBackground(BackgroundFactory.createSolidBackground(Color.LIGHTBLUE));<br />
_MyTextBox.setBorder( BorderFactory.createRoundedBorder(new XYEdges(1, 1, 1, 1) ));</span></p>
<h3><span style="font-family: Arial"><br />
How And When To Sign</span></h3>
<p><span style="font-family: Arial">I found that any realistic application you would write for a BlackBerry is going to uses classes that are restricted and need signing.  Therefore I&#8217;d suggest that you apply for the RIM code signing registration keys right away.  It took about a week for my keys to be processed.</span></p>
<h3><span style="font-family: Arial"><br />
Deploy And Distribute Applications</span></h3>
<p><span style="font-family: Arial">I found that using the BlackBerry Desktop Manager&#8217;s Application Loader feature worked well for testing purposes, however over the air deployment works best for final deployment of the application to a wider audience.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2009/09/24/introduction-to-blackberry-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Audience Targeting in Windows SharePoint Services 3.0, based on AD Groups</title>
		<link>http://blogs.kraftkennedy.com/index.php/2009/07/13/audience-targeting-in-wss/</link>
		<comments>http://blogs.kraftkennedy.com/index.php/2009/07/13/audience-targeting-in-wss/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 19:07:34 +0000</pubDate>
		<dc:creator>Michael Fettner</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Directory Servicces]]></category>
		<category><![CDATA[MOSS]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blogs.kraftkennedy.com/index.php/2009/07/13/audience-targeting-in-windows-sharepoint-services-3-0-based-on-ad-groups/</guid>
		<description><![CDATA[WSS does not have a user profile service and does not allow any kind of native targeting of content to users in different groups. This is one of the more serious limitations of WSS, especially for corporate intranets, where pages might need to be customized for users in different offices. MOSS, on the other hand, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F07%2F13%2Faudience-targeting-in-wss%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblogs.kraftkennedy.com%2Findex.php%2F2009%2F07%2F13%2Faudience-targeting-in-wss%2F" height="61" width="51" /></a></div><p>WSS does not have a user profile service and does not allow any kind of native targeting of content to users in different groups. This is one of the more serious limitations of WSS, especially for corporate intranets, where pages might need to be customized for users in different offices. MOSS, on the other hand, allows for the creation of audiences and easy targeting of content. As is typically the case with WSS, it is possible to achieve this functionality by writing code.</p>
<p>One way to do this is by adding a reference in your code to &#8220;System.DirectoryServices,&#8221; which allows you to query Active Directory. With that class, you can compare the current user to an Active Directory group&#8217;s membership collection, and add logic based on whether or not the user is in the group. If you plan to edit an aspx page directly, you will also have to add a page parser path in web.config, so that the code in the page will run. Rather than editing the page directly, it is often preferable to create a control or web part for security and manageability reasons.</p>
<p>If editing an aspg page directly in SharePoint Designer, just add the following line to the top of the page, so that the correct assembly is referenced.</p>
<p><span style="color:red">&lt;%@ <code>Assembly Name="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %&gt;</code></span></p>
<p>Then add a code block into the page that gets the current user and compares it to the group membership. The following example uses VB.Net and sees if the current user is in the &#8220;NY Staff&#8221; group. If so, then the script redirects to the page &#8220;NY.aspx.&#8221; Rather than redirecting, you could also add code to write out customized content based on the membership information.</p>
<p>               <span style="color:red">&lt;%</span></p>
<p style="margin-left: 36pt"><span style="color:red"> </span><code><span style="color:red">   Try<br />
</span></code><code><span style="color:red">   'Get group membership for current user<br />
</span></code><code><span style="color:red">        Dim DomainUser As String = Replace(User.Identity.Name, "\", "/")<br />
</span></code><code><span style="color:red">        Dim ADEntry As New System.DirectoryServices.DirectoryEntry("WinNT://" &amp; DomainUser)<br />
</span></code><code><span style="color:red">        Dim MembersCollection As Object 'Underlaying is a IADsMembers interface<br />
</span></code><code><span style="color:red">        MembersCollection = ADEntry.Invoke("Groups")<br />
</span></code><code><span style="color:red">        Dim group As Object 'IADsGroup interface<br />
</span></code><code><span style="color:red">        Dim vFound As Boolean = False<br />
</span></code><code><span style="color:red">        For Each group In MembersCollection<br />
</span></code><code><span style="color:red">            If LCase(group.Name) = "ny staff" Then<br />
</span></code><code><span style="color:red">                vFound = True<br />
</span></code><code><span style="color:red">                Exit For<br />
</span></code><code><span style="color:red">            End If<br />
</span></code><code><span style="color:red">        Next<br />
</span></code><code><span style="color:red">        'Do something if group is found<br />
</span></code><code><span style="color:red">        If vFound Then<br />
</span></code><code><span style="color:red">            Response.redirect("NY.aspx")<br />
</span></code><code><span style="color:red">        End If<br />
</span></code><code><span style="color:red">      Catch ex As Exception<br />
</span></code><code><span style="color:red">        'response.write(ex.message)<br />
</span></code><code><span style="color:red">      End Try<br />
</span></code><span style="color:red">%&gt;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.kraftkennedy.com/index.php/2009/07/13/audience-targeting-in-wss/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
