Stacy Draper Stacy Draper's Professional Blog http://www.wildwires.com/Blog.aspx http://backend.userland.com/rss Functions Used In Calculated Columns In SharePoint Lists A question that I've had on the back burner for quite some time is what are the functions in SharePoint calculated columns.  I've taken a cursoury look here and there and never found the answer.  I've recently been passing direct messages via twitter to <span class="fn">AndrewClark,</span> @sharepointac, and he sent me a message that had the answer I've been looking for <a href="http://office.microsoft.com/en-us/sharepointtechnology/CH011711171033.aspx" shape="rect">http://office.microsoft.com/en-us/sharepointtechnology/CH011711171033.aspx</a>  http://www.wildwires.com/Blog/09-12-17/Functions_Used_In_Calculated_Columns_In_SharePoint_Lists.aspx Stacy Draper http://www.wildwires.com/Blog/09-12-17/Functions_Used_In_Calculated_Columns_In_SharePoint_Lists.aspx affdc88c-11c5-4afb-a839-430d10879476 Thu, 17 Dec 2009 10:52:43 GMT Working with existing SharePoint views from code <p>Every week I have to fax a form that has data that I keep in a log, a SharePoint list actually.&#160; The recipient expects it to be done by hand, I guess there aren’t many people who go the extra step and make a SharePoint list.&#160; I was just hoping to export the information to an excel spreadsheet,&#160; but the spreadsheet confused them.&#160; They just wanted to see their little for filled out by hand.&#160; I don’t like to do anything by hand.</p> <p>Using GDI+ to load up the form as a bitmap then using the Graphics object to draw text in a comic font, kind of looks like I wrote it by hand.&#160; I had even considered (and still considering) buying our own fonts, for each person who enters information into the log, from a place like <a href="http://www.yourfont.com">www.yourfont.com</a>.&#160; By checking the “last modified by” to see whose font to use.&#160; I decided against it because they are 9 bucks a piece and I figured no one would ever notice and there’s certainly no value in it other than it’s “cool”.&#160; Once the image is created it’s sent as an email attachment to <a href="http://www.fax1.com">www.fax1.com</a> and they fax it where it needs to go.&#160; Seems simple enough.&#160; I figured it would take a few hours, but I ran into a couple problems around using an existing view on a list.</p> <p>There is a time and a place to use a SPView vs an SPQuery.&#160; The problem is that people can change the SPView and that could be exactly what you want.&#160; But most of the time you want to use an SPQuery in your code.&#160; I was in a hurry and didn’t feel like writing a CAML query and it bit me right in the butt a couple of times.</p> <p>First problem I ran into was &quot;<em>Value does not fall within the expected range</em>&quot; which means the column isn’t in the result set that I was bringing back.&#160; So I went to the view and added the column, but not so fast!&#160; I first assumed that the column was there already and spent some time searching for a solution and trying a few variations on the code.&#160; This hacking led me down a road where I thought something was seriously wrong.&#160; I could do something like items[i].Fields[“my-Field”].InternalName and it would give me my_x002d_Field, or whatever the hex for a hyphen is.&#160; Then I would pass the internal name to the items collection like this items[items[i].Fields[“my-Field”].InternalName] and I still got the error!&#160; The point being I got all wound up in the wrong direction for two reasons:&#160; </p> <ol> <li>The fields collection doesn’t have anything to do with the fields that are brought back in the view.</li> <li>The hyphen wasn’t as near much trouble as I was trying to make it.</li> </ol> <p>The field names don’t change no matter what the user does, but they can delete a field.&#160; A missing field can cause your code problems, so you need to check for the field first just so your code doesn’t bomb.&#160; Using a view can be nice because a user change change the sort order or even the order of fields.&#160; They can also mess with the group by which leads me to the second problem.</p> <p>The other problem I ran into was a very vague message &quot;<em>An entry with the same key already exists</em>&quot; around Collections.Specialized was mentioned.&#160; I’m not making a collection, I’m being handed one!&#160; I was just simply pulling back a collection and I was getting this error messages.&#160; I tried it as an SPItemsCollection, I tried it as a DataTable,&#160; I tried it in the morning and I tried it at night.&#160; I was even looking around for a virgin goat to sacrifice.&#160; Then it dawned on me that the duplicate key that it could be talking about is the group by on the DateTime column.&#160; I removed the group by and everything worked as designed.&#160; I loaded up the ChartPart and pointed to a view that had a groupby on it as well.&#160; Groupbys are nice for people and I think a very common thing.&#160; But unless you’ve written your code to accommodate them know that you’ll have problems.</p> <p>For the most part an SPQuery is the way to go, but when I’m in a hurry, being cheap, or just want to prove a point I’ll use a SPView and manage it on the list.&#160; I can imagine where a SPView would be very useful when the business needs the user to manage the query, but if that’s not the case then SPQueries are the way to go.</p> http://www.wildwires.com/Blog/09-09-20/Working_with_existing_SharePoint_views_from_code.aspx Stacy Draper http://www.wildwires.com/Blog/09-09-20/Working_with_existing_SharePoint_views_from_code.aspx b247b0c4-7ee6-4639-a12d-936cb24e4e54 Sun, 20 Sep 2009 17:32:27 GMT Audio stops working in Windows Server 2008 <p>My workstation operating system (OS) is Windows Server 2008, for a number of reasons, but mostly so I can better describe what settings need to be set where.&#160; Everyone once in a while my audio has quite working.&#160; Actually on any server os my audio quits a lot.&#160; It usually comes back when I reboot but I don’t reboot but every 15 to 30 days.&#160; I have a bazillion things open and rebooting is always a pain in the butt.</p> <p>Start &gt; Administrative Tools &gt; Services &gt; Restart “Windows Audio”</p> <p>or if it happens enough make a batch file:</p> <pre class="brush: csharp;">net stop &quot;Windows Audio&quot; net start &quot;Windows Audio&quot;</pre> http://www.wildwires.com/Blog/09-08-23/Audio_stops_working_in_Windows_Server_2008-2109748892.aspx Stacy Draper http://www.wildwires.com/Blog/09-08-23/Audio_stops_working_in_Windows_Server_2008-2109748892.aspx f2a97402-8169-42a0-98b9-0e9fcb24ba3e Sun, 23 Aug 2009 10:03:02 GMT Ferrari Case Study <p>I just read the <a title="Ferarri Case Study" href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000004987" target="_blank">Ferrari case study</a> and was surprised by this statement, <em>“Site traffic has increased by 237 percent, with a 150 percent increase in unique visitors.”</em> SharePoint by itself doesn’t increase traffic.&#160; Understanding how search engines look at your site and being able to manage the content search engines look at increases traffic.&#160; </p> <p>The article did state that it’s now easier manage content than it was in their previous java based version.&#160; It almost sounded like they had to have a developer make all content changes.&#160; I’m not a Java fan, but I do think this is a cheap shot at a whole platform.&#160; There are plenty of bad content management solutions in .NET technologies too.&#160; The increased traffic was a combination of a few things.</p> <p>When the content, meta tags, titles and other asset areas are easy to manage it’s easier to make the search engines like the site.&#160; It’s also important to know what they like.&#160; So it’s important to know what to do and to have the ability to do it, and this is what a properly implemented SharePoint brings to the table.&#160; Believe me you can set up SharePoint so that it doesn’t cater to search engines at all.&#160; It’s just content, like anything else it can be managed poorly or it can be managed well.</p> <p>These numbers do seem modest so I tend to believe they aren’t from a marketing champagne (because even a bad one would more than double your traffic) and are really from search engine optimization but it’s hard to know that for sure.</p> <p>The bottom line is that the case study didn’t clearly point out why traffic increased. I think they are trying to say that because the content was more easily managed they were better able to optimize the content for higher ranks on the search engines.</p> http://www.wildwires.com/Blog/09-08-05/Ferrari_Case_Study.aspx Stacy Draper http://www.wildwires.com/Blog/09-08-05/Ferrari_Case_Study.aspx 9d45c187-7364-4e0a-b26f-236a6660c3cc Wed, 05 Aug 2009 09:46:50 GMT I may pick and choose who I work with but at least I&rsquo;m not asking the government for money <p>Here’s a page out of my Sunday morning.&#160; I went to Chrysler.&#160; I heard that they had some pretty good deals so I thought I’d go find out more about it. Having crappy luck online and being in the area to big one that didn’t close down recently I thought I’d just drop in.&#160; Just on a whim and maybe walk out with a car.&#160; I just need adaptive cruise control and a few other things and I’d be set.&#160; Walking into the dealership I saw this sweet little Dodge Challenger and it looked cool.</p> <p>Upon entering the <a title="http://www.arrigopalmbeach.com" href="http://www.arrigopalmbeach.com">Arrigo dealership</a> I found there were 4 sales people and a receptionist.&#160; One of the sales people greeted me and asked me how I was doing and if he could help me.&#160; I said, “Sure, I’ve heard you got some great deals and I’d like to know more about your product line.”&#160; He pushes me off with a back handed wave onto the other sales people behind him.&#160; </p> <p>Another one in the bunch notices that I’m flailing and he asks me if he can help me.&#160; So I tell him the same but this time I don’t say what I want as smoothly, in looking back on it it’s because now I’m a little bugged and the Challenger is now where in my mind.&#160; I’m wondering to myself why I’m even here.&#160; Then this person comes up in between us and tries to be cute, but she’s not, and asks me if she can help me.</p> <p>Noticing that she was obviously the receptionist I said, “Look please don’t ask me if you can help me if you really can’t?”&#160; I’m there to buy a car,&#160; it’s not that big of a jump in logic.&#160; She nods her head like she’ll be able to help me so I tell my story a third time.&#160; She responds with, “Can I get some information?”</p> <p>“No.” she obviously wasn’t just wanting my name.&#160; I’m certain she wanted my address, email, and phone number.&#160; I just want to learn about Chrysler.&#160; She stood there looking at me with her shoulders shrugged as if to say, “If you don’t give me any information I can’t sell you car.”&#160; But before she could even come up with any nonsense like that I turned and started to walk out and it struck me as I was walking to the door and I turned and said&#160; “I may pick and choose who I work with, but at least I’m not asking the government for money.”</p> http://www.wildwires.com/Blog/09-07-26/I_may_pick_and_choose_who_I_work_with_but_at_least_I_rsquo_m_not_asking_the_government_for_money.aspx Stacy Draper http://www.wildwires.com/Blog/09-07-26/I_may_pick_and_choose_who_I_work_with_but_at_least_I_rsquo_m_not_asking_the_government_for_money.aspx 4192eb18-f763-4088-8f52-8215affa4b8d Sun, 26 Jul 2009 21:27:13 GMT First wave page <p>After <a href="http://c.wildwires.com/Blog/09-07-23/An_invitation_to_Google_Wave_Developer_Sandbox.aspx" target="_blank">receiving notice</a> that I was accepted into the program&#160; I get my user name and password in less than 30 minutes.&#160; I get logged in and it was confusing at first because it’s a whole new interface and paradigm.&#160; Like chat and forums all mixed into one.&#160; Like forums with the extra ability to reply right in the middle of someone else's sentence.</p> <p>The first thing I wanted to do was build extract a wave to my own web page.&#160; I did that at <a title="http://www.wildwires.com/wave/demo1.aspx" href="http://www.wildwires.com/wave/demo1.aspx">http://www.wildwires.com/wave/demo1.aspx</a> it’s my wave attempting to recruit other developers to help build a bunch of controls around wave.&#160; </p> <p>I was trying to figure out how to keep the screen shot in sync like take one every 5 minutes for example,&#160; but I couldn’t figure out an easy way to do that.</p> <p>So far there are three of us and 2 features, create new wave and rss feed.&#160; Once I get it done I’ll stick it in a web part this will probably be a codeplex project and I’ll post the url to it once we get it going.</p> http://www.wildwires.com/Blog/09-07-24/First_wave_page.aspx Stacy Draper http://www.wildwires.com/Blog/09-07-24/First_wave_page.aspx 09a0829d-4cc5-4b90-815d-dea80389ccd9 Fri, 24 Jul 2009 08:23:18 GMT Windows 7 and Server 2008 R2 Available in MSDN August 6th <p>Twitter is pretty awesome.&#160; I couldn’t figure out when windows 7 was going to be in MSDN.&#160; Post a question and get a response, “<strong><a href="http://twitter.com/krichie">krichie</a></strong>@<a href="http://twitter.com/stacyDraper">stacyDraper</a> August 6th <a href="http://bit.ly/OFsrN">http://bit.ly/OFsrN</a>”.</p> <p>Other times twitter can be a pain with all the “Look at me” posts, this time it worked out pretty good. </p> <p>&#160;</p> <p>Thanks Keith,</p> <p>Stacy</p> http://www.wildwires.com/Blog/09-07-23/Windows_7_and_Server_2008_R2_Available_in_MSDN_August_6th.aspx Stacy Draper http://www.wildwires.com/Blog/09-07-23/Windows_7_and_Server_2008_R2_Available_in_MSDN_August_6th.aspx 11012aa3-0e2d-4d12-8c0e-438e20a39fb1 Thu, 23 Jul 2009 10:00:29 GMT An invitation to Google Wave Developer Sandbox <p>So I just got an email about Google wave.&#160; Basically it was a URL sending me to a Google docs form where I entered what I would like my user name to be and stuff like that.&#160; It says in a few days that I should get some additional information.</p> http://www.wildwires.com/Blog/09-07-23/An_invitation_to_Google_Wave_Developer_Sandbox.aspx Stacy Draper http://www.wildwires.com/Blog/09-07-23/An_invitation_to_Google_Wave_Developer_Sandbox.aspx 7d726e70-3564-4b3e-bac1-809e0a5583e5 Thu, 23 Jul 2009 09:45:38 GMT I guess Telligent is not free for community any more <p>After some careful deliberation I decided to put <a href="http://www.sfspug.com">www.sfspug.com</a> on Telligent’s community server.&#160; I knew they were coming out with a new version soon and I thought it would be good because then I could see the older version and migrate to the newer one.&#160; What I hadn’t counted on was that they wouldn’t have a new community server community edition.&#160; Well I went to the site and I couldn’t find it.&#160; So I went to the Tellignet’s contact page and I indicated that I couldn’t find the free version like I had before.&#160; Below is the email dialog where they answered and said they don’t have a free version.&#160; I asked them how much it is and they didn’t respond at all.&#160; My feeling is when you ask, “How much is it” and they can’t answer that in a short simple sentence then there’s a problem:</p> <p><em><font size="2">How much is it?</font></em></p> <p><em><font size="2"><b>From:</b> Grant Pankonien [mailto:GPankonien@telligent.com] <br /><b>Sent:</b> Friday, July 17, 2009 12:51 PM <br /><b>To:</b> Stacy Draper <br /><b>Subject:</b> Telligent can help solve your business challenges with Web 2.0</font></em></p> <p><a href="http://c.wildwires.com/Libraries/MetaBlogLib/WindowsLiveWriter-IguessTelligentisnotfreeforcommunityanym_9D11-clip_image001_2.sflb.ashx"><em><font size="2"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://c.wildwires.com/Libraries/MetaBlogLib/WindowsLiveWriter-IguessTelligentisnotfreeforcommunityanym_9D11-clip_image001_thumb.sflb.ashx" width="120" height="36" /></font></em></a></p> <p><em><font size="2">Dear Stacy, </font></em></p> <p><em><font size="2">Thank you for your request sent into our sales team. Unfortunately, we no longer offer a free version of our software. </font></em></p> <p><em><font size="2">The only option we have at this point is an Enterprise class license.</font></em></p> <p><em><font size="2">Please let me know if I can do anything for you or can help in any way.</font></em></p> <p><em><font size="2">Thank you, Stacy!</font></em></p> <p><em><font size="2">Thanks, </font></em></p> <p><em><font size="2">Grant Pankonien</font></em></p> <p><em><font size="2">Inside Sales, Telligent</font></em></p> <p><a href="mailto:gpankonien@telligent.com?elq=dbac744e84444c94ba07d15fdd663fd3&amp;elqa=1A6E75B53E5889ACB309E888683CCCD68F0A03E1817B420B9D58A3C60F8D0C45ACB4B62BDC5D776A511F189532C983AA8C612C4CCB4591195C15E938CF1FA679"><em><font size="2">GPankonien@telligent.com</font></em></a></p> <p><em><font size="2">o: 214.420.9939 | f: 972.407.0194 | m: 512.913.2682 </font></em><a href="http://www.telligent.com/?elq=dbac744e84444c94ba07d15fdd663fd3&amp;elqa=1A6E75B53E5889ACB309E888683CCCD68F0A03E1817B420B9D58A3C60F8D0C45ACB4B62BDC5D776A511F189532C983AA8C612C4CCB4591195C15E938CF1FA679"><b><em><font size="2">telligent.com</font></em></b></a><b></b></p> <p><em><font size="2">17950 Preston Rd., Suite 310, Dallas, Texas 75252 | Toll-free: 1 (877) 492-9484</font></em></p> <p>&#160;</p> <p>I still haven’t received an answer and the price isn’t listed on their website.&#160; They clearly have something called community – I don’t know what that is now that Grant has indicated there’s only enterprise.&#160; Just how hard does one have to beg to buy something?</p> http://www.wildwires.com/Blog/09-07-20/I_guess_Telligent_is_not_free_for_community_any_more.aspx Stacy Draper http://www.wildwires.com/Blog/09-07-20/I_guess_Telligent_is_not_free_for_community_any_more.aspx 860bed13-f7c9-4211-8884-5bb1dd0e2029 Mon, 20 Jul 2009 11:09:16 GMT Intellisense, Reflection and namespace.xml <p>So here I was working on a project that required me to look at existing .DLLs and figure out what objects, constructors, methods and properties there were.&#160; I’m also required to return some friendly data, like the stuff you get from intellisense in Visual Studio.&#160; I thought this was all done via System.Reflection and you can get some of it, but the friendly content just isn’t there.</p> <p>After spending a ton of time looking through the System.Reflection members and looking again and looking through google and even bing I couldn’t figure out how to to get the summary and other information from the .dll using reflection.&#160; It’s because it’s not in there.&#160; Talk about trying to squeeze blood out of a turnip!&#160; Where it is is in an XML document that is shipped with the <a href="http://c.wildwires.com/Libraries/MetaBlogLib/WindowsLiveWriter-image_2_1.sflb.ashx"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Project Properties Showing the checkbox for teh XML documentation file" border="0" alt="Project Properties Showing the checkbox for teh XML documentation file" align="right" src="http://c.wildwires.com/Libraries/MetaBlogLib/WindowsLiveWriter-image_thumb_1.sflb.ashx" width="435" height="378" /></a>DLL.&#160; It has the same name as the .DLL just with an .XML extension instead of a .DLL extension.</p> <p>I was a little dumbfounded, because I never noticed this before.&#160; I promptly built a class library and put it into a project on another machine.&#160; I did get intellisense but I didn’t get the information that was in the comments like the summary, method or parameter information.&#160; You only get this when the .DLL has an accompanying .XML file.&#160; To generate this file go to <strong>Project Properties &gt; Build</strong> and in the Output section check the box next to <strong>XML documentation file</strong>.</p> <p>You end up with something that looks like:</p> <pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot;?&gt; &lt;doc&gt; &lt;assembly&gt; &lt;name&gt;ClassLibrary1&lt;/name&gt; &lt;/assembly&gt; &lt;members&gt; &lt;member name=&quot;T:ClassLibrary1.Class1&quot;&gt; &lt;summary&gt; This is the class summary &lt;/summary&gt; &lt;/member&gt; &lt;member name=&quot;M:ClassLibrary1.Class1.Method1(System.String,System.String)&quot;&gt; &lt;summary&gt; This is the summary for method 1 &lt;/summary&gt; &lt;param name=&quot;foo1&quot;&gt;This is foo1&lt;/param&gt; &lt;param name=&quot;foo2&quot;&gt;This is foo2&lt;/param&gt; &lt;/member&gt; &lt;/members&gt; &lt;/doc&gt;</pre> <p>Now back to my project.&#160; I am going to have to use a combination of reflector and parsing an xml document.&#160; I don’t really want to be in the XML parsing business, in my travels I found someone else who’s already been through this pain and has two lines of code to get to the information that I need.</p> <p>Jim Blackler wrote a blog about obtaining the inline XML C# documentation at runtime using .NET 2.0, <a title="http://jimblackler.net/blog/?p=49" href="http://jimblackler.net/blog/?p=49">http://jimblackler.net/blog/?p=49</a>.&#160; It’s one of those rare times that you find an article that’s a year and a half old and the information is still relevant.</p> <p>basically it boils down to <em><small>(the following is copied directly from his site)</small></em>:</p> <pre class="brush: csharp;">XmlElement documentation = DocsByReflection.XMLFromMember(typeof(SomeExampleClass).GetProperty(&quot;ExampleProperty&quot;)); Console.WriteLine(documentation[&quot;summary&quot;].InnerText.Trim());</pre> <p>Thanks Jim!</p> http://www.wildwires.com/Blog/09-07-01/Intellisense_Reflection_and_namespace_xml.aspx Stacy Draper http://www.wildwires.com/Blog/09-07-01/Intellisense_Reflection_and_namespace_xml.aspx 0642929e-75b0-4fdd-9eb3-58f44f04a854 Wed, 01 Jul 2009 16:47:49 GMT F# <p>So I just downloaded Visual Studio 2010 and in the time that it took to doanload and install I went and did some research on F#.&#160; I’ve been feeling a little behind lately so when I saw F# I thought, “Great! What happened to D# and E#?&#160; I’m still back over here on C#!”</p> <p>Turns out that F# is for functional programming - in short passing functions&#160; and results around through pipes.&#160; It’ll remind some of PowerShell.&#160; A lot of the examples out there now are very mathematical based. Not sure if this is marketing to the financial and engineering problems or if the language is solely suited for that kind of problem.&#160; There is also built in parallelism which made me start paying attention again.&#160; The other thing that I like about it a lot is that it’s a script and about as fast as C# and C++.</p> <p>let’s see what else 2010 has to offer.</p> http://www.wildwires.com/Blog/09-06-17/F.aspx Stacy Draper http://www.wildwires.com/Blog/09-06-17/F.aspx 28d3c86a-1a17-4747-a929-a1566023d4c2 Wed, 17 Jun 2009 16:11:02 GMT Migration to sitefitiny <p>I just migrated from CMS 2002 to sitefinity.  I looked at a lot of different options and decided that sitefinity was best for me.  The migration was fairly strait forward with a few minor hiccups here and there.  All in all I’m pretty happy with sitefinity.</p> <h3>How I decided which WCM tool to use.</h3> <p>First of all free was a qualifier.  If I couldn’t get it for free then it didn’t get looked at.  A logo at the bottom of the page is a small price to pay for me, which is the requirement of sitefinity and others.</p> <p>I looked at community server which I ended up using for the South Florida SharePoint User Group <a href="http://sfspug.com/" target="_blank" shape="rect">SFSPUG</a>.  Community Server was really more geared to a community site, as you would expect by the name.  <a href="http://telligent.com" target="_blank" shape="rect">Telligent</a> also makes a product called Graffiti and I looked at that as well.</p> <p>I almost went with Graffiti, but I was having a terribly hard time trying to figure out how to make a template for it.  I found a few on the web and they caused errors so it was really difficult for me to imagine myself working with it on an irregular basis.  Which is the kind of love this site gets as I’m always working on someone else's project.  Then I dove into Umbraco, which is priced right but I couldn’t get things to work as advertised.</p> <p>I think Umbraco is going to be a great product one day, but I just feel it’s in an awkward period right now.  I will defiantly look at it again some day.  It has a lot of the features and flexibility that I was looking for.  The awkward part was that some of the out of the box functionality just didn’t work.  Maybe I configured it wrong or I did something weird to it  but in any case it just seems like it takes more time than I’m willing to invest.</p> <p>Sitefinity seemed to offer the best of the WCM that I was looking for.  You get the Telerik controls which are cool.  The editor is usually what makes other WCM systems better.  It seemed about neck and neck with Dot Net Nuke, actually the Dot Net Nuke has a bigger community more components.  I saw that you get all of the Telerik controls for free and that was pretty much the deal closer for me.  I’ve used Infragistics a lot and have enjoyed the functionality that I can bring with them and haven’t used the Telerick controls much.</p> <p>I have some ideas that I’d like to explore around some of the Telerik controls with SharePoint so this was a big deciding factor for me.  I want to use their controls to look at a SharePoint list and render appropriately.  So this is more of a pet project for me.</p> <h3>Development with sitefintiy</h3> <p>It’s pretty easy.  Make a masterpage and inside sitefinity you create a template based on a masterpage.  It’s a pretty common approach or at least one I’m familiar with so it settled well with me.  The editing is not in context,  you have to go to a special url,  find the page and then edit.  I like the CMS 2002, ePrise and many others approach where it’s totally in context.  You’re looking at your page live and you make a simple change to the URL, loggin and you’re in edit mode.  So you’re never too far away from a live site.</p> <p>Sitefinity uses more of a console approach.  So you have to go find the page your interested in and then edit it.  Many WCM tools take this approach and though it’s not my favorite it’s becoming fairly popular and typically provides a cleaner interface.</p> <p>The console they provide it’s easy to add your own user controls too.  Well it seems easy enough.  So a user, that’s me, can drag and drop functionality onto the page.</p> <p> </p> <h3>What’s next?</h3> <p>I’m used to SharePoint lists.  It’s tough to beat a SharePoint list.  I find the sitefinity lists wanting.  So what I plan on doing is using the Telerik controls to front end a SharePoint lists for CRUD (create, read, update and delete).  I’m thinking about doing something with community events, just not sure I want to maintain it.  I’m half tempted to let the community maintain it but I’ve seen the comment spam on my blog so that’s probably not a good idea.</p> http://www.wildwires.com/Blog/09-06-16/Migration_to_sitefitiny.aspx Stacy Draper http://www.wildwires.com/Blog/09-06-16/Migration_to_sitefitiny.aspx f2859cb1-c96f-44ae-9980-31daa43affa6 Tue, 16 Jun 2009 22:26:46 GMT Microsoft Terminal Services Client /admin replaces /console <p>Clients love me so much they want to see me in their building everyday.&#160; I wouldn't say that my clients have crappy equipment they just don't buy the same stuff I would.&#160; So I go to work.&#160; Terminal services into my network from the clients office.&#160; So I used to use mstsc /v:myServer /f /console&#160; v is for serVer f is for full screen and console . . . well that puts me on the console session.&#160; It's nice this way because when I get local I can just log in and everything is the way I left it.&#160; well as of recent mstc 6.1 I believe console has been replaced with admin.&#160; so instead of /console its now /admin.&#160; /console doesn't give you an error, it just doesn't do any thing.&#160; I wonder why they couldn't have just reused the console switch to maKe ADMIN DO WHAT IT DOES NOW!!!! </p> http://www.wildwires.com/Blog/08-08-01/Microsoft_Terminal_Services_Client_admin_replaces_console.aspx Stacy Draper http://www.wildwires.com/Blog/08-08-01/Microsoft_Terminal_Services_Client_admin_replaces_console.aspx b4b9cc76-5f33-4d3d-9ebb-a4dcf9cad62d Fri, 01 Aug 2008 21:36:00 GMT Apply Versioning to Features: A How To for SharePoint Developers <p>It's a well known fact that versioning webparts is a real pain in the butt. <a href="http://bigjimindc.blogspot.com" target="_blank">Big Jim in DC</a> and I have been pondering, searching the Internet and discussing what are some good ways to version web parts and features.&#160; Today we decided to do something about it and came up with a simple strategy.&#160; Use pre-build events to call a <a href="http://bigjimindc.blogspot.com/2007/10/automatic-updating-of.html">script that writes a value to the AssemblyFileVersion attribute of&#160; the assebmlyInfo.cs</a> (sorry vb'ers your just going to have to modify the scripts on your own ).&#160; Then with another script read that value from the assemblyInfo.cs and write it to the feature.xml.&#160; The description attribute to be specific.&#160; That way from the user interface you can see the version and time built.</p> <p>Jim wrote the script to update the Assembly and it can be found <a href="http://bigjimindc.blogspot.com/2007/10/automatic-updating-of.html" target="_blank">here</a>.</p> <p>This is what my pre-build events look like:</p> <pre class="brush: plain;">CD &quot;$(ProjectDir)UTILS&quot; cscript /nologo UpdateAssemblyFileVersion.vbs &quot;$(ProjectDir)properties\AssemblyInfo.cs&quot; cscript /nologo UpdateFeatureDescriptionVersion.vbs &quot;$(ProjectDir)TEMPLATE\FEATURES\$(SolutionName)\Feature.xml&quot; &quot;$(ProjectDir)properties\AssemblyInfo.cs&quot;</pre> <p>&#160;</p> <p>&#160;</p> <p>The source below will read just about any attribute in the assemblyInfo.cs file and append it to the end of the description for the feature (the description attribute of feature.xml).&#160; Mine looks like this &quot;<em>| AssemblyFileVersion: 1.0.62223.1901&#160;&#160; Built: 10/23/2007 7:01:03 PM</em>&quot;.&#160; It's pretty easy to see where the variable assemblyInfo is being create and modify as you meet your needs.</p> <pre class="brush: vb;">' VBScript source code '------------------------------------------------------------------------------ '--- UpdateFeatureDescriptionVersion.vbs '------------------------------------------------------------------------------ '--- Author - Stacy Draper '--- Date - 2007.10.23 '------------------------------------------------------------------------------ '--- This updates the description attribute of the feature node found in '--- feature.xml with the information found in AssebmlyInfo.cs. '------------------------------------------------------------------------------ Option Explicit Dim fileHeader fileHeader = &quot;UpdateAssemblyFileVersion.vbs :: &quot; EnsureCommandLineArgumentExists EnsureFileExists WScript.Arguments(0), &quot;Feature.xml&quot; EnsureFileExists WScript.Arguments(1), &quot;AssemblyInfo.cs&quot; UpdateFeatureXml WScript.Arguments(0), WScript.Arguments(1) Private Sub EnsureCommandLineArgumentExists() If WScript.Arguments.Count &lt;&gt; 2 Then WScript.Echo fileHeader &amp; &quot;You must supply the path to the AssemblyInfo.cs and feature.xml files as arguments.&quot; WScript.Quit 1 End If End Sub Private Sub EnsureFileExists(path, fileName) Dim fso Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;) If Not fso.FileExists(path) Then WScript.Echo fileHeader &amp; fileName &amp; &quot; does not exist at the path provided -&gt; &quot; &amp; path WScript.Quit 1 End If Set fso = Nothing End Sub Function UpdateFeatureXml(featurePath, assemblyInfoPath) Dim node, xmlDoc, description, newDescription, descParts, assemblyInfo, posPipe, i Set xmlDoc = CreateObject(&quot;Msxml2.DOMDocument.3.0&quot;) xmlDoc.async = False xmlDoc.Load featurePath If (xmlDoc.parseError.errorCode &lt;&gt; 0) Then Dim myErr Set myErr = xmlDoc.parseError errQuit &quot;An error occured -&gt; &quot; &amp; myErr.reason Else Set node = xmlDoc.selectSingleNode(&quot;//Feature&quot;) if isNull(node) or (node is nothing) then errQuit &quot;Missing Feature node in feature.xml &quot; end if description = node.getAttribute(&quot;Description&quot;) if isNull(description) or (len(trim(description)) = 0) then errQuit &quot;Missing description attribute of Feature node in feature.xml &quot; end if assemblyInfo = &quot;&quot; assemblyInfo = assemblyInfo &amp; &quot;AssemblyFileVersion: &quot; &amp; getAttribValue(assemblyInfoPath, &quot;AssemblyFileVersion&quot;) assemblyInfo = assemblyInfo &amp; &quot; Built: &quot; &amp; Now() posPipe = inStr(description, &quot;|&quot;) if isNull(posPipe) or posPipe = 0 then newDescription = description &amp; &quot; | &quot; &amp; assemblyInfo else descParts = Split(description, &quot;|&quot;) if uBound(descParts) &gt; 1 then newDescription = descParts(0) for i = 1 to uBound(descParts) - 1 newDescription = newDescription &amp; &quot;|&quot; &amp; descParts(i) next else newDescription = descParts(0) end if newDescription = newDescription &amp; &quot;| &quot; &amp; assemblyInfo end if node.setAttribute &quot;Description&quot;, newDescription xmlDoc.save(featurePath) End If End Function function getAttribValue(path, attrib) Dim fso, f1, ts, s Dim startAttrib, startAttribValue, endAttribValue, strAttribValue Const ForReading = 1 Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;) Set ts = fso.OpenTextFile(path, ForReading) s = ts.ReadAll startAttrib = inStr (s, attrib) if (isNull(startAttrib) or startAttrib = 0) then errQuit attrib &amp; &quot; doesn't exist in AssemblyInfo.cs &quot; end if startAttribValue = startAttrib + len(attrib) + 2 endAttribValue = inStr(startAttribValue, s, &quot;)&quot;) -1 if (isNull(endAttribValue) or endAttribValue = 0) then errQuit attrib &amp; &quot; didn't end as expected in AssemblyInfo.cs &quot; end if strAttribValue = mid(s, startAttribValue, endAttribValue - startAttribValue) getAttribValue = strAttribValue ts.Close Set ts = nothing Set fso = nothing end function function errQuit(message) WScript.Echo fileHeader &amp; message WScript.Echo WScript.Quit 1 end function</pre> http://www.wildwires.com/Blog/07-10-24/Apply_Versioning_to_Features_A_How_To_for_SharePoint_Developers.aspx Stacy Draper http://www.wildwires.com/Blog/07-10-24/Apply_Versioning_to_Features_A_How_To_for_SharePoint_Developers.aspx 36a7cb12-e9d5-433f-bfd4-a95c2361bd98 Wed, 24 Oct 2007 02:38:00 GMT SharePoint Jobs <p>My pal Pirooz just showed me <a href="http://www.justsharepointjobs.com/" target="_blank">http://www.justsharepointjobs.com/</a></p> <p>This is a pretty interesting site not only does it have jobs but it seems to have some pretty good references.&#160; They list some blogs and sites, but they also listed conferences.&#160; I thought that was cool.&#160; You can't even get a list of all up coming conferences from the Microsoft site.</p> <p>They have a great start I hope they keep up the good work.</p> http://www.wildwires.com/Blog/07-07-07/SharePoint_Jobs.aspx Stacy Draper http://www.wildwires.com/Blog/07-07-07/SharePoint_Jobs.aspx 83b613f1-7a42-4d37-a27f-a8e41bbf8866 Sat, 07 Jul 2007 22:07:00 GMT