Changeset 27790


Ignore:
Timestamp:
2013-07-09T16:01:44+12:00 (11 years ago)
Author:
sjm84
Message:

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

File:
1 edited

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
Note: See TracChangeset for help on using the changeset viewer.