VM 1.x Virtuemart one page checkout module

Всем привет! Для облегчения жизни и ускорения работы над проектом нужен этот модуль, файлы все давно просрочены, поделитесь плиз у кого есть возможность!

Пишу тут потому как нужно именно для Joomla 1.5

Спасибо!
 
Ссылку в шапке обновил
 
У меня возникла проблема с OnePageCheckout под VM 1.1 версии 2.0.2е. Не корректно работала функция makePOSTrequest для AJAX-логина в гугл-хром (никак не работал и не реагировал на внешние раздражители AJAX-логин после ввода логина-пароля и нажатия на кнопку, надо было перезагружать страницу). Переписал ее под jquery 1.8.3 (должно работать и на более ранних). Если у кого такая проблема, надо:

1. Открыть onepage.js и заменить содержимое функции loginsubmit на:

Код:
function loginsubmit() {
 
    var bAjaxMode=bAMode;
//    bAjaxMode = false;
 
    var poststr = "";
    poststr = poststr + "Div_ID=registersection";
    poststr = poststr + "&username=" + encodeURIComponent(document.getElementById("opcologinusername").value);
    poststr = poststr + "&passwd=" + encodeURIComponent(document.getElementById("opcologinpassword").value);
    poststr = poststr + "&" + encodeURIComponent(document.getElementById("logintoken").name) + "=1";
    poststr = poststr + "&return=" + document.getElementById("return").value;
    poststr = poststr + "&remember=" + document.getElementById("remember").value;
    poststr = poststr + "&op2=" + document.getElementById("op2").value;
    poststr = poststr + "&opco_title=" + encodeURIComponent(getOpcoModuleName());
 
    opcoHelper.emptyById('loginerror');
 
//    makePOSTRequesttwo('/index.php?option=com_user&task=login', poststr, bAjaxMode);
 
urlf='index.php?option=com_user&task=login';
gdata=new Object();
gdata['Div_ID']="registersection";
gdata['username']= document.getElementById("opcologinusername").value;
gdata['passwd']= document.getElementById("opcologinpassword").value;
gdata[document.getElementById("logintoken").name]="1";
gdata['return']=document.getElementById("return").value;
gdata['remember']=document.getElementById("remember").value;
gdata['op2']=document.getElementById("op2").value;
gdata['opco_title']=getOpcoModuleName();
 
var pizd = "";
 
jQuery.ajax({
  type: "POST", // type of request either Get or Post
  url: urlf, // Url of the page where to post data and receive response
  data: gdata, // data to be post
  datatype: "json",
  success: function(){
    var resp;
    jQuery.get('/modules/mod_virtuemart_onepagecheckout/login_return_ajax.php', function (data) {
        resp = data;
        pizdec(resp);
});
 
}
});
 
}

2. Там же в конце файла создать функцию pizdec следующего содержания:
Код:
function pizdec(text) {
 
            result = text;
            trash = text;
 
            var crlf = "<br>";
            var sBlock=result.split(crlf);
 
 
            for (var blocksIndex = 0; blocksIndex < sBlock.length; blocksIndex++) {
                debug_opco_msg('processing ' + (blocksIndex + 1) + ' of ' + sBlock.length + ': ' + sBlock[blocksIndex]);
                ThisBlock = sBlock[blocksIndex];
                ThisTag = ThisBlock.slice(ThisBlock.indexOf("<"),ThisBlock.indexOf(">"))
     
 
                if (ThisTag.toLowerCase().indexOf("<div ") == 0) {
                    //Div Tag so replace object on page
         
                    //Get the ID of the Div Tag
                    aID = ThisTag.split("=")
                    ID = aID[1]
 
                    if(ID == null)
                        continue;
 
         
                    //Get the Content of the Div Tag
                    EndTag = '</div>'
                    Contents = ThisBlock.slice(ThisBlock.indexOf(">") + 1, ThisBlock.length)
                    Contents = Contents.substring(0,Contents.length - EndTag.length);
 
                    //Replace the Object contents on the document
         
 
                    //$(ID).set('html', Contents);
                    setHtmlAndExecute(ID, Contents);
         
                    //document.getElementById(ID).innerHTML = Contents;
         
/*                    var ob = document.getElementById(ID).getElementsByTagName("script");
                    for(var s=0; s < ob.length; s++){
                        if(ob[s].innerHTML!=null) eval(ob[s].innerHTML);
                    }         
*/
 
                } else if (ThisTag.trim().toLowerCase().indexOf("<scr" + "ipt ") == 0) {
                    //script so execute the script
         
                    //Get the Script Content of the Script Tag
                    EndTag = '</scr' + 'ipt>'
         
                    Script = ThisBlock.slice(ThisBlock.indexOf(">") + 1, ThisBlock.length)
                    Script = Script.substring(0,Script.lastIndexOf("<"));
 
                    //Execute the script
                    eval(Script);
                }
     
            }
}

У меня модуль исполняется в корзине (она же - оформление заказа) и почему-то гугл хром не хотел производить редирект через httprequest (видимо из соображений безопастности). Через jquery работает, причем кроссбраузерно, так же можно переписать в этом модуле любой кусок.

З.Ы. Ещё есть критическая беда в IE. Надо найти и закомментировать в onepage.js следующую строку

// c.detachEvent('change', changeCreditCardList);

З.Ы. 2 - модуль от rupostel - дерьмо.
 
У меня возникла проблема с OnePageCheckout под VM 1.1 версии 2.0.2е
Да, есть такая проблема. И подключение Jquery вроде как помог, но остальное покосилось. Обновление цен происходит без лоадера, вкладки выводятся сплошным текстом, обновление в корзине визуально не происходит, только функционально.
А нельзя ли на кнопку войти прикрепить код обновления страницы при нажатии?
 
Да, есть такая проблема. И подключение Jquery вроде как помог, но остальное покосилось. Обновление цен происходит без лоадера, вкладки выводятся сплошным текстом, обновление в корзине визуально не происходит, только функционально.
А нельзя ли на кнопку войти прикрепить код обновления страницы при нажатии?
У меня нету таких проблем. Обновил конкретно 2 функции. Всё работает норм. Посмотрите тут:

только просьба без заказов - это live-магаз.
 
У меня нету таких проблем. Обновил конкретно 2 функции. Всё работает норм. Посмотрите тут:

только просьба без заказов - это live-магаз.
Просьбу проигнорировал, за что извиняюсь.
У вас, если пустая корзина, переходит на главную (в некоторых случаях - неудобно). И нажав "купить" переходит сразу в корзину, где нет возможности "продолжить покупки". Сразу и я такой способ использовал, но убрав, заметил, что начали дополнять заказ другими товарами.
А по теме да, все работает!
У меня почему-то даже обновления цены и др. не проходит, только после нажатия кнопки обновить. В общем явно что-то не то.
Еще один момент (у меня:( кешируется корзина в OPC создавая тем самым непонятки, если человек вышел, купил что-то еще.
 
Просьбу проигнорировал, за что извиняюсь.
У вас, если пустая корзина, переходит на главную (в некоторых случаях - неудобно). И нажав "купить" переходит сразу в корзину, где нет возможности "продолжить покупки". Сразу и я такой способ использовал, но убрав, заметил, что начали дополнять заказ другими товарами.
А по теме да, все работает!
У меня почему-то даже обновления цены и др. не проходит, только после нажатия кнопки обновить. В общем явно что-то не то.
Еще один момент (у меня:( кешируется корзина в OPC создавая тем самым непонятки, если человек вышел, купил что-то еще.
В идеале реализую так: у корзины будет ajax-модуль и если она пустая - не будет линка - это решит все проблемы. Если у вас jquery используется - попробуйте просто взять мой onepage.js из исходников (и в нем в функциях заменить линки с 4play.by на ваши или относительные) - всё должно заработать. Кеширования у модуля кажется нету - у вас значит есть внешний кеш-механизм
 
Кеширования у модуля кажется нету - у вас значит есть внешний кеш-механизм
Да, тянет внешний кеш, но вот в чем прикол:
уже не помню, когда устанавливал OPC, но связать его с корзиной не получилось - нужно было зайти в корзину, нажать "оформить заказ" и после этого появлялась страница OPC.
Недавно изменил конструкцию таким образом:
Покупка добавляется в мини корзину, потом в нее нужно зайти (открывается лайтбоксом) и нажать "оформить заказ". я изменил ссылку в модуле /cart.html на ссылку страницы OPC, вот она и кешируется, как обычный контент Joomla.
И оффтоп: Есть еще один вариант на сайте - быстрый заказ (1 поле - телефон) так уже и не помню, когда через корзину заказывали. Люди разленились в край! Я даже отзывы без email сделал, только имя и кептча. Но с корзиной все равно разобраться надо.
 
Да, тянет внешний кеш, но вот в чем прикол:
уже не помню, когда устанавливал OPC, но связать его с корзиной не получилось - нужно было зайти в корзину, нажать "оформить заказ" и после этого появлялась страница OPC.
Недавно изменил конструкцию таким образом:
Покупка добавляется в мини корзину, потом в нее нужно зайти (открывается лайтбоксом) и нажать "оформить заказ". я изменил ссылку в модуле /cart.html на ссылку страницы OPC, вот она и кешируется, как обычный контент Joomla.
И оффтоп: Есть еще один вариант на сайте - быстрый заказ (1 поле - телефон) так уже и не помню, когда через корзину заказывали. Люди разленились в край! Я даже отзывы без email сделал, только имя и кептча. Но с корзиной все равно разобраться надо.
Чтобы не кешировалось, сделай следующее:

1. Иди в файл /plugins/system/cache.php
2. Меняй
Код:
if (!$user->get('aid') && $_SERVER['REQUEST_METHOD'] == 'GET') {
на
Код:
if (!$user->get('aid') && !$_SESSION['cart']['idx'] && $_SERVER['REQUEST_METHOD'] == 'GET') {
 
Назад
Сверху