aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm2
-rw-r--r--perllib/FixMyStreet/DB/Result/Body.pm15
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Body.pm11
-rw-r--r--perllib/FixMyStreet/Roles/Translatable.pm3
4 files changed, 30 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm
index 0b1720982..aab114576 100644
--- a/perllib/FixMyStreet/App/Controller/Admin.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin.pm
@@ -1941,7 +1941,7 @@ sub check_page_allowed : Private {
sub fetch_all_bodies : Private {
my ($self, $c ) = @_;
- my @bodies = $c->model('DB::Body')->all;
+ my @bodies = $c->model('DB::Body')->all_translated;
if ( $c->cobrand->moniker eq 'zurich' ) {
@bodies = $c->cobrand->admin_fetch_all_bodies( @bodies );
} else {
diff --git a/perllib/FixMyStreet/DB/Result/Body.pm b/perllib/FixMyStreet/DB/Result/Body.pm
index db7777053..6481d5cfc 100644
--- a/perllib/FixMyStreet/DB/Result/Body.pm
+++ b/perllib/FixMyStreet/DB/Result/Body.pm
@@ -132,6 +132,21 @@ sub url {
return $c->uri_for( '/reports/' . $c->cobrand->short_name( $self ), $args || {} );
}
+__PACKAGE__->might_have(
+ "translations",
+ "FixMyStreet::DB::Result::Translation",
+ sub {
+ my $args = shift;
+ return {
+ "$args->{foreign_alias}.object_id" => { -ident => "$args->{self_alias}.id" },
+ "$args->{foreign_alias}.tbl" => { '=' => \"?" },
+ "$args->{foreign_alias}.col" => { '=' => \"?" },
+ "$args->{foreign_alias}.lang" => { '=' => \"?" },
+ };
+ },
+ { cascade_copy => 0, cascade_delete => 0 },
+);
+
around name => \&translate_around;
sub areas {
diff --git a/perllib/FixMyStreet/DB/ResultSet/Body.pm b/perllib/FixMyStreet/DB/ResultSet/Body.pm
index 6802ed604..e79d038b1 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Body.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Body.pm
@@ -14,4 +14,15 @@ sub for_areas {
return $result;
}
+sub all_translated {
+ my $rs = shift;
+ my $schema = $rs->result_source->schema;
+ my @bodies = $rs->search(undef, {
+ '+columns' => { 'msgstr' => 'translations.msgstr' },
+ join => 'translations',
+ bind => [ 'name', $schema->lang, 'body' ],
+ })->all;
+ return @bodies;
+}
+
1;
diff --git a/perllib/FixMyStreet/Roles/Translatable.pm b/perllib/FixMyStreet/Roles/Translatable.pm
index 02be78a0e..3bd5a148d 100644
--- a/perllib/FixMyStreet/Roles/Translatable.pm
+++ b/perllib/FixMyStreet/Roles/Translatable.pm
@@ -25,6 +25,9 @@ sub translate_column {
sub _translate {
my ($self, $col, $fallback) = @_;
+ my %cols = $self->get_columns;
+ return $cols{msgstr} if $cols{msgstr};
+
my $schema = $self->result_source->schema;
my $table = lc $self->result_source->source_name;
my $id = $self->id;