totalRec: 0,
pagerRange: 6,
pazpar2Path: Drupal.settings.mkdru.pz2_path,
+ facetContainerSelector: Drupal.settings.mkdru.facetContainerSelector,
// Facets
facets: {
source: {
+ displayName: Drupal.settings.mkdru.source_dname || "Source",
+ orderWeight: Drupal.settings.mkdru.source_weight || 1,
pz2Name: 'xtargets',
- max: Drupal.settings.mkdru.source_max
+ max: Drupal.settings.mkdru.source_max || 10
},
subject: {
+ displayName: Drupal.settings.mkdru.subject_dname || "Subject",
+ orderWeight: Drupal.settings.mkdru.source_weight || 2,
pz2Name: 'subject',
- max: Drupal.settings.mkdru.subject_max,
+ max: Drupal.settings.mkdru.subject_max || 10,
multiLimit: true,
limiter: 'su'
},
author: {
+ displayName: Drupal.settings.mkdru.author_dname || "Author",
+ orderWeight: Drupal.settings.mkdru.source_weight || 3,
pz2Name: 'author',
- max: Drupal.settings.mkdru.author_max,
+ max: Drupal.settings.mkdru.author_max || 10,
multiLimit: false,
limiter: 'au'
}
$('.mkdru-status').html(Drupal.theme('mkdruStatus', data.activeclients, data.clients));
};
+mkdru.contains = function (hash, key, value) {
+ if (hash[key]) {
+ if (hash[key].length) {
+ for (var i=0; i<hash[key].length; i++) {
+ if (hash[key][i] === value) {
+ return true;
+ }
+ }
+ } else {
+ return hash[key] === value;
+ }
+ }
+ return false;
+}
+
mkdru.pz2Term = function (data) {
+ // if signaled, prepare container client-side
+ if (mkdru.facetContainerSelector) {
+ $(mkdru.facetContainerSelector).html(Drupal.theme('mkdruFacetContainer',
+ data, mkdru.facets));
+ }
+ // map all facets against selected, for simple rendering
+ var hash = $.deparam.fragment();
+ for (var key in hash) {
+ if (key.indexOf('limit') == 0 && hash[key].indexOf(';'))
+ hash[key.substr(6)] = hash[key].split(';');
+ delete hash[key];
+ }
for (var facet in mkdru.facets) {
- // facet is limited
- if (mkdru.state['limit_' + facet]) {
- $('.mkdru-facet-' + facet).html(Drupal.theme('mkdruFacetLimit',
- data[mkdru.facets[facet].pz2Name][0],
- mkdru.hashAddDelOne(null, null, 'limit_' + facet)));
- } else {
- $('.mkdru-facet-' + facet).html(Drupal.theme('mkdruFacet',
- data[mkdru.facets[facet].pz2Name],
- facet, mkdru.facets[facet].max));
+ var terms = data[mkdru.facets[facet].pz2Name];
+ for (var i=0; i<terms.length; i++) {
+ var term = terms[i];
+ var value = facet == "source" ? term.id : term.name;
+ if (mkdru.contains(hash, facet, value)) { //enabled
+ term.hashQuery = mkdru.removeLimit(facet, value);
+ term.selected = true;
+ } else { //disabled
+ term.hashQuery = mkdru.addLimit(facet, value);
+ term.selected = false;
+ }
}
+ $('.mkdru-facet-' + facet).html(
+ Drupal.theme('mkdruFacet', terms, facet, mkdru.facets[facet].max));
}
};
// ting thing
if (typeof(Drupal.settings.mkdru.query) !== "undefined") {
mkdru.state.query = Drupal.settings.mkdru.query
+ //force the hash to contain query
+ mkdru.hashFromState();
}
//not running against SP? init, otherwise authenticate
);
}
});
-})(jQuery);
\ No newline at end of file
+})(jQuery);