diff -r f8a0d5d14372 -r 01ac2cd2756c player/js/ldt-serializer.js --- a/player/js/ldt-serializer.js Thu May 30 19:06:05 2013 +0200 +++ b/player/js/ldt-serializer.js Fri Jun 07 16:17:31 2013 +0200 @@ -58,7 +58,22 @@ "id-ref": _data.id }, items: _source.getAnnotationTypes().filter(function(_at) { - return _at.media === _data; + switch (typeof _at.media) { + case "object": + return (_at.media === _data); + case "string": + return (_at.media === _data.id); + default: + var _ann = _at.getAnnotations(); + if (_ann) { + for (var i = 0; i < _ann.length; i++) { + if (_ann[i].getMedia() === _data) { + return true; + } + } + } + } + return false; }).map(function(_at) { return { "id-ref": _at.id @@ -78,6 +93,9 @@ return _res; }, serializer : function(_data, _source, _dest) { + if (_source.regenerateTags && !_data.regenerated) { + return; + } var _res = { id : _data.id, meta : { @@ -179,12 +197,20 @@ "dc:creator" : _data.creator || _source.creator, "dc:contributor" : _data.contributor || _source.contributor || _data.creator || _source.creator, // project : _source.projectId - }, - tags : IriSP._(_data.tag.id).map(function(_id) { + } + } + if (_source.regenerateTags) { + _res.tags = IriSP._(_data.keywords).map(function(_kw) { + return { + "id-ref": _source.__keywords[_kw.toLowerCase()].id + } + }); + } else { + _res.tags = IriSP._(_data.tag.id).map(function(_id) { return { "id-ref" : _id } - }) + }); } _res.content.title = _data.title || _res.content.title || ""; _dest.annotations.push(_res); @@ -248,6 +274,24 @@ annotations: [] }, _this = this; + if (_source.regenerateTags) { + _source.__keywords = {}; + _source.getAnnotations().forEach(function(a) { + IriSP._(a.keywords).each(function(kw) { + var lkw = kw.toLowerCase(); + if (typeof _source.__keywords[lkw] === "undefined") { + _source.__keywords[lkw] = { + id: IriSP.Model.getUID(), + title: kw, + regenerated: true + } + } + }); + }); + IriSP._(_source.__keywords).each(function(kw) { + _this.types.tag.serializer(kw, _source, _res); + }) + } _source.forEach(function(_list, _typename) { if (typeof _this.types[_typename] !== "undefined") { _list.forEach(function(_el) { @@ -287,6 +331,9 @@ _source.projectId = _data.meta.id; _source.title = _data.meta["dc:title"] || _data.meta.title || ""; _source.description = _data.meta["dc:description"] || _data.meta.description || ""; + _source.creator = _data.meta["dc:creator"] || _data.meta.creator || ""; + _source.contributor = _data.meta["dc:contributor"] || _data.meta.contributor || _source.creator; + _source.created = IriSP.Model.isoToDate(_data.meta["dc:created"] || _data.meta.created); } if (typeof _data.meta !== "undefined" && typeof _data.meta.main_media !== "undefined" && typeof _data.meta.main_media["id-ref"] !== "undefined") {