+sub Create {
+ my $self = shift;
+ my %args = (
+ CustomField => 0,
+ Name => '',
+ Description => '',
+ SortOrder => 0,
+ Category => '',
+ @_,
+ );
+
+ my $cf_id = ref $args{'CustomField'}? $args{'CustomField'}->id: $args{'CustomField'};
+
+ my $cf = RT::CustomField->new( $self->CurrentUser );
+ $cf->Load( $cf_id );
+ unless ( $cf->id ) {
+ return (0, $self->loc("Couldn't load Custom Field #[_1]", $cf_id));
+ }
+ unless ( $cf->CurrentUserHasRight('AdminCustomField') || $cf->CurrentUserHasRight('AdminCustomFieldValues') ) {
+ return (0, $self->loc('Permission Denied'));
+ }
+
+ my ($id, $msg) = $self->SUPER::Create(
+ CustomField => $cf_id,
+ map { $_ => $args{$_} } qw(Name Description SortOrder Category)
+ );
+ return ($id, $msg);
+}
+
+sub ValidateName {
+ return defined $_[1] && length $_[1];
+};