public function generalTabHtml()
 {
     $api = new PayzenApi();
     // new instance of PayzenApi to use static methods
     $_html = '<fieldset><legend>' . $this->l('BASE SETTINGS') . '</legend>';
     // enable / disbale logs
     $options = array('False' => $this->l('Disabled'), 'True' => $this->l('Enabled'));
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_ENABLE_LOGS'), 'PAYZEN_ENABLE_LOGS', $this->l('Logs'), $this->l('Enable / disbale module logs'));
     $_html .= '</fieldset><div class="clear">&nbsp;</div>';
     /*
      * payment gateway access settings
      */
     $_html .= '<fieldset><legend>' . $this->l('PAYMENT GATEWAY ACCESS') . '</legend>';
     $_html .= $this->_adminFormText('PAYZEN_SITE_ID', $this->l('Site id'), $this->l('Site id provided by the payment gateway'));
     $_html .= $this->_adminFormText('PAYZEN_KEY_TEST', $this->l('Test certificate'), $this->l('Certificate provided by the gateway'));
     $_html .= $this->_adminFormText('PAYZEN_KEY_PROD', $this->l('Production certificate'), $this->l('Certificate provided by the gateway'));
     // context mode
     $options = array('TEST' => $this->l('TEST'), 'PRODUCTION' => $this->l('PRODUCTION'));
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_MODE'), 'PAYZEN_MODE', $this->l('Mode'), $this->l('The context mode of this module'));
     $_html .= $this->_adminFormText('PAYZEN_PLATFORM_URL', $this->l('Gateway URL'), $this->l('URL the client will be redirected to'), 'size="65"');
     // check URL display
     $_html .= '<label>' . $this->l('Check URL to copy in your bank back-office') . '</label>';
     $_html .= '<div class="margin-form"><p>';
     if (!Shop::isFeatureActive() || Shop::getContext() == Shop::CONTEXT_SHOP) {
         $_html .= Context::getContext()->shop->getBaseURL() . 'modules/' . $this->_name . '/validation.php';
     } else {
         $_html .= $this->l('Select a shop to view check URL');
     }
     $_html .= '</p></div>';
     $_html .= '</fieldset><div class="clear">&nbsp;</div>';
     /*
      * payment page settings
      */
     $_html .= '<fieldset><legend>' . $this->l('PAYMENT PAGE') . '</legend>';
     // supported languages
     $options = array();
     foreach ($api->getSupportedLanguages() as $key => $value) {
         $options[$key] = $this->l($value);
     }
     asort($options);
     // default language
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_DEFAULT_LANGUAGE'), 'PAYZEN_DEFAULT_LANGUAGE', $this->l('Default language'), $this->l('Default language on the payment page'));
     // available languages
     $availLangs = Configuration::get('PAYZEN_AVAILABLE_LANGUAGES');
     $selected = $availLangs == '' ? array() : explode(';', $availLangs);
     $_html .= $this->_adminFormSelect($options, $selected, 'PAYZEN_AVAILABLE_LANGUAGES[]', $this->l('Available languages'), $this->l('Select none to use gateway configuration.'), 'multiple="multiple" size="8"');
     // capture delay
     $_html .= $this->_adminFormText('PAYZEN_DELAY', $this->l('Delay'), $this->l('Delay before banking (in days)'));
     // validation mode
     $options = array('' => $this->l('Back-office configuration'), '0' => $this->l('Automatic'), '1' => $this->l('Manual'));
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_VALIDATION_MODE'), 'PAYZEN_VALIDATION_MODE', $this->l('Payment validation'), $this->l('If manual is selected, you will have to confirm payments manually in your bank back-office'));
     // payment cards
     $paymentCards = Configuration::get('PAYZEN_PAYMENT_CARDS');
     $selected = $paymentCards == '' ? array() : explode(';', $paymentCards);
     $_html .= $this->_adminFormSelect($api->getSupportedCardTypes(), $selected, 'PAYZEN_PAYMENT_CARDS[]', $this->l('Available payment cards'), $this->l('Select the card types that can be used for the payment.'), 'multiple="multiple" size="7"');
     $_html .= '</fieldset><div class="clear">&nbsp;</div>';
     /*
      * payment page customization settings
      */
     $_html .= '<fieldset><legend>' . $this->l('PAYMENT PAGE CUSTOMIZE') . '</legend>';
     // theme configuration
     $_html .= $this->_adminFormText('PAYZEN_THEME_CONFIG', $this->l('Theme configuration'), $this->l('The theme configuration to customize the payment page (logo, css).'), 'size="65"');
     // shop name
     $_html .= $this->_adminFormText('PAYZEN_SHOP_NAME', $this->l('Shop name'), $this->l('Shop name to display on the payment page. Leave blank to use gateway config.'));
     // shop URL
     $_html .= $this->_adminFormText('PAYZEN_SHOP_URL', $this->l('Shop URL'), $this->l('Shop URL to display on the payment page. Leave blank to use gateway config.'), 'size="65"');
     $_html .= '</fieldset><div class="clear">&nbsp;</div>';
     /*
      * selective 3DS settings
      */
     $_html .= '<fieldset><legend>' . $this->l('SELECTIVE 3DS') . '</legend>';
     // min amount to activate three ds
     $_html .= $this->_adminFormText('PAYZEN_3DS_MIN_AMOUNT', $this->l('Minimum amount for which activate 3DS'), $this->l('Requires subscription to Selective 3-D Secure option.'));
     $_html .= '</fieldset><div class="clear">&nbsp;</div>';
     /*
      * return to shop settings
      */
     $_html .= '<fieldset><legend>' . $this->l('RETURN TO SHOP') . '</legend>';
     // automatic redirection
     $options = array('False' => $this->l('Disabled'), 'True' => $this->l('Enabled'));
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_REDIRECT_ENABLED'), 'PAYZEN_REDIRECT_ENABLED', $this->l('Automatic redirection'), $this->l('Redirect the client to the shop at the end of the payment process'));
     // automatic redirection options
     $_html .= $this->_adminFormText('PAYZEN_REDIRECT_SUCCESS_T', $this->l('Success timeout'), $this->l('Time before the client is redirected after a successful payment'));
     $_html .= $this->_adminFormText('PAYZEN_REDIRECT_SUCCESS_M', $this->l('Success message'), $this->l('Message displayed before redirection after a successful payment'), 'size="65"');
     $_html .= $this->_adminFormText('PAYZEN_REDIRECT_ERROR_T', $this->l('Failure timeout'), $this->l('Time before the client is redirected after a failed payment'));
     $_html .= $this->_adminFormText('PAYZEN_REDIRECT_ERROR_M', $this->l('Failure message'), $this->l('Message displayed before redirection after a failed payment'), 'size="65"');
     // return mode
     $options = array('GET' => $this->l('GET (parameters in URL)'), 'POST' => $this->l('POST (parameters in a form)'));
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_RETURN_MODE'), 'PAYZEN_RETURN_MODE', $this->l('Return mode'), $this->l('How the client will transmit the payment result'));
     // payment failed management
     $options = array(Payzen::ON_FAILURE_RETRY => $this->l('Go back to checkout'), Payzen::ON_FAILURE_SAVE => $this->l('Save order and go back to order history'));
     $_html .= $this->_adminFormSelect($options, Configuration::get('PAYZEN_FAILURE_MANAGEMENT'), 'PAYZEN_FAILURE_MANAGEMENT', $this->l('Payment failed management'), $this->l('How to deal the client when the payment process failed'));
     // additional return parameters
     $_html .= $this->_adminFormText('PAYZEN_RETURN_GET_PARAMS', $this->l('Additional GET parameters'), $this->l('Extra parameters sent in the return URL'), 'size="65"');
     $_html .= $this->_adminFormText('PAYZEN_RETURN_POST_PARAMS', $this->l('Additional POST parameters'), $this->l('Extra parameters sent in the return form'), 'size="65"');
     $_html .= '</fieldset>';
     return $_html;
 }