<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marker Studio - Full Service Digital Agency &#187; Kentico</title>
	<atom:link href="http://www.markerstudio.com/tag/kentico/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markerstudio.com</link>
	<description>Full Service Digital Agency</description>
	<lastBuildDate>Tue, 17 Jan 2012 19:05:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Introducing the Marker Kentico Business Library (MKB)</title>
		<link>http://www.markerstudio.com/technical/2010/02/introducing-the-marker-kentico-business-library-mkb/</link>
		<comments>http://www.markerstudio.com/technical/2010/02/introducing-the-marker-kentico-business-library-mkb/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 01:45:03 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Kentico]]></category>
		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://www.markerstudio.com/?p=2183</guid>
		<description><![CDATA[A complete business layer facade for  the kentico document and custom table apis. Offers strongly typed access to the custom document types and custom tables along with best practice business entities repository approach to working with kentico data.]]></description>
			<content:encoded><![CDATA[<div id="attachment_2198" class="wp-caption alignleft" style="width: 130px"><a href="/wp-content/uploads/2010/02/mkb.png"><img class="size-full wp-image-2198" title="Marker Kentico Business Library" src="/wp-content/uploads/2010/02/mkb.png" alt="Marker Kentico Business Library" width="120" height="120" /></a><p class="wp-caption-text">Marker Kentico Business Library</p></div>
<p>Marker have created a complete business layer facade for working across the kentico document apis. Why would we do such a crazy thing? Well, we found that on larger and more complex web applications that we had a certain amount of trouble with the standard approach.</p>
<p>When you use custom document types in Kentico, your rows are either returned as a CMS.TreeEngine.TreeNode or a System.Data.DataRow depending on what part of the api you are using. So the first main driver for our business layer was to be able to have a business entity class that mapped directly to a custom document type in Kentico. This means we know exactly  how a particular document type is represented in our application and know exactly what properties it has.</p>
<p>Also, you have different apis depending on whether or not you are using workflow/versioning or not.  All of the recommended development articles within the Kentico documentation generally assume you are working with published documents on your site which might not always be the case.</p>
<p>It should be noted that this approach is really for aspx template advocates looking to get the maximum control and performance from Kentico. This approach is likely overkill for smaller sites and is not applicable for the portal engine approach.</p>
<p>This article will focus on the basics of creating an entity class mapping to your custom document type and using the generic repository to perform some standard operations. There&#8217;s a lot of functionality in the MKB library beyond what is shown here and we doubt there is anything you can do with the kentico document api that you can&#8217;t do more easily and cleanly with the MKB library, if there is, let us know!</p>
<p><span style="color: #AD1230;"><strong>This library works against v5 with the 5.0.5 hot fix applied only. Just drop it in your bin folder and off you go..</strong></span></p>
<h2>Let&#8217;s create our first document entity class&#8230;</h2>
<p>You can see a sample entity below which maps to a custom document type in our application. You will need to create this for each custom document type in your application. Note that we are currently working on code generation which will automatically generate these classes for you against the Kentico database. We think this would be a great feature to have within Kentico itself at some point.</p>
<p>Make sure you entity class inherits from the DocumentEntity class (Marker.Kentico.Business.Entities.DocumentEntity). This class includes all the core fields for a kentico document instance.</p>
<p>Next, you should apply a special<strong> table attribute</strong>. The table attribute allows you to set the<em> class name </em>(maps to kentico document type&#8217;s class name) and <em>default alias path</em> (the default alias path which forms the basis of all data access for the entity by default). In addition (not shown below) there is the possibility of setting the<em> default site code </em>(default site code for all data access for the entity by default if required with multi site solutions and also a <em>default wildcard alias key (</em>for automatically loading the entity based on a wildcard alias. If you don&#8217;t set this it&#8217;s the name of the entity lowercased, in this case &#8216;supplier&#8217;).</p>
<p>Next, apply special <strong>field attributes</strong> for each property you want to map to a kentico document type. Note that your property names can be different from the underlying field if you want, and you can specific the nature of the binding (read, insert, update, all) as required.</p>
<p>This is all that is required to start using MKB, create a simply entity and move on to the next step, where the fun begins!</p>
<pre class="brush: csharp; title: ; notranslate">
using Marker.Kentico.Business.Attributes;
using Marker.Kentico.Business.Enumeration;
using Marker.Kentico.Business.Entitie;
using Marker.Kentico.Business.Attributes;
using Marker.Kentico.Business.Enumerations;
using Marker.Kentico.Business.Entities;

    public class Supplier : DocumentEntity
    {

        private string _companyName = string.Empty;

        public Supplier()
        { }

        [Field(&quot;CustomerCode&quot;, FieldBindingType.All)]
        public string CustomerCode { get; set; }

        [Field(&quot;CompanyName&quot;, FieldBindingType.All)]
        public string CompanyName {
            get { return _companyName; }
            set
            {
                _companyName = value;
                this.DocumentName = value;
            }
        }

        [Field(&quot;ImageThumb&quot;, FieldBindingType.All)]
        public Guid ImageThumb { get; set; }

        [Field(&quot;Url&quot;, FieldBindingType.All)]
        public string Url { get; set; }

        [Field(&quot;Address&quot;, FieldBindingType.All)]
        public string Address { get; set; }

        [Field(&quot;Phone&quot;, FieldBindingType.All)]
        public string Phone { get; set; }

    }
</pre>
<p>Let&#8217;s work with our entities using the document repository&#8230;</p>
<p>All you need to do is to put a using statement to the entities and repository namespaces</p>
<pre class="brush: csharp; title: ; notranslate">
using Marker.Kentico.Business.Repository;
using Marker.Kentico.Business.Entities;
</pre>
<p>Then you can retrieve a strongly typed repository to work with your supplier entities as follows. This retrieves a singleton instance of the repository class, it could also be created using dependency injection if preferred, but this is the simplest api to be offered.</p>
<pre class="brush: csharp; title: ; notranslate">
var repository = RepositoryFactory&lt;DocumentRepository&lt;Supplier&gt;&gt;.Instance;
</pre>
<p>Once you have your repository you can then load entities or get the current entity (if it is a supplier otherwise it will be null)</p>
<pre class="brush: csharp; title: ; notranslate">
Supplier supplier = repository.Load(string aliasPath);
Supplier supplier = repository.GetCurrent();
</pre>
<p>Here are some other thigns you can do&#8230;</p>
<h2>Saving and Deleting</h2>
<p>Just update your entity&#8217;s properties and call the save method</p>
<pre class="brush: csharp; title: ; notranslate">
supplier.Url = &quot;http://newurl.com&quot;;
repository.Save(supplier);
</pre>
<p>Deletion is just as easy: </p>
<pre class="brush: csharp; title: ; notranslate">
repository.Delete(supplier.DocumentID);
</pre>
<p>Custom Query Support with Paging!</p>
<p>You can see below that our repsitory enables querying with paging support (returning the total results)</p>
<pre class="brush: csharp; title: ; notranslate">
var searchCriteria = new QueryFindCriteria();
searchCriteria.QueryName = &quot;FindSuppliers&quot;; // set the query name here
searchCriteria.SelectOnlyPublished = false; // let's include unpublished nodes
searchCriteria.Take = 10; // take 10 rows
searchCriteria.Skip = 10; // start at row 11
int totalCount = 0;
List&lt;Supplier&gt; suppliers = repository.Find(searchCriteria, out totalCount);
</pre>
<p>To support this you must be running SQL 2005 or above and simply structure your query as follows.</p>
<pre class="brush: sql; title: ; notranslate">
WITH AllResults AS
(

-- core paged query should go in here

select SupplierView.*, Row_Number() over (order by ##ORDERBY## as RowIndex
FROM View_SMS_Supplier_Joined as SupplierView
##WHERE##
)

SELECT (SELECT COUNT(NodeID) FROM AllResults ) As TotalResults, *
FROM AllResults
WHERE RowIndex &gt; @skip AND RowIndex &lt;= (@skip + @take)
</pre>
<h2>Criteria objects (not overloads)</h2>
<p>You will likely have noticed that Kentico has dozens of overloads for it&#8217;s core methods. MKB gets round this by having a limited number of overloads with criteria objects that contain properties with sensible defaults for all core operations.</p>
<p>For example, the <strong>QueryFindCriteria </strong>mentioned above has the following properties.</p>
<ul>
<li>SiteName (defaults to current site)</li>
<li>CultureCode</li>
<li>Where</li>
<li>TopN</li>
<li>SelectOnlyPublished</li>
<li>OrderBy</li>
<li>CheckUserPermissions</li>
<li>QueryName</li>
<li>Parameters</li>
</ul>
<p>And there is a simpler <strong>TreeFindCriteria</strong> accepted as an overload to the Find method on any repository with these properties:</p>
<ul>
<li>SiteName (defaults to current site)</li>
<li>CultureCode</li>
<li>Where</li>
<li>TopN</li>
<li>SelectOnlyPublished</li>
<li>OrderBy</li>
<li>CheckUserPermissions</li>
<li>AliasPath</li>
<li>CombineWithDefaultCulture</li>
<li>MaxRelativeLevel</li>
<li>SelectLatestVersion &#8211; allows you to work with latest version of document under workflow, no need to change your api!</li>
</ul>
<p>We hope you can see how much simpler this is as you just need to set the properties you explcitly need for any query rather than being forced to use a particular overload.</p>
<h2>Conclusion</h2>
<p>We are sharing this library because we believe that it will be of value for kentico developers and partners to assess and make use of. We hope that it will also be useful for Kentico themselves who might consider the development of such an api to make it easier to work with Kentico.</p>
<p>This code base is provided as is and we recommend you use it for testing purposes at this stage (although we feel the api coverage is pretty good). We&#8217;ll support and answer questions as best we can. There&#8217;s lots not covered here that is offered with the library that i&#8217;ll cover in future posts if the interest is there!</p>
<h2>Get the code!</h2>
<p>We are providing a debug compiled version of our business assembly to solicit feedback on the apis offered. If there is sufficient interest we will release the code base on codeplex.</p>
<p>Download the latest version here: <a href="/wp-content/uploads/2010/02/Marker.Kentico.Business.v3.zip">Marker.Kentico.Business.v3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/technical/2010/02/introducing-the-marker-kentico-business-library-mkb/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Marker Finalist in Kentico Site of the Year for Yellow Maps</title>
		<link>http://www.markerstudio.com/marketing/2009/11/marker-finalist-in-kentico-site-of-the-year-for-yellow-maps/</link>
		<comments>http://www.markerstudio.com/marketing/2009/11/marker-finalist-in-kentico-site-of-the-year-for-yellow-maps/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 08:13:07 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[awards]]></category>
		<category><![CDATA[Kentico]]></category>
		<category><![CDATA[yellow maps]]></category>

		<guid isPermaLink="false">http://www.markerstudio.com/?p=2115</guid>
		<description><![CDATA[Vote now to help us win Kentico Site of the Year!]]></description>
			<content:encoded><![CDATA[<div id="attachment_2116" class="wp-caption alignleft" style="width: 160px"><a href="http://www.kentico.com/Company/Site-of-the-Year-2009-Contest.aspx"><br />
<img class="size-full wp-image-2116" src="http://localhost:8888/wp-content/uploads/2009/11/silver_150x150.gif" alt="Marker is Kentico Site of the Year Finalist" width="150" height="150" /></a><p class="wp-caption-text">Marker is Kentico Site of the Year Finalist</p></div>
<p><span style="background-color: #ffffff">Marker is a finalist in the Kentico Site of the Year contest for our work on <a href="http://maps.yellow.co.nz" target="_blank">Yellow Maps</a>.</span></p>
<p>We are the only Kiwi company in the battle for prizes so every vote counts in the online voting that will be carried out this month.</p>
<p>Please <a href="http://www.kentico.com/Company/Site-of-the-Year-2009-Contest.aspx" target="_blank">vote now</a>, there are 12 categories to vote for and we are on Page 9 of 12 under the &#8220;Best Other/At Large Site&#8221; on the right hand side under &#8216;Yellow Maps&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/marketing/2009/11/marker-finalist-in-kentico-site-of-the-year-for-yellow-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kentico Cultures Demystified</title>
		<link>http://www.markerstudio.com/technical/2009/11/kentico-cultures-demystified/</link>
		<comments>http://www.markerstudio.com/technical/2009/11/kentico-cultures-demystified/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 00:28:58 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Kentico]]></category>
		<category><![CDATA[multilingual]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.markerstudio.com/?p=2099</guid>
		<description><![CDATA[The Kentico CMS Developers guide provides good information on how to configure a multilingual site, however it does not seem to provide a quick reference on how to set up and configure the default UI and content cultures in one document.]]></description>
			<content:encoded><![CDATA[<p>The Kentico CMS Developers Guide provides good information on how to configure a multilingual site, however it does not seem to provide a quick reference on how to set up and configure the default User Interface (UI) and content cultures in one document.</p>
<h3>Culture Options – UI and Content Cultures</h3>
<p>The Administration &gt; Users section allows the setting of the Preferred content culture and the Preferred user interface culture. These values normally set at (default) but what does all this actually mean?</p>
<p><em>It is recommended to not explicitly set the culture for users and to let the defaults be used. Unless a user explicitly wishes to override, assuming this culture is supported.</em></p>
<h3>Content Culture</h3>
<p>Content cultures determine the actual content culture stored against Kentico documents as they are saved. If you have a multilingual site there are multiple documents stored for each culture against a single ‘node’.</p>
<p><strong>N.B</strong><em> There is always a default content culture for a Kentico site. </em></p>
<h4>List of all content cultures</h4>
<p>The available list of all available content cultures are at Site Manager &gt; Development &gt; Cultures. All major cultures are provided here and you shouldn’t need to modify this list.</p>
<h4>Setting the default content culture</h4>
<p>You can set this in two ways (both have the same effect).</p>
<ul>
<li>Site Manager &gt; Sites &gt; [Site Instance] &gt; Default content culture</li>
<li>Site Manager -&gt; Settings -&gt; (select site) -&gt; Web site -&gt; Default culture of the content</li>
</ul>
<p>What this means is that the default culture for all documents will be this value (e.g. en-NZ). If a user has (default) saved against their ‘Preferred content culture’ they will then see the default content culture for the Site they are viewing if they are logged in.</p>
<p><em>The default content culture should be set first in any Kentico implementation.</em></p>
<h4>Setting the default visitor culture</h4>
<p>You can set this in the following ways:</p>
<ul>
<li>Site Manager &gt; Sites &gt; [Site Instance] &gt; Default visitor culture</li>
<li>Site Manager &gt; Sites &gt; [Site Instance] &gt; Domain Aliases &gt; [Domain Alias Instance] &gt; Default visitor culture</li>
</ul>
<p>What this means is, if a user comes to the site anonymously, this is the culture that will be used by default to display to visitors and this can be managed on a domain alias level also.</p>
<p>For a site without multilingual capabilities it would normally be the same as the default content culture, but one may wish to have a French version of a site under a different domain in which case the default visitor culture setting would be set to French.</p>
<p>If this is not set, then the user’s browser settings will be used to determine the default visitor culture.</p>
<p><em>It is recommended that the default visitor culture always be set to match the default content culture by default.</em></p>
<p>Site manage &gt; Sites &gt; [Site Instance] &gt; Cultures</p>
<p>This section allows you to set all the cultures that are being supported for a particular Kentico site. Note that this will affect the selectable cultures from within the cmsdesk administration interface for a particular website.</p>
<p><em>It is recommended that these  values always be explicitly set when setting up a Kentico instance. If not a multilingual site allow only a single culture which matches the supported default content culture.</em></p>
<h3>UI Culture</h3>
<p>The UI Culture is the culture of the CMSDesk administration interface. Out of the box (OOTB), Kentico uses en-us (US English).</p>
<p>UI Cultures are stored within Site Manager &gt; Development &gt; UI Cultures. You will see there is an ‘English’ option, but this actually corresponds to en-us (US English). If you want to allow users to select between this and UK English for example within CMSDesk you should create a new UI Culture called English (NZ) and set the code to en-NZ.</p>
<p>If a user has (default) saved against their ‘Preferred user interface culture’ they will then see the CMS Desk interface using the culture defined in the AppSetting.config file for that website (there doesn’t appear to be a corresponding value within Site Manager). This value should be set to a sensible default to avoid users having to change it themselves. For a site managed from New Zealand it should be:</p>
<p>&lt;add key=&#8221;CMSDefaultUICulture&#8221; value=&#8221;en-NZ&#8221;/&gt;</p>
<p><em>It is recommended that this value always be explicitly set when setting up a Kentico instance. </em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/technical/2009/11/kentico-cultures-demystified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IIS7 Extensionless Urls and Kentico CMS 4.0</title>
		<link>http://www.markerstudio.com/technical/2009/04/iis7-extensionless-urls-and-kentico-cms-40/</link>
		<comments>http://www.markerstudio.com/technical/2009/04/iis7-extensionless-urls-and-kentico-cms-40/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 04:22:27 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[IIS7]]></category>
		<category><![CDATA[Kentico]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.markerstudio.com/?p=1626</guid>
		<description><![CDATA[Getting your web server and cms to play ball isn't always easy. With the advances made in Microsoft's most recent web server you can make use of best practice SEO with the popular Kentico CMS asp.net based CMS.]]></description>
			<content:encoded><![CDATA[<p>Disclaimer: This post contains unsupported guideline for configuring your Kentico CMS 4.x to utilise extensionless urls with IIS 7.0. Use with care!</p>
<p>Base System Requirements: IIS 7.0 with .net 3.5 SP1 on a Windows Vista dev machine or Windows 2008 server to utilise extensionless urls.</p>
<p>Firstly, install the marvellous IIS 7.0 URL Rewrite Module<br />
Get it here: <a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;g=6&amp;i=1692">http://www.iis.net/downloads/default.aspx?tabid=34&amp;g=6&amp;i=1692</a><br />
Learn about it here: <a href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/">http://learn.iis.net/page.aspx/460/using-url-rewrite-module/</a></p>
<p>Now, make sure Kentico is configured not to interefere with things&#8230;</p>
<p>Kentico automatically applies a filter to the form tags. You need to disable this here:</p>
<ul>
<li>Site Manager &gt; Settings &gt; Output Filters &gt;</li>
<li>Ensure the ‘Excluded output form filter URLs’ value is set to a single forward slash.. /</li>
<li>Site Manager &gt; Settings &gt; Urls&gt;</li>
<li>Ensure the Friendly Url Extensions value is blank</li>
</ul>
<p>There is currently no way of ensuring that automatically generated urls from Kentico contain a trailing slash. The user must set the Document UrlPath for each page in Page &gt; Properties &gt; Urls to include the trailing slash. However the trailing slash is enforced via in IIS 7 rewriting rule. It is hoped that a future version of Kentico will allow for this to avoid the extra 301 redirect.</p>
<p>Now apply the following website configuration&#8230;.</p>
<p>Place the following code in the Page_Load of your master page.<br />
            // ensure we fix up the form action if required<br />
            if (!String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_ORIGINAL_URL"]))<br />
            {<br />
                form1.Action = Request.ServerVariables["HTTP_X_ORIGINAL_URL"];<br />
            }</p>
<p>This ensures that Asp.Net postback and ajax work correctly with the IIS7 URL Rewrite Module</p>
<p>Now all you need to do now is apply whatever special rewriting rule syou like within the web.config, utilising the IIS Rewrite Module&#8217;s capabilities as you need them. (Note that you don&#8217;t need to do anything within IIS, you can manage everything within the web.config and simply deploy it out to target servers without worrying about any additional configuration).</p>
<p>For example, the <strong>EnforceTrailingSlash</strong> rule below will ensure that a trailing slash is added to all urls without extensions, performing a 301 redirect in the process. This is so to avoid multiple urls (ones with and without slashes) returning the same content which isn&#8217;t ideal from an SEO perspective.</p>
<p>The <strong>TrailingSlashToAspx</strong> rule below will ensure that a trailing slash is rewritten internally to .aspx, so that the kentico rewriting engine can take over. Note that the Kentico CMS folders are ignored (ones starting with CMS..)</p>
<p>&lt;system.webServer&gt;<br />
        &lt;rewrite&gt;<br />
            &lt;rules&gt;<br />
                &lt;rule name=&#8221;EnforceTrailingSlash&#8221;&gt;<br />
                    &lt;match url=&#8221;^(.*)$&#8221; ignoreCase=&#8221;false&#8221; /&gt;<br />
                    &lt;conditions&gt;<br />
                        &lt;add input=&#8221;{REQUEST_FILENAME}&#8221; matchType=&#8221;IsFile&#8221; negate=&#8221;true&#8221; /&gt;<br />
                        &lt;add input=&#8221;{REQUEST_URI}&#8221; negate=&#8221;true&#8221; pattern=&#8221;(.*)\.([a-zA-Z]+)(\?.*)?$&#8221; /&gt;<br />
                        &lt;add input=&#8221;{REQUEST_URI}&#8221; negate=&#8221;true&#8221; pattern=&#8221;(.*)/$&#8221; /&gt;                       <br />
                    &lt;/conditions&gt;<br />
                    &lt;action type=&#8221;Redirect&#8221; url=&#8221;{R:1}/&#8221; redirectType=&#8221;Permanent&#8221; /&gt;<br />
                &lt;/rule&gt;</p>
<p>                &lt;rule name=&#8221;TrailingSlashToAspx&#8221;&gt;<br />
                    &lt;match url=&#8221;^(.*)/$&#8221; /&gt;<br />
                    &lt;conditions&gt;<br />
                        &lt;add input=&#8221;{REQUEST_FILENAME}&#8221; matchType=&#8221;IsFile&#8221; negate=&#8221;true&#8221; /&gt;<br />
                        &lt;add input=&#8221;{REQUEST_URI}&#8221; negate=&#8221;true&#8221; pattern=&#8221;/cms(.*)$&#8221; /&gt;<br />
                        &lt;add input=&#8221;{REQUEST_URI}&#8221; negate=&#8221;true&#8221; pattern=&#8221;^(.*)/\.aspx[#\w=\|\&amp;amp;%-]*$&#8221; /&gt;<br />
                    &lt;/conditions&gt;<br />
                    &lt;action type=&#8221;Rewrite&#8221; url=&#8221;{R:1}.aspx&#8221; /&gt;<br />
                &lt;/rule&gt;<br />
            &lt;/rules&gt;<br />
        &lt;/rewrite&gt;<br />
    &lt;/system.webServer&gt;</p>
<p>And so there you have it, a relatively painless way to get yourself all SEOd with IIS 7.0 and Kentico CMS 4.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/technical/2009/04/iis7-extensionless-urls-and-kentico-cms-40/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Marker and Yellow partner to bring IE 8 first in New Zealand</title>
		<link>http://www.markerstudio.com/marketing/2009/03/marker-and-yellow-partner-to-bring-ie-8-first-in-new-zealand/</link>
		<comments>http://www.markerstudio.com/marketing/2009/03/marker-and-yellow-partner-to-bring-ie-8-first-in-new-zealand/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 08:08:20 +0000</pubDate>
		<dc:creator>Marker</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Ajax APIs]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Kentico]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://www.markerstudio.com/?p=1559</guid>
		<description><![CDATA[A customised IE8 browser experience brought to you by Yellow, designed and developed by Marker]]></description>
			<content:encoded><![CDATA[<div class="itemBodyStyle">
<p>My good friend Nigel Parker over at Microsoft beat me to the post with <a href="http://blogs.msdn.com/nigel/archive/2009/03/17/yellow-blackcaps-first-to-build-and-deploy-on-ie8-in-new-zealand.aspx" target="_blank">his excellent blog post </a>on <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2fwww.markerstudio.com" target="_blank">Marker Studio</a>&#8216;s <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2fsearch.yellow.co.nz%2f" target="_blank">new search site for Yellow</a> and customised IE8 browser experience:</p>
<p>The launch has been very successful with <strong>over 10,000 downloads of the Yellow IE8 browser in the first 2 days</strong>!</p>
<p>To add a bit of technical detail to Nigel&#8217;s post we made heavy usage of the Google Search Ajax APIs. I kind of wish they still had the SOAP apis as it would have been easier in many respects using .net to bind the results using server side asp.net rather than be forced to work primarily with the ajax apis. Also, the ajax apis come with handy code snippets <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2fcode.google.com%2fapis%2fajaxsearch%2f">http://code.google.com/apis/ajaxsearch/</a> but they assumed things like ajax calls for paging requests which means the user can&#8217;t bookmark the urls. Aside from that a few workarounds here and there got us enabling Google integrated search quite easily. I would like people to note that the Live Search apis were superior in terms of the range of ways one could consume search services, and relevance in my book is very comparable between the two.</p>
<p>We made use of <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fbb387098.aspx" target="_blank">Linq to XML</a> when consuming the core Yellow listings api which is REST based. This made the consumption and binding of the search results to the page using a standard asp.net repeater much easier. In fact, i cringed to think of the additional effort that was involved before Linq for XML in navigating XML Documents with the .net 2.0 xml apis which I never found particularly intuitive.</p>
<p>There is also some Salesforce integration for helping to manage competition entries where we created custom lead objects in Salesforce. It&#8217;s kind of nice to have the ability to regenerate the wsdl for the web service after you make changes in the gui to core field information. It would be even nicer to have this discoverable at runtime so i could just regenerate proxies using a url rather than having to download the wsdl and re-run svcutil across the wsdl locally.</p>
<p>And let&#8217;s not forget our good friend <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2fwww.jquery.com" target="_blank">JQuery</a>, and loving that Intellisense support in Vs.Net 2008;) Also a shout to <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2ffamspam.com%2ffacebox%2f" target="_blank">facebox</a> for those obligatory modals with rounded corners.</p>
<p>Oh, and the whole thing is powered by <a href="http://blog.keithpatton.com/ct.ashx?id=70524aab-4394-4def-8fe8-d3948986cde4&amp;url=http%3a%2f%2fwww.kentico.com" target="_blank">Kentico CMS</a>. Kentico CMS is a powerful, flexible and affordable content and document management system that i have been personally recommending to all and sundry since i first came across it in 2005. At Marker &lt;shamelessPlug&gt;we have a great team of experienced Kentico developers should you be looking in this direction. Please <a href="mailto:keith.p@markerstudio.com" target="_blank">give me a yell</a> if you would like to discuss further&lt;/shamelessPlug&gt;.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.markerstudio.com/marketing/2009/03/marker-and-yellow-partner-to-bring-ie-8-first-in-new-zealand/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

