Changeset 26749
- Timestamp:
- 2013-01-18T18:37:03+13:00 (11 years ago)
- Location:
- gs3-extensions/html-to-expeditee/trunk/src
- Files:
-
- 1 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/html-to-expeditee/trunk/src/INSTALL-FOR-GREENSTONE3.sh
r26745 r26749 25 25 > ../../web/WEB-INF/cgi/export-individual-expeditee.pl 26 26 27 cat src/cgi-bin/generate-collection-space.pl.in \28 | sed "s%@FULL_PERL_EXE@%$FULL_PERL_EXE%g" \29 > ../../web/WEB-INF/cgi/generate-collection-space.pl30 27 } 31 28 … … 64 61 installPerlCGI 65 62 fi 66 67 if [ ! -f ../../web/WEB-INF/cgi/generate-collection-space.pl ] ; then68 echo "Installing generate-collection-space.pl to cgi-bin directory"69 installPerlCGI70 elif [ "src/cgi-bin/generate-collection-space.pl.in" -nt "../../web/WEB-INF/cgi/generate-collection-space.pl" ] ; then71 echo "Installing latest version of generate-collection-space.pl to cgi-bin directory"72 installPerlCGI73 fi -
gs3-extensions/html-to-expeditee/trunk/src/perllib/ExpediteeFrameIO.pm
r26731 r26749 647 647 $y += 16; # y-value of text item in Expeditee is it's base line 648 648 $x += 4; 649 650 my $link = $html_node->{'link'}; 651 $attr->{'l'} = $link if defined $link; 649 652 650 653 my $data = $html_node->{'data'}; -
gs3-extensions/html-to-expeditee/trunk/src/perllib/cgiactions/CollectionSpaceAction.pm
r26746 r26749 49 49 my $action_table = 50 50 { 51 "generate-frame" => { 'compulsory-args' => [ "fn", "json" ],51 "generate-frame" => { 'compulsory-args' => [ "fn", "json","cl" ], 52 52 'optional-args' => [] }, 53 53 }; -
gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin/html-to-expeditee.pl.in
r26743 r26749 1 1 #!/cygdrive/c/strawberry/perl/bin/perl -w 2 2 3 3 # Need to specify the full path of Perl above, e.g. for Windows something like 4 4 #!C:\\Perl32\\bin\\perl -w 5 6 5 7 6 use strict; … … 29 28 } 30 29 31 32 30 sub generate_html_form 33 31 { 34 my ($isGSDL2,$site,$collect,$cl) = @_; 35 36 my $html_form = <<EOT; 37 <html> 38 <head> 39 <title>HTML to Expeditee Frames</title> 40 41 <base href=".." /> 42 43 <link type="text/css" href="ext/html-to-expeditee/jquery/css/le-frog/jquery-ui-1.8.16.custom.css" rel="stylesheet" /> 44 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-1.6.2.min.js"></script> 45 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-ui-1.8.16.custom.min.js"></script> 46 <script type="text/javascript" src="ext/html-to-expeditee/js/gsajax-min.js"></script> 47 <script type="text/javascript" src="ext/html-to-expeditee/js/html-to-expeditee.js"></script> 48 49 </head> 50 <body> 51 <form class="ui-widget"> 52 Convert the collection 53 <input type="text" 54 class="ui-corner-all" style="padding: 4px;" 55 name="collect" value="$collect" id="collect" /> 56 to Expeditee frames by traversing the classifier 57 <input type="text" 58 class="ui-corner-all" style="padding: 4px;" 59 name="cl" value="$cl" id="cl" /> 60 61 <input value="$site" name="site" id="site" type="hidden"> 32 my($isGSDL2,$site,$collect,$cl) = @_; 33 34 # first generate the document frames 35 # then generate the classifier browsing frames. 36 37 my $html_form = <<EOT; 38 <html> 39 <head> 40 <title>HTML To Expeditee Frames</title> 41 <base href=".."/> 42 43 <link type="text/css" href="ext/html-to-expeditee/jquery/css/le-frog/jquery-ui-1.8.16.custom.css" rel="stylesheet" /> 44 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-1.6.2.min.js"></script> 45 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-ui-1.8.16.custom.min.js"></script> 46 <script type="text/javascript" src="ext/html-to-expeditee/js/gsajax-min.js"></script> 47 <script type="text/javascript" src="ext/html-to-expeditee/js/html-to-expeditee.js"></script> 48 </head> 49 <body> 50 <form class="ui-widget"> 51 Convert the collection <input type="text" class="ui-corner-all" style="padding: 4px;" name="collect" value="$collect" id="collect" /> to Expeditee frames by traversing the classifier <input type="text" class="ui-corner-all" style="padding: 4px;" name="cl" value="$cl" id="cl" /> 52 53 <input value="$site" name="site" id="site" type="hidden"> 62 54 63 <p> 64 <input type="checkbox" id="checkBoxBrowsing" name="generate_browsing" value="generate_browsing">Generate Collection Space<br/> 65 </p> 66 67 <p style="font-weight: bold;">Extra Expeditee Frame Output Options:</p> 68 <input type="checkbox" id="checkBoxFont" name="compute_font" value="compute_font">Compute Font<br/> 69 <input type="checkbox" id="checkBoxWidth" name="compute_width" value="compute_width">Compute Width<br/> 70 71 <p><input value="Go" id="go" class="ui-button ui-widget ui-state-default ui-corner-all" type="submit"><p> 72 73 </form> 74 <script type="text/javascript"> 75 var docOIDs = []; 76 var numDocOIDs; 77 var compute_font = false; 78 var compute_width = false; 79 var generate_browsing = false; //whether to generate a matching browsing frameset 80 81 \$(function() { 82 \$('#progress').progressbar(); 83 84 \$('#go').button().click(function() { 85 var collect = document.getElementById("collect").value; 86 if (collect.match(/^\\s*\$/)) { 87 alert("No collection specified"); 88 return false; 89 } 90 91 var cl = document.getElementById("cl").value; 92 if (cl.match(/^\\s*\$/)) { 93 alert("No classifier specified"); 94 return false; 95 } 96 if (cl.match(/^\\d+\$/)) { 97 cl = "CL" + cl; 98 } 99 100 compute_font = document.getElementById("checkBoxFont").checked; 101 compute_width = document.getElementById("checkBoxWidth").checked; 102 103 generate_browsing = document.getElementById("checkBoxBrowsing").checked; 104 105 var gs2=$isGSDL2; 106 107 var url; 108 if (gs2) { 109 url = "library.cgi"; 110 url += "?c="+collect +"&a=d&cl=" + cl; 111 } 112 else { 113 url = "library"; 114 url += "?c="+collect +"&a=b&rt=s&s=ClassifierBrowse&cl=" + cl; 115 url += "&excerptid=gs_content"; 116 } 117 118 console.log("*** CHECKING URL: " + url); 119 120 /* processing animation */ 121 122 docOIDs = []; 123 var outstandingURLs = []; 124 var visitedURLs = {}; 125 126 outstandingURLs.push(url); 127 visitedURLs[url] = 1; 128 129 while (outstandingURLs.length>0) { 130 url = outstandingURLs.shift(); 131 132 var clHtml = urlGetSync(url); 133 134 var aElems; 135 var workingTrav = document.getElementById("workingTraverse"); 136 workingTrav.innerHTML = clHtml; 137 aElems = workingTrav.getElementsByTagName("a"); 138 139 140 /* any links with a=(b|d) ... cl=??? => outstandingURLS */ 141 /* any links with a=d ... d=??? => docOIDS */ 142 143 /* 144 var actionRE = new RegExp("(\\\\?|&)a=(?:d|b)(&|\$)"); 145 var clRE = new RegExp("(\\\\?|&)cl=" + cl + "(\\\\.\\\\d+)+(&|\$)"); 146 var docRE = new RegExp("(?:\\\\?|&)d=(.*?)(?:&|\$)"); 147 */ 148 var actionRE = new RegExp("(\\\\/)(?:document|browse)(\\\\/)"); 149 var clRE = new RegExp("(\\\\/)browse\\\\/" + cl + "(\\\\/\\\\d+)+(\$)"); 150 var docRE = new RegExp("(?:\\\\/)document\\\\/(.*?)(?:\$)"); 151 152 for (var i=0; i<aElems.length; i++) { 153 var aElem = aElems[i]; 154 var href=aElem.href; 155 if (href && href.match(actionRE)) { 156 if (href.match(clRE)) { 157 if (!visitedURLs[href]) { 158 console.log("found a new CL line: " + href); 159 outstandingURLs.push(href); 160 visitedURLs[href] = 1; 161 } 162 } 163 else if (href.match(docRE)) { 164 if(!visitedURLs[href]){ 165 var docMatch = docRE.exec(href); 166 var docOID = docMatch[1]; 167 168 console.log("found a new doc line: " + docOID); 169 visitedURLs[href] = 1; 170 docOIDs.push(docOID); 171 } 172 } 173 } 174 } 175 } 176 177 numDocOIDs = docOIDs.length; 178 179 var iframe = document.getElementById("iframe"); 180 181 var docOID = docOIDs.shift(); 182 //console.log("doc oid = " + docOID); 183 184 var url; 185 if (gs2) { 186 url = "library.cgi"; 187 url += "?c="+collect +"&a=d&d=" + docOID; 188 } 189 else { 190 url = "library"; 191 url += "?c="+collect +"&a=d&d=" + docOID; 192 193 /** The line below has been commented out. This is because the incorrect page is being loaded up in the iframe (i.e. just the document image and heading is being displayed but not any html customizations made in the collectionConfig.xml file**/ 194 //url += "&ed=1&dt=hierarchy"; 195 // url += "&excerptid=gs_content"; 196 } 197 198 //url += "&p.showExpediteeAttributes=1"; 199 url += "&p.showAssocFilePath=1"; 200 201 202 /* load iframe with document drawn from Greenstone collection */ 203 iframe.src = url; 204 205 var progressbar = document.getElementById("progressbar"); 206 progressbar.style.display = "block"; 207 208 209 return false; }); 210 }); 211 212 function pageLoaded() 213 { 214 var iframe = document.getElementById("iframe"); 215 216 if (iframe.src) { 217 if (iframe.style.display != "block") { 218 iframe.height = "90%"; 219 iframe.style.display = "block"; 220 } 221 222 var iframeDoc; 223 if ( iframe.contentDocument ) 224 { /* FF */ 225 iframeDoc = iframe.contentDocument; 226 } 227 else if ( iframe.contentWindow ) 228 { /* IE */ 229 iframeDoc = iframe.contentWindow.document; 230 } 231 232 var xmlUrl = iframe.src + "&o=xml"; 233 234 var iter = (numDocOIDs - docOIDs.length); 235 var progressPercent = iter/numDocOIDs * 100; 236 237 /*Check if a frame-id metadata element already exists, 238 otherwise generate a new frame number based on the 239 number of documents to process.*/ 240 var frameNum = getMetadata(xmlUrl,'frameID'); 241 242 if(frameNum === null){ 243 frameNum = iter; 244 } 245 246 \$(function() { 247 \$('#progressbar').progressbar({ value: progressPercent }) 248 }); 249 250 var gsContent = iframeDoc.getElementById("gs_content"); 251 252 /* 253 var gsContentPos = getElementPosition(gsContent); 254 var pxl = gsContentPos.xl; 255 var pxr = gsContentPos.xr; 256 */ 257 258 //Check if an assocfilepath annotation already exists on the page, otherwise obtain it from the xml. 259 var assocElem = iframeDoc.getElementById('assocfilepath'); 260 var assoc = null; 261 262 if(assocElem === undefined || assocElem === null){ 263 assoc = getMetadata(xmlUrl,'assocfilepath'); 264 } 265 266 var expFrameTree = htmlToExpeditee(gsContent,compute_font,compute_width); 267 268 var expFrame = JSON.stringify(expFrameTree); 269 //console.log(expFrame); 270 //alert(expFrame); 271 272 var collect = document.getElementById("collect").value; 273 var site = document.getElementById("site").value; 274 275 var url = "cgi-bin/html-to-expeditee.pl"; 276 var params = "c=" + collect; 277 if (site.match(/\\w/)) { 278 params += "&site=" + site; 279 } 280 281 //params += "&a=generate-frame&fn=" + iter; 282 params += "&a=generate-frame&fn=" + frameNum; 283 params += "&json=" + escape(expFrame); 284 285 //add an assocfilepath parameter but only if it is defined. 286 if(assoc !== null){ 287 params += "&assoc=" + assoc; 288 } 289 290 params += "&compute-font=" + compute_font; 291 292 var clHtml = urlPostSync(url,params); 293 294 if (!clHtml.match(/html-to-expeditee saved frame/)) { 295 alert("Error processing url: " + url); 296 } 297 298 if (docOIDs.length>0) { 299 var docOID = docOIDs.shift(); 300 301 // console.log("doc oid = " + docOID); 302 303 // is the following line used ???? 304 var cl = document.getElementById("cl").value; 305 306 var gs2 = $isGSDL2; 307 var url; 308 309 if (gs2) { 310 url = "library.cgi"; 311 url += "?c="+collect +"&a=d&d=" + docOID; 312 } 313 else { 314 url = "library"; 315 url += "?c="+collect +"&a=d&d=" + docOID; 316 317 /** Refer to comment earlier in this code in regards to the commented out line below.**/ 318 //url += "&ed=1&dt=hierarchy"; 319 // url += "&excerptid=gs_content"; 320 } 321 322 //url += "&p.showExpediteeAttributes=1"; 323 url += "&p.showAssocFilePath=1"; 324 325 iframe.src = url; 326 } 327 else { 328 var progressbar = document.getElementById("progressbar"); 329 progressbar.style.display = "none"; 330 331 iframe.style.display = "none"; 332 delete iframe.src; 333 } 334 } 335 336 } 337 338 /** 339 * This method is used at this stage to retrieve assocfilepath 340 * and frame number metadata values from the document's xml. 341 **/ 342 function getMetadata(xmlUrl,nameValue){ 343 344 var metadata = null; 345 346 \$.ajax({ 347 type: "GET", 348 async: false, 349 url: xmlUrl, 350 dataType: "xml", 351 success: function(xml){ 55 <p> 56 <input type="checkbox" id="checkBoxBrowsing" name="generate_browsing" value="generate_browsing">Generate Collection Space<br/> 57 </p> 58 59 <p style="font-weight: bold;">Extra Expeditee Frame Output Options:</p> 60 <input type="checkbox" id="checkBoxFont" name="compute_font" value="compute_font">Compute Font<br/> 61 <input type="checkbox" id="checkBoxWidth" name="compute_width" value="compute_width">Compute Width<br/> 62 63 <p><input value="Go" id="go" class="ui-button ui-widget ui-state-default ui-corner-all" type="submit"></p> 64 </form> 352 65 353 354 \$(xml).find('metadata').each(function(){ 355 356 var name = \$(this).attr('name'); 357 358 if(name === nameValue){ 359 if(metadata === null){ 360 metadata = \$(this).text(); 361 //console.log(metadata); 362 } 363 364 } 365 }); 66 <script type="text/javascript"> 67 var collect; 68 var site; 69 var cl; 70 var gs2; 71 72 var docOIDs = []; 73 var clPages = []; 74 75 var hashMapDocFrames = new Array(); 76 77 var numDocOIDs = 0; 78 var numClPages = 0; 79 80 var currDocFrameNum; 81 var currClFrameNum; 82 83 var compute_font = false; 84 var compute_width = false; 85 var generate_browsing = false; //generate a matching collection space frameset 86 87 \$(function(){ 88 89 \$('#progress').progressbar(); 90 91 \$('#go').button().click(function(){ 92 93 site = document.getElementById("site").value; 94 95 collect = document.getElementById("collect").value; 96 97 if(collect.match(/^\\s*\$/)){ 98 alert("No collection specified"); 99 return false; 100 } 101 102 cl = document.getElementById("cl").value; 103 if(cl.match(/^\\s*\$/)){ 104 alert("No classifier specified"); 105 return false; 106 } 107 108 compute_font = document.getElementById("checkBoxFont").checked; 109 compute_width = document.getElementById("checkBoxWidth").checked; 110 111 generate_browsing = document.getElementById("checkBoxBrowsing").checked; 112 113 gs2=$isGSDL2; 114 115 var url; 116 117 /*obtain url for classifier/browse page and grab all links (doc and CL links) from this page.*/ 118 if(gs2){ 119 url = "library.cgi"; 120 url += "?c="+collect +"&a=d&cl=" + cl; 121 }else{ 122 url = "library"; 123 url += "?c="+collect +"&a=b&rt=s&s=ClassifierBrowse&cl=" + cl;\ 124 url += "&excerptid=gs_content"; 125 } 126 127 docOIDs = []; 128 clPages = []; 129 130 var outstandingURLs = []; 131 var visitedURLs = {}; 132 133 outstandingURLs.push(url); 134 visitedURLs[url] = 1; 135 136 while(outstandingURLs.length > 0){ 137 url = outstandingURLs.shift(); 138 139 var clHtml = urlGetSync(url); 140 141 var workingTrav = document.getElementById("workingTraverse"); 142 workingTrav.innerHTML = clHtml; 143 144 var aElems = workingTrav.getElementsByTagName("a"); 145 146 /* any links with (document|browse)=> outstandingURLS */ 147 /* any links with (document|browse)/CL[0-9]/[0-9] => clPages */ 148 /* any links with (document) => docOIDs */ 149 150 var actionRE = new RegExp("(\\\\/)(?:document|browse)(\\\\/)"); 151 var clRE = new RegExp("(\\\\/)browse\\\\/" + cl + "(\\\\/\\\\d+)+(\$)"); 152 var docRE = new RegExp("(?:\\\\/)document\\\\/(.*?)(?:\$)"); 153 154 for(var i = 0; i < aElems.length; i++){ 155 var aElem = aElems[i]; 156 var href = aElem.href; 157 158 if(href && href.match(actionRE)){ 159 if(href.match(clRE)){ 160 if(!visitedURLs[href]){ 161 console.log("found a new CL line: " + href); 162 outstandingURLs.push(href); 163 visitedURLs[href] = 1; 164 clPages.push(href); 165 } 166 }else if(href.match(docRE)){ 167 if(!visitedURLs[href]){ 168 var docMatch = docRE.exec(href); 169 var docOID = docMatch[1]; 170 171 console.log("found a new doc line: " + docOID); 172 visitedURLs[href] = 1; 173 docOIDs.push(docOID); 174 } 175 } 176 } 177 } 178 } 179 180 numDocOIDs = docOIDs.length; 181 numClPages = clPages.length; 182 var iframe = document.getElementById('iframe'); 183 184 startProcessing(iframe); //Process documents 185 186 return false; 187 }); 188 189 }); 190 191 function startProcessing(iframe){ 192 193 var docOID = docOIDs.shift(); 194 195 iframe.src = getDocumentUrl(docOID); 196 197 var progressbar = document.getElementById('progressbar'); 198 progressbar.style.display = 'block'; 199 } 200 201 202 function pageLoaded(){ 203 var iframe = document.getElementById("iframe"); 204 205 if(iframe.src){ 206 207 if(iframe.style.display != 'block'){ 208 iframe.height = '90%'; 209 iframe.style.display = 'block'; 210 } 211 212 var iframeDoc; 213 214 if(iframe.contentDocument){ /* FF and Chrome */ 215 iframeDoc = iframe.contentDocument; 216 }else if(iframe.contentWindow){ /* IE */ 217 iframeDoc = iframe.contentWindow.document; 218 } 219 220 /*Check url - if it's a doc Url, call "writeDocument", otherwise call "writeClPage"*/ 221 var clRE = new RegExp("(\\\\/)browse\\\\/" + cl + "(\\\\/\\\\d+)+(\$)"); 222 223 224 if(iframe.src.match(clRE)){ 225 writeClPage(iframe,iframeDoc); 226 }else{ 227 writeDocument(iframe,iframeDoc); 228 } 229 } 230 } 231 232 function writeDocument(iframe,iframeDoc){ 233 234 var xmlUrl = iframe.src + "&o=xml"; 235 236 var iter = (numDocOIDs - docOIDs.length); 237 var progressPercent = iter/numDocOIDs * 100; 238 239 var frameNum = getMetadata(xmlUrl,'frameID'); 240 241 if(frameNum == null){ 242 frameNum = iter; 243 } 244 245 //Add docOID and matching frame number to an associative array for later use. 246 hashMapDocFrames[docOID] = frameNum; 247 248 \$(function(){ 249 \$('#progressbar').progressbar({ value: progressPercent }); 250 }); 251 252 var gsContent = iframeDoc.getElementById("gs_content"); 253 254 var assocElem = iframeDoc.getElementById("assocfilepath"); 255 256 var assocElem = iframeDoc.getElementById('assocfilepath'); 257 var assoc = null; 258 259 if(assocElem === undefined || assocElem === null){ 260 assoc = getMetadata(xmlUrl,'assocfilepath'); 261 } 262 263 var expFrameTree = htmlToExpeditee(gsContent,compute_font,compute_width); 264 265 var expFrame = JSON.stringify(expFrameTree); 266 //console.log(expFrame); 267 268 var url = "cgi-bin/html-to-expeditee.pl"; 269 var params = "c=" + collect; 270 271 if(site.match(/\\w/)){ 272 params += "&site=" + site; 273 } 274 275 params += "&a=generate-frame&fn=" + frameNum; 276 params += "&json=" + escape(expFrame); 277 278 //Add an assocfilepath but only if it is defined 279 if(assoc !== null){ 280 params += "&assoc=" + assoc; 281 } 282 283 params += "&compute-font=" + compute_font; 284 285 params += "&page-type=" + "document"; 286 287 288 var clHtml = urlPostSync(url,params); 289 290 if(!clHtml.match(/html-to-expeditee saved frame/)){ 291 alert("ERROR PROCESSING URL: " + url); 292 } 293 294 if(docOIDs.length > 0){ 295 var docOID = docOIDs.shift(); 296 iframe.src = getDocumentUrl(docOID); 297 298 }else{ 299 //start writing CL pages. 300 if(generate_browsing){ 301 numClPages = clPages.length; 302 303 var url = clPages.shift(); 304 iframe.src = url; 305 writeClPage(iframe,iframeDoc); 306 }else{ 307 //We are finished 308 finish(iframe); 309 } 310 } 311 } 312 313 function getDocumentUrl(docOID){ 314 var url; 315 316 if(gs2){ 317 url = "library.cgi"; 318 }else{ 319 url = "library"; 320 } 321 322 url += "?c=" + collect + "&a=d&d=" + docOID; 323 324 url += "&p.showAssocFilePath = 1"; 325 326 return url; 327 } 328 329 function writeClPage(iframe,iframeDoc){ 330 331 var frameNum = numClPages - clPages.length; 332 var progressPercent = frameNum / numClPages * 100; 333 334 \$(function(){ 335 \$('#progressbar').progressbar({ value: progressPercent }); 336 }); 337 338 var gsContent = iframeDoc.getElementById("gs_content"); 339 var gsContentChildren = gsContent.getElementsByTagName('*'); 340 341 var docRE = new RegExp("(?:\\\\/)document\\\\/(.*?)(?:\$)"); 342 343 //get rid of rectangles around nodes. 344 for(var i = 0; i < gsContentChildren.length; i++){ 345 var child = gsContentChildren[i]; 346 347 if(child.tagName !== "IMG"){ 348 child.setAttribute('rect','norect'); 349 } 350 351 if(child.tagName === "A"){ 352 var aElem = child; 353 var aElemSrc = aElem.href; 354 355 //if aElemSrc is a document url, then extract docOID then access hash map and get matching frame number. 356 if(aElemSrc.match(docRE)){ 357 var docMatch = docRE.exec(aElemSrc); 358 var docOID = docMatch[1]; 359 console.log("*** " + docOID); 360 var frameNum = hashMapDocFrames[docOID]; 361 var aElemChildren = aElem.getElementsByTagName('*'); 362 363 for(var j = 0; j < aElemChildren.length; j++){ 364 var aElemChild = aElemChildren[j]; 365 var frameName = collect + frameNum; 366 //console.log("*** " + frameName); 367 //aElemChild.setAttribute("link",frameName); 368 //console.log(aElemChild.link); 369 } 370 371 }else{ 372 //TODO: Check if the link is a CL link. 373 //TODO: Make a hashmap for storing CL page frame numbers? 374 } 375 } 376 } 377 378 //add link attribute to children nodes of <a> elements. 379 380 381 //TODO: Need to change htmlToExpeditee code to account for links 382 383 384 var expFrameTree = htmlToExpeditee(gsContent); 385 var expFrame = JSON.stringify(expFrameTree); 386 //console.log(expFrame); 387 388 var url = "cgi-bin/html-to-expeditee.pl"; 389 var params = "c=" + collect; 390 391 if(site.match(/\\w/)){ 392 params += "&site=" + site; 393 } 394 395 params += "&cl=" + cl; 396 params += "&a=generate-frame&fn=" + frameNum; 397 params += "&json=" + escape(expFrame); 398 params += "&page-type=" + "clPage"; 399 400 var clHtml = urlPostSync(url,params); 401 402 if(!clHtml.match(/html-to-expeditee saved frame/)){ 403 alert("Error processing url: " + url); 404 } 405 406 if(clPages.length > 0){ 407 var clPage = clPages.shift(); 408 iframe.src = clPage; 409 }else{ 410 finish(iframe); 411 } 412 } 413 414 function finish(iframe){ 415 var progressbar = document.getElementById("progressbar"); 416 progressbar.style.display = "none"; 417 418 iframe.style.display = "none"; 419 delete iframe.src; 420 } 421 422 /** 423 * This method is used at this stage to retrieve assocfilepath and 424 * frame number metadata values from the document's xml. 425 **/ 426 function getMetadata(xmlUrl,nameValue){ 427 var metadata = null; 428 429 \$.ajax({ 430 type: "GET", 431 async: false, 432 url: xmlUrl, 433 dataType: "xml", 434 success: function(xml){ 435 \$(xml).find('metadata').each(function(){ 436 var name = \$(this).attr('name'); 437 438 if(name === nameValue){ 439 if(metadata === null){ 440 metadata = \$(this).text(); 441 } 442 } 443 }); 444 } 445 }); 446 447 return metadata; 448 } 449 450 </script> 366 451 452 <div id="progressbar" width="100%" style="display: none; margin: 10px; height: 10px;"></div> 453 454 <div id="workingTraverse" style="display: none"></div> 455 456 <hr style="margin: 10px;"> 457 458 <iframe width="100%" id="iframe" style="display:none;" onload="pageLoaded()"></iframe> 459 </body> 460 </html> 461 EOT 462 463 print "Content-type:text/html\n\n"; 464 print $html_form; 465 } 466 467 sub main 468 { 469 my $gsdl_cgi = new gsdlCGI(); 470 471 #Load GS modules 472 $gsdl_cgi->setup_gsdl(); 473 474 my $gsdlhome = $ENV{'GSDLHOME'}; 475 $gsdl_cgi->checked_chdir($gsdlhome); 476 477 #TODO: Refactor so we only need to use HtmlToExpediteeAction 478 require cgiactions::HtmlToExpediteeAction; 479 require cgiactions::CollectionSpaceAction; 480 481 $gsdl_cgi->parse_cgi_args(); 482 $gsdl_cgi->{'xml'} = 0; 483 484 my $fn = $gsdl_cgi->clean_param("fn"); 485 486 if(defined $fn){ 487 #page_type can have two values: "document" or "clPage" 488 my $page_type = $gsdl_cgi->clean_param("page-type"); 489 490 if(defined $page_type){ 491 my $action; 492 493 if($page_type eq "document"){ 494 $action = new HtmlToExpediteeAction($gsdl_cgi,$iis6_mode); 495 }elsif($page_type eq "clPage"){ 496 $action = new CollectionSpaceAction($gsdl_cgi,$iis6_mode); 497 }else{ 498 $gsdl_cgi->generate_error("Invalid page type specified. Must be 'document' or 'clPage'"); 367 499 } 368 500 369 }); 370 371 return metadata; 372 } 373 374 </script> 375 376 <div id="progressbar" width="100%" 377 style="display: none; margin: 10px; height: 10px;"></div> 378 <div id="workingTraverse" style="display: none"></div> 379 380 <hr style="margin: 10px;"> 381 382 <iframe width="100%" id="iframe" style="display: none;" 383 onload="pageLoaded()"></iframe> 384 385 </body> 386 </html> 387 EOT 388 389 print "Content-type:text/html\n\n"; 390 print $html_form; 501 $action->do_action(); 502 }else{ 503 $gsdl_cgi->generate_error("No page type specified. Must be 'document' or 'clPage'"); 504 } 505 506 }else{ 507 # generate html form 508 my $collect = $gsdl_cgi->clean_param("collect"); 509 my $cl = $gsdl_cgi->clean_param("cl"); 510 511 #Establish collect_dir using defining 'site' along the way if GS3 512 my $site = undef; 513 my $isGSDL2 = undef; 514 515 if($gsdl_cgi->greenstone_version() == 2){ 516 $isGSDL2 = 1; 517 }else{ 518 $isGSDL2 = 0; 519 520 #GS3 (and possible future versions) make use of 'site' 521 $site = $gsdl_cgi->clean_param("site"); 522 523 if(!defined $site){ 524 $gsdl_cgi->generate_error("No site specified."); 525 } 526 } 527 528 generate_html_form($isGSDL2,$site,$collect,$cl); 529 } 391 530 } 392 531 393 sub main394 {395 396 # $ENV{'QUERY_STRING'} = "a=...";set-import-metadata&c=espresso-music&d=HASH012d6f72cde5dc48162f4a1d.1&metaname=annotation&metapos=0&metavalue=adfadfad";397 # $ENV{'REQUEST_METHOD'} = "GET";398 399 my $gsdl_cgi = new gsdlCGI();400 401 # Load the Greenstone modules that we need to use402 $gsdl_cgi->setup_gsdl();403 404 my $gsdlhome = $ENV{'GSDLHOME'};405 $gsdl_cgi->checked_chdir($gsdlhome);406 407 require cgiactions::HtmlToExpediteeAction;408 409 # Useful debug statement for seeing what packages have been included410 #### printf("%-45s%-s\n",$_,$INC{$_}) foreach (sort keys %INC);411 412 $gsdl_cgi->parse_cgi_args();413 414 # We don't want the gsdlCGI module to return errors and warnings in XML415 $gsdl_cgi->{'xml'} = 0;416 417 my $fn = $gsdl_cgi->clean_param("fn"); # frame number418 419 if (defined $fn) {420 421 my $action = new HtmlToExpediteeAction($gsdl_cgi,$iis6_mode);422 423 $action->do_action();424 }425 else {426 # generate form, pre-filled out with any useful values such427 # as the collection and classifier value428 429 my $collect = $gsdl_cgi->clean_param("collect");430 my $cl = $gsdl_cgi->clean_param("cl");431 432 # Establish collect_dir using defining 'site' along the way if GS3433 434 my $site = undef;435 my $isGSDL2 = undef;436 437 if ($gsdl_cgi->greenstone_version() == 2) {438 $isGSDL2 = 1;439 }440 else {441 $isGSDL2 = 0;442 443 # GS3 (and possible future versions) make use of 'site'444 $site = $gsdl_cgi->clean_param("site");445 if (!defined $site) {446 $gsdl_cgi->generate_error("No site specified.");447 }448 }449 450 generate_html_form($isGSDL2,$site,$collect,$cl);451 }452 }453 454 455 456 532 &main(); -
gs3-extensions/html-to-expeditee/trunk/src/src/js/html-to-expeditee.js
r26731 r26749 122 122 font_size = getStyle(node,'font-size'); 123 123 font_color = getStyle(node,'color'); 124 125 /*console.log("Retrieving node: " + node);126 127 console.log("Retrieving font family: " + font_family);128 console.log("Retrieving font size: " + font_size);129 console.log("Retrieving font color: " + font_color);*/130 124 } 131 125 … … 160 154 jsonNode.xr = pxr; 161 155 jsonNode.yb = pyb; 162 156 157 var link = node.link; 158 if(link !== null && link !== undefined){ 159 jsonNode.link = link; 160 console.log("Adding link"); 161 }else{ 162 console.log("no link found"); 163 } 164 163 165 var parent = node.parentNode; 164 166 … … 203 205 var parentPos = getElementPosition(parent); 204 206 var parentWidth = parentPos.xr - parentPos.xl; 205 206 /*console.log("parent.xl: " + parentPos.xl); 207 console.log("parent.xr: " + parentPos.xr); 208 console.log("parent width: " + parentWidth);*/ 209 207 210 208 jsonNode.width = parentWidth; 211 209 }
Note:
See TracChangeset
for help on using the changeset viewer.