2008-09-22 New Pages

This is what I’m using to create new pages with tags at the moment. The latest revision handles multi-word tags correctly (use “double quotes”).

$Action{new} = \&DoNew;

sub DoNew {
  if (GetParam('tags', '') and GetParam('id', '')) {
    my $tags = GetParam('tags', '');
    $tags =~ s{"(.*?)"}{$_ = $1; s/ +/_/g; $_ }eg;
    my @tags = map { s/_/ /g; $_ } split(' ', $tags);
    DoEdit(GetParam('id', ''), "\n\n\nTags: "
	   . join (' ', map { "[[tag:$_]]" } @tags),
	   1);
  } else {
    print GetHeader('', T('New')), $q->start_div({-class=>'content categories'}),
      GetFormStart(undef, 'get', 'cat');
    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime();
    my $today = sprintf("%d-%02d-%02d", $year + 1900, $mon + 1, $mday);
    my $go = T('Go!');
    print $q->p(T('Title: '),
		qq{<input type="text" name="id" value="$today" tabindex="1" />},
		GetHiddenValue('action', 'new'));
    print $q->p(T('Tags: '),
		qq{<input type="text" name="tags" tabindex="2" />});
    print $q->p(qq{<input type="submit" value="$go" tabindex="3" />});
    print $q->end_form, $q->end_div();
    PrintFooter();
  }
}

​#Oddmuse