﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Community</title><link>http://docs.esellercloud.com</link><item><title>Ordering variant filter values</title><link>http://docs.esellercloud.com/design/2014/4/ordering-variant-filter-values.aspx</link><description><![CDATA[
<p>Filter values can now be ordered freely at&nbsp;http://www.esellercloud.com/admin/products/ProductFiltering.aspx</p>
<p><span style="font-size:1em; line-height:1.8em">- Simply click &quot;View details&quot; for one of the filters, and drag the filter values to the desired order.&nbsp;</span></p>
]]></description><pubDate>Tue, 11 Nov 2014 13:26:21 GMT</pubDate></item><item><title>Post backs on variant drop down</title><link>http://docs.esellercloud.com/design/2014/3/post-backs-on-variant-drop-down.aspx</link><description><![CDATA[
<p>Right now, eSeller Cloud is build around post backs. This means that whenever a control (eg. A drop down) is changed, the page is updated.<br>
In some instances, this additional roundtrip to the server is not the optimum solution. One of the instances where it is relevant to change this behavior is when using product variants. When a shop is using products that vary in size and color, the default
 behavior of the shop is to do a postback when the user changes one of the two. This default gives a lot of extra roundtrips and is not optimal from a UX perspective.<br>
<br>
Fortunately it is possible to override the default behavior of the shop by employing some simple jquery in the product detail definition.<br>
The below javascript snippet alters the default behavior of the shop so that it only does a postback when both variant selectors have been set. The snippet below assume that the variant selectors contain the text “Vælg Farve” (Pick color) and “Vælg Størrelse”
 (Pick size).<br>
Furthermore, the example does not take i18n into account so the snippet is meant as a starting point for your development.<br>
<br>
<br>
$( document ).ready(function() {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Identify relevant elements<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var colorpicker = $(&quot;body&quot;).find(&quot;option:contains('Vælg Farve')&quot;).parent();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var sizepicker = $(&quot;body&quot;).find(&quot;option:contains('Vælg Størrelse')&quot;).parent();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Remove existing onchange handlers<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorpicker.removeAttr(&quot;onchange&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizepicker.removeAttr(&quot;onchange&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colorpicker.change(function(event){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(colorpicker.val()!=0 &amp;&amp; sizepicker.val()!=0){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log(&quot;Fire postback event&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __doPostBack(colorpicker.attr(&quot;name&quot;),&quot;&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.stopImmediatePropagation();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.stopPropagation();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizepicker.change(function(event){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(colorpicker.val()!=0 &amp;&amp; sizepicker.val()!=0){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; console.log(&quot;Fire postback event&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __doPostBack(sizepicker.attr(&quot;name&quot;),&quot;&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.stopImmediatePropagation();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.stopPropagation();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br>
});</p>
]]></description><pubDate>Thu, 20 Mar 2014 12:56:37 GMT</pubDate></item><item><title>Disabled session cookies</title><link>http://docs.esellercloud.com/design/2013/12/disabled-session-cookies.aspx</link><description><![CDATA[
<p>I recently had an issue where a B2B shop owners customers were unable to login to the shop. Not all customers but some. We looked extensively at the problem and because we were unable to reproduce the problem, we even talked to a few of the customers. It
 turns out that the customers experiencing the problem was browsing from a Windows Server 2012. At even close inspection it turns out that in this particular Operating System, session cookies are disabled by default.<br>
<br>
The symptoms we saw was:</p>
<p>Submitting the customer login form did not result in log in and no errors was returned<br>
<br>
eSeller Cloud is highly dependent on Session cookies. For instance, session cookies are used to make sure that a particular user is shown his particular basket with his products. Session cookies are also used to check if a user is logged in. To fix the problem
 the affected users had to enable session cookies in their browsers and suddenly everything worked.</p>
<p>It is very uncommon for browser not to support session cookies and it is not a problem I expect to encounter again in the near future but it may be relevant to detect if a user has session cookies disabled and to let the user know that something is not quite
 right.<br>
<br>
An easy way to detect disabled cookies is to add a some javascript to the html header section of the shop.<br>
<br>
The html header section is found at “Home &gt;&gt; Marketing &gt;&gt; Html header”<br>
&nbsp;<br>
The following script will display a warning pop-up to users with disabled cookies. You may want to change the behavior or add some information about how to change cookie settings but the below javascript should offer a reasonable starting point:<br>
<br>
&lt;script type=&quot;text/javascript&quot;&gt;<br>
<br>
$( document ).ready(function() {<br>
<br>
if(!cookiesEnabled(event)){<br>
<br>
alert('Cookies er slået fra\nVi kan desværre ikke logge dig ind da din browser ikke understøtter cookies.\nShoppen anvender cookies til at holde styr på om du er logget ind.\n\nKontakt din lokale administrator eller it supporter for at få cookies slået til');<br>
<br>
}<br>
<br>
&nbsp;<br>
<br>
});<br>
<br>
function cookiesEnabled() {<br>
<br>
&nbsp;&nbsp;&nbsp; var cookieEnabled = navigator.cookieEnabled;<br>
<br>
&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp; // When cookieEnabled flag is present and false then cookies are disabled.<br>
<br>
&nbsp;&nbsp;&nbsp; if (cookieEnabled === false) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>
<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp; // try to set a test cookie if we can't see any cookies and we're using<br>
<br>
&nbsp;&nbsp;&nbsp; // either a browser that doesn't support navigator.cookieEnabled<br>
<br>
&nbsp;&nbsp;&nbsp; // or IE (which always returns true for navigator.cookieEnabled)<br>
<br>
&nbsp;&nbsp;&nbsp; if (!document.cookie &amp;&amp; (cookieEnabled === null || /*@cc_on!@*/false))<br>
<br>
&nbsp;&nbsp;&nbsp; {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.cookie = &quot;testcookie=1&quot;;<br>
<br>
&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!document.cookie) {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.cookie = &quot;testcookie=; expires=&quot; &#43; new Date(0).toUTCString();<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp; return true;<br>
<br>
}<br>
<br>
&lt;/script&gt;</p>
]]></description><pubDate>Thu, 19 Dec 2013 15:11:14 GMT</pubDate></item></channel></rss>