Changeset 1227


Ignore:
Timestamp:
Oct 18, 2008, 3:37:04 PM (13 years ago)
Author:
nick
Message:

Start to support metadata discovery stuff

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib

    • Property svn:ignore set to
      *.swp
      .vimrc
  • trunk/lib/OpenGuides

    • Property svn:ignore set to
      *.swp
      .vimrc
  • trunk/lib/OpenGuides.pm

    r1226 r1227  
    10001000    my $output = $self->process_template( %conf );
    10011001    return $output if $args{return_output};
     1002    print $output;
     1003}
     1004
     1005=item B<show_metadata>
     1006
     1007  $guide->show_metadata();
     1008  $guide->show_metadata(type => "category");
     1009  $guide->show_metadata(type => "category", format => "json");
     1010
     1011Lists all metadata types, or all metadata values of a given
     1012type. Useful for programatically discovering a guide.
     1013
     1014As with other methods, parameters C<return_tt_vars> and
     1015C<return_output> can be used to return these things instead of
     1016printing the output to STDOUT.
     1017
     1018=cut
     1019sub show_metadata {
     1020    my ($self, %args) = @_;
     1021    my $wiki = $self->wiki;
     1022    my $formatter = $wiki->formatter;
     1023
     1024    my @values;
     1025    my $type;
     1026    if($args{"type"}) {
     1027       $type = $args{"type"};
     1028       @values = $wiki->store->list_metadata_by_type($args{"type"});
     1029    } else {
     1030       $type = "metadata_type";
     1031       @values = $wiki->store->list_metadata_names;
     1032    }
     1033
     1034    my %tt_vars = ( type          => $type,
     1035                    metadata      => \@values,
     1036                    num_results   => scalar @values,
     1037                    not_deletable => 1,
     1038                    deter_robots  => 1,
     1039                    not_editable  => 1 );
     1040    return %tt_vars if $args{return_tt_vars};
     1041
     1042    my $output;
     1043    my $content_type;
     1044
     1045    if($args{"format"}) {
     1046       if($args{"format"} eq "json") {
     1047          $content_type = "text/javascript";
     1048          my $json = OpenGuides::JSON->new( wiki => $wiki,
     1049                                            config => $self->config );
     1050          $output = $json->output_as_json(
     1051                                 $type => \@values
     1052          );
     1053       }
     1054    }
     1055    unless($output) {
     1056       $output = OpenGuides::Template->output(
     1057                                                 wiki    => $wiki,
     1058                                                 config  => $self->config,
     1059                                                 template=>"metadata.tt",
     1060                                                 vars    => \%tt_vars,
     1061                                             );
     1062    }
     1063    return $output if $args{return_output};
     1064
     1065    if($content_type) {
     1066       print "Content-type: $content_type\n\n";
     1067    }
    10021068    print $output;
    10031069}
  • trunk/lib/OpenGuides/JSON.pm

    r1225 r1227  
    6161}
    6262
     63=item B<emit_json>
     64Renders the given node as JSON
     65=cut
    6366sub emit_json {
    6467    my ( $self, %args ) = @_;
     
    104107}
    105108
     109=item B<output_as_json>
     110Renders the given arbitary data as JSON
     111=cut
     112sub output_as_json {
     113    my ( $self, %args ) = @_;
     114    return $self->json_maker->make_json(\%args);
     115}
     116
    106117sub json_maker {
    107118    my $self = shift;
  • trunk/wiki.cgi

    r1224 r1227  
    189189    } elsif ($action eq 'about') {
    190190        $guide->display_about(format => $format);
    191     } elsif ($action eq 'metadata' && $q->param("type")) {
     191    } elsif ($action eq 'metadata') {
    192192        $guide->show_metadata(
    193                             type   => $q->param("type"),
     193                            type   => $q->param("type") || "",
    194194                            format => $format,
    195195                          );
Note: See TracChangeset for help on using the changeset viewer.