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