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

Revision 26694, 4.8 KB (checked in by davidb, 7 years ago)

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

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 browser.