<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by Fredrik Karlsson</title> <link>https://world.optimizely.com/blogs/Fredrik-Karlsson/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>SERW Gadget – How is your SEO work going?</title>            <link>https://world.optimizely.com/blogs/Fredrik-Karlsson/Dates/2009/11/SERW-Gadget--How-is-your-SEO-work-going/</link>            <description>&lt;p&gt;SERW or “Search Engine Result Watcher” or “Trend Analytics for your SEO work”. This is a two step rocket with two gadgets, quick search and trend, working together to get you the best business value.&lt;/p&gt;
&lt;h3&gt;SERW Trend Gadget&lt;/h3&gt;
&lt;p&gt;The SERW trend gadget allows you to see the trend of your search phrases on different search engines. &lt;br /&gt;&lt;a href=&quot;/link/6baa71c9274248d8b095f8ecf9296514.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;SERWTrendExample&quot; border=&quot;0&quot; alt=&quot;SERWTrendExample&quot; src=&quot;/link/0cd5219e8d234c098c481c662f54daf7.png&quot; width=&quot;495&quot; height=&quot;351&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And with a pretty easy UI to change your trend. &lt;br /&gt;&lt;a href=&quot;/link/f06a95469be3429fba63575c45e850bd.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;SERWTrendManageExample&quot; border=&quot;0&quot; alt=&quot;SERWTrendManageExample&quot; src=&quot;/link/2e8b1c4c6dfc49fcbec1f26708d92f87.png&quot; width=&quot;199&quot; height=&quot;244&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;SERW Quick Search Gadget&lt;/h3&gt;
&lt;p&gt;This gadget allows you to very quickly do a search and get the result position back. You can then save the search and follow it in a trend.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/link/d393cbf7463543c9a3b78d7d8435b06a.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;SerwQuickSearchExample&quot; border=&quot;0&quot; alt=&quot;SerwQuickSearchExample&quot; src=&quot;/link/730a9eab9f6b48c4a46c6a4a2c390068.png&quot; width=&quot;492&quot; height=&quot;167&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Result:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/link/96ad1129de0d4224ad71b22f415ae8c9.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;SerwQuickSearchResultExample&quot; border=&quot;0&quot; alt=&quot;SerwQuickSearchResultExample&quot; src=&quot;/link/ddfc016fb43e4420bfedd6bb3de7a886.png&quot; width=&quot;491&quot; height=&quot;301&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;Scheduled job&lt;/h3&gt;
&lt;p&gt;Each collection that you saves will be automatically updated each day by the scheduled job “SERW Importer” that needs to be activated.&lt;/p&gt;
&lt;h3&gt;Using the SERW Quick Search gadget&lt;/h3&gt;
&lt;p&gt;This gadget allows you to see what position your search phrase places itself on a selected search engine. &lt;br /&gt;Lets say your search places itself on position 97, you will then have to click &quot;next&quot; 9 times on the SERP (search engine result page), and you might not even see it. &lt;br /&gt;But this gadget will make that search for you.&lt;/p&gt;
&lt;h4&gt;Input your search criteria&lt;/h4&gt;The input fields are pretty straight forward: &lt;br /&gt;&lt;a href=&quot;/link/be2215ed010941b68473a3af94d063eb.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;QuickSearchInput&quot; border=&quot;0&quot; alt=&quot;QuickSearchInput&quot; src=&quot;/link/146f148f5d6e45e985c0d95176a1491b.png&quot; width=&quot;288&quot; height=&quot;87&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;h5&gt;Search phrase&lt;/h5&gt;
&lt;p&gt;The search phrase is basically what you want to search after. You can use any features provided by the search engine. &lt;br /&gt;Examples: &lt;br /&gt;Basic search: gadget contest &lt;br /&gt;More advanced search: gadget contest –google&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.google.com/support/websearch/bin/answer.py?answer=136861&quot; target=&quot;_blank&quot;&gt;Read more at google&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;Domain to look for&lt;/h5&gt;Enter the domain you want to look for. &lt;br /&gt;For example: www.episerver.com or world.episerver.com &lt;br /&gt;the protocol is always http. 
&lt;h5&gt;Search engine&lt;/h5&gt;Just select the search engine you want to make the search with. 
&lt;h5&gt;Example&lt;/h5&gt;A fully functional quick search: &lt;br /&gt;&lt;a href=&quot;/link/2fee95d7b905477aa1f9396449d38fa7.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;FunctionalSearch&quot; border=&quot;0&quot; alt=&quot;FunctionalSearch&quot; src=&quot;/link/1872cd33c1234e62a2a140631e864e17.png&quot; width=&quot;280&quot; height=&quot;96&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;h4&gt;Make the search&lt;/h4&gt;Simply click the search button (1) and see the progress spin (2) is spinning. &lt;br /&gt;&lt;a href=&quot;/link/e7e562a6d6fa4963b2b1e5d22a7e40d5.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;PerformingSearch&quot; border=&quot;0&quot; alt=&quot;PerformingSearch&quot; src=&quot;/link/7a41be0d7863458e89dfde2071693b6e.png&quot; width=&quot;274&quot; height=&quot;154&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;h4&gt;The result page&lt;/h4&gt;On the result page you will see the position of the search: &lt;br /&gt;&lt;a href=&quot;/link/5552eb939c0b4431ba5ff5dd237fc388.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;QuickSearchResult&quot; border=&quot;0&quot; alt=&quot;QuickSearchResult&quot; src=&quot;/link/e7586affc3174618bf0a330c8b803e84.png&quot; width=&quot;217&quot; height=&quot;92&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;If the Quick Search gadget is unable to find your domain, it will display a text saying that: &lt;br /&gt;&lt;a href=&quot;/link/f7571d78b87647dfb1502e3dacee06a4.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;QuickSearchNoHit&quot; border=&quot;0&quot; alt=&quot;QuickSearchNoHit&quot; src=&quot;/link/8e37ea6f50b046ef9571e55fb479fa65.png&quot; width=&quot;190&quot; height=&quot;63&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;h4&gt;Add to Search Collection&lt;/h4&gt;By adding this search to your Search Collections, this search will be available in the &quot;SERW Trend gadget&quot; and the scheduled job will make sure that you can follow the search’s position on the search engine. &lt;br /&gt;&lt;a href=&quot;/link/794d02f6f3cb4a85b4768e3c7022f0da.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;QuickSearchAddToSearchCollection&quot; border=&quot;0&quot; alt=&quot;QuickSearchAddToSearchCollection&quot; src=&quot;/link/2c8336c621c944bb9eef9bedcc981d70.png&quot; width=&quot;319&quot; height=&quot;89&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Using the SERW Trend gadget&lt;/h3&gt;
&lt;p&gt;It generates a pretty classic graph of all Search Collections (Search phrase, domain and search engine) you selected for this trend. See image: &lt;br /&gt;&lt;a href=&quot;/link/79170ac983f545adaa21b569345f5fdf.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;TrendOverview&quot; border=&quot;0&quot; alt=&quot;TrendOverview&quot; src=&quot;/link/fb31e7f4d96848099a999e70c9f1b87a.png&quot; width=&quot;481&quot; height=&quot;322&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;Managing the trend&lt;/h4&gt;To manage your trend, simply choose the option &quot;Manage search collections for trend&quot;, see image: &lt;br /&gt;
&lt;h5&gt;&lt;a href=&quot;/link/9647a5573f60444c925d6dc85cdaaecb.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;TrendManage&quot; border=&quot;0&quot; alt=&quot;TrendManage&quot; src=&quot;/link/91946be02b99465faf02a2fbd76e384d.png&quot; width=&quot;354&quot; height=&quot;99&quot; /&gt;&lt;/a&gt; Add existing search collection to trend&lt;/h5&gt;Simply select any stored search collection and click the add button. The collection will then be added to the trend and will be displayed in the graph. See image: &lt;br /&gt;&lt;a href=&quot;/link/4b84560bde2b48e3930d835f2e683a95.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;TrendAddCollection&quot; border=&quot;0&quot; alt=&quot;TrendAddCollection&quot; src=&quot;/link/a07ca26aac6e44be824e55d3917602cb.png&quot; width=&quot;459&quot; height=&quot;101&quot; /&gt;&lt;/a&gt;&amp;nbsp; &lt;br /&gt;
&lt;h5&gt;Remove collections from trend&lt;/h5&gt;
&lt;p&gt;To remove a collection from this trend, simply tic the boxes and click the button. See image: &lt;br /&gt;&lt;a href=&quot;/link/183614d5b138406ba358986e826231f1.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;TrendRemoveCollection&quot; border=&quot;0&quot; alt=&quot;TrendRemoveCollection&quot; src=&quot;/link/cbd13d2f730a4be891c604ffadd0ea1e.png&quot; width=&quot;457&quot; height=&quot;157&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;Create new search collection&lt;/h5&gt;
&lt;h6&gt;Search phrase&lt;/h6&gt;The search phrase is basically what you want to search after. You can use any features provided by the search engine. &lt;br /&gt;Examples: &lt;br /&gt;Basic search: gadget contest &lt;br /&gt;More advanced search: gadget contest -google 
&lt;h6&gt;Domain to look for&lt;/h6&gt;Enter the domain you want to look for. &lt;br /&gt;For example: www.episerver.com or world.episerver.com &lt;br /&gt;the protocol is always http. 
&lt;h6&gt;Search engine&lt;/h6&gt;Just select the search engine you want to make the search with. 
&lt;h6&gt;Example&lt;/h6&gt;A fully functional quick search: &lt;br /&gt;
&lt;h6&gt;&lt;a href=&quot;/link/24caf07d3040407387c56f7a6baf35d1.png&quot;&gt;&lt;img style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; title=&quot;FunctionalSearch&quot; border=&quot;0&quot; alt=&quot;FunctionalSearch&quot; src=&quot;/link/7b38162a8afe4542a7762388a4ac44e2.png&quot; width=&quot;244&quot; height=&quot;84&quot; /&gt;&lt;/a&gt; &lt;/h6&gt;
&lt;h4&gt;Creating test data&lt;/h4&gt;This will add dummy data to all collections added to this trend for 30 days where no data is available. Simply so you can get a feel for the module. 
&lt;h3&gt;Request more search engines&lt;/h3&gt;
&lt;p&gt;In this package, only four search engines are included. google.se, google.com, yahoo.se, yahoo.com and bing.se, bing.com. If you want more, don’t hesitate to contact me.&lt;/p&gt;
&lt;h3&gt;TODO&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Be able to remove collections &lt;br /&gt;Pick your own search engine definitions from an online repository &lt;br /&gt;Export/import into Excel &lt;br /&gt;Build a “request to search engine” service so the web server won’t need to take the load &lt;br /&gt;ETC &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Download&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://labs.dropit.se/SERW.Gadget/Dropit.Serw.GadgetWebUI.rar&quot; target=&quot;_blank&quot;&gt;Installation module&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://labs.dropit.se/SERW.Gadget/Source code.rar&quot;&gt;Source code&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Disclaimer and dependencies&lt;/h3&gt;
&lt;p&gt;This is a very first release, there might still be bugs in the gadgets!&lt;/p&gt;
&lt;p&gt;The graphs are generated by the jqPlot library, &lt;a href=&quot;http://www.jqplot.com/&quot;&gt;http://www.jqplot.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When trying this out, please be mindful not searching to much at the same time as the search engines might suspect you for being an DDOS attacker.&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/Fredrik-Karlsson/Dates/2009/11/SERW-Gadget--How-is-your-SEO-work-going/</guid>            <pubDate>Mon, 30 Nov 2009 00:21:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Easy javascript debugging with the debugger statement</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=78f2f6ba-1a1b-42f4-b157-83f1649b475d</link>            <description>&lt;p&gt;
Debugging javascript has been a really tidious task, especially in Internet Explorer. And if you&amp;#39;re an EPiServer developer, you will have to debug some javascript in IE. I recently stumbeld upon this very hand statement: &amp;quot;debugger&amp;quot;. Apparently it&amp;#39;s been around for ages but I haven&amp;#39;t noticied it before, so I thought I would make a quick post about it.
&lt;/p&gt;
&lt;h2&gt;Example &lt;br /&gt;
&lt;/h2&gt;
&lt;p&gt;
The code is really easy:&lt;br /&gt;
&lt;/p&gt;
&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;
function MyJavascriptFunction()
{
var i = 0:
var j = i + 1;
debugger;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class=&quot;brush: xml;&quot;&gt;Result &lt;/h2&gt;
&lt;p&gt;
In Internet Explorer you will get the normal &amp;quot;Do you wish to debug&amp;quot; dialog box and just select yes:&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://labs.dropit.se/blogs/image.axd?picture=2009%2f7%2fdebugger_IE.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
And you will be able to debug in Visual Studio:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://labs.dropit.se/blogs/image.axd?picture=2009%2f7%2fdebugger_VS.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
And in firefox it will open up Firebug:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://labs.dropit.se/blogs/image.axd?picture=2009%2f7%2fDebugger_Firefox.png&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
And as you can see, it keeps the context you are in, very handy indeed.
&lt;/p&gt;
&lt;h2&gt;Conclusion &lt;br /&gt;
&lt;/h2&gt;
&lt;p&gt;
It&amp;#39;s not the best way to debug javascript, but it&amp;#39;s really easy and will probably be enough in almost all cases. So start using the debugger statement now
&lt;/p&gt;
&lt;h2&gt;Read more &lt;/h2&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/0bwt76sk(VS.85).aspx&quot; target=&quot;_blank&quot; title=&quot;http://msdn.microsoft.com/en-us/library/0bwt76sk(VS.85).aspx &quot;&gt;http://msdn.microsoft.com/en-us/library/0bwt76sk(VS.85).aspx
&lt;/a&gt;
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=78f2f6ba-1a1b-42f4-b157-83f1649b475d</guid>            <pubDate>Wed, 01 Jul 2009 12:25:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>A small cache manager - see and manage your cache items</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=0ac848aa-79da-4b1e-8c51-9f4ead098caa</link>            <description>&lt;p&gt;
This is a very small (just one aspx, no code behind, ~130 rows) file that will show you everything you have in your cache. It can be very handy sometimes to see exactly what you have in the cache and even try and remove some things and see what happends. 
&lt;/p&gt;
&lt;p&gt;
The GUI is very easy, it just lists everything and the type/value and if it is serializable you will even be able to see the serialized value of the cache item.&lt;br /&gt;
&lt;img src=&quot;/CacheManager/CacheManager.png&quot; alt=&quot;&quot; width=&quot;757&quot; height=&quot;528&quot; /&gt; 
&lt;/p&gt;
&lt;p&gt;
Please note that you need to change the RemoveFromCache method if you want to use it with EPiServer CMS 4. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://labs.dropit.se/CacheManager/CacheManager.aspx.txt&quot; target=&quot;_blank&quot;&gt;You can download the source here&lt;/a&gt; (Right click and save target as)
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=0ac848aa-79da-4b1e-8c51-9f4ead098caa</guid>            <pubDate>Fri, 29 May 2009 13:21:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Updating an existing EPiServer Composer function in code behind</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=133ca8dd-f7d5-4922-be7e-e9b0d3945e89</link>            <description>&lt;p&gt;
I recently posted some example code on how to &lt;a href=&quot;http://labs.dropit.se/blogs/post/2009/02/18/Creating-an-Extension-X3-page-programmaticaly.aspx&quot;&gt;create an EPiServer Composer page programatically &lt;/a&gt;so this is the natural follow up. Some very basic code on how to update an existing EPiServer Composer function programmatically. 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;div class=&quot;code&quot;&gt;&lt;p&gt;&lt;span class=&quot;rem&quot;&gt;// Get the extensionpage you want to update&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ExtensionPageData&lt;/span&gt; subPage = &lt;span class=&quot;type&quot;&gt;ExtensionPageData&lt;/span&gt;.Load(&lt;span class=&quot;type&quot;&gt;CurrentPage&lt;/span&gt;.PageLink);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Get the first content area on that page&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ContentAreaData&lt;/span&gt; contentArea = subPage.GetContentAreas()[0];&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Get the first function on that page&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// TODO: add some error handling / criterias when gettin tour desired function&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ContentFunctionData&lt;/span&gt; block = contentArea.ContentFunctions[0];&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Get the episerver page that is the function&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;PageData&lt;/span&gt; functionPage = GetPage(block.ContentFunctionLink);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Create a writable clone&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;PageData&lt;/span&gt; functionPageClone = functionPage.CreateWritableClone();&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Update a property&lt;/span&gt;&lt;br /&gt;
functionPageClone.Property[&lt;span class=&quot;str&quot;&gt;&quot;MainBody&quot;&lt;/span&gt;].Value = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;type&quot;&gt;PropertyLongString&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&quot;My long string&quot;&lt;/span&gt;);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Save the function. make sure you use SaveAction.ForceCurrentVersion or you &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// have to create a new version of the function aswell as the extensionpage&lt;/span&gt;&lt;br /&gt;
DataFactory.&lt;span class=&quot;type&quot;&gt;Instance&lt;/span&gt;.Save(functionPageClone, &lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.Publish | &lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.ForceCurrentVersion, &lt;span class=&quot;type&quot;&gt;AccessLevel&lt;/span&gt;.NoAccess);&lt;/p&gt;&lt;/div&gt; 

&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=133ca8dd-f7d5-4922-be7e-e9b0d3945e89</guid>            <pubDate>Wed, 25 Mar 2009 19:39:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Migrate data from EPiServer 4 and Extension 2 to EPiServer CMS 5 and EPiServer Composer</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=7b12bf8e-e0e2-4699-9bd5-0e8c4a15b186</link>            <description>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;
This small plug-in will allow you to move data from an existing EPiServer CMS 4 / Extension 2 site to an existing EPiServer CMS 5 / EPiServer Composer site. 
&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;
Move the files from the downloaded package to your existing EPiServer CMS 5 site with EPiServer Composer.&lt;br /&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/MoveFiles.png&quot; alt=&quot;&quot; width=&quot;645&quot; height=&quot;516&quot; /&gt; 
&lt;/p&gt;
&lt;p&gt;
Open the web.config file in the MigrateFromExtension2 folder and edit the settings:&lt;br /&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/EditWebConfig.png&quot; alt=&quot;&quot; width=&quot;396&quot; height=&quot;246&quot; /&gt; &lt;br /&gt;
Simply add the connection string to your existing EPiServer CMS 4 / Extension 2 site. 
&lt;/p&gt;
&lt;h2&gt;Run the plug-in&lt;/h2&gt;
&lt;p&gt;
You can find the plug-in in /admin -&amp;gt; Tools.&lt;br /&gt;
&lt;img style=&quot;width: 230px; height: 211px&quot; src=&quot;/Extension2ToEPiServerComposer/admin.png&quot; alt=&quot;&quot; width=&quot;230&quot; height=&quot;211&quot; /&gt; 
&lt;/p&gt;
&lt;p&gt;
When you click it you will get a page where you will be asked to add some initial info.&lt;br /&gt;
&lt;img style=&quot;width: 526px; height: 198px&quot; src=&quot;/Extension2ToEPiServerComposer/MappingSetup.png&quot; alt=&quot;&quot; width=&quot;526&quot; height=&quot;198&quot; /&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;bull;&amp;nbsp;EPiServer source page id on X2 site &amp;ndash; The page id of the page to import from&lt;br /&gt;
&amp;bull;&amp;nbsp;EPiServer pagetype to import from X2 site &amp;ndash; Extension 2 pagetype to import&lt;br /&gt;
&amp;bull;&amp;nbsp;EPiServer target page on X3 site &amp;ndash; Where to put the imported pages&lt;br /&gt;
&amp;bull;&amp;nbsp;Extension X3 pagetype to use &amp;ndash; EpiServer Composer pagetype to use 
&lt;/p&gt;
&lt;p&gt;
When you are done, please click the &amp;ldquo;Get Mapping Data&amp;rdquo; button. 
&lt;/p&gt;
&lt;h3&gt;Extension 2 Definition Area Mapped to Extension X3 Content Area&lt;/h3&gt;
&lt;p&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/Extension2DefinitionArea.png&quot; alt=&quot;&quot; width=&quot;435&quot; height=&quot;76&quot; /&gt;&lt;br /&gt;
Here you will map Extension 2&amp;rsquo;s definition areas with EPiServer Composers content areas. This will simply decide where the functions will be placed in the new page. If multiple Extension 2 definition areas are placed in the same EPiServer Composer content are they will simply be placed on top of each other. 
&lt;/p&gt;
&lt;h3&gt;Extension 2 Inner Template Mapped to Extension X3 Layout function&lt;/h3&gt;
&lt;p&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/Extension2InnerTemplateMapped.png&quot; alt=&quot;&quot; width=&quot;508&quot; height=&quot;136&quot; /&gt;&lt;br /&gt;
Whis will allow you to map Extension inner templates with EPiServer Composers layout function. For each inner template you will have two options. Map it to a layout function or simply put it in the EPiServer composers content area. If you have multiple content areas in your pagetype, it will be placed in the content area you selected in the previous step. 
&lt;/p&gt;
&lt;h3&gt;Extension 2 Content Block Mapped to Extension X3 Content Function&lt;/h3&gt;
&lt;p&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/Extension2ContentBlockMapped.png&quot; alt=&quot;&quot; width=&quot;536&quot; height=&quot;178&quot; /&gt;&lt;br /&gt;
Here you will have three options for each Content Block.&lt;br /&gt;
&amp;bull;&amp;nbsp;Don&amp;rsquo;t import block&lt;br /&gt;
&amp;bull;&amp;nbsp;Import to EPiServer page&lt;br /&gt;
&amp;bull;&amp;nbsp;Use EPiServer Composer function 
&lt;/p&gt;
&lt;h4&gt;Don&amp;rsquo;t import block&lt;/h4&gt;
&lt;p&gt;
This will just leave the data and don&amp;rsquo;t import anything 
&lt;/p&gt;
&lt;h4&gt;Import to EPiServer page&lt;/h4&gt;
&lt;p&gt;
This will import the data to the EPiServer page that is created by the import.&lt;br /&gt;
You will be given the option to map each content block property to an EPiServer property.&lt;br /&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/ImportToEPiServerPage.png&quot; alt=&quot;&quot; width=&quot;542&quot; height=&quot;306&quot; /&gt;&lt;br /&gt;
If multiple content blocks properties are mapped to the same EPiServer page property, they will simply overwrite eachother. 
&lt;/p&gt;
&lt;h4&gt;Use EPiServer Composer function&lt;/h4&gt;
&lt;p&gt;
This will import data to an EPiServer composer function and add it to the page.&lt;br /&gt;
&lt;img src=&quot;/Extension2ToEPiServerComposer/ImportToX3Function.png&quot; alt=&quot;&quot; width=&quot;550&quot; height=&quot;307&quot; /&gt; 
&lt;/p&gt;
&lt;h2&gt;Import the data&lt;/h2&gt;
&lt;p&gt;
Simply click the button &amp;ldquo;Start import data&amp;rdquo; and wait. 
&lt;/p&gt;
&lt;h2&gt;Disclaimer&lt;/h2&gt;
&lt;p&gt;
This is by developers for developers. There is no error handling and it please take a backup of the database before you start. It has been used in projects, so it does works. But no guarantees are given.&lt;br /&gt;
It will also just import one level of pages, so if you have a tree of pages to import, you will have to run the import multiple times. Or just rewrite the app. 
&lt;/p&gt;
&lt;h2&gt;License&lt;/h2&gt;
&lt;p&gt;
This is released under the WTFPL license. Please modify as much as you want.&lt;br /&gt;
&lt;a href=&quot;http://sam.zoy.org/wtfpl/&quot;&gt;http://sam.zoy.org/wtfpl/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/WTFPL&quot;&gt;http://en.wikipedia.org/wiki/WTFPL&lt;/a&gt; 
&lt;/p&gt;
&lt;h2&gt;Download&lt;/h2&gt;
&lt;p&gt;
The download includes both the plug in as well as all source code.&lt;br /&gt;
&lt;a href=&quot;http://labs.dropit.se/Extension2ToEPiServerComposer/Extension2ToEPiServerComposer.rar&quot; onclick=&quot;pageTracker._trackPageview(&#39;Extension2ToEPiServerComposer.rar&#39;)&quot;&gt;Download Extension2 To EPiServer Composer here&lt;/a&gt; 
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=7b12bf8e-e0e2-4699-9bd5-0e8c4a15b186</guid>            <pubDate>Fri, 20 Mar 2009 11:50:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Today&#39;s EPiServer tip - GetDescendents</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=227556c5-ea7d-45a0-b9a4-81e354fedbd3</link>            <description>&lt;p&gt;
I recently found out about a new method in EPiServer CMS 5 R2, the GetDescendents method. It returns all children to a page, not just level one children like the GetChildren method, but all children. 
&lt;/p&gt;
&lt;p&gt;
The code is really easy: 
&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;p&gt;EPiServer.DataFactory.Instance.&lt;span class=&quot;type&quot;&gt;ProviderMap&lt;/span&gt;.GetPageProvider(&lt;span class=&quot;str&quot;&gt;&quot;MyPageProvider&quot;&lt;/span&gt;).GetDescendents(&lt;span class=&quot;type&quot;&gt;PageReference&lt;/span&gt;.StartPage);&lt;/p&gt;&lt;/div&gt; 
&lt;p&gt;
Or just go the fast way: 
&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;p&gt;EPiServer.DataFactory.&lt;span class=&quot;type&quot;&gt;Instance&lt;/span&gt;.GetDescendents(&lt;span class=&quot;type&quot;&gt;PageReference&lt;/span&gt;.StartPage);&lt;/p&gt;&lt;/div&gt; 
&lt;p&gt;
&lt;a href=&quot;http://sdk.episerver.com/library/cms5/html/M_EPiServer_DataFactory_GetDescendents.htm&quot; target=&quot;_blank&quot;&gt;You can see the SDK entry here.&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
And the best part is that it returns an IList&amp;lt;PageReference&amp;gt; and not your normal PageReferenceCollection. Could this be a new era in EPiServer? I for one would welcome the change from PageDataCollections to IList&amp;lt;PageData&amp;gt; or IEnumerable&amp;lt;PageData&amp;gt;. Specially now with LINQ and all you can do with generic lists. 
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=227556c5-ea7d-45a0-b9a4-81e354fedbd3</guid>            <pubDate>Thu, 26 Feb 2009 23:01:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Creating an Extension X3 page programmatically</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=1d1a1f5a-80ea-4d3e-80a3-36d93cf201a7</link>            <description>&lt;p&gt;
I&amp;#39;ve been developing an Extension X2 to Extension X3 migrate tool for a few days now, and one of the things I needed to do was to create an Extension X3 page programmatically. &lt;br /&gt;
So I went to both the&lt;a href=&quot;http://wiki.cmsapps.net/wiki/Creating_X3_page_dynamically&quot; target=&quot;_blank&quot;&gt; Extension X3 wiki &lt;/a&gt;aswell to the &lt;a href=&quot;http://x3sdk.cmsapps.net/html/2203d2ce-8b97-a2b9-a7c0-ea62d6037646.htm&quot; target=&quot;_blank&quot;&gt;SDK&lt;/a&gt; to see some example code, but the content there was obsolete. So I thought I would post some up to date example code here. This is tested for EPiServer CMS R2 and Extension X3 3.2. 
&lt;/p&gt;
&lt;p&gt;
&lt;font size=&quot;3&quot;&gt;&lt;font size=&quot;4&quot;&gt;Example code&lt;br /&gt;
&lt;/font&gt;&lt;div class=&quot;code&quot;&gt;&lt;p&gt;&lt;span class=&quot;rem&quot;&gt;// Create the normal EPiPage&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;PageData&lt;/span&gt; myPage = EPiServer.DataFactory.&lt;span class=&quot;type&quot;&gt;Instance&lt;/span&gt;.GetDefaultPageData(&lt;span class=&quot;type&quot;&gt;PageReference&lt;/span&gt;.StartPage, &lt;span class=&quot;type&quot;&gt;CurrentPage&lt;/span&gt;.PageTypeID);&lt;br /&gt;
myPage.PageName = &lt;span class=&quot;str&quot;&gt;&quot;AutoCreated ExtensionPage&quot;&lt;/span&gt; + DateTime.&lt;span class=&quot;type&quot;&gt;Now&lt;/span&gt;.ToString();&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;PageReference&lt;/span&gt; currentPageReference = DataFactory.&lt;span class=&quot;type&quot;&gt;Instance&lt;/span&gt;.Save(myPage, &lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.Publish, &lt;span class=&quot;type&quot;&gt;AccessLevel&lt;/span&gt;.NoAccess);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Load the Extension X3 page&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ExtensionPageData&lt;/span&gt; subPage = &lt;span class=&quot;type&quot;&gt;ExtensionPageData&lt;/span&gt;.Load(currentPageReference);&lt;br /&gt;
subPage.PageLink = currentPageReference;&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// get the first content are of the page&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ContentAreaData&lt;/span&gt; contentArea = subPage.GetContentAreas()[0];&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Create new layout function&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ContentFunctionData&lt;/span&gt; block = &lt;span class=&quot;type&quot;&gt;ContentFunctionData&lt;/span&gt;.Create(currentPageReference, &lt;span class=&quot;type&quot;&gt;PageType&lt;/span&gt;.Load(&lt;span class=&quot;str&quot;&gt;&quot;[ExtensionSys] FiftyFifty&quot;&lt;/span&gt;).ID, &lt;span class=&quot;type&quot;&gt;AccessLevel&lt;/span&gt;.NoAccess);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Add the layout function to the area&lt;/span&gt;&lt;br /&gt;
contentArea.InsertContentFunction(block, 0);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Create new Article/Content-function&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;ContentFunctionData&lt;/span&gt; textFunction = &lt;span class=&quot;type&quot;&gt;ContentFunctionData&lt;/span&gt;.Create(currentPageReference, &lt;span class=&quot;type&quot;&gt;PageType&lt;/span&gt;.Load(&lt;span class=&quot;str&quot;&gt;&quot;[ExtensionSys] Article&quot;&lt;/span&gt;).ID, &lt;span class=&quot;type&quot;&gt;AccessLevel&lt;/span&gt;.NoAccess);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Add value to the two properties&lt;/span&gt;&lt;br /&gt;
textFunction.Property[&lt;span class=&quot;str&quot;&gt;&quot;Heading&quot;&lt;/span&gt;].Value = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;type&quot;&gt;PropertyString&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&quot;My Heading&quot;&lt;/span&gt;);&lt;br /&gt;
textFunction.Property[&lt;span class=&quot;str&quot;&gt;&quot;MainBody&quot;&lt;/span&gt;].Value = &lt;span class=&quot;kwrd&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;type&quot;&gt;PropertyLongString&lt;/span&gt;(&lt;span class=&quot;str&quot;&gt;&quot;My long string&quot;&lt;/span&gt;);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Save it&lt;/span&gt;&lt;br /&gt;
textFunction.Save(&lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.Publish | &lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.ForceCurrentVersion, &lt;span class=&quot;type&quot;&gt;AccessLevel&lt;/span&gt;.NoAccess);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Add it in the first content area&lt;/span&gt;&lt;br /&gt;
block.GetContentAreas()[0].InsertContentFunction(textFunction, 0);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Update the Extension X3 XML&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;type&quot;&gt;PageDataManager&lt;/span&gt;.UpdatePageStruct(subPage.CurrentPage, subPage);&lt;br /&gt;
&lt;span class=&quot;rem&quot;&gt;// Save the EPiPage&lt;/span&gt;&lt;br /&gt;
DataFactory.&lt;span class=&quot;type&quot;&gt;Instance&lt;/span&gt;.Save(subPage.CurrentPage, &lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.Publish | &lt;span class=&quot;type&quot;&gt;SaveAction&lt;/span&gt;.ForceCurrentVersion, &lt;span class=&quot;type&quot;&gt;AccessLevel&lt;/span&gt;.NoAccess);&lt;/p&gt;&lt;/div&gt; &lt;/font&gt;
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=1d1a1f5a-80ea-4d3e-80a3-36d93cf201a7</guid>            <pubDate>Wed, 18 Feb 2009 22:24:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Using EPiServer Virtual Path Provider with file properties</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/11/Using-EPiServer-Virtual-Path-Provider-with-file-properties/</link>            <description>In EPiServer CMS 5 you can both build your own Virtual Path Providers (from now on simply VPP) for accessing files as well as change the files properties. In EPiServer CMS 5 R2 it is even possible to add these properties to each Path Provider, so...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/11/Using-EPiServer-Virtual-Path-Provider-with-file-properties/</guid>            <pubDate>Wed, 19 Nov 2008 00:18:07 GMT</pubDate>           <category>Blog post</category></item><item> <title>Using EPiServer Custom Page Providers with Extension X3</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/11/Using-EPiServer-Custom-Page-Providers-with-Extension-X3/</link>            <description>Since Custom page providers is the coolest in EPiServer since the first steps towards objects in EPiServer 3.40, I thought I would demonstrate a few ways of using Page Providers with Extension X3. Prerequisites First of, Page Providers is a new...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/11/Using-EPiServer-Custom-Page-Providers-with-Extension-X3/</guid>            <pubDate>Tue, 11 Nov 2008 23:41:34 GMT</pubDate>           <category>Blog post</category></item><item> <title>Run this SQL.aspx</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/10/Run-this-SQLaspx/</link>            <description>A discussion on #EPiCode resulted in someone needed to run a SQL-script but they couldn&#39;t access the database. So heres an classic debug tool witch allows you to run some simple tsql statements and even get the result. Just remember to remove it...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/10/Run-this-SQLaspx/</guid>            <pubDate>Tue, 07 Oct 2008 17:15:22 GMT</pubDate>           <category>Blog post</category></item><item> <title>EPiServer and cache, not always a love story</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/10/EPiServer-and-cache-not-always-a-love-story/</link>            <description>When you are working with some more backend stuff of EPiServer, you are never really sure if you load it from the database or from the cache. Here are a few examples. PageDefinitions When you want to load a PageDefinition, the normal way would...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/10/EPiServer-and-cache-not-always-a-love-story/</guid>            <pubDate>Tue, 07 Oct 2008 00:36:37 GMT</pubDate>           <category>Blog post</category></item><item> <title>EPiServer Community licenses in Enterprise solutions</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/10/EPiServer-Community-licenses-in-Enterprise-solutions/</link>            <description>Met a customer today. They are using EPiServer CMS and EPiServer Community on their sites. The sites all share a common code-base, they have an EPiServer Enterprise license and all the sites are in one common web. config. I. e it looks something...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/10/EPiServer-Community-licenses-in-Enterprise-solutions/</guid>            <pubDate>Thu, 02 Oct 2008 00:47:03 GMT</pubDate>           <category>Blog post</category></item><item> <title>New module on EPiCode - QuickSearchExtender</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/New-module-on-EPiCode---QuickSearchExtender/</link>            <description>I have just added a new module on EPiCode, QuickSearchExtender. It allows you to extend EPiServer&#39;s quicksearch in the edit mode so you will get a menu to choose from on all the pages with a pagename that starts with your searchstring.&#160;As you can...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/New-module-on-EPiCode---QuickSearchExtender/</guid>            <pubDate>Sat, 27 Sep 2008 03:08:10 GMT</pubDate>           <category>Blog post</category></item><item> <title>Working with rules and categories for Extension functions</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Working-with-rules-and-categories-for-Extension-functions/</link>            <description>I have just added two more articles on the Extension wiki and I thougt I might post the code and a short description here as well. Rules Rules are used in Extension to set whether or not you can add function in a Content area or not. Because if you...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Working-with-rules-and-categories-for-Extension-functions/</guid>            <pubDate>Mon, 22 Sep 2008 16:24:17 GMT</pubDate>           <category>Blog post</category></item><item> <title>Accessing ExtensionPageData from a static context</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Accessing-ExtensionPageData-from-a-static-context/</link>            <description>Mari has a post on how to access CurrentPage from a static context, so I thought I might explain on how to do the same in Extension. It&#39;s actually quite easy. Since everything in Extension is EPiServer, you can pretty much do it the same way....</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Accessing-ExtensionPageData-from-a-static-context/</guid>            <pubDate>Tue, 16 Sep 2008 22:31:48 GMT</pubDate>           <category>Blog post</category></item><item> <title>Implement your own httpCacheVaryByCustom method</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Implement-your-own-httpCacheVaryByCustom-method/</link>            <description>Enabling httpCache in EPiServer is very crucial to get maximum performance from your system. But sometimes you might want to get the cache to differ on something else then just query strings. A typical example is to give the user the possibility to...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Implement-your-own-httpCacheVaryByCustom-method/</guid>            <pubDate>Thu, 11 Sep 2008 01:50:37 GMT</pubDate>           <category>Blog post</category></item><item> <title>Logging in Extension/X3</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Logging-in-ExtensionX3/</link>            <description>Just like in EPiServer, Extension logs most things that happens. And since Extension handles errors ina different way than EPiServer, logging in Extension can be a crusual part in your work developing for Extension. Just like EPiServer, Extension...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/Logging-in-ExtensionX3/</guid>            <pubDate>Wed, 10 Sep 2008 01:22:43 GMT</pubDate>           <category>Blog post</category></item><item> <title>A few quick performance fixes without changing the code</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/A-few-quick-performance-fixes-without-changing-the-code/</link>            <description>There&#39;s a lot of performance tips out there. Most of them take some time to implement, and some can take days. And then there are these small ones you can do without much trouble at all. Here are a few tips you can specify in your web. config. Very...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/A-few-quick-performance-fixes-without-changing-the-code/</guid>            <pubDate>Thu, 04 Sep 2008 01:50:55 GMT</pubDate>           <category>Blog post</category></item><item> <title>The story of WebAdmins, WebEditors (and their long lost brother WebReaders)</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/The-story-of-WebAdmins-WebEditors-and-their-long-lost-brother-WebReaders/</link>            <description>In the beginning there was VBScript, classic asp and Windows script components. Back then, with EPiServer 2 and 3, there was no way of controlling user access by config-files but you had to rely on windows groups. For that reason, EPiServer invented...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/The-story-of-WebAdmins-WebEditors-and-their-long-lost-brother-WebReaders/</guid>            <pubDate>Wed, 03 Sep 2008 00:11:40 GMT</pubDate>           <category>Blog post</category></item><item> <title>How to login to EPiServer for the first time</title>            <link>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/How-to-login-to-EPiServer-for-the-first-time/</link>            <description>This is a question I get from time to time when I&#39;m out tutoring EPiServer for new developers. It&#39;s not rocket science, but it can still cause some confusion. So here it is, a short description on how to logon in EPiServer. You will probably get the...</description>            <guid>http://labs.episerver.com/en/Blogs/Fredrik-Karlsson/Dates/2008/9/How-to-login-to-EPiServer-for-the-first-time/</guid>            <pubDate>Tue, 02 Sep 2008 23:35:17 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>