Show
Ignore:
Timestamp:
26.01.2012 14:24:46 (8 years ago)
Author:
sjm84
Message:

Added in a lot of useful functions into the global functions for Greenstone 3

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/oran/js/javascript-global-functions.js

    r24930 r25008  
    6060    } 
    6161} 
     62 
     63gs.functions.buildCollections = function(collections, finalFunction) 
     64{ 
     65    if(!collections || collections.length == 0) 
     66    { 
     67        console.log("List of collections to build is empty"); 
     68        return; 
     69    } 
     70 
     71    var counter = 0; 
     72    var buildFunction = function() 
     73    { 
     74        var ajax = new gs.functions.ajaxRequest(); 
     75        ajax.open("GET", _baseURL + "?a=g&rt=r&ro=1&s=BuildCollection&s1.collection=" + collections[counter]); 
     76        ajax.onreadystatechange = function() 
     77        { 
     78            if(ajax.readyState == 4 && ajax.status == 200) 
     79            { 
     80                var text = ajax.responseText; 
     81                var xml = validateXML(text); 
     82 
     83                if(!xml || checkForErrors(xml)) 
     84                { 
     85                    console.log("Could not build collection -> " + collections[counter] + ", aborting"); 
     86                    return; 
     87                } 
     88 
     89                var status = xml.getElementsByTagName("status")[0]; 
     90                var pid = status.getAttribute("pid"); 
     91 
     92                startCheckLoop(pid, "BuildCollection", function() 
     93                { 
     94                    var localAjax = new gs.functions.ajaxRequest(); 
     95                    localAjax.open("GET", _baseURL + "?a=g&rt=r&ro=1&s=ActivateCollection&s1.collection=" + collections[counter], true); 
     96                    localAjax.onreadystatechange = function() 
     97                    { 
     98                        if(localAjax.readyState == 4 && localAjax.status == 200) 
     99                        { 
     100                            var localText = localAjax.responseText; 
     101                            var localXML = validateXML(localText); 
     102                             
     103                            if(!xml || checkForErrors(xml)) 
     104                            { 
     105                                console.log("Could not activate collection -> " + collections[counter] + ", aborting"); 
     106                                return; 
     107                            } 
     108 
     109                            var localStatus = localXML.getElementsByTagName("status")[0]; 
     110                            if(localStatus) 
     111                            { 
     112                                var localPID = localStatus.getAttribute("pid"); 
     113                                startCheckLoop(localPID, "ActivateCollection", function() 
     114                                { 
     115                                    if (++counter == _collections.length) 
     116                                    { 
     117                                        //Run this function once we are done building all the collections 
     118                                        if(finalFunction){finalFunction();} 
     119                                    } 
     120                                    else 
     121                                    { 
     122                                        buildFunction(); 
     123                                    } 
     124                                }); 
     125                            } 
     126                        } 
     127                    } 
     128                    localAjax.send(); 
     129                }); 
     130            } 
     131        } 
     132        ajax.send(); 
     133    } 
     134    buildFunction(); 
     135} 
     136 
     137function startCheckLoop(pid, serverFunction, callbackFunction) 
     138{ 
     139    var ajaxFunction = function() 
     140    { 
     141        var ajax = new gs.functions.ajaxRequest(); 
     142        ajax.open("GET", _baseURL + "?a=g&rt=s&ro=1&s=" + serverFunction + "&s1.pid=" + pid, true); 
     143        ajax.onreadystatechange = function() 
     144        { 
     145            if(ajax.readyState == 4 && ajax.status == 200) 
     146            { 
     147                var text = ajax.responseText; 
     148                var xml = validateXML(text); 
     149                 
     150                if(!xml || checkForErrors(xml)) 
     151                { 
     152                    console.log("Could not check status of " + serverFunction + ", there was an error in the XML, aborting");        
     153                    return; 
     154                } 
     155 
     156                var status = xml.getElementsByTagName("status")[0]; 
     157                var code = status.getAttribute("code"); 
     158 
     159                if (code == COMPLETED || code == SUCCESS) 
     160                { 
     161                    callbackFunction(); 
     162                } 
     163                else if (code == HALTED || code == ERROR) 
     164                { 
     165                    console.log("Could not check status of " + serverFunction + ", there was an error on the server, aborting"); 
     166                } 
     167                else 
     168                { 
     169                    setTimeout(ajaxFunction, 1000); 
     170                } 
     171            } 
     172        } 
     173        ajax.send(); 
     174    } 
     175    ajaxFunction(); 
     176} 
     177 
     178function callMetadataServer(callingFunction, url, responseFunction) 
     179{ 
     180    var ajax = new gs.functions.ajaxRequest(); 
     181    ajax.open("GET", url, true); 
     182    ajax.onreadystatechange = function() 
     183    { 
     184        if(ajax.readyState == 4 && ajax.status == 200) 
     185        { 
     186            console.log("(" + callingFunction + ") Response received from server: " + ajax.responseText); 
     187             
     188            if(responseFunction != null) 
     189            { 
     190                responseFunction(ajax.responseText); 
     191            } 
     192        } 
     193        else if(ajax.readyState == 4) 
     194        { 
     195            console.log("(" + callingFunction + ") Failed"); 
     196        } 
     197    } 
     198} 
     199 
     200/************************* 
     201* SET METADATA FUNCTIONS * 
     202*************************/ 
     203 
     204gs.functions.setImportMetadata = function(collection, site, documentID, metadataName, metadataValue, responseFunction) 
     205{ 
     206    callMetadataServer("setImportMetadata", "cgi-bin/metadata-server.pl?a=set-import-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     207} 
     208 
     209gs.functions.setArchivesMetadata = function(collection, site, documentID, metadataName, metadataPosition, metadataValue, responseFunction) 
     210{ 
     211    if(metadataPosition != null) 
     212    { 
     213        callMetadataServer("setArchivesMetadata", "cgi-bin/metadata-server.pl?a=set-archives-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metapos=" + metadataPosition, responseFunction); 
     214    } 
     215    else if(metadataValue != null) 
     216    { 
     217        callMetadataServer("setArchivesMetadata", "cgi-bin/metadata-server.pl?a=set-archives-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     218    } 
     219} 
     220 
     221gs.functions.setIndexMetadata = function(collection, site, documentID, metadataName, metadataPosition, metadataValue, responseFunction) 
     222{ 
     223    if(metadataPosition != null) 
     224    { 
     225        callMetadataServer("setIndexMetadata", "cgi-bin/metadata-server.pl?a=set-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metapos=" + metadataPosition, responseFunction); 
     226    } 
     227    else if(metadataValue != null) 
     228    { 
     229        callMetadataServer("setIndexMetadata", "cgi-bin/metadata-server.pl?a=set-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     230    } 
     231} 
     232 
     233gs.functions.setMetadata = function(collection, site, documentID, metadataName, metadataValue, responseFunction) 
     234{ 
     235    var nameArray = ["setImportMetadata", "setArchivesMetadata", "setIndexMetadata"]; 
     236    var functionArray = ["set-import-metadata", "set-archives-metadata", "set-metadata"]; 
     237     
     238    for(var i = 0; i < nameArray.length; i++) 
     239    { 
     240        callMetadataServer(nameArray[i], "cgi-bin/metadata-server.pl?a=" + functionArray[i] + "&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     241    } 
     242} 
     243 
     244/************************* 
     245* GET METADATA FUNCTIONS * 
     246*************************/ 
     247 
     248gs.functions.getImportMetadata = function(collection, site, documentID, metadataName, responseFunction) 
     249{ 
     250    var url = "cgi-bin/metadata-server.pl?a=get-import-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName; 
     251    callMetadataServer("getImportMetadata", url, function(responseText) 
     252    { 
     253        var metadata = new GSMetadata(collection, site, documentID, metadataName, null, responseText); 
     254        if(responseFunction != null) 
     255        { 
     256            responseFunction(metadata); 
     257        } 
     258    }); 
     259} 
     260 
     261gs.functions.getArchivesMetadata = function(collection, site, documentID, metadataName, metadataPosition,  responseFunction) 
     262{ 
     263    var url = "cgi-bin/metadata-server.pl?a=get-archives-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName; 
     264    if(metadataPosition != null) 
     265    { 
     266        url += "&metapos=" + metadataPosition; 
     267    } 
     268 
     269    callMetadataServer("getArchivesMetadata", url, function(responseText) 
     270    { 
     271        var metadata = new GSMetadata(collection, site, documentID, metadataName, metadataPosition, responseText); 
     272        if(responseFunction != null) 
     273        { 
     274            responseFunction(metadata); 
     275        } 
     276    }); 
     277} 
     278 
     279gs.functions.getIndexMetadata = function(collection, site, documentID, metadataName, metadataPosition, responseFunction) 
     280{ 
     281    var url = "cgi-bin/metadata-server.pl?a=get-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName; 
     282    if(metadataPosition != null) 
     283    { 
     284        url += "&metapos=" + metadataPosition; 
     285    } 
     286 
     287    callMetadataServer("getIndexMetadata", url, function(responseText) 
     288    { 
     289        var metadata = new GSMetadata(collection, site, documentID, metadataName, metadataPosition, responseText); 
     290         
     291        if(responseFunction != null) 
     292        { 
     293            responseFunction(metadata); 
     294        } 
     295    }); 
     296} 
     297 
     298/**************************** 
     299* REMOVE METADATA FUNCTIONS * 
     300****************************/ 
     301 
     302gs.functions.removeImportMetadata = function(collection, site, documentID, metadataName, metadataValue, responseFunction) 
     303{ 
     304    callMetadataServer("removeImportMetadata", "cgi-bin/metadata-server.pl?a=remove-import-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     305} 
     306 
     307gs.functions.removeArchivesMetadata = function(collection, site, documentID, metadataName, metadataPosition, metadataValue, responseFunction) 
     308{    
     309    if(metadataPosition != null) 
     310    { 
     311        callMetadataServer("removeArchiveMetadata", "cgi-bin/metadata-server.pl?a=remove-archive-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metapos=" + metadataPosition, responseFunction); 
     312    } 
     313    else if(metadataValue != null) 
     314    { 
     315        callMetadataServer("removeArchiveMetadata", "cgi-bin/metadata-server.pl?a=remove-archive-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     316    } 
     317} 
     318 
     319gs.functions.removeIndexMetadata = function(collection, site, documentID, metadataName, metadataPosition, metadataValue, responseFunction) 
     320{ 
     321    if(metadataPosition != null) 
     322    { 
     323        callMetadataServer("removeIndexMetadata", "cgi-bin/metadata-server.pl?a=remove-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metapos=" + metadataPosition, responseFunction); 
     324    } 
     325    else if(metadataValue != null) 
     326    { 
     327        callMetadataServer("removeIndexMetadata", "cgi-bin/metadata-server.pl?a=remove-metadata&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     328    } 
     329} 
     330 
     331gs.functions.removeMetadata = function(collection, site, documentID, metadataName, metadataValue, responseFunction) 
     332{ 
     333    var nameArray = ["removeImportMetadata", "removeArchivesMetadata", "removeIndexMetadata"]; 
     334    var functionArray = ["remove-import-metadata", "remove-archives-metadata", "remove-metadata"]; 
     335     
     336    for(var i = 0; i < nameArray.length; i++) 
     337    { 
     338        callMetadataServer(nameArray[i], "cgi-bin/metadata-server.pl?a=" + functionArray[i] + "&c=" + collection + "&site=" + site + "&d=" + documentID + "&metaname=" + metadataName + "&metavalue=" + metadataValue, responseFunction); 
     339    } 
     340}