1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 
<?php
namespace Omeka\Form;

use Zend\View\Helper\Url;
use Zend\Form\Form;

class ModuleStateChangeForm extends Form
{
    /**
     * @var array
     */
    protected $options = [
        'module_action' => null,
        'module_id' => null,
    ];

    /**
     * @var Url
     */
    protected $urlHelper;

    public function __construct($name = null, $options = [])
    {
        parent::__construct($name, array_merge($this->options, $options));
    }

    public function init()
    {
        $urlHelper = $this->getUrlHelper();
        switch ($this->getOption('module_action')) {
            case 'install':
                $action = $urlHelper(
                    'admin/default',
                    ['controller' => 'module', 'action' => 'install'],
                    ['query' => ['id' => $this->getOption('module_id')]]
                );
                $label = 'Install'; // @translate
                $class = 'o-icon-install green button';
                break;
            case 'activate':
                $action = $urlHelper(
                    'admin/default',
                    ['controller' => 'module', 'action' => 'activate'],
                    ['query' => ['id' => $this->getOption('module_id')]]
                );
                $label = 'Activate'; // @translate
                $class = 'o-icon-activate';
                break;
            case 'deactivate':
                $action = $urlHelper(
                    'admin/default',
                    ['controller' => 'module', 'action' => 'deactivate'],
                    ['query' => ['id' => $this->getOption('module_id')]]
                );
                $label = 'Deactivate'; // @translate
                $class = 'o-icon-deactivate';
                break;
            case 'upgrade':
                $action = $urlHelper(
                    'admin/default',
                    ['controller' => 'module', 'action' => 'upgrade'],
                    ['query' => ['id' => $this->getOption('module_id')]]
                );
                $label = 'Upgrade'; // @translate
                $class = 'o-icon-upgrade';
                break;
            default:
                break;
        }

        $this->setAttribute('action', $action);

        $this->add([
            'type' => 'button',
            'name' => 'id',
            'options' => [
                'label' => $label,
            ],
            'attributes' => [
                'type' => 'submit',
                'title' => $label,
                'class' => $class,
            ],
        ]);
    }

    /**
     * @param Url $urlHelper
     */
    public function setUrlHelper(Url $urlHelper)
    {
        $this->urlHelper = $urlHelper;
    }

    /**
     * @return Url
     */
    public function getUrlHelper()
    {
        return $this->urlHelper;
    }
}