[wellwell-devel] [SCM] Interchange wellwell catalog branch, master, updated. 9d0fe279d9f8bf6f5038d6543a9a666988505c97

Stefan Hornburg racke at rt.icdevgroup.org
Wed Dec 23 10:10:21 UTC 2009


       via  9d0fe279d9f8bf6f5038d6543a9a666988505c97 (commit)
       via  7d3555b6d137c7eb937edde1115563a24ff89c59 (commit)
      from  0f76fb7c69ee8b4da0ac9d7e727592eb7125a454 (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 9d0fe279d9f8bf6f5038d6543a9a666988505c97
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date:   Wed Dec 23 11:09:23 2009 +0100

    added support for MySQL and PostgreSQL stores
    corrected error message for unknown configuration parameters

commit 7d3555b6d137c7eb937edde1115563a24ff89c59
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date:   Thu Dec 17 21:34:30 2009 +0100

    module name can also be used as formatter configuration value

-----------------------------------------------------------------------

Summary of changes and diff:
 lib/Vend/Wiki.pm |   57 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/lib/Vend/Wiki.pm b/lib/Vend/Wiki.pm
index 316c56b..5b45ea0 100644
--- a/lib/Vend/Wiki.pm
+++ b/lib/Vend/Wiki.pm
@@ -56,7 +56,10 @@ sub new {
 		require Wiki::Toolkit::Store::SQLite;
 		$self->{store} = new Wiki::Toolkit::Store::SQLite(dbname => $self->{dbname});
 	}
-
+	else {
+		$self->load_store();
+	}
+	
 	# create Wiki::Toolkit formatter(s)
 	if ($self->{formatter}) {
 		my @formatters;
@@ -250,6 +253,34 @@ sub list_pages {
 	return @pages;
 }
 
+# load store
+sub load_store {
+	my ($self, $store) = @_;
+	my ($class);
+	
+	if ($self->{backend} =~ /mysql/i) {
+		$class = 'Wiki::Toolkit::Store::MySQL';
+	}
+	elsif ($self->{backend} =~ /(pg|postgresql)/i) {
+		$class = 'Wiki::Toolkit::Store::PostgreSQL';
+	}
+	else {
+		die "Unknown Wiki store $self->{backend}.\n";
+	}
+
+	eval "require $class";
+	if ($@) {
+		die "Failed to load $class: $@\n";
+	}
+	eval {
+		$self->{store} = $class->new(dbname => $self->{dbname}, dbuser => $self->{dbuser},
+									 dbpass => $self->{dbpass}, dbhost => $self->{dbhost});
+	};
+	if ($@) {
+		die "Failed to instantiate $class: $@\n";
+	}
+}
+
 # load formatter
 sub load_formatter {
 	my ($self, $fmt) = @_;
@@ -298,6 +329,11 @@ sub action {
 
 package Vend::Config;
 
+my %wiki_config_params = (dbname => 1,
+						  dbuser => 1,
+						  dbpass => 1,
+						  dbhost => 1);
+
 sub parse_wiki {
 	my ($item, $settings) = @_;
 
@@ -313,14 +349,25 @@ sub parse_wiki {
 	}
 	elsif ($param eq 'formatter') {
 		# add to our list of formatters
-		::logGlobal ("Adding formatter $value.");
-		$C->{$item}->{$name}->{formatter}->{$value} = {class => "Wiki::Toolkit::Formatter::$value"};
+		my $class;
+		
+		if ($value =~ /::/) {
+			# formatter with different namespace, breakout name
+			$class = $value;
+			my @frags = split(/::/, $value);
+			$value = pop(@frags);
+		}
+		else {
+			$class = "Wiki::Toolkit::Formatter::$value";
+		}
+		
+		$C->{$item}->{$name}->{formatter}->{$value} = {class => $class};
 	}
-	elsif ($param eq 'backend' || $param eq 'dbname') {
+	elsif ($param eq 'backend' || $wiki_config_params{$param}) {
 		$C->{$item}->{$name}->{$param} = $value;
 	}
 	else {
-		config_error("No code written yet for $param and $value.", $param, $value);
+		config_error("Unknown wiki parameter %s with value %s.", $param, $value);
 	}
 	
 	return $C->{$item};


hooks/post-receive
-- 
Interchange wellwell catalog



More information about the wellwell-devel mailing list