diff options
Diffstat (limited to 'rt/webrt/Admin/Keywords')
-rw-r--r-- | rt/webrt/Admin/Keywords/Modify.html | 96 | ||||
-rw-r--r-- | rt/webrt/Admin/Keywords/index.html | 110 |
2 files changed, 206 insertions, 0 deletions
diff --git a/rt/webrt/Admin/Keywords/Modify.html b/rt/webrt/Admin/Keywords/Modify.html new file mode 100644 index 000000000..bb7e2db8c --- /dev/null +++ b/rt/webrt/Admin/Keywords/Modify.html @@ -0,0 +1,96 @@ +<& /Admin/Elements/Header, Title => $title &> +<& /Admin/Elements/Tabs &> + + +<& /Elements/TitleBoxStart, title => %$title &> +<FORM METHOD="POST" ACTION="<%$RT::WebPath%>/Admin/Keywords/Modify.html"> +<INPUT TYPE="hidden" NAME="id" VALUE="<% $id %>"> +Keyword <INPUT NAME="Name" VALUE="<% $Keyword->Name %>"><BR> + +Parent <SELECT NAME="Parent"> + <OPTION VALUE=""<% defined($Keyword->Parent) ? '' : ' SELECTED' %>>-</OPTION> +%while ( $parent = $parents->Next ) { + <OPTION VALUE="<% $parent->id %>"<% defined($Keyword->Parent) && $parent->id == $Keyword->Parent ? ' SELECTED' : '' %>><% $parent->Name %></OPTION> +%} +</SELECT> + + +New children of this keyword. one per line. +<TEXTAREA NAME="Kids" ROWS=4><% $kidstring %></TEXTAREA> +<BR> + +<& /Elements/Submit, Label => $submit &> +</FORM> +<& /Elements/TitleBoxEnd &> + +<%INIT> + +my $Keyword = new RT::Keyword($session{CurrentUser}); +my ($title, $submit, %kids, $kid); + +if ( $Create ) { + $title = "Create a new Keyword"; + $submit = "Create"; + $id = "new"; + %kids = (); + $Parent = ''; #silence +} +else { + if ( $id eq 'new' ) { + $id = $Keyword->Create( Name => $Name, Parent => $Parent ) + or Abort("can't create keyword Name=>$Name, Parent=>$Parent"); + } else { + $Keyword->Load($id) || Abort("Can't load keyword id $id"); + + #foreach my $field ( grep eval "defined(\$$_)", qw( Name Parent )) { + # eval "\$Keyword->Set(\$field=>\$$field); #sigh + #} + + $Keyword->SetName($Name) if defined($Name); + $Keyword->SetParent($Parent) if defined($Parent); + } + + $title = "Modify the Keyword <B>". $Keyword->Name. "</B>"; + $submit = "Modify"; +} + + +my $kids = $Keyword->Children(new RT::Keywords($session{CurrentUser})); + +$kids{$kid->Name} = $kid while $kid = $kids->Next; + +if ( defined($Kids) ) { + my %newkids; + + %newkids = map { $_=>1 } split(/\r/, $Kids); + + } + foreach ( grep { ! defined($newkids{$_}) } keys %kids ) { + $kids{$_}->Delete; + delete $kids{$_}; + } + foreach ( grep { ! defined($kids{$_}) } keys %newkids ) { + $kids{$_} = new RT::Keyword($session{CurrentUser}); + $kids{$_}->Create( Name => $_, Parent => $id ) + or Abort("can't create keyword Name=>$_, Parent=>$id"); + } + +} + + +my $parent; +my $parents = new RT::Keywords($session{CurrentUser}); +$parents->UnLimit; + +my $kidstring = join("\r", keys %kids); + +</%INIT> + +<%ARGS> +$id => undef +$Create => undef +$Name => undef +$Parent => undef +$Kids => undef + +</%ARGS> diff --git a/rt/webrt/Admin/Keywords/index.html b/rt/webrt/Admin/Keywords/index.html new file mode 100644 index 000000000..12814ec03 --- /dev/null +++ b/rt/webrt/Admin/Keywords/index.html @@ -0,0 +1,110 @@ +<& /Elements/Header, Title => 'Admin/Keywords' &> +<& /Admin/Elements/Tabs, current_tab => 'Admin/Keywords/' &> + +<& /Elements/ListActions, actions => \@Actions &> + +<& /Elements/TitleBoxStart, title => 'Keywords' &> +<a href="<%$RT::WebPath%>/Admin/Keywords/?RootId=<%$Root->Parent%>"><%$Root->Path%></a> +<UL> +<FORM METHOD=POST ACTION="index.html"> +<input type=hidden name=RootId value="<%$RootId%>"> + + +% while (my $key = $Keywords->Next) { + <LI> +% if ($Edit == $key->id) { + <input name="KeyName-<%$key->id%>" value="<%$key->Name%>"> + <input type=submit value="Update"> + <input type=submit name="Disable-<%$key->id%>" value="Disable"> +% } else { + <A HREF="?RootId=<%$key->id%>"><%$key->Name%></A> +% if ($key->Disabled) { + <input type=submit name="Enable-<%$key->id%>" value="Enable"> +% } else { + [<a href="?Edit=<%$key->id%>&RootId=<%$Root->Id%>">edit</a>] +% } +% } + + + </LI> +% } + <LI> + <input name="KeyName-New"> <input type=submit value="Add"> +</UL> +<BR> + <input type="checkbox" name="ShowDisabled"> Include disabled items in listing. + <input type=submit value="Go!"> + +</FORM> + +<& /Elements/TitleBoxEnd &> +<%INIT> +my (@Actions); + +if ($ARGS{'KeyName-New'}) { + my $NewKey = new RT::Keyword($session{'CurrentUser'}); + my ($val, $msg) = $NewKey->Create( Parent => $RootId, Name => $ARGS{'KeyName-New'}); + push (@Actions, $msg); +} + +my $arg; +foreach $arg (keys %ARGS) { + if ($arg =~ /^Disable-(\d*)$/) { + my $id = $1; + my $keyword = new RT::Keyword($session{'CurrentUser'}); + $keyword->Load($id); + my ($val, $msg) = $keyword->SetDisabled(1); + push (@Actions, $msg); + + + } + elsif ($arg =~ /^Enable-(\d*)$/) { + my $id = $1; + my $keyword = new RT::Keyword($session{'CurrentUser'}); + $keyword->Load($id); + my ($val, $msg) = $keyword->SetDisabled(0); + push (@Actions, $msg); + } + elsif ($arg =~ /^KeyName-(\d*)$/) { + my $id = $1; + my $keyword = new RT::Keyword ($session{'CurrentUser'}); + $keyword->Load($id); + if ($keyword->Name() ne $ARGS{"$arg"}) { + my ($val, $msg) = $keyword->SetName($ARGS{"$arg"}); + push (@Actions, $msg); + } + if (($ARGS{"KeyParent-$id"}) && + ($keyword->Parent ne $ARGS{"KeyParent-$id"})) { + my ($val, $msg) = $keyword->SetParent($ARGS{"KeyParent-$id"}); + push (@Actions, $msg); + } + } +} + + +my $Root = new RT::Keyword($session{'CurrentUser'}); +my $Keywords; +#If we have a root load it. +if ($RootId != 0) { + $Root->Load($RootId); + $Keywords = $Root->Children(); + +} +else { + $Keywords = new RT::Keywords($session{'CurrentUser'}); + $Keywords->LimitToParent(0); +} + +if ($ShowDisabled) { + $Keywords->{'find_disabled_rows'} = 1; +} + + + + +</%INIT> +<%ARGS> +$RootId => 0 +$Edit => undef +$ShowDisabled => 0 +</%ARGS> |