[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