This commit was generated by cvs2svn to compensate for changes in r2523,
[freeside.git] / rt / webrt / Admin / Elements / ModifyKeyword
1 <FORM METHOD="get" ACTION="<%$RT::WebPath%>/Admin/Keywords/Modify.html">
2 [<%$title |n %>]<BR>
3
4 <INPUT TYPE="hidden" NAME="id" VALUE="<% $id %>">
5 Keyword <INPUT NAME="Name" VALUE="<% $Keyword->Name %>"><BR>
6
7 Parent <SELECT NAME="Parent">
8               <OPTION VALUE=""<% defined($Keyword->Parent) ? '' : ' SELECTED' %>>-</OPTION>
9 %while ( $parent = $parents->Next ) {
10               <OPTION VALUE="<% $parent->id %>"<% defined($Keyword->Parent) && $parent->id == $Keyword->Parent ? ' SELECTED' : '' %>><% $parent->Name %></OPTION>
11 %}
12 </SELECT>
13
14
15 Kids <FONT SIZE="-2">(separate by
16 <INPUT TYPE="radio" NAME="delim" VALUE="n"<% $delim eq 'n' ? ' CHECKED' : '' %>>
17 line or
18 <INPUT TYPE="radio" NAME="delim" VALUE="s"<% $delim eq 's' ? ' CHECKED' : '' %>>
19 whitespace)</FONT><BR>
20
21 <TEXTAREA NAME="Kids" ROWS=4><% $kidstring %></TEXTAREA>
22 <BR>
23
24 <& /Elements/Submit, Label => $submit &>
25 </FORM>
26
27 <%INIT>
28
29 my $Keyword = new RT::Keyword($session{CurrentUser});
30 my ($title, $submit, %kids, $kid);
31
32 if ( $Create ) {
33     $title = "Create a new Keyword";
34     $submit = "Create";
35     $id = "new";
36     %kids = ();
37     $Parent = ''; #silence 
38 } elsif ( $id eq 'new' ) {
39     $id = $Keyword->Create( Name => $Name, Parent => $Parent )
40       or Abort("can't create keyword Name=>$Name, Parent=>$Parent");
41 } else {
42     $Keyword->Load($id) || Abort("Can't load keyword id $id");
43     #foreach my $field ( grep eval "defined(\$$_)", qw( Name Parent )) {
44     #  eval "\$Keyword->Set(\$field=>\$$field); #sigh
45     #}
46     $Keyword->SetName($Name) if defined($Name);
47     $Keyword->SetParent($Parent) if defined($Parent);
48 }
49
50 $title = "Modify the Keyword <B>". $Keyword->Name. "</B>";
51 $submit = "Modify";
52
53 my $kids = new RT::Keywords($session{CurrentUser});
54 $kids->Limit( FIELD => 'Parent', VALUE => $id, OPERATOR => '=' );
55 $kids{$kid->Name} = $kid while $kid = $kids->Next;
56
57 if ( defined($Kids) ) {
58     my %newkids;
59     if ( $delim eq 'n' ) {
60         %newkids = map { $_=>1 } split(/\n/, $Kids);
61     } elsif ( $delim eq 's' ) {
62         %newkids = map { $_=>1 } split(' ', $Kids);
63     } else {
64         Abort("'$delim' isn't a valid keyword delimiter.");
65     }
66     foreach ( grep { ! defined($newkids{$_}) } keys %kids ) {
67         $kids{$_}->Delete;
68         delete $kids{$_};
69     }
70     foreach ( grep { ! defined($kids{$_}) } keys %newkids ) {
71         $kids{$_} = new RT::Keyword($session{CurrentUser});
72         $kids{$_}->Create( Name => $_, Parent => $id )
73           or Abort("can't create keyword Name=>$_, Parent=>$id");
74     }
75
76 }
77
78
79 my $parent;
80 my $parents = new RT::Keywords($session{CurrentUser});
81 $parents->UnLimit;
82
83 $delim = ( grep /\s/, keys %kids ) ? 'n' : 's';
84 my $kidstring = join("\n", keys %kids);
85
86 </%INIT>
87
88 <%ARGS>
89 $id => undef
90 $Create => undef
91 $Name => undef
92 $Parent => undef
93 $Kids => undef
94 $delim => undef
95 </%ARGS>