Auf Romans Anregen - Ein simples POD basiertes Hilfesystem
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 18 Mar 2011 15:30:04 +0000 (16:30 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 18 Mar 2011 15:38:35 +0000 (16:38 +0100)
So funktionierts:
- 1. Hilfe in eine pod Datei schreiben
- 2. Pod Datei nach doc/online/<lang>/<tag>.html legen,
      wobei <lang> der countrycode der locale ist,
      und <tag> ein /[a-zA-Z0-9_]+/ Identifier ist.
- 3. HTML erzeugen mit:

  scripts/make_docs.pl

- 4. Im Template einen Hilfelink einbinden mit:

  [% L.online_help_tag('tag') %]

.gitignore
SL/Template/Plugin/L.pm
css/lx-office-erp.css
doc/online/.dummy [new file with mode: 0644]
scripts/make_docs.pl [new file with mode: 0644]

index 999a9bf..d512181 100644 (file)
@@ -4,3 +4,5 @@ crm
 /users/templates-cache/
 /users/pid/
 /config/lx_office.conf
+/doc/online/*/*.html
+pod2html*
index 513f4a2..2299a66 100644 (file)
@@ -396,6 +396,18 @@ EOCODE
   return $code;
 }
 
+sub online_help_tag {
+  my ($self, $tag, @slurp) = @_;
+  my %params               = _hashify(@slurp);
+  my $cc                   = $::myconfig{countrycode};
+  my $file                 = "doc/online/$cc/$tag.html";
+  my $text                 = $params{text} || $::locale->text('Help');
+
+  die 'malformed help tag' unless $tag =~ /^[a-zA-Z0-9_]+$/;
+  return unless -f $file;
+  return $self->html_tag('a', $text, href => $file, target => '_blank');
+}
+
 sub dump {
   my $self = shift;
   require Data::Dumper;
index 6f25ee5..6fbe8c2 100644 (file)
@@ -134,7 +134,7 @@ body.menu {
 /*
     Überschriftsbalken
 */
-.listtop {
+.listtop, h1 {
     background-color: rgb(236,233,216);
     text-align:left;
     padding:5px;
diff --git a/doc/online/.dummy b/doc/online/.dummy
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/scripts/make_docs.pl b/scripts/make_docs.pl
new file mode 100644 (file)
index 0000000..f5ec66e
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+
+use strict;
+
+use Pod::Html;
+use File::Find;
+
+my $doc_path     = "doc/online";
+#my $pod2html_bin = `which pod2html` or die 'cannot find pod2html on your system';
+
+find({no_chdir => 1, wanted => sub {
+  next unless -f;
+  next unless /\.pod$/;
+  print "processing $_,$/";
+  my $html_file = $_;
+  $html_file =~ s/\.pod$/.html/;
+  pod2html(
+#    $pod2html_bin,
+    '--noindex',
+    '--css=../../../css/lx-office-erp.css',
+    "--infile=$_",
+    "--outfile=$html_file",
+  );
+}}, $doc_path);
+
+1;