aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm61
1 files changed, 61 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm b/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm
new file mode 100644
index 000000000..d5ec64698
--- /dev/null
+++ b/perllib/FixMyStreet/App/Controller/Admin/ReportExtraFields.pm
@@ -0,0 +1,61 @@
+package FixMyStreet::App::Controller::Admin::ReportExtraFields;
+use Moose;
+use namespace::autoclean;
+use List::MoreUtils qw(uniq);
+
+BEGIN { extends 'Catalyst::Controller'; }
+
+
+sub begin : Private {
+ my ( $self, $c ) = @_;
+
+ $c->forward('/admin/begin');
+}
+
+sub index : Path : Args(0) {
+ my ( $self, $c ) = @_;
+
+ my @extras = $c->model('DB::ReportExtraFields')->search(
+ undef,
+ {
+ order_by => 'name'
+ }
+ );
+
+ $c->stash->{extra_fields} = \@extras;
+}
+
+sub edit : Path : Args(1) {
+ my ( $self, $c, $extra_id ) = @_;
+
+ my $extra;
+ if ( $extra_id eq 'new' ) {
+ $extra = $c->model('DB::ReportExtraFields')->new({});
+ } else {
+ $extra = $c->model('DB::ReportExtraFields')->find( $extra_id )
+ or $c->detach( '/page_error_404_not_found' );
+ }
+
+ if ($c->req->method eq 'POST') {
+ $c->forward('/auth/check_csrf_token');
+
+ foreach (qw/name cobrand language/) {
+ $extra->$_($c->get_param($_));
+ }
+ $c->forward('/admin/update_extra_fields', [ $extra ]);
+
+ $extra->update_or_insert;
+ }
+
+ $c->forward('/auth/get_csrf_token');
+ $c->forward('/admin/fetch_languages');
+
+ my @cobrands = uniq sort map { $_->{moniker} } FixMyStreet::Cobrand->available_cobrand_classes;
+ $c->stash->{cobrands} = \@cobrands;
+
+ $c->stash->{extra} = $extra;
+}
+
+__PACKAGE__->meta->make_immutable;
+
+1;