Changeset 27256

Show
Ignore:
Timestamp:
23.04.2013 16:56:08 (7 years ago)
Author:
sjm84
Message:

Allow visiting called templates as well as other improvements

Location:
main/trunk/greenstone3/web/interfaces/default/js
Files:
2 modified

Legend:

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

    r27218 r27256  
    527527                } 
    528528 
    529                 var getURL = gs.xsltParams.library_name + "?a=g&rt=r&s=GetTemplateListFromFile&s1.fileName=" + selectedItem.data("fileItem").path + "&s1.locationName=" + selectedItem.data("fileItem").location + "&s1.interfaceName=" + gs.xsltParams.interface_name + "&s1.siteName=" + gs.xsltParams.site_name + "&s1.collectionName=" + gs.cgiParams.c; 
    530                 $.ajax(getURL) 
    531                 .success(function(templateResponse) 
    532                 { 
    533                     var templateListStart = templateResponse.indexOf("<templateList>") + "<templateList>".length; 
    534                     var templateListEnd = templateResponse.indexOf("</templateList>"); 
    535                     var templateListString = templateResponse.substring(templateListStart, templateListEnd).replace(/&quot;/g, "\""); 
    536                     var templateList = eval(templateListString); 
    537  
    538                     _templateSelector.children("select").empty(); 
    539                     if(templateList.length == 0) 
    540                     { 
    541                         _templateSelector.children("select").append($("<option>-- No templates --</option>").data("index", -1)); 
    542                     } 
    543  
    544                     for(var i = 0; i < templateList.length; i++) 
    545                     { 
    546                         var filename = selectedItem.data("fileItem").path; 
    547                         var location = selectedItem.data("fileItem").location; 
    548                         var namespace = templateList[i].namespace; 
    549                         var nodename = "template"; 
    550                         var name = templateList[i].name; 
    551                         var match = templateList[i].match; 
    552  
    553                         if(name) 
    554                         { 
    555                             name = templateList[i].name.replace(/&apos;/g, "'").replace(/&quot;/g, "\"").replace(/&amp;/g, "&"); 
    556                         } 
    557                         if(match) 
    558                         { 
    559                             match = templateList[i].match.replace(/&apos;/g, "'").replace(/&quot;/g, "\"").replace(/&amp;/g, "&"); 
    560                         } 
    561  
    562                         var infoContainer = $("<option>"); 
    563  
    564                         _elements.push(infoContainer); 
    565  
    566                         addChangeEventToInfoContainer(infoContainer, filename, location, nodename, namespace, name, match); 
    567  
    568                         if(name && name.length > 0) 
    569                         { 
    570                             infoContainer.text(name); 
    571                         } 
    572                         if(match && match.length > 0) 
    573                         { 
    574                             infoContainer.text(match); 
    575                         } 
    576  
    577                         infoContainer.data("index", i); 
    578                         _templateSelector.children("select").append(infoContainer); 
    579                     } 
    580  
    581                     _templateSelector.children("select").trigger("change"); 
    582                 }); 
     529                _greenbug.populateTemplateSelectorFromFile(selectedItem.data("fileItem").path, selectedItem.data("fileItem").location, function(){_templateSelector.children("select").trigger("change")}); 
    583530            }); 
    584531        }) 
     
    654601        _elements.push(rightBorderDiv); 
    655602    } 
     603     
     604    this.populateTemplateSelectorFromFile = function(filename, location, callback) 
     605    { 
     606        var getURL = gs.xsltParams.library_name + "?a=g&rt=r&s=GetTemplateListFromFile&s1.fileName=" + filename + "&s1.locationName=" + location + "&s1.interfaceName=" + gs.xsltParams.interface_name + "&s1.siteName=" + gs.xsltParams.site_name + "&s1.collectionName=" + gs.cgiParams.c; 
     607        $.ajax(getURL) 
     608        .success(function(templateResponse) 
     609        { 
     610            var templateListStart = templateResponse.indexOf("<templateList>") + "<templateList>".length; 
     611            var templateListEnd = templateResponse.indexOf("</templateList>"); 
     612            var templateListString = templateResponse.substring(templateListStart, templateListEnd).replace(/&quot;/g, "\""); 
     613            var templateList = eval(templateListString); 
     614 
     615            _templateSelector.children("select").empty(); 
     616            if(templateList.length == 0) 
     617            { 
     618                _templateSelector.children("select").append($("<option>-- No templates --</option>").data("index", -1)); 
     619            } 
     620 
     621            for(var i = 0; i < templateList.length; i++) 
     622            { 
     623                var namespace = templateList[i].namespace; 
     624                var nodename = "template"; 
     625                var name = templateList[i].name; 
     626                var match = templateList[i].match; 
     627 
     628                if(name) 
     629                { 
     630                    name = templateList[i].name.replace(/&apos;/g, "'").replace(/&quot;/g, "\"").replace(/&amp;/g, "&"); 
     631                } 
     632                if(match) 
     633                { 
     634                    match = templateList[i].match.replace(/&apos;/g, "'").replace(/&quot;/g, "\"").replace(/&amp;/g, "&"); 
     635                } 
     636 
     637                var infoContainer = $("<option>"); 
     638 
     639                _elements.push(infoContainer); 
     640 
     641                addChangeEventToInfoContainer(infoContainer, filename, location, nodename, namespace, name, match); 
     642 
     643                if(name && name.length > 0) 
     644                { 
     645                    infoContainer.text(name); 
     646                } 
     647                if(match && match.length > 0) 
     648                { 
     649                    infoContainer.text(match); 
     650                } 
     651 
     652                infoContainer.data("index", i); 
     653                _templateSelector.children("select").append(infoContainer); 
     654            } 
     655             
     656            if(callback) 
     657            { 
     658                callback(); 
     659            } 
     660        }); 
     661    } 
    656662 
    657663    //Change the current template in the XML and Visual editor 
     
    750756    } 
    751757     
     758    this.getTemplateTracker = function() 
     759    { 
     760        return _templateTracker; 
     761    } 
     762     
    752763    //Turns a filename into it's location (i.e. interface/site/collection) and name 
    753764    this.fileNameToLocationAndName = function(filepath) 
     
    776787            filename = filepath.replace(/.*[\/\\]sites[\/\\].*[\/\\]transform[\/\\]/, ""); 
    777788        } 
     789         
     790        filename = filename.replace(/\\/g, "/"); 
    778791         
    779792        return {location:location, filename:filename}; 
  • main/trunk/greenstone3/web/interfaces/default/js/visual-xml-editor.js

    r27218 r27256  
    11461146        { 
    11471147            return _id; 
     1148        } 
     1149         
     1150        var visitCalledTemplate = function() 
     1151        { 
     1152            var url = gs.xsltParams.library_name + "?a=g&rt=r&s=ResolveCallTemplate&s1.interfaceName=" + gs.xsltParams.interface_name + "&s1.siteName=" + gs.xsltParams.site_name + "&s1.collectionName=" + gs.cgiParams.c + "&s1.fileName=" + _fileName + "&s1.templateName=" + _xmlNode.getAttribute("name"); 
     1153            $.ajax(url) 
     1154            .success(function(response) 
     1155            { 
     1156                var startIndex = response.indexOf("<requestedTemplate>") + ("<requestedTemplate>").length; 
     1157                var endIndex = response.indexOf("</requestedTemplate>"); 
     1158                 
     1159                if(endIndex != -1) 
     1160                { 
     1161                    var templateFileName = response.substring(startIndex, endIndex); 
     1162                    var file = _greenbug.fileNameToLocationAndName(templateFileName); 
     1163                     
     1164                    var fileTemplateName = file.filename.replace(/\\/g, "/") + " (" + file.location + ")"; 
     1165                    $("#veFileSelector").find("option").filter(function(){return $(this).text() == fileTemplateName}).prop("selected", true); 
     1166                    _greenbug.populateTemplateSelectorFromFile(file.filename, file.location); 
     1167                    _greenbug.changeCurrentTemplate(file.location, file.filename, "template", "xsl", _xmlNode.getAttribute("name"), null); 
     1168                } 
     1169                else 
     1170                { 
     1171                    _greenbug.changeCurrentTemplate("interface", "gslib.xsl", "template", "xsl", _xmlNode.getAttribute("name"), null); 
     1172                } 
     1173            }); 
    11481174        } 
    11491175 
     
    12491275                     
    12501276                    visitTemplateOption.button(); 
    1251                     visitTemplateOption.click(function() 
    1252                     { 
    1253                         var url = gs.xsltParams.library_name + "?a=g&rt=r&s=ResolveCallTemplate&s1.interfaceName=" + gs.xsltParams.interface_name + "&s1.siteName=" + gs.xsltParams.site_name + "&s1.collectionName=" + gs.cgiParams.c + "&s1.fileName=" + _fileName + "&s1.templateName=" + _xmlNode.getAttribute("name"); 
    1254                         $.ajax(url) 
    1255                         .success(function(response) 
    1256                         { 
    1257                             var startIndex = response.indexOf("<requestedTemplate>") + ("<requestedTemplate>").length; 
    1258                             var endIndex = response.indexOf("</requestedTemplate>"); 
    1259                              
    1260                             if(endIndex != -1) 
    1261                             { 
    1262                                 var templateFileName = response.substring(startIndex, endIndex); 
    1263                                 var file = _greenbug.fileNameToLocationAndName(templateFileName); 
    1264                                 _greenbug.changeCurrentTemplate(file.location, file.filename, "template", "xsl", _xmlNode.getAttribute("name"), null); 
    1265                             } 
    1266                             else 
    1267                             { 
    1268                                 _greenbug.changeCurrentTemplate("interface", "gslib.xsl", "template", "xsl", _xmlNode.getAttribute("name"), null); 
    1269                             } 
    1270                         }); 
    1271                     }); 
     1277                    visitTemplateOption.click(visitCalledTemplate); 
    12721278                } 
    12731279            } 
     
    12861292            { 
    12871293                event.stopPropagation(); 
    1288                 _div.css("border", "1px solid orange"); 
     1294                if(!_selectedElement || _id != _selectedElement.data("parentVEElement").getID()) 
     1295                { 
     1296                    _div.css("border", "1px solid orange"); 
     1297                } 
     1298 
    12891299                var titleString = " "; 
    12901300                if(_xmlNode.nodeType == 1) 
     
    13071317            _div.mouseout(function(event) 
    13081318            { 
    1309                 _div.css("border", "1px solid black"); 
     1319                if(!_selectedElement || _id != _selectedElement.data("parentVEElement").getID()) 
     1320                { 
     1321                    _div.css("border", "1px solid black"); 
     1322                } 
    13101323                event.stopPropagation(); 
    13111324            }); 
    13121325            _div.click(function(event) 
    13131326            { 
     1327                event.stopPropagation(); 
    13141328                if(_selectedElement) 
    13151329                { 
    13161330                    _selectedElement.css("border", _selectedElement.prevBorder); 
     1331                    if(_selectedElement.children("a").length) 
     1332                    { 
     1333                        _selectedElement.children("a").replaceWith(_selectedElement.children("a").children(".veTitleElement")); 
     1334                    } 
    13171335                } 
    13181336                _selectedElement = _div; 
     
    13221340                _div.data("parentVEElement").focus(); 
    13231341                _div.data("parentVEElement").populateInformationDiv(); 
    1324  
    1325                 event.stopPropagation(); 
     1342                 
     1343                if(_xmlNode.tagName == "xsl:call-template" && _xmlNode.getAttribute("name").length > 0) 
     1344                { 
     1345                    var link = $("<a>"); 
     1346                    link.attr("href", "javascript:;"); 
     1347                    link.click(visitCalledTemplate); 
     1348                    link.append(_div.children(".veTitleElement")); 
     1349                    _div.append(link); 
     1350                } 
    13261351            }); 
    13271352        }