<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by Ruwen.Jin</title> <link>https://world.optimizely.com/blogs/RuwenJin/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>EPiServer.ImageMap goes open-source</title>            <link>https://world.optimizely.com/blogs/RuwenJin/Dates/2010/9/EPiServerImageMap-goes-open-source/</link>            <description>&lt;p&gt;EPiServer.ImageMap ( also known as XMAP ) is now open-source. You can find it at coderesort:&lt;/p&gt;  &lt;p&gt;&lt;a title=&quot;https://www.coderesort.com/p/epicode/wiki/ImageMap&quot; href=&quot;https://www.coderesort.com/p/epicode/wiki/ImageMap&quot;&gt;https://www.coderesort.com/p/epicode/wiki/ImageMap&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;What does ImageMap module do?&lt;/h2&gt;  &lt;p&gt;&lt;a href=&quot;/link/fe5947e3386c4a6fbfc5f9e0ef19c7a2.png&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px&quot; title=&quot;Screen shot 2010-09-29 at 4.48.37 PM&quot; border=&quot;0&quot; alt=&quot;Screen shot 2010-09-29 at 4.48.37 PM&quot; align=&quot;right&quot; src=&quot;/link/1c953929e37b4715933b23885c9f80fa.png&quot; width=&quot;302&quot; height=&quot;510&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Editors often have to create image maps, i.e. a single graphic image that allows visitors to access different web pages by clicking on different areas of the image. It used to require both time and knowledge to create these interactive areas, but now your web editors are able to draw them quick and easy directly in EPiServer with EPiServer.ImageMap. &lt;/p&gt;  &lt;h4&gt;User-friendly tool &lt;/h4&gt;  &lt;p&gt;Create good looking navigation and make the content on your website more attractive with interactive image maps. Several areas in one picture are easily linked to different websites using the EPiServer module EPiServer.ImageMap – a user-friendly tool that does not require knowledge in programming or image editing.    &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;Natural part of the interface&lt;/h4&gt;  &lt;p&gt;EPiServer.ImageMap is completely integrated in EPiServer and is accessed through an icon appearing in the toolbar on top of&amp;#160; the editor in edit mode. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Linking image areas&lt;/h4&gt;  &lt;p&gt;By selecting the EPiServer.ImageMap icon on top of&amp;#160; the editor, the highlighted image will be opened in the tool. This is where the editor can draw any number of&amp;#160; areas shaped as squares, circles or polygons. When this is done, each area is linked to an external website or to another EPiServer page on your website. There is also the option of&amp;#160; setting an ALT-text for every link.    &lt;br /&gt;&lt;/p&gt;  &lt;h4&gt;No training required&lt;/h4&gt;  &lt;p&gt;Basic EPiServer editor knowledge is enough to manage the tool, which means it does not require any training for new users. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Accessible to everyone&lt;/h4&gt;  &lt;p&gt;EPiServer.ImageMap comply with the demands of&amp;#160; The Swedish Institute of&amp;#160; Assistive Technology (SIAT) on how image maps ought to be designed in order to be accessible to visitors with disabilities.&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/RuwenJin/Dates/2010/9/EPiServerImageMap-goes-open-source/</guid>            <pubDate>Wed, 29 Sep 2010 16:55:23 GMT</pubDate>           <category>Blog post</category></item><item> <title>Gadget Multi. Move and delete multiple pages.</title>            <link>https://world.optimizely.com/blogs/RuwenJin/Dates/2009/11/Gadget-Multi-Move-and-delete-multiple-pages/</link>            <description>&lt;p&gt;This gadget will make it easier for users to move and delete multiple pages. It could be handy during structure change of a site.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is a video on how it works ( created by QuickTimeX on OSX :) .&lt;/p&gt;  &lt;div style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:3d089625-32dd-474a-bec8-0d7c5a4230a9&quot; class=&quot;wlWriterEditableSmartContent&quot;&gt;&lt;div id=&quot;efce15e3-ac4d-4819-b5cb-4dcefa804593&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=w3kKZVTd4Cg&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;/link/47aa3c6c941b4768afa8d031a3310da7.jpg&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;efce15e3-ac4d-4819-b5cb-4dcefa804593&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/w3kKZVTd4Cg&amp;amp;hl=en\&amp;quot;&gt;&amp;lt;\/param&gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/w3kKZVTd4Cg&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&gt;&amp;lt;\/embed&gt;&amp;lt;\/object&gt;&amp;lt;\/div&gt;&amp;quot;;&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&amp;#160;&amp;#160; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;TODO: Change ACL for multiple pages and change meta data for multiple pages. &lt;/p&gt;  &lt;p&gt;Download the source and installer : &lt;/p&gt;  &lt;p&gt;&lt;a title=&quot;http://labs.episerver.com/en/Projects-and-Downloads/GadgetMulti/&quot; href=&quot;http://labs.episerver.com/en/Projects-and-Downloads/GadgetMulti/&quot;&gt;http://labs.episerver.com/en/Projects-and-Downloads/GadgetMulti/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/RuwenJin/Dates/2009/11/Gadget-Multi-Move-and-delete-multiple-pages/</guid>            <pubDate>Mon, 30 Nov 2009 22:54:52 GMT</pubDate>           <category>Blog post</category></item><item> <title>Gadget Gadget Gadget</title>            <link>https://world.optimizely.com/blogs/RuwenJin/Dates/2009/10/Gadget-Gadget-Gadget/</link>            <description>&lt;h3&gt;Description&lt;/h3&gt;  &lt;p&gt;This gadget make it possible use &lt;a href=&quot;http://www.google.com/ig/directory?synd=open&quot; target=&quot;_blank&quot;&gt;Google Gadget&lt;/a&gt; as EPiServer Site Center Gadget. Currently there are more than 170000 Google Gadgets and we can now use them in EPiServer Site Center.&lt;/p&gt;  &lt;h4&gt;Features&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Select Google gadget by list or search. &lt;/li&gt;    &lt;li&gt;Edit setting for each gadget.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Screenshots&lt;/h3&gt;  &lt;p&gt;&lt;a href=&quot;/link/0bd098b572d1447ba0a80bd724882131.png&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;/link/e9a2917eb02d4c0d8b4bf7d59807d692.png&quot; width=&quot;244&quot; height=&quot;154&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;/link/1e70b3969f454dfcafa3a1efc60dacd0.png&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;/link/c7107936792e4f3bb1febea3be53587e.png&quot; width=&quot;244&quot; height=&quot;154&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;/link/df5a0220478446188b1ce8ae16d5e1ec.png&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;/link/ed58bd4897e846cfbaaa5e7d61c3142e.png&quot; width=&quot;244&quot; height=&quot;154&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;/link/46bd0f547dea4a9d931340886f2f857d.png&quot; target=&quot;_blank&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;/link/a0e3fc8f1c19418cbe0cf0ecad8cc58d.png&quot; width=&quot;244&quot; height=&quot;154&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Download&lt;/h3&gt;  &lt;p&gt;&lt;a title=&quot;http://labs.episerver.com/en/Projects-and-Downloads/GoogleGadgets/&quot; href=&quot;http://labs.episerver.com/en/Projects-and-Downloads/GoogleGadgets/&quot;&gt;http://labs.episerver.com/en/Projects-and-Downloads/GoogleGadgets/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Installation&lt;/h3&gt;  &lt;p&gt;This module currently don’t support in virtual directory. Url for your site should look like &lt;a href=&quot;http://someserver/&quot;&gt;http://someserver/&lt;/a&gt; not start as &lt;a href=&quot;http://someserver/andmore/&quot;&gt;http://someserver/andmore/&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Unzip the files. &lt;/li&gt;    &lt;li&gt;copy file to your site &lt;/li&gt;    &lt;li&gt;add following lines in web.config: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;modules autoDiscovery=&amp;quot;Minimal&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add name=&amp;quot;GoogleGadget&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;assemblies&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add assembly=&amp;quot;EPiServer.Research.Gadget.GoogleGadget&amp;quot;/&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/assemblies&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/add&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/modules&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;2 minutes MVC for EPiServer Site Center gadget crash course:&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Model :      &lt;ul&gt;       &lt;li&gt;Create a class that presents object will needed in your gadget. i.e in this gadget we need GadgetSetting . &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;View:      &lt;ul&gt;       &lt;li&gt;All UIs that you will need in your gadget. Most cases you will need one for view mode and one for edit mode. Views need have definition on which class ( Model ) they are using. In this gadget we have three views. One for view mode and other two for edit mode ( we created a wizard in edit mode ). A tips here for a beginner as me. If you want to see how a Model should be render in View. Just click “Add view” and choose “Create a partial view” and “Create a strongly-typed view” and choose your class and select right in “View Content”. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Controller:      &lt;ul&gt;       &lt;li&gt;Create Controller that contains functions that you need. Important thing is all methods that will present as UI ( view ) should return ActionResult. And return value should be View(“&amp;lt;your view name&amp;gt;”, &amp;lt;data for your view&amp;gt;). One special things with Gadget APi is that it will always send the gadget id to your method so your method should take a Guid as first parameter. When gadget doesn’t configured the gadget id will be Guid.Empty. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Tips for using Dynamic Data Store:&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Create data store: the parameter should be false in production and true during the development. ( since you will change your data structure and want remapping the data schema ).      &lt;ul&gt;       &lt;li&gt;DynamicDataStore&amp;lt;Models.GadgetSetting&amp;gt; store = DynamicDataStore&amp;lt;Models.GadgetSetting&amp;gt;.CreateStore(false); &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Get data:      &lt;ul&gt;       &lt;li&gt;Models.GadgetSetting setting = store.Find(&amp;quot;GadgetId&amp;quot;, gadgetId).FirstOrDefault&amp;lt;Models.GadgetSetting&amp;gt;(); &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Save data: It is a bit tricky if you didn’t have object that implements EPiServer.Data.Dynamic.IDynamicData . When you insert new data to datastore it is straight forward:      &lt;ul&gt;       &lt;li&gt;store.Save(setting2); &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;When you update an existing data you need first get it from datastore and change it and save it back:      &lt;ul&gt;       &lt;li&gt;Models.GadgetSetting setting2 = LoadSetting(setting.GadgetId); &lt;/li&gt;        &lt;li&gt;setting2.URL=”sfs”; &lt;/li&gt;        &lt;li&gt;store.Save(setting2); &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;About the client script&lt;/h3&gt;  &lt;p&gt;In some samples scripts use live method to bind event. In most cases it works but if you have multiple step in settings you should use bind instead. &lt;/p&gt;  &lt;p&gt;Function to get DOM objects in JavaScript is $(“object jquery expression”,gadgetContext.instance) which make sure selection is done inside the gadget not global.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Other resource to create gadget:&lt;/h3&gt;  &lt;p&gt;&lt;a title=&quot;http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-6-CTP2/Introduction-to-gadgets/&quot; href=&quot;http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-6-CTP2/Introduction-to-gadgets/&quot;&gt;http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-6-CTP2/Introduction-to-gadgets/&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;&lt;a title=&quot;http://tednyberg.com/post/How-to-create-gadgets-for-EPiServer-6-using-ASPNET-MVC.aspx&quot; href=&quot;http://tednyberg.com/post/How-to-create-gadgets-for-EPiServer-6-using-ASPNET-MVC.aspx&quot;&gt;http://tednyberg.com/post/How-to-create-gadgets-for-EPiServer-6-using-ASPNET-MVC.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title=&quot;http://world.episerver.com/Blogs/Johan-Sellberg/Dates/2009/10/Liveupdate-PollGadget/&quot; href=&quot;http://world.episerver.com/Blogs/Johan-Sellberg/Dates/2009/10/Liveupdate-PollGadget/&quot;&gt;http://world.episerver.com/Blogs/Johan-Sellberg/Dates/2009/10/Liveupdate-PollGadget/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Don’t forget join to contest&lt;/p&gt;  &lt;p&gt;&lt;a title=&quot;http://world.episerver.com/Download/EPiServer-CMS-6-Gadget-Contest-2009/&quot; href=&quot;http://world.episerver.com/Download/EPiServer-CMS-6-Gadget-Contest-2009/&quot;&gt;http://world.episerver.com/Download/EPiServer-CMS-6-Gadget-Contest-2009/&lt;/a&gt;&lt;/p&gt;</description>            <guid>https://world.optimizely.com/blogs/RuwenJin/Dates/2009/10/Gadget-Gadget-Gadget/</guid>            <pubDate>Sun, 25 Oct 2009 12:43:16 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>