#------------------------------------------------------------------------
# Compiled template generated by the Template Toolkit version 2.15
#------------------------------------------------------------------------

Template::Document->new({
    METADATA => {
        'modtime' => '1138010588',
        'name' => 'admin/keywords/create.html.tmpl',
    },
    BLOCK => sub {
        my $context = shift || die "template sub called without context\n";
        my $stash   = $context->stash;
        my $output  = '';
        my $error;
        
        eval { BLOCK: {
    $output .=  "\n";
    $output .=  "\n\n";
    $output .=  "\n  ";
    #line 27 "template/en/custom/admin/keywords/create.html.tmpl"
    $output .=  $context->process('global/header.html.tmpl', { 'title' => 'Add keyword', 'h2' => 'This page allows you to add a new keyword.' });
    $output .=  "\n\n<form method=\"post\" action=\"editkeywords.cgi\">\n  <table border=\"0\" cellpadding=\"4\" cellspacing=\"0\">\n    <tr>\n      <th align=\"right\">Name:</th>\n      <td><input size=\"64\" maxlength=\"64\" name=\"name\" value=\"\"></td>\n    </tr>\n    <tr>\n      <th align=\"right\">Description:</th>\n      <td>\n        <textarea rows=\"4\" cols=\"64\" wrap=\"virtual\"\n        name=\"description\"></textarea>\n      </td>\n    </tr>\n  </table>\n  <hr>\n  <input type=\"hidden\" name=\"id\" value=\"-1\">\n  <input type=\"submit\" value=\"Add\">\n  <input type=\"hidden\" name=\"action\" value=\"new\">\n</form>\n\n<p><a href=\"editkeywords.cgi\">Edit other keywords</a>.</p>\n";
    #line 54 "template/en/custom/admin/keywords/create.html.tmpl"
    $output .=  $context->process('global/footer.html.tmpl');
    $output .=  "\n";
        } };
        if ($@) {
            $error = $context->catch($@, \$output);
            die $error unless $error->type eq 'return';
        }
    
        return $output;
    },
    DEFBLOCKS => {

    },
});
