OpenGuides
view release on metacpan or search on metacpan
# multi-valued params
my $params = $q->Vars;
$params->{'action'} = 'display';
my $redir_target = $script_url . $script_name . '?';
my @args = map { "$_=" . $params->{$_} } keys %{$params};
$redir_target .= join ';', @args;
print $q->redirect(
-uri => $redir_target,
-status => 303
);
}
};
if ($@) {
my $error = $@;
warn $error;
print $q->header;
my $contact_email = $config->contact_email;
print qq(<html><head><title>ERROR</title></head><body>
<p>Sorry! Something went wrong. Please contact the
Wiki administrator at
<a href="mailto:$contact_email">$contact_email</a> and quote
the following error message:</p><blockquote>)
. $q->escapeHTML($error)
. qq(</blockquote><p><a href="$script_name">Return to the Wiki home page</a>
</body></html>);
}
############################ subroutines ###################################
sub show_userstats {
my %args = @_;
my ($username, $host) = @args{ qw( username host ) };
croak "No username or host supplied to show_userstats"
unless $username or $host;
my %criteria = ( last_n_changes => 5 );
$criteria{metadata_was} = $username ? { username => $username }
: { host => $host };
my @nodes = $wiki->list_recent_changes( %criteria );
@nodes = map { {name => $q->escapeHTML($_->{name}),
last_modified => $q->escapeHTML($_->{last_modified}),
comment => OpenGuides::Utils::parse_change_comment(
$q->escapeHTML($_->{metadata}{comment}[0]),
$script_url . '?',
),
url => "$script_name?"
. $q->escape($formatter->node_name_to_node_param($_->{name})) }
} @nodes;
my %tt_vars = ( last_five_nodes => \@nodes,
username => $username,
username_param => $wiki->formatter->node_name_to_node_param($username),
host => $host,
);
process_template("userstats.tt", "", \%tt_vars);
}
sub get_cookie {
my $pref_name = shift or return "";
my %cookie_data = OpenGuides::CGI->get_prefs_from_cookie(config=>$config);
return $cookie_data{$pref_name};
}
sub display_node_rdf {
my %args = @_;
my $rdf_writer = OpenGuides::RDF->new( wiki => $wiki,
config => $config );
print "Content-type: application/rdf+xml\n\n";
print $rdf_writer->emit_rdfxml( node => $args{node} );
}
sub display_node_json {
my %args = @_;
my $json_writer = OpenGuides::JSON->new( wiki => $wiki,
config => $config );
print "Content-type: text/javascript\n\n";
print $json_writer->emit_json( node => $args{node} );
}
sub process_template {
my ($template, $node, $vars, $conf, $omit_header) = @_;
my %output_conf = ( wiki => $wiki,
config => $config,
node => $node,
template => $template,
vars => $vars
);
$output_conf{noheaders} = 1 if $omit_header; # defaults otherwise
print OpenGuides::Template->output( %output_conf );
}
sub do_search {
my $terms = shift;
my %finds = $wiki->search_nodes($terms);
# my @sorted = sort { $finds{$a} cmp $finds{$b} } keys %finds;
my @sorted = sort keys %finds;
my @results = map {
{ url => $q->escape($formatter->node_name_to_node_param($_)),
title => $q->escapeHTML($_)
} } @sorted;
my %tt_vars = ( results => \@results,
num_results => scalar @results,
not_editable => 1,
search_terms => $q->escapeHTML($terms) );
process_template("search_results.tt", "", \%tt_vars);
}
sub show_wanted_pages {
my @dangling = $wiki->list_dangling_links;
my @wanted;
my %backlinks_count;
foreach my $node_name (@dangling) {
$backlinks_count{$node_name} = scalar($wiki->list_backlinks( node => $node_name ));
}
foreach my $node_name (sort { $backlinks_count{$b} <=> $backlinks_count{$a} } @dangling) {
my $node_param =
uri_escape($formatter->node_name_to_node_param($node_name));
push @wanted, {
( run in 1.043 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )