function displayStateDropDown($namekey, $field_id, $field_namekey, $field_type, $value = '', $field_options = array()) { $this->type = 'state'; $this->published = true; $this->country_name = $namekey; $states = $this->load(); $obj = new stdClass(); $obj->suffix = ''; $obj->prefix = ''; $obj->excludeValue = array(); $fieldClass = hikashop_get('class.field'); $dropdown = new hikashopSingledropdown($obj); $field = new stdClass(); $field->field_namekey = $field_id; $statesArray = array(); if (!empty($states)) { if (!empty($field_options) && is_string($field_options)) { $field_options = unserialize($field_options); } $pleaseSelect = !empty($field_options['pleaseselect']); if ($pleaseSelect) { $pleaseSelect = 0; $obj = new stdClass(); $obj->disabled = '0'; $obj->value = JText::_('PLEASE_SELECT_SOMETHING'); $statesArray[''] = $obj; } foreach ($states as $state) { if (is_numeric($state->zone_name_english)) { $title = $state->zone_name; } else { $title = $state->zone_name_english; if ($state->zone_name_english != $state->zone_name) { $title .= ' (' . $state->zone_name . ')'; } } $obj = new stdClass(); $obj->disabled = '0'; $obj->value = $title; $statesArray[$state->zone_namekey] = $obj; } } else { $value = 'no_state_found'; } $field->field_value = $statesArray; if (!empty($field_type)) { $name = 'data[' . $field_type . '][' . $field_namekey . ']'; } else { $name = $field_namekey; } return $dropdown->display($field, $value, $name, '', ''); }
function display($field, $value, $map, $inside, $options = '', $test = false, $allFields = null, $allValues = null) { if ($field->field_options['zone_type'] != 'country' || empty($field->field_options['pleaseselect'])) { $currentZoneId = hikashop_getZone() ? hikashop_getZone() : ''; if (!empty($currentZoneId) && JFactory::getApplication()->isSite()) { $zoneClass = hikashop_get('class.zone'); $currentZone = $zoneClass->getZoneParents($currentZoneId); foreach ($currentZone as $currentZoneInfos) { if (preg_match('/country/', $currentZoneInfos)) { $defaultCountry = $currentZoneInfos; } } } } if ($field->field_options['zone_type'] == 'country') { if (isset($defaultCountry)) { $field->field_default = $defaultCountry; } if (!empty($field->field_options['pleaseselect'])) { $PleaseSelect = new stdClass(); $PleaseSelect->value = JText::_('PLEASE_SELECT_SOMETHING'); $PleaseSelect->disabled = 0; $field->field_value = array_merge(array('' => $PleaseSelect), $field->field_value); $field->field_default = ''; } $stateNamekey = str_replace('country', 'state', $field->field_namekey); if (!empty($allFields)) { foreach ($allFields as &$f) { if ($f->field_type == 'zone' && !empty($f->field_options['zone_type']) && $f->field_options['zone_type'] == 'state') { $stateNamekey = $f->field_namekey; break; } } } $stateId = str_replace(array('[', ']', $field->field_namekey), array('_', '', $stateNamekey), $map); $form_name = str_replace(array('data[', '][' . $field->field_namekey . ']'), '', $map); $changeJs = 'window.hikashop.changeState(this,\'' . $stateId . '\',\'' . $field->field_url . 'field_type=' . $form_name . '&field_id=' . $stateId . '&field_namekey=' . $stateNamekey . '&namekey=\'+this.value);'; if (!empty($options) && stripos($options, 'onchange="') !== false) { $options = preg_replace('#onchange="#i', 'onchange="' . $changeJs, $options); } else { $options = ' onchange="' . $changeJs . '"'; } if ($allFields == null || $allValues == null) { $doc = JFactory::getDocument(); $lang = JFactory::getLanguage(); $locale = strtolower(substr($lang->get('tag'), 0, 2)); $js = 'window.hikashop.ready( function() { var el = document.getElementById(\'' . $this->prefix . $field->field_namekey . $this->suffix . '\'); window.hikashop.changeState(el,\'' . $stateId . '\',\'' . $field->field_url . 'lang=' . $locale . '&field_type=' . $form_name . '&field_id=' . $stateId . '&field_namekey=' . $stateNamekey . '&namekey=\'+el.value); });'; $doc->addScriptDeclaration($js); } } elseif ($field->field_options['zone_type'] == 'state') { $stateId = str_replace(array('[', ']'), array('_', ''), $map); $dropdown = ''; if ($allFields != null) { $country = null; if (isset($defaultCountry)) { $country = $defaultCountry; } foreach ($allFields as $f) { if ($f->field_type == 'zone' && !empty($f->field_options['zone_type']) && $f->field_options['zone_type'] == 'country') { $key = $f->field_namekey; if (!empty($allValues->{$key})) { $country = $allValues->{$key}; } else { $country = $f->field_default; } break; } } if (empty($country)) { $address_country_field = $this->parent->get(14); //14 = id of country field if (!empty($address_country_field) && $address_country_field->field_type == 'zone' && !empty($address_country_field->field_options['zone_type']) && $address_country_field->field_options['zone_type'] == 'country' && !empty($address_country_field->field_default)) { $country = $address_country_field->field_default; } } if (!empty($country)) { $countryType = hikashop_get('type.country'); $countryType->field = $field; $dropdown = $countryType->displayStateDropDown($country, $stateId, $map, '', $value, $field->field_options); } else { $dropdown = '<span class="state_no_country">' . JText::_('PLEASE_SELECT_COUNTRY_FIRST') . '</span>'; } } return '<span id="' . $stateId . '_container">' . $dropdown . '</span>' . '<input type="hidden" id="' . $stateId . '_default_value" name="' . $stateId . '_default_value" value="' . $value . '"/>'; } return parent::display($field, $value, $map, $inside, $options, $test, $allFields, $allValues); }
function display($field, $value, $map, $inside, $options = '', $test = false, $allFields = null, $allValues = null) { if (JFactory::getApplication()->isSite()) { $plugin = JPluginHelper::getPlugin('hikashop', 'bforderdeliveryslot'); $params = new JRegistry($plugin->params); if ($params->get('refreshshipping', '0')) { $field_namekey = $field->field_namekey; if (isset($_REQUEST["data"]["order"][$field_namekey])) { $value = $_REQUEST["data"]["order"][$field_namekey]; } $js = ' function bforderdeliverydateChange(el) { var el$ = jQuery(el.form.step); var step = el$.val(); if (step > 0) { step -= 1; var form$ = jQuery(el.form); var formaction = form$.attr("action"); formaction = formaction.replace(/task-step.step-[0-9]+/, "task-step/step-" + step); form$.attr("action", formaction); el$.val(step); } el.form.submit(); } jQuery(document).ready(function() { jQuery("#' . $field_namekey . '").attr("onchange", "bforderdeliverydateChange(this);"); }); '; JFactory::getDocument()->addScriptDeclaration($js); } } if ($field->field_namekey != 'order_delivery_date') { JError::raiseWarning(4711, jText::sprintf('PLG_HIKASHOP_BFORDERDELIVERYSLOT_ADMINERROR', '003')); if (JFactory::getApplication()->isAdmin()) { echo '<div style="color:#ff0000;font-weight:bold;">Invalid column name defined. ' . "Only 'order_delivery_date' is permitted. " . "Please correct before continuing.</div>"; } } if (JFactory::getApplication()->isAdmin()) { if (!empty($field->field_value)) { switch (count($field->field_value)) { case 0: break; case 1: if (!empty($field->field_value[0])) { JError::raiseWarning(4711, jText::sprintf('PLG_HIKASHOP_BFORDERDELIVERYSLOT_ADMINERROR', '002')); echo '<div style="color:#ff0000;font-weight:bold;">Invalid value defined. ' . "Only an empty default value is permitted. " . "Please correct before continuing.</div>"; } break; default: JError::raiseWarning(4711, jText::sprintf('PLG_HIKASHOP_BFORDERDELIVERYSLOT_ADMINERROR', '001')); echo '<div style="color:#ff0000;font-weight:bold;">Too many values defined. ' . "Only only one empty value with title of 'Please select...' (or equivalent) is permitted. " . "The others have been deleted, please SAVE before continuing.</div>"; break; } } $js = ' jQuery(document).ready(function() { jQuery("#hikashop_field_values_table #tablevalues tr").each(function( index ) { if (index > 0) { this.remove(); } else { jQuery(\'[name="field_values[title][]"]\').val(\'\'); jQuery(\'[name="field_values[title][]"]\').prop("readonly", true); } }); jQuery("#fieldopt_required_1").hide(); jQuery("#fieldopt_regex").hide(); jQuery("#fieldopt_multivalues a.btn.btn-success").hide(); }); '; JFactory::getDocument()->addScriptDeclaration($js); } return parent::display($field, $value, $map, $inside, $options, $test, $allFields, $allValues); }