/[pub]/suikawiki/script/misc/plugins/bugtrack.wp2
Suika

Diff of /suikawiki/script/misc/plugins/bugtrack.wp2

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by wakaba, Tue May 18 11:25:11 2004 UTC revision 1.5 by wakaba, Tue Sep 21 03:18:21 2004 UTC
# Line 17  Plugin: Line 17  Plugin:
17    @RequiredPlugin[list]:    @RequiredPlugin[list]:
18      WikiLinking      WikiLinking
19      WikiResource      WikiResource
   @Use:  
     my $WIKILINKING;  
     my $WIKIRESOURCE;  
20    @Namespace:    @Namespace:
21        @@bt:
22          http://suika.fam.cx/~wakaba/archive/2004/8/11/sw-bt#
23      @@media-type:      @@media-type:
24        http://suika.fam.cx/~wakaba/-temp/2004/04/24/mt#        http://suika.fam.cx/~wakaba/-temp/2004/04/24/mt#
25      @Use:
26        my $WIKILINKING;
27        my $WIKIRESOURCE;
28    
29        my %BugProp = (
30          Status => {
31            name => 'Status',
32            uri => <Q:bt:status>,
33          },
34          Priority => {
35            name => 'Priority',
36            uri => <Q:bt:priority>,
37          },
38          Category => {
39            name => 'Category',
40            uri => <Q:bt:category>,
41            is_list => 1,
42          },
43          Subject => {
44            name => 'Subject',
45            uri => <Q:bt:subject>,
46          },
47          CreationDate => {
48            name => 'CreationDate',
49            uri => <Q:bt:creation-date>,
50          },
51        );
52    
53  PluginConst:  PluginConst:
54    @NS_XHTML1:    @NS_XHTML1:
# Line 133  Function: Line 159  Function:
159      @@lang: en      @@lang: en
160    @Main:    @Main:
161      my (undef, %opt) = @_;      my (undef, %opt) = @_;
162  ## TODO: New style property should also be implemented      my $content_prop = $opt{o}->{wiki}->{db}->get (content_prop => $opt{page});
     my $bug_info = $opt{o}->{wiki}->{db}->get (content => $opt{page});  
163      my %bug_prop;      my %bug_prop;
164      my $f = 0;  
165        ## Get from content_prop database
166        PROP: {
167          for (keys %BugProp) {
168            $bug_prop{$_} = ($content_prop->get_attribute ($BugProp{$_}->{uri})
169                                      or last PROP)
170                                 ->value;
171          }
172          return \%bug_prop;
173        } # PROP
174        
175        ## Get from content
176        if ($content_prop->get_attribute_value
177              (<Q:media-type:media-type>,
178                default => q<IMT:text/x-suikawiki;version="0.9"##>) eq
179            q<IMT:text/x-suikawiki;version="0.9"##>) {
180    
181          my $bug_info = $opt{o}->{wiki}->{db}->get (content => $opt{page});
182          my $f = 0;
183            for (split /\n/, $bug_info) {            for (split /\n/, $bug_info) {
184              tr/\x0A\x0D//d;              tr/\x0A\x0D//d;
185              if (/^-\s*([0-9A-Za-z-]+)\s*:\s*(\S.*\S)/) {              if (/^-\s*([0-9A-Za-z-]+)\s*:\s*(\S.*\S)/) {
# Line 146  Function: Line 189  Function:
189                last if $f;                last if $f;
190              }              }
191            }            }
192    \ \%bug_prop;      }
193        return \%bug_prop;
194    
195  FormattingRule:  FormattingRule:
196    @Category[list]:    @Category[list]:
# Line 474  ViewDefinition: Line 518  ViewDefinition:
518      @@@: Create a new bug WikiPage      @@@: Create a new bug WikiPage
519      @@lang:en      @@lang:en
520    @method:    @method:
521        @@Name: main
522      @@@:      @@@:
523        my $wiki = $self->{view}->{wiki};        my $wiki = $self->{view}->{wiki};
524        ## Open Database        ## Open Database
# Line 492  ViewDefinition: Line 537  ViewDefinition:
537                               (ns => $ns, o => $o),                               (ns => $ns, o => $o),
538        };        };
539                
540        ## Generate new content        ## Set properties
541        my $content_prop = $wiki->{db}->get        my $content_prop = $wiki->{db}->get
542                             (content_prop => $o->{bt__bug}->{bug_page});                             (content_prop => $o->{bt__bug}->{bug_page});
543        $content_prop->set_attribute        $content_prop->set_attribute
# Line 500  ViewDefinition: Line 545  ViewDefinition:
545        my @page;        my @page;
546        for (qw/Subject Priority Status Category/) {        for (qw/Subject Priority Status Category/) {
547          my $value = $o->{wiki}->{input}->parameter ('bt--' . lc $_)          my $value = $o->{wiki}->{input}->parameter ('bt--' . lc $_)
548                    || $WIKIRESOURCE->get (name => 'BugTrack:'.$_.':Default',                    || __FUNCPACK{WikiResource}__
549                                      ->get (name => 'BugTrack:'.$_.':Default',
550                                           o => $o, wiki => $o->{wiki});                                           o => $o, wiki => $o->{wiki});
551          push @page, '- ' . $_ . ': ' . $value;   ## TODO: multiple categories
552            $content_prop->set_attribute ($BugProp{$_}->{uri} => $value);
553          $o->{bt__bug}->{prop}->{$_} = $value;          $o->{bt__bug}->{prop}->{$_} = $value;
554        }        }
555        my @time = gmtime;        $content_prop->set_attribute ($BugProp{CreationDate}->{uri} => time);
556        push @page, '- Creation-Date: ' .        $wiki->{db}->set (content_prop => $o->{bt__bug}->{bug_page}
557                    sprintf '%04d-%02d-%02d %02d:%02d:%02d +00:00',                                  => $content_prop);
                           $time[5]+1900,$time[4]+1,@time[3,2,1,0];  
       push @page, '';  
       push @page, '[1] ' . "\n" . $o->{wiki}->{input}->parameter ('bt--body');  
       $wiki->{db}->set (content => $o->{bt__bug}->{bug_page}  
                                 => join "\x0A", @page);  
558        $wiki->{db}->set (lastmodified => $o->{bt__bug}->{bug_page}        $wiki->{db}->set (lastmodified => $o->{bt__bug}->{bug_page}
559                                  => time);                                  => time);
560    
561          ## Save main content
562          my $page = '[1]' . "\n" . $o->{wiki}->{input}->parameter ('bt--body');
563          $wiki->{db}->set (content => $o->{bt__bug}->{bug_page}
564                                    => join "\x0A", $page);
565    
566          ## Redirect to new WikiPage
567        my $uri = $self->{view}->{wiki}->uri_reference        my $uri = $self->{view}->{wiki}->uri_reference
568                    (page => $o->{bt__bug}->{bug_page},                    (page => $o->{bt__bug}->{bug_page},
569                     up_to_date => 1);                     up_to_date => 1);
# Line 526  ViewDefinition: Line 574  ViewDefinition:
574                               status_phrase => q(Created));                               status_phrase => q(Created));
575          ## Should we use 201 Created?          ## Should we use 201 Created?
576        $output->output (output => 'http-cgi');        $output->output (output => 'http-cgi');
     @@Name: main  
577    
578  ViewFragment:  ViewFragment:
579    @Template[list]: links    @Template[list]: links
# Line 546  ViewFragment: Line 593  ViewFragment:
593          }p,          }p,
594        );        );
595    
596    ViewFragment:
597      @Template[list]:wr--read-body
598      @Order: -10
599      @Description:
600        @@@: "Read" mode body -- Bug information
601        @@lang:en
602      @Formatting:
603        %bt--if-one-of-bug (
604          true => {
605            %pe--propedit (template => {
606              %resource-as-plain-text (name => {BugTrack:PropEdit:Template});
607            }p);
608          }p,
609        );
610    
611  Resource:  Resource:
612    @BugTrack:Category:Default:    @BugTrack:Category:Default:
613      @@@: (default)      @@@: (default)
# Line 608  Resource: Line 670  Resource:
670    @BugTrack:Priority:normal:    @BugTrack:Priority:normal:
671      @@@: normal      @@@: normal
672      @@lang: en      @@lang: en
673      @BugTrack:PropEdit:Template:
674        %line (content => {
675          %text (label => {%res (name => {BugTrack:Subject:Label});}p,
676                 id => bt--subject, size => 20, source => prop);
677        }p);
678        %list (
679          x => {
680            %text (label => {%res (name => {BugTrack:Category:Label});}p,
681                   id => bt--category, size => 20, source => prop);
682          }p,
683          x => {%submit (label => {%res (name => {WikiForm:Change});}p);}p,
684        );
685    @BugTrack:Status:Default:    @BugTrack:Status:Default:
686      @@@: open      @@@: open
687      @@lang: en      @@lang: en

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24