[Rt-commit] rt branch, 4.4/cf-sort-order-inputs, created. rt-4.4.2-65-gcd6ef438e
? sunnavy
sunnavy at bestpractical.com
Thu Jan 25 18:41:17 EST 2018
The branch, 4.4/cf-sort-order-inputs has been created
at cd6ef438e09899f22002f3203508c4aa446c1b07 (commit)
- Log -----------------------------------------------------------------
commit cd6ef438e09899f22002f3203508c4aa446c1b07
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Jan 26 06:45:37 2018 +0800
support cf reordering by directly editing SortOrder on ocf admin pages
since we don't support move up/down for global cfs on queue-specific
pages, global cfs' SortOrder inputs are disabled there accordingly.
diff --git a/share/html/Admin/Elements/EditCustomFields b/share/html/Admin/Elements/EditCustomFields
index 650ac11b6..4dd1b6a94 100644
--- a/share/html/Admin/Elements/EditCustomFields
+++ b/share/html/Admin/Elements/EditCustomFields
@@ -148,6 +148,28 @@ if ( $UpdateCFs ) {
my ($status, $msg) = $CF->RemoveFromObject( $Object );
push @results, $msg;
}
+
+ my %sort = map { /CustomField-(\d+)-SortOrder/ ? ( $1 => $ARGS{$_} ) : () } keys %ARGS;
+ for my $cf_id ( sort keys %sort ) {
+ my $sort_order = $sort{$cf_id};
+ $sort_order =~ s/^\s+//;
+ $sort_order =~ s/\s+$//;
+ next unless $sort_order =~ /^\d+$/;
+
+ my $record = RT::ObjectCustomField->new( $session{'CurrentUser'} );
+ $record->LoadByCols( ObjectId => $id, CustomField => $cf_id );
+ unless ( $record->id ) {
+ push @results,
+ loc("Custom field #[_1] is not applied to object #[_2]", $cf_id, $id);
+ next;
+ }
+
+ if ( $record->SortOrder != $sort_order ) {
+ my ( $status, $msg ) = $record->SetSortOrder( $sort_order );
+ push @results, $msg;
+ }
+ }
+
}
$m->callback(CallbackName => 'UpdateExtraFields', Results => \@results, Object => $Object, %ARGS);
@@ -166,8 +188,8 @@ my $format = RT->Config->Get('AdminSearchResultFormat')->{'CustomFields'};
my $rows = RT->Config->Get('AdminSearchResultRows')->{'CustomFields'} || 50;
my $display_format = $id
- ? ("'__RemoveCheckBox.{$id}__',". $format .", '__MoveCF.{$id}__'")
- : ("'__CheckBox.{RemoveCustomField}__',". $format .", '__MoveCF.{$id}__'");
+ ? ("'__RemoveCheckBox__', ". $format .", '__SortOrder.{$id}__', '__MoveCF.{$id}__'")
+ : ("'__CheckBox.{RemoveCustomField}__', ". $format .", '__SortOrder__', '__MoveCF.{$id}__'");
$m->callback(CallbackName => 'EditDisplayFormat', DisplayFormat => \$display_format, id => $id);
</%INIT>
diff --git a/share/html/Elements/RT__CustomField/ColumnMap b/share/html/Elements/RT__CustomField/ColumnMap
index 2eaad4f02..e93ad5a46 100644
--- a/share/html/Elements/RT__CustomField/ColumnMap
+++ b/share/html/Elements/RT__CustomField/ColumnMap
@@ -166,6 +166,28 @@ my $COLUMN_MAP = {
return @res;
},
},
+ SortOrder => {
+ title => 'Sort',
+ value => sub {
+ my $id = $_[0]->id;
+ my $queue_id = $_[2] || 0;
+
+ my $record = RT::ObjectCustomField->new( $session{CurrentUser} );
+ my $applied_id = $_[0]->IsGlobal ? 0 : $queue_id;
+ my $disabled = $applied_id == $queue_id ? '' : 'disabled="disabled"';
+
+ $record->LoadByCols( CustomField => $id, ObjectId => $applied_id );
+ if ( $record->id ) {
+ my $name = "CustomField-$id-SortOrder";
+ my $value = $DECODED_ARGS->{ $name } // $record->SortOrder;
+ return \qq{<input name="}, $name, \qq{" size="3" value="$value" $disabled />};
+ }
+ else {
+ RT->Logger->warning("Custom field #$id is not applied to object #$applied_id");
+ return '';
+ }
+ },
+ },
};
$COLUMN_MAP->{'AppliedTo'} = $COLUMN_MAP->{'AddedTo'};
-----------------------------------------------------------------------
More information about the rt-commit
mailing list