Пример #1
0
 /**
  * Override method to output our custom HTML with JavaScript
  *
  * @param Varien_Data_Form_Element_Abstract $element
  *
  * @return String
  */
 protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
 {
     // Only do validation if module is installed and active
     if ($this->helper('bronto_common')->isModuleInstalled('Bronto_Verify')) {
         $_html = array();
         // Create form object to grab scope details
         $form = new Mage_Adminhtml_Block_System_Config_Form();
         $scope = $form->getScope();
         $scopeId = $form->getScopeId();
         $element->setData('onchange', "validateToken(this.form, this);");
         $element->setData('after_element_html', "\n                <span id=\"loadingMask\" style=\"display: none; width: 100px;\">\n                    <span class=\"loader\" id=\"loading-mask-loader\" style=\"background: url(" . $this->getSkinUrl('bronto/images/ajax-loader-tr.gif') . ") no-repeat 0 50%; background-size: 20px; padding:3px 0 3px 25px;\">" . $this->__(' Verifying...') . "</span>\n                    <span id=\"loading-mask\"></span>\n                </span>\n                <script>\n                    /**\n                     * Function to Toggle Form Elements Disabled Status Based On Token Status\n                     */\n                    function toggleDisabled(form, element) {\n                        // Get Status Text Element\n                        var statusText = \$('bronto-validation-status-text');\n                        // If Status Text Element has Class of 'invalid' or empty, set boolean disabled value\n                        var disabled = (statusText.className == 'invalid' || statusText.className == '');\n\n                        // Cycle through form elements and disable/enable elements\n                        for (i = 0; i < form.length; i++) {\n                            if (form.elements[i].id != '{$element->getId()}' &&\n                                form.elements[i].id != 'bronto_settings_enabled' &&\n                                form.elements[i].id != 'verify-button' &&\n                                form.elements[i].type != 'hidden' &&\n                                form.elements[i].name.indexOf('groups') == 0) {\n                                form.elements[i].disabled = disabled;\n                            }\n                        }\n\n                        // Get Last Element of Form, and if the class name is 'note', empty the html value\n                        var last = element.parentNode.lastChild;\n                        if (last.className == 'note') {\n                            last.innerHTML = '';\n                        }\n                    }\n\n                    function trim1 (str) {\n                        return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*\$/, '');\n                    }\n\n                    function validateToken(form, element) {\n                        var token      = trim1(\$('{$element->getId()}').value);\n                        var statusText = \$('bronto-validation-status');\n                        var reloadUrl  = '{$this->getUrl('*/apitoken/ajaxvalidation')}';\n\n                        statusText.innerHTML = \$('loadingMask').innerHTML;\n                        statusText.removeClassName('valid').removeClassName('invalid');\n\n                        new Ajax.Request(reloadUrl, {\n                            method: 'post',\n                            parameters: {token: token, scope: '{$scope}', scopeid: '{$scopeId}'},\n                            onComplete: function(transport) {\n                                Element.hide('loadingMask');\n                                statusText.innerHTML = transport.responseText;\n\n                                toggleDisabled(form, element);\n                            }\n                        });\n\n                        return false;\n                    }\n                </script>\n            ");
         if (!$this->helper('bronto_common')->getApiToken()) {
             $element->setComment('<span style="color:red;font-weight:bold">Please enter your Bronto API key here.</span>');
             $buttonHtml = "";
         } else {
             $button = $this->getLayout()->createBlock('bronto_verify/adminhtml_widget_button_runtoken')->toHtml();
             $buttonHtml = "<p class=\"form-buttons\" id=\"verify-button\">{$button}</p>";
         }
         // Show Roundtrip Install Verification Status
         $_html[] = $buttonHtml . '<style>' . '   #bronto-validation-status { color:grey; font-weight:bold; }' . '   #bronto-validation-status .valid { color: green; }' . '   #bronto-validation-status .invalid { color: red; }' . '</style>' . '<strong style="float: left; width: 80px">Last Status:</strong> ' . '<span id="bronto-validation-status">' . $this->helper('bronto_verify/apitoken')->getAdminScopedApitokenStatusText() . '</span>';
         // Show everything Else
         if (!empty($_html)) {
             $elementHtml = $element->getElementHtml();
             if ($element->getComment()) {
                 $elementHtml .= '<p class="note"><span>' . $element->getComment() . '</span></p>';
                 $element->setComment(null);
             }
             $elementHtml .= '<div style="margin-top:10px">';
             $elementHtml .= implode('<br />', $_html);
             $elementHtml .= '</div>';
             return $elementHtml;
         }
     }
     return parent::_getElementHtml($element);
 }
Пример #2
0
 protected function _prepareForm()
 {
     $form = new Varien_Data_Form(array('id' => 'config_edit_form_codeswholesale', 'action' => $this->getUrl('apiplugin/adminhtml_configuration_settings/save'), 'method' => 'post', 'enctype' => 'multipart/form-data'));
     $form->setUseContainer(true);
     $this->setForm($form);
     return parent::_prepareForm();
 }
Пример #3
0
 /**
  * @return Netz98_CustomerGroup_Block_Adminhtml_System_Config_Form
  */
 protected function _initObjects()
 {
     parent::_initObjects();
     $sections = $this->_configFields->getSection($this->getSectionCode(), $this->getWebsiteCode(), $this->getStoreCode());
     /**
      * Create config field during runtime.
      *
      * Check if we are in sales tab and sub-tab payment or shipping.
      * Then we create SimpleXMLElements for form init.
      */
     if ($sections->tab == 'sales' && in_array($sections->getName(), array('payment', 'carriers'))) {
         //
         // Standard payment and shipping sections
         //
         foreach ($sections->groups as $group) {
             foreach ($group as $subGroup) {
                 if (in_array($subGroup->getName(), array('paypal_payment_solutions', 'paypal_alternative_payment_methods', 'account'))) {
                     continue;
                 }
                 if (isset($subGroup->fields)) {
                     $this->_addFieldToConfigGroup($subGroup);
                 }
             }
         }
     } elseif ($sections->tab == 'sales' && $sections->getName() == 'paypal') {
         ///
         // PayPal
         //
         if (isset($sections->groups->express)) {
             $this->_addFieldToConfigGroup($sections->groups->express);
         }
         if (isset($sections->groups->wps)) {
             $this->_addFieldToConfigGroup($sections->groups->wps);
         }
     }
     /* elseif ($sections->tab == 'sales' && $sections->getName() == 'google') {
            //
            // Google checkout and shipping
            //
            if (isset($sections->groups->checkout)) {
                $this->_addFieldToConfigGroup($sections->groups->checkout);
            }
            if (isset($sections->groups->checkout_shipping_merchant)) {
                $this->_addFieldToConfigGroup($sections->groups->checkout_shipping_merchant);
            }
            if (isset($sections->groups->checkout_shipping_carrier)) {
                $this->_addFieldToConfigGroup($sections->groups->checkout_shipping_carrier);
            }
            if (isset($sections->groups->checkout_shipping_flatrate)) {
                $this->_addFieldToConfigGroup($sections->groups->checkout_shipping_flatrate);
            }
            if (isset($sections->groups->checkout_shipping_virtual)) {
                $this->_addFieldToConfigGroup($sections->groups->checkout_shipping_virtual);
            }
        }*/
     return $this;
 }
Пример #4
0
 /**
  * Override method to output our custom HTML with JavaScript
  *
  * @param Varien_Data_Form_Element_Abstract $element
  *
  * @return String
  */
 protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
 {
     $_html = array();
     // Create form object to grab scope details
     $form = new Mage_Adminhtml_Block_System_Config_Form();
     $scope = $form->getScope();
     $scopeId = $form->getScopeId();
     $script = "\n            <span id=\"roundtrip_loadingmask\" style=\"display: none; width: 100px;\">\n                <span class=\"loader\" id=\"roundtrip-loading-mask-loader\" style=\"background: url(" . $this->getSkinUrl('bronto/images/ajax-loader-tr.gif') . ") no-repeat 0 50%; background-size: 20px; padding:3px 0 3px 25px;\">" . $this->__(' Validating...') . "</span>\n                <span id=\"roundtrip-loading-mask\"></span>\n            </span>\n            <script>\n                function validateRoundtrip() {\n                    var statusText = \$('bronto-roundtrip-status');\n                    var reloadurl  = '{$this->getUrl('*/roundtrip/ajaxvalidation')}';\n                    \n                    statusText.innerHTML = \$('roundtrip_loadingmask').innerHTML;\n                    statusText.removeClassName('valid').removeClassName('invalid');\n\n                    new Ajax.Request(reloadurl, {\n                        method: 'post',\n                        parameters: {scope: '{$scope}', scopeid: '{$scopeId}'},\n                        onComplete: function(transport) {\n                            Element.hide('roundtrip_loadingmask');\n                            if (transport.responseText == '\"Passed Verification\"') {\n                                statusText.innerHTML = 'Passed Verification';\n                                statusText.addClassName('valid');\n                            } else if (transport.responseText == '\"Failed Verification\"') {\n                                statusText.innerHTML = 'Failed Verification';\n                                statusText.addClassName('invalid');\n                            } else {\n                                statusText.innerHTML = 'Failed Verification';\n                                statusText.addClassName('invalid');\n                            }\n                        }\n                    });\n                    \n                    return false;\n                }\n            </script>\n        ";
     $statusText = '<span style="color:grey;font-weight:bold">' . $this->helper('bronto_verify/roundtrip')->getAdminScopedRoundtripStatusText() . '</span>';
     $button = $this->getLayout()->createBlock('bronto_verify/adminhtml_widget_button_runroundtrip')->toHtml();
     $buttonHtml = "<p class=\"form-buttons\" id=\"roundtrip-verify-button\">{$button}</p>";
     // Show Roundtrip Install Verification Status
     $_html[] = '<style>' . '#bronto-roundtrip-status { color:grey; font-weight:bold; }' . '#bronto-roundtrip-status.valid { color: green; }' . '#bronto-roundtrip-status.invalid { color: red; }' . '</style>' . $statusText . $buttonHtml;
     $_html[] = $script;
     // Show everything Else
     if (!empty($_html)) {
         $elementHtml = implode('<br />', $_html);
         return $elementHtml;
     }
     return parent::_getElementHtml($element);
 }
Пример #5
0
 /**
  * Override method to output our custom HTML with JavaScript
  *
  * @param Varien_Data_Form_Element_Abstract $element
  *
  * @return String
  */
 protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
 {
     $_html = array();
     // Create form object to grab scope details
     $form = new Mage_Adminhtml_Block_System_Config_Form();
     $scope = $form->getScope();
     $scopeId = $form->getScopeId();
     $token = Mage::helper('bronto_verify/apitoken')->getApiToken();
     $script = "\r\n            <span id=\"loadingmask\" style=\"display: none; width: 100px;\">\r\n                <span class=\"loader\" id=\"loading-mask-loader\" style=\"background: url(" . $this->getSkinUrl('bronto/images/ajax-loader-tr.gif') . ") no-repeat 0 50%; background-size: 20px; padding:3px 0 3px 25px;\">" . $this->__(' Validating...') . "</span>\r\n                <span id=\"loading-mask\"></span>\r\n            </span>\r\n            <script>\r\n                function trim1 (str) {\r\n                    return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*\$/, '');\r\n                }\r\n\r\n                function validateToken() {\r\n                    var token      = trim1('{$token}');\r\n                    var statusText = \$('bronto-validation-status');\r\n                    var reloadurl  = '{$this->getUrl('*/apitoken/ajaxvalidation')}';\r\n                    \r\n                    statusText.innerHTML = \$('loadingmask').innerHTML;\r\n                    statusText.removeClassName('valid').removeClassName('invalid');\r\n\r\n                    new Ajax.Request(reloadurl, {\r\n                        method: 'post',\r\n                        parameters: {token: token, scope: '{$scope}', scopeid: '{$scopeId}'},\r\n                        onComplete: function(transport) {\r\n                            Element.hide('loadingmask');\r\n                            statusText.innerHTML = transport.responseText;\r\n                        }\r\n                    });\r\n                    \r\n                    return false;\r\n                }\r\n            </script>\r\n        ";
     $button = $this->getLayout()->createBlock('bronto_verify/adminhtml_widget_button_runtoken')->toHtml();
     $buttonHtml = "<p class=\"form-buttons\" id=\"verify-button\">{$button}</p>";
     // Show API Token Verification Status
     $_html[] = $buttonHtml . '<style>' . '   #bronto-validation-status { color:grey; font-weight:bold; }' . '   #bronto-validation-status .valid { color: green; }' . '   #bronto-validation-status .invalid { color: red; }' . '</style>' . '<span id="bronto-validation-status">' . $this->helper('bronto_verify/apitoken')->setApiToken($token)->getAdminScopedApitokenStatusText() . '</span>';
     $_html[] = $script;
     // Show everything Else
     if (!empty($_html)) {
         $elementHtml = implode('<br />', $_html);
         return $elementHtml;
     }
     return parent::_getElementHtml($element);
 }
Пример #6
0
 protected function _prepareLayout()
 {
     $this->getLayout()->getBlock('head')->addJs('M2ePro/General/PhpFunctions.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/General/PrototypeSimulate.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/General/CommonHandler.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/General/TranslatorHandler.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/General/PhpHandler.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/General/UrlHandler.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/Plugin/Magento/Message.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/Plugin/Magento/Block.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/Plugin/Magento/FieldTip.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/Plugin/BlockNotice.js');
     $this->getLayout()->getBlock('head')->addJs('M2ePro/Initialization.js');
     $this->getLayout()->getBlock('head')->addCss('M2ePro/css/main.css');
     $this->getLayout()->getBlock('head')->addCss('M2ePro/css/Plugin/BlockNotice.css');
     parent::_prepareLayout();
 }
Пример #7
0
 /**
  * @return Wage_ShippingDescription_Block_Adminhtml_System_Config_Form
  */
 protected function _initObjects()
 {
     parent::_initObjects();
     $sections = $this->_configFields->getSection($this->getSectionCode(), $this->getWebsiteCode(), $this->getStoreCode());
     if ($sections->tab == 'sales' && in_array($sections->getName(), array('carriers'))) {
         //
         // Standard payment and shipping sections
         //
         foreach ($sections->groups as $group) {
             foreach ($group as $key => $subGroup) {
                 if (isset($subGroup->fields)) {
                     $this->_addFieldToConfigGroup($subGroup);
                 }
             }
         }
     }
     return $this;
 }
Пример #8
0
 /**
  * Prepare settings form
  *
  * @return Mage_Adminhtml_Block_Widget_Form
  */
 protected function _prepareForm()
 {
     /** @var $settings Itoris_LayeredNavigation_Model_Settings */
     $settings = Mage::getModel('itoris_layerednavigation/settings');
     $settings->load($this->getDataHelper()->getWebsiteIdFromRequest(), $this->getDataHelper()->getStoreIdFromRequest());
     $scope = $this->getDataHelper()->getScope($this->getRequest());
     Varien_Data_Form::getFieldsetElementRenderer()->setTemplate('itoris/layerednavigation/settings/element.phtml');
     $form = new Varien_Data_Form();
     $fieldSet = $form->addFieldset('base_fieldset', array('legend' => $this->__('Settings')));
     $fieldSet->addField('enabled', 'select', array('name' => 'settings[enabled][value]', 'label' => $this->__('Extension Enabled'), 'data_type' => 'int', 'values' => array(array('value' => 1, 'label' => $this->__('Yes')), array('value' => 0, 'label' => $this->__('No'))), 'use_parent_value' => $settings->isParentValue('enabled', $scope)));
     $fieldSet->addField('multicategory_enabled', 'select', array('name' => 'settings[multicategory_enabled][value]', 'label' => $this->__('Multi-category mode'), 'data_type' => 'int', 'values' => array(array('value' => 1, 'label' => $this->__('Yes')), array('value' => 0, 'label' => $this->__('No'))), 'use_parent_value' => $settings->isParentValue('multicategory_enabled', $scope)));
     $fieldSet->addField('graphical_price_enabled', 'select', array('name' => 'settings[graphical_price_enabled][value]', 'label' => $this->__('Graphical price range'), 'data_type' => 'int', 'values' => array(array('value' => 1, 'label' => $this->__('Yes')), array('value' => 0, 'label' => $this->__('No'))), 'use_parent_value' => $settings->isParentValue('graphical_price_enabled', $scope)));
     $form->setValues($settings->getSettings());
     $form->setAction($this->getUrl('*/*/save', array('website' => $this->getRequest()->getParam('website'), 'store' => $this->getRequest()->getParam('store'))));
     $form->setMethod('post');
     $form->setUseContainer(true);
     $form->setId('edit_form');
     $this->setForm($form);
     return parent::_prepareForm();
 }
Пример #9
0
 /**
  * @see parent
  */
 public function _afterToHtml($html)
 {
     $html .= '
       <script type="text/javascript">
         function confirmAndSubmit() {
           var canSubmit = true;
           $$("#bronto_support_terms").each(function(elem) {
             if (elem.value === "0") {
               canSubmit = confirm("You must agree to Bronto\'s Terms of Service in the Registration section. You agree to the Terms by pressing \\"OK\\".");
               if (canSubmit) {
                 elem.value = "1";
               }
             }
           });
           if (canSubmit) {
             configForm.submit();
           }
         }
       </script>';
     return parent::_afterToHtml($html);
 }
Пример #10
0
 /**
  * Init fieldset fields
  *
  * @param Varien_Data_Form_Element_Fieldset $fieldset
  * @param Varien_Simplexml_Element          $group
  * @param Varien_Simplexml_Element          $section
  * @param string                            $fieldPrefix
  * @param string                            $labelPrefix
  *
  * @return $this
  */
 public function initFields($fieldset, $group, $section, $fieldPrefix = '', $labelPrefix = '')
 {
     parent::initFields($fieldset, $group, $section, $fieldPrefix, $labelPrefix);
     /** @var Aoe_ConfigHelper_Helper_Data $helper */
     $helper = Mage::helper('Aoe_ConfigHelper');
     // Return early if restrictions are disabled
     if ($helper->getConfigPathRestrictionMode() === '') {
         return $this;
     }
     foreach ($group->fields as $fields) {
         foreach ((array) $fields as $field) {
             // Generate the field element ID
             $id = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $field->getName();
             // Grab the field off the fieldset
             $fieldElement = $fieldset->getElements()->searchById($id);
             if (!$fieldElement) {
                 continue;
             }
             // Generate the field config path
             $path = (string) $field->config_path ?: $section->getName() . '/' . $group->getName() . '/' . $fieldPrefix . $field->getName();
             // Look up the mode for a config path
             $mode = $helper->getConfigPathMode($path, $this->getWebsiteCode(), $this->getStoreCode());
             if ($mode === $helper::MODE_READONLY) {
                 $tooltip = htmlspecialchars($helper->__('This value is managed externally. Changes are not permitted.'));
                 $scopeLabel = $helper->__('[READ-ONLY / EXTERNAL]');
                 $scopeLabel = "<span style=\"color: red;\" title=\"{$tooltip}\">{$scopeLabel}</span>";
                 $fieldElement->setScopeLabel($fieldElement->getScopeLabel() . '&nbsp;' . $scopeLabel);
                 $fieldElement->setDisabled(true);
                 $fieldElement->setCanUseWebsiteValue(false);
                 $fieldElement->setCanUseDefaultValue(false);
             } elseif ($mode === $helper::MODE_WARNING) {
                 $tooltip = htmlspecialchars($helper->__('This value is managed externally. Any manual changes are subject to being reverted.'));
                 $scopeLabel = $helper->__('[WARNING / EXTERNAL]');
                 $scopeLabel = "<span style=\"color: red;\" title=\"{$tooltip}\">{$scopeLabel}</span>";
                 $fieldElement->setScopeLabel($fieldElement->getScopeLabel() . '&nbsp;' . $scopeLabel);
             }
         }
     }
     return $this;
 }
Пример #11
0
 public function testInitFormAddsFieldsets()
 {
     new Mage_Core_Controller_Front_Action(Mage::app()->getRequest(), Mage::app()->getResponse());
     Mage::app()->getRequest()->setParam('section', 'general');
     $block = new Mage_Adminhtml_Block_System_Config_Form();
     $block->setLayout(Mage::app()->getLayout());
     $block->initForm();
     $expectedIds = array('general_country' => array('general_country_default' => 'select', 'general_country_allow' => 'select', 'general_country_optional_zip_countries' => 'select', 'general_country_eu_countries' => 'select'), 'general_region' => array('general_region_state_required' => 'select', 'general_region_display_all' => 'select'), 'general_locale' => array('general_locale_timezone' => 'select', 'general_locale_code' => 'select', 'general_locale_firstday' => 'select', 'general_locale_weekend' => 'select'), 'general_restriction' => array('general_restriction_is_active' => 'select', 'general_restriction_mode' => 'select', 'general_restriction_http_redirect' => 'select', 'general_restriction_cms_page' => 'select', 'general_restriction_http_status' => 'select'), 'general_store_information' => array('general_store_information_name' => 'text', 'general_store_information_phone' => 'text', 'general_store_information_merchant_country' => 'select', 'general_store_information_merchant_vat_number' => 'text', 'general_store_information_validate_vat_number' => 'text', 'general_store_information_address' => 'textarea'));
     $elements = $block->getForm()->getElements();
     foreach ($elements as $element) {
         $this->assertInstanceOf('Varien_Data_Form_Element_Fieldset', $element);
         $this->assertArrayHasKey($element->getId(), $expectedIds);
         $fields = $element->getSortedElements();
         $this->assertEquals(count($expectedIds[$element->getId()]), count($fields));
         foreach ($element->getElements() as $field) {
             $this->assertArrayHasKey($field->getId(), $expectedIds[$element->getId()]);
             $this->assertEquals($expectedIds[$element->getId()][$field->getId()], $field->getType());
         }
     }
 }
Пример #12
0
 public function __construct()
 {
     parent::__construct();
     $this->setTemplate('em0072settings/form.phtml');
 }
Пример #13
0
 /**
  * Initialize properties of object required for test.
  *
  * @return Mage_Adminhtml_Block_System_Config_Form
  */
 protected function _initObjects()
 {
     parent::_initObjects();
     $this->_configData = $this->_configDataStub;
     $this->_defaultFieldRenderer = new Mage_Adminhtml_Block_System_Config_Form_Field();
 }
Пример #14
0
 public function __construct()
 {
     parent::__construct();
     $this->setTemplate('galaelectronuessettings/form.phtml');
 }
Пример #15
0
 /**
  * Add the additional grid type as a viable type on the form
  *
  * @return array
  */
 protected function _getAdditionalElementTypes()
 {
     $types = parent::_getAdditionalElementTypes();
     $types["minigrid"] = Mage::getConfig()->getBlockClassName("baminigrid/system_config_form_field_minigrid");
     return $types;
 }
Пример #16
0
 protected function _prepareLayout()
 {
     $this->getLayout()->getBlock('head')->removeItem('js', 'mage/adminhtml/loader.js');
     $this->getLayout()->getBlock('head')->addJs('commercestack/adminhtml/recommender.js');
     return parent::_prepareLayout();
 }
Пример #17
0
 public function __construct()
 {
     parent::__construct();
     $this->setTemplate('em_googlefont/form.phtml');
 }
Пример #18
0
 protected function _prepareLayout()
 {
     $return = parent::_prepareLayout();
     $this->initForm();
     return $return;
 }
Пример #19
0
 /**
  * @see parent
  */
 public function setParentBlock(Mage_Core_Block_Abstract $block)
 {
     $block->getChild('save_button')->setLabel(Mage::helper('adminhtml')->__('Refresh'))->setOnClick("configForm.submit('{$this->getSubmitUrl()}');");
     return parent::setParentBlock($block);
 }
Пример #20
0
    /**
     * Init fieldset fields
     *
     * @param Varien_Data_Form_Element_Fieldset $fieldset
     * @param Varien_Simplexml_Element $group
     * @param Varien_Simplexml_Element $section
     * @param string $fieldPrefix
     * @param string $labelPrefix
     * @return Soon_StockReleaser_Block_Adminhtml_System_Config_Form
     */
    public function initFields($fieldset, $group, $section, $fieldPrefix = '', $labelPrefix = '')
    {
        if (!$group->is('use_custom_form', 1)) {
            return parent::initFields($fieldset, $group, $section, $fieldPrefix = '', $labelPrefix = '');
        }
        if (!$this->_configDataObject) {
            $this->_initObjects();
        }
        // Extends for config data
        $configDataAdditionalGroups = array();
        $paymentMethods = Mage::helper('payment')->getPaymentMethods();
        $xmlString = "<config><fields>";
        $sort_order = 0;
        foreach ($paymentMethods as $code => $paymentMethod) {
            if (!isset($paymentMethod['active']) || $paymentMethod['active'] == 0) {
                continue;
            }
            ++$sort_order;
            $xmlString .= '
        		<' . $code . ' translate="label">
                            <label>' . $paymentMethod['title'] . '</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>' . $sort_order . '</sort_order>
                            <validate>validate-number</validate>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
			</' . $code . '>';
            ++$sort_order;
            $xmlString .= '                    
        		<' . $code . '-unit translate="label">
                            <frontend_type>select</frontend_type>
                            <source_model>stockreleaser/system_config_source_unit</source_model>
                            <sort_order>' . $sort_order . '</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
			</' . $code . '-unit>';
        }
        $xmlString .= "</fields></config>";
        $element = new Mage_Core_Model_Config_Base();
        $element->loadString($xmlString);
        foreach ($element->getNode('fields') as $elements) {
            $elements = (array) $elements;
            // sort either by sort_order or by child node values bypassing the sort_order
            if ($group->sort_fields && $group->sort_fields->by) {
                $fieldset->setSortElementsByAttribute((string) $group->sort_fields->by, $group->sort_fields->direction_desc ? SORT_DESC : SORT_ASC);
            } else {
                usort($elements, array($this, '_sortForm'));
            }
            foreach ($elements as $e) {
                if (!$this->_canShowField($e)) {
                    continue;
                }
                /**
                 * Look for custom defined field path
                 */
                $path = (string) $e->config_path;
                if (empty($path)) {
                    $path = $section->getName() . '/' . $group->getName() . '/' . $fieldPrefix . $e->getName();
                } elseif (strrpos($path, '/') > 0) {
                    // Extend config data with new section group
                    $groupPath = substr($path, 0, strrpos($path, '/'));
                    if (!isset($configDataAdditionalGroups[$groupPath])) {
                        $this->_configData = $this->_configDataObject->extendConfig($groupPath, false, $this->_configData);
                        $configDataAdditionalGroups[$groupPath] = true;
                    }
                }
                $id = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $e->getName();
                if (isset($this->_configData[$path])) {
                    $data = $this->_configData[$path];
                    $inherit = false;
                } else {
                    $data = $this->_configRoot->descend($path);
                    $inherit = true;
                }
                if ($e->frontend_model) {
                    $fieldRenderer = Mage::getBlockSingleton((string) $e->frontend_model);
                } else {
                    $fieldRenderer = $this->_defaultFieldRenderer;
                }
                $fieldRenderer->setForm($this);
                $fieldRenderer->setConfigData($this->_configData);
                $helperName = $this->_configFields->getAttributeModule($section, $group, $e);
                $fieldType = (string) $e->frontend_type ? (string) $e->frontend_type : 'text';
                $name = 'groups[' . $group->getName() . '][fields][' . $fieldPrefix . $e->getName() . '][value]';
                $label = Mage::helper($helperName)->__($labelPrefix) . ' ' . Mage::helper($helperName)->__((string) $e->label);
                $hint = (string) $e->hint ? Mage::helper($helperName)->__((string) $e->hint) : '';
                if ($e->backend_model) {
                    $model = Mage::getModel((string) $e->backend_model);
                    if (!$model instanceof Mage_Core_Model_Config_Data) {
                        Mage::throwException('Invalid config field backend model: ' . (string) $e->backend_model);
                    }
                    $model->setPath($path)->setValue($data)->setWebsite($this->getWebsiteCode())->setStore($this->getStoreCode())->afterLoad();
                    $data = $model->getValue();
                }
                $comment = $this->_prepareFieldComment($e, $helperName, $data);
                $tooltip = $this->_prepareFieldTooltip($e, $helperName);
                if ($e->depends) {
                    foreach ($e->depends->children() as $dependent) {
                        $dependentId = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $dependent->getName();
                        $shouldBeAddedDependence = true;
                        $dependentValue = (string) $dependent;
                        $dependentFieldName = $fieldPrefix . $dependent->getName();
                        $dependentField = $group->fields->{$dependentFieldName};
                        /*
                         * If dependent field can't be shown in current scope and real dependent config value
                         * is not equal to preferred one, then hide dependence fields by adding dependence
                         * based on not shown field (not rendered field)
                         */
                        if (!$this->_canShowField($dependentField)) {
                            $dependentFullPath = $section->getName() . '/' . $group->getName() . '/' . $fieldPrefix . $dependent->getName();
                            $shouldBeAddedDependence = $dependentValue != Mage::getStoreConfig($dependentFullPath, $this->getStoreCode());
                        }
                        if ($shouldBeAddedDependence) {
                            $this->_getDependence()->addFieldMap($id, $id)->addFieldMap($dependentId, $dependentId)->addFieldDependence($id, $dependentId, $dependentValue);
                        }
                    }
                }
                $field = $fieldset->addField($id, $fieldType, array('name' => $name, 'label' => $label, 'comment' => $comment, 'tooltip' => $tooltip, 'hint' => $hint, 'value' => $data, 'inherit' => $inherit, 'class' => $e->frontend_class, 'field_config' => $e, 'scope' => $this->getScope(), 'scope_id' => $this->getScopeId(), 'scope_label' => $this->getScopeLabel($e), 'can_use_default_value' => $this->canUseDefaultValue((int) $e->show_in_default), 'can_use_website_value' => $this->canUseWebsiteValue((int) $e->show_in_website)));
                $this->_prepareFieldOriginalData($field, $e);
                if (isset($e->validate)) {
                    $field->addClass($e->validate);
                }
                if (isset($e->frontend_type) && 'multiselect' === (string) $e->frontend_type && isset($e->can_be_empty)) {
                    $field->setCanBeEmpty(true);
                }
                $field->setRenderer($fieldRenderer);
                if ($e->source_model) {
                    // determine callback for the source model
                    $factoryName = (string) $e->source_model;
                    $method = false;
                    if (preg_match('/^([^:]+?)::([^:]+?)$/', $factoryName, $matches)) {
                        array_shift($matches);
                        list($factoryName, $method) = array_values($matches);
                    }
                    $sourceModel = Mage::getSingleton($factoryName);
                    if ($sourceModel instanceof Varien_Object) {
                        $sourceModel->setPath($path);
                    }
                    if ($method) {
                        if ($fieldType == 'multiselect') {
                            $optionArray = $sourceModel->{$method}();
                        } else {
                            $optionArray = array();
                            foreach ($sourceModel->{$method}() as $value => $label) {
                                $optionArray[] = array('label' => $label, 'value' => $value);
                            }
                        }
                    } else {
                        $optionArray = $sourceModel->toOptionArray($fieldType == 'multiselect');
                    }
                    $field->setValues($optionArray);
                }
            }
        }
        return $this;
    }