+sub available_templates {
+  my ($class) = @_;
+
+  # is there a templates basedir
+  if (!-d $::lx_office_conf{paths}->{templates}) {
+    $::form->error(sprintf($::locale->text("The directory %s does not exist."), $::lx_office_conf{paths}->{templates}));
+  }
+
+  tie my %dir_h, 'IO::Dir', $::lx_office_conf{paths}->{templates};
+
+  my @alldir  = sort grep {
+       -d ($::lx_office_conf{paths}->{templates} . "/$_")
+    && !/^\.\.?$/
+    && !m/\.(?:html|tex|sty|odt|xml|txb)$/
+    && !m/^(?:webpages$|print$|mail$|\.)/
+  } keys %dir_h;
+
+  tie %dir_h, 'IO::Dir', "$::lx_office_conf{paths}->{templates}/print";
+  my @allmaster = ('Standard', sort grep { -d ("$::lx_office_conf{paths}->{templates}/print" . "/$_") && !/^\.\.?$/ && !/^Standard$/ } keys %dir_h);
+
+  return (
+    print_templates  => \@alldir,
+    master_templates => \@allmaster,
+  );
+}
+