Index: engage/framework/js/Engage.js =================================================================== --- engage/framework/js/Engage.js (revision 8302) +++ engage/framework/js/Engage.js (working copy) @@ -18,7 +18,6 @@ fluid.engage = fluid.engage || {}; - var noImageURL = "../../../../engage/components/artifact/images/no_image_64x64.png"; var noTitle = "No Title"; fluid.engage.collections = { @@ -75,20 +74,24 @@ if ($(value).eq(index).is("img")) { return $(value).eq(index); } - }); - return String(img.eq(0).attr("src") || noImageURL); + }); + var imgSrc = img.eq(0).attr("src"); + return imgSrc ? String(imgSrc) : undefined; }; - return tryFunc(getImage, value, noImageURL); + return tryFunc(getImage, value); } } }, mccord: { dataSpec: { - "category": "artefacts.artefact.links.type.category.label", + "category": { + "path": "artefacts.artefact.links.type.category", + "func": "getArtifactCategory" + }, "linkTarget": "artefacts.artefact.accessnumber", "linkImage": { - "path": "artefacts.artefact.images.image.imagesfiles.imagefile", + "path": "artefacts.artefact.images.image", "func": "getThumbImageFromObjectArray" }, "linkTitle": { @@ -101,7 +104,7 @@ "func": "getTitleFromObject" }, "artifactImage": { - "path": "artefacts.artefact.images.image.imagesfiles.imagefile", + "path": "artefacts.artefact.images.image", "func": "getImageFromObjectArray" }, "artifactAuthor": { @@ -114,29 +117,45 @@ "path": "artefacts.artefact.tags.tag", "func": "getArtifactTags" }, - "artifactDescription": "artefacts.artefact.descriptions.description_museum" + "artifactDescription": { + "path": "artefacts.artefact.descriptions.description_museum", + "func": "getArtifactDescription" + } }, mappers: { + getArtifactDescription: function (value) { + var getDescription = function (value) { + if (isString(value)) { + return value; + } + }; + return tryFunc(getDescription, value); + }, + getArtifactCategory: function (value) { + var getCategory = function (value) { + return $.makeArray(fluid.transform($.makeArray(value), function (val) { + return val.label; + })); + }; + return tryFunc(getCategory, value); + }, getArtifactTags: function (value) { var getTags = function (value) { if (!isString(value)) { - return fluid.transform($.makeArray(value), function(value) { - return value.label; + return fluid.transform($.makeArray(value), function(val) { + return val.label; }); } - else { - return []; - } }; return tryFunc(getTags, value); }, getTitleFromObject: function (value) { var getTitle = function (value) { if (isString(value)) { - return value || noTitle; + return value || noTitle; } else { - return value.nodetext || noTitle; + return $.makeArray(value)[0].nodetext || noTitle; } }; return tryFunc(getTitle, value, noTitle); @@ -144,13 +163,14 @@ getThumbImageFromObjectArray: function (value) { var getImage = function (value) { if (isString(value)) { - return value; + return value || undefined; } else { - return value[0].nodetext || noImageURL; + value = $.makeArray(value)[0].imagesfiles.imagefile; + return value[0].nodetext || undefined; } }; - return tryFunc(getImage, value, noImageURL); + return tryFunc(getImage, value); }, getImageFromObjectArray: function (value) { var getImage = function (value) { @@ -158,7 +178,15 @@ return value; } else { - return value[value.length - 2].nodetext; + value = $.makeArray(value)[0].imagesfiles.imagefile; + var link; + $.each($.makeArray(value).reverse(), function (index, val) { + if (val.sizeunit !== "") { + link = val.nodetext; + return false; + } + }); + return link; } }; return tryFunc(getImage, value); @@ -169,7 +197,7 @@ return value; } else { - return value[0].nodetext; + return $.makeArray(value)[0].nodetext; } }; return tryFunc(getArtist, value); @@ -181,7 +209,7 @@ var tryFunc = function (func, value, defaultValue) { try { return func(value); - } catch (e) {return defaultValue;}; + } catch (e) {return defaultValue;} }; var isString = function (value) { Index: kettle/src/webapp/artifactDemo/js/artifactDemo.js =================================================================== --- kettle/src/webapp/artifactDemo/js/artifactDemo.js (revision 8300) +++ kettle/src/webapp/artifactDemo/js/artifactDemo.js (working copy) @@ -111,6 +111,16 @@ return fluid.engage.mapModel(model, databaseName); }; + 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; + }; + fluid.artifactView.initDataFeed = function (config, app) { var artifactDataHandler = function (context, env) { var query = env.QUERY_STRING, @@ -118,7 +128,7 @@ databaseName = query.substring(0, ampIndex), artifactQuery = env.QUERY_STRING.substring(ampIndex + 1, env.QUERY_STRING.length), model = fetchAndNormalizeModel(databaseName, artifactQuery, config), - relatedArtifacts = "browse.html?" + databaseName + "&" + model.category; + relatedArtifacts = "browse.html?" + databaseName + "&" + buildCategoryQuery(model.category); return [200, {"Content-Type": "text/plain"}, JSON.stringify({ toRender: { Index: kettle/src/webapp/browseDemo/js/browseDemo.js =================================================================== --- kettle/src/webapp/browseDemo/js/browseDemo.js (revision 8300) +++ kettle/src/webapp/browseDemo/js/browseDemo.js (working copy) @@ -39,7 +39,8 @@ }; var compileData = function (data, dbName) { - var categoryText = data[0].category; + var categoryText = (typeof data[0].category === "string") ? + data[0].category : data[0].category.toString(); var model = { strings: { title: categoryText