diff -r 7b65bf78873a -r eefd336335f9 src/widgets/CreateAnnotation.js --- a/src/widgets/CreateAnnotation.js Thu Jan 17 17:25:46 2013 +0100 +++ b/src/widgets/CreateAnnotation.js Fri Jan 25 18:16:29 2013 +0100 @@ -149,7 +149,7 @@ if (this.tag_titles && !this.tags) { this.tags = IriSP._(this.tag_titles).map(function(_tag_title) { var _tag, - _tags = _this.source.getTags().searchByTitle(_tag_title); + _tags = _this.source.getTags().searchByTitle(_tag_title, true); if (_tags.length) { _tag = _tags[0]; } else { @@ -370,10 +370,11 @@ this.recorder.stopRecord(); } - var _exportedAnnotations = new IriSP.Model.List(this.player.sourceManager), /* Création d'une liste d'annotations contenant une annotation afin de l'envoyer au serveur */ + var _this = this, + _exportedAnnotations = new IriSP.Model.List(this.player.sourceManager), /* Création d'une liste d'annotations contenant une annotation afin de l'envoyer au serveur */ _export = this.player.sourceManager.newLocalSource({serializer: IriSP.serializers[this.api_serializer]}), /* Création d'un objet source utilisant un sérialiseur spécifique pour l'export */ _annotation = new IriSP.Model.Annotation(false, _export), /* Création d'une annotation dans cette source avec un ID généré à la volée (param. false) */ - _annotationTypes = this.source.getAnnotationTypes().searchByTitle(this.annotation_type), /* Récupération du type d'annotation dans lequel l'annotation doit être ajoutée */ + _annotationTypes = this.source.getAnnotationTypes().searchByTitle(this.annotation_type, true), /* Récupération du type d'annotation dans lequel l'annotation doit être ajoutée */ _annotationType = (_annotationTypes.length ? _annotationTypes[0] : new IriSP.Model.AnnotationType(false, _export)), /* Si le Type d'Annotation n'existe pas, il est créé à la volée */ _url = Mustache.to_html(this.api_endpoint_template, {id: this.source.projectId}); /* Génération de l'URL à laquelle l'annotation doit être envoyée, qui doit inclure l'ID du projet */ @@ -400,8 +401,24 @@ } _annotation.created = new Date(); /* Date de création de l'annotation */ _annotation.description = this.$.find(".Ldt-CreateAnnotation-Description").val(); /* Champ description */ - _annotation.setTags(this.$.find(".Ldt-CreateAnnotation-TagLi.selected") - .map(function() { return IriSP.jQuery(this).attr("tag-id")})); /*Liste des ids de tags */ + + var tagIds = this.$.find(".Ldt-CreateAnnotation-TagLi.selected") + .map(function() { return IriSP.jQuery(this).attr("tag-id")}); + + IriSP._(_annotation.description.match(/#[\w\d]+/g)).each(function(_tt) { + var _tag, + _tag_title = _tt.replace(/^#/,'') + _tags = _this.source.getTags().searchByTitle(_tag_title, true); + if (_tags.length) { + _tag = _tags[0]; + } else { + _tag = new IriSP.Model.Tag(false, _this.source); + _tag.title = _tag_title; + } + tagIds.push(_tag.id); + }) + + _annotation.setTags(IriSP._(tagIds).uniq()); /*Liste des ids de tags */ if (this.audio_url) { _annotation.audio = { src: "mic",