Index: src/main/webapp/application/engageConfig.json =================================================================== --- src/main/webapp/application/engageConfig.json (revision 9248) +++ src/main/webapp/application/engageConfig.json (working copy) @@ -4,9 +4,9 @@ includes: "kettle/KettleIncludes.json", includesPrefix: "kettle/", loaderFunction: "fluid.engage.initEngageApp", -queryURLTemplate: "http://titan.atrc.utoronto.ca:5984/%dbName/_fti/lucene/%view?include_docs=true&q=%query", -viewURLTemplate: "http://titan.atrc.utoronto.ca:5984/%dbName/%view", -viewURLTemplateWithKey: "http://titan.atrc.utoronto.ca:5984/%dbName/%view?key=%key", +queryURLTemplate: "http://142.150.154.59:5984/%dbName/_fti/lucene/%view?include_docs=true&q=%query", +viewURLTemplate: "http://142.150.154.59:5984/%dbName/%view", +viewURLTemplateWithKey: "http://142.150.154.59:5984/%dbName/%view?key=%key", initServices: [ "fluid.engage.initHomeService", "fluid.artifactView.initMarkupFeed", @@ -30,9 +30,10 @@ all: "all", byCollectionCategory: "by_collection_category", exhibitionByTitle: "_design/exhibitions/_view/view", - catalogueByTitle: "_design/catalogue/_view/viewWithArtifacts", - catalogueArtifacts: "_design/catalogueArtefacts/_view/view", - exhibitions: "_design/exhibitions/_view/browse" + catalogueByTitle: "_design/catalogue/_view/view", + catalogueArtifacts: "_design/catalogue/_view/browse", + exhibitions: "_design/exhibitions/_view/browse", + artifactByAccession: "_design/artifacts/_view/view" }, mount: { infusion: { Index: src/main/webapp/application/engageStandaloneConfig.json =================================================================== --- src/main/webapp/application/engageStandaloneConfig.json (revision 9248) +++ src/main/webapp/application/engageStandaloneConfig.json (working copy) @@ -4,9 +4,9 @@ includes: "kettle/KettleIncludes.json", includesPrefix: "kettle/", loaderFunction: "fluid.engage.initEngageApp", -queryURLTemplate: "http://titan.atrc.utoronto.ca:5984/%dbName/_fti/lucene/%view?include_docs=true&q=%query", -viewURLTemplate: "http://titan.atrc.utoronto.ca:5984/%dbName/%view", -viewURLTemplateWithKey: "http://titan.atrc.utoronto.ca:5984/%dbName/%view?key=%key", +queryURLTemplate: "http://142.150.154.59:5984/%dbName/_fti/lucene/%view?include_docs=true&q=%query", +viewURLTemplate: "http://142.150.154.59:5984/%dbName/%view", +viewURLTemplateWithKey: "http://142.150.154.59:5984/%dbName/%view?key=%key", initServices: [ "fluid.engage.initHomeService", "fluid.artifactView.initMarkupFeed", @@ -27,9 +27,10 @@ all: "all", byCollectionCategory: "by_collection_category", exhibitionByTitle: "_design/exhibitions/_view/view", - catalogueByTitle: "_design/catalogue/_view/viewWithArtifacts", - catalogueArtifacts: "_design/catalogueArtefacts/_view/view", - exhibitions: "_design/exhibitions/_view/browse" + catalogueByTitle: "_design/catalogue/_view/view", + catalogueArtifacts: "_design/catalogue/_view/browse", + exhibitions: "_design/exhibitions/_view/browse", + artifactByAccession: "_design/artifacts/_view/view" }, mount: { infusion: { Index: src/main/webapp/services/artifactView/js/artifactView.js =================================================================== --- src/main/webapp/services/artifactView/js/artifactView.js (revision 9248) +++ src/main/webapp/services/artifactView/js/artifactView.js (working copy) @@ -23,9 +23,9 @@ var model = {}; var successCallback = function (data, status) { - model = JSON.parse(data); + model = JSON.parse(data.substring(0, data.length - 1)); if (model.total_rows && model.total_rows > 0) { - model = model.rows[0].doc; + model = model.rows[0]; } }; @@ -40,30 +40,21 @@ }; var buildDataURL = function (params, config) { - return fluid.stringTemplate(config.queryURLTemplate, - {dbName: params.db || "", view: config.views.all, query: params.q || ""}); + return fluid.stringTemplate(config.viewURLTemplateWithKey, { + dbName: params.db, + view: config.views.artifactByAccession, + key: JSON.stringify({ + accessNumber: params.accessNumber, + lang: params.lang + }) + }); }; - var buildCategoryQuery = function (category) { - if (typeof category === "string") { - return category; - } - category = $.makeArray(category); - var catString = category.pop(); - $.each(category, function (index, value) { - catString += "AND" + value; - }); - return catString; - }; - var fetchAndNormalizeModel = function (params, config) { var urlBase = "browse.html?"; - var artifactModel = fluid.engage.mapModel(getData(buildDataURL(params, config)), params.db); - params.q = buildCategoryQuery(artifactModel.category); - + var artifactModel = fluid.engage.mapModel(getData(buildDataURL(params, config)), params.db); return { - artifact: artifactModel, - relatedArtifacts: urlBase + $.param(params) + artifact: artifactModel }; }; Index: src/main/webapp/services/browseCatalogue/js/browseCatalogue.js =================================================================== --- src/main/webapp/services/browseCatalogue/js/browseCatalogue.js (revision 9248) +++ src/main/webapp/services/browseCatalogue/js/browseCatalogue.js (working copy) @@ -50,7 +50,8 @@ view: config.views.catalogueArtifacts, key: JSON.stringify({ exhibitTitle: params.exhibition, - sectionTitle: params.title + sectionTitle: params.title, + lang: params.lang }) }); }; @@ -82,11 +83,32 @@ fluid.engage.mountAcceptor(app, "catalogue", acceptor); }; - var afterMap = function (data) { + var compileTargetURL = function (URLBase, params) { + return URLBase + "?" + $.param(params); + }; + + var compileArtifacts = function (artifacts, params) { + var baseArtifactURL = "../artifacts/view.html"; + return fluid.transform(artifacts, function (artifact) { + return { + title: artifact.title, + imageUrl: artifact.imageUrl, + media: artifact.media, + description: artifact.description, + url: compileTargetURL(baseArtifactURL, { + db: params.db.slice(0, params.db.indexOf('_')), + accessNumber: artifact.accessionNumber, + lang: params.lang + }) + }; + }); + }; + + var afterMap = function (data, params) { data.categories = $.map(data.categories, function (value) { return { name: value.name, - items: value.artifacts + items: compileArtifacts(value.artifacts, params) }; }); return data; @@ -129,7 +151,7 @@ var options = { strings: strings, - model: afterMap(data) + model: afterMap(data, params) }; return { Index: src/main/webapp/services/catalogue/js/catalogue.js =================================================================== --- src/main/webapp/services/catalogue/js/catalogue.js (revision 9248) +++ src/main/webapp/services/catalogue/js/catalogue.js (working copy) @@ -47,7 +47,10 @@ return fluid.stringTemplate(config.viewURLTemplateWithKey, { dbName: params.db || "", view: config.views.catalogueByTitle, - key: '"' + params.title + '"' + key: JSON.stringify({ + title: params.title, + lang: params.lang + }) }); }; @@ -57,20 +60,19 @@ var compileArtifacts = function (artifacts, params) { var baseArtifactURL = "../artifacts/view.html"; - var artifactsArray = []; - for (var i = 0; i < artifacts.length && i < 4; i++) { - var artifact = artifacts[i]; - artifactsArray.push({ - artifactViewURL: compileTargetURL(baseArtifactURL, { - db: params.db.substring(0, params.db.indexOf("_")), - q: artifact.accessNumber - }), - imageURL: artifact.imageURL, + return fluid.transform(artifacts, function (artifact) { + return { + description: artifact.description, + media: artifact.media, title: artifact.title, - description: artifact.description - }); - } - return artifactsArray; + image: artifact.image, + target: compileTargetURL(baseArtifactURL, { + db: params.db.slice(0, params.db.indexOf('_')), + accessNumber: artifact.accessionNumber, + lang: params.lang + }) + } + }); }; var compileTheme = function (themes, exhibitionTitle, params, baseURL) { @@ -81,7 +83,8 @@ allArtifactsViewURL: compileTargetURL(baseURL, { db: params.db, exhibition: exhibitionTitle, - title: theme.title + title: theme.title, + lang: params.lang }), numArtifacts: theme.numArtifacts, artifacts: compileArtifacts(theme.artifacts, params) @@ -97,7 +100,8 @@ allArtifactsViewURL: compileTargetURL(baseCatalogueURL, { db: params.db, exhibition: data.title, - title: "viewAll" + title: "viewAll", + lang: params.lang }), numArtifacts: data.numArtifacts, themes: compileTheme(data.themes, data.title, params, baseCatalogueURL) Index: src/main/webapp/services/exhibitionAbout/js/exhibitionAbout.js =================================================================== --- src/main/webapp/services/exhibitionAbout/js/exhibitionAbout.js (revision 9248) +++ src/main/webapp/services/exhibitionAbout/js/exhibitionAbout.js (working copy) @@ -28,7 +28,10 @@ return fluid.stringTemplate(config.viewURLTemplateWithKey, { dbName: params.db || "", view: config.views.exhibitionByTitle, - key: '"' + params.title + '"' + key: JSON.stringify({ + title: params.title, + lang: params.lang + }) }); }; Index: src/main/webapp/services/exhibitionBrowse/js/exhibitionBrowse.js =================================================================== --- src/main/webapp/services/exhibitionBrowse/js/exhibitionBrowse.js (revision 9248) +++ src/main/webapp/services/exhibitionBrowse/js/exhibitionBrowse.js (working copy) @@ -23,10 +23,11 @@ type: "fluid.kettle.couchDBSource", urlBuilder: { funcName: "fluid.stringTemplate", - args: ["{config}.viewURLTemplate", + args: ["{config}.viewURLTemplateWithKey", { dbName: "${db}_exhibitions", - view: "{config}.views.exhibitions" + view: "{config}.views.exhibitions", + key: '"${lang}"' }] } }, @@ -38,7 +39,7 @@ url: "exhibitions/browse", contentType: "JSON", source: {funcName: "fluid.engage.exhibitionDataSource", - args: [{db: "{params}.db"}] + args: [{db: "{params}.db", lang: "{params}.db"}] } }); @@ -56,7 +57,7 @@ producers: { "browse": function (context, renderHandlerConfig) { var params = context.urlState.params; - var data = fluid.engage.exhibitionDataSource.get({db: params.db}); + var data = fluid.engage.exhibitionDataSource.get({db: params.db, lang: params.lang}); if (!data.isError) { // TODO: We're hand-altering the configuration for getBundle(), since by default it assumes that all language bundles // are located relative to the HTML template. In this case, however, we've got feeds using the same template but @@ -117,7 +118,8 @@ title: exhibition.title, url: compileTargetURL(exhibition.isCurrent ? baseExhibitionURL : baseUpcomingExhibitionURL, { db: dbName, - title: exhibition.title + title: exhibition.title, + lang: options.lang }), displayDate: exhibition.displayDate, endDate: exhibition.endDate Index: src/main/webapp/services/exhibitionView/js/exhibitionView.js =================================================================== --- src/main/webapp/services/exhibitionView/js/exhibitionView.js (revision 9248) +++ src/main/webapp/services/exhibitionView/js/exhibitionView.js (working copy) @@ -28,7 +28,10 @@ return fluid.stringTemplate(config.viewURLTemplateWithKey, { dbName: params.db || "", view: config.views.exhibitionByTitle, - key: '"' + params.title + '"' + key: JSON.stringify({ + title: params.title, + lang: params.lang + }) }); }; @@ -71,13 +74,30 @@ fluid.engage.mountAcceptor(app, "exhibitions", acceptor); }; - var buildLink = function (url, db, title) { + var buildLink = function (url, lang, db, title) { return compileTargetURL(url, { db: db, - title: title + title: title, + lang: lang }); }; + var afterMap = function (data, params) { + data.cataloguePreview = fluid.transform(data.cataloguePreview, function (artifact) { + return { + target: compileTargetURL("../artifacts/view.html", { + db: params.db.slice(0, params.db.indexOf('_')), + accessNumber: artifact.accessionNumber, + lang: params.lang + }), + image: artifact.image, + media: artifact.media, + title: artifact.title + }; + }); + return data; + }; + fluid.exhibitionService.initExhibitionViewService = function (config, app) { var renderHandlerConfig = { config: config, @@ -98,24 +118,11 @@ var data = getData(errorCallback, params, config); var strings = fluid.kettle.getBundle(renderHandlerConfig, params); - data.catalogueLink = buildLink("../catalogue/view.html", params.db, data.title); - data.aboutLink = buildLink("about.html", params.db, data.title); + data.catalogueLink = buildLink("../catalogue/view.html", params.lang, params.db, data.title); + data.aboutLink = buildLink("about.html", params.lang, params.db, data.title); - ////////////////////////////////////////////////////////////////////// - // TODO: Remove this hardcoded data as soon as we get real data!!! - data.cataloguePreview = [{ - "media": true, - "title": "Thermometer", - "image": "http://helios.gsfc.nasa.gov/image_euv_press.jpg" - }, { - "title": "Barometer", - "image": "http://helios.gsfc.nasa.gov/image_euv_press.jpg" - } - ]; - ///////////////////////////////////////////////////////////////////// - var options = { - model: data + model: afterMap(data, params) }; if (strings) { options.strings = strings;