diff --git a/app/views/blocks/profile_info.rhtml b/app/views/blocks/profile_info.rhtml index 2966df5..e7f5c80 100644 --- a/app/views/blocks/profile_info.rhtml +++ b/app/views/blocks/profile_info.rhtml @@ -23,15 +23,29 @@ <% end %> -<% if block.owner.person? %> -
- <%= - [ [ profile.city, 'locality' ], - [ profile.state, 'region' ], - [ profile.country, 'country-name' ] - ].map{ |s,c| s =~ /^\s*$/ ? nil : content_tag( 'span', s, :class => c ) }.compact.join ' - ' - %> -
+<% if profile.respond_to? :city %> +
+<%= + [ [ profile.city, 'locality' ], + [ profile.state, 'region' ], + [ profile.country, 'country-name' ] + ].map{ |s,c| s =~ /^\s*$/ ? nil : content_tag( 'span', s, :class => c ) }.compact.join ' - ' +%> +
+<% end %> + +<% if profile.class == Enterprise %> +
+<%= + profile.product_categories.map{ |c| c.size > 1 ? [c[0],c[1]] : nil }. + compact.uniq.map{ |c| + content_tag 'span', + content_tag( 'span', c.join(' → ') ), + :title => c[0] +' → '+ c[1], + :class => 'product_cat_' + (c[0]+'_'+c[1]).gsub( /\s/, '_' ) + }.join "\n" +%> +
<% end %>
diff --git a/app/views/search/_display_results.rhtml b/app/views/search/_display_results.rhtml index b403977..8b4e463 100644 --- a/app/views/search/_display_results.rhtml +++ b/app/views/search/_display_results.rhtml @@ -17,7 +17,7 @@ <%= @names[name] %> <% end %> - <%= link_to _('see more...'), params.merge(:action => 'index', :find_in => [ name ]), :class => 'see-more' %> + <%= link_to _('see all...'), params.merge(:action => 'index', :find_in => [ name ]), :class => 'see-more' %> <% end %> <% partial = partial_for_class results.first.class %>
diff --git a/app/views/search/_product_categories_menu.rhtml b/app/views/search/_product_categories_menu.rhtml index 3f7c0b5..8cba0d8 100644 --- a/app/views/search/_product_categories_menu.rhtml +++ b/app/views/search/_product_categories_menu.rhtml @@ -1,19 +1,94 @@ <% if product_categories_menu %> -
-
    - <% product_categories_menu.each do |cat, hits, childs| %> -
  • - <%= link_to (cat.name + "(#{hits})"), params.merge({:product_category => cat.id}) %> - <% if !childs.blank? %> -
      - <% childs.each do |child, child_hits| %> -
    • <%= link_to (child.name + "(#{child_hits})"), params.merge({:product_category => child.id}) %>
    • - <% end %> -
    + +
    +
      + <% if product_categories_menu.empty? %> +
    • <%= _('There is no sub-categories for %s.') % @product_category.name %>
    • + <% end %> + <% product_categories_menu.each do |cat, hits, childs| %> +
    • + <%= link_to( + cat.name + " " + content_tag('small', "(#{hits})"), + params.merge({:product_category => cat.id}) + ) %> + <% if !childs.blank? %> +
      +
        + <% childs.each do |child, child_hits| %> +
      • <%= link_to( + child.name + " " + content_tag('small', "(#{child_hits})"), + params.merge({:product_category => child.id}) + ) %>
      • + <% end %> +
      +
      + <% end %> +
    • <% end %> - - <% end %> -
    +
+ + + <% end %> diff --git a/app/views/search/products.rhtml b/app/views/search/products.rhtml index 6d6fdd9..d5237b8 100644 --- a/app/views/search/products.rhtml +++ b/app/views/search/products.rhtml @@ -18,6 +18,10 @@ <%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search"), :simple_search => true } %> +<% if @categories_menu %> +
+<% end %> + <%= render :partial => 'product_categories_menu', :object => @categories_menu %>
@@ -29,6 +33,10 @@
+<% if @categories_menu %> +
+<% end %> + <%= will_paginate @results[:products], :id => 'products-pagination' %>
diff --git a/public/designs/themes/ecosol/stylesheets/controller_search.css b/public/designs/themes/ecosol/stylesheets/controller_search.css index 3c18083..a3ac917 100644 --- a/public/designs/themes/ecosol/stylesheets/controller_search.css +++ b/public/designs/themes/ecosol/stylesheets/controller_search.css @@ -132,6 +132,32 @@ body.category4 .search-results-type-profile.common-profile-list-block li a { background: #F79494; } + +#product-categories-menu a { + text-decoration: none; +} +#product-categories-menu a:hover { + text-decoration: underline; +} + +#product-categories-menu .cat-parent { + background-color: #E0E8F0; + Xborder: 1px solid #729FCF; + -moz-border-radius: 10px; + padding: 3px 0px 3px 10px; +} + +#product-categories-menu .sub-opening, +#product-categories-menu .sub-closeing { +} +#product-categories-menu .sub-opened { + background-color: #CDE; + Xborder: 1px solid #3465A4; + X-moz-border-radius: 10px; +} + + + /* * * Category Page * * * * * * * * * * * * */ #view-category h3 { diff --git a/public/javascripts/prototype.js b/public/javascripts/prototype.js index ed6fcf0..546f9fe 100644 --- a/public/javascripts/prototype.js +++ b/public/javascripts/prototype.js @@ -1,5 +1,5 @@ -/* Prototype JavaScript framework, version 1.6.0.2 - * (c) 2005-2008 Sam Stephenson +/* Prototype JavaScript framework, version 1.6.0.1 + * (c) 2005-2007 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ @@ -7,7 +7,7 @@ *--------------------------------------------------------------------------*/ var Prototype = { - Version: '1.6.0.2', + Version: '1.6.0.1', Browser: { IE: !!(window.attachEvent && !window.opera), @@ -110,7 +110,7 @@ Object.extend(Object, { try { if (Object.isUndefined(object)) return 'undefined'; if (object === null) return 'null'; - return object.inspect ? object.inspect() : String(object); + return object.inspect ? object.inspect() : object.toString(); } catch (e) { if (e instanceof RangeError) return '...'; throw e; @@ -171,8 +171,7 @@ Object.extend(Object, { }, isArray: function(object) { - return object != null && typeof object == "object" && - 'splice' in object && 'join' in object; + return object && object.constructor === Array; }, isHash: function(object) { @@ -579,7 +578,7 @@ var Template = Class.create({ } return before + String.interpret(ctx); - }); + }.bind(this)); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; @@ -807,20 +806,20 @@ Object.extend(Enumerable, { function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); - var length = iterable.length || 0, results = new Array(length); + var length = iterable.length, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } if (Prototype.Browser.WebKit) { - $A = function(iterable) { + function $A(iterable) { if (!iterable) return []; if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && iterable.toArray) return iterable.toArray(); - var length = iterable.length || 0, results = new Array(length); + var length = iterable.length, results = new Array(length); while (length--) results[length] = iterable[length]; return results; - }; + } } Array.from = $A; @@ -1299,7 +1298,7 @@ Ajax.Request = Class.create(Ajax.Base, { var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' - || (this.options.evalJS && this.isSameOrigin() && contentType + || (this.options.evalJS && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } @@ -1317,18 +1316,9 @@ Ajax.Request = Class.create(Ajax.Base, { } }, - isSameOrigin: function() { - var m = this.url.match(/^\s*https?:\/\/[^\/]*/); - return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ - protocol: location.protocol, - domain: document.domain, - port: location.port ? ':' + location.port : '' - })); - }, - getHeader: function(name) { try { - return this.transport.getResponseHeader(name) || null; + return this.transport.getResponseHeader(name); } catch (e) { return null } }, @@ -1401,8 +1391,7 @@ Ajax.Response = Class.create({ if (!json) return null; json = decodeURIComponent(escape(json)); try { - return json.evalJSON(this.request.options.sanitizeJSON || - !this.request.isSameOrigin()); + return json.evalJSON(this.request.options.sanitizeJSON); } catch (e) { this.request.dispatchException(e); } @@ -1415,8 +1404,7 @@ Ajax.Response = Class.create({ this.responseText.blank()) return null; try { - return this.responseText.evalJSON(options.sanitizeJSON || - !this.request.isSameOrigin()); + return this.responseText.evalJSON(options.sanitizeJSON); } catch (e) { this.request.dispatchException(e); } @@ -1620,28 +1608,24 @@ Element.Methods = { Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; - var content, insert, tagName, childNodes; + var content, t, range; - for (var position in insertions) { + for (position in insertions) { content = insertions[position]; position = position.toLowerCase(); - insert = Element._insertionTranslations[position]; + t = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { - insert(element, content); + t.insert(element, content); continue; } content = Object.toHTML(content); - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - - if (position == 'top' || position == 'after') childNodes.reverse(); - childNodes.each(insert.curry(element)); + range = element.ownerDocument.createRange(); + t.initializeRange(element, range); + t.insert(element, range.createContextualFragment(content.stripScripts())); content.evalScripts.bind(content).defer(); } @@ -1686,7 +1670,7 @@ Element.Methods = { }, descendants: function(element) { - return $(element).select("*"); + return $(element).getElementsBySelector("*"); }, firstDescendant: function(element) { @@ -1725,31 +1709,32 @@ Element.Methods = { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); - return Object.isNumber(expression) ? ancestors[expression] : - Selector.findElement(ancestors, expression, index); + return expression ? Selector.findElement(ancestors, expression, index) : + ancestors[index || 0]; }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); - return Object.isNumber(expression) ? element.descendants()[expression] : - element.select(expression)[index || 0]; + var descendants = element.descendants(); + return expression ? Selector.findElement(descendants, expression, index) : + descendants[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); - return Object.isNumber(expression) ? previousSiblings[expression] : - Selector.findElement(previousSiblings, expression, index); + return expression ? Selector.findElement(previousSiblings, expression, index) : + previousSiblings[index || 0]; }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); - return Object.isNumber(expression) ? nextSiblings[expression] : - Selector.findElement(nextSiblings, expression, index); + return expression ? Selector.findElement(nextSiblings, expression, index) : + nextSiblings[index || 0]; }, select: function() { @@ -1875,8 +1860,7 @@ Element.Methods = { do { ancestor = ancestor.parentNode; } while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); } - if (nextAncestor && nextAncestor.sourceIndex) - return (e > a && e < nextAncestor.sourceIndex); + if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); } while (element = element.parentNode) @@ -2020,7 +2004,7 @@ Element.Methods = { if (element) { if (element.tagName == 'BODY') break; var p = Element.getStyle(element, 'position'); - if (p !== 'static') break; + if (p == 'relative' || p == 'absolute') break; } } while (element); return Element._returnOffset(valueL, valueT); @@ -2169,6 +2153,46 @@ Element._attributeTranslations = { } }; + +if (!document.createRange || Prototype.Browser.Opera) { + Element.Methods.insert = function(element, insertions) { + element = $(element); + + if (Object.isString(insertions) || Object.isNumber(insertions) || + Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) + insertions = { bottom: insertions }; + + var t = Element._insertionTranslations, content, position, pos, tagName; + + for (position in insertions) { + content = insertions[position]; + position = position.toLowerCase(); + pos = t[position]; + + if (content && content.toElement) content = content.toElement(); + if (Object.isElement(content)) { + pos.insert(element, content); + continue; + } + + content = Object.toHTML(content); + tagName = ((position == 'before' || position == 'after') + ? element.parentNode : element).tagName.toUpperCase(); + + if (t.tags[tagName]) { + var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); + if (position == 'top' || position == 'after') fragments.reverse(); + fragments.each(pos.insert.curry(element)); + } + else element.insertAdjacentHTML(pos.adjacency, content.stripScripts()); + + content.evalScripts.bind(content).defer(); + } + + return element; + }; +} + if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { @@ -2213,31 +2237,12 @@ if (Prototype.Browser.Opera) { } else if (Prototype.Browser.IE) { - // IE doesn't report offsets correctly for static elements, so we change them - // to "relative" to get the values, then change them back. - Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position !== 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - - $w('positionedOffset viewportOffset').each(function(method) { + $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { Element.Methods[method] = Element.Methods[method].wrap( function(proceed, element) { element = $(element); var position = element.getStyle('position'); - if (position !== 'static') return proceed(element); - // Trigger hasLayout on the offset parent so that IE6 reports - // accurate offsetTop and offsetLeft values for position: fixed. - var offsetParent = element.getOffsetParent(); - if (offsetParent && offsetParent.getStyle('position') === 'fixed') - offsetParent.setStyle({ zoom: 1 }); + if (position != 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); @@ -2319,10 +2324,7 @@ else if (Prototype.Browser.IE) { }; Element._attributeTranslations.write = { - names: Object.extend({ - cellpadding: 'cellPadding', - cellspacing: 'cellSpacing' - }, Element._attributeTranslations.read.names), + names: Object.clone(Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; @@ -2442,7 +2444,7 @@ if (Prototype.Browser.IE || Prototype.Browser.Opera) { }; } -if ('outerHTML' in document.createElement('div')) { +if (document.createElement('div').outerHTML) { Element.Methods.replace = function(element, content) { element = $(element); @@ -2480,25 +2482,45 @@ Element._returnOffset = function(l, t) { Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - if (t) { - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - } else div.innerHTML = html; + div.innerHTML = t[0] + html + t[1]; + t[2].times(function() { div = div.firstChild }); return $A(div.childNodes); }; Element._insertionTranslations = { - before: function(element, node) { - element.parentNode.insertBefore(node, element); + before: { + adjacency: 'beforeBegin', + insert: function(element, node) { + element.parentNode.insertBefore(node, element); + }, + initializeRange: function(element, range) { + range.setStartBefore(element); + } }, - top: function(element, node) { - element.insertBefore(node, element.firstChild); + top: { + adjacency: 'afterBegin', + insert: function(element, node) { + element.insertBefore(node, element.firstChild); + }, + initializeRange: function(element, range) { + range.selectNodeContents(element); + range.collapse(true); + } }, - bottom: function(element, node) { - element.appendChild(node); + bottom: { + adjacency: 'beforeEnd', + insert: function(element, node) { + element.appendChild(node); + } }, - after: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); + after: { + adjacency: 'afterEnd', + insert: function(element, node) { + element.parentNode.insertBefore(node, element.nextSibling); + }, + initializeRange: function(element, range) { + range.setStartAfter(element); + } }, tags: { TABLE: ['', '
', 1], @@ -2510,6 +2532,7 @@ Element._insertionTranslations = { }; (function() { + this.bottom.initializeRange = this.top.initializeRange; Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, @@ -2936,13 +2959,13 @@ Object.extend(Selector, { }, criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', + tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', + className: 'n = h.className(n, r, "#{1}", c); c = false;', + id: 'n = h.id(n, r, "#{1}", c); c = false;', + attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); + return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); @@ -2966,8 +2989,7 @@ Object.extend(Selector, { tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: -/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, + pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/, attrPresence: /^\[([\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }, @@ -2992,7 +3014,7 @@ Object.extend(Selector, { attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); - return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); + return Selector.operators[matches[2]](nodeValue, matches[3]); } }, @@ -3007,15 +3029,14 @@ Object.extend(Selector, { // marks an array of nodes for counting mark: function(nodes) { - var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++) - node._countedByPrototype = _true; + node._counted = true; return nodes; }, unmark: function(nodes) { for (var i = 0, node; node = nodes[i]; i++) - node._countedByPrototype = undefined; + node._counted = undefined; return nodes; }, @@ -3023,15 +3044,15 @@ Object.extend(Selector, { // "ofType" flag indicates whether we're indexing for nth-of-type // rather than nth-child index: function(parentNode, reverse, ofType) { - parentNode._countedByPrototype = Prototype.emptyFunction; + parentNode._counted = true; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; + if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; } } else { for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; + if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; } }, @@ -3040,8 +3061,8 @@ Object.extend(Selector, { if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._countedByPrototype) { - n._countedByPrototype = Prototype.emptyFunction; + if (!(n = nodes[i])._counted) { + n._counted = true; results.push(Element.extend(n)); } return Selector.handlers.unmark(results); @@ -3093,7 +3114,7 @@ Object.extend(Selector, { // TOKEN FUNCTIONS tagName: function(nodes, root, tagName, combinator) { - var uTagName = tagName.toUpperCase(); + tagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) { if (combinator) { @@ -3106,7 +3127,7 @@ Object.extend(Selector, { if (tagName == "*") return nodes; } for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() === uTagName) results.push(node); + if (node.tagName.toUpperCase() == tagName) results.push(node); return results; } else return root.getElementsByTagName(tagName); }, @@ -3153,18 +3174,16 @@ Object.extend(Selector, { return results; }, - attrPresence: function(nodes, root, attr, combinator) { + attrPresence: function(nodes, root, attr) { if (!nodes) nodes = root.getElementsByTagName("*"); - if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++) if (Element.hasAttribute(node, attr)) results.push(node); return results; }, - attr: function(nodes, root, attr, value, operator, combinator) { + attr: function(nodes, root, attr, value, operator) { if (!nodes) nodes = root.getElementsByTagName("*"); - if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); @@ -3243,7 +3262,7 @@ Object.extend(Selector, { var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._countedByPrototype) { + if (!node.parentNode._counted) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } @@ -3281,7 +3300,7 @@ Object.extend(Selector, { var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._countedByPrototype) results.push(node); + if (!node._counted) results.push(node); h.unmark(exclusions); return results; }, @@ -3315,19 +3334,11 @@ Object.extend(Selector, { '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } }, - split: function(expression) { - var expressions = []; - expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - return expressions; - }, - matchElements: function(elements, expression) { - var matches = $$(expression), h = Selector.handlers; + var matches = new Selector(expression).findElements(), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._countedByPrototype) results.push(element); + if (element._counted) results.push(element); h.unmark(matches); return results; }, @@ -3340,7 +3351,11 @@ Object.extend(Selector, { }, findChildElements: function(element, expressions) { - expressions = Selector.split(expressions.join(',')); + var exprs = expressions.join(','); + expressions = []; + exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { + expressions.push(m[1].strip()); + }); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); @@ -3351,22 +3366,13 @@ Object.extend(Selector, { }); if (Prototype.Browser.IE) { - Object.extend(Selector.handlers, { - // IE returns comment nodes on getElementsByTagName("*"). - // Filter them out. - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - if (node.tagName !== "!") a.push(node); - return a; - }, - - // IE improperly serializes _countedByPrototype in (inner|outer)HTML. - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node.removeAttribute('_countedByPrototype'); - return nodes; - } - }); + // IE returns comment nodes on getElementsByTagName("*"). + // Filter them out. + Selector.handlers.concat = function(a, b) { + for (var i = 0, node; node = b[i]; i++) + if (node.tagName !== "!") a.push(node); + return a; + }; } function $$() { @@ -3844,9 +3850,9 @@ Object.extend(Event, (function() { var cache = Event.cache; function getEventID(element) { - if (element._prototypeEventID) return element._prototypeEventID[0]; + if (element._eventID) return element._eventID; arguments.callee.id = arguments.callee.id || 1; - return element._prototypeEventID = [++arguments.callee.id]; + return element._eventID = ++arguments.callee.id; } function getDOMEventName(eventName) { @@ -3864,7 +3870,6 @@ Object.extend(Event, (function() { } function createWrapper(element, eventName, handler) { - if ( typeof( handler ) != "function" ) return false; var id = getEventID(element); var c = getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; @@ -3875,7 +3880,7 @@ Object.extend(Event, (function() { return false; Event.extend(event); - handler.call(element, event); + handler.call(element, event) }; wrapper.handler = handler; @@ -3957,12 +3962,11 @@ Object.extend(Event, (function() { if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; - var event; if (document.createEvent) { - event = document.createEvent("HTMLEvents"); + var event = document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { - event = document.createEventObject(); + var event = document.createEventObject(); event.eventType = "ondataavailable"; } @@ -3991,21 +3995,20 @@ Element.addMethods({ Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize(), - loaded: false + stopObserving: Element.Methods.stopObserving.methodize() }); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards and John Resig. */ - var timer; + var timer, fired = false; function fireContentLoadedEvent() { - if (document.loaded) return; + if (fired) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); - document.loaded = true; + fired = true; } if (document.addEventListener) { @@ -4219,4 +4222,4 @@ Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ -Element.addMethods(); +Element.addMethods(); \ No newline at end of file diff --git a/public/stylesheets/blocks/profile-info-block.css b/public/stylesheets/blocks/profile-info-block.css index 1095f88..ac7f972 100644 --- a/public/stylesheets/blocks/profile-info-block.css +++ b/public/stylesheets/blocks/profile-info-block.css @@ -71,6 +71,9 @@ display: none; } +.product-categories { + clear: both; +} .profile-info-data { width: 110px; diff --git a/public/stylesheets/controller_search.css b/public/stylesheets/controller_search.css index fc344ce..e19d99a 100644 --- a/public/stylesheets/controller_search.css +++ b/public/stylesheets/controller_search.css @@ -39,6 +39,54 @@ width: 100%; } +.has_cat_list .only-one-result-box .search-results-box { + width: 79%; + float: right; +} + +.has_cat_list #product-categories-menu { + width: 20%; + float: left; +} + +#product-categories-menu a { + display: block; +} + +#product-categories-menu ul { + margin: 0px 0px 0px 20px; + padding: 0px; +} + +#product-categories-menu .cat-parent { + font-weight: bold; + margin: 2px 0px; + padding: 5px 0px 0px 10px; + list-style: none; +} +#product-categories-menu .cat-empty { + list-style: none; + color: #999; +} + +#product-categories-menu .cat-parent ul { + padding-bottom: 5px; +} + +#product-categories-menu .cat-parent li { + font-weight: normal; + margin: 0px; + padding: 0px; +} + +#product-categories-menu .sub-opening, +#product-categories-menu .sub-closeing { + background-color: #FF8; +} +#product-categories-menu .sub-opened { + background-color: #FF0; +} + .search-results-box.odd { margin-left: 1%; } -- libgit2 0.21.2