Skip to content
Snippets Groups Projects
address-collection.php 14.4 KiB
Newer Older
<?php
/**
 * Copyright (C) 2019 Leipzig University Library
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * @author  Sebastian Kehr <kehr@ub.uni-leipzig.de>
 * @license http://opensource.org/licenses/gpl-2.0.php GNU GPLv2
 */

use fid\InputFilter\RootAwareBaseInputFilter;
use fid_adlr\Validator\HomeAddressField;
use Laminas\Filter\StringTrim;
use Laminas\Form\Element\Hidden;
use Laminas\Form\Element\Text;
use Laminas\Form\InputFilterProviderFieldset;
use Laminas\Validator\NotEmpty;
use Laminas\Validator\StringLength;

return [
    'spec' => [
        'elements' => [
            'address_0' => [
                'spec' => [
                    'elements' => [
                            'spec' => [
                                'attributes' => [
                                    'required' => true,
                                ],
                            ],
                        ],
                        'zip'     => [
                            'spec' => [
                                'attributes' => [
                                    'required' => true,
                                ],
                            ],
                        ],
                        'city'    => [
                            'spec' => [
                                'attributes' => [
                                    'required' => true,
                                ],
                            ],
                        ],
                        'country' => [
                            'spec' => [
                                'attributes' => [
                                    'required' => true,
                                ],
                            ],
                        ],
                    ],
                    'options'  => [
                        'template'          => 'office-address-fieldset.phtml',
                        'input_filter_spec' => [
                                'validators' => [
                                    NotEmpty::class => [
                                        'options' => [
                                            'type' => NotEmpty::ALL,
                                        ],
                                    ],
                                ],
                            ],
                            'zip'     => [
                                'validators' => [
                                    NotEmpty::class => [
                                        'options' => [
                                            'type' => NotEmpty::ALL,
                                        ],
                                    ],
                                ],
                            ],
                            'city'    => [
                                'validators' => [
                                    NotEmpty::class => [
                                        'options' => [
                                            'type' => NotEmpty::ALL,
                                        ],
                                    ],
                                ],
                            ],
                            'country' => [
                                'validators' => [
                                    NotEmpty::class => [
                                        'options' => [
                                            'type' => NotEmpty::ALL,
                                        ],
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
            'address_1' => [
                'spec' => [
                    'name'     => 1,
                    'type'     => InputFilterProviderFieldset::class,
                    'elements' => [
                        'id'      => [
                            'spec' => [
                                'name' => 'id',
                                'type' => Hidden::class,
                            ],
                        ],
                        'line1'   => [
                            'spec' => [
                                'name'    => 'line1',
                                'type'    => Text::class,
                                'options' => [
                                    'label' => 'label_address_1_line_1',
                                ],
                                    'autocomplete' => 'address-line1',
                                    'required' => true,
                                    'id' => "addresses[1][line1]",
                            ],
                        ],
                        'line2'   => [
                            'spec' => [
                                'name'    => 'line2',
                                'type'    => Text::class,
                                'options' => [
                                    'label' => 'label_address_1_line_2',
                                ],
                                    'autocomplete' => 'address-line2',
                                    'id' => "addresses[1][line2]",
                            ],
                        ],
                        'zip'     => [
                            'spec' => [
                                'name'    => 'zip',
                                'type'    => Text::class,
                                'options' => [
                                    'label' => 'label_address_1_zip',
                                ],
                                    'autocomplete' => 'postal-code',
                                    'required' => true,
                                    'id' => "addresses[1][zip]",
                            ],
                        ],
                        'city'    => [
                            'spec' => [
                                'name'    => 'city',
                                'type'    => Text::class,
                                'options' => [
                                    'label' => 'label_address_1_city',
                                ],
                                    'autocomplete' => 'address-level2',
                                    'id' => "addresses[1][city]",
                            ],
                        ],
                        'country' => [
                            'spec' => [
                                'name'    => 'country',
                                'type'    => Text::class,
                                'options' => [
                                    'label' => 'label_address_1_country',
                                ],
                                    'autocomplete' => 'country-name',
                                    'required' => true,
                                    'id' => "addresses[1][country]",
                            ],
                        ],
                    ],
                    'options'  => [
                        'label'             => 'label_address_1',
                        'template'          => 'home-address-fieldset.phtml',
                        'input_filter_spec' => [
                            'type'    => RootAwareBaseInputFilter::class,
                            'line1'   => [
                                'name'       => 'line1',
                                'filters'    => [
                                    StringTrim::class => [
                                        'name' => StringTrim::class,
                                    ],
                                ],
                                'validators' => [
                                    NotEmpty::class         => [
                                        'name'    => NotEmpty::class,
                                        'options' => [
                                            'type' => NotEmpty::NULL,
                                        ],
                                    ],
                                    StringLength::class     => [
                                        'name'    => StringLength::class,
                                        'options' => [
                                            'max' => 255
                                        ]
                                    ],
                                    HomeAddressField::class => [
                                        'name' => HomeAddressField::class
                                    ],
                                ],
                            ],
                            'line2'   => [
                                'name'       => 'line2',
                                'required'   => false,
                                'filters'    => [
                                    StringTrim::class => [
                                        'name' => StringTrim::class,
                                    ],
                                ],
                                'validators' => [
                                    StringLength::class => [
                                        'name'    => StringLength::class,
                                        'options' => [
                                            'max' => 255
                                        ]
                                    ],
                                ],
                            ],
                            'zip'     => [
                                'name'       => 'zip',
                                'filters'    => [
                                    StringTrim::class => [
                                        'name' => StringTrim::class,
                                    ],
                                ],
                                'validators' => [
                                    NotEmpty::class         => [
                                        'name'    => NotEmpty::class,
                                        'options' => [
                                            'type' => NotEmpty::NULL,
                                        ],
                                    ],
                                    StringLength::class     => [
                                        'name'    => StringLength::class,
                                        'options' => [
                                            'max' => 255
                                        ]
                                    ],
                                    HomeAddressField::class => [
                                        'name' => HomeAddressField::class
                                    ],
                                ],
                            ],
                            'city'    => [
                                'name'       => 'city',
                                'filters'    => [
                                    StringTrim::class => [
                                        'name' => StringTrim::class,
                                    ],
                                ],
                                'validators' => [
                                    NotEmpty::class         => [
                                        'name'    => NotEmpty::class,
                                        'options' => [
                                            'type' => NotEmpty::NULL,
                                        ],
                                    ],
                                    StringLength::class     => [
                                        'name'    => StringLength::class,
                                        'options' => [
                                            'max' => 255
                                        ]
                                    ],
                                    HomeAddressField::class => [
                                        'name' => HomeAddressField::class
                                    ],
                                ],
                            ],
                            'country' => [
                                'name'       => 'country',
                                'filters'    => [
                                    StringTrim::class => [
                                        'name' => StringTrim::class,
                                    ],
                                ],
                                'validators' => [
                                    NotEmpty::class         => [
                                        'name'    => NotEmpty::class,
                                        'options' => [
                                            'type' => NotEmpty::NULL,
                                        ],
                                    ],
                                    StringLength::class     => [
                                        'name'    => StringLength::class,
                                        'options' => [
                                            'max' => 255
                                        ]
                                    ],
                                    HomeAddressField::class => [
                                        'name' => HomeAddressField::class
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
];