Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/croogo/croogo/Settings/src/View/Helper/SettingsFormHelper.php
<?php

namespace Croogo\Settings\View\Helper;

use
Cake\Utility\Hash;
use
Cake\View\Helper;
use
Croogo\Settings\Model\Entity\Setting;

/**
 * SettingForms Helper
 *
 * @category Helper
 * @package  Croogo.Settings.View.Helper
 * @version  1.0
 * @author   Rachman Chavik <rchavik@xintesa.com>
 * @license  http://www.opensource.org/licenses/mit-license.php The MIT License
 * @link     http://www.croogo.org
 */
class SettingsFormHelper extends Helper
{

    public
$helpers = [
       
'Form' => [
           
'className' => 'Croogo/Core.Form'
       
],
       
'Croogo/Core.Croogo',
    ];

   
/**
     * _inputCheckbox
     *
     * @see SettingsFormHelper::input()
     */
   
protected function _inputCheckbox(Setting $setting, $label)
    {
       
$tooltip = [
           
'data-trigger' => 'hover',
           
'data-placement' => 'right',
           
'data-title' => $setting->description,
        ];
        if (
$setting->value == 1) {
           
$output = $this->Form->input('setting-' . $setting->id, [
               
'type' => $setting->input_type,
               
'checked' => 'checked',
               
'tooltip' => $tooltip,
               
'label' => $label
           
]);
        } else {
           
$output = $this->Form->input('setting-' . $setting->id, [
               
'type' => $setting->input_type,
               
'tooltip' => $tooltip,
               
'label' => $label
           
]);
        }

        return
$output;
    }

   
/**
     * Renders input setting according to its type
     *
     * @param Setting $setting setting data
     * @param string $label Input label
     * @return string
     */
   
public function input(Setting $setting, $label)
    {
       
$output = '';
       
$inputType = ($setting->input_type != null) ? $setting->input_type : 'text';
        if (
$setting->input_type == 'multiple') {
           
$multiple = true;
            if (isset(
$setting->params['multiple'])) {
               
$multiple = $setting->params['multiple'];
            };
           
$selected = json_decode($setting->value);

           
$options = $setting->options;
           
$output = $this->Form->input('setting-' . $setting->id, [
               
'label' => $setting->title,
               
'multiple' => $multiple,
               
'options' => $options,
               
'default' => $selected,
            ]);
        } elseif (
$setting->input_type == 'checkbox') {
           
$output = $this->_inputCheckbox($setting, $label);
        } elseif (
$setting->input_type == 'radio') {
           
$options = $setting->options;
           
$output = $this->Form->input('setting-' . $setting->id, [
               
'label' => $setting->title,
               
'type' => 'radio',
               
'options' => $options,
               
'value' => $setting->value,
            ]);
        } elseif (
$setting->input_type == 'file') {
           
$output = $this->Form->input('setting-' . $setting->id, [
               
'label' => $setting->title,
               
'type' => 'file',
            ]);
            if (!empty(
$setting->value)) {
               
$output .= $this->_View->Html->link(
                   
$this->_View->Html->image($setting->value, [
                       
'class' => 'img-fluid',
                       
'style' => 'max-width: 400px',
                    ]),
                   
$setting->value,
                    [
                       
'data-toggle' => 'lightbox',
                       
'escape' => false,
                    ]
                );
               
$output .= $this->_View->Form->input('_clearbackground', [
                   
'type' => 'checkbox',
                   
'label' => 'Delete Theme Background Image',
                ]);
            }
        } else {
           
$options = [
               
'type' => $inputType,
               
'id' => 'setting-' . $setting->id,
               
'value' => $setting->value,
               
'help' => $setting->description,
               
'label' => $label,
            ];

            if (
$inputType === 'link') {
               
$options = Hash::merge($options, [
                   
'type' => 'text',
                   
'linkChooser' => true
               
]);
            }

            if (
$inputType === 'select') {
               
$options['options'] = $setting->options;
            }

           
$output = $this->Form->input('setting-' . $setting->id, $options);
        }

        return
$output;
    }
}