Changeset 27790

Show
Ignore:
Timestamp:
09.07.2013 16:01:44 (6 years ago)
Author:
sjm84
Message:

Modified the code so that no async calls we being called at the same time

Files:
1 modified

Legend:

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

    r26704 r27790  
    217217        var changedElem = changes[i]; 
    218218 
     219        var metadataChanges = new Array(); 
     220         
    219221        //Save metadata  
    220222        if(gs.functions.hasClass(changedElem, "metaTableCell"))  
     
    234236            value = escape(value); 
    235237 
    236             if(changedElem.originalValue) 
    237             { 
    238                 gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, name, null, value, changedElem.originalValue, "override", function(){console.log("SAVED ARCHIVES");}); 
    239             } 
    240             else 
    241             { 
    242                 gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, name, null, value, null, "accumulate", function(){console.log("SAVED ARCHIVES");}); 
    243             } 
     238            metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:changedElem.originalValue}); 
     239 
    244240            changedElem.originalValue = changedElem.innerHTML; 
    245241            addCollectionToBuild(collection); 
     
    260256        } 
    261257    } 
    262  
    263     var request = "["; 
    264     for(var i = 0; i < _transactions.length; i++) 
    265     { 
    266         request += _transactions[i]; 
    267         if(i != _transactions.length - 1) 
    268         { 
    269             request += ","; 
    270         } 
    271     } 
    272     request += "]"; 
    273  
    274     var statusID; 
    275     var ajax = new gs.functions.ajaxRequest(); 
    276     ajax.open("POST", gs.xsltParams.library_name, true); 
    277     ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    278     ajax.onreadystatechange = function() 
    279     { 
    280         if(ajax.readyState == 4 && ajax.status == 200) 
    281         { 
    282             var text = ajax.responseText; 
    283             var xml = validateXML(text); 
    284              
    285             var errorElems; 
    286             if(!xml || checkForErrors(xml)) 
     258     
     259    var sendBuildRequest = function() 
     260    { 
     261        var request = "["; 
     262        for(var i = 0; i < _transactions.length; i++) 
     263        { 
     264            request += _transactions[i]; 
     265            if(i != _transactions.length - 1) 
    287266            { 
    288                 alert(gs.text.dse.error_saving); 
    289              
    290                 var saveButton = document.getElementById("saveButton"); 
    291                 saveButton.innerHTML = gs.text.dse.save_changes; 
    292                 saveButton.disabled = false; 
     267                request += ","; 
     268            } 
     269        } 
     270        request += "]"; 
     271 
     272        var statusID; 
     273        var ajax = new gs.functions.ajaxRequest(); 
     274        ajax.open("POST", gs.xsltParams.library_name, true); 
     275        ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     276        ajax.onreadystatechange = function() 
     277        { 
     278            if(ajax.readyState == 4 && ajax.status == 200) 
     279            { 
     280                var text = ajax.responseText; 
     281                var xml = validateXML(text); 
    293282                 
     283                var errorElems; 
     284                if(!xml || checkForErrors(xml)) 
     285                { 
     286                    alert(gs.text.dse.error_saving); 
     287                 
     288                    var saveButton = document.getElementById("saveButton"); 
     289                    saveButton.innerHTML = gs.text.dse.save_changes; 
     290                    saveButton.disabled = false; 
     291                     
     292                    _statusBar.removeStatus(statusID); 
     293                    return; 
     294                } 
     295 
    294296                _statusBar.removeStatus(statusID); 
    295                 return; 
     297                buildCollections(_collectionsToBuild); 
    296298            } 
    297  
    298             _statusBar.removeStatus(statusID); 
    299             buildCollections(_collectionsToBuild); 
    300         } 
    301     } 
    302  
    303     if(_collectionsToBuild.length > 0) 
    304     { 
    305         var saveButton = document.getElementById("saveButton"); 
    306         saveButton.innerHTML = gs.text.dse.saving + "..."; 
    307         saveButton.disabled = true; 
    308  
    309         statusID = _statusBar.addStatus(gs.text.dse.modifying_archives + "..."); 
    310         ajax.send("a=g&rt=r&s=DocumentExecuteTransaction&s1.transactions=" + request); 
    311     } 
     299        } 
     300 
     301        if(_collectionsToBuild.length > 0) 
     302        { 
     303            var saveButton = document.getElementById("saveButton"); 
     304            saveButton.innerHTML = gs.text.dse.saving + "..."; 
     305            saveButton.disabled = true; 
     306 
     307            statusID = _statusBar.addStatus(gs.text.dse.modifying_archives + "..."); 
     308            ajax.send("a=g&rt=r&s=DocumentExecuteTransaction&s1.transactions=" + request); 
     309        } 
     310    } 
     311     
     312    var setMetadataLoop = function(index) 
     313    { 
     314        var change = metadataChanges[index]; 
     315         
     316        var callbackFunction; 
     317        if(index + 1 == metadataChanges.length) 
     318        { 
     319            callbackFunction = sendBuildRequest; 
     320        } 
     321        else 
     322        { 
     323            callbackFunction = function(){setMetadataLoop(index + 1)}; 
     324        } 
     325         
     326        if(change.orig) 
     327        { 
     328            gs.functions.setArchivesMetadata(change.collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, change.orig, "override", function(){callbackFunction();}); 
     329        } 
     330        else 
     331        { 
     332            gs.functions.setArchivesMetadata(change.collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, null, "accumulate", function(){callbackFunction();}); 
     333        } 
     334    } 
     335    setMetadataLoop(0); 
    312336} 
    313337