Index: branches/1.0.x/inc/js/list_manager.js
===================================================================
diff -u -r14890 -r14900
--- branches/1.0.x/inc/js/list_manager.js (.../list_manager.js) (revision 14890)
+++ branches/1.0.x/inc/js/list_manager.js (.../list_manager.js) (revision 14900)
@@ -7,6 +7,7 @@
ListManager.xhrRequests = [];
ListManager.reloadTimer = null;
ListManager.reloadTimeout = 1000;
+ListManager.firstLoad = true;
ListManager.getUrl = function () {
var $url = this.url;
@@ -64,6 +65,10 @@
}
}
+ListManager.getParam = function ($name) {
+ return this.urlParams[$name] !== undefined ? this.urlParams[$name] : false;
+}
+
ListManager.updateAnchor = function () {
var $query_string = [],
$url_params = sort_object(this.urlParams);
@@ -86,17 +91,16 @@
);
this.urlParams = $query_string;
+
+ // sync values from url params into empty filters on first page with anchor load
+ this.initFilters();
+
this.reload(true);
}
-ListManager.replaceFilter = function ($form_id, $form_html) {
- $('#' + $form_id).replaceWith($form_html);
-}
-
-ListManager.registerFilter = function ($form_id) {
+ListManager.registerFilter = function ($field) {
var $manager = this,
- $form = $('#' + $form_id),
- $field = $form.attr('filter_field');
+ $form = $('#filter-form-' + $field);
$manager.filters[$field] = {'type': $form.attr('filter_type')};
@@ -145,6 +149,55 @@
}
}
+ListManager.initFilters = function () {
+ if ( !this.firstLoad ) {
+ return;
+ }
+
+ for (var $filter_field in this.filters) {
+ this.initFilter($filter_field);
+ }
+
+ this.firstLoad = false;
+}
+
+ListManager.initFilter = function ($field) {
+ var $values = '',
+ $form = $('#filter-form-' + $field),
+ $param_name = 'filters[' + $field + ']',
+ $param_value = this.getParam($param_name);
+
+ if ( $param_value === false || $param_value === '' ) {
+ return;
+ }
+
+ switch( this.filters[$field].type ) {
+ case 'radio':
+ $('#' + jq($param_name + '_' + $param_value) ).attr('checked', true);
+ break;
+
+ case 'checkbox':
+ $values = $param_value.substring(1, $param_value.length - 1).split('|');
+
+ for (var $i = 0; $i < $values.length; $i++) {
+ $('#' + jq($param_name + '_' + $values[$i]) ).attr('checked', true);
+ }
+
+ $('#' + jq($param_name + '_') ).attr('checked', false);
+ $('#' + jq($param_name) ).val($param_value);
+ break;
+
+ case 'range':
+ $values = $param_value.split('-');
+
+ $('#' + jq($param_name + '_slider') ).slider('option', 'values', $values);
+ $('#' + jq($param_name) ).val($param_value);
+ break;
+ }
+
+ this.syncChecked( $("input[type=checkbox], input[type=radio]", '#filter-form-' + $field) );
+}
+
ListManager.syncChecked = function ($checkboxes) {
$checkboxes.each(
function () {
Index: branches/1.0.x/inc/styles.css
===================================================================
diff -u -r14859 -r14900
--- branches/1.0.x/inc/styles.css (.../styles.css) (revision 14859)
+++ branches/1.0.x/inc/styles.css (.../styles.css) (revision 14900)
@@ -607,17 +607,17 @@
}
.manufacturer label { text-decoration: underline; }
-#slider-vertical {
+.slider-vertical {
background: url(@templates_base@/img/bg-vertslider-full.png) no-repeat 0 0;
float: left;
padding: 5px 0 0;
}
-#slider-vertical .ui-slider-range {
+.slider-vertical .ui-slider-range {
background: url(@templates_base@/img/bg-vertslider-a.png) repeat-y 0 0;
margin: 0 0 0 7px;
}
-#slider-vertical .ui-slider-handle {
+.slider-vertical .ui-slider-handle {
background: url(@templates_base@/img/point-vertslider.png) no-repeat 0 0;
height: 9px;
margin: 0;
Index: branches/1.0.x/elements/content_boxes/products.elm.tpl
===================================================================
diff -u -r14890 -r14900
--- branches/1.0.x/elements/content_boxes/products.elm.tpl (.../products.elm.tpl) (revision 14890)
+++ branches/1.0.x/elements/content_boxes/products.elm.tpl (.../products.elm.tpl) (revision 14900)
@@ -26,11 +26,3 @@