<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
  <channel>
    <title>MarkItUp - Thinking Products...</title>
    <link>http://markitup.com/</link>
    <description>MarkItUp - Thinking Products...</description>
    <image>
      <url>http://MarkItUp.com/Images/RssFeedImage.png</url>
      <title>MarkItUp - Thinking Products...</title>
      <link>http://markitup.com/</link>
    </image>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>Making Web Parts easier to manage</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=b0e03eec-ab81-4dc4-a69b-374d57cfad5e</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=b0e03eec-ab81-4dc4-a69b-374d57cfad5e</link>
      <description>
		&lt;p&gt;
				&lt;strong&gt;Adding Dynamic Content&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;I mentioned yesterday that I've been creating numerous different web parts throughout the course of writing my book on the ASP.NET 2.0 Portal Framework.  The web part that I showed in yesterday's article was a part that allowed arbitrary chunks of HTML to be added as content.&lt;/p&gt;
		&lt;p&gt;Many of the web parts that are included in the book were inspired from web parts that I needed for the next version of SingleUserBlog - which is built on top of the portal framework.  Having web parts for all of the dynamic content in SingleUserBlog really gives me a lot of flexibility to add dynamic content to my blog and position it wherever I want. &lt;br /&gt; &lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Hyperlinks WebPart&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;It would be fair to say that most bloggers have many links that are displayed on their blogs.  Heck, even on my simple little blog I have the following groups of links:&lt;/p&gt;
		&lt;p&gt;My Websites&lt;br /&gt;Blogs I Read&lt;br /&gt;Blogs Using SUB&lt;br /&gt;My Articles&lt;br /&gt;Tools I Use&lt;/p&gt;
		&lt;p&gt;For other bloggers that I know of it's common to have as many as twenty different categories of links displayed somewhere on the page of their blog.  For this reason, one of the first web parts that I built was a web part that allowed me to add hyperlinks and have them displayed on the page.  Here's a picture of the web part with links for the blogs that I read:&lt;/p&gt;
		&lt;p align="center"&gt;
				&lt;img alt="A web part that displays links to the blogs that I read." hspace="0" src="http://markitup.com/Data/Images/blogsireadpart.png " align="baseline" border="1" /&gt;
		&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Custom EditorPart for the HyperlinksWebPart&lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;When I created the HyperlinksWebPart I decided that the data type for storing the custom content should be a custom class that provided a high level of fidelity over how the links are handled.  For example, a user should be able to specify some of following attributes for each hyperlink that they add:&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Display Title 
&lt;/li&gt;
				&lt;li&gt;Url 
&lt;/li&gt;
				&lt;li&gt;Description (Optional) 
&lt;/li&gt;
				&lt;li&gt;Display Order 
&lt;/li&gt;
				&lt;li&gt;Whether or not to open in a new page &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;Using a complex data type to store the personalization sure provides an easy way to store the data about each hyperlink but complex types do not, by default, get displayed within the property editor when editing a web part.  Thankfully the portal framework makes it very simple to associate custom user interface elements with a web part by simply overriding a method named CreateEditorParts and returning a class that knows how to create an editing interface for a particular type of web part.  By doing this you are able to provide a totally custom solution for managing the data for a web part.  For example, you could display a visual tool such as a map to allow a user to choose which region to display weather information for in a weather web part instead of having to manually type a location name.&lt;/p&gt;
		&lt;p&gt;The following image shows the user interface that I created for the Hyperlinks web part so that I could easily add new links or delete existing ones:&lt;/p&gt;
		&lt;p align="center"&gt;
				&lt;img alt="The custom EditorPart for managing hyperlink data" hspace="0" src="http://markitup.com/Data/Images/customeditorpart.png " align="baseline" border="1" /&gt;
		&lt;/p&gt;
		&lt;p&gt;The custom EditorPart that I created is titled "Manage Links" and sits within the existing EditorZone.  All of the existing EditorParts that ship with ASP.NET 2.0 can also be displayed within the EditorZone to allow users to manage more "generic" web part properties such as its title, height, width, and chrome type to use.&lt;/p&gt;
		&lt;p&gt;As you can see, providing custom EditorParts to manage the data in web parts is a great way to make web parts easier for users to manage by providing fields for each property on the custom data type and allowing users to easily delete existing links.&lt;/p&gt;
		&lt;p&gt;Within the next day or so I'll upload a recent build of SUB V2 and supply the authorization credentials so that people can login and have a play with the new web parts to see how they work for real.&lt;/p&gt;
</description>
      <pubDate>Saturday, January 07, 2006 9:31 AM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=b0e03eec-ab81-4dc4-a69b-374d57cfad5e#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=b0e03eec-ab81-4dc4-a69b-374d57cfad5e#Feedback</comments>
      <slash:comments>5</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=b0e03eec-ab81-4dc4-a69b-374d57cfad5e</wfw:commentRss>
    </item>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>ASP.NET 2.0 Themes and Skinning</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=cfe07dc2-5733-4e1d-a335-3dcbb9eed823</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=cfe07dc2-5733-4e1d-a335-3dcbb9eed823</link>
      <description>
		&lt;p&gt;One of my favourite features in ASP.NET 2.0 is Themes (in fact I like it so much that I own the domain aspthemes.net) so naturally it's one of the features that I'm hoping to get a lot of mileage out of when writing SUB V2.&lt;/p&gt;
		&lt;p&gt;Yesterday I showed how, with zero code, I was able to &lt;a href="/Posts/Post.aspx?postId=35b6f2ca-9bc7-4002-8857-60c8e9cb494f"&gt;create the Post Categories tree&lt;/a&gt; by simply dragging out a TreeView and binding it to an XmlDataSource.  Today I'd like to talk about how, by moving all of those style attributes into my themes folder, that I can get a very customizable site.&lt;/p&gt;
		&lt;p&gt;When you move the style information into a skin file you can optionally give the skin an ID and then refer to it explicitly.  The TreeView that I showed yesterday had a pretty simple style so I'd give it a skin ID of something like: "SimpleTree".  The power of themes is that I could easily create several other skin ID's and add them to the skin file also and then, at runtime, I could actually allow the user to choose which theme they want to display.&lt;/p&gt;
		&lt;p&gt;The following image shows how I was able to create 4 different skins for the TreeView based on some out-of-the-box ones that ship with ASP.NET 2.0.  &lt;/p&gt;
		&lt;p align="center"&gt;
				&lt;img alt="Styled Trees" hspace="0" src="http://markitup.com/Data/Images/styledtrees.png " align="baseline" border="1" /&gt;
		&lt;/p&gt;
		&lt;p&gt;From the developer perspective I was able to do all of this in less than 10 minutes and, from the end-user's view, they will love the ability to easily style the application in whichever way they choose to do.&lt;/p&gt;
		&lt;p&gt;All of this makes for a very customizable blog when I'm finished with SUB V2.&lt;/p&gt;
</description>
      <pubDate>Sunday, November 13, 2005 1:26 AM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=cfe07dc2-5733-4e1d-a335-3dcbb9eed823#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=cfe07dc2-5733-4e1d-a335-3dcbb9eed823#Feedback</comments>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=cfe07dc2-5733-4e1d-a335-3dcbb9eed823</wfw:commentRss>
    </item>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>SUB V2 First Web Part - Post Categories</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=35b6f2ca-9bc7-4002-8857-60c8e9cb494f</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=35b6f2ca-9bc7-4002-8857-60c8e9cb494f</link>
      <description>
		&lt;p&gt;Today I worked on the "Post Categories" web part which can be seen in the following image:&lt;/p&gt;
		&lt;p align="center"&gt; &lt;img alt="First Web Part for SUB V2 - Post Categories" hspace="0" src="http://markitup.com/Data/Images/firstwebpart_1.jpg " align="baseline" border="1" /&gt;&lt;/p&gt;
		&lt;p&gt;The picture shows me dragging the web part to display it elsewhere on the page.&lt;/p&gt;
		&lt;p&gt;This web part is a pretty simple beastie, in fact here is the actual web part code (all of it):&lt;/p&gt;
		&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
				&lt;p&gt;
						&lt;font face="Courier New" size="2"&gt;&amp;lt;asp:TreeView ID="TreeView1" runat="server" SkinID="CategoryTree" &lt;br /&gt;    EnableViewState="False" DataSourceID="TreeNodeDataSource" &amp;gt;&lt;br /&gt;    &amp;lt;DataBindings&amp;gt;&lt;br /&gt;        &amp;lt;asp:TreeNodeBinding DataMember="treenode" NavigateUrlField="navigateUrl" TextField="text" /&amp;gt;&lt;br /&gt;        &amp;lt;asp:TreeNodeBinding DataMember="treenodes" Text="Post Categories" Value="Post Categories" /&amp;gt;&lt;br /&gt;    &amp;lt;/DataBindings&amp;gt;&lt;br /&gt;&amp;lt;/asp:TreeView&amp;gt;&lt;/font&gt;
				&lt;/p&gt;
				&lt;p&gt;
						&lt;br /&gt;
						&lt;font face="Courier New" size="2"&gt;&amp;lt;asp:XmlDataSource ID="TreeNodeDataSource" &lt;br /&gt;    runat="server" &lt;br /&gt;    DataFile="~/Data/Categories.xml"&lt;br /&gt;    TransformFile="~/Data/CategoriesToTreeNodes.xsl" /&amp;gt;&lt;/font&gt;
				&lt;/p&gt;
		&lt;/blockquote&gt;
		&lt;p&gt;The control uses the existing Categories xml file and an XSL transform to create a hierarchical XML document which is then bound to a TreeView control via the XmlDataSource control.  &lt;/p&gt;
		&lt;p&gt;Not bad for a fully functional, totally dynamic control that can be dragged around the place at runtime eh?&lt;/p&gt;
</description>
      <pubDate>Saturday, November 12, 2005 7:03 AM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=35b6f2ca-9bc7-4002-8857-60c8e9cb494f#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=35b6f2ca-9bc7-4002-8857-60c8e9cb494f#Feedback</comments>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=35b6f2ca-9bc7-4002-8857-60c8e9cb494f</wfw:commentRss>
    </item>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>Web Parts in SUB V2</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=a12054b0-97f0-4789-b8f1-3f160b577492</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=a12054b0-97f0-4789-b8f1-3f160b577492</link>
      <description>
		&lt;p&gt;The other day I mentioned that I had plans to integrating some portal features into the new version of SingleUserBlog and today I'd like to share some of that vision.  At the moment I'm actually writing a book on the topic of portals and web parts so, I'm actually using some of the samples that I've prepared for the book in SUB - it's been a great way to get some useful, real work examples and the two activities form a nice, symbiotic relationship.&lt;/p&gt;
		&lt;p&gt;A couple of the features that have been asked for involve exposing additional data about site metrics - such as popular pages, recent comments, etc.  In the new version I'm building some new indexes to cater for the storage of this information and will be exposing each individual "report" as a web part.  This means that I will start out with things such as:&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Most Popular Posts Web Part 
&lt;/li&gt;
				&lt;li&gt;Recent Comments Web Part 
&lt;/li&gt;
				&lt;li&gt;Post Count By Month Web Part 
&lt;/li&gt;
				&lt;li&gt;Post List By Month Web Part (connects to Post Count By Month Web Part) 
&lt;/li&gt;
				&lt;li&gt;Daily Links Web Part 
&lt;/li&gt;
				&lt;li&gt;etc &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;The web parts would sit in a custom Gallery (CatalogZone) named "Site Tools".  This means that the site owner can dynamically choose which of these parts to display (and where!) at any given time.  Parts can be added to or removed from a page at runtime to change the information that is displayed to visitors of the site.&lt;/p&gt;
		&lt;p&gt;The "Site Tools" gallery is extensible in that it also "probes" the filesystem and adds parts that are added - think of this as being similar to having a plug-in architecture.  What this means is that it becomes very, very simple to dynamically develop and upload new web parts.&lt;/p&gt;
		&lt;p&gt;You can view the current list of feature requests and add your own items to the comments of my original post about the new blog engine which is located &lt;a href="/Posts/Post.aspx?postId=622ac040-d459-40dc-a66d-5478bbe2db8a"&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Friday, November 11, 2005 1:23 PM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=a12054b0-97f0-4789-b8f1-3f160b577492#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=a12054b0-97f0-4789-b8f1-3f160b577492#Feedback</comments>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=a12054b0-97f0-4789-b8f1-3f160b577492</wfw:commentRss>
    </item>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>MasterPage and Themes: Done!</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=d949c1dc-6495-4bc8-8e27-62050d3061b8</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=d949c1dc-6495-4bc8-8e27-62050d3061b8</link>
      <description>
		&lt;p&gt;I got a good slab of work done on SUB V2 last night; here's a picture of the current state of it:&lt;/p&gt;
		&lt;p&gt;
				&lt;img alt="Master Page and Themes done" hspace="0" src="http://markitup.com/Data/Images/masterpageandthemes.jpg " align="baseline" border="1" /&gt;
		&lt;/p&gt;
		&lt;p&gt;As you can see, the base theme will stick with the 3-column layout and I have included WebPartZone's on both the right and left column.  The right column will also contain the web part editor, catalog, and connections zone.  &lt;/p&gt;
		&lt;p&gt;I'm hoping to have the code for managing posts brought across today so there is some chance of a very early beta by the weekend.&lt;/p&gt;
</description>
      <pubDate>Tuesday, November 08, 2005 12:03 AM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=d949c1dc-6495-4bc8-8e27-62050d3061b8#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=d949c1dc-6495-4bc8-8e27-62050d3061b8#Feedback</comments>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=d949c1dc-6495-4bc8-8e27-62050d3061b8</wfw:commentRss>
    </item>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>Today I started the new version of SUB</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=df0c66a0-8120-4205-acbc-5472b5cf08a4</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=df0c66a0-8120-4205-acbc-5472b5cf08a4</link>
      <description>
		&lt;p&gt;Yup, I started it today:&lt;/p&gt;
		&lt;p align="left"&gt;
				&lt;img alt="Just started today" hspace="0" src="http://markitup.com/Data/Images/subv2beginning.jpg " align="baseline" border="1" /&gt;
		&lt;/p&gt;
		&lt;p align="center"&gt;
		&lt;/p&gt;
		&lt;p align="left"&gt;I'll describe some of the features - especially my plans for the Web Parts - a bit later.  Remember, if you have any special request, &lt;a href="/Posts/Post.aspx?postId=622ac040-d459-40dc-a66d-5478bbe2db8a"&gt;send 'em through&lt;/a&gt;!&lt;/p&gt;
</description>
      <pubDate>Monday, November 07, 2005 11:35 AM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=df0c66a0-8120-4205-acbc-5472b5cf08a4#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=df0c66a0-8120-4205-acbc-5472b5cf08a4#Feedback</comments>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=df0c66a0-8120-4205-acbc-5472b5cf08a4</wfw:commentRss>
    </item>
    <item>
      <dc:creator>MarkItUp</dc:creator>
      <title>SUB V2.0</title>
      <guid>http://markitup.com/Posts/Post.aspx?postId=622ac040-d459-40dc-a66d-5478bbe2db8a</guid>
      <link>http://markitup.com/Posts/Post.aspx?postId=622ac040-d459-40dc-a66d-5478bbe2db8a</link>
      <description>
		&lt;p&gt;If it wasn't for the fact that I'm writing an ASP.NET V2 book I would have done this already but, I've received so many emails about it that I just have to get around to it... I'm going to create an ASP.NET V2.0 version of SingleUserBlog.  All of the obvious things will be present:&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;Master Pages 
&lt;/li&gt;
				&lt;li&gt;Themes 
&lt;/li&gt;
				&lt;li&gt;Navigation API 
&lt;/li&gt;
				&lt;li&gt;Web Part Framework &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;Here's my question for you: What features would you like to see?&lt;/p&gt;
		&lt;p&gt;Speak now.&lt;/p&gt;
</description>
      <pubDate>Friday, November 04, 2005 12:54 PM</pubDate>
      <wfw:comment>http://markitup.com/Posts/Post.aspx?postId=622ac040-d459-40dc-a66d-5478bbe2db8a#Feedback</wfw:comment>
      <comments>http://markitup.com/Posts/Post.aspx?postId=622ac040-d459-40dc-a66d-5478bbe2db8a#Feedback</comments>
      <slash:comments>15</slash:comments>
      <wfw:commentRss>http://markitup.com/CommentRss.ashx?postID=622ac040-d459-40dc-a66d-5478bbe2db8a</wfw:commentRss>
    </item>
  </channel>
</rss>