From be366df8361836ea5991f1a75ee0650c26af52c4 Mon Sep 17 00:00:00 2001 From: Grzegorz Rola <grola@seostudio.pl> Date: Mon, 22 Jun 2020 09:36:04 +0000 Subject: [PATCH] Feature/json renderer html class --- changelog.txt | 4 +++ src/Field.php | 25 +++++++++++++++++ src/Field/BasicField.php | 37 +++++++++++++++++++++++++ src/Renderer/JsonNormalizedRenderer.php | 14 ++++++++++ 4 files changed, 80 insertions(+) diff --git a/changelog.txt b/changelog.txt index c98f112..6b6532c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,9 @@ # Changelog +## [2.0.3] - 2020-06-22 +### Added +- css class in JSON renderer + ## 2.0.2 - 2020-06-17 ### Changed - Skip saving empty keys in the PersistentContainer diff --git a/src/Field.php b/src/Field.php index e3a26e9..458bb38 100644 --- a/src/Field.php +++ b/src/Field.php @@ -2,6 +2,8 @@ namespace WPDesk\Forms; +use WPDesk\Forms\Field\BasicField; + /** * The idea is that from the moment the factory returns this interface it's values cannot be changed. * And that is why here are only the getters. @@ -116,6 +118,29 @@ interface Field { /** @return bool */ public function is_class_set( $name ); + /** bool */ + public function has_data(); + + /** + * @return array + */ + public function get_data(); + + /** + * @param string $data_name + * @param string $data_value + * + * @return $this + */ + public function add_data( $data_name, $data_value ); + + /** + * @param string $data_name + * + * @return $this + */ + public function unset_data( $data_name ); + /** * @return mixed */ diff --git a/src/Field/BasicField.php b/src/Field/BasicField.php index 02004ff..8bd5951 100644 --- a/src/Field/BasicField.php +++ b/src/Field/BasicField.php @@ -137,6 +137,17 @@ abstract class BasicField implements Field { return ! empty( $this->meta['class'] ); } + public function has_data() { + return ! empty( $this->meta['data'] ); + } + + /** + * @return array + */ + public function get_data() { + return empty( $this->meta['data'] ) ? [] : $this->meta['data']; + } + public function get_possible_values() { return isset( $this->meta['possible_values'] ) ? $this->meta['possible_values'] : []; } @@ -210,6 +221,32 @@ abstract class BasicField implements Field { return $this; } + /** + * @param string $data_name + * @param string $data_value + * + * @return $this + */ + public function add_data( $data_name, $data_value ) { + if ( !isset( $this->meta['data'] ) ) { + $this->meta['data'] = []; + } + $this->meta['data'][ $data_name ] = $data_value; + + return $this; + } + + /** + * @param string $data_name + * + * @return $this + */ + public function unset_data( $data_name ) { + unset( $this->meta['data'][ $data_name ] ); + + return $this; + } + /** * @param $name * @param $value diff --git a/src/Renderer/JsonNormalizedRenderer.php b/src/Renderer/JsonNormalizedRenderer.php index 175fe70..2f0c1c3 100644 --- a/src/Renderer/JsonNormalizedRenderer.php +++ b/src/Renderer/JsonNormalizedRenderer.php @@ -32,6 +32,9 @@ class JsonNormalizedRenderer implements FieldRenderer { 'value ' => isset( $fields_data[ $field->get_name() ] ) ? $fields_data[ $field->get_name() ] : $field->get_default_value() ]; + if ( $field->has_classes() ) { + $rendered['class'] = $field->get_classes(); + } if ( $field->has_description() ) { $rendered['description'] = $field->get_description(); } @@ -45,6 +48,17 @@ class JsonNormalizedRenderer implements FieldRenderer { if ( $options ) { $rendered['options'] = $options; } + if ( $field->has_data() ) { + $data = $field->get_data(); + $rendered['data'] = []; + foreach ( $data as $data_name => $data_value ) { + $rendered['data'][] = [ + 'name' => $data_name, + 'value' => $data_value, + ]; + } + } + $rendered_fields[] = $rendered; } -- GitLab