[wellwell-devel] [SCM] Interchange wellwell catalog branch, master, updated. cc928ff37d6b99a84ae18e06cbffa2f7115f4eb4
Stefan Hornburg
racke at rt.icdevgroup.org
Fri Feb 19 16:19:27 UTC 2010
via cc928ff37d6b99a84ae18e06cbffa2f7115f4eb4 (commit)
via bfcbe87178741a6cb3cece377259453d6fb2357a (commit)
from 9a2f8b72e242f9980cb8a06ec796a4be8670a3b9 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit cc928ff37d6b99a84ae18e06cbffa2f7115f4eb4
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date: Fri Feb 19 17:19:09 2010 +0100
menu function added
commit bfcbe87178741a6cb3cece377259453d6fb2357a
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date: Fri Feb 19 17:18:26 2010 +0100
pass uid through for recent changes
-----------------------------------------------------------------------
Summary of changes and diff:
lib/Vend/Wiki.pm | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 73 insertions(+), 0 deletions(-)
diff --git a/lib/Vend/Wiki.pm b/lib/Vend/Wiki.pm
index 629796a..6cacff1 100644
--- a/lib/Vend/Wiki.pm
+++ b/lib/Vend/Wiki.pm
@@ -43,6 +43,17 @@ Vend::Config::parse_subroutine('GlobalSub', 'wiki Vend::Wiki::action');
my %metadata_reserved = (formatter => 'Formatter',
uid => 'User ID');
+# default menu entries
+my %wiki_menu = (edit_page => {label => 'Edit this page',
+ action => 'edit',
+ permission => 'wiki_edit_pages',
+ context => 'page'},
+ home => {label => 'Home',
+ permission => 'wiki_view_pages'},
+ recent_changes => {label => 'Recent changes',
+ action => 'recent_changes',
+ permission => 'wiki_recent_changes'});
+
our %wiki;
sub new {
@@ -129,8 +140,11 @@ sub wiki {
}
$wiki{$name} = new Vend::Wiki(%{$Vend::Cfg->{Wiki}->{$name}});
+ $wiki{$name}->{name} = $name;
}
+ $wiki{$name}->{page} = $page;
+
if ($function eq 'create_page') {
my $metadata = $wiki{$name}->metadata_from_form();
@@ -218,6 +232,10 @@ sub wiki {
}
}
+ if ($function eq 'menu') {
+ return $wiki{$name}->menu($opt->{menu_name}, $opt);
+ }
+
if ($function eq 'recent_changes') {
my (@changes, $loopret);
@@ -226,6 +244,7 @@ sub wiki {
for (@changes) {
$_->{date} = substr($_->{last_modified}, 0, 10);
$_->{time} = substr($_->{last_modified}, 11, 8);
+ $_->{uid} = $_->{metadata}->{uid}->[0];
}
$loopret = Vend::Tags->loop({object => {mv_results => \@changes}, prefix => 'item',
@@ -357,6 +376,52 @@ sub list_recent_changes {
return $self->{object}->list_recent_changes(last_n_changes => 50);
}
+# prepares menu items
+sub menu {
+ my ($self, $name, $opt) = @_;
+ my (@tokens, @entries);
+
+ unless (exists $self->{menu}->{$name}) {
+ # menu not found
+ return;
+ }
+
+ @tokens = @{$self->{menu}->{$name}};
+
+ for (@tokens) {
+ my ($menu_ref, $url, $form, $label);
+
+ if (exists $wiki_menu{$_}) {
+ $menu_ref = $wiki_menu{$_};
+
+ if ($menu_ref->{context} eq 'page' && ! $self->{page}) {
+ # out of context, skip entry
+ next;
+ }
+
+ $label = $menu_ref->{label} || $_;
+
+ if ($menu_ref->{action}) {
+ $form = {action => $menu_ref->{action}};
+ }
+
+ $url = $self->{url} || $self->{name};
+
+ if ($self->{page}) {
+ $url .= "/$self->{page}";
+ }
+
+ push(@entries, {name => $label, url => $url, form => $form,
+ permission => $menu_ref->{permission}});
+ }
+ else {
+ push(@entries, {name => $_});
+ }
+ }
+
+ return Vend::Tags->menu_display($name, {ref => \@entries});
+}
+
# add internal metadata - used when writing a node
sub metadata_add_internal {
my ($self, $metadata) = @_;
@@ -545,6 +610,14 @@ sub parse_wiki {
$C->{$item}->{$name}->{$param}->{hash}->{$value} = {class => $class};
}
+ elsif ($param eq 'menu') {
+ # split menu items
+ my @entries;
+
+ @entries = split(/\s*,\s*/, $args[0]);
+
+ push(@{$C->{$item}->{$name}->{$param}->{$value}}, @entries);
+ }
elsif ($param eq 'metadata') {
if (exists $metadata_reserved{$value}) {
config_error('Metadata name %s is reserved for %s', $value, $metadata_reserved{$value});
hooks/post-receive
--
Interchange wellwell catalog
More information about the wellwell-devel
mailing list