<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Morten Bock</title><link>http://www.mortenbock.dk/</link><description>A feed of new content on my website</description><item><author>Morten Bock</author><category>blog</category><category>umbraco</category><category>design</category><description>
&lt;p&gt;Last week I helped launch a new blog based on Umbraco. I used
the excellent ImageGen package to generate the images for the
galleries and it is working perfectly :-)&lt;/p&gt;

&lt;p&gt;Tech wise, it is not feature complete yet, but it is already
filled with nice tips about nice design, art and furniture for your
home (in danish...)&lt;/p&gt;

&lt;p&gt;Go visit &lt;a
href="http://livingsweetliving.dk/"&gt;http://livingsweetliving.dk/&lt;/a&gt;
to check it out.&lt;/p&gt;
</description><guid>2194</guid><link>http://www.mortenbock.dk/blog/2010/02/13/launched-new-blog.aspx</link><pubDate>13. februar 2010</pubDate><title>Launced new blog</title></item><item><author>Morten Bock</author><category>chrome</category><category>google</category><category>browser</category><description>
&lt;p&gt;I just wanted to shared this tip, if anyone else wants a bit of
control over the thumbnails that show up in the "New tab" page of
Chrome.&lt;/p&gt;

&lt;p&gt;For me, it was annoying that it had saved the
http://twitter.com/ url, because the front page has the stupid
login box where you have to get your mouse going. Instead, I want
it to go to http://twitter.com/home which has a much better login
box.&lt;/p&gt;

&lt;p&gt;This is not supported by chrome, as far as I can tell, so I went
digging. And I found a small file that contains the tabs. In my
case (On XP in danish) it is here:&lt;/p&gt;

&lt;p&gt;C:\Documents and Settings\Morten Bock Sørensen\Lokale
indstillinger\Application Data\Google\Chrome\User
Data\Default\Preferences&lt;/p&gt;

&lt;p&gt;Open it with your favorite text editor, and look near the
bottom. There is a list of "pinned_urls" in what looks like Json to
me. I just changed the link I needed from:&lt;/p&gt;

&lt;div
style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"
 id="_mcePaste"&gt;"1cc089548931c4fe0463e7a98ec6078e": {&lt;/div&gt;

&lt;div
style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"
 id="_mcePaste"&gt;"direction": "ltr",&lt;/div&gt;

&lt;div
style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"
 id="_mcePaste"&gt;"index": 2,&lt;/div&gt;

&lt;div
style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"
 id="_mcePaste"&gt;"title": "Twitter / Home",&lt;/div&gt;

&lt;div
style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"
 id="_mcePaste"&gt;"url": "http://twitter.com/home"&lt;/div&gt;

&lt;p&gt;"1cc089548931c4fe0463e7a98ec6078e": {&lt;br /&gt;
 "direction": "ltr",&lt;br /&gt;
 "index": 2,&lt;br /&gt;
 "title": "Twitter / Home",&lt;br /&gt;
 "url": "http://twitter.com/"&lt;br /&gt;
 },&lt;/p&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;p&gt;"1cc089548931c4fe0463e7a98ec6078e": {&lt;br /&gt;
 "direction": "ltr",&lt;br /&gt;
 "index": 2,&lt;br /&gt;
 "title": "Twitter / Home",&lt;br /&gt;
 "url": "http://twitter.com/home"&lt;br /&gt;
 },&lt;/p&gt;

&lt;p&gt;And off we go :-)&lt;/p&gt;

&lt;p&gt;Just remember to do this while Chrome is closed, otherwise it
will overwrite your changes.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description><guid>1755</guid><link>http://www.mortenbock.dk/blog/2009/11/24/editing-chrome-thumbnails.aspx</link><pubDate>24. november 2009</pubDate><title>How to edit Chrome thumbnails</title></item><item><author>Morten Bock</author><category>umbraco</category><category>wordpress</category><category>blog</category><category>linq2xml</category><description>
&lt;p&gt;As you may have noticed, my blog has changed a bit this week. I
finally got around to porting it to Umbraco. I did this for several
reasons, but mainly because I feel at home with Umbraco, and I can
tweak it to do just about anything I want. Wordpress on the other
hand is PHP, and I just suck at that. So there you go...&lt;/p&gt;

&lt;p&gt;Anyhow, after setting up my document types in Umbraco I needed
to figure out how to get all my old content into the new site.
Wordpress offers to export the entire content as xml, so that part
was easy. The exported file was 3Mb, mainly because of some sort of
screwed up tags back from when I was using the Ultimate Tag Warrior
(I will miss the cool plugin names from Wordpress), which spit out
a whole lot of empty tags.&lt;/p&gt;

&lt;p&gt;The exported format is basically an RSS feed, but with some
extra elements added by wordpress. One of those is an
&amp;lt;excerpts:encoded&amp;gt; element, which does not have a namespace
declaration at the top, thus making it invalid xml. So I needed to
fix this before handling the file in my import routine. I just
added it to the rss element:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:excerpt="http://purl.org/rss/1.0/modules/excerpt/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:wp="http://wordpress.org/export/1.0/"&amp;gt;
   
&lt;/pre&gt;

&lt;p&gt;Sweet, now the xml is all nice and tidy and ready to be
imported. So, how to do the import? Well, I decided to do it
through the Umbraco API using a dashboard usercontrol. To get the
content from the XML file, I chose to go with Linq2Xml which is
pretty neat for navigating through the XML file.&lt;/p&gt;

&lt;p&gt;First thing I did was to disable some Lucene lock, because it
made my import fail due to the number of operations done. I also
set the script timeout value a bit high just to be sure:&lt;/p&gt;

&lt;pre&gt;
Server.ScriptTimeout = 300;
Lucene.Net.Store.FSDirectory.SetDisableLocks(true);
   
&lt;/pre&gt;

&lt;p&gt;Now, to load the Xml file. Pretty easy. I later added the
possibility to enter the XML in a textarea instead, thus the
commented out line:&lt;/p&gt;

&lt;pre&gt;
XDocument loaded = XDocument.Load(Server.MapPath("~/usercontrols/wordpress.2009-08-01.xml"));
//XDocument loaded = XDocument.Parse(wpxmltextbox.Text);

XNamespace wpns = XNamespace.Get("http://wordpress.org/export/1.0/");
XNamespace contentns = XNamespace.Get("http://purl.org/rss/1.0/modules/content/");
var q = from c in loaded.Descendants("item")
        where (string)c.Element(wpns + "post_type") == "post"
        select c;
&lt;/pre&gt;

&lt;p&gt;So now I got all my blogposts in the variable "q". time to feed
them into Umbraco. It's not too nicely structured, but it does the
job, and it's a one time deal, so no need to go crazy here.&lt;/p&gt;

&lt;pre&gt;
DocumentType dt = DocumentType.GetByAlias("BlogPost");
User author = User.GetUser(0);

foreach (XElement item in q)
{
    string posttitle = (string)item.Element("title");
    string legacyurl = ((string)item.Element("link")).Replace("", string.Empty);
    string legacyid = (string)item.Element(wpns + "post_id");
    string posturlnodename = Server.UrlDecode((string)item.Element(wpns + "post_name"));
    string postbody = (string)item.Element(contentns + "encoded");
    string posttags = string.Empty;
    DateTime createdate = DateTime.Parse((string)item.Element(wpns + "post_date"));

    int i = 0;
    foreach (XElement tag in item.Elements("category"))
    {
        if ((string)tag.Attribute("domain") == "tag" &amp;amp;&amp;amp; !string.IsNullOrEmpty((string)tag.Attribute("nicename")))
        {
            if (i &amp;gt; 0)
            {
                posttags += ",";
            }
            posttags += (string)tag.Attribute("nicename");
            i++;
        }
    }

    Document doc = Document.MakeNew(posturlnodename, dt, author, 1049);
    doc.getProperty("blogPostTitle").Value = posttitle;
    doc.getProperty("blogPostBody").Value = WordpressPostParser.ParseCodeBlocks(WordpressPostParser.ChangeImageUrls(WordpressPostParser.CreateParagraphTags(postbody)));
    doc.getProperty("blogPostLegacyUrl").Value = legacyurl;
    doc.getProperty("blogPostLegacyID").Value = legacyid;
    doc.CreateDateTime = createdate;

    if (!string.IsNullOrEmpty(posttags))
    {
        umbraco.editorControls.tags.library.addTagsToNode(doc.Id, posttags, "default");
        doc.getProperty("blogPostTags").Value = posttags;
    }

    doc.Publish(author);
    umbraco.library.UpdateDocumentCache(doc.Id);


    //comments here...
    foreach (XElement comment in item.Elements(wpns + "comment"))
    {
        if ((string)comment.Element(wpns + "comment_approved") == "1")
        {

            string commentAuthor = (string)comment.Element(wpns + "comment_author");
            string commentEmail = (string)comment.Element(wpns + "comment_author_email");
            string commentUrl = (string)comment.Element(wpns + "comment_author_url");
            string commentIP = (string)comment.Element(wpns + "comment_author_IP");
            string commentBody = (string)comment.Element(wpns + "comment_content");
            DateTime commentDate = DateTime.Parse((string)comment.Element(wpns + "comment_date"));
            
            Document commentdoc = Document.MakeNew(commentAuthor, DocumentType.GetByAlias("BlogComment"), author, doc.Id);
            commentdoc.getProperty("blogCommentAuthor").Value = commentAuthor;
            commentdoc.getProperty("blogCommentAuthorEmail").Value = commentEmail;
            commentdoc.getProperty("blogCommentAuthorURL").Value = commentUrl;
            commentdoc.getProperty("blogCommentAuthorIP").Value = commentIP;
            commentdoc.getProperty("blogCommentBody").Value = commentBody;
            commentdoc.CreateDateTime = commentDate;

            commentdoc.Publish(author);
            umbraco.library.UpdateDocumentCache(commentdoc.Id);
        }

    }

}
   
&lt;/pre&gt;

&lt;p&gt;I am using some external methods to parse the body text of the
posts. This is because Wordpress doesn't save html, but puts in
linebreaks and renders paragraph tags at render time... brrrr...
There are also some [source] tags leftover from the syntax
highlighter plugin that I need to change:&lt;/p&gt;

&lt;p&gt;These are the three methods I am using to parse the text:&lt;/p&gt;

&lt;pre&gt;
public static string CreateParagraphTags(string postbody)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("&amp;lt;p&amp;gt;");
    sb.Append(postbody.Replace("\n\n", "&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;"));
    sb.Append("&amp;lt;/p&amp;gt;");
    return sb.ToString();
}

public static string ChangeImageUrls(string postbody)
{
    string parsedstring = Regex.Replace(postbody, "src=\"/wp-content", "src=\"/media/images", RegexOptions.Singleline);
    return Regex.Replace(parsedstring, "href=\"/wp-content", "href=\"/media/images", RegexOptions.Singleline);
}

public static string ParseCodeBlocks(string postbody)
{
    Regex regPattern = new Regex(@"(\[source(.*?)\])(.*?)(\[/source\])", RegexOptions.Singleline);
    Dictionary&amp;lt;string, string&amp;gt; replaceValues = new Dictionary&amp;lt;string, string&amp;gt;();

    int i = 0;
    foreach (Match match in regPattern.Matches(postbody))
    {
        string code = match.Groups[3].Value;
        if (code.Contains("&amp;lt;"))
        {
            code = code.Replace("&amp;lt;", "&amp;amp;lt;").Replace("&amp;gt;", "&amp;amp;gt;");
        }
        postbody = postbody.Replace(match.Value, string.Format("[[[replacecode{0}]]]", i));
        replaceValues.Add(string.Format("[[[replacecode{0}]]]", i), "&amp;lt;pre&amp;gt;" + code + "&amp;lt;/pre&amp;gt;");
        i++;
    }

    foreach (KeyValuePair&amp;lt;string, string&amp;gt; replaceValue in replaceValues)
    {
        postbody = postbody.Replace(replaceValue.Key, replaceValue.Value);
    }

    return postbody;
}
   
&lt;/pre&gt;

&lt;p&gt;It's not perfect. For example it added some strange &amp;lt;p&amp;gt;
tags inside my code blocks, but no more than I could handle by
doing manual updates. For these methods I added some unit tests. It
is just so much nicer to work with RegEx when you have tests to see
if you are breaking existing matches while changing this stuff.&lt;/p&gt;

&lt;p&gt;So there you have it. Posts imported and ready to go. It's so
easy I don't know why I didn't get around to it before :-)&lt;/p&gt;
</description><guid>1506</guid><link>http://www.mortenbock.dk/blog/2009/10/13/importing-wordpress-posts-to-umbraco.aspx</link><pubDate>13. oktober 2009</pubDate><title>Importing Wordpress posts to Umbraco</title></item><item><author>Morten Bock</author><category>energi</category><category>natur</category><category>svindel</category><description>
&lt;p&gt;Jeg vil gerne lige gøre mit til at advare mod selskabet
Natur-Energi der tilsyneladende ikke har meget respekt for
forbrugernes rettigheder. Flere andre har også have uheldige
oplevelser med dem, som f.eks. Tonni, der blev svindlet med nog bil
streamer værk: &lt;a
href="http://ekstrabladet.dk/kup/vagthundene/article1195722.ece"&gt;http://ekstrabladet.dk/kup/vagthundene/article1195722.ece&lt;/a&gt;
og John der åbenbart skulle skifte selskab fordi han var med i en
spørgeskemaundersøgelse: &lt;a
href="http://24.dk/user/johnsmedehus/perma/2009/07/19/det_er_da_halvfarligt_at_deltage_i_sprgeskemaer_p_netet"&gt;
http://24.dk/user/johnsmedehus/perma/2009/07/19/det_er_da_halvfarligt_at_deltage_i_sprgeskemaer_p_netet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Og Mogens har her på facebook beskrevet noget der meget godt
ligner den situation vi også er i: &lt;a
href="http://www.facebook.com/wall.php?id=59887513919"&gt;http://www.facebook.com/wall.php?id=59887513919&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Humlen i det hele er at Natur-Energi synes det er helt OK at de
hijacker dit el-abonnement uden at fortælle det til dig. Det eneste
du skal gøre er bare lige at gøre dit og dat for at vise at du
"støtter grøn energi", og hvem gør ikke det? Det glemmer bare helt
at fortælle at de selv er et el-selskab der har tænkt sig at
overtage leverancen af strøm til dig. Og vupti, så får du en
faktura. Hvis du prøver at ringe til dem, ja så får du lov at vente
i 10 minutter til noget musik før linjen bare bliver tavs.
Fedt...&lt;/p&gt;

&lt;p&gt;Så hvis du støder ind i en Natur-Energi mand på gaden eller i
dit storcenter, så stik ham lige en på kassen fra mig, og så skynd
dig videre inden de får fat i din adresse!&lt;/p&gt;

&lt;p&gt;Jeg har i hvert fald tænkt mig at sende et anbefalet brev med en
opsigelse, og så kan de ellers stikke deres faktura et sted hen
hvor solen aldrig skinner. &lt;a
href="http://natur-energi.dk/"&gt;Lorteselskab&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Fandt lige et link der beskriver at det
alligevel ikke nytter at købe skidtet: &lt;a
href="http://www.elsparefonden.dk/presse/arkiv/presseklip_archive/ni.2008-11-07.4088459089"&gt;
http://www.elsparefonden.dk/presse/arkiv/presseklip_archive/ni.2008-11-07.4088459089&lt;/a&gt;&lt;/p&gt;
</description><guid>1424</guid><link>http://www.mortenbock.dk/blog/2009/08/10/natur-energi.aspx</link><pubDate>10. august 2009</pubDate><title>Natur-Energi bruger ufine metoder</title></item><item><author>Morten Bock</author><category>adsl</category><category>router</category><category>telnet</category><category>zyxel</category><description>
&lt;p&gt;This is mainly just a "note to self" about how to solve this
problem if I come across it again.&lt;/p&gt;

&lt;p&gt;Problem is that somehow the web interface for the router allowed
me to enter the same ip/mac address to the "client list" table.
This of course is not great, and for some reason there is no
"delete" button on there. It just gave me an "ERROR: Duplicate MAC
Address!" message. So I had to do a lot of digging to find a way to
delete it.&lt;/p&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;p&gt;1. Telnet to the router&lt;br /&gt;
 2. Go to the Command Line if you are not already there&lt;br /&gt;
 3. Type this command: "ip dhcp enif0 static delete all"&lt;/p&gt;

&lt;p&gt;I found this in a &lt;a
href="ftp://ftp2.zyxel.com/ftp/pub/downloadlibrary/P-660HN-F1/cli_reference_guide/P-660HN-F1_1.pdf"&gt;
CLI reference for another zyxel router&lt;/a&gt; (PDF).&lt;/p&gt;

&lt;p&gt;I hope this might help out others in the same situation :-)&lt;/p&gt;
</description><guid>1421</guid><link>http://www.mortenbock.dk/blog/2009/07/29/zyxel-p-660r-d1-client-list-duplicate-entries.aspx</link><pubDate>29. juli 2009</pubDate><title>Zyxel P-660R-D1 client list duplicate entries</title></item><item><author>Morten Bock</author><category>english</category><description>
&lt;p&gt;Umbraco is the friendly CMS. At least when you are a developer
or an editor. It's just one of those things that grow on you when
you get into the mindset of using the ultra flexible framework that
it is. Still, once in a while, a new user comes by and &lt;a
href="http://forum.umbraco.org/yaf_postst9074_I-am-really-not-liking-umbraco-so-far-Nothing-like-the-LAMPWAMP-CMS-out-there.aspx"&gt;
can not understand why it is so hard&lt;/a&gt; to create a site using the
existing packages. That makes me wonder. Because as time goes by,
the new users seem to &lt;a
href="http://forum.umbraco.org/yaf_postst9075_I-am-warming-up-to-umbraco-Nothing-like-the-LAMPWAMP-CMS-out-there.aspx"&gt;
warm up to the concepts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I have been in positions where I recommended Umbraco to
companies, they always ask if there are a lot of
plugins/addons/modules (take your pick), and I have always answered
that Umbraco is not as such a modular CMS. Not because it is not
possible, but because it is often really fast to build the
functionality that you want, instead of installing a module that
might not fit your needs 100%, and then spend time trying to
squeeze your ideas into that module.&lt;/p&gt;

&lt;p&gt;With V4 of Umbraco a lot of effort has been but into making it
easier for the new users by giving them the Runway site that
supports Modules. This is cool, and probably will get some to hang
in a bit longer than otherwise, which again gives them time to warm
up to the concepts of Umbraco. But I am wondering if plug'n'play
modules on a larger scale would be the way to go?&lt;/p&gt;

&lt;p&gt;The upside would probably be a wider adaption in small site
installations, and maybe a more active marketplace for commercial
modules through the package repo. But is it the right way to
go?&lt;/p&gt;

&lt;p&gt;Personally I hope that Umbraco remains on the current balance
between flexibility and availability of modules. I like the concept
of starter sites which gives a great foundation on a blank Umbraco
install. But I am not a big fan of packages that hook directly into
the existing site. I do love the packages that simply supply some
new functionality, that you then have to spend a little time
configuring, which in turn gives you lots of control.&lt;/p&gt;

&lt;p&gt;So the question remains: How much of an Umbraco enthusiast
should you need to be, in order to be able to extend your site with
existing packages?&lt;/p&gt;

&lt;p&gt;I do not have the answer to that, but I am really looking
forward do discussing this and much more at the Core/MVP retreat
and Codegarden in June. See you all there!&lt;/p&gt;
</description><guid>1409</guid><link>http://www.mortenbock.dk/blog/2009/04/05/thoughts-about-umbraco-as-a-modular-cms.aspx</link><pubDate>05. april 2009</pubDate><title>Thoughts about Umbraco as a modular CMS</title></item><item><author>Morten Bock</author><category>english</category><category>umbraco</category><category>aspnet</category><category>membership</category><category>runway</category><description>
&lt;p&gt;I played around with the membership features of Umbraco tonight,
and I thought I would share my findings. Mostly because it is just
incredibly easy to do without even compiling any code. Just pure
templates and a single entry in the web.config file is all it
takes.&lt;/p&gt;

&lt;p&gt;I started by installing the Runway package, to get a basic
website.&lt;/p&gt;

&lt;p&gt;First of all, I set up my members area with a member type and a
member group:&lt;/p&gt;

&lt;p&gt;&lt;a href="/media/images/image.png"&gt;&lt;img src="/media/images/image-thumb.png" width="170" height="172" alt="image" border="0" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I need to tell asp.net which Member Type I want to use when
creating new users. Find this line in the web.config file:&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;pre&gt;
&amp;lt;add name="UmbracoMembershipProvider"
  type="umbraco.providers.members.UmbracoMembershipProvider"
  enablePasswordRetrieval="false"
  enablePasswordReset="false"
  requiresQuestionAndAnswer="false"
  defaultMemberTypeAlias="WebsiteUser"
  passwordFormat="Hashed" /&amp;gt;
&lt;/pre&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Edit the attribute "defaultMemberTypeAlias" to the Member Type
you want. In my case it is "WebsiteUser".&lt;/p&gt;

&lt;p&gt;Now we are ready to create the Sign Up form. I do this in a new
template, which is just a copy of the Runway Textpage, but I add
the following after the body text:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;script runat="server"&amp;gt;

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
    Roles.AddUserToRole(CreateUserWizard1.UserName, "BasicUsers");
}

protected void CreateUserWizard1_ContinueButtonClick(object sender, EventArgs e)
{
    Response.Redirect("/member-area.aspx");
}

&amp;lt;/script&amp;gt;

&amp;lt;asp:CreateUserWizard ID="CreateUserWizard1" OnContinueButtonClick="CreateUserWizard1_ContinueButtonClick" OnCreatedUser="CreateUserWizard1_CreatedUser" runat="server"&amp;gt;
    &amp;lt;WizardSteps&amp;gt;
        &amp;lt;asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server"&amp;gt;&amp;lt;/asp:CreateUserWizardStep&amp;gt;
        &amp;lt;asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server"&amp;gt;&amp;lt;/asp:CompleteWizardStep&amp;gt;
    &amp;lt;/WizardSteps&amp;gt;
&amp;lt;/asp:CreateUserWizard&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Inside the script block I react to two events. When the user is
created, I add him to the "BasicUsers" group, which is the one I
will give access to my members area. The other method simply
redirects the user to the member area when he finishes the signup
wizard. (&lt;strong&gt;EDIT:&lt;/strong&gt; Petr suggested that you use
ContinueDestinationPageUrl="/member-area.aspx" instead of the
redirect method, which I agree with)&lt;/p&gt;

&lt;p&gt;Now users can sign up for membership, but we also want them to
be able to log in. So we add this to the subNavigation div in the
Runway Textpage template:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;asp:LoginView ID="UmbracoLoginView" runat="server"&amp;gt;
    &amp;lt;AnonymousTemplate&amp;gt;
        &amp;lt;asp:Login ID="Login1" runat="server"&amp;gt;&amp;lt;/asp:Login&amp;gt;
    &amp;lt;/AnonymousTemplate&amp;gt;
    &amp;lt;LoggedInTemplate&amp;gt;
        Welcome
        &amp;lt;asp:LoginName ID="LoginName1" runat="server" /&amp;gt;
        &amp;lt;asp:LoginStatus ID="LoginStatus1" runat="server" /&amp;gt;
    &amp;lt;/LoggedInTemplate&amp;gt;
&amp;lt;/asp:LoginView&amp;gt;
&lt;/pre&gt;

&lt;p&gt;That is all the code that is needed. All that is left is
creating content:&lt;/p&gt;

&lt;p&gt;&lt;a href="/media/images/image1.png"&gt;&lt;img src="/media/images/image-thumb1.png" width="232" height="226" alt="image" border="0" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The login page is just a textpage with some text about logging
in. The Sign Up page is using my new template with the
CreateUserWizard control on it. The Member Area page has Public
Access set like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="/media/images/image2.png"&gt;&lt;img src="/media/images/image-thumb2.png" width="244" height="223" alt="image" border="0" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is all there is to it. Pretty easy huh? Feel free to post
any questions in the comments, and I will try and answer to the
best of my ability.&lt;/p&gt;
</description><guid>1394</guid><link>http://www.mortenbock.dk/blog/2009/04/01/setting-up-membership-in-umbraco.aspx</link><pubDate>01. april 2009</pubDate><title>Setting up membership in Umbraco</title></item><item><author>Morten Bock</author><category>google-analytics</category><category>english</category><category>statistics</category><description>                    &lt;p&gt;
                        As many others, i think it is fun to look at the stats for my blog. So here is a
                        little info from Google Analytics:&lt;/p&gt;
                    &lt;h3&gt;
                        Most visited&lt;/h3&gt;
                    &lt;p&gt;
                        The top 10 url’s visited on this site are:&lt;/p&gt;
                    &lt;ul&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/google-analytics-outgoing-links-50.htm"&gt;/google-analytics-outgoing-links-50.htm&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/"&gt;/&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/widevision-er-et-svindlerfirma-78.htm"&gt;/widevision-er-et-svindlerfirma-78.htm&lt;/a&gt;
                            (new)&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/using-xslt-search-with-multiple-dropdowns-37.htm"&gt;
                            /using-xslt-search-with-multiple-dropdowns-37.htm&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/updated-cpalm-multiple-page-picker-for-v3-bugfix-57.htm"&gt;
                            /updated-cpalm-multiple-page-picker-for-v3-bugfix-57.htm&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/asus-acpi-drivers-and-intel-prosetwireless-73.htm"&gt;
                            /asus-acpi-drivers-and-intel-prosetwireless-73.htm&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/om-skribenten"&gt;/om-skribenten&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/umbraco-ecommerce-has-found-a-home-56.htm"&gt;/umbraco-ecommerce-has-found-a-home-56.htm&lt;/a&gt;&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/converting-links-to-popups-using-javascript-74.htm"&gt;
                            /converting-links-to-popups-using-javascript-74.htm&lt;/a&gt; (new)&lt;/li&gt;
                        &lt;li&gt;&lt;a href="http://www.mortenbock.dk/tag/english"&gt;/tag/english&lt;/a&gt;&lt;/li&gt;
                    &lt;/ul&gt;
                    &lt;p&gt;
                        Only two of these were created in 2008. The Google Analytics post is massively in
                        the lead with 3,386 pageviews. The front page in comparison only has 1,289 pageviews.&lt;/p&gt;
                    &lt;h3&gt;
                        Traffic sources&lt;/h3&gt;
                    &lt;p&gt;
                        Search engines (Google) represent 63.08% of the traffic. Referring sites is 26.76%
                        and direct traffic is 10.16%. The Umbraco forum in itself is 7.51% of the traffic.&lt;/p&gt;
                    &lt;h3&gt;
                        Visitors&lt;/h3&gt;
                    &lt;p&gt;
                        48.45% of my visitors use Firefox, and 43.48% use IE. I take that as a sign that
                        this is a geek blog, which suits me fine :-D&lt;/p&gt;
                    &lt;p&gt;
                        36.26% are from Denmark, and 18.96% are from the United States. On a continental
                        level it looks like this:&lt;/p&gt;
                    &lt;ul&gt;
                        &lt;li&gt;Northern Europe 49.32%&lt;/li&gt;
                        &lt;li&gt;Northern America 22.08%&lt;/li&gt;
                        &lt;li&gt;Western Europe 9.09%&lt;/li&gt;
                        &lt;li&gt;Southern Europe 4.79%&lt;/li&gt;
                        &lt;li&gt;Australia and New Zealand 3.34%&lt;/li&gt;
                        &lt;li&gt;Eastern Europe 2.82%&lt;/li&gt;
                        &lt;li&gt;Southern Asia 2.43%&lt;/li&gt;
                        &lt;li&gt;Western Asia 1.94%&lt;/li&gt;
                        &lt;li&gt;South-Eastern Asia 1.38%&lt;/li&gt;
                        &lt;li&gt;Eastern Asia 1.00%&lt;/li&gt;
                    &lt;/ul&gt;
                    &lt;h3&gt;
                        Happy New Year&lt;/h3&gt;
                    &lt;p&gt;
                        Get safe into the new year, and thanks for all the visits :-)&lt;/p&gt;
</description><guid>1388</guid><link>http://www.mortenbock.dk/blog/2008/12/31/a-bit-of-stats-for-the-year-2008.aspx</link><pubDate>31. december 2008</pubDate><title>A bit of stats for the year 2008</title></item><item><author>Morten Bock</author><category>english</category><category>umbraco</category><category>codegarden</category><category>evangelist</category><description>
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;I just received the news form &lt;a
href="http://umbraco.us/"&gt;CGUS&lt;/a&gt; that &lt;a
href="http://www.percipientstudios.com/"&gt;Douglas Robar&lt;/a&gt; has has
joined the Umbraco company as an evangelist. This is great news and
a positive recognition of the huge effort that Doug has put into
the forum and the community, which has also earned him two(?) MVP
awards.&lt;/p&gt;

&lt;p&gt;I like the idea of the evangelist position that I also know from
the Microsoft developer departments. (Don't know if this is common
in other places). It will be of great value to the community to
have Doug as maybe a sort of middle man between the users on the
forum and the core developers.&lt;/p&gt;

&lt;p&gt;Congratulations Doug, and I hope you have a blast spreading the
Umbraco gospel :-)&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description><guid>1383</guid><link>http://www.mortenbock.dk/blog/2008/10/06/umbraco-gets-an-evangelist.aspx</link><pubDate>06. oktober 2008</pubDate><title>Umbraco gets an evangelist</title></item><item><author>Morten Bock</author><category>biztalk</category><category>career</category><category>vertica</category><description>&lt;p&gt;As some of you may have read in my last post, I recently decided that it was &lt;a href="http://www.mortenbock.dk/time-for-new-challenges-89.htm"&gt;time for new challenges&lt;/a&gt;. Well, the challenge has now been found, and as of september 1st I will be starting my now job at &lt;a href="http://www.vertica.dk/"&gt;Vertica&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I will be starting out as a trainee on Verticas integrations team, where I will be working with Microsoft BizTalk server, amongst other things. This is a great and exciting challenge as I will be doing stuff that will not eventually end up in outputting an html page.&lt;/p&gt;&lt;p&gt;I want to thank all the people in my network and from the Umbraco Community that have contacted me with interresting proposals for both freelancing and carrer opportunities. I feel lucky!&lt;/p&gt;</description><guid>1378</guid><link>http://www.mortenbock.dk/blog/2008/08/25/starting-job-vertica.aspx</link><pubDate>25. august 2008</pubDate><title>Starting new job at Vertica</title></item></channel></rss>