source: gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin/export-individual-expeditee.pl.in@ 26694

Last change on this file since 26694 was 26694, checked in by davidb, 11 years ago

These scripts will now search the processed GSDL document's xml for frame number and assocfilepath values.

File size: 4.8 KB
Line 
1#!/cygdrive/c/strawberry/perl/bin/perl -w
2
3# Need to specify the full path of Perl above, e.g. for Windows something like
4#!C:\\Perl32\\bin\\perl -w
5
6use strict;
7my $iis6_mode = 0;
8
9if($iis6_mode){
10 #Change into cgi-bin directory
11 chdir("cgi-bin");
12}
13
14eval("require \"gsdlCGI.pm\"");
15if ($@)
16{
17 print STDOUT "Content-type:text/plain\n\n";
18 print STDOUT "ERROR: $@\n";
19 exit 0;
20}
21
22sub display_output
23{
24 my($docID,$c,$assocfilepath,$site) = @_;
25
26 my $iframeURL = "library/collection/$c/document/$docID"."?p.showAssocFilePath=1";
27
28 #Render an html page to display and export item.
29 my $html = <<EOT;
30<html>
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">
42 body{
43 font-family: Arial;
44 font-size: 16px;
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
109 }
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;
141 }
142 </script>
143
144 <body>
145
146 <p id="msg">Exporting following document to Expeditee... </p>
147
148 <hr style="margin: 10px;"/>
149
150 <!-- Load up an iframe to display URL in-->
151 <div align="center"><iframe id="iframe" width="1000px" height="90%" src="$iframeURL" onload="load();"></iframe></div>
152 </body>
153 </html>
154EOT
155 print "Content-type:text/html\n\n";
156 print $html;
157}
158
159sub main
160{
161 my $gsdl_cgi = new gsdlCGI();
162
163 #Load needed GSDL modules
164 $gsdl_cgi->setup_gsdl();
165
166 my $gsdlhome = $ENV{'GSDLHOME'};
167 $gsdl_cgi->checked_chdir($gsdlhome);
168
169 require cgiactions::ExpediteeExportAction;
170 $gsdl_cgi->parse_cgi_args();
171
172 $gsdl_cgi->{'xml'} = 0;
173
174 my $fn = $gsdl_cgi->param("fn");
175
176 if(defined $fn){
177
178 my $site = $gsdl_cgi->clean_param("site");
179 my $c = $gsdl_cgi->clean_param("c");
180 my $a = $gsdl_cgi->clean_param("a"); #assocfilepath
181
182 my $json = $gsdl_cgi->clean_param("json");
183
184 my $action = new ExpediteeExportAction($gsdl_cgi,$iis6_mode);
185 $action->do_action();
186
187 }else{
188
189 my $docID = $gsdl_cgi->clean_param("docID");
190 my $c = $gsdl_cgi->clean_param("c");
191 my $assocfilepath = $gsdl_cgi->clean_param("assocfilepath");
192 my $site = $gsdl_cgi->clean_param("site");
193
194 if(!defined $site){
195 $gsdl_cgi->generate_error("No site specified.");
196 }
197
198 display_output($docID,$c,$assocfilepath,$site);
199 }
200}
201
202&main();
Note: See TracBrowser for help on using the repository browser.