From 9292866fbc1be364a716ac9efb105a0350a2de72 Mon Sep 17 00:00:00 2001 From: M Somerville Date: Wed, 2 Sep 2020 16:30:57 +0100 Subject: Form wizard code. --- perllib/FixMyStreet/App/Form/Field/JSON.pm | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 perllib/FixMyStreet/App/Form/Field/JSON.pm (limited to 'perllib/FixMyStreet/App/Form/Field/JSON.pm') diff --git a/perllib/FixMyStreet/App/Form/Field/JSON.pm b/perllib/FixMyStreet/App/Form/Field/JSON.pm new file mode 100644 index 000000000..4da4ef2b0 --- /dev/null +++ b/perllib/FixMyStreet/App/Form/Field/JSON.pm @@ -0,0 +1,42 @@ +package FixMyStreet::App::Form::Field::JSON; + +use HTML::FormHandler::Moose; +extends 'HTML::FormHandler::Field::Hidden'; + +use JSON::MaybeXS; +use MIME::Base64; + +has '+inflate_method' => ( default => sub { \&inflate_json } ); +has '+deflate_method' => ( default => sub { \&deflate_json } ); +has '+fif_from_value' => ( default => 1 ); + +sub inflate_json { + my ($self, $value) = @_; + return $value unless $value; + $value = decode_json(decode_base64($value)); + return $value; +} + +sub deflate_json { + my ($self, $value) = @_; + return $value unless $value; + $value = encode_base64(encode_json($value), ""); + return $value; +} + +__PACKAGE__->meta->make_immutable; +use namespace::autoclean; + +1; + +__END__ + +=pod + +=encoding UTF-8 + +=head1 NAME + +FixMyStreet::App::Form::Field::JSON - used to store some data in a hidden field + +=cut -- cgit v1.2.3