<?xml version="1.0" encoding="UTF-8" ?>

    <rss version="2.0">
        <channel>
            <title>Toxic Blog</title>
            <description>This is our daily &amp; nightly thoughts on things!</description>
            <copyright>Toxic Interactive Solutions AB</copyright>
            
            <link>http://blog.toxic.se</link>
            <lastBuildDate>Mon, 26 September 2011 11:22:00</lastBuildDate>
            <pubDate>Mon, 26 September 2011 11:22:00</pubDate>

                <item>
                    <title>Fixing THE Umbraco quirk</title>
                    <author>Peter Josefson</author>
                    <comments>http://blog.toxic.se/blog/2011/september/fixing-the-umbraco-quirk/</comments>
                    <description>Admit that you&#39;ve forgotten the trailing slash after umbraco a hundred times.  Admit that it has made you use a thousand words your mother never taught you.  Admit that you&#39;ve had hundreds of calls from customers in the same predicament.  Well... I have.  And all this time I&#39;ve been convinced that there was no easy fix - if there was, someone would have implemented it.  Today, I got fed up and just tried the simplest fix I could think of - just for the heck of it.  Guess what? It worked! One XML tag with some attributes in the rewrites section of /config/UrlRewriting.config and hey, presto, the umbraco backend now follows the HTTP specification on how trailing slashes should be handled - transparently.  Here it is:     EDIT: I&#39;m very sorry that I have to give you the XML as an image instead of using our newly installed syntax highlighter, but ASP.NET barfs when trying to display the app-relative path (with ~) &amp;nbsp;in the destinationUrl when I try to do that, so I have no other option (there is probably a fix... maybe I&#39;ll try to find it some day)... :(  EDIT: Actually, what a HTTP-compliant web server does when it encounters a &quot;directory URL&quot; that doesn&#39;t end with / is a redirect to the same URL with the / appended. This causes an extra round-trip but is by design. So, what my fix does is exactly what the standard stipulates.</description>
                    <link>http://blog.toxic.se/blog/2011/september/fixing-the-umbraco-quirk/</link>
                    <guid>http://blog.toxic.se/blog/2011/september/fixing-the-umbraco-quirk/</guid>
                    <pubDate>Mon, 26 September 2011 11:22:00 </pubDate>
                </item>
                <item>
                    <title>Using 301 URL Tracker when migrating from classic ASP websites to Umbraco (Updated!)</title>
                    <author>Kalle Ekstrand</author>
                    <comments>http://blog.toxic.se/blog/2011/september/using-301-url-tracker/</comments>
                    <description>When we migrate our customers old websites from Classic ASP to Umbraco we often get the problem with missing URLs, and sometimes the SEO ranking drops badly.  The best way to handle this is to use the excellent Umbraco package 301 URL Tracker from InfoCaster .  The purpose of the 301 URL Tracker package, is to create some SEO friendlyness. Search engines crawl your website and store links to all pages within your website.  But this is when you have a functionally Umbraco-setup. And to get http://mywebsite.com/about.asp to automatically redirect with 301-response to http://mywebsite.com/about-us/ you have to do some tweaks.   This is how we do it:    Install the 301 URL Tracker package.  Install URL Rewrite Module from Microsoft.  Add new IIS URL-rewrite rule to redirect from about.asp to about.aspx (Only to get Umbraco to pick it up since it does not handle classic ASP.)﻿  Set up a 301-rule in the package, use RegEx or map page by page.  Youre done!     Step 1, Download an install the 301 URL Tracker package   Use either the repository or downlad it here .    Step 2, Install URL Rewrite Module   Install the URL Rewrite Module in your IIS (you can install it from Web Plattform Installer).    Step 3, Add this to the URL-rewrite rules in your IIS     This is inbound rewrite rule in IIS is to convert the *.asp extension to a *.aspx. Only to get Umbraco to handle it. The /redirects/ destination is virtual, so that we can use it later.    Step 4, Set up rules for the 301-responses in the package   Log on to Umbraco backend, and go to the &#39;Settings&#39; section. Right-click on﻿ 301 URL Tracker in the menu on the left and &#39;Create&#39;. Choose the node that you wish to redirect to.     Ok, here comes the tricky part, you can either choose to use a RegEx rule to redirect everything to the root node. Or you can map page by page for best SEO effect. If our case, we map page by page like this:     ﻿We have now set up a rule that redirects the old http://mywebsite.com/about.asp to http://mywebsite.com/redirects/about.aspx and then again redirected with the 301-status back to the new existing node http://mywebsite.com/about-us/ .  Does it make sense?    Notes: There are probably a hundred ways to do this better, but this solution works fine for our customers. If you have any ideas on how to improve it, please get in touch! I also gues that you could use this for PHP-pages as well.   Updates: This Blog-post was updated 2011-09-26 when @kipusoep enlightened me that you should use IIS Rewrite Module instead of Urlrewriting.Net. Thanks Stefan!</description>
                    <link>http://blog.toxic.se/blog/2011/september/using-301-url-tracker/</link>
                    <guid>http://blog.toxic.se/blog/2011/september/using-301-url-tracker/</guid>
                    <pubDate>Thu, 22 September 2011 09:47:00 </pubDate>
                </item>
                <item>
                    <title>Making umbraco language file changes take effect</title>
                    <author>Peter Josefson</author>
                    <comments>http://blog.toxic.se/blog/2011/october/making-umbraco-language-file-changes-take-effect/</comments>
                    <description>This is already documented in forum posts, but the more ways there are to find this kind of information, the better... took me a while to find. To the point:  You may have experienced that when you change something in one of the NN.xml files under /umbraco/config/lang (such as a custom section name), nothing happens. Nothing at all.   The cause:   The translated texts are cached in javascript snippets by the client dependency system, and never (to my knowledge) refreshed.   The fix:   1. Delete the folder /App_Data/TEMP/ClientDependency (if there is one in App_Data as well, kill that as well - that&#39;s the location in older versions).  2. Touch your web.config (or use whatever favourite method you have to restart the application).  The folder and its contents will now be recreated (and up to date).  EDIT: For a more permanent fix on a development server - see Eran&#39;s comment below. Use my fix after deploying new language files to produktion servers.</description>
                    <link>http://blog.toxic.se/blog/2011/october/making-umbraco-language-file-changes-take-effect/</link>
                    <guid>http://blog.toxic.se/blog/2011/october/making-umbraco-language-file-changes-take-effect/</guid>
                    <pubDate>Tue, 11 October 2011 16:46:00 </pubDate>
                </item>
                <item>
                    <title>Custom section - moving away from content after delete</title>
                    <author>Peter Josefson</author>
                    <comments>http://blog.toxic.se/blog/2011/october/custom-section-moving-away-from-content-after-delete/</comments>
                    <description>When you build a custom section (or tree) in the backend, and have a delete action on your nodes, you don&#39;t want the right-hand frame to stay on the deleted object after a delete. The user may be tempted to click save, and unless you&#39;re prepared for that, things will go sideways.  So, you want to return to your dashboard (or the default - empty - page) after deleting the node.  Umbraco itself doesn&#39;t handle this in all places, but after diving deep into the umbraco javascript source, I found a hack that works.  In your BaseTree implementation, in the RenderJS override, add this javascript snippet:   function toxicOnDeleted(EV) {   UmbClientMgr.appActions().openDashboard(&#39;toxic&#39;); } UmbClientMgr.appActions()   .addEventHandler(&#39;nodeDeleted&#39;, function(E) { toxicOnDeleted(E); } );   &amp;nbsp;  I have several trees in my section and i only run this in ONE of them (it will fire for any node in any tree in the section).  I&#39;m not entirely sure if I should find some way to unregister the eventhandler (or protect it from being registered more than once), but in any case, it works for now.  Any other solutions - or additional thoughts - out there?  EDIT: I tried to figure out a way to see which node had been deleted, but ran out of time. It seems that the event argument doesn&#39;t contain anything useful, but the node id or alias may be available elsewhere. If anyone has any intel on this, please let me know.</description>
                    <link>http://blog.toxic.se/blog/2011/october/custom-section-moving-away-from-content-after-delete/</link>
                    <guid>http://blog.toxic.se/blog/2011/october/custom-section-moving-away-from-content-after-delete/</guid>
                    <pubDate>Fri, 14 October 2011 11:16:00 </pubDate>
                </item>
                <item>
                    <title>Using media picker in umbraco backend</title>
                    <author>Peter Josefson</author>
                    <comments>http://blog.toxic.se/blog/2011/november/using-media-picker-in-backend/</comments>
                    <description>I&#39;ve seen many questions on this in the forums, and no good answer. It has even been reported as a bug, but closed. So... when I needed the functionality myself, I took a look at the umbraco sources and figured out what&#39;s wrong.  It may not be a bug, but it&#39;s definitely a weird quirk. The workaround is simple though. But let&#39;s begin at the beginning...   The Problem:   A media picker on a custom editor page doesn&#39;t show any value when the page loads, although there is a value and it is set during Page_Load or OnLoad. Or, in more detail:   You write a custom section with some kind of data editor that works against a custom database (i.e. doesn&#39;t use umbraco documents or other objects).  You want to let the user pick media items from umbraco and save their id:s in your database, so that you can render them in your usercontrol (or whatever you use to present the data in the frontend).  You read a HOWTO on this and pick a media picker (almost any - most seem to work the same way), for example the mediaChooser.  You test it, pick a media item and it works. It gets saved in the database.  You return to edit your data, but the media item is GONE . It (the ID) exists in your database, but not in your custom editor. You set it in Page_Load (as you would normally do with control values), and you&#39;ve triple-checked that. Still doesn&#39;t work.    The Cause:   The mediaChooser (and - from what I have seen - most other media pickers as well) handles its value in an unexpected way. More detail:  The mediaChooser behaves like this (or actually the BaseTreePickerEditor, which mediaChooser inherits from - and I suspect most other media pickers do that as well):   In OnInit, if an IData object was presented by the constructor, its &quot;Value&quot; property is saved in a private variable. If IData is null, the value will be -1.  In OnLoad, the Value property of the control (which is defined by a base class) is overwritten by the value in the private variable.  In all the following stages, the Value property is used (as it would normally be).   This is a bit weird, as you usually create your controls in OnInit and populate them with data in OnLoad. There are other ways and other events that serve to make the process even more granular, but that is the most common pattern in examples and so on. The mediaChooser, on the other hand, assumes the data will be present in the extractor already upon initialization.  This may be an umbraco convention (I haven&#39;t looked at the source for other data editors), but in any case, it is unusual, and probably quite unexpected for most people.   The Workaround:   Set the value of the media picker in OnPreRender instead (or any other event that occurs after OnLoad but before rendering) of OnLoad or Page_Load. If the data is only available during OnLoad, stash it away in a private variable then, and stick it in yourPicker.Value during OnPreRender.  Works like a charm.   Oh, and one more thing:   You don&#39;t need a value extractor (an object of a class that implements the IData interface). Just pass null for that parameter of the mediaChooser constructor, and use the Value property instead. It should be &quot;&quot; when no media item is selected - otherwise, it should be the media ID as a string.   Further reading:   ASP.NET Page Life Cycle Overview &amp;nbsp;(a must-read for all ASP.NET developers)   mediaChooser.cs source   BaseTreePickerEditor.cs source (inherited by mediaChooser)   BaseTreePicker.cs source (inherited by BaseTreePickerEditor)</description>
                    <link>http://blog.toxic.se/blog/2011/november/using-media-picker-in-backend/</link>
                    <guid>http://blog.toxic.se/blog/2011/november/using-media-picker-in-backend/</guid>
                    <pubDate>Thu, 17 November 2011 22:45:00 </pubDate>
                </item>
                <item>
                    <title>If your uBlogsy blog in umbraco won&#39;t accept comments...</title>
                    <author>Peter Josefson</author>
                    <comments>http://blog.toxic.se/blog/2011/november/if-your-ublogsy-blog-won&#39;t-accept-comments/</comments>
                    <description>You may have noticed that we&#39;ve had this problem on this blog on and off from day one. Incredibly annoying because we haven&#39;t gotten the praise that we have earned and that motivates us so immensely... :)  The solution: Make sure you have a URL and a language configured on the uBlogsy landing page or higher up in the hierarchy. Right click the node, it&#39;s under &quot;manage hostnames&quot;.  We currently use English, but I suspect any other language will work just fine as well.  Presumably, uBlogsy does some langauge-related stuff when a comment is posted, and barfs when no umbraco language is defined (in my mind, there ought to be a default somewhere, but maybe not).  And don&#39;t ask me how I came up with the idea to make that change - I honestly don&#39;t have even a hint of a clue. Divine inspiration, perhaps... :)  Caveat: This fix was implemented ten minutes ago... so... I have no proof that it works longer than that.</description>
                    <link>http://blog.toxic.se/blog/2011/november/if-your-ublogsy-blog-won&#39;t-accept-comments/</link>
                    <guid>http://blog.toxic.se/blog/2011/november/if-your-ublogsy-blog-won&#39;t-accept-comments/</guid>
                    <pubDate>Fri, 18 November 2011 14:25:00 </pubDate>
                </item>
                <item>
                    <title>5 Umbraco packages you can&#180;t live without!</title>
                    <author>Kalle Ekstrand</author>
                    <comments>http://blog.toxic.se/blog/2011/december/5-umbraco-packages/</comments>
                    <description>This is our list of packages for Umbraco that we work with on a daily basis and couldn&#180;t live without.    Desktop Media Uploader   Awesome package by Matt Brailsford that enables you to batch upload media with folder structure intact. We use it to upload everything, even if its just a singel image.   UnVersion   Another awesome package by Matt Brailsford that enables you to turn off version control on specific&amp;nbsp;document types. Perfect if you for example import articles with CMSImport on a scheduled basis.   301 URL Tracker  It&#180;s a must for all websites, that keeps track of renamed and deleted documents. It also has the ability to help with 301 when you migrate from another system. This should defenetly be in the core om V5! Thanks Stefan Kip !   ImageGen   This package by Douglas Robar &amp;nbsp;is used att all times. It enables you to automaticly resize and crop images. We use PRO version for 60% of all our websites.   CMSImport   This package enables you to import stuff into both content, media and members. It also has a scheduler in the PRO version. We use this to import products and its structure from ERP-systems directly into Umbraco content nodes. Thanks Richard Soeteman !</description>
                    <link>http://blog.toxic.se/blog/2011/december/5-umbraco-packages/</link>
                    <guid>http://blog.toxic.se/blog/2011/december/5-umbraco-packages/</guid>
                    <pubDate>Mon, 19 December 2011 09:22:00 </pubDate>
                </item>
        </channel>
    </rss>


