Changeset 26694 for gs3-extensions
- Timestamp:
- 2013-01-11T18:27:42+13:00 (11 years ago)
- Location:
- gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin/export-individual-expeditee.pl.in
r26632 r26694 4 4 #!C:\\Perl32\\bin\\perl -w 5 5 6 ##7 # This is used for exporting individual Greenstone8 # documents to Expeditee. To export entire collections,9 # use html-to-expeditee.pl10 ##11 6 use strict; 12 7 my $iis6_mode = 0; … … 27 22 sub display_output 28 23 { 29 my($docID,$c,$assocfilepath,$site ,$fn,$found) = @_;24 my($docID,$c,$assocfilepath,$site) = @_; 30 25 31 26 my $iframeURL = "library/collection/$c/document/$docID"."?p.showAssocFilePath=1"; 32 27 33 #Render an html page to display &export item.28 #Render an html page to display and export item. 34 29 my $html = <<EOT; 35 30 <html> 36 37 <title>Export Itemto Expeditee</title>38 39 40 41 42 43 44 45 46 31 <head> 32 <title>Export Document to Expeditee</title> 33 <base href=".."/> 34 35 <link type="text/css" href="ext/html-to-expeditee/jquery/css/le-frog/jquery-ui-1.8.16.custom.css" rel="stylesheet"/> 36 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-1.6.2.min.js"></script> 37 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-ui-1.8.16.custom.min.js"></script> 38 <script type="text/javascript" src="ext/html-to-expeditee/js/html-to-expeditee.js"></script> 39 <script type="text/javascript" src="ext/html-to-expeditee/js/gsajax-min.js"></script> 40 41 <style type="text/css"> 47 42 body{ 48 43 font-family: Arial; 49 44 font-size: 16px; 50 45 color: #000; 46 } 47 </style> 48 <script type="text/javascript"> 49 function load(){ 50 51 var iframe = document.getElementById("iframe"); 52 53 if(iframe.style.display != "block"){ 54 iframe.height = "90%"; 55 iframe.style.display = "block"; 56 } 57 58 var iframeDoc; 59 60 if(iframe.contentDocument){ 61 /* Firefox and Chrome */ 62 iframeDoc = iframe.contentDocument; 63 }else if(iframe.contentWindow){ 64 /* IE */ 65 iframeDoc = iframe.contentWindow.document; 66 } 67 68 var gsContent = iframeDoc.getElementById("gs_content"); 69 var xmlUrl = iframe.src + "&o=xml"; 70 71 var frameNum = getMetadata(xmlUrl,'frameID'); 72 73 if(frameNum === null){ 74 //use -1 as default, to change later. 75 frameNum = -1; 76 } 77 78 //Check for assocfilepath 79 var assocElem = iframeDoc.getElementById('assocfilepath'); 80 var assoc = null; 81 82 if(assocElem === undefined || assocElem === null){ 83 assoc = getMetadata(xmlUrl,'assocfilepath'); 84 } 85 86 var expFrameTree = htmlToExpeditee(gsContent); 87 var expFrame = JSON.stringify(expFrameTree); 88 89 var site = "$site"; 90 var url = "cgi-bin/export-individual-expeditee.pl"; 91 var params = "c=" + "$c"; 92 93 if(site.match(/\\w/)){ 94 params += "&site=" + site; 95 } 96 97 params += "&a=generate-frame&fn=" + frameNum; 98 params += "&json=" + escape(expFrame); 99 100 //Add an assocfilepath param 101 if(assoc !== null){ 102 params += "&assoc=" + assoc; 103 } 104 105 var request = urlPostSync(url,params); 106 107 alert("Document has been successfully exported to Expeditee. The corresponding Expeditee frame can be found in the collection's export directory at: " + frameNum + ".exp"); 108 51 109 } 52 </style> 53 <script type="text/javascript"> 54 function load(){ 55 56 var iframe = document.getElementById("iframe"); 57 if(iframe.style.display != "block"){ 58 iframe.height = "90%"; 59 iframe.style.display = "block"; 110 111 function getMetadata(xmlUrl,nameValue){ 112 113 var metadata = null; 114 115 \$.ajax({ 116 type: "GET", 117 async: false, 118 url: xmlUrl, 119 dataType: "xml", 120 success: function(xml){ 121 122 \$(xml).find('metadata').each(function(){ 123 124 var name = \$(this).attr('name'); 125 126 if(name === nameValue){ 127 128 if(metadata === null){ 129 metadata = \$(this).text(); 130 //console.log(metadata); 131 } 132 133 } 134 }); 135 136 } 137 138 }); 139 140 return metadata; 60 141 } 61 62 var iframeDoc;63 if( iframe.contentDocument){64 /* Firefox & Chrome */65 iframeDoc = iframe.contentDocument;66 }else if(iframe.contentWindow){67 /* IE */68 iframeDoc = iframe.contentWindow.document;69 }70 71 var gsContent = iframeDoc.getElementById("gs_content");72 73 //hide rightSidebar div74 var rightSidebar = iframeDoc.getElementById("rightSidebar");75 if(rightSidebar !== undefined){76 rightSidebar.style.display = "none";77 }78 79 var expFrameTree = htmlToExpeditee(gsContent);80 var expFrame = JSON.stringify(expFrameTree);81 82 var site = "$site";83 var url = "cgi-bin/export-individual-expeditee.pl";84 var params = "c=" + "$c";85 86 if(site.match(/\\w/)){87 params += "&site=" + site;88 }89 params += "&a=generate-frame&fn=" + "$fn";90 params += "&found=" + "$found";91 params += "&json=" + escape(expFrame);92 93 var request = urlPostSync(url,params);94 95 alert("Document has been successfully exported to Expeditee. It can be found in the collection's export directory at: $fn.exp");96 }97 142 </script> 98 </head>143 99 144 <body> 100 145 101 <p id="msg">Exporting following document to Expeditee... </p>146 <p id="msg">Exporting following document to Expeditee... </p> 102 147 103 148 <hr style="margin: 10px;"/> 104 149 105 150 <!-- Load up an iframe to display URL in--> 106 <div align="center"><iframe id="iframe" width="1000px" height="90%" src="$iframeURL" onload="load();"></iframe</div> 107 151 <div align="center"><iframe id="iframe" width="1000px" height="90%" src="$iframeURL" onload="load();"></iframe></div> 108 152 </body> 109 </html>153 </html> 110 154 EOT 111 155 print "Content-type:text/html\n\n"; … … 113 157 } 114 158 115 ##For debugging.116 sub check{117 118 my($check1,$check2,$check3,$check4,$check5) = @_;119 120 print "Content-type:text/html\n\n";121 print $check1;122 print $check2;123 print $check3;124 print $check4;125 print $check5;126 }127 128 159 sub main 129 160 { … … 135 166 my $gsdlhome = $ENV{'GSDLHOME'}; 136 167 $gsdl_cgi->checked_chdir($gsdlhome); 137 138 #require cgiactions::HtmlToExpediteeAction; 168 139 169 require cgiactions::ExpediteeExportAction; 140 170 $gsdl_cgi->parse_cgi_args(); … … 143 173 144 174 my $fn = $gsdl_cgi->param("fn"); 145 175 146 176 if(defined $fn){ 147 177 148 178 my $site = $gsdl_cgi->clean_param("site"); 149 179 my $c = $gsdl_cgi->clean_param("c"); 150 my $a = $gsdl_cgi-> clean_param("a"); 180 my $a = $gsdl_cgi->clean_param("a"); #assocfilepath 181 151 182 my $json = $gsdl_cgi->clean_param("json"); 152 my $found = $gsdl_cgi->clean_param("found");153 #check($site,$c,$a,$json,$found);154 183 155 184 my $action = new ExpediteeExportAction($gsdl_cgi,$iis6_mode); 156 185 $action->do_action(); 157 186 158 #my $action = new HtmlToExpediteeAction($gsdl_cgi,$iis6_mode);159 #$action->do_action();160 187 }else{ 161 188 162 printf("fn not defined\n");163 189 my $docID = $gsdl_cgi->clean_param("docID"); 164 190 my $c = $gsdl_cgi->clean_param("c"); 165 191 my $assocfilepath = $gsdl_cgi->clean_param("assocfilepath"); 166 192 my $site = $gsdl_cgi->clean_param("site"); 167 193 168 194 if(!defined $site){ 169 195 $gsdl_cgi->generate_error("No site specified."); 170 196 } 171 197 172 #Open export directory 173 my $collect_dir = $gsdl_cgi->get_collection_dir($site); 174 my $export_dir = &util::filename_cat($collect_dir,$c,"export"); 175 176 my $frameInf = "$export_dir\\frame.inf"; 177 my $fn = ""; 178 my @files; 179 180 #check if export directory exists otherwise create it. 181 if(-d $export_dir){ 182 opendir DIR, $export_dir or die "cannot open dir $export_dir: $!"; 183 @files = readdir DIR; 184 closedir DIR; 185 }else{ 186 print "Reached!\n"; 187 &util::mk_dir($export_dir); 188 189 my $zeroFrame = "0.exp"; 190 open(ZERO_FRAME,">>$export_dir\\$zeroFrame") || die "$!"; 191 close ZERO_FRAME; 192 193 opendir DIR, $export_dir or die "can't open dir $export_dir: $!\n"; 194 @files = readdir DIR; 195 closedir DIR; 196 } 197 198 my $found = 0; 199 for my $file(@files){ 200 if($file =~ m/\d/){ 201 202 my $fullFile = "$export_dir\\$file"; 203 open FILE, $fullFile or die $!; 204 my @lines = <FILE>; 205 206 for my $line(@lines){ 207 if($line eq "T \@assocfilepath $assocfilepath\n"){ 208 $fn = $fullFile; 209 $found = 1; 210 } 211 } 212 close(FILE); 213 } 214 } 215 216 unless($found){ 217 #use frame.inf file to get file number 218 if(-e $frameInf){ 219 220 open FRAME_INF, $frameInf or die $!; 221 my @lines = <FRAME_INF>; 222 223 for my $line(@lines){ 224 $fn = $line; 225 } 226 }else{ 227 228 print "$frameInf not found\n"; 229 230 $fn = 0; 231 } 232 } 233 234 #now get frame number out of file name 235 my @getFrameNumArray = split('\\\\',$fn); 236 @getFrameNumArray = reverse(@getFrameNumArray); 237 $fn = $getFrameNumArray[0]; 238 239 $fn =~ s/[^0-9]//g; 240 unless($found){ 241 $fn = $fn + 1; 242 } 243 #unless($found){ 244 # $fn = $fn + 1; 245 #} 246 247 print "fn = ".$fn."\n"; 248 249 display_output($docID,$c,$assocfilepath,$site,$fn,$found); 198 display_output($docID,$c,$assocfilepath,$site); 250 199 } 251 252 200 } 253 201 -
gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin/html-to-expeditee.pl.in
r26596 r26694 182 182 183 183 //url += "&p.showExpediteeAttributes=1"; 184 url += "&p.showAssocFilePath=1"; 184 185 185 186 … … 213 214 iframeDoc = iframe.contentWindow.document; 214 215 } 215 216 var frameID = (numDocOIDs - docOIDs.length); 217 var progressPercent = frameID/numDocOIDs * 100; 218 216 217 var xmlUrl = iframe.src + "&o=xml"; 218 219 var iter = (numDocOIDs - docOIDs.length); 220 var progressPercent = iter/numDocOIDs * 100; 221 222 /*Check if a frame-id metadata element already exists, 223 otherwise generate a new frame number based on the 224 number of documents to process.*/ 225 var frameNum = getMetadata(xmlUrl,'frameID'); 226 227 if(frameNum === null){ 228 frameNum = iter; 229 console.log("no frameNum found, use iter: " + frameNum); 230 }else{ 231 console.log("frameNum metadata found: " + frameNum); 232 } 233 219 234 \$(function() { 220 235 \$('#progressbar').progressbar({ value: progressPercent }) … … 228 243 var pxr = gsContentPos.xr; 229 244 */ 230 231 //get assocfilepath from xml 232 var xmlUrl = iframe.src + "&o=xml"; 233 234 var assoc = getAssocFilePath(xmlUrl); 245 246 //Check if an assocfilepath annotation already exists on the page, otherwise obtain it from the xml. 247 var assocElem = iframeDoc.getElementById('assocfilepath'); 248 var assoc = null; 249 250 if(assocElem === undefined || assocElem === null){ 251 assoc = getMetadata(xmlUrl,'assocfilepath'); 252 } 235 253 236 254 var expFrameTree = htmlToExpeditee(gsContent); … … 248 266 } 249 267 250 params += "&a=generate-frame&fn=" + frameID; 268 //params += "&a=generate-frame&fn=" + iter; 269 params += "&a=generate-frame&fn=" + frameNum; 251 270 params += "&json=" + escape(expFrame); 252 271 253 //add an assocfilepath parameter 254 255 if(assoc !== null && assoc !== undefined){ 272 //add an assocfilepath parameter but only if it is defined. 273 if(assoc !== null){ 256 274 params += "&assoc=" + assoc; 257 275 } … … 288 306 289 307 //url += "&p.showExpediteeAttributes=1"; 290 291 iframe.src = url; 308 url += "&p.showAssocFilePath=1"; 309 310 iframe.src = url; 292 311 } 293 312 else { 294 295 296 297 298 313 var progressbar = document.getElementById("progressbar"); 314 progressbar.style.display = "none"; 315 316 iframe.style.display = "none"; 317 delete iframe.src; 299 318 } 300 319 } … … 302 321 } 303 322 304 function getAssocFilePath(xmlUrl){ 305 var assoc = ""; 323 /** 324 * Once this is working, remove getAssocFilePath method 325 * This method is used at this stage to retrieve assocfilepath 326 * and frame number metadata values from the document's xml. 327 **/ 328 function getMetadata(xmlUrl,nameValue){ 306 329 307 \$.ajax({ 330 var metadata = null; 331 332 \$.ajax({ 308 333 type: "GET", 309 334 async: false, … … 317 342 var name = \$(this).attr('name'); 318 343 319 if(name === 'assocfilepath'){320 if( assoc === ""){321 assoc= \$(this).text();322 //console.log( assoc);344 if(name === nameValue){ 345 if(metadata === null){ 346 metadata = \$(this).text(); 347 //console.log(metadata); 323 348 } 324 349 … … 329 354 330 355 }); 331 332 return assoc;356 357 return metadata; 333 358 } 334 359
Note:
See TracChangeset
for help on using the changeset viewer.