%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
my $Entries = {};
my $ArticleObj = RT::Article->new( $session{'CurrentUser'} );
my $ClassObj = RT::Class->new( $session{'CurrentUser'} );
+
+if ($Class) {
+ $ClassObj->Load($Class);
+ Abort(loc("'[_1]' isn't a valid class", $Class)) unless $ClassObj->Id;
+}
+
my %create_args;
my %CFContent;
my $EditClass = 1;
}
}
- $ClassObj->Load($Class);
- unless ( $ClassObj->Id ) {
- $m->comp( "/Elements/Error",
- Why => loc( "'[_1]' isn't a valid class identifier", $Class ) );
- }
$EditClass = 0;
$id = 'new';
}
split( /\s+/, $ARGS{'new-RefersTo'} );
}
-
- foreach my $arg (keys %ARGS) {
- next if $arg =~ /-(?:Magic|Category)$/;
- # Object-RT::Article--CustomField-3-Values
- if ( $arg =~ /^Object-RT::Article--CustomField-(\d+)(.*?)$/ ) {
- my $cfid = $1;
-
- my $cf = RT::CustomField->new( $session{'CurrentUser'} );
- $cf->SetContextObject( $ArticleObj );
- $cf->Load( $cfid );
- unless ( $cf->id ) {
- $RT::Logger->error( "Couldn't load custom field #". $cfid );
- next;
- }
-
- if ( $arg =~ /-Upload$/ ) {
- $create_args{"CustomField-$cfid"} = _UploadedFile( $arg );
- next;
- }
-
- my $type = $cf->Type;
-
- my @values = ();
- if ( ref $ARGS{ $arg } eq 'ARRAY' ) {
- @values = @{ $ARGS{ $arg } };
- } elsif ( $type =~ /text/i ) {
- @values = ($ARGS{ $arg });
- } else {
- @values = split /\r*\n/, $ARGS{ $arg } || '';
- }
- @values = grep $_ ne '',
- map {
- s/\r+\n/\n/g;
- s/^\s+//;
- s/\s+$//;
- $_;
- }
- grep defined, @values;
-
- $create_args{"CustomField-$cfid"} = \@values;
- }
- }
+ my %cfs = ProcessObjectCustomFieldUpdatesForCreate(
+ ARGSRef => \%ARGS,
+ ContextObject => $ClassObj,
+ );
my $msg;
( $id, $msg ) = $ArticleObj->Create(
Name => $ARGS{'Name'},
Class => $ARGS{'Class'},
Topics => $ARGS{'Topics'},
- %create_args
+ %create_args,
+ %cfs
);
push( @results, $msg );
if ($id) {
);
}
}
- if (!$id) {
- $ClassObj->Load($Class);
- unless ( $ClassObj->Id ) {
- $m->comp( "/Elements/Error",
- Why => loc( "'[_1]' isn't a valid class identifier", $Class ) );
- }
+ else {
$ArticleObj = RT::Article->new( $session{'CurrentUser'} );
$id = 'new';
$EditClass = 0;