<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
  <channel>
    <title>Sitefinity Dev Blogs</title>
    <description>Sitefinity Dev Blogs</description>
    <link>http://www.sitefinity.com/blogs.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/SitefinityBlogs" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sitefinityblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">SitefinityBlogs</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Sitefinity Ecommerce - Pre-purchasing processing hook</title>
      <description>&lt;p&gt;Another hook introduced into Sitefinity 5.0 is a pre-processing hook that allows you to write customized code through a pre-purchase processing hook in the Ecommerce module.&amp;nbsp;&amp;nbsp; This could be used to do any business logic that a merchant needs before processing an order.&amp;nbsp;&amp;nbsp; A developer can create custom code and register the code to be called before the order is placed.&lt;br&gt;There are endless reasons for why you would want custom code to be executed before placing the order.&amp;nbsp; Below are just a few ideas on how you may take advantage of this extendable and powerful new feature in Sitefinity Ecommerce.&lt;br&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp; Perform any business logic needed before purchasing and cancel an order if it doesn’t pass validation.&lt;br&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp; Check inventory quantities with a third party software package such as SAP, NetSuite, QuickBooks and Microsoft Dynamics.&lt;br&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow specific products to be purchased based on rules such as 1) only product B to be purchased if product A has been purchased in the past by that user or role.&lt;br&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp; Check low inventory quantities – send email to applicable purchaser.&lt;br&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp; Change pricing if needed based on roles or some other business rules.&lt;/p&gt; &lt;p&gt;To use these events developers should add Global.asax file to SitefinityWebApp project and subscribe to the Ecommerce events.&lt;/p&gt; &lt;p&gt;The Ecommerce specific events can only be registered after Sitefinity’s Bootstrapper has initialized.&amp;nbsp; So, first subscribe to the Bootstrapper.Initialized method. In the Bootstapper_Initialized method you can subscribe to Ecommerce specific events like EcommerceEvents.OrderPlaced or EcommerceEvents.PaymentResponse.&lt;/p&gt; &lt;p&gt;See the code below for an example.&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;script src="https://gist.github.com/2779669.js"&gt; &lt;/script&gt;&lt;/p&gt; &lt;p&gt;I am sure you will find this feature very helpful allowing you to integrate customizations that you may need for your online store.&amp;nbsp; All future exposed events will be in the EcommerceEvents class.&amp;nbsp; &lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/stevemiller/posts/12-05-24/sitefinity_ecommerce_-_pre-purchasing_processing_hook.aspx</link>
      <author>Steve Miller</author>
      <comments>http://www.sitefinity.com/blogs/stevemiller/posts/12-05-24/sitefinity_ecommerce_-_pre-purchasing_processing_hook.aspx</comments>
      <guid isPermaLink="false">6ca2c65d-a8a9-46a2-b52e-7a8ccaff423d</guid>
      <pubDate>Thu, 24 May 2012 05:35:46 GMT</pubDate>
    </item>
    <item>
      <title>How to display an image gallery for each news item</title>
      <description>&lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/Slavo_Ingilizov_s_Images/newsImageGallery.sflb.ashx" alt="An image gallery for a single news item" style="width: 400px; height: 400px;" /&gt;&lt;/p&gt; &lt;p&gt;We’ve seen many requests for the option to associate a Sitefinity news item with a collection of images. A long time ago I &lt;a href="http://www.sitefinity.com/blogs/slavoingilizov/posts/11-09-09/extend_the_image_selector_for_content_items_with_filtering_by_album.aspx" target="_blank"&gt;blogged&lt;/a&gt; on how you could associate a single news item with a single image. Extending that sample to enable multiple image selection is not very hard, and this blog post is going to show you how to do it.&lt;/p&gt; &lt;p&gt;If you just want the source code for the sample, you can &lt;a href="http://www.sitefinity.com/Blogs_Libraries/Slavo_s_Files/MultipleImageSelector.sflb.ashx?download=true" target="_blank"&gt;download it&lt;/a&gt;. Follow the installation instructions at the end of the blog post.&lt;/p&gt; &lt;h2&gt;A selector for a single image&lt;/h2&gt; &lt;p&gt;The sample you can read about in the &lt;a href="http://www.sitefinity.com/blogs/slavoingilizov/posts/11-09-09/extend_the_image_selector_for_content_items_with_filtering_by_album.aspx" target="_blank"&gt;previous blog post&lt;/a&gt; implements a single image selector. This is a summary of what has been implemented so far:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;A selector control, which displays a list of images and returns the ID of the one clicked by the user &lt;/li&gt; &lt;li&gt;A dialog which wraps the selector control and returns the ID of the image when closed &lt;/li&gt; &lt;li&gt;A field control with two modes:
    &lt;ul&gt; &lt;li&gt;Write mode (used in the backend to select the image) – opens the dialog and saves the returned image ID. &lt;/li&gt; &lt;li&gt;Read mode (used to display the selected image in the news widget template) – reads the image ID, and outputs an &amp;lt;img&amp;gt; tag with correct URL. &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: This blog post is an extension to the previous one. It will only go over the new functionality and changes, so if you haven’t gone through the initial implementation, I recommend you &lt;a href="http://www.sitefinity.com/blogs/slavoingilizov/posts/11-09-09/extend_the_image_selector_for_content_items_with_filtering_by_album.aspx" target="_blank"&gt;do that now&lt;/a&gt;.&lt;/p&gt; &lt;h2&gt;What needs to be changed&lt;/h2&gt; &lt;p&gt;To support multiple images, we need to change the following from our previous sample:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Modify the selector to allow multiple selection &lt;/li&gt; &lt;li&gt;Modify the field control to display all images in Read Mode. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;We will go over each of the above items and see how it was implemented. The way the dialog returns the selected images, and how the field control persists them in the custom field stays the same. Instead of saving the ID, we will save a comma-separated list of IDs.&lt;/p&gt; &lt;h3&gt;Modify the selector to allow multiple selection&lt;/h3&gt; &lt;p&gt;The image selector should be able to highlight multiple selected images. In the previous sample, any time you click an image, your previous selection was lost (because you could only select one). This is all done in the Javascript _binderCommand method of the SimpleImageSelector. Here is the changed code that handles multiple image selection:&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2730748.js?file=SimpleImageSelector.js"&gt;&lt;/script&gt; &lt;/p&gt; &lt;link rel="stylesheet" href="https://gist.github.com/stylesheets/gist/embed.css" /&gt; &lt;div id="gist-2730748" class="gist"&gt; &lt;div class="gist-file"&gt; &lt;div class="gist-data gist-syntax"&gt; &lt;div class="gist-highlight"&gt; &lt;pre&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;get_commandName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"selectImage"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;imageUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;get_dataItem&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;ThumbnailUrl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;imageId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;get_dataItem&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;jItemElement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;get_itemElement&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;isItemAlreadySelected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jItemElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'class'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;indexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'sf_selectedImage'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isItemAlreadySelected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;itemIndex&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arrayContains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageIds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;imageId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;itemIndex&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageIds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;itemIndex&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt; &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;itemIndexUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arrayContains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageUrls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;imageUrl&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;itemIndex&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageUrls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;itemIndex&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt; &lt;span class="nx"&gt;jItemElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;removeClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"sf_selectedImage"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arrayContains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageIds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;imageId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageIds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;imageId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arrayContains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageUrls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;imageUrl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;_selectedImageUrls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;imageUrl&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt; &lt;span class="nx"&gt;jItemElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addClass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"sf_selectedImage"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC29"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="gist-meta"&gt; &lt;a href="https://gist.github.com/raw/2730748/b9bf32b071010aec19f2277e3304d66419f068d3/SimpleImageSelector.js" style="float: right;"&gt;view raw&lt;/a&gt; &lt;a href="https://gist.github.com/2730748#file_simple_image_selector.js" style="float: right; margin-right: 10px; color: #666666;"&gt;SimpleImageSelector.js&lt;/a&gt; &lt;a href="https://gist.github.com/2730748"&gt;This Gist&lt;/a&gt; brought to you by &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;.
&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;The ID of the image that was clicked is passed as an argument. We keep the IDs and URLs of the already selected images in two arrays. These arrays were not present in the previous sample, where we only kept a single ID and URL. We check if the item is already added, and add or remove it accordingly. Each new item the user clicks will be added to the array, or removed on second click. The code for changing the style of the selected image and returning the selected value does not change.&lt;/p&gt; &lt;h3&gt;Modify the field control to display all images in Read Mode&lt;/h3&gt; &lt;p&gt;Once a collection of images is selected, the value is persisted as a comma-separated string of their IDs. We need to parse that string and get the images themselves using the API. In the previous version, with only one image to select, the Value property of the field control was returning the ID directly from the UI. We now need to add a private field to hold the value. Here is the full implementation of the Value property.&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2730755.js?file=SimpleImageSelector.cs"&gt;&lt;/script&gt; &lt;/p&gt; &lt;link rel="stylesheet" href="https://gist.github.com/stylesheets/gist/embed.css" /&gt; &lt;div id="gist-2730755" class="gist"&gt; &lt;div class="gist-file"&gt; &lt;div class="gist-data gist-syntax"&gt; &lt;div class="gist-highlight"&gt; &lt;pre&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;Value&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Empty&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DisplayMode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt; &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt; &lt;span class="k"&gt;set&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ChildControlsCreated&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt; &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DisplayMode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextBoxControl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC29"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;imageIds&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;';'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;imageIds&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC32"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC33"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC34"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC35"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC36"&gt; &lt;span class="k"&gt;else&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC37"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC38"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC39"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC40"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC41"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="gist-meta"&gt; &lt;a href="https://gist.github.com/raw/2730755/8450a40d7c0c78909ca185b6ebdc6e752e3aee64/SimpleImageSelector.cs" style="float: right;"&gt;view raw&lt;/a&gt; &lt;a href="https://gist.github.com/2730755#file_simple_image_selector.cs" style="float: right; margin-right: 10px; color: #666666;"&gt;SimpleImageSelector.cs&lt;/a&gt; &lt;a href="https://gist.github.com/2730755"&gt;This Gist&lt;/a&gt; brought to you by &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;.
&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Apart from doing the selection itself, our field control also has the job of presenting the selected images when used in Read mode (i.e. the widget template of a widget). For the purposes of this sample, we will just bind a Repeater control to the list of images. This is done in three of the methods – OnLoad, InitializeControls, and OnPreRender.&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2730757.js?file=SimpleImageField.cs"&gt;&lt;/script&gt; &lt;/p&gt; &lt;link rel="stylesheet" href="https://gist.github.com/stylesheets/gist/embed.css" /&gt; &lt;div id="gist-2730757" class="gist"&gt; &lt;div class="gist-file"&gt; &lt;div class="gist-data gist-syntax"&gt; &lt;div class="gist-highlight"&gt; &lt;pre&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnLoad&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt; &lt;span class="k"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OnLoad&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DisplayMode&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ImageGalleryControl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ItemDataBound&lt;/span&gt; &lt;span class="p"&gt;+=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;RepeaterItemEventHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ImageGalleryControl_ItemDataBound&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InitializeControls&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GenericContainer&lt;/span&gt; &lt;span class="n"&gt;container&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ConstructControl&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DisplayMode&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LabelControl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Visible&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;override&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;OnPreRender&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt; &lt;span class="k"&gt;base&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OnPreRender&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DisplayMode&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;FieldDisplayMode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Read&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;filterBuilder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;StringBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;imageIds&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sc"&gt;','&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;imageIds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;++)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC27"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC28"&gt; &lt;span class="n"&gt;filterBuilder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" OR "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC29"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC30"&gt; &lt;span class="n"&gt;filterBuilder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Id == {0}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;imageIds&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC31"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC32"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;filter&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;filterBuilder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC33"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC34"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;images&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;App&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WorkWith&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Images&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;Where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Status&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ContentLifecycleStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Master&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;Where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;Get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC35"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ImageGalleryControl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataSource&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC36"&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ImageGalleryControl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataBind&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC37"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC38"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC39"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC40"&gt;&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;ImageGalleryControl_ItemDataBound&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RepeaterItemEventArgs&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC41"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC42"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ItemType&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ListItemType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Item&lt;/span&gt; &lt;span class="p"&gt;||&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ItemType&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ListItemType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AlternatingItem&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC43"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC44"&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;imageControl&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FindControl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"image"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Web&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WebControls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC45"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;imageControl&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC46"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC47"&gt; &lt;span class="n"&gt;imageControl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ImageUrl&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataItem&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;Telerik&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Sitefinity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Libraries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;ThumbnailUrl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC48"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC49"&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC50"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="gist-meta"&gt; &lt;a href="https://gist.github.com/raw/2730757/5707dfdf3c5db848d7aef026e1abe2e3d2138131/SimpleImageField.cs" style="float: right;"&gt;view raw&lt;/a&gt; &lt;a href="https://gist.github.com/2730757#file_simple_image_field.cs" style="float: right; margin-right: 10px; color: #666666;"&gt;SimpleImageField.cs&lt;/a&gt; &lt;a href="https://gist.github.com/2730757"&gt;This Gist&lt;/a&gt; brought to you by &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;.
&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;By using the Split() method, we convert the comma-separated string of IDs into an array. From those IDs, we build a filter, which can be passed to the API to get a collection of the selected images. The we just set the Repeater’s data source and call its DataBind() method. On the ItemDataBound event of the Repeater, we set the URL of each &amp;lt;img&amp;gt; tag to the selected image’s thumbnail.&lt;/p&gt; &lt;h2&gt;Including the field control in a widget template&lt;/h2&gt; &lt;p&gt;Once we’ve implemented multiple selection in our field control, we can include it in the widget template for each news item. This is done with the following markup:&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2730761.js?file=FullNewsItem.ascx"&gt;&lt;/script&gt; &lt;/p&gt; &lt;link rel="stylesheet" href="https://gist.github.com/stylesheets/gist/embed.css" /&gt; &lt;div id="gist-2730761" class="gist"&gt; &lt;div class="gist-file"&gt; &lt;div class="gist-data gist-syntax"&gt; &lt;div class="gist-highlight"&gt; &lt;pre&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="nt"&gt;&amp;lt;%@&lt;/span&gt; &lt;span class="n"&gt;Register&lt;/span&gt; &lt;span class="n"&gt;Assembly&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"ThumbnailSelectorField"&lt;/span&gt; &lt;span class="n"&gt;Namespace&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Telerik.Sitefinity.Samples"&lt;/span&gt; &lt;span class="n"&gt;TagPrefix&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"samples"&lt;/span&gt; &lt;span class="nt"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;...&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="nt"&gt;&amp;lt;samples:SimpleImageField&lt;/span&gt; &lt;span class="na"&gt;ID=&lt;/span&gt;&lt;span class="s"&gt;"imgGalleryField"&lt;/span&gt; &lt;span class="na"&gt;runat=&lt;/span&gt;&lt;span class="s"&gt;"server"&lt;/span&gt; &lt;span class="na"&gt;Value=&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;%#&lt;/span&gt; &lt;span class="n"&gt;Eval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Thumbnails"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;%&amp;gt;&lt;/span&gt;'&amp;gt;&lt;span class="nt"&gt;&amp;lt;/samples:SimpleImageField&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="gist-meta"&gt; &lt;a href="https://gist.github.com/raw/2730761/14a5330286552ca71c3f237d1fb5050235894a0c/FullNewsItem.ascx" style="float: right;"&gt;view raw&lt;/a&gt; &lt;a href="https://gist.github.com/2730761#file_full_news_item.ascx" style="float: right; margin-right: 10px; color: #666666;"&gt;FullNewsItem.ascx&lt;/a&gt; &lt;a href="https://gist.github.com/2730761"&gt;This Gist&lt;/a&gt; brought to you by &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;.
&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Note that in the Value property, we need to supply the name of the custom field which we use to persist the selected images. The next section lists all steps you need to follow in order to setup the multiple image selector for the News module.&lt;/p&gt; &lt;h2&gt;Installation Instructions&lt;/h2&gt; &lt;ol&gt; &lt;li&gt;Create an empty Sitefinity project &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/Blogs_Libraries/Slavo_s_Files/MultipleImageSelector.sflb.ashx?download=true" target="_blank"&gt;Download the source code for the sample&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Include the Global.asax and Global.asax.cs files in your web project &lt;/li&gt; &lt;li&gt;Include the existing ThumbnailSelectorField project from the archive, and change its references to point to the BIN folder of your web project. Also include a project reference to it in the web project &lt;/li&gt; &lt;li&gt;Build and run your project &lt;/li&gt; &lt;li&gt;Create a custom field in News with name “Thumbnails” and select a Custom widget for entering data. Enter “Telerik.Sitefinity.Samples.SimpleImageSelector” for the widget type. &lt;/li&gt; &lt;li&gt;Edit the widget template for the Full news item mode of news. &lt;/li&gt; &lt;li&gt;Register the “samples” prefix with the following line:
    &lt;br /&gt;
    &amp;lt;%@ Register Assembly="ThumbnailSelectorField" Namespace="Telerik.Sitefinity.Samples" TagPrefix="samples" %&amp;gt; &lt;/li&gt; &lt;li&gt;Include the field control in &amp;lt;ItemTemplate&amp;gt; section
    &lt;br /&gt;
    &amp;lt;samples:SimpleImageField ID="imgGalleryField" runat="server" Value='&amp;lt;%# Eval("Thumbnails") %&amp;gt;'&amp;gt;&amp;lt;/samples:SimpleImageField&amp;gt; &lt;/li&gt; &lt;/ol&gt; &lt;p&gt;If you have further questions about the sample, please ask them in the comments.&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/slavoingilizov/posts/12-05-21/how_to_display_an_image_gallery_for_each_news_item.aspx</link>
      <author>Slavo Ingilizov</author>
      <comments>http://www.sitefinity.com/blogs/slavoingilizov/posts/12-05-21/how_to_display_an_image_gallery_for_each_news_item.aspx</comments>
      <guid isPermaLink="false">f73f0182-9987-4ac5-9eda-b5da2777f231</guid>
      <pubDate>Mon, 21 May 2012 04:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Using Update panel in Sitefinity - Part 2</title>
      <description>&lt;p style="text-align: justify;"&gt;Let's start with a little introduction on what the UpdatePanel is and how it can help you achieve a wide range of scenarios.&lt;/p&gt; &lt;p style="text-align: justify;"&gt;The UpdatePanel is a server control, which allows you to refresh selected parts of the page instead of refreshing the whole page with a postback. It enables a web page to participate in partial-page updates without writing any client script. Moreover, when you use an UpdatePanel control, the page behavior is browser independent and can potentially reduce the amount of data that is transferred between client and server. When partial-page updates are enabled, controls can asynchronously post to the server. An asynchronous postback behaves like a regular postback in that the resulting server page executes the complete page and control life cycle. However, with an asynchronous postback, page updates are limited to regions of the page that are enclosed in UpdatePanel controls and that are marked to be updated. This behavior makes a Web page appear more interactive to the end user. For more information you can visit the &lt;a href="http://msdn.microsoft.com/en-us/library/bb386454.aspx"&gt;MSDN UpdatePanel Overview page&lt;/a&gt;.&lt;/p&gt; &lt;div style="text-align: justify;"&gt;&lt;br /&gt; &lt;/div&gt; &lt;p style="text-align: justify;"&gt;Now let's get back to UpdatePanel and its use in Sitefinity. A few months ago Teodor Georgiev made a &lt;a href="http://www.sitefinity.com/blogs/teodorgeorgiev/posts/11-08-26/using_update_panel_in_sitefinity.aspx"&gt;blog post&lt;/a&gt; on how to use Update panel in Sitefinity. In it he modifies the update panel so that it works correctly on Sitefinity pages, by moving the logic of the OnInit event to the InitComplete event. This is done to make sure that a Script manager is available on the page when methods, which require it, are executed. The good news is that you don't need to do that anymore. In order to meet our clients' expectations we've included SitefinityUpdatePanel in the source of our system and now you are able to use it directly in your controls. The purpose of this blog post is to show you how this is done. You will find attached a very simple user control with update panel under my post. It consists of a SitefinityUpdatePanel and a label and button controls between the opening and closing tags of the panel. Note that in order to use the SitefinityUpdatePanel directly on the .ascx control, you should include the following tagprefix:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;%@ Register TagPrefix="sf" Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI.PublicControls"%&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p style="text-align: justify;"&gt;This way your application will look for the control in the Telerik.Sitefinity assembly.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;.ascx&lt;/em&gt;&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AjaxTest.ascx.cs" Inherits="SitefinityWebApp.AjaxTest" %&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;%@ Register TagPrefix="sf" Assembly="Telerik.Sitefinity" Namespace="Telerik.Sitefinity.Web.UI.PublicControls"%&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;sf:SitefinityUpdatePanel&lt;/code&gt; &lt;code style="color: #808080;"&gt;Id&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"SUP"&lt;/code&gt; &lt;code style="color: #808080;"&gt;runat&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"server"&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ContentTemplate&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;asp:Button&lt;/code&gt; &lt;code style="color: #808080;"&gt;Text&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"ClickME!"&lt;/code&gt; &lt;code style="color: #808080;"&gt;Id&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"Button1"&lt;/code&gt; &lt;code style="color: #808080;"&gt;runat&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"server"&lt;/code&gt; &lt;code style="color: #000000;"&gt;/&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;asp:Label&lt;/code&gt; &lt;code style="color: #808080;"&gt;Id&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"TestLabel"&lt;/code&gt; &lt;code style="color: #808080;"&gt;runat&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"server"&lt;/code&gt; &lt;code style="color: #000000;"&gt;/&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ContentTemplate&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;sf:SitefinityUpdatePanel&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;br /&gt; &lt;p style="text-align: justify;"&gt;Now if you look at the code-behind of the sample control, you will notice this attribute- [RequireScriptManager], which explicity indicates that a ScriptManager should be included on the page, so that the contol would work properly:&lt;/p&gt; &lt;p&gt;&lt;em&gt;code-behind&lt;/em&gt;&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;namespace&lt;/code&gt; &lt;code style="color: #000000;"&gt;SitefinityWebApp&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;[RequireScriptManager]&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;partial&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000000;"&gt;AjaxTest : System.Web.UI.UserControl&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;Page_Load(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;object&lt;/code&gt; &lt;code style="color: #000000;"&gt;sender, EventArgs e)&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;Button1.Click += &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;EventHandler(Button1_Click);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;Button1_Click(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;object&lt;/code&gt; &lt;code style="color: #000000;"&gt;sender, EventArgs e)&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;Button1.Text = &lt;/code&gt;&lt;code style="color: blue;"&gt;"I've been clicked!"&lt;/code&gt;&lt;code style="color: #000000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;TestLabel.Text = &lt;/code&gt;&lt;code style="color: blue;"&gt;"Page was not refershed!"&lt;/code&gt;&lt;code style="color: #000000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;br /&gt; &lt;div style="text-align: justify;"&gt;&amp;nbsp;The rest is nothing that would surprise you. On the Click event of our button, we change the text of the label and the button. Usually, this would cause a postback to the server and the whole page would get refreshed, but since we're using a SitefinityUpdatePanel, when the button is clicked, page updates will be limited to the regions of the page, enclosed by the update panel.&lt;/div&gt; &lt;br /&gt; &lt;p&gt;This is all you need to do to use the UpdatePanel. I truly hope that this improvement will help you get the best of developing with Sitefinity!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/Sitefinity_4_0_code_samples/UpdatePanel.sflb.ashx"&gt;Download the sample from here.&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/jenpeleva/posts/12-05-19/using_update_panel_in_sitefinity_-_part_2.aspx</link>
      <author>Jen Peleva</author>
      <comments>http://www.sitefinity.com/blogs/jenpeleva/posts/12-05-19/using_update_panel_in_sitefinity_-_part_2.aspx</comments>
      <guid isPermaLink="false">fff46495-74cb-47c3-bfba-52e5ef064c76</guid>
      <pubDate>Sat, 19 May 2012 12:22:10 GMT</pubDate>
    </item>
    <item>
      <title>What&amp;rsquo;s New in Sitefinity Thunder 1.0.9</title>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Thunder Update:&lt;/strong&gt; An issue with registering templates was discovered and has already been patched. Be sure to update to the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/381fde64-9898-4a5d-ae20-861e119bbf92"&gt;latest Sitefinity Thunder version&lt;/a&gt; for the fix!&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/381fde64-9898-4a5d-ae20-861e119bbf92"&gt;Sitefinity Thunder&lt;/a&gt; continued it's timely release schedule last week with a new 1.0.9 release. Here are some highlights.&lt;/p&gt; &lt;h2&gt;Website Template Project Type&lt;/h2&gt; &lt;p&gt;A new Visual Studio Project type is now available for quickly &lt;a href="http://www.sitefinity.com/documentation/documentationarticles/creating-a-website-template"&gt;creating Website Templates&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Website-Template-Visual-Studio-Project_2.sflb.ashx" target="_blank"&gt;&lt;img style="display: inline; background-image: none;" title="Sitefinity-Thunder-Website-Template-Visual-Studio-Project" border="0" alt="Sitefinity-Thunder-Website-Template-Visual-Studio-Project" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Website-Template-Visual-Studio-Project_thumb.sflb.ashx" width="244" height="170"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This project type replaces old "Theme" project type that was previously available in Thunder. While the previous "Theme" project type only supported creating new Sitefinity Themes, the new Sitefinity Template project type supports creating an entire Website Template, including both a Theme and an associated Master Page for creating Page Templates.&lt;/p&gt; &lt;p&gt;Just like before, it generates all the necessary files as a starting point for your theme, now adding the master page to the package.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Website-Template-Solution_8.sflb.ashx" target="_blank"&gt;&lt;img style="display: inline; background-image: none;" title="Sitefinity-Thunder-Website-Template-Solution" border="0" alt="Sitefinity-Thunder-Website-Template-Solution" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Website-Template-Solution_thumb_2.sflb.ashx" width="127" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Of course, you can also add additional master pages to your project, and thunder will automatically detect that type and present it to you when adding a new item to that folder. This is especially handy since working with templates in your App_Data folder of the Sitefinity website doesn't natively allow you to add .master files.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Website-Template-Master-Page_2.sflb.ashx" target="_blank"&gt;&lt;img style="display: inline; background-image: none;" title="Sitefinity-Thunder-Website-Template-Master-Page" border="0" alt="Sitefinity-Thunder-Website-Template-Master-Page" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Website-Template-Master-Page_thumb.sflb.ashx" width="244" height="170"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Also, like the old Themes template, this new Sitefinity Website Template project type can be added either to your existing Sitefinity solution, or a separate solution entirely. This is great for sharing your project via source control and keeping your projects and templates organizes.&lt;/p&gt; &lt;h3&gt;Uploading Templates&lt;/h3&gt; &lt;p&gt;Thunder also gives you the ability to &lt;a href="http://www.sitefinity.com/documentation/documentationarticles/uploading-downloading-and-deleting-a-website-template"&gt;upload your website templates&lt;/a&gt; to the live Sitefinity website (be sure you have &lt;a href="http://www.sitefinity.com/documentation/documentationarticles/installing-sitefinity-thunder"&gt;connected Thunder to your website&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Upload-Website-Template_2.sflb.ashx" target="_blank"&gt;&lt;img style="display: inline; background-image: none;" title="Sitefinity-Thunder-Upload-Website-Template" border="0" alt="Sitefinity-Thunder-Upload-Website-Template" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Upload-Website-Template_thumb.sflb.ashx" width="244" height="218"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This will also create a new Page Template based on your master pages, as well as register the associated theme in the backend. This is a fantastic time saver!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Created-Page-Templates_2.sflb.ashx" target="_blank"&gt;&lt;img style="display: inline; background-image: none;" title="Sitefinity-Thunder-Created-Page-Templates" border="0" alt="Sitefinity-Thunder-Created-Page-Templates" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-f20c677fab09_A35F-Sitefinity-Thunder-Created-Page-Templates_thumb.sflb.ashx" width="244" height="107"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;More to come&lt;/h2&gt;
&lt;p&gt;Sitefinity Thunder continues to grow and expand, mostly based on your feedback. So be sure to share your experiences, comments, and suggestions in the &lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity-4-x/thunder.aspx"&gt;Sitefinity Thunder Discussion Forum&lt;/a&gt; and watch the blogs for the next Thunder update!&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/joshmorales/posts/12-05-17/what_rsquo_s_new_in_sitefinity_thunder_1_0_9.aspx</link>
      <author>Josh Morales</author>
      <comments>http://www.sitefinity.com/blogs/joshmorales/posts/12-05-17/what_rsquo_s_new_in_sitefinity_thunder_1_0_9.aspx</comments>
      <guid isPermaLink="false">18dd9b7b-b910-41da-a4d2-bc575cfbdadf</guid>
      <pubDate>Thu, 17 May 2012 18:59:02 GMT</pubDate>
    </item>
    <item>
      <title>Sneak preview: Email Campaigns in Sitefinity 5.1</title>
      <description>&lt;p&gt;During the first ever &lt;a href="http://www.sitefinity.com/blogs/fani-kondova/posts/12-04-24/reflections_from_sitefinity_beyond_london.aspx"&gt;Sitefinity &amp;amp; Beyond&lt;/a&gt; conference in London partners and customers of Sitefinity had the opportunity to see a sneak preview of the upcoming improvements in Email Campaigns in Sitefinity 5.1. While on first sight we are introducing some new features and improved user interface, I want to bring your attention to the innovative changes we are getting to product. A total of 3 features that are all focused to strengthen Sitefinity as a business platform. &lt;/p&gt; &lt;ol&gt; &lt;li&gt;New concept of Campaign and Issues&lt;/li&gt; &lt;li&gt;Actionable metrics and reports&lt;/li&gt; &lt;li&gt;Newsletter “Like a webpage”&lt;/li&gt; &lt;/ol&gt; &lt;h2&gt;New concept of Campaign and Issue&lt;/h2&gt; &lt;p&gt;Sending email campaigns is often a monthly or weekly activity that keeps your target audience tuned to your company’s latest news, product offerings or community buzz. The experience your customers receive through the e-mail channel should be often consistent and effective for all products and services you offer.&lt;/p&gt; &lt;p&gt;Most of the email campaign products on the market rely on templates that help you deliver consistent experience for your newsletters similar to Sitefinity. However, tracking the effectiveness for the campaigns related to a specific product might be a challenging task. This is often seen in organizations that have multiple brands and serve different audiences. &amp;nbsp;The relationship of the different campaigns for specific products or services is hard to establish if your campaign history screen looks like a mixture of unrelated newsletters and sales promotions. &lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlogLib/MockupForCampaigns.sflb.ashx" alt="Mixed campaigns" /&gt;&lt;/p&gt; &lt;p style="margin-top: 12pt;"&gt;In this case it is hard to gain any meaningful insights on the long-term effectiveness of your campaigns for a specific product overtime. To help you understand and act on the performance of each campaign we have introduced the concept of an Issue. &lt;/p&gt; &lt;p&gt;What this means is that you can choose your target audience, default email settings, design and content for your newsletter once and name it “Telerik Monthly Campaign”. Then every time you want to send a newsletter e.g. January Newsletter for Telerik, you will end up in the last sent state of your campaign. From there you will be able to modify only the information you want for the new campaign without starting from scratch. Delivering this “increment” of your campaign is what we call an Issue.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs_Libraries/MetaBlogLib/OverviewCampaigns.sflb.ashx" target="_blank"&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlogLib/OverviewCampaigns.sflb.ashx?width=700&amp;amp;height=700&amp;amp;decreaseOnly=true" alt="Sitefinity 5.1 Email Campaign screen" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This feature allows you to work in the context of the same campaign over time that focuses your energy on improving its performance instead of recreating it every month.&lt;/p&gt; &lt;h2&gt;Actionable metrics &amp;amp; reports&lt;/h2&gt; &lt;p&gt;As a result of the above feature, now we are able to create much more relevant metrics and reports. We can both compare all relevant newsletter on a single chart, or simply sprinkle suggestions on how your February newsletter compares to your January edition.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h3&gt;Cohort analysis on a campaign level&lt;/h3&gt; &lt;p&gt;The best way to compare the performance of your campaigns is to look at the relative values of your metrics for each issue. This is a great way to see how metrics related to the delivery, design or content of your newsletter are performing overtime. We have created a cohort analysis chart that lines up all issues sent from your campaign on the first screen of your campaign.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs_Libraries/MetaBlogLib/Campaign_Overview_report.sflb.ashx" target="_blank"&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlogLib/Campaign_Overview_report.sflb.ashx?width=700&amp;amp;height=700&amp;amp;decreaseOnly=true" alt="Sitefinity 5.1 Cohort-analysis chart" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h3&gt;Issue level metrics&lt;/h3&gt; &lt;p&gt;We have created a dedicated screen for each issue that outputs standard metrics such as Delivery rate, Open rate, Click-through rate, Unsubscribe rate and activity for the first 48 hours. Dynamic insights for the performance of your issue in comparison to the previously sent one are also great way to make sense of the metrics and understand the overall effectiveness of your issue.&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs_Libraries/MetaBlogLib/IssueLevelMetrics.sflb.ashx" target="_blank"&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlogLib/IssueLevelMetrics.sflb.ashx?width=700&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Sitefinity 5.1 Issue level metrics" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We are also delivering on the spot suggestions on the things that are affecting the performance of each metric. We have identified the following dependencies related to each metric that are visible also in the user interface:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="0" style="border: none;  border-collapse: collapse; border-image: initial;"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" style="border:1pt solid windowtext;width: 239.4pt; border-image: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;&lt;strong&gt;Metric&lt;/strong&gt;&lt;/p&gt; &lt;/td&gt; &lt;td valign="top" style="width: 239.4pt; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-top-color: windowtext; border-right-color: windowtext; border-bottom-color: windowtext; border-top-width: 1pt; border-right-width: 1pt; border-bottom-width: 1pt; border-image: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;&lt;strong&gt;Affected by&lt;/strong&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" style="width: 239.4pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-image: initial; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Delivery rate&lt;/p&gt; &lt;/td&gt; &lt;td valign="top" style="width: 239.4pt; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Keeping your mailing list up to date&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" style="width: 239.4pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-image: initial; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Unique openings&lt;/p&gt; &lt;/td&gt; &lt;td valign="top" style="width: 239.4pt; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Timing of your email&lt;/p&gt; &lt;p&gt;Subject of your email&lt;/p&gt; &lt;p&gt;Sender email&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" style="width: 239.4pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-image: initial; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Unique clicks&lt;/p&gt; &lt;/td&gt; &lt;td valign="top" style="width: 239.4pt; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Relevance of information to your audience&lt;/p&gt; &lt;p&gt;Number and position of actionable links&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" style="width: 239.4pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-image: initial; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Unsubscribed&lt;/p&gt; &lt;/td&gt; &lt;td valign="top" style="width: 239.4pt; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Relevance of information to your audience&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" style="width: 239.4pt; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-right-color: windowtext; border-bottom-color: windowtext; border-left-color: windowtext; border-right-width: 1pt; border-bottom-width: 1pt; border-left-width: 1pt; border-image: initial; border-top-style: none; border-top-width: initial; border-top-color: initial; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Open rate in the first 48 hours&lt;/p&gt; &lt;/td&gt; &lt;td valign="top" style="width: 239.4pt; border-top-style: none; border-top-width: initial; border-top-color: initial; border-left-style: none; border-left-width: initial; border-left-color: initial; border-bottom-style: solid; border-bottom-color: windowtext; border-bottom-width: 1pt; border-right-style: solid; border-right-color: windowtext; border-right-width: 1pt; padding-top: 0in; padding-right: 5.4pt; padding-bottom: 0in; padding-left: 5.4pt;"&gt; &lt;p&gt;Timing of your email&lt;/p&gt; &lt;p&gt;Subject of your email&lt;/p&gt; &lt;p&gt;Sender email&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;&lt;br /&gt; &lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlogLib/CampaignsSuggestions.sflb.ashx" alt="Sitefinity 5.1 Issue suggestions" /&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h3&gt;Enhanced Google Analytics support&lt;/h3&gt; &lt;p&gt;Should you decide to have Google Analytics tracking, Sitefinity will automatically append Google Tracking code to all existing links based on the following string format &lt;em&gt;utm_source={CampaignName}&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign={Issue Name}&lt;/em&gt;. Therefore, if your campaign is called Telerik Monthly and you are sending the January Newsletter issue, your tracking code will be parsed to the following:&amp;nbsp;&lt;em&gt;utm_source=Telerik&amp;amp;Monthly&amp;amp;utm_medium=newsletter&amp;amp;utm_campaign=&lt;/em&gt; &lt;em&gt;January%2BNewsletter&lt;/em&gt;.&lt;/p&gt; &lt;h2&gt;Newsletter “Like a web page”&lt;/h2&gt; &lt;p&gt;Sitefinity is giving you the flexibility of designing your newsletter in its &lt;a href="http://www.youtube.com/watch?v=LZ4VHGKQsrg"&gt;Layout Editor&lt;/a&gt; like it is a regular webpage. This gives you the power of using already existing widgets and content in the system while Sitefinity is converting all div layouts into tables, so that they can be properly interpreted by the majority of web clients. In previous versions of the product you had to implement all your stylesheets as inline styles which was making this feature hard to use. With Sitefinity 5.1 we have implemented a CSS parser that converts all external CSS files to inline styles, so you can design &amp;amp; edit your newsletter like a web page.&lt;/p&gt; &lt;h2&gt;Final thoughts&lt;/h2&gt; &lt;p&gt;I am really delighted that we managed to deliver a product that makes our marketing department eager to use it (I have that in black and white:) ). The guys who already saw the early preview were excited about the ease of use and new reports that will be available with the upcoming release. Stay tuned for more information as we will be revealing pretty exciting features of Sitefinity 5.1!&lt;/p&gt; &lt;p&gt;&lt;a href="/Blogs_Libraries/MetaBlogLib/IssueOverview.sflb.ashx" target="_blank"&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlogLib/IssueOverview.sflb.ashx?width=700&amp;amp;height=700&amp;amp;decreaseOnly=true" alt="Sitefinity 5.1 Issue overview" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/hristoborisov/posts/12-05-16/sneak_preview_email_campaigns_in_sitefinity_5_1.aspx</link>
      <author>Hristo Borisov</author>
      <comments>http://www.sitefinity.com/blogs/hristoborisov/posts/12-05-16/sneak_preview_email_campaigns_in_sitefinity_5_1.aspx</comments>
      <guid isPermaLink="false">815f970f-6e47-41fc-84d3-b583035e91b9</guid>
      <pubDate>Wed, 16 May 2012 14:18:16 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity visited Chicago for CMS Expo</title>
      <description>&lt;p&gt;Last week a few of my colleagues and I attended &lt;a href="http://cmsexpo.net/"&gt;CMS Expo&lt;/a&gt;, an annual business and learning conference held in Chicago. &amp;nbsp;CMS Expo is not the typical exhibition show. It is rather a casual learning conference filled with back-to-back learning sessions, open-minded people, leading industry speakers and analysts. &lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/AntonHristovFiles/Sitefinity_Booth_at_CMS_Expo.sflb.ashx" alt="Sitefinity Booth at CMS Expo" style="width: 350px; height: 263px; float: right; margin-right: 10px; margin-left: 10px;" longdesc="Sitefinity Booth at CMS Expo" /&gt;It was our first year attending the fifth annual expo and Sitefinity was one of the few proprietary solutions based on the Microsoft .NET platform. The majority of CMS vendors at the expo were focused on the &lt;a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)"&gt;LAMP stack&lt;/a&gt; and offered open source solutions.&lt;/p&gt; &lt;p&gt;Nevertheless, it was a great opportunity for us to showcase Sitefinity to the open-source community and to discuss web content management challenges that everyone is trying to address in one way or another.&lt;/p&gt; &lt;p&gt;During the 3-day conference we participated in 3 discussion panels, delivered 2 sessions, and won an award for Best Small Business Website (&lt;a href="http://www.texasroadhouse.com/"&gt;Texas Roadhouse&lt;/a&gt;). &lt;/p&gt; &lt;p&gt;We had a great time at CMS Expo, met with &lt;a href="http://www.sitefinity.com/partners/service-partners.aspx"&gt;Sitefinity Solution Partners&lt;/a&gt; from the area, and made some new contacts and friends. Thank you all for stopping by our booth! See you at the next event.&lt;/p&gt; &lt;p&gt;Below you can download the slides from our two sessions:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Blogs_Libraries/AntonHristovFiles/Telerik_Sitefinity_CMS_Fly_Over.sflb.ashx"&gt;Telerik Sitefinity CMS Fly Over&lt;/a&gt; (1.26 MB PDF) - slides cover different Sitefinity capabilities such as Mobile Web, Form builder, built-in Ecommerce, and what’s next.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Blogs_Libraries/AntonHristovFiles/Telerik_Sitefinity_CMS_Showcase.sflb.ashx"&gt;Telerik Sitefinity CMS Showcase&lt;/a&gt; (2.49 MB PDF)&lt;strong&gt; - &lt;/strong&gt;slides cover &lt;span style="line-height: 115%; background-color: white; font-family: verdana, sans-serif; font-size: 9pt;"&gt;highlights of different Sitefinity projects with their challenges, solutions, and end results.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;What are some of the CMS events and conferences that you attend and would like to see us present?&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/antonhristov/posts/12-05-15/sitefinity_visited_chicago_for_cms_expo.aspx</link>
      <author>Anton Hristov</author>
      <comments>http://www.sitefinity.com/blogs/antonhristov/posts/12-05-15/sitefinity_visited_chicago_for_cms_expo.aspx</comments>
      <guid isPermaLink="false">b77c44d5-8859-4103-92c3-1bf6d6e5be86</guid>
      <pubDate>Tue, 15 May 2012 17:13:19 GMT</pubDate>
    </item>
    <item>
      <title>What&amp;rsquo;s new in Sitefinity documentation for the past two weeks</title>
      <description>&lt;p&gt;OK. We have tons of new stuff this time. We’ve covered a big chunk of the ECommerce API in the developers guide and revised some old topics for Security. We are also trying hard to keep the documentation up to date with everything new released in Thunder. We’ve managed to speed up the documentation portal itself significantly by implementing a custom sitemap provider and caching. Here is a detailed list of the topics.&lt;/p&gt; &lt;h2&gt;Developers Guide&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-attributes"&gt;Product attributes&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-attributes/creating-attributes"&gt;Creating attibutes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-attributes/querying-attributes"&gt;Querying attributes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-attributes/modifying-attributes"&gt;Modifying attributes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-attributes/deleting-attributes"&gt;Deleting attributes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-attributes/product-attribute-values"&gt;Managing product attribute values&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-variations"&gt;Product variations&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-variations/creating-variations"&gt;Creating variations&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-variations/querying-variations"&gt;Querying variations&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-variations/modifying-variations"&gt;Modifying variations&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-variations/deleting-variations"&gt;Deleting variations&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/product-variations/updating-the-variation-detail"&gt;Updating details&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods"&gt;Payment methods&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/creating-payment-methods"&gt;Creating payment methods&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/querying-payment-methods"&gt;Querying payment methods&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/modifying-payment-methods"&gt;Modifying payment methods&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/payment-processors"&gt;Payment processors&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/payment-processors/querying-payment-processor-providers"&gt;Querying payment processor providers&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/payment-processors/creating-settings-for-authorize.net-payment-processor"&gt;Creating settings for Authorize.net&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/payment-processors/creating-settings-for-payflow-pro-payment-processor"&gt;Creating settings for Payflow Pro&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/payment-processors/creating-settings-for-sage-pay-payment-processor"&gt;Creating settings for Sage Pay&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/payment-methods/payment-processors/deserializing-settings"&gt;Deserializing settings&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/%20developers-guide/sitefinity-essentials/modules/ecommerce/taxes"&gt;Taxes&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/taxes/creating-taxes"&gt;Creating taxes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/taxes/querying-taxes"&gt;Querying taxes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/%20developers-guide/sitefinity-essentials/modules/ecommerce/taxes/modifying-taxes"&gt;Modifying taxes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/%20developers-guide/sitefinity-essentials/modules/ecommerce/taxes/deleting-taxes"&gt;Deleting taxes&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/sitefinity-essentials/modules/ecommerce/taxes/setting-the-tax-class-rates"&gt;Setting class tax rates&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/deep-dive/security"&gt;Security&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/developers-guide/deep-dive/security/authentication"&gt;Authentication&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Users
        &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/getting-the-current-user"&gt;Getting the current user&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/sitefinity-thunder"&gt;Sitefinity Thunder&lt;/a&gt; (whole section reworked)
    &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/working-with-sitefinity-thunder"&gt;Working with Sitefinity Thunder&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/installing-sitefinity-thunder"&gt;Installing Sitefinity Thunder&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/registering-a-widget"&gt;Registering a widget&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/uploading-a-theme-from-a-sitefinity-project-to-another-remote-sitefinity-project"&gt;Uploading a theme from one project to another remote project&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/upgrading-sitefinity-thunder"&gt;Upgrading Sitefinity Thunder&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/editing-widget-templates"&gt;Editing widget templates&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/upgrading-your-remote-sitefinity-project"&gt;Upgrading your remote Sitefinity project&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/creating-widget-designers"&gt;Creating widget designers&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/documentationarticles/creating-widget-templates"&gt;Creating widget templates&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;Getting Started Videos&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/gettingstarted/creating-and-displaying-your-first-product"&gt;ECommerce - Creating and displaying your first product&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/documentation/gettingstarted/creating-and-managing-product-types"&gt;ECommerce – Creating and managing product types&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.youtube.com/watch?v=7BAYBmTumOA&amp;amp;feature=plcp"&gt;ECommerce – Using attributes to create product variations&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;Blogging Highlights&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/blogs/slavoingilizov/posts/12-04-20/using_conditional_templates_in_your_custom_widgets.aspx"&gt;Using conditional templates in your custom widgets&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/blogs/joshmorales/posts/12-05-02/what_rsquo_s_new_in_sitefinity_thunder_1_0_8.aspx"&gt;What’s new in Thunder 1.0.8&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a target="_blank" href="http://www.sitefinity.com/blogs/stevemiller/posts/12-05-10/sitefinity_ecommerce_ndash_importing_products_into_sitefinity_ecommerce.aspx"&gt;Importing products into Sitefinity ECommerce&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Stay tuned for more content coming in the next weeks.&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/slavoingilizov/posts/12-05-14/what_rsquo_s_new_in_sitefinity_documentation_for_the_past_two_weeks.aspx</link>
      <author>Slavo Ingilizov</author>
      <comments>http://www.sitefinity.com/blogs/slavoingilizov/posts/12-05-14/what_rsquo_s_new_in_sitefinity_documentation_for_the_past_two_weeks.aspx</comments>
      <guid isPermaLink="false">ccbc0a02-cce5-4260-96c9-c213ac4b8bfe</guid>
      <pubDate>Mon, 14 May 2012 08:02:00 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity Ecommerce &amp;ndash; Importing Products into Sitefinity Ecommerce</title>
      <description>&lt;p&gt;Using the &lt;a target="_blank" href="http://www.sitefinity.com/blogs/slavoingilizov/posts/12-03-08/how_to_view_the_sitefinity_api_reference_in_visual_studio_2010.aspx"&gt;Sitefinity API&lt;/a&gt;, I would like to show you how you can import products into Sitefinity Ecommerce.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;h2&gt;How it Works&lt;/h2&gt; &lt;p&gt;The product importer is actually a widget that is placed onto a page.&amp;nbsp; Once the page has been created, bring up the page in a browser and follow the instructions to upload your file of products to import.&amp;nbsp;&amp;nbsp; Once you have uploaded your file, the product importer widget reads the values from your file and inserts them into the database.&amp;nbsp;&amp;nbsp; The Product Import is deployed as a NuGet package which you import using NuGet. If you are not familiar with NuGet, NuGet is a Visual Studio extension that makes it easy to install and update third-party libraries and tools in Visual Studio. The installation of NuGet is required in order to install the product importer. You can download NuGet at &lt;a href="http://nuget.org/" title="http://nuget.org/"&gt;http://nuget.org/&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;In this example I am using a .csv file as my data input.&amp;nbsp; The format of this file has been created such that you can add many custom product type fields at the end of the file.&amp;nbsp; Here we are only going to create two custom product type fields, CustomProperty1,CustomProperty2.&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2656432.js?file=ProductImport.csv"&gt;&lt;/script&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Installation&lt;/h2&gt; &lt;p&gt;&amp;nbsp; Once you have NuGet installed, please follow the following installation steps.&lt;/p&gt; &lt;h3&gt;Installation Steps&lt;/h3&gt; &lt;ol&gt; &lt;li&gt;Right click on your solution and select “Manage NuGet Packages…”. &lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_2.sflb.ashx"&gt;&lt;img width="359" height="269" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_thumb.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;In the Manage NuGet Packages window, select “Online” on the left side column then search for “Sitefinity”.&amp;nbsp;&amp;nbsp;&amp;nbsp; NuGet will find the Sitefinity package allowing you to install it directly into your Visual Studio Solution.&lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_4.sflb.ashx"&gt;&lt;img width="521" height="349" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_thumb_1.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Create a folder called “upload” at the top level of your solution.&amp;nbsp; This is where the .csv file will be uploaded in to.  &lt;/li&gt; &lt;li&gt;Copy over the file upload widget control into the root of your solution.&amp;nbsp; &lt;a target="_blank" href="https://github.com/esitefinity/Sitefinity-Ecommerce-Product-Upload"&gt;You can download the Widget from GitHub&lt;/a&gt;.  &lt;/li&gt; &lt;li&gt;Open Sitefinity Thunder and add the widget to Sitefinity&lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_6.sflb.ashx"&gt;&lt;img width="523" height="387" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_thumb_2.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Build your solution  &lt;/li&gt; &lt;li&gt;Start your solution without debugging  &lt;/li&gt; &lt;li&gt;When your Sitefinity web site comes up, login to the backend of Sitefinity  &lt;/li&gt; &lt;li&gt;In the top navigation, click on “Ecommerce” and select&amp;nbsp;&amp;nbsp; “Type of Products”.&amp;nbsp;&amp;nbsp; &lt;/li&gt; &lt;li&gt;Create all of your product types that you will be importing all of your products into.&amp;nbsp; &lt;/li&gt; &lt;li&gt;Create a new page in Sitefinity and call it productimport  &lt;/li&gt; &lt;li&gt;Drag and Drop the new widget you inserted using Sitefinity Thunder onto the page.&amp;nbsp;&amp;nbsp; Save the page.  &lt;/li&gt; &lt;li&gt;Bring up this page in your browser and upload your .csv file.&amp;nbsp; This will upload your .csv file into a folder called “upload”, located in the root of your solution. &lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_8.sflb.ashx"&gt;&lt;img width="243" height="244" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image_thumb_3.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;In the top navigation, go to “Ecommerce” and select “Products” and you should now see all of your products imported.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;I have created a video showing you how to install the Product Upload package using NuGet, add a widget using Sitefinity Thunder and upload your .csv file.&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.screencast.com/t/UbNBFOXxg6"&gt;Sitefinity Ecommerce Product Import&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.screencast.com/t/UbNBFOXxg6"&gt;&lt;img width="449" height="252" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-image19_1.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Credits and thank you to &lt;a target="_blank" href="http://www.bluegenegeek.com/"&gt;Venkata Koppaka&lt;/a&gt; for programming this! &lt;img src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Sitefinity-Ecommerce--Importing-Products_12C00-wlEmoticon-smile_2.sflb.ashx" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-style: none;" /&gt;&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/stevemiller/posts/12-05-10/sitefinity_ecommerce_ndash_importing_products_into_sitefinity_ecommerce.aspx</link>
      <author>Steve Miller</author>
      <comments>http://www.sitefinity.com/blogs/stevemiller/posts/12-05-10/sitefinity_ecommerce_ndash_importing_products_into_sitefinity_ecommerce.aspx</comments>
      <guid isPermaLink="false">683b1237-bcae-410d-bd25-55b22c7e45f1</guid>
      <pubDate>Thu, 10 May 2012 23:53:38 GMT</pubDate>
    </item>
    <item>
      <title>Digesting 3-weeks of Sitefinity news after circling the globe</title>
      <description>&lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-740a1a2a4fb9_DB5A-576200_10150825902241694_577356693_11584597_1055048120_n_2.sflb.ashx"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Gabe Sumner at the Sitefinity &amp;amp; Beyond Conference" border="0" alt="Gabe Sumner at the Sitefinity &amp;amp; Beyond Conference" align="right" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-740a1a2a4fb9_DB5A-576200_10150825902241694_577356693_11584597_1055048120_n_thumb.sflb.ashx" width="207" height="197" /&gt;&lt;/a&gt;During the past 3 weeks I’ve been travelling around the world attending conferences and my email is completely out of control.&amp;#160; I’ve been trying to catch-up on Sitefinity news and&amp;#160; decided to share my summary with the community.&lt;/p&gt;  &lt;h2&gt;Major events&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Apr. 17th - &lt;a href="http://www.sitefinity.com/blogs/fani-kondova/posts/12-04-24/reflections_from_sitefinity_beyond_london.aspx"&gt;First ever Sitefinity conference&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Apr. 19th – &lt;a href="http://www.sitefinity.com/blogs/joshmorales/posts/12-04-19/sitefinity_thunder_webinar_notes.aspx"&gt;Sitefinity Thunder webinar&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Apr. 19th – &lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity/general-discussions/sitefinity-5-0-sp1-released.aspx"&gt;Sitefinity 5.1 SP1 released&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Apr. 24th – &lt;a href="http://www.sitefinity.com/blogs/petya-popova-chilikova/posts/12-04-27/sitefinity_s_participation_at_internet_world_a_marketing_perspective.aspx"&gt;Sitefinity at Internet World in London&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Apr. 30th – &lt;a href="http://www.sitefinity.com/news-and-events/events/internet-show-2012.aspx"&gt;Sitefinity at Internet Show in Melbourne&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;May 2nd – &lt;a href="http://www.sitefinity.com/blogs/joshmorales/posts/12-05-02/what_rsquo_s_new_in_sitefinity_thunder_1_0_8.aspx"&gt;Sitefinity Thunder 1.0.8 release&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;May 8th – &lt;a href="https://plus.google.com/107790547610003198058/posts/aiGeeud6rQR"&gt;Sitefinity at CMS Expo in Chicago&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Useful Links&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;6 new videos on our &lt;a href="http://www.youtube.com/user/TelerikSitefinityCMS?feature=watch"&gt;YouTube channel&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;3 new ecommerce blogs on &lt;a href="http://www.sitefinity.com/blogs/stevemiller/posts.aspx"&gt;Steve Miller’s blog&lt;/a&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;6 new videos in the &lt;a href="http://www.selarom.net/sitefinityguru"&gt;Sitefinity Guru series&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;∞ new documentation resources – &lt;a href="http://www.sitefinity.com/blogs/slavoingilizov/posts/12-04-18/what_rsquo_s_new_in_sitefinity_documentation_for_the_past_two_weeks.aspx"&gt;list by Slavo&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Personal notes&lt;/h2&gt;  &lt;p&gt;During my travels I had a wonderful opportunity to talk to lots of customers, partners and future customers.&amp;#160; These conversations are incredibly valuable and help me gain perspective on the real-world opportunities &amp;amp; challenges that exist today.&amp;#160; We’re having lots of internal conversations based on the feedback we received.&amp;#160; These conversations will eventually result in improvements to the product.&amp;#160; Thanks to everyone who chatted with us.&amp;#160; I’m looking forward to more conversations at future conferences.&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/gabesumner/posts/12-05-07/digesting_3-weeks_of_sitefinity_news_after_circling_the_globe.aspx</link>
      <author>Gabe Sumner</author>
      <comments>http://www.sitefinity.com/blogs/gabesumner/posts/12-05-07/digesting_3-weeks_of_sitefinity_news_after_circling_the_globe.aspx</comments>
      <guid isPermaLink="false">aeea0cab-60e9-4704-8b1d-f505319a7082</guid>
      <pubDate>Mon, 07 May 2012 21:27:46 GMT</pubDate>
    </item>
    <item>
      <title>What&amp;rsquo;s New in Sitefinity Thunder 1.0.8</title>
      <description>&lt;p&gt;As mentioned in Last week's &lt;a href="http://www.sitefinity.com/blogs/joshmorales/posts/12-04-19/sitefinity_thunder_webinar_notes.aspx"&gt;Sitefinity Thunder webinar&lt;/a&gt;, the free extension is on a very aggressive release schedule, with a new release coming approximately every two weeks.&lt;/p&gt; &lt;p&gt;Last week marked the latest &lt;a href="http://visualstudiogallery.msdn.microsoft.com/381fde64-9898-4a5d-ae20-861e119bbf92"&gt;Thunder&lt;/a&gt; release, which coincided with the &lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity/general-discussions/sitefinity-5-0-sp1-released.aspx"&gt;Sitefinity 5.0 Service Pack 1&lt;/a&gt;. If you haven't already downloaded the service pack, be sure to look for it (and the &lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity/sdk/sitefinity-sdk-5-0-sp1-released.aspx"&gt;updated SDK&lt;/a&gt;) in your Sitefinity account.&lt;/p&gt; &lt;h2&gt;VB Support&lt;/h2&gt; &lt;p&gt;Thunder 1.0.8.0 now includes VB support for item templates such as Widgets and Control Designers. Simply select your language when adding a template:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-VB-Support_2.sflb.ashx" target="_blank"&gt;&lt;img width="244" height="136" style="background-image: none;   display: inline;border: 0px solid;" title="Sitefinity-Thunder-VB-Support" alt="Sitefinity-Thunder-VB-Support" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-VB-Support_thumb.sflb.ashx" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Create, Rename, Duplicate Widget Templates&lt;/h2&gt; &lt;p&gt;Another great new feature is the ability to easily add new templates for your widgets by duplicating existing ones, so that you have a solid starting point for a new template. &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Duplicate-Widget-Template_2.sflb.ashx" target="_blank"&gt;&lt;img width="228" height="244" style="background-image: none;   display: inline;border: 0px solid;" title="Sitefinity-Thunder-Duplicate-Widget-Template" alt="Sitefinity-Thunder-Duplicate-Widget-Template" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Duplicate-Widget-Template_thumb.sflb.ashx" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This is especially helpful if you want to render different layouts or designs for different content from the same module, such as separating news categories.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Multiple-Templates_2.sflb.ashx" target="_blank"&gt;&lt;img width="160" height="244" style="background-image: none;   display: inline;border: 0px solid;" title="Sitefinity-Thunder-Multiple-Templates" alt="Sitefinity-Thunder-Multiple-Templates" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Multiple-Templates_thumb.sflb.ashx" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You also have the ability to rename, duplicate, or delete unused or unwanted templates right from the visual studio interface&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Delete-Widget-Templates_2.sflb.ashx" target="_blank"&gt;&lt;img width="160" height="244" style="background-image: none;   display: inline;border: 0px solid;" title="Sitefinity-Thunder-Delete-Widget-Templates" alt="Sitefinity-Thunder-Delete-Widget-Templates" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Delete-Widget-Templates_thumb.sflb.ashx" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Update Today&lt;/h2&gt; &lt;p&gt;Several internal performance improvements were made including a known issue that caused Thunder connections to hang. &lt;/p&gt; &lt;p&gt;So for better performance, and of course new features, be sure to always keep your Thunder extension updated!&lt;/p&gt; &lt;p&gt;Remember that you need to also update the Sitefinity Thunder Module installed in your Sitefinity website. This is easily done using the Thunder menu in Visual Studio:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Update-Module_2.sflb.ashx"&gt;&lt;img width="244" height="128" style="background-image: none;   display: inline;border: 0px solid;" title="Sitefinity-Thunder-Update-Module" alt="Sitefinity-Thunder-Update-Module" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Update-Module_thumb.sflb.ashx" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Or you can use the Download button in the Connection Explorer to download a zip file for simple deployment to a remote server.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Update-Module-External-Website_2.sflb.ashx" target="_blank"&gt;&lt;img width="244" height="164" style="background-image: none;   display: inline;border: 0px solid;" title="Sitefinity-Thunder-Update-Module-External-Website" alt="Sitefinity-Thunder-Update-Module-External-Website" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-efaa390db43d_C9E5-Sitefinity-Thunder-Update-Module-External-Website_thumb.sflb.ashx" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;As always, be sure to share your feedback and suggestions in the dedicated &lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity-4-x/thunder.aspx" target="_blank"&gt;Sitefinity Thunder discussion forum&lt;/a&gt;, as your feedback is especially important to us.&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/joshmorales/posts/12-05-02/what_rsquo_s_new_in_sitefinity_thunder_1_0_8.aspx</link>
      <author>Josh Morales</author>
      <comments>http://www.sitefinity.com/blogs/joshmorales/posts/12-05-02/what_rsquo_s_new_in_sitefinity_thunder_1_0_8.aspx</comments>
      <guid isPermaLink="false">f6c6ef19-8164-4d87-b3c5-0cbe1e796f2b</guid>
      <pubDate>Wed, 02 May 2012 16:48:00 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity's Participation at Internet World: a Marketing Perspective</title>
      <description>&lt;p&gt;It’s been great three days for the Sitefinity team at Internet World 2012 - Europe’s premier event for digital marketing and business. After a hectic preparation for the conference, we were very happy to see a great visitor interest in the Sitefinity booth and demos, and a very high attendance of Gabe Sumner’s seminar sessions. &lt;/p&gt; &lt;h4&gt;Sitefinity’s booth&lt;/h4&gt; &lt;p&gt;Sitefinity was a sponsor of the Content management theatre and our stand was located at the very heart of the show:&lt;/p&gt; &lt;table border="0" cellspacing="20" cellpadding="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="margin-right: 20px;"&gt;&lt;img alt="" width="325" height="241" src="http://www.sitefinity.com/Libraries/Events/IMGP5441small.sflb.ashx" /&gt; &lt;/td&gt; &lt;td style="width: 20px;"&gt;&lt;/td&gt; &lt;td&gt;&lt;img alt="" width="325" height="241" src="/Libraries/Events/IMGP5470small.sflb.ashx" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;h4&gt;Gabe Sumner’s presentations&lt;/h4&gt; &lt;p&gt;On day two of the event Sitefinity’s Chief Evangelist hosted two speaking sessions at the eCommerce and Content management theatres. Both presentations attracted an immense interest and covered some of the newest trends and topics in the ecommerce and web content management world:&lt;/p&gt; &lt;ul class="bullet-list"&gt; &lt;li&gt;Heaven &amp;amp; Hell Examples of Ecommerce Usability &lt;/li&gt; &lt;li&gt;Using Responsive Design to Create a New Generation of Mobile-friendly Websites &lt;/li&gt; &lt;/ul&gt; &lt;table border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;img alt="" width="325" height="433" src="http://www.sitefinity.com/Libraries/Events/GabePresSmall.sflb.ashx" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;h4&gt;And, of course, there were prizes!&lt;/h4&gt; &lt;p&gt;Visitors to our booth had the chance to see a demonstration of Sitefinity’s revolutionary Mobile Web feature and participate in a draw for an iPad. Judith Storr from Search Flow was the lucky winner, drawn by Gabe Sumner right before the official closing of the event:&lt;/p&gt; &lt;table border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style="width: 325px; height: 433px; margin-right: 20px;"&gt; &lt;img alt="" width="325" height="433" src="http://www.sitefinity.com/Libraries/Events/IMGP5513small.sflb.ashx" /&gt;&lt;/td&gt; &lt;td style="width: 20px;"&gt;&lt;/td&gt; &lt;td&gt;&lt;img alt="" width="325" height="433" src="http://www.sitefinity.com/Libraries/Events/IMGP5516small.sflb.ashx" /&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;To see more conference photos, visit the &lt;a href="http://www.facebook.com/#!/media/set/?set=a.10150730053904475.424323.264484374474&amp;amp;type=3"&gt;Sitefinity Facebook page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;And as Internet World 2012 is only shortly behind us, the Sitefinity team is already preparing for participation at a number of forthcoming events in Australia and the USA. Check out the &lt;a href="/news-and-events/events.aspx"&gt;event schedule&lt;/a&gt;, and don’t miss the chance to visit us!&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/petya-popova-chilikova/posts/12-04-27/sitefinity_s_participation_at_internet_world_a_marketing_perspective.aspx</link>
      <author>Petya Popova-Chilikova</author>
      <comments>http://www.sitefinity.com/blogs/petya-popova-chilikova/posts/12-04-27/sitefinity_s_participation_at_internet_world_a_marketing_perspective.aspx</comments>
      <guid isPermaLink="false">2ec5a9e4-b04d-48e8-ba81-5bb0a72ede1f</guid>
      <pubDate>Fri, 27 Apr 2012 04:01:00 GMT</pubDate>
    </item>
    <item>
      <title>Reflections from Sitefinity &amp; Beyond, London </title>
      <description>&lt;p&gt;On April 17th the &lt;a target="_blank" href="http://beyond.sitefinity.com/"&gt;Sitefinity &amp;amp; Beyond conference in London&lt;/a&gt; brought together Sitefinity customers and partners from the UK, Norway, Slovenia, Italy, the Netherlands, Denmark, France, Switzerland and Finland. With 100+ attendees, Sitefinity community members and partners, Sitefinity &amp;amp; Beyond London 2012 offered many networking opportunities and fun.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Venue&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The Sitefinity &amp;amp; Beyond conference took place at the British Museum in London.  Here are some pictures from this remarkable museum:&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlog/The_British_Museum.sflb.ashx?width=650&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Sitefinity &amp;amp; Beyond Venue" /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Presentations&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Gabe Sumner, Ivan Osmak, Hristo Borisov, and Sitefinity Partners: Boris Motusic from United Experts and Matti Kiviluoto from Avaus delivered sessions focusing on the innovative Sitefinity features and best practices. The overall theme in many of the presentations was feature highlights of Sitefinity 5 – including Mobile Web, Multi-channel campaigns, Productivity heights with Sitefinity Thunder and Upcoming features with Sitefinity 5.1. During the practical sessions – “Sitefinity as an enterprise level CMS” and “Beyond development – be a hero!” Sitefinity Partners Avaus and United Experts presented key takeaways from real-life projects.  &lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlog/The_Keynote.sflb.ashx?width=300&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Sitefinity &amp;amp; Beyond Opening Keynote" /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Sitefinity Clinic&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Conference attendees had the opportunity to sign up for a one-on-one technical discussion with members of the Sitefinity team. The Sitefinity Clinic was running in parallel to the conference sessions and it included 30-minute discussions about specific projects and best practice recommendations.&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlog/Sitefinity_Clinic.sflb.ashx?width=300&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Sitefinity &amp;amp; Beyond Clinic" /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Sitefinity &amp;amp; Beyond offered many networking opportunities during coffee breaks, lunch, and during the gala cocktail. We really enjoyed meeting with our customers and partners:&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.sitefinity.com/Blogs_Libraries/MetaBlog/Reception.sflb.ashx?width=650&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Sitefinity &amp;amp; Beyond Reception" /&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Reflections from Customers and Partners&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Sitefinity partners &lt;a target="_blank" href="http://www.quba.co.uk/blog/view/blog/2012/04/18/sitefinity-beyond---our-day-out-in-london"&gt;Quba&lt;/a&gt; and &lt;a target="_blank" href="http://www.lightspeeditsolutions.co.uk/Blog/GaryFenn/12-04-19/Reflecting_on_Sitefinity_Beyond_2012.aspx"&gt;Light Speed Solutions&lt;/a&gt; published detailed reviews of the conference. For those of you who missed the event, you can review the &lt;a target="_blank" href="http://beyond.sitefinity.com/london-2012"&gt;picture gallery at the event website&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Thanks to everyone who participated! We are looking forward to meeting you at the next editions of Sitefinity &amp;amp; Beyond in the US this Fall. Updates will be available on the &lt;a target="_blank" href="http://beyond.sitefinity.com/"&gt;Sitefinity &amp;amp; Beyond website&lt;/a&gt; shortly.&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/fani-kondova/posts/12-04-24/reflections_from_sitefinity_beyond_london.aspx</link>
      <author>Fani Kondova</author>
      <comments>http://www.sitefinity.com/blogs/fani-kondova/posts/12-04-24/reflections_from_sitefinity_beyond_london.aspx</comments>
      <guid isPermaLink="false">0eeb3bf0-f707-41d5-ae69-85ce000a0203</guid>
      <pubDate>Tue, 24 Apr 2012 13:41:00 GMT</pubDate>
    </item>
    <item>
      <title>Using conditional templates in your custom widgets</title>
      <description>&lt;p&gt;As Sitefinity gets bigger as a software project, many small features that get implemented may stay unnoticed. While trying to solve problems, developers often provide solutions that may be used elsewhere, and not just the specific feature they are implementing. This is how &lt;a href="http://en.wikipedia.org/wiki/Software_design_pattern" target="_blank"&gt;design patterns&lt;/a&gt; are born. We do have a lot in the Sitefintiy codebase that may not be very well known and used.&lt;/p&gt; &lt;p&gt;One such not-so-famous feature is called Conditional Templates and this blog post is an attempt to explain when and how you can use it in your custom development.&lt;/p&gt; &lt;h2&gt;The problem&lt;/h2&gt; &lt;p&gt;When implementing functionality as a separate widget, we often have a requirement of providing different user interface, depending on how the widget is used. This is very similar to having multiple widget templates. The different requirement is that you should be able to switch between them dynamically. Let me give a few examples.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;A weather widget, which may display its user interface in several modes: current temperature, the current weather as an image, the current weather as text      &lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/WindowsLiveWriter-Usingconditionaltemplatesinyourcustomwid_F9DF-weather_2.sflb.ashx"&gt;&lt;img height="117" width="540" style="border-width: 0px; display: inline; border-style: solid;" title="weather" alt="weather" src="http://www.sitefinity.com/Libraries/MetaBlogLib/WindowsLiveWriter-Usingconditionaltemplatesinyourcustomwid_F9DF-weather_thumb.sflb.ashx" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;A widget that displays a different chart: bar chart or pie chart      &lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/WindowsLiveWriter-Usingconditionaltemplatesinyourcustomwid_F9DF-charts_2.sflb.ashx"&gt;&lt;img height="192" width="372" style="border-width: 0px; display: inline; border-style: solid;" title="charts" alt="charts" src="http://www.sitefinity.com/Libraries/MetaBlogLib/WindowsLiveWriter-Usingconditionaltemplatesinyourcustomwid_F9DF-charts_thumb.sflb.ashx" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;li&gt;A widget that can display a value or be used to edit that value      &lt;br /&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/WindowsLiveWriter-Usingconditionaltemplatesinyourcustomwid_F9DF-editing_2.sflb.ashx"&gt;&lt;img height="105" width="430" style="border-width: 0px; display: inline; border-style: solid;" title="editing" alt="editing" src="http://www.sitefinity.com/Libraries/MetaBlogLib/WindowsLiveWriter-Usingconditionaltemplatesinyourcustomwid_F9DF-editing_thumb.sflb.ashx" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;All these cases can be generalized to something, which we will call modes. A mode is just one way of displaying the user interface of a widget.&lt;/p&gt; &lt;h2&gt;The solution&lt;/h2&gt; &lt;p&gt;I assure you we’ve had many cases like the above in Sitefinity. The solution that was implemented is called conditional templates. They give you the ability to work with multiple widget templates, but let you change them at runtime, depending on a property in the widget. They are not “real” widget templates, but rather different markup from the same template. &lt;/p&gt; &lt;p&gt;The reason this is not very well known is that out of the box it is only supported in the so called field controls, and those work only in the backend. Sitefinity custom development usually leans towards the frontend of a site, not extending Sitefinity’s backend itself. That’s quite normal, but it’s also very easy to use conditional templates for any kind of custom widget. Here’s how.&lt;/p&gt; &lt;h3&gt;Create a custom widget and inherit from SimpleView&lt;/h3&gt; &lt;p&gt;Let’s take the weather widget example mentioned above.&lt;/p&gt; &lt;p&gt;We recommend that you inherit from SimpleView when implementing custom widgets to be used in Sitefinity. There are a couple of methods and properties you need to override. Those include LayoutTemplateName and LayoutTemplatePath, and also InitializeControls. Instead of doing this manually, alternatively you can use Sitefinity Thunder and it will generate a widget with those overridden by default. For more info on Thunder, head over to &lt;a href="http://www.sitefinity.com/documentation/documentationarticles/sitefinity-thunder" target="_blank"&gt;the documentation&lt;/a&gt;. The final code for the newly created widget is the following:&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2429592.js?file=LocalWeather.cs"&gt;&lt;/script&gt; &lt;/p&gt; &lt;h3&gt;Implement the property used as a condition&lt;/h3&gt; &lt;p&gt;Instead of using strings, I’ll also implement an enumeration with all the modes our widget supports.&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2429599.js?file=WeatherDisplayMode.cs"&gt;&lt;/script&gt; &lt;/p&gt; &lt;p&gt;Once we have the enumeration, we add a property, whose value will represent the condition in our conditional templates. It will use the enum created above as a type.&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2429603.js?file=LocalWeather.cs"&gt;&lt;/script&gt; &lt;/p&gt; &lt;h3&gt;Include a ConditionalTemplateContainer in the widget template&lt;/h3&gt; &lt;p&gt;Now that we have a property showing the mode, we need to include the markup for each mode in the widget template. This is done by placing a conditional template container inside the template. You also need to register the required namespace Telerik.Sitefinity.Web.UI. Once we have the container on the page, adding a template for each mode is very similar to adding item templates in data-bound controls like the repeater. Here is the final markup&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2429607.js?file=LocalWeather.ascx"&gt;&lt;/script&gt; &lt;/p&gt; &lt;p&gt;The three important attributes to remember for each conditional template are Left, Operator and Right. Those represent the condition to which the template corresponds. The case above could be translated in plain English as “If Mode is equal to Temperature” (then load the first template) or "If Mode is equal to Text” (load the second template). By setting the value of the Mode property, we can control which markup gets rendered by our widget. This approach is more readable, easier to debug and more structured than manually showing and hiding controls through code or CSS.&lt;/p&gt; &lt;h3&gt;Override the CreateContainer method&lt;/h3&gt; &lt;p&gt;Up until this point we have implemented our conditional templates. The only thing left to do is hook up the logic to make use of them. As I said above, this has already been done for field controls in Sitefinity. In order to do it in your widgets, you need to override the CreateContainer method. Inside its implementation, you should only call Evaluate() on the conditional template container. That call takes care of everything to initialize the template depending on the condition.&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2429614.js?file=LocalWeather.cs"&gt;&lt;/script&gt; &lt;/p&gt; &lt;p&gt;Once you are able to show conditional templates, you can put any markup inside them. The example displays static data, but you can easily use the Sitefinity API to bind to data inside the CMS or implement your own business logic. Then you can switch between the different markup by just setting the value of the Mode property.&lt;/p&gt; &lt;p&gt;You can download the source code of the example shown above &lt;a href="http://www.sitefinity.com/Blogs_Libraries/Slavo_s_Files/LocalWeather.sflb.ashx?download=true"&gt;from here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I hope this feature makes you life easier when you encounter a similar need in your future Sitefinity development projects.&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/slavoingilizov/posts/12-04-20/using_conditional_templates_in_your_custom_widgets.aspx</link>
      <author>Slavo Ingilizov</author>
      <comments>http://www.sitefinity.com/blogs/slavoingilizov/posts/12-04-20/using_conditional_templates_in_your_custom_widgets.aspx</comments>
      <guid isPermaLink="false">e75102d7-9183-40bf-a743-0b74857fab18</guid>
      <pubDate>Fri, 20 Apr 2012 22:39:00 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity Ecommerce&amp;ndash;SEO friendly product detail URL</title>
      <description>&lt;p&gt;By default, Sitefinity Ecommerce ships with a date formatted URL for the Product Detail page, which comes very handy if you just want to let your users know when the product was published. But as with any other part of Sitefinity, this URL can be highly customized to meet your own needs and make even more Pretty URL or PURL in general.&amp;nbsp; For Ecommerce, having the date in the URL does not usually create an SEO friendly URL. &lt;/p&gt; &lt;p&gt;You can change the default route of products in 2 ways&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. Using the urlFormat in the backend of Sitefinity&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. Extending OpenAccessCatalogDataProvider in your application&lt;/p&gt; &lt;p&gt;Below is the default URL format of products in Ecommerce&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Changing-product-detail-URL-in-Sitefinit_C8E0-image_4.sflb.ashx"&gt;&lt;img width="508" height="54" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Changing-product-detail-URL-in-Sitefinit_C8E0-image_thumb_1.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Using urlFormat in the backend of Sitefinity –&lt;/h3&gt; &lt;p&gt;This option will let you extend the details by excluding the date in the URL. To attain this URL format you would need to navigate to Backend-&amp;gt; Administration-&amp;gt; Settings-&amp;gt; Advanced-&amp;gt; Catalog-&amp;gt;Providers-&amp;gt; OpenAccessProvider-&amp;gt; Parameters and then create a new parameter with the name urlFormat and value /[UrlName], this will change product detail URL by excluding the date. Please also note that new products added to the system will get new URL format by default.&amp;nbsp; However for products which already exist,you will have to republish the existing products to get the new URL format. &lt;/p&gt; &lt;p&gt;Below is a screenshot on how the new URL would look like -&lt;/p&gt; &lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Changing-product-detail-URL-in-Sitefinit_C8E0-image_2.sflb.ashx"&gt;&lt;img width="507" height="77" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Changing-product-detail-URL-in-Sitefinit_C8E0-image_thumb.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt; &lt;h3&gt;Extending OpenAccessCatalogDataProvider -&lt;/h3&gt; &lt;p&gt;This option will let you extend the route of product detail in any way you want. You have complete control over the route that leads to the detail page. &lt;/p&gt; &lt;p&gt;Here is how you would do it –&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You will need to change the ProviderType to a custom class in your own application.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Add the code to extend the route. (see example below)&lt;/p&gt; &lt;p&gt; &lt;script src="https://gist.github.com/2409172.js"&gt; &lt;/script&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Changing-product-detail-URL-in-Sitefinit_C8E0-image_8.sflb.ashx"&gt;&lt;img width="515" height="85" src="http://www.sitefinity.com/Libraries/MetaBlogLib/Windows-Live-Writer-Changing-product-detail-URL-in-Sitefinit_C8E0-image_thumb_3.sflb.ashx" alt="image" title="image" style="background-image: none; border-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-style: solid;" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Above is an image on how the changed URL format would look like, please note that you can get the "DetailRouteKey" in any way you want and feed any string into the URL at this moment.&lt;/p&gt; &lt;p&gt;Also, as above note that new products added to the system will get the new URL format by default. However for products which already exist,you will have to republish the existing products to get the new URL format. &lt;/p&gt; &lt;p&gt;I hope this post was helpful.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
Credit and thanks to Venkata Koppaka!&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/stevemiller/posts/12-04-19/sitefinity_ecommerce_ndash_seo_friendly_product_detail_url.aspx</link>
      <author>Steve Miller</author>
      <comments>http://www.sitefinity.com/blogs/stevemiller/posts/12-04-19/sitefinity_ecommerce_ndash_seo_friendly_product_detail_url.aspx</comments>
      <guid isPermaLink="false">7d4dc911-acf8-49e9-b64a-611096d65e89</guid>
      <pubDate>Fri, 20 Apr 2012 03:44:12 GMT</pubDate>
    </item>
    <item>
      <title>Sitefinity Thunder Webinar Notes</title>
      <description>&lt;p&gt;I would like to offer my thanks to everyone who attended today's Webinar on &lt;a href="http://www.sitefinity.com/sitefinity-thunder"&gt;Sitefinity Thunder&lt;/a&gt;. I am working on making a video available as soon as possible, so please watch this space for updates (I'll also post an update on &lt;a href="http://twitter.com/selaromdotnet"&gt;Twitter&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;I'm also compiling the Q&amp;amp;A, getting details on some questions, and will update this post soon.&lt;/p&gt; &lt;h2&gt;Webinar Video&lt;/h2&gt; &lt;iframe height="315" src="http://www.youtube.com/embed/fmxnuK8el5I" frameborder="0" width="560"&gt;&lt;/iframe&gt; &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=fmxnuK8el5I"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Thunder Download and Information&lt;/h2&gt; &lt;p&gt;Sitefinity Thunder is available on the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/381fde64-9898-4a5d-ae20-861e119bbf92"&gt;Visual Studio Gallery&lt;/a&gt;, from the Extensions manager of Visual Studio, as well as from your Sitefinity account.&lt;/p&gt; &lt;h2&gt;Q&amp;amp;A&lt;/h2&gt; &lt;p&gt;Below are some questions from the webinar attendees. If your question wasn't answered then or below, please feel free to post in the &lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity-4-x/thunder.aspx"&gt;Sitefinity Thunder Forum&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What about page selectors, htmlfields, and other advanced stuff in control designers?&lt;/strong&gt;&lt;br /&gt;
We plan to provide some default selectors and item templates for a selector (pages, images, etc.) that will be associated with properties that are Guids.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What about master pages for themes?&lt;/strong&gt;&lt;br /&gt;
Creating master pages with themes is in our immediate plans, watch the release notes for more information.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;What versions of Sitefinity can use Thunder?&lt;/strong&gt;&lt;br /&gt;
Thunder supports versions starting for 4.2 SP1.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Any plans to create a backdoor API, that doesn't need to be administrator or count against license limitations?&lt;/strong&gt;&lt;br /&gt;
Yes, this is planned for the next major release, Sitefitny 5.1.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Will remote installation/deployment become an option? or will download, extract and ftp upload remain the default?&lt;/strong&gt;&lt;br /&gt;
Remote Sitefinity installation is not in the plans for Thunder. For the moment the current Project Manager solution will stay.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;When Masterpages are supported in Thunder, will Sitefinitytheme projects be backwards compatible?&lt;/strong&gt;&lt;br /&gt;
Masterpages are in our plan for one of the next releases (in a month or so) and we'll keep backward compatibility.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Will the intellisense and VS Toolbox functionality work with custom module, custom content types? Meaning will our custom properties show up automatically as well?&lt;/strong&gt;&lt;br /&gt;
Thunder works with all the modules, including those created by the module builder.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Can you insert validation when creating the designer?&lt;/strong&gt; Yes, you can also use some of the fieldcontrols in Sitefinity which support various validation options.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Would you please clarify what criteria Thunder looks at when creating a designer for a previous control?&lt;/strong&gt;&lt;br /&gt;
Thunder looks for all the custom and user controls in the project.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Please allow Thunder to use downloaded templates from templatebuilder.sitefinity.com&lt;/strong&gt;&lt;br /&gt;
There is a small issue which will be fixed in the next release.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;With the inability to write to the disk on an Azure server, can Thunder connect to an Azure hosted website and connect or do we always have to use localhost and publish to Azure after?&lt;/strong&gt; Some of the features will work with remote instances like Azure, but it is always advisable to work locally, then publish.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Will there be support for VB?&lt;/strong&gt; This is in the plans for the next release.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How can I install and connect thunder to production environment?&lt;/strong&gt; You can go to the Connection Settings, select the connection where you would like to upgrade Thunder. Then click on the ""Download"" button and you will be able to save the files that need to be placed in your Sitefinity folders. Just put the .zip file in your Sitefinity folder and unzip it. You need to have some version of Thunder already installed for this to work.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Does Sitefinity Thunder support VS2011?&lt;/strong&gt;&lt;br /&gt;
Yes it is already supported.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;what about if my properties are not string or int, but a page or custom type?&lt;/strong&gt;&lt;br /&gt;
We plan to provide some predefined selectors that will work with Guids, similar to how it already works in Sitefinity.&lt;/p&gt; &lt;h3&gt;Additional Resources&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/documentation/gettingstarted/installing-and-using-sitefinity-thunder"&gt;Siteifnity Thunder Getting Started Guide&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/documentation/documentationarticles/sitefinity-thunder"&gt;Sitefinity Thunder Documentation&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity-4-x/thunder.aspx"&gt;Sitefinity Thunder Discussion Forums&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Be sure to share your experience, comments, and suggestions in the Forum!&lt;/p&gt;</description>
      <link>http://www.sitefinity.com/blogs/joshmorales/posts/12-04-19/sitefinity_thunder_webinar_notes.aspx</link>
      <author>Josh Morales</author>
      <comments>http://www.sitefinity.com/blogs/joshmorales/posts/12-04-19/sitefinity_thunder_webinar_notes.aspx</comments>
      <guid isPermaLink="false">8ea17b9e-f8e1-4ed8-99e2-e443e874e847</guid>
      <pubDate>Thu, 19 Apr 2012 16:45:00 GMT</pubDate>
    </item>
  </channel>
</rss>

