1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

Мультивалютность в VirtueMart 1.1.4 (ajax форме/joomla 1.5.14)

Тема в разделе "Joomla", создана пользователем zafarkhon, 24 окт 2009.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, NightHunter
  1. zafarkhon

    zafarkhon Прохожие

    1. Изменить файл – /administrator/components/com_virtuemart/classes/currency/convertECB.php.
    PHP:
    var $document_address 'http://<URL вашего сайта>/eurofxref-daily.xml';
    var 
    $info_address 'http://<URL вашего сайта>/';
    2. Скачать файл с валютами. Я этот файл для себя настроил. Данные изменить не трудно. Этот файл нужно поставить в корен сайта.
    3. В файле /administrator/components/com_virtuemart/classes/currency/convertECB.php после function add вставить:
    PHP:
    function add_curr(&$d) {
            global $VM_LANG;
            $today = date("y-m-d");
            $newcontent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
            <gesmes:Envelope xmlns:gesmes=\"\" xmlns=\"\">
                <gesmes:subject>Reference rates</gesmes:subject>
                <gesmes:Sender>
                    <gesmes:name>European Central Bank</gesmes:name>
                </gesmes:Sender>
                <Cube>
                    <Cube time='".$today."' >
                        <Cube currency='USD' rate='1'/>
                        <Cube currency='UZS' rate='".vmGet($d, 'uzs_rate' )."'/>
                        <Cube currency='UZB' rate='".vmGet($d, 'uzb_rate' )."'/>
                    </Cube>
                </Cube>
            </gesmes:Envelope>";
            $filename = "../eurofxref-daily.xml";
            if (is_writable($filename)) {
            if (!$handle = fopen($filename, 'w+')) {
                 echo $VM_LANG->_('PHPSHOP_CURR_ERROR_1')." ".$filename;
                 exit;
            }
                if (fwrite($handle, $newcontent) === FALSE) {
                echo $VM_LANG->_('PHPSHOP_CURR_ERROR_2')." ".$filename;
                exit;
            }
            fclose($handle);
            } else {
                echo $VM_LANG->_('PHPSHOP_CURR_ERROR_3')." ".$filename." ".$VM_LANG->_('PHPSHOP_CURR_ERROR_4'); exit;
            }
            @unlink ("../cache/daily.xml");
            return false;
        }
    4. В файле /administrator/components/com_virtuemart/languages/product/russian.php вставить:
    '
    PHP:
    'PHPSHOP_CURR_UZS' => 'Сум (наличный)',
        
    'PHPSHOP_CURR_UZB' => 'Сум (безналичный)',
        
    'PHPSHOP_CURR_TITLE' => 'Ручное добавление курс валют',
        
    'PHPSHOP_CURR_MSG_TITLE' => 'Успешно добавлен',
        
    'PHPSHOP_CURR_ERROR_1' => 'Не могу открыть файл',
        
    'PHPSHOP_CURR_ERROR_2' => 'Не могу произвести запись в файл',
        
    'PHPSHOP_CURR_ERROR_3' => 'Файл',
        
    'PHPSHOP_CURR_ERROR_4' => 'недоступен для записи',
        
    'PHPSHOP_CURR_VALUE' => 'Добавить/изменить курс валют',
    5. В файле /administrator/components/com_virtuemart/html/admin.curr_list.php после всего текста вставить:
    PHP:
    $path = defined('_VM_IS_BACKEND' )? '/administrator/' : '/';
    ?>
    <script type="text/javascript">
    var priceDlg = null;
    function showCurrForm(prodId) {
        // define some private variables
        var showBtn;
        sUrl = '<?php $sess->purl$mm_action_url .'index3.php?page=product.ajax_tools&task=getcurrform&no_html=1'falsefalsetrue )?>&product_id=' + prodId;
        callback = { success : function(o) { 
                            priceDlg = Ext.Msg.show({
                                width:300,
                                height:250,
                               title:'<?php echo $VM_LANG->_('PHPSHOP_CURR_TITLE')?>',
                               msg: o.responseText,
                               buttons: Ext.Msg.OKCANCEL,
                               fn: handleResult
                           });
        }};    
        Ext.Ajax.request({method:'GET', url: sUrl, success: callback.success });
    }
    function handleResult( btn ) {
        switch( btn ) {
            case 'ok':
                submitCurrForm( 'currForm' );
                break;
            case 'cancel':
                break;
        }
    }
    function submitCurrForm(formId) {    
        // define some private variables
        var dialog, showBtn, hideTask;
        function showDialog( content ) {
            var msgbox = Ext.Msg.show( { 
                        title: '<?php echo $VM_LANG->_('PHPSHOP_CURR_MSG_TITLE')?>',
                        msg: content,
                        autoCreate: true,
                        width:300,
                        height:150,
                        fn: msgBoxClick,
                        modal: false,
                        resizable: false,
                        buttons: Ext.Msg.OK,
                        shadow:true,
                        animEl:Ext.get( 'vm-toolbar' )
                });
            // This Dialog shows the result of the price update. We want it to autohide after 3000 seconds
            // Here we need to use "DelayedTask" because we need to cancel the autohide function if the user clicked
            // the dialog away
            hideTask = new Ext.util.DelayedTask(msgbox.hide, msgbox);
            hideTask.delay( 3000 );
        }
        var msgBoxClick = function(result) {
            if( result == 'ok' ) {
                hideTask.cancel();
            }
        };
        // return a public interface
        var callback = {
            success: function(o) {
                //Ext.DomHelper.insertHtml( document.body, o.responseText );
                showDialog( o.responseText );
            },
            failure: function(o) {
                Ext.Msg.alert('Error!', 'Something went wrong while posting the form data (possibly 404 error).');
            },
            upload : function(o){
                //Ext.DomHelper.insertHtml( 'beforeEnd', document.body, o.responseText );
                showDialog( o.responseText );
            }
        };
           Ext.Ajax.request({method:'POST', url: '<?php echo $_SERVER['PHP_SELF'?>', success: callback.success, failure: callback.failure, form: formId});
    }
    function cancelCurrForm(id) {
        updateCurrField( id );
    }
    function updateCurrField( id ) {    
        sUrl = '<?php  $sess->purl$mm_action_url .'index3.php?option=com_virtuemart&no_html=1&page=product.ajax_tools&task=getcurrform'falsefalsetrue )?>&product_id=' + id;
        callback = { success : function(o) { Ext.get("priceform-dlg").innerHTML = o.responseText;    }};
        Ext.Ajax.request({method:'GET', url: sUrl, success:callback.success });
    }
    function reloadForm( parentId, keyName, keyValue ) {
        sUrl = '<?php  $sess->purl$mm_action_url .'index3.php?option=com_virtuemart&no_html=1&page=product.ajax_tools&task=getcurrform'falsefalsetrue )?>&product_id='+parentId+'&'+keyName+'='+keyValue;
        callback = { success : function(o) { priceDlg.updateText( o.responseText) }};
        Ext.Ajax.request({method:'GET', url: sUrl, success:callback.success });
    }
    </script>
    <?php 
    $formName 
    uniqid('currForm');
    ?>
    <div id="priceform-dlg"></div>
    <br /><br />
    <div align="center"><input style="padding:6px; cursor:pointer;" type="button" style="button" onclick="showCurrForm(1)" value="<?php echo $VM_LANG->_('PHPSHOP_CURR_VALUE'); ?>" /></div>
    6. В файле /administrator/components/com_virtuemart/classes/html/product.ajax_tools.php после case 'getshoppergroups': вставить:
    PHP:
    case 'getcurrform':
            
    $dom = new DomDocument();
            
    $dom->load('http://<URL вашего сайта>/eurofxref-daily.xml');
            
    $items $dom->getElementsByTagName("Cube");
            foreach (
    $items as $node)
            {
              
    $_currency $node->getAttribute("currency");
              
    $_rate $node->getAttribute("rate");
              if(
    $_currency == "UZS") { $uzs_rate $_rate; }
              if(
    $_currency == "UZB") { $uzb_rate $_rate; }
            }
            
    $formName 'currForm';
            
    $content '<form id="'.$formName.'" method="post" name="currForm">';
            
    $content .= '<table class="adminform"><tr><td><strong>'.$VM_LANG->_('PHPSHOP_CURR_UZS').':</strong></td><td><input type="text" name="uzs_rate" value="'.$uzs_rate.'" class="inputbox" id="uzs_rate_'.$formName.'" size="11" /></td></tr>';
            
    $content .= '<tr><td><strong>'.$VM_LANG->_('PHPSHOP_CURR_UZB').':</strong></td><td><input type="text" name="uzb_rate" value="'.$uzb_rate.'" class="inputbox" id="uzb_rate_'.$formName.'" size="11" /></td></tr></table>';
            
    $content .= '<input type="hidden" name="func" value="'. ('currAdd'). '" />';
            
    $content .= '<input type="hidden" name="ajax_request" value="1" />';
            
    $content .= '<input type="hidden" name="no_html" value="1" />';
            
    $content .= '<input type="hidden" name="vmtoken" value="'.vmSpoofValue($sess->getSessionId()).'" />';
            
    $content .= '<input type="hidden" name="option" value="'.$option.'" />';
            
    $content .= '</form>';
            
    vmConnector::sendHeaderAndContent200$content );
            break;
     

    Вложения:

    • img_curr.jpg
      img_curr.jpg
      Размер файла:
      35,4 КБ
      Просмотров:
      111
    • valyuta.rar
      Размер файла:
      325 байт
      Просмотров:
      66
  2. ivanesx2008

    ivanesx2008 Постоялец

    Регистр.:
    28 апр 2009
    Сообщения:
    58
    Симпатии:
    1
    Вопрос по пункту 3

    В convertECB.php нет function add
    Уточни плиз с какой строки добавлять код
     
  3. bellisims

    bellisims Создатель

    Регистр.:
    12 дек 2009
    Сообщения:
    31
    Симпатии:
    0
    я себе купил платный модуль за 2 зеленых. он был по идее настроен но пришлось его самому настраивать. потратил кучу времени. и в итоге через пару месяцев он у меня накрылся. и начала выдавать ошибка в корзине.. короче нужно думаю нанять кодера чтобы сделал...
     
  4. BoBaNNNN

    BoBaNNNN Прохожие

    Действительно
    В convertECB.php нет function add
    Уточни с какой строки добавлять код
     
  5. vidima

    vidima Создатель

    Регистр.:
    23 янв 2010
    Сообщения:
    24
    Симпатии:
    1
    Жаль что нет.
     
  6. konishoa

    konishoa Постоялец

    Регистр.:
    22 сен 2010
    Сообщения:
    127
    Симпатии:
    36
    Мультивалютность в Виртуемарте, 3 валюты - Евро, Доллар, Гривна, настройка курса из админки
    http://linuxblog.0fees.net/novosti/kak-sdelat-multivalyutnost-v-virtuemart-s-izmeneniem-kursa-iz-adminki-joomla.html
    Наладка проще, чем здесь сверху и без Аджакса :)
     
  7. abdulidze

    abdulidze Постоялец

    Регистр.:
    24 май 2008
    Сообщения:
    51
    Симпатии:
    0
    ССылка битая. Можете обновить? Или дать другой источник?
     
  8. konishoa

    konishoa Постоялец

    Регистр.:
    22 сен 2010
    Сообщения:
    127
    Симпатии:
    36
    ппц. по ходу мой блог отдал концы :( варезный хостинг - зло. а у меня там много толковых статей =( Может через месяц дам другую ссылку, не раньше точно. Потому как буду делать блог на МОДексе...
     
Статус темы:
Закрыта.