262 lines
9.6 KiB
PHP
262 lines
9.6 KiB
PHP
<?php
|
|
|
|
use_helper('stPrice');
|
|
|
|
function st_allegro_product_parameter_value($parameter)
|
|
{
|
|
if (isset($parameter->values))
|
|
{
|
|
$content = implode(", ", $parameter->values);
|
|
}
|
|
elseif (isset($parameter->valuesLabels))
|
|
{
|
|
$content = implode(", ", $parameter->valuesLabels);
|
|
}
|
|
else
|
|
{
|
|
$content = 'Brak';
|
|
}
|
|
|
|
if (isset($parameter->unit))
|
|
{
|
|
$content .= " ".$parameter->unit;
|
|
}
|
|
|
|
return $content;
|
|
}
|
|
|
|
function st_allegro_parameter($name, $parameter, array $values, &$dependencies)
|
|
{
|
|
// echo "<pre>".var_export($parameter, true)."</pre>";
|
|
$type = 'st_allegro_parameter_' . $parameter->type;
|
|
$value = isset($values[$parameter->id]) ? $values[$parameter->id] : null;
|
|
|
|
$required = $parameter->required;
|
|
$display = "flex";
|
|
|
|
if ($parameter->options->dependsOnParameterId)
|
|
{
|
|
$parameterValueIds = isset($values[$parameter->options->dependsOnParameterId]) ? $values[$parameter->options->dependsOnParameterId]->valuesIds : array();
|
|
|
|
if ($parameter->options->requiredDependsOnValueIds)
|
|
{
|
|
$intersect = array_intersect($parameter->options->requiredDependsOnValueIds, $parameterValueIds);
|
|
$required = count($intersect) > 0;
|
|
}
|
|
|
|
if ($parameter->options->displayDependsOnValueIds)
|
|
{
|
|
$intersect = array_intersect($parameter->options->displayDependsOnValueIds, $parameterValueIds);
|
|
$display = count($intersect) > 0 ? "flex" : "none";
|
|
}
|
|
|
|
$dependencies[$parameter->options->dependsOnParameterId][$parameter->id] = array(
|
|
'required' => $parameter->options->requiredDependsOnValueIds,
|
|
'display' => $parameter->options->displayDependsOnValueIds,
|
|
);
|
|
}
|
|
|
|
$options = array(
|
|
'required' => $required,
|
|
'parameter' => $parameter,
|
|
'postfix' => $parameter->unit ? '<span style="vertical-align: middle">'.$parameter->unit.'</span>' : null,
|
|
'row_attr' => array(
|
|
'style' => 'display: ' . $display
|
|
),
|
|
'id' => 'st_allegro_offer_parameter_' . $parameter->id,
|
|
);
|
|
|
|
if ($parameter->type == 'dictionary' && $parameter->restrictions->multipleChoices)
|
|
{
|
|
$options['row_attr']['data-selected-ids'] = json_encode($value ? $value->valuesIds : array());
|
|
}
|
|
|
|
if (isset($parameter->restrictions->min))
|
|
{
|
|
$options['help'] = __("Wartość minimalna: %min%, wartość mayksymalna: %max%", array('%min%' => $parameter->restrictions->min, '%max%' => $parameter->restrictions->max));
|
|
}
|
|
|
|
echo st_admin_get_form_field($name . '[' . $parameter->type . '][' . $parameter->id . ']', $parameter->name, $value, $type, $options);
|
|
}
|
|
|
|
function st_allegro_parameter_dictionary($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
if (!$parameter->restrictions->multipleChoices)
|
|
{
|
|
return st_allegro_parameter_dictionary_single($name, $value, $params);
|
|
}
|
|
else
|
|
{
|
|
return st_allegro_parameter_dictionary_multiple($name, $value, $params);
|
|
}
|
|
}
|
|
|
|
function st_allegro_parameter_dictionary_single($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
$options = array();
|
|
|
|
foreach ($parameter->dictionary as $dictionary)
|
|
{
|
|
$options[$dictionary->id] = array(
|
|
'label' => $dictionary->value,
|
|
'attr' => array(
|
|
'data-depends-on-value-ids' => $dictionary->dependsOnValueIds ? json_encode(array_values($dictionary->dependsOnValueIds)) : null,
|
|
),
|
|
);
|
|
}
|
|
|
|
$value_id = $value && $value->valuesIds ? $value->valuesIds[0] : null;
|
|
|
|
$options_for_select = options_for_select($options, $value_id, array('include_custom' => __("Wybierz")));
|
|
|
|
$content = select_tag($name.'[value]', $options_for_select, array(
|
|
'id' => $params['id'],
|
|
'class' => 'st_allegro_parameter_dictionary st_allegro_parameter',
|
|
'data-ambiguous-value-id' => $parameter->options->ambiguousValueId,
|
|
'data-custom-value-enabled' => $parameter->options->customValuesEnabled,
|
|
'data-parameter-id' => $parameter->id,
|
|
));
|
|
|
|
if ($parameter->options->ambiguousValueId && $parameter->options->customValuesEnabled)
|
|
{
|
|
$visible = $parameter->options->ambiguousValueId == $value_id;
|
|
|
|
$content .= " ".input_tag($name.'[custom]', $visible && $value && isset($value->values) && !empty($value->values) ? $value->values[0] : null, array(
|
|
'disabled' => !$visible,
|
|
'style' => !$visible ? 'display: none' : '',
|
|
'placeholder' => __('Wprowadź własną wartość'),
|
|
'size' => '40',
|
|
'class' => 'st_allegro_parameter_dictionary_custom'
|
|
));
|
|
}
|
|
|
|
return $content;
|
|
}
|
|
|
|
function st_allegro_parameter_dictionary_multiple($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
$values = $value ? $value->valuesIds : array();
|
|
|
|
ob_start();
|
|
|
|
foreach ($parameter->dictionary as $dictionary)
|
|
{
|
|
echo '<label class="bs-mt-1 bs-d-block">';
|
|
echo st_admin_checkbox_tag($name . '[value][]', $dictionary->id, in_array($dictionary->id, $values), array(
|
|
'id' => $params['id'] . '_' . $parameter->id,
|
|
'class' => 'st_allegro_parameter_dictionary st_allegro_parameter',
|
|
'data-depends-on-value-ids' => $dictionary->dependsOnValueIds ? json_encode($dictionary->dependsOnValueIds) : null,
|
|
'data-ambiguous-value-id' => $parameter->options->ambiguousValueId,
|
|
'data-custom-value-enabled' => $parameter->options->customValuesEnabled,
|
|
'data-parameter-id' => $parameter->id,
|
|
)) . ' ' . $dictionary->value;
|
|
if ($parameter->options->ambiguousValueId == $dictionary->id && $parameter->options->customValuesEnabled)
|
|
{
|
|
$visible = in_array($parameter->options->ambiguousValueId , $values);
|
|
echo " ".input_tag($name.'[custom]', $value && isset($value->values) && !empty($value->values) ? $value->values[0] : null, array(
|
|
'disabled' => !$visible,
|
|
'style' => !$visible ? 'display: none' : '',
|
|
'placeholder' => __('Wprowadź własną wartość'),
|
|
'size' => '40',
|
|
'class' => 'st_allegro_parameter_dictionary_custom'
|
|
));
|
|
}
|
|
echo '</label>';
|
|
}
|
|
|
|
return ob_get_clean();
|
|
}
|
|
|
|
function st_allegro_parameter_float($name, $value, array $params)
|
|
{
|
|
return st_allegro_parameter_numeric($name, $value, $params);
|
|
}
|
|
|
|
function st_allegro_parameter_integer($name, $value, array $params)
|
|
{
|
|
return st_allegro_parameter_numeric($name, $value, $params);
|
|
}
|
|
|
|
function st_allegro_parameter_numeric($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
if (!$parameter->restrictions->range)
|
|
{
|
|
return input_tag($name, $value && $value->values ? $value->values[0] : null, array(
|
|
'id' => $params['id'],
|
|
'class' => 'number-type st_allegro_parameter',
|
|
'size' => 10,
|
|
'data-min' => $parameter->restrictions->min,
|
|
'data-max' => $parameter->restrictions->max,
|
|
'data-precision' => isset($parameter->restrictions->precision) && $parameter->restrictions->precision ? $parameter->restrictions->precision : 0,
|
|
));
|
|
}
|
|
else
|
|
{
|
|
return input_tag($name . '[from]', $value && $value->rangeValue ? $value->rangeValue->from : null, array(
|
|
'id' => $params['id'] . '_from',
|
|
'class' => 'number-type st_allegro_parameter',
|
|
'size' => 10,
|
|
'data-min' => $parameter->restrictions->min,
|
|
'data-max' => $parameter->restrictions->max,
|
|
'data-precision' => isset($parameter->restrictions->precision) && $parameter->restrictions->precision ? $parameter->restrictions->precision : 0,
|
|
)) . ' - ' . input_tag($name . '[to]', $value && $value->rangeValue ? $value->rangeValue->to : null, array(
|
|
'id' => $params['id'] . '_to',
|
|
'class' => 'number-type st_allegro_parameter',
|
|
'size' => 10,
|
|
'data-min' => $parameter->restrictions->min,
|
|
'data-max' => $parameter->restrictions->max,
|
|
'data-precision' => isset($parameter->restrictions->precision) && $parameter->restrictions->precision ? $parameter->restrictions->precision : 0,
|
|
));
|
|
}
|
|
}
|
|
|
|
function st_allegro_parameter_string($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
if ($parameter->restrictions->allowedNumberOfValues == 1)
|
|
{
|
|
return st_allegro_parameter_string_single($name, $value, $params);
|
|
}
|
|
else
|
|
{
|
|
return st_allegro_parameter_string_multiple($name, $value, $params);
|
|
}
|
|
}
|
|
|
|
function st_allegro_parameter_string_single($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
return input_tag($name, $value && $value->values ? $value->values[0] : null, array(
|
|
'class' => 'string-type st_allegro_parameter',
|
|
'maxlength' => $parameter->restrictions->maxLength,
|
|
'size' => '40',
|
|
));
|
|
}
|
|
|
|
function st_allegro_parameter_string_multiple($name, $value, array $params)
|
|
{
|
|
$parameter = $params['parameter'];
|
|
|
|
$values = $value ? $value->values : array();
|
|
|
|
ob_start();
|
|
|
|
for ($i = 0; $i < $parameter->restrictions->allowedNumberOfValues; $i++)
|
|
{
|
|
echo '<div style="margin-bottom: 5px">';
|
|
echo input_tag($name . '[' . $i . ']', isset($values[$i]) ? $values[$i] : null, array('class' => 'string-type st_allegro_parameter', 'maxlength' => $parameter->restrictions->maxLength, 'size' => '40', 'placeholder' => __('Wartość %no%', array('%no%' => $i + 1))));
|
|
echo '</div>';
|
|
}
|
|
|
|
return ob_get_clean();
|
|
} |