source: gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin/generate-collection-space.pl.in@ 26747

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

Added in more code to the go button function.

File size: 6.5 KB
RevLine 
[26744]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;
7
8# Set this to 1 to work around IIS 6 craziness
9my $iis6_mode = 0;
10
11
12# IIS 6: for some reason, IIS runs this script with the working directory set to the Greenstone
13# directory rather than the cgi-bin directory, causing lots of stuff to fail
14if ($iis6_mode)
15{
16 # Change into cgi-bin directory
17 chdir("cgi-bin");
18}
19
20
21# We use require and an eval here (instead of "use") to catch any errors loading the module (for IIS)
22eval("require \"gsdlCGI.pm\"");
23if ($@)
24{
25 print STDOUT "Content-type:text/plain\n\n";
26 print STDOUT "ERROR: $@\n";
27 exit 0;
28}
29
30sub generate_html_form
31{
32 # First create an overlay frame containing CL links.
33
34 # Then create frames with document links and images.
35
36 my ($isGSDL2,$site,$collect,$cl) = @_;
37
38 my $html_form = <<EOT;
39<html>
40 <head>
41 <title>Generate Collection Space for $collect</title>
42 <base href=".."/>
43
44 <link type="text/css" href="ext/html-to-expeditee/jquery/css/le-frog/jquery-ui-1.8.16.custom.css" rel="stylesheet" />
45 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-1.6.2.min.js"></script>
46 <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-ui-1.8.16.custom.min.js"></script>
47 <script type="text/javascript" src="ext/html-to-expeditee/js/gsajax-min.js"></script>
48 <script type="text/javascript" src="ext/html-to-expeditee/js/html-to-expeditee.js"></script>
49
50 </head>
51 <body>
52 <form class="ui-widget">
53
54 <p style="font-size: 16px; width: 550px; text-align: justify;">Generate a Collection Space to make it easier to view documents in GlamED/Expeditee. Before running this script you must have already converted the Greenstone collection to an Expeditee frameset. If you have <b>NOT</b> done this, click <a href="html-to-expeditee.pl?site=$site&collect=$collect&cl=CL1" target="_blank">here</a></p>
55
56 Generate a Collection Space for <input type="text" class="ui-corner-all" style="padding: 4px;" name="collect" value="$collect" id="collect"/> using the classifier <input type="text" class="ui-corner-all" style="padding: 4px;" name="cl" value="$cl" id="cl"/>
57
58 <input value="$site" name="site" id="site" type="hidden"> <input value="Go" id="go" class="ui-button ui-widget ui-state-default ui-corner-all" type="submit">
59 </form>
60
61 <script type="text/javascript">
[26747]62 var clLinks = [];
63 var numClLinks;
64
[26744]65 \$(function(){
66 \$('#progress').progressbar();
67
68 \$('#go').button().click(function(){
69 var collect = document.getElementById("collect").value;
70
71 if(collect.match(/^\\s*\$/)){
72 alert("No collection specified");
73 return false;
74 }
75
76 var cl = document.getElementById("cl").value;
77 if(cl.match(/^\\s*\$/)){
78 alert("No classifier specified");
79 return false;
80 }
81
82 if(cl.match(/^\\d+\$/)){
83 cl = "CL" + cl;
84 }
85
86
87
[26747]88
89 return false;
90 });
91
92 function pageLoaded(){
93
94 var iframe = document.getElementById("iframe");
95
96 if(iframe.src){
97 if(iframe.style.display != "block"){
98 iframe.height = "90%";
99 iframe.style.display = "block";
[26744]100 }
101
[26747]102 var iframeDoc;
[26744]103
[26747]104 if(iframe.contentDocument){
105 /* FF */
106 iframeDoc = iframe.contentDocument;
107 }else if(iframe.contentWindow){
108 /* IE */
109 iframeDoc = iframe.contentWindow.document;
110 }
[26744]111
[26747]112 var frameNum = (numClPages - clPages.length);
113 var progressPercent = frameNum/numClPages * 100;
[26744]114
[26747]115 \$(function(){
116 \$('#progressbar').progressbar({ value: 0 });
117 });
[26744]118
[26747]119 var gsContent = iframeDoc.getElementById("gs_content");
[26744]120
[26747]121 //Need to change htmlToExpeditee code to account for links
122 var expFrameTre = htmlToExpeditee(gsContent);
123
124 var collect = document.getElementById("collect").value;
125 var site = document.getElementById("site").value;
126
127 var url = "cgi-bin/generate-collection-space.pl";
128 var params = "c=" + collect;
129
130 if(site.match(/\\w/)){
131 params += "&site=" + site;
132 }
133
134 params += "&a=generate-frame&fn=" + frameNum;
135 params += "&json=" + escape(expFrame);
136
137 var clHtml = urlPostSync(url,params);
138
139 if(!clHtml.match(/html-to-expeditee saved frame/)){
140 alert("Error processing url: " + url);s
141 }
142
143 if(clPages.length > 0){
144 var clPage = clPages.shift();
145
146 var cl = document.getElementById("cl").value;
147
148 var gs2 = $isGSDL2;
149
150 var url;
151
152 var url;
153
154 if(gs2){
155 url = "library.cgi";
156 url += "?c=" + collect + "&a=d&d=" + docOID;
157 }else{
158 url = "library";
159 url += "?c=" + collect + "&a=d&d=" + docOID;
[26744]160 }
[26747]161
162 iframe.src = url;
163 }else{
164
165 var progressbar = document.getElementById("progressbar");
166 progressbar.style.display = "none";
167
168 iframe.style.display = "none";
169 delete iframe.src;
[26744]170 }
171
[26747]172
173 }
[26744]174
175
176 }
177 </script>
178
179 <div id="progressbar" width="100%" style="display: none; margin: 10px; height: 10px;"></div>
180
181 <div id="workingTraverse" style="display: none"></div>
182
183 <hr style="margin: 10px;">
184
185 <iframe width="100%" id="iframe" style="display: none;" onload="pageLoaded()"></iframe>
186</body>
187</html>
188EOT
189
190 print "Content-type:text/html\n\n";
191 print $html_form;
192}
193
194sub main
195{
196 my $gsdl_cgi = new gsdlCGI();
197
198 # Load the Greenstone modules that we need to use
199 $gsdl_cgi->setup_gsdl();
200
201 my $gsdlhome = $ENV{'GSDLHOME'};
202 $gsdl_cgi->checked_chdir($gsdlhome);
203
[26747]204 require cgiactions::CollectionSpaceAction;
[26744]205
206 $gsdl_cgi->parse_cgi_args();
207
208 # We don't want the gsdlCGI module to return errors and warnings in XML
209 $gsdl_cgi->{'xml'} = 0;
210
[26747]211 my $fn = $gsdl_cgi->clean_param("fn");
[26744]212
[26747]213 if(defined $fn){
214 #Generate a frame.
215 my $action = new CollectionSpaceAction($gsdl_cgi,$iis6_mode);
216 $action->do_action();
217 }else{
218 my $collect = $gsdl_cgi->clean_param("collect");
219 my $cl = $gsdl_cgi->clean_param("cl");
[26744]220
[26747]221 #Establish collect_dir using defining 'site' along the way if GS3
222 my $site = undef;
223 my $isGSDL2 = undef;
[26744]224
[26747]225 if($gsdl_cgi->greenstone_version() == 2){
226 $isGSDL2 = 1;
227 }else{
228 $isGSDL2 = 0;
[26744]229
[26747]230 #GS3 makes use of 'site'
231 $site = $gsdl_cgi->clean_param("site");
[26744]232
[26747]233 if(!defined $site){
234 $gsdl_cgi->generate_error("No site specified.");
235 }
[26744]236 }
[26747]237
238 generate_html_form($isGSDL2,$site,$collect,$cl);
[26744]239 }
240}
241
242&main();
Note: See TracBrowser for help on using the repository browser.