Changeset 223

Show
Ignore:
Timestamp:
04/15/08 22:24:28 (7 months ago)
Author:
Stuart Thiel
Message:

-Fixed #184
-Further fixed #185

Currently associating MediaAnnotations? with the URL (local or remote, in that order of preference) of the item being viewed.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • MediAnnotateXPI/trunk/srcExtension/chrome/vertov/content/overlay.js

    r222 r223  
    6666        //Let's init things to blank and let real decisions be made later if necessary. 
    6767        this.parentItem = false; 
     68         
    6869        this.current_url = false; 
    6970        this.isMediaAnnotation = false; 
     
    7475        } else { 
    7576                this.isMediaAnnotation = this.isXMLNote(this.item); 
    76          
    77         } 
    78  
    79         if(this.isMediaAnnotation) { 
    80                 this.applyChange(); 
    81                 this.parentItem = Zotero.Items.get(this.item.getSource()); 
    82                 this.prepareMAEntryView(this.item); 
    83         } else { 
    84                 this.parentItem = this.item; 
    85                 //In the even that we're not a Media Annotation, let's put the old item info panel back.  
    86                 document.getElementById('zotero-item-pane-content').selectedPanel = oldPanel; 
    87         } 
    88          
     77                if(!this.item.isRegularItem()) { 
     78                        //If this is a snapshot or media annotation, get the real parent item 
     79                        this.parentItem = Zotero.Items.get(this.item.getSource()); 
     80                } else { 
     81                        this.parentItem = this.item; 
     82                } 
     83        } 
     84 
     85 
    8986        if(this.item && (this.isPlayableItem())) { 
    9087            this.current_url = this.getPlayableURL(); 
     88            alert(this.current_url); 
    9189                document.getElementById("zotero-items-tree").ondblclick = function ondblclick(event) { 
    9290                        mediannotate.workItOut(event); 
    9391                } 
     92                 
     93                if(this.isMediaAnnotation) { 
     94                        this.applyChange(); 
     95                        this.prepareMAEntryView(this.item); 
     96                } else { 
     97                        //In the even that we're not a Media Annotation, let's put the old item info panel back.  
     98                        document.getElementById('zotero-item-pane-content').selectedPanel = oldPanel; 
     99                } 
     100         
     101 
    94102 
    95103        } else { 
     
    116124     
    117125  prepareMAEntryView: function(item) { 
    118         var xmlString = item.getNote(); 
    119126        var objDOMParser = new DOMParser(); 
    120         var xmlDoc = objDOMParser.parseFromString(xmlString, "text/xml"); 
    121         this.xmlDoc = xmlDoc; 
     127        var xmlDoc = objDOMParser.parseFromString(item.getNote(), "text/xml"); 
    122128 
    123129        //update the fields 
    124         document.getElementById('ma-description').value = this.xmlDoc.evaluate("//description", this.xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
    125         var start = this.xmlDoc.evaluate("//start", this.xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
    126         var end = this.xmlDoc.evaluate("//end", this.xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     130        document.getElementById('ma-description').value = xmlDoc.evaluate("//description", xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     131        var start = xmlDoc.evaluate("//start", xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     132        var end = xmlDoc.evaluate("//end", xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     133        try { 
     134                var url = xmlDoc.evaluate("//url", xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     135        } catch(e) {}; 
    127136        document.getElementById('ma-start-time').value = sprintf(this.sprintfString, (start/1000/60/60), ((start%(1000*60*60))/1000/60), ((start%(1000*60))/1000), ((start%1000)/33.3)); 
    128137        document.getElementById('ma-end-time').value = sprintf(this.sprintfString, (end/1000/60/60), ((end%(1000*60*60))/1000/60), ((end%(1000*60))/1000), ((end%1000)/33.3)); 
     
    132141        document.getElementById('ma-old-end-time').value = end; 
    133142        document.getElementById('ma-itemRef').value = item.getID(); 
     143        document.getElementById('ma-url').value = url; 
    134144                 
    135145        this.showMAPanel(); 
     
    143153        this.RelatedItems.reload(); 
    144154  },  
     155  
    145156   
    146157  showMAPanel: function() { 
     
    153164   
    154165  getPlayableURL: function() { 
    155         var url = this.getBestPlayableURL(this.item); 
    156         if(this.isMediaAnnotation) url = this.getBestPlayableURL(this.parentItem); 
     166        var url;  
     167        if(this.isMediaAnnotation) { 
     168                url = this.getUrlFromMA(this.item); 
     169                if(!url) url = this.getBestPlayableURL(this.parentItem); 
     170        } else url = this.getBestPlayableURL(this.item); 
    157171    return url; 
    158172  }, 
    159173   
     174  getUrlFromMA: function(item) { 
     175        var objDOMParser = new DOMParser(); 
     176        var xmlDoc = objDOMParser.parseFromString(item.getNote(), "text/xml");   
     177        try { 
     178                return xmlDoc.evaluate("//url", xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     179        } catch(e) {}; 
     180        return false; 
     181  },  
     182   
    160183  getBestPlayableURL: function(item) { 
    161         url = item.getLocalFileURL(); 
    162         if(!url) url = item.getField('url'); 
     184        var url = item.getField('url'); 
    163185        if(item.isRegularItem()) { 
    164                 var snapID = this.item.getBestSnapshot(); 
     186                var snapID = item.getBestSnapshot(); 
    165187                if (snapID) { 
    166188                        url = Zotero.Items.get(snapID).getLocalFileURL(); 
    167189                }  
     190        } else { 
     191                if(item.getLocalFileURL) url = item.getLocalFileURL(); 
    168192        } 
    169193    return url; 
     
    195219                var newNote = "<mediannotate><description>" + document.getElementById('ma-description').value  + "</description>\n" + 
    196220                  "<start>" + Math.round(oldStartValue) + "</start>\n" + 
    197                   "<end>" + Math.round(oldEndValue) + "</end></mediannotate>"; 
     221                  "<end>" + Math.round(oldEndValue) + "</end>" + 
     222                  "<url><![CDATA["+document.getElementById('ma-url').value+"]]></url>" +  
     223                  "</mediannotate>"; 
    198224                try { 
    199225                        item.updateNote(newNote); 
     
    223249                var newNote = "<mediannotate><description></description>\n" + 
    224250                  myApplet.wrappedJSObject.getTime() +  
     251                  "<url><![CDATA["+this.current_url+"]]></url>" + 
    225252                  "</mediannotate>";             
    226253                this.item.updateNote(newNote); 
  • MediAnnotateXPI/trunk/srcExtension/chrome/vertov/content/overlay.xul

    r197 r223  
    3131                        <textbox id="ma-description" rows="8" cols="25" flex="1" multiline="true" onchange="mediannotate.applyChange()"/> 
    3232                        <label id="ma-itemRef" hidden="true" /> 
     33                        <label id="ma-url" hidden="true" /> 
    3334                        <label id="ma-RelatedItemsLabel" class="zotero-clicky" value="Related: [click here]" crop="end" onclick="mediannotate.RelatedItems.showPopup();"/> 
    3435                        <label id="ma-TagsLabel" class="zotero-clicky" value="Tags: [click here]" crop="end" onclick="mediannotate_tags.showPopup();"/> 
  • MediAnnotateXPI/trunk/srcExtension/install.rdf

    r221 r223  
    55    <em:id>videannotate@htmlweb.com</em:id> 
    66    <em:name>Vertov</em:name> 
    7     <em:version>0.7.2.2</em:version> 
     7    <em:version>0.7.3</em:version> 
    88    <em:creator>Stuart Thiel Concordia University University</em:creator> 
    99    <em:developer>Stuart Thiel</em:developer> 
  • MediAnnotateXPI/trunk/update_mediannotate.rdf

    r221 r223  
    88      <RDF:li> 
    99        <RDF:Description> 
    10           <version>0.7.2.2</version> 
     10          <version>0.7.3</version> 
    1111          <targetApplication> 
    1212            <RDF:Description>