]> matita.cs.unibo.it Git - helm.git/blob - helm/scripts/init.d/loadPredefinedStylesheets.pl
Initial revision
[helm.git] / helm / scripts / init.d / loadPredefinedStylesheets.pl
1 #!/usr/bin/perl -w
2 use strict;
3
4 use LWP::UserAgent;
5 use URI::Escape;
6
7 my $usage = <<EOHELP;
8 loadPredefinedStylesheets.pl
9 loadPredefinedStylesheets.pl { -u | --unload }
10 loadPredefinedStylesheets.pl { -r | --reload }
11 loadPredefinedStylesheets.pl { -h | --help }
12 EOHELP
13
14 sub getPredefinedStylesheets ($) {
15   my $confile = shift;
16   my %stylesconf;
17   my $inForm = 0; # currenlty inside 'predefinedStylesheets' form
18   open(CONF, "< $confile") || die "Can't open $confile";
19   while(my $l = <CONF>) {
20     chomp($l);
21     if (not $inForm) {
22       if ($l =~ /<form name="predefinedStylesheets">/) {
23         $inForm = 1;
24       }
25     } else {  # in form
26       if ($l =~ /<\/form>/) {
27         $inForm = 0;
28       } elsif ($l =~ /<option value="[^"]+">/) {
29         my $val = $l;
30         $val =~ s/.*<option value="([^"]+)".*>/$1/;
31         my ($key, $ur, $use_getter) = split /,/, $val;
32         $stylesconf{$key}[0] = $ur;
33         if ($use_getter =~ /true/) {
34           $use_getter = 1;
35         } elsif ($use_getter =~ /false/) {
36           $use_getter = 0;
37         } else {
38           die "Unknown value '$use_getter' for 'use_getter' field.";
39         }
40         $stylesconf{$key}[1] = $use_getter;
41       }
42     }
43   }
44   close(CONF);
45   return %stylesconf;
46 }
47
48 my $action = "load";
49 my $opt = shift || "";
50 die $usage if (($opt eq "-h") or ($opt eq "--helm"));
51 $action = "unload" if (($opt eq "-u") or ($opt eq "--unload"));
52 $action = "reload" if (($opt eq "-r") or ($opt eq "--reload"));
53
54 my $confile = $ENV{"UWOBO_PANEL_CONF"} || die "UWOBO_PANEL_CONF not defined";
55 my $getter_url = $ENV{"HELM_GETTER_URL"} || die "HELM_GETTER_URL not defined";
56 my $uwobo_url = $ENV{"HELM_UWOBO_URL"} || die "HELM_UWOBO_URL not defined";
57 my %styles = getPredefinedStylesheets($confile);
58 my $request_url = "";
59
60 if ($action eq "load") {  # load predefined stylesheets
61   foreach my $k (keys %styles) {
62     $request_url .= "&" unless ($request_url eq "");
63     my $ur = $styles{$k}[0];
64     my $use_getter = $styles{$k}[1];
65     $request_url .= "bind=$k,";
66     my $tmp = "";
67     if ($use_getter) {
68       $tmp .= $getter_url . "getxslt?uri="
69     }
70     $tmp .= $ur;
71     $request_url .= uri_escape($tmp);
72   }
73   $request_url = $uwobo_url . "add?$request_url";
74
75 } elsif ($action eq "unload") { # unload predefined stylesheets
76   $request_url = $uwobo_url . "remove?keys=" . join(',', keys %styles);
77
78 } elsif ($action eq "reload") { # reload predefined stylesheets
79   $request_url = $uwobo_url . "reload?keys=" . join(',', keys %styles);
80
81 } else {  # unknown action
82   die "Unknown action '$action'";
83 }
84
85 my $agent = LWP::UserAgent->new();
86 my $response = $agent->get($request_url);
87 print $response->as_string();
88 #   print "$request_url\n";
89