Example #1
0
 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, '', '');
 }
Example #2
0
    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);
    }