Author: ilmari Date: 2007-06-16 20:45:04 +0100 (Sat, 16 Jun 2007) New Revision: 1081
Modified: trunk/Changes trunk/lib/OpenGuides/RDF.pm trunk/t/21_rdf.t trunk/templates/node_rdf.tt Log: List all contributors in RDF version of nodes (fixes #106)
Modified: trunk/Changes =================================================================== --- trunk/Changes 2007-06-16 17:30:53 UTC (rev 1080) +++ trunk/Changes 2007-06-16 19:45:04 UTC (rev 1081) @@ -19,6 +19,7 @@ Added new div#nonexistent_node_message for displaying message when someone tries to view a nonexistent node. Validate input geodata (#22) + List all contributors in RDF version of nodes (#106).
0.60 13 May 2007 Removed footer search from edit page (shouldn't have been there).
Modified: trunk/lib/OpenGuides/RDF.pm =================================================================== --- trunk/lib/OpenGuides/RDF.pm 2007-06-16 17:30:53 UTC (rev 1080) +++ trunk/lib/OpenGuides/RDF.pm 2007-06-16 19:45:04 UTC (rev 1081) @@ -82,7 +82,7 @@ );
foreach my $var ( qw( phone fax website opening_hours_text address - postcode city country latitude longitude username + postcode city country latitude longitude os_x os_y summary ) ) { my $val = $metadata{$var}[0] || $defaults{$var} || ""; $tt_vars{$var} = $val; @@ -133,9 +133,6 @@ $tt_vars{timestamp} = $time->strftime("%Y-%m-%dT%H:%M:%S"); }
- $tt_vars{user_id} = $tt_vars{username}; - $tt_vars{user_id} =~ s/\s/_/g; - $tt_vars{node_uri} = $self->{make_node_url}->( $node_name ); $tt_vars{node_uri_with_version} = $self->{make_node_url}->( $node_name, @@ -157,6 +154,28 @@ } }
+ my @revisions = $wiki->list_node_all_versions( + name => $node_name, + with_content => 0, + with_metadata => 1, + ); + + # We want all users who have edited the page listed as contributors, + # but only once each + foreach my $rev ( @revisions ) { + my $username = $rev->{metadata}{username}; + next unless defined $username && length $username; + + my $user_id = $username; + $user_id =~ s/\s+/_/g; + + $tt_vars{contributors}{$username} ||= + { + username => encode_entities_numeric($username), + user_id => encode_entities_numeric($user_id), + }; + } + # OK, we've set all our template variables; now process the template. my $template_path = $config->template_path; my $custom_template_path = $config->custom_template_path || "";
Modified: trunk/t/21_rdf.t =================================================================== --- trunk/t/21_rdf.t 2007-06-16 17:30:53 UTC (rev 1080) +++ trunk/t/21_rdf.t 2007-06-16 19:45:04 UTC (rev 1081) @@ -15,7 +15,7 @@ plan skip_all => "DBD::SQLite could not be used - no database to test with. ($error)"; }
-plan tests => 27; +plan tests => 28;
Wiki::Toolkit::Setup::SQLite::setup( { dbname => "t/node.db" } ); my $config = OpenGuides::Test->make_basic_config; @@ -24,6 +24,7 @@ $config->site_name( "Wiki::Toolkit Test Site" ); $config->default_city( "London" ); $config->default_country( "United Kingdom" ); +$config->geo_handler( 3 );
eval { require Wiki::Toolkit::Search::Plucene; }; if ( $@ ) { $config->use_plucene ( 0 ) }; @@ -49,6 +50,22 @@ node => "Calthorpe Arms", content => "CAMRA-approved pub near King's Cross", comment => "Stub page, please update!", + username => "Anonymous", + postcode => "WC1X 8JR", + locales => "Bloomsbury\r\nSt Pancras", + phone => "test phone number", + website => "test website", + hours_text => "test hours", + latitude => "51.524193", + longitude => "-0.114436", + summary => "a really nice pub", +); + +OpenGuides::Test->write_data( + guide => $guide, + node => "Calthorpe Arms", + content => "CAMRA-approved pub near King's Cross", + comment => "Stub page, please update!", username => "Kake", postcode => "WC1X 8JR", locales => "Bloomsbury\r\nSt Pancras", @@ -83,8 +100,10 @@
like( $rdfxml, qr|<foaf:Person rdf:ID="Kake">|, "last username to edit used as contributor" ); +like( $rdfxml, qr|<foaf:Person rdf:ID="Anonymous">|, + "... as well as previous usernames" );
-like( $rdfxml, qr|wiki:version1</wiki:version>|, "version picked up" ); +like( $rdfxml, qr|wiki:version2</wiki:version>|, "version picked up" );
like( $rdfxml, qr|<rdf:Description rdf:about="">|, "sets the 'about' correctly" );
Modified: trunk/templates/node_rdf.tt =================================================================== --- trunk/templates/node_rdf.tt 2007-06-16 17:30:53 UTC (rev 1080) +++ trunk/templates/node_rdf.tt 2007-06-16 19:45:04 UTC (rev 1081) @@ -18,11 +18,13 @@ dc:date[% timestamp %]</dc:date> dcterms:modified[% timestamp %]</dcterms:modified>
+ [% FOREACH contributor = contributors.values %] dc:contributor - <foaf:Person rdf:ID="[% user_id %]"> - foaf:nick[% username %]</foaf:nick> + <foaf:Person rdf:ID="[% contributor.user_id %]"> + foaf:nick[% contributor.username %]</foaf:nick> </foaf:Person> </dc:contributor> + [% END %]
<dc:source rdf:resource="[% node_uri %]" /> wiki:version[% version %]</wiki:version>
openguides-commits@lists.openguides.org