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

Статус
В этой теме нельзя размещать новые ответы.
Z

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', false, false, true )?>&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', false, false, true )?>&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', false, false, true )?>&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::sendHeaderAndContent( 200, $content );
		break;
 

Вложения

  • img_curr.jpg
    img_curr.jpg
    35,4 KB · Просмотры: 112
  • valyuta.rar
    325 байт · Просмотры: 66
Вопрос по пункту 3

В convertECB.php нет function add
Уточни плиз с какой строки добавлять код
 
я себе купил платный модуль за 2 зеленых. он был по идее настроен но пришлось его самому настраивать. потратил кучу времени. и в итоге через пару месяцев он у меня накрылся. и начала выдавать ошибка в корзине.. короче нужно думаю нанять кодера чтобы сделал...
 
Действительно
В convertECB.php нет function add
Уточни с какой строки добавлять код
 
Мультивалютность в Виртуемарте, 3 валюты - Евро, Доллар, Гривна, настройка курса из админки

Наладка проще, чем здесь сверху и без Аджакса :)
 
Мультивалютность в Виртуемарте, 3 валюты - Евро, Доллар, Гривна, настройка курса из админки
*** скрытое содержание ***
Наладка проще, чем здесь сверху и без Аджакса :)
ССылка битая. Можете обновить? Или дать другой источник?
 
ппц. по ходу мой блог отдал концы :( варезный хостинг - зло. а у меня там много толковых статей =( Может через месяц дам другую ссылку, не раньше точно. Потому как буду делать блог на МОДексе...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху