HTML-EP-Glimpse

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

ChangeLog		Module history
MANIFEST		This file
MANIFEST.SKIP
Makefile.PL		Makefile generator
README
html/advanced.ep
html/admin/glimpseindex.ep
html/admin/index.ep
html/admin/prefs.ep
html/de.jpg
html/en.jpg
html/index.ep
html/search.ep
lib/HTML/EP/Glimpse.pm
lib/HTML/EP/Glimpse/Install.pm
t/base.t

html/admin/index.ep  view on Meta::CPAN

                   de="Glimpse Index-Administration"></h1>
<ep-language language="de">
  Auf dieser Seite findet die Verwaltung des Glimpse-Index statt.
  Die folgenden Aktionen stehen Ihnen zur Verfügung:
</ep-language>
<ep-language language="en">
  This page allows you to manage your glimpse index.
  You may:
</ep-language>
  <ul>
    <li><a href="prefs.ep?language=$_ep_language$">
	<ep-language en="Modify" de="Modifikation"></a>
	<ep-language en="the index preferences"
                     de="der für den Index relevanten Daten">
    <li><a href="glimpseindex.ep?language=$_ep_language$">
	<ep-language de="Indizierung" en="Create"></a>
	<ep-language language="de">
	  der für den Index relevanten Dateien, sollte nach jeder Änderung
          aufgerufen werden. Dies wird am besten durch einen Cron-Job
          automatisch erledigt, ist aber auch hier von Hand möglich.
        </ep-language>

html/admin/prefs.ep  view on Meta::CPAN

<body bgcolor=#ffffff>
  <h1><ep-language en="Glimpse Index Preferences"
             de="Stammdaten des Glimpse-Index"></h1>
<ep-language language="de">
  Hier werden die für den Index relevanten Daten erfaßt.
</ep-language>
<ep-language language="en">
  You may modify the index settings here.
</ep-language>
<div align=center>
<form action="prefs.ep" method="POST">
<input type=hidden name="language" value="$_ep_language$">
<table>
  <tr><th><ep-language de="Root-Verzeichnis des WWW-Servers"
		       en="WWW servers root directory"></th>
      <td><input name="glimpse_prefs_rootdir" size=30
	         value="$glimpse_prefs->rootdir$"></td>
  <tr><th><ep-language de="Zu durchsuchende Verzeichnisse"
		       en="Directories being indexed"><br>
	  <font size=-1><ep-language de="Ein Verzeichnis pro Zeile"
		                     en="One directory per line"></font></th>
      <td><textarea name="glimpse_prefs_dirs" rows=5 cols=30
	  >$glimpse_prefs->dirs$</textarea></td>
  <tr><th><ep-language de="Zu ignorierende Verzeichnisse"
		       en="Directories being ignored"><br>
	  <font size=-1><ep-language de="Ein Verzeichnis pro Zeile"
		                     en="One directory per line"></font></th>
      <td><textarea name="glimpse_prefs_dirs_ignored" rows=5 cols=30
	  >$glimpse_prefs->dirs_ignored$</textarea></td>
  <tr><th><ep-language de="Zu indizierende Dateiendungen"
		       en="Suffixes of files being indexed"></th>
      <td><input name="glimpse_prefs_suffix" size=30
		 value="$glimpse_prefs->suffix$"></td>
</table>
<ep-language language="de">
  <input type=submit name="modify" value="Daten speichern">
</ep-language>
<ep-language language="en">
  <input type=submit name="modify" value="Save settings">
</ep-language>
</div>
</body>
</html>

lib/HTML/EP/Glimpse.pm  view on Meta::CPAN

use HTML::EP ();
use HTML::EP::Locale ();
use HTML::EP::Glimpse::Config ();

package HTML::EP::Glimpse;

$HTML::EP::Glimpse::VERSION = '0.05';
@HTML::EP::Glimpse::ISA = qw(HTML::EP::Locale HTML::EP);


sub _prefs {
    my $self = shift; my $attr = shift; my $prefs = shift;
    $self->{'glimpse_config'} ||= $HTML::EP::Glimpse::Config::config;
    my $config = $self->{'glimpse_config'};
    my $vardir = $config->{'vardir'};
    die "A directory $vardir does not exist. Please create it, with write "
        . " permissions for the web server, or modify the value of "
        . " vardir in $INC{'HTML/EP/Glimpse/Config.pm'}."
            unless -d $vardir;
    my $prefs_file = "$vardir/prefs";
    if (!$prefs) {
        # Load Prefs
	require Safe;
	my $cpt = Safe->new();
        $prefs = $self->{'prefs'} = $cpt->rdo($prefs_file) || {};

        $prefs->{'rootdir'} = $ENV{'DOCUMENT_ROOT'}
            unless exists($prefs->{'rootdir'});
        $prefs->{'dirs'} = "/"
            unless exists($prefs->{'dirs'});
        $prefs->{'dirs_ignored'} =
            (($ENV{'PATH_INFO'} =~ /(.*)\//) ? $1 : "")
                unless exists($prefs->{'dirs_ignored'});
        $prefs->{'suffix'} = ".html .htm"
            unless exists($prefs->{'suffix'});
    } else {
        # Save Prefs
        require Data::Dumper;
        my $d = Data::Dumper->new([$prefs])->Indent(1)->Terse(1)->Dump();
        require Symbol;
        my $fh = Symbol::gensym();
        if ($self->{'debug'}) {
            print "Saving Preferences to $prefs_file.\n";
            $self->print("Saving data:\n$d\n");
        }
        die "Could not save data into $prefs_file: $!. Please verify whether"
            . " the web server has write permissions in $vardir and on"
            . " $prefs_file."
                unless open($fh, ">$prefs_file")  and  (print $fh "$d\n")
                    and close($fh);
    }
    $self->{'glimpse_prefs'} = $prefs;
}


sub _ep_glimpse_load {
    my $self = shift; my $attr = shift;
    my $cgi = $self->{'cgi'};
    my $prefs = $self->_prefs($attr);

    if ($cgi->param('modify')) {
        my $modified = 0;
        foreach my $p ($cgi->param()) {
            if ($p =~ /^glimpse_prefs_(.*)/) {
                my $sp = $1;
                my $old = $prefs->{$sp};
                my $new = $cgi->param($p);
                if (!defined($old)) {
                    if (defined($new)) {
                        $modified = 1;
                        $prefs->{$sp} = $new;
                    }
                } elsif (!defined($new)) {
                    $modified = 1;
                    $prefs->{$sp} = $new;
                } else {
                    $modified = ($new ne $old);
                    $prefs->{$sp} = $new;
                }
            }
        }
        if ($self->{'debug'}) {
            $self->print("Modifications detected.\n");
        }
        $self->_prefs($attr, $prefs);
    }
    '';
}


sub _ep_glimpse_create {
    my $self = shift; my $attr = shift;
    my $prefs = $self->_prefs($attr);
    my $vardir = $self->{'glimpse_config'}->{'vardir'};
    my $debug = $self->{'debug'};
    my $cfg = $self->{'glimpse_config'};

    my $rootdir = $prefs->{'rootdir'};
    my $dirlist = $prefs->{'dirs'};
    $dirlist =~ s/\s+/ /sg;
    $dirlist =~ s/^\s+//;
    $dirlist =~ s/\s+$//;
    my @dirs = map { "$rootdir/$_" } split(/ /, $dirlist);
    $dirlist = $prefs->{'dirs_ignored'};
    $dirlist =~ s/\s+/ /sg;
    $dirlist =~ s/^\s+//;
    $dirlist =~ s/\s+$//;
    my @dirs_ignored = map { "$rootdir/$_" } split(/ /, $dirlist);

    my $matchesDirsIgnored;
    if (@dirs_ignored) {
        my $dirsIgnoredRe = join("|", map { "\\Q$_\\E" } @dirs_ignored);
        my $func = "sub { shift() =~ m[^(?:$dirsIgnoredRe)] }";
        $matchesDirsIgnored = eval $func;
        $self->print("Making function for directory match: $func",
                     " ($matchesDirsIgnored))\n") if $debug;
    } else {
        $matchesDirsIgnored = sub { 0 }
    }
    my $suffixList = $prefs->{'suffix'};
    $suffixList =~ s/\s+/ /sg;
    $suffixList =~ s/^\s+//;
    $suffixList =~ s/\s+$//;
    my @suffix = split(/ /, $suffixList);
    my $matchesSuffix;
    if (@suffix) {
        my $suffixRe = join("|", map { "\\Q$_\\E" } @suffix);
        my $func = "sub { shift() =~ m[(?:$suffixRe)\$] }";
        $matchesSuffix = eval $func;
        $self->print("Making function for suffix match: $func",

lib/HTML/EP/Glimpse.pm  view on Meta::CPAN

    my $output = $self->_ep_list({'items' => $lines,
                                  'item' => 'l',
                                  'template' => $template});
    $self->print("output = ", (defined($output) ? $output : "undef"), "\n")
        if $debug;
    $output;
}

sub _ep_glimpse_search {
    my $self = shift; my $attr = shift;
    my $prefs = $self->_prefs($attr);
    my $vardir = $self->{'glimpse_config'}->{'vardir'};
    my $cgi = $self->{'cgi'};
    my $debug = $self->{'debug'};
    my $start = ($cgi->param('start')  or  0);
    my $max = ($cgi->param('max')  or  $attr->{'max'}  or  20);
    my @opts = ($self->{'glimpse_config'}->{'glimpse_path'}, '-UOnbqy', '-L',
                "0:" . ($start+$max), '-H', $vardir);
    my $case_sensitive = $cgi->param('opt_case_sensitive') ? 1 : 0;
    push(@opts, '-i') unless $case_sensitive;
    my $word_boundary = $cgi->param('word_boundary') ? 1 : 0;

lib/HTML/EP/Glimpse.pm  view on Meta::CPAN

            } else {
                push(@files, {'file' => $file,
                              'fileNum' => ++$fileNum,
                              'title' => $title,
                              'lines' => [@lines]})
            }
        }
        $self->print("Found " . scalar(@files) . " files\n") if $debug;
        foreach my $file (@files) {
            my $url = $file->{'file'};
            $url =~ s/^\Q$prefs->{'rootdir'}\E//;
            $url =~ s/^\/+/\//;
            $file->{'url'} = $url;
        }
        $self->{'files'} = \@files;
        if (@files == $max) {
            $self->{'next'} = $start + $max;
        }
        $self->{'prev'} = $start ? $start - $max : -1;
    } unless $@;
    close $fh if $fh;



( run in 0.899 second using v1.01-cache-2.11-cpan-5fbc6bb55f2 )