Changeset 189

Show
Ignore:
Timestamp:
03/12/08 20:31:10 (10 months ago)
Author:
Stuart Thiel
Message:

-Fixed and deployed #100
--I started using snapshot code a little while ago for a related reason (using local stuff when there was a snapshot), so part of this fix went in real smooth. More interestingly, it looks like I may have screwed up a few other things somewhere along the line to cause problems that looked like what was happening with snapshots, but was probably just a trivial code error. However, mostly I resolved this by gradually refactoring the code to something that didn't look so offensive. So, all the changes are to fix this ticket, but I wasn't sure where to start, so I just started cleaning till I could tell what was supposed to be happening.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • MediAnnotateXPI/trunk/srcExtension/chrome/MediAnnotate/content/itemPane.xul

    r135 r189  
    55  <button  
    66        id="zotero-go-to-url" 
    7         oncommand="mediannotate.isMediAnnotateCompatibleItem?mediannotate.workItOut(event):ZoteroItemPane.onViewClick(this, event)"  
     7        oncommand="mediannotate.isPlayableItem()?mediannotate.workItOut(event):ZoteroItemPane.onViewClick(this, event)"  
    88        /> 
    99 
  • MediAnnotateXPI/trunk/srcExtension/chrome/MediAnnotate/content/overlay.js

    r188 r189  
    3939    this.timecodeRegexpEval = '($1 * 1000 * 1000 * 60) + ($2 * 1000 * 60) + ($3 * 1000) + ($4 * 33.3);' 
    4040    this.sprintfString = "%02d:%02d:%02d.%02d"; 
     41    //Mac's can play flv in quicktime with Perian installed. Windows, no chance. 
     42    if (navigator.appVersion.indexOf("Mac")!=-1) this.extensionMatch = /^.*((mpg)|(avi)|(mov)|(flv))$/i; 
     43    else this.extensionMatch = /^.*((mpg)|(avi)|(mov))$/i;     
    4144  }, 
    4245 
     
    5760    if(this.isMediaAnnotation)this.showMAPanel(); 
    5861     
    59     //Mac's can play flv in quicktime with Perian installed. Windows, no chance. 
    60     if (navigator.appVersion.indexOf("Mac")!=-1) var extensionMatch = /^.*((mpg)|(avi)|(mov)|(flv))$/i; 
    61     else var extensionMatch = /^.*((mpg)|(avi)|(mov))$/i; 
    6262        var itemId = ZoteroPane.getSelectedItems(true)[0]; 
    6363        this.item = Zotero.Items.get(itemId); 
     
    6767        document.getElementById('MA-menu-item').hidden=true; 
    6868        this.current_url = false; 
    69         this.isMediAnnotateCompatibleItem = false; 
    7069        this.isMediaAnnotation = false; 
    7170 
    72         //There error messages are annoying when this happens. 
     71        //The error messages are annoying when this happens. 
    7372        if(!this.item) { 
    7473                Zotero.debug("No item selected"); 
    75         } else  //Check if it's a "mediannotate" attachment 
    76           if(this.item.getType() == 14) { 
    77                 this.isMediaAnnotation = this.isXMLNote(this.item.getNote()); 
    78         //If it's not an attachment, check if it's mediannotate compatible 
    79         } else if(this.item.getField('url').match(extensionMatch)) { 
    80                 if(this.item.isRegularItem()) { 
    81                         var snapID = this.item.getBestSnapshot(); 
    82                         if (snapID) { 
    83                                 this.current_url = Zotero.Items.get(snapID).getLocalFileURL(); 
    84                         } 
    85                 } else { 
    86                 this.current_url = this.item.getField('url'); 
    87         } 
    88                 this.isMediAnnotateCompatibleItem = true; 
    89                 this.parentItem = this.item; 
    90                  
     74        } else { 
     75                this.isMediaAnnotation = this.isXMLNote(this.item); 
     76         
    9177        } 
    9278 
     
    9480                this.applyChange(); 
    9581                this.parentItem = Zotero.Items.get(this.item.getSource()); 
    96                 this.current_url = this.parentItem.getField('url'); 
    9782                this.prepareMAEntryView(this.item); 
    9883        } else { 
     84                this.parentItem = this.item; 
    9985                //In the even that we're not a Media Annotation, let's put the old item info panel back.  
    10086                document.getElementById('zotero-item-pane-content').selectedPanel = oldPanel; 
    10187        } 
    102  
    103         if(this.isMediaAnnotation || this.isMediAnnotateCompatibleItem) { 
     88         
     89        if(this.item && (this.isPlayableItem())) { 
     90            this.current_url = this.getPlayableURL(); 
    10491                document.getElementById('MA-menu-item').hidden=false; 
    10592                document.getElementById("zotero-items-tree").ondblclick = function ondblclick(event) { 
     
    114101                 
    115102        } 
    116         } 
     103        } //The check for being in mid-change 
    117104  },  
    118105   
    119   isXMLNote: function(note_text) { 
     106  isXMLNote: function(item) { 
     107    if(item.getType() != 14) return false; 
    120108        var objDOMParser = new DOMParser(); 
    121         var xmlDoc = objDOMParser.parseFromString(note_text, "text/xml"); 
     109        var xmlDoc = objDOMParser.parseFromString(item.getNote(), "text/xml"); 
    122110        try { 
    123111                xmlDoc.evaluate("/mediannotate", xmlDoc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent; 
     
    159147  showMAPanel: function() { 
    160148        document.getElementById('zotero-item-pane-content').selectedPanel = document.getElementById('zotero-view-MA'); 
     149  }, 
     150   
     151  isPlayableItem: function() { 
     152        return this.isMediaAnnotation || this.item.getField('url').match(this.extensionMatch); 
     153  }, 
     154   
     155  getPlayableURL: function() { 
     156        var url = this.item.getField('url');; 
     157                if(this.isMediaAnnotation) url = this.parentItem.getField('url'); 
     158                else if(this.item.isRegularItem()) { 
     159                        var snapID = this.item.getBestSnapshot(); 
     160                        if (snapID) { 
     161                                url = Zotero.Items.get(snapID).getLocalFileURL(); 
     162                        }   
     163                } 
     164        return url; 
    161165  }, 
    162166   
  • MediAnnotateXPI/trunk/srcExtension/chrome/MediAnnotate/content/overlay.xul

    r139 r189  
    1313    <button  
    1414    id="zotero-attachment-view"  
    15         oncommand="mediannotate.isMediAnnotateCompatibleItem?mediannotate.workItOut(event):ZoteroPane.viewSelectedAttachment(event);"/> 
     15        oncommand="mediannotate.isPlayableItem()?mediannotate.workItOut(event):ZoteroPane.viewSelectedAttachment(event);"/> 
    1616         
    1717        <tree  
  • MediAnnotateXPI/trunk/srcExtension/install.rdf

    r188 r189  
    55    <em:id>videannotate@htmlweb.com</em:id> 
    66    <em:name>MediAnnotate</em:name> 
    7     <em:version>0.6.9.6</em:version> 
     7    <em:version>0.6.9.7</em:version> 
    88    <em:creator>Stuart Thiel Concordia University University</em:creator> 
    99    <em:developer>Stuart Thiel</em:developer> 
  • MediAnnotateXPI/trunk/update_mediannotate.rdf

    r188 r189  
    88      <RDF:li> 
    99        <RDF:Description> 
    10           <version>0.6.9.6</version> 
     10          <version>0.6.9.7</version> 
    1111          <targetApplication> 
    1212            <RDF:Description>