Z
zafarkhon
Прохожие
- Автор темы
- #1
1. Изменить файл – /administrator/components/com_virtuemart/classes/currency/convertECB.php.
2. Скачать файл с валютами. Я этот файл для себя настроил. Данные изменить не трудно. Этот файл нужно поставить в корен сайта.
3. В файле /administrator/components/com_virtuemart/classes/currency/convertECB.php после function add вставить:
4. В файле /administrator/components/com_virtuemart/languages/product/russian.php вставить:
'
5. В файле /administrator/components/com_virtuemart/html/admin.curr_list.php после всего текста вставить:
6. В файле /administrator/components/com_virtuemart/classes/html/product.ajax_tools.php после case 'getshoppergroups': вставить:
PHP:
var $document_address = 'http://<URL вашего сайта>/eurofxref-daily.xml';
var $info_address = 'http://<URL вашего сайта>/';
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;
}
'
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' => 'Добавить/изменить курс валют',
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>
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;