Ignore:
Timestamp:
2013-01-11T18:27:42+13:00 (11 years ago)
Author:
davidb
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gs3-extensions/html-to-expeditee/trunk/src/src/cgi-bin/export-individual-expeditee.pl.in

    r26632 r26694  
    44#!C:\\Perl32\\bin\\perl -w
    55
    6 ##
    7 # This is used for exporting individual Greenstone
    8 # documents to Expeditee. To export entire collections,
    9 # use html-to-expeditee.pl
    10 ##
    116use strict;
    127my $iis6_mode = 0;
     
    2722sub display_output
    2823{
    29     my($docID,$c,$assocfilepath,$site,$fn,$found) = @_;
     24    my($docID,$c,$assocfilepath,$site) = @_;
    3025   
    3126    my $iframeURL = "library/collection/$c/document/$docID"."?p.showAssocFilePath=1";
    3227   
    33     #Render an html page to display & export item.
     28    #Render an html page to display and export item.
    3429    my $html = <<EOT;
    3530<html>
    36     <head>
    37         <title>Export Item to Expeditee</title>
    38         <base href=".."/>
    39        
    40         <link type="text/css" href="ext/html-to-expeditee/jquery/css/le-frog/jquery-ui-1.8.16.custom.css" rel="stylesheet"/>
    41         <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-1.6.2.min.js"></script>
    42         <script type="text/javascript" src="ext/html-to-expeditee/jquery/js/jquery-ui-1.8.16.custom.min.js"></script>
    43         <script type="text/javascript" src="ext/html-to-expeditee/js/html-to-expeditee.js"></script>
    44         <script type="text/javascript" src="ext/html-to-expeditee/js/gsajax-min.js"></script>
    45        
    46         <style type="text/css">
     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">
    4742        body{
    4843            font-family: Arial;
    4944            font-size: 16px;
    5045            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           
    51109        }
    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;
    60141        }
    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 div
    74         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     }
    97142    </script>
    98     </head>
     143   
    99144    <body>
    100145   
    101     <p id="msg">Exporting following document to Expeditee... </p>
     146        <p id="msg">Exporting following document to Expeditee... </p>
    102147   
    103148    <hr style="margin: 10px;"/>
    104149   
    105150    <!-- 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>
    108152    </body>
    109 </html>
     153    </html>
    110154EOT
    111155    print "Content-type:text/html\n\n";
     
    113157}
    114158
    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 
    128159sub main
    129160{
     
    135166    my $gsdlhome = $ENV{'GSDLHOME'};
    136167    $gsdl_cgi->checked_chdir($gsdlhome);
    137    
    138     #require cgiactions::HtmlToExpediteeAction;
     168
    139169    require cgiactions::ExpediteeExportAction;
    140170    $gsdl_cgi->parse_cgi_args();
     
    143173   
    144174    my $fn = $gsdl_cgi->param("fn");
    145 
     175   
    146176    if(defined $fn){
    147177       
    148178        my $site = $gsdl_cgi->clean_param("site");
    149179        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       
    151182        my $json = $gsdl_cgi->clean_param("json");
    152         my $found = $gsdl_cgi->clean_param("found");
    153         #check($site,$c,$a,$json,$found);
    154183       
    155184        my $action = new ExpediteeExportAction($gsdl_cgi,$iis6_mode);
    156185        $action->do_action();
    157186       
    158         #my $action = new HtmlToExpediteeAction($gsdl_cgi,$iis6_mode);
    159         #$action->do_action();
    160187    }else{
    161188       
    162         printf("fn not defined\n");
    163189        my $docID = $gsdl_cgi->clean_param("docID");
    164190        my $c = $gsdl_cgi->clean_param("c");
    165191        my $assocfilepath = $gsdl_cgi->clean_param("assocfilepath");
    166192        my $site = $gsdl_cgi->clean_param("site");
    167        
     193
    168194        if(!defined $site){
    169195            $gsdl_cgi->generate_error("No site specified.");
    170196        }
    171197       
    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);
    250199    }
    251    
    252200}
    253201
Note: See TracChangeset for help on using the changeset viewer.