[rt-commit] [svn] r482 - in rt/branches: . autrijus-3.1/bin autrijus-3.1/etc autrijus-3.1/html/Admin/CustomFields autrijus-3.1/html/Admin/Elements autrijus-3.1/html/Admin/Groups autrijus-3.1/lib/RT

autrijus at fsck.com autrijus at fsck.com
Sat Mar 6 07:11:24 EST 2004


Author: autrijus
Date: Sat Mar  6 07:11:23 2004
New Revision: 482

Modified:
   rt/branches/   (props changed)
   rt/branches/autrijus-3.1/bin/webmux.pl.in
   rt/branches/autrijus-3.1/etc/RT_SiteConfig.pm
   rt/branches/autrijus-3.1/html/Admin/CustomFields/index.html
   rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields
   rt/branches/autrijus-3.1/html/Admin/Elements/PickCustomFields
   rt/branches/autrijus-3.1/html/Admin/Groups/Modify.html
   rt/branches/autrijus-3.1/lib/RT/ObjectCustomField_Overlay.pm
   rt/branches/autrijus-3.1/lib/RT/ObjectCustomFields_Overlay.pm
Log:
* retroport apache2 fix.
* SortOrder fully implemented.
* Group's CF view completed.


Modified: rt/branches/autrijus-3.1/bin/webmux.pl.in
==============================================================================
--- rt/branches/autrijus-3.1/bin/webmux.pl.in	(original)
+++ rt/branches/autrijus-3.1/bin/webmux.pl.in	Sat Mar  6 07:11:23 2004
@@ -32,6 +32,9 @@
     $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
     $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
     @ORACLE_ENV_PREF@
+
+    eval { require Apache2; require Apache::compat }
+        if $ENV{'MOD_PERL'} and $ENV{'MOD_PERL'} =~ m{mod_perl/(?:2|1\.9)};
 }
 
 use lib ("@LOCAL_LIB_PATH@", "@RT_LIB_PATH@");

Modified: rt/branches/autrijus-3.1/etc/RT_SiteConfig.pm
==============================================================================
--- rt/branches/autrijus-3.1/etc/RT_SiteConfig.pm	(original)
+++ rt/branches/autrijus-3.1/etc/RT_SiteConfig.pm	Sat Mar  6 07:11:23 2004
@@ -1 +1,5 @@
+Set($WebBaseURL , "");
+Set($DatabaseUser , 'root');
+Set($DatabasePassword , '');
+Set($DatabaseName , 'rt31');
 1;

Modified: rt/branches/autrijus-3.1/html/Admin/CustomFields/index.html
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/CustomFields/index.html	(original)
+++ rt/branches/autrijus-3.1/html/Admin/CustomFields/index.html	Sat Mar  6 07:11:23 2004
@@ -3,17 +3,29 @@
     current_subtab => 'Admin/CustomFields/',
     Title => loc('Select a Custom Field') &>
 
-<UL>
-%while  (my $CustomFieldObj = $CustomFields->Next) { 
+% my $prev_lookup = '';
+% while (my $CustomFieldObj = $CustomFields->Next) { 
 %    $CustomFieldObj->CurrentUserHasRight('AdminCustomField') or next;
-
+%    my $lookup = $CustomFieldObj->FriendlyLookupType;
+%    if ($lookup ne $prev_lookup) {
+%        if ($prev_lookup) {
+</UL>
+%        }
+<H2><% loc("Applies to [_1]", $lookup) %></H2>
+<UL>
+%        $prev_lookup = $lookup;
+%    }
+%    
 <LI>
-<A HREF="Modify.html?id=<%$CustomFieldObj->id()%>"><%$CustomFieldObj->Name%>: <%$CustomFieldObj->Description%></a> (<%$CustomFieldObj->FriendlyObjectTypeComposite%>)<BR>
-
-%}
+<A HREF="Modify.html?id=<%$CustomFieldObj->id()%>"><%$CustomFieldObj->Name%>: <%$CustomFieldObj->Description%></a>
+</LI>
+% }
+% if ($prev_lookup) {
+</UL>
+% }
 
 <%INIT>
 my $CustomFields = RT::CustomFields->new($session{'CurrentUser'});
 $CustomFields->UnLimit();
-$CustomFields->OrderByCols(map { +{ FIELD => $_ } } qw( ObjectType IntermediateType ParentType ) );
+$CustomFields->OrderByCols( { FIELD => 'LookupType' }, { FIELD => 'Name' } );
 </%INIT>

Modified: rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields	(original)
+++ rt/branches/autrijus-3.1/html/Admin/Elements/EditCustomFields	Sat Mar  6 07:11:23 2004
@@ -45,7 +45,7 @@
 <& PickCustomFields, CustomFields => \@GlobalCFs, ReadOnly => 1 &>
 % }
 <h3>Associated Custom Fields (uncheck to unassociate)</h3>
-<& PickCustomFields, CustomFields => \@AssociatedCFs, id => $Object->Id, Checked => 1 &>
+<& PickCustomFields, CustomFields => [$ObjectCFs->CustomFields], id => $Object->Id, Checked => 1 &>
 <h3>Unassociated Custom Fields (check to associate)</h3>
 <& PickCustomFields, CustomFields => \@UnassociatedCFs, id => $Object->Id &>
 
@@ -57,12 +57,13 @@
 my $CustomFields = RT::CustomFields->new($session{'CurrentUser'});
 my $caption;
 my @results;
-my (@GlobalCFs, @AssociatedCFs, @UnassociatedCFs);
+my (@GlobalCFs, @UnassociatedCFs);
 
 # XXX - exception: by "RT::Queue" fields on UI we really mean "RT::Ticket" fields.
 my $lookup = $ObjectType;
 $lookup = 'RT::Queue-RT::Ticket' if $lookup eq 'RT::Queue';
 $CustomFields->LimitToLookupType($lookup);
+$CustomFields->OrderBy( FIELD => 'Name' );
 
 if ($FindDisabledCustomFields) {
     $caption = loc("All Custom Fields");
@@ -71,18 +72,25 @@
     $caption = loc("Enabled Custom Fields");
 }
 
+my $id = $Object->Id;
+my ($GlobalCFs, $ObjectCFs);
+$ObjectCFs = RT::ObjectCustomFields->new($session{'CurrentUser'});
+$ObjectCFs->UnLimit;
+$ObjectCFs->LimitToObjectId($id);
+$ObjectCFs->LimitToLookupType($lookup);
+
 # {{{ deal with moving sortorder of custom fields
 if ($CustomField and $Move) {
-    my $SourceObj = RT::CustomField->new($session{'CurrentUser'});
-    $SourceObj->Load($CustomField) || Abort(loc('No CustomField'));
+    my $SourceObj = RT::ObjectCustomField->new($session{'CurrentUser'});
+    $SourceObj->LoadByCols( ObjectId => $id, CustomField => $CustomField );
 
     my $TargetObj;
     my $target_order = $SourceObj->SortOrder + $Move;
-    while (my $CustomFieldObj = $CustomFields->Next) { 
-	my $this_order = $CustomFieldObj->SortOrder;
+    while (my $ObjectCF = $ObjectCFs->Next) { 
+	my $this_order = $ObjectCF->SortOrder;
 
 	# if we have an exact match, finish the loop now
-	($TargetObj = $CustomFieldObj, last) if $this_order == $target_order;
+	($TargetObj = $ObjectCF, last) if $this_order == $target_order;
 
 	# otherwise, we need to apropos toward the general direction
 	# ... first, check the sign is correct
@@ -96,7 +104,7 @@
 	    next if $orig_delta < $this_delta;
 	}
 
-	$TargetObj = $CustomFieldObj;
+	$TargetObj = $ObjectCF;
     }
 
     if ($TargetObj) {
@@ -105,19 +113,12 @@
 	$TargetObj->SetSortOrder($s);
 	$SourceObj->SetSortOrder($t);
 	# because order changed, we must redo search for subsequent uses
-	$CustomFields->RedoSearch;
     }
 
-    $CustomFields->GotoFirstItem;
+    $ObjectCFs->GotoFirstItem;
 }
 # }}}
 
-my $id = $Object->Id;
-my ($GlobalCFs, $ObjectCFs);
-$ObjectCFs = RT::ObjectCustomFields->new($session{'CurrentUser'});
-$ObjectCFs->LimitToObjectId($Object->Id);
-$ObjectCFs->LimitToLookupType($lookup);
-
 if ($id) {
     $GlobalCFs = RT::ObjectCustomFields->new($session{'CurrentUser'});
     $GlobalCFs->LimitToObjectId(0);
@@ -137,7 +138,6 @@
 	# no longer has
 	my $key = "Object-$id-CF-$cf_id";
 	if ($ARGS{$key}) {
-	    push @AssociatedCFs, $cf;
 	    if (!$ObjectCFs->HasEntryForCustomField($cf_id)) {
 		my ($val, $msg) = $cf->AddToObject($Object);
 		push (@results, $msg);
@@ -147,18 +147,17 @@
 	else {
 	    push @UnassociatedCFs, $cf;
 	    if ($ObjectCFs->HasEntryForCustomField($cf_id)) {
-		my ($val, $msg) = $cf->RemoveFromParent($Object);
+		my ($val, $msg) = $cf->RemoveFromObject($Object);
 		push (@results, $msg);
 	    }
 	}
     }
-    elsif ($ObjectCFs->HasEntryForCustomField($cf_id)) {
-	push @AssociatedCFs, $cf;
-    }
-    else {
+    elsif (!$ObjectCFs->HasEntryForCustomField($cf_id)) {
 	push @UnassociatedCFs, $cf;
     }
 }
+
+$ObjectCFs->RedoSearch;
 
 </%INIT>
 <%ARGS>

Modified: rt/branches/autrijus-3.1/html/Admin/Elements/PickCustomFields
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/Elements/PickCustomFields	(original)
+++ rt/branches/autrijus-3.1/html/Admin/Elements/PickCustomFields	Sat Mar  6 07:11:23 2004
@@ -47,17 +47,17 @@
     <i><% $CustomFieldObj->FriendlyTypeComposite %></i>
   </TD>
 %  # show 'move up' unless it's the first item
-%  if ($count++ and !$ReadOnly) {
+%  if ($count++ and $Checked) {
   <TD valign="TOP">
-    <a href="CustomFields.html?id=<%$id%>&CustomField=<%$CustomFieldObj->id%>&Move=-1"><&|/l&>Move up</&></a>
+    [<a href="CustomFields.html?id=<%$id%>&CustomField=<%$CustomFieldObj->id%>&Move=-1"><&|/l&>Move up</&></a>]
 %  } else {
   <TD valign="TOP" ALIGN=RIGHT>
 %  }
 
 %  # show 'move down' unless it's the last item
-%  if ($count != @CustomFields and !$ReadOnly) {
+%  if ($count != @CustomFields and $Checked) {
 %  $m->print(' | ') if $count > 1;
-    <a href="CustomFields.html?id=<%$id%>&CustomField=<%$CustomFieldObj->id%>&Move=1"><&|/l&>Move down</&></a>
+    [<a href="CustomFields.html?id=<%$id%>&CustomField=<%$CustomFieldObj->id%>&Move=1"><&|/l&>Move down</&></a>]
 %  }
   </TD>
 </TR>

Modified: rt/branches/autrijus-3.1/html/Admin/Groups/Modify.html
==============================================================================
--- rt/branches/autrijus-3.1/html/Admin/Groups/Modify.html	(original)
+++ rt/branches/autrijus-3.1/html/Admin/Groups/Modify.html	Sat Mar  6 07:11:23 2004
@@ -53,7 +53,7 @@
 <TR><TD ALIGN="RIGHT">
 <% $CF->Name %>
 </TD><TD>
-<& /Ticket/Elements/EditCustomField, CustomField => $CF &>
+<& /Elements/EditCustomField, CustomField => $CF, Object => $Group &>
 </TD></TR>
 % }
 <TR>
@@ -112,6 +112,7 @@
 					    Object => $Group,
 					    ARGSRef => \%ARGS );
     push (@results, at fieldresults);
+    push @results, ProcessObjectCustomFieldUpdates( ARGSRef => \%ARGS );
 }
 
 #we're asking about enabled on the web page but really care about disabled.

Modified: rt/branches/autrijus-3.1/lib/RT/ObjectCustomField_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/ObjectCustomField_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/ObjectCustomField_Overlay.pm	Sat Mar  6 07:11:23 2004
@@ -25,4 +25,54 @@
 use strict;
 no warnings qw(redefine);
 
+sub Create {
+    my $self = shift;
+    my %args = ( 
+                CustomField => '0',
+                ObjectId => '0',
+		SortOrder => undef,
+		  @_);
+
+    if (!defined $args{SortOrder}) {
+	my $CF = $self->CustomFieldObj($args{'CustomField'});
+	my $ObjectCFs = RT::ObjectCustomFields->new($self->CurrentUser);
+	$ObjectCFs->LimitToObjectId($args{'ObjectId'});
+	$ObjectCFs->LimitToLookupType($CF->LookupType);
+
+	$args{SortOrder} = $ObjectCFs->Count + 1;
+    }
+
+    $self->SUPER::Create(
+                         CustomField => $args{'CustomField'},
+                         ObjectId => $args{'ObjectId'},
+                         SortOrder => $args{'SortOrder'},
+		     );
+}
+
+sub Delete {
+    my $self = shift;
+
+    my $ObjectCFs = RT::ObjectCustomFields->new($self->CurrentUser);
+    $ObjectCFs->LimitToObjectId($self->ObjectId);
+    $ObjectCFs->LimitToLookupType($self->CustomFieldObj->LookupType);
+
+    # Move everything below us up
+    my $sort_order = $self->SortOrder;
+    while (my $OCF = $ObjectCFs->Next) {
+	my $this_order = $OCF->SortOrder;
+	next if $this_order <= $sort_order; 
+	$OCF->SetSortOrder($this_order - 1);
+    }
+
+    $self->SUPER::Delete;
+}
+
+sub CustomFieldObj {
+    my $self = shift;
+    my $id = shift || $self->CustomField;
+    my $CF = RT::CustomField->new($self->CurrentUser);
+    $CF->Load($id) or die "Cannot load CustomField $id";
+    return $CF;
+}
+
 1;

Modified: rt/branches/autrijus-3.1/lib/RT/ObjectCustomFields_Overlay.pm
==============================================================================
--- rt/branches/autrijus-3.1/lib/RT/ObjectCustomFields_Overlay.pm	(original)
+++ rt/branches/autrijus-3.1/lib/RT/ObjectCustomFields_Overlay.pm	Sat Mar  6 07:11:23 2004
@@ -33,7 +33,7 @@
 
 sub LimitToObjectId {
     my $self = shift;
-    my $id = shift;
+    my $id = shift || 0;
     $self->Limit( FIELD => 'ObjectId', VALUE => $id );
 }
 
@@ -66,6 +66,12 @@
     else {
 	return ($items[0]);
     }  
+}
+
+sub CustomFields {
+    my $self = shift;
+    my %seen;
+    map { $_->CustomFieldObj } grep { !$seen{$_->CustomField}++ } @{$self->ItemsArrayRef};
 }
 
 1;



More information about the Rt-commit mailing list