Changeset 29110


Ignore:
Timestamp:
2014-06-26T11:32:03+12:00 (10 years ago)
Author:
kjdon
Message:

encodeURI doesn't seem to be needed??? why??? have removed it for now. may need to add back in. fixed up the remove metadata processing. Need to put them into the processing loop with call backs. otherwise it will send off the requests to remove the metadata, and then rebuild before those requests have finished. Inside the loop, the next change request is only called once the first one is finished.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/documentmaker_scripts_util.js

    r29085 r29110  
    176176}
    177177
    178 function save()
    179 {
    180     //This works in most cases but will not work when taking a doc from one collection to another, will need to be fixed at some point
    181     var collection;
    182     if(gs.cgiParams.c && gs.cgiParams.c != "")
    183     {
    184         collection = gs.cgiParams.c
    185     }
    186     else
    187     {
    188         collection = gs.cgiParams.p_c
    189     }
    190 
    191     for(var i = 0; i < _deletedMetadata.length; i++)
    192     {
    193         var currentRow = _deletedMetadata[i];
    194 
    195         //Get document ID
    196         var currentElem = currentRow;
    197         while((currentElem = currentElem.parentNode).tagName != "TABLE");
    198         var docID = currentElem.getAttribute("id").substring(4);
    199 
    200         //Get metadata name
    201         var cells = currentRow.getElementsByTagName("TD");
    202         var nameCell = cells[0];
    203         var name = nameCell.innerHTML;
    204         var valueCell = cells[1];
    205         var value = valueCell.innerHTML;
    206        
    207         gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, docID, name, null, value, function(){console.log("REMOVED ARCHIVES");});
    208         addCollectionToBuild(collection);
    209        
    210         removeFromParent(currentRow);
    211     }
    212 
     178function save()
     179{
     180//This works in most cases but will not work when taking a doc from one collection to another, will need to be fixed at some point
     181  var collection;
     182  if(gs.cgiParams.c && gs.cgiParams.c != "") {
     183   
     184    collection = gs.cgiParams.c;
     185  }
     186  else {
     187    collection = gs.cgiParams.p_c;
     188  }
     189 
    213190    var sendBuildRequest = function()
    214191    {
     
    271248    }
    272249
    273     var changes = de.Changes.getChangedEditableSections();
    274     var metadataChanges = new Array();
    275     if (changes.length == 0) {
    276       sendBuildRequest();
    277       return;
    278     }
    279    
     250  var metadataChanges = new Array();
     251  if (_deletedMetadata.length > 0) {
     252    addCollectionToBuild(collection);
     253
     254    for(var i = 0; i < _deletedMetadata.length; i++) {
     255     
     256      var currentRow = _deletedMetadata[i];
     257     
     258      //Get document ID
     259      var currentElem = currentRow;
     260      while((currentElem = currentElem.parentNode).tagName != "TABLE");
     261      var docID = currentElem.getAttribute("id").substring(4);
     262     
     263      //Get metadata name
     264      var cells = currentRow.getElementsByTagName("TD");
     265      var nameCell = cells[0];
     266      var name = nameCell.innerHTML;
     267      var valueCell = cells[1];
     268      var value = valueCell.innerHTML;
     269      metadataChanges.push({type:'delete', docID:docID, name:name, value:value});
     270      removeFromParent(currentRow);
     271    }
     272  }
     273
     274  var changes = de.Changes.getChangedEditableSections();
    280275    for(var i = 0; i < changes.length; i++)
    281276    {
     
    297292            var value = changedElem.innerHTML;
    298293            value = value.replace(/&nbsp;/g, " ");
    299             value = encodeURI(value);
    300294
    301295            var orig = changedElem.originalValue;
    302296            if (orig) {
    303297              orig = orig.replace(/&nbsp;/g, " ");
    304               orig = encodeURI(orig);
    305             }
    306             //changedElem.originalValue = changedElem.innerHTML;
    307             //metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:changedElem.originalValue});
     298            }
    308299            metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:orig});
    309300            changedElem.originalValue = changedElem.innerHTML;
    310             //changedElem.originalValue = value;
    311301            addCollectionToBuild(collection);
    312302        }
     
    326316        }
    327317    }
    328    
    329    
    330    
    331     var setMetadataLoop = function(index)
     318
     319   
     320    var processChangesLoop = function(index)
    332321    {
    333322     
     
    341330        else
    342331        {
    343             callbackFunction = function(){setMetadataLoop(index + 1)};
    344         }
    345        
    346         if(change.orig)
    347         {
    348             gs.functions.setArchivesMetadata(change.collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, change.orig, "override", function(){callbackFunction();});
    349         }
    350         else
    351         {
    352             gs.functions.setArchivesMetadata(change.collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, null, "accumulate", function(){callbackFunction();});
    353         }
    354     }
    355     setMetadataLoop(0);
    356 }
     332            callbackFunction = function(){processChangesLoop(index + 1)};
     333        }
     334        if (change.type == "delete") {
     335          gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, function(){callbackFunction();});
     336        } else {
     337          if(change.orig)
     338            {
     339              gs.functions.setArchivesMetadata(change.collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, change.orig, "override", function(){callbackFunction();});
     340            }
     341          else
     342            {
     343              gs.functions.setArchivesMetadata(change.collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, null, "accumulate", function(){callbackFunction();});
     344            }
     345        }
     346    }
     347    processChangesLoop(0);
     348
     349}
     350
    357351
    358352function buildCollections(collections, documents, callback)
Note: See TracChangeset for help on using the changeset viewer.