new
my $json_writer = OpenGuides::JSON->new( wiki => $wiki,
config => $config );
"wiki" must be a Wiki::Toolkit object and "config" must be an OpenGuides::Config object. Both
arguments mandatory.
emit_json
$wiki->write_node( "Masala Zone, N1 0NU",
"Quick and tasty Indian food",
$checksum,
{ comment => "New page",
username => "Kake",
locale => "Islington" }
);
print "Content-Type: application/javascript\n\n";
print $json_writer->emit_json( node => "Masala Zone, N1 0NU" );
Note: Some of the fields emitted by the JSON generator are taken from the node metadata. The form of
this metadata is not mandated by Wiki::Toolkit. Your wiki application should make sure to store some
or all of the following metadata when calling "write_node":
postcode - The postcode or zip code of the place discussed by the node. Defaults to the empty
string.
city - The name of the city that the node is in. If not supplied, then the value of "default_city"
in the config object supplied to "new", if available, otherwise the empty string.
country - The name of the country that the node is in. If not supplied, then the value of
"default_country" in the config object supplied to "new" will be used, if available, otherwise the
empty string.
username - An identifier for the person who made the latest edit to the node. This person will be
listed as a contributor (Dublin Core). Defaults to empty string.
locale - The value of this can be a scalar or an arrayref, since some places have a plausible claim
to being in more than one locale. Each of these is put in as a "Neighbourhood" attribute.
phone - Only one number supported at the moment. No validation.
website - No validation.
opening_hours_text - A freeform text field.
json_maker
Returns a raw Wiki::Toolkit::Plugin::JSON object created with the values you invoked this module
with.
make_prefs_json
my $json_writer = OpenGuides::JSON->new( wiki => $wiki,
config => $config );
print $json_writer->make_prefs_json();
Retrieves the preferences from any stored preferences cookie, supplies defaults for any preferences
not set, returns the result as JSON.
make_recentchanges_json
# Ten most recent changes.
print "Content-Type: application/javascript\n";
print "Last-Modified: " . $json_writer->json_timestamp( items => 10 ) . "\n\n";
print $json_writer->make_recentchanges_json( items => 10 );
# All the changes made by bob in the past week, ignoring minor edits.
my %args = (
days => 7,
ignore_minor_edits => 1,
filter_on_metadata => { username => "bob" },
);
print "Content-Type: application/javascript\n";
print "Last-Modified: " . $json_writer->json_timestamp( %args ) . "\n\n";
print $json_writer->make_recentchanges_json( %args );
json_timestamp
print "Last-Modified: " . $json_writer->json_timestamp( %args ) . "\n\n";
Returns the timestamp of the RSS feed in POSIX::strftime style ("Tue, 29 Feb 2000 12:34:56 GMT"),
which is equivalent to the timestamp of the most recent item in the feed. Takes the same arguments as
make_recentchanges_json(). You will most likely need this to print a Last-Modified HTTP header so
user-agents can determine whether they need to reload the feed or not.