Error replacing the shopper by an administrator + Add script

If you are runnig Joomla 3.x and Virtuemart 3.x please post to this forum your questions or support tickets about One Page Checkout

Error replacing the shopper by an administrator + Add script

Postby a.avrahami » Sun Mar 29, 2015 12:22 pm

1. When i try to switch shopper in the Cart page i got this error:
RuposTel.com plg_system_fatal_catcher plugin detected a problem with your site.
Your site caused a blank screen upon a visit of this URL:

https://www.a-avrahami.co.il:443/compon ... er&nosef=1

Error message data:
1 Cannot pass parameter 2 by reference in file: /home/usdeal51/public_html/components/com_onepage/views/add_shopper/view.html.php line: 143

timestamp: 2015-03-29T10:14:01+00:00


To disable these emails proceed to your Extensions -> Plug-in manager -> disable plg_system_fatal_catcher
It is very important that you fix all php fatal errors on your site. Resend this email to your developer.


2.I suggest to add the following script to the cart to make it easier to find shoppers as director wants to replace one.
(It is necessary to load the jquery-ui)
I would be happy if you tell me where to add the following script to loaded on the cart.
Code: Select all
  (function( $ ) {
    $.widget( "custom.combobox", {
      _create: function() {
        this.wrapper = $( "<span>" )
          .addClass( "custom-combobox" )
          .insertAfter( this.element );

        this.element.hide();
        this._createAutocomplete();
        this._createShowAllButton();
      },

      _createAutocomplete: function() {
        var selected = this.element.children( ":selected" ),
          value = selected.val() ? selected.text() : "";

        this.input = $( "<input>" )
          .appendTo( this.wrapper )
          .val( value )
          .attr( "title", "" )
          .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" )
          .autocomplete({
            delay: 0,
            minLength: 0,
            source: $.proxy( this, "_source" )
          })
          .tooltip({
            tooltipClass: "ui-state-highlight"
          });

        this._on( this.input, {
          autocompleteselect: function( event, ui ) {
            ui.item.option.selected = true;
            this._trigger( "select", event, {
              item: ui.item.option
            });
          },

          autocompletechange: "_removeIfInvalid"
        });
      },

      _createShowAllButton: function() {
        var input = this.input,
          wasOpen = false;

        $( "<a>" )
          .attr( "tabIndex", -1 )
          .attr( "title", "Show All Items" )
          .tooltip()
          .appendTo( this.wrapper )
          .button({
            icons: {
              primary: "ui-icon-triangle-1-s"
            },
            text: false
          })
          .removeClass( "ui-corner-all" )
          .addClass( "custom-combobox-toggle ui-corner-right" )
          .mousedown(function() {
            wasOpen = input.autocomplete( "widget" ).is( ":visible" );
          })
          .click(function() {
            input.focus();

            // Close if already visible
            if ( wasOpen ) {
              return;
            }

            // Pass empty string as value to search for, displaying all results
            input.autocomplete( "search", "" );
          });
      },

      _source: function( request, response ) {
        var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
        response( this.element.children( "option" ).map(function() {
          var text = $( this ).text();
          if ( this.value && ( !request.term || matcher.test(text) ) )
            return {
              label: text,
              value: text,
              option: this
            };
        }) );
      },

      _removeIfInvalid: function( event, ui ) {

        // Selected an item, nothing to do
        if ( ui.item ) {
          return;
        }

        // Search for a match (case-insensitive)
        var value = this.input.val(),
          valueLowerCase = value.toLowerCase(),
          valid = false;
        this.element.children( "option" ).each(function() {
          if ( $( this ).text().toLowerCase() === valueLowerCase ) {
            this.selected = valid = true;
            return false;
          }
        });

        // Found a match, nothing to do
        if ( valid ) {
          return;
        }

        // Remove invalid value
        this.input
          .val( "" )
          .attr( "title", value + " didn't match any item" )
          .tooltip( "open" );
        this.element.val( "" );
        this._delay(function() {
          this.input.tooltip( "close" ).attr( "title", "" );
        }, 2500 );
        this.input.autocomplete( "instance" ).term = "";
      },

      _destroy: function() {
        this.wrapper.remove();
        this.element.show();
      }
    });
  })( jQuery );

  $(function() {
    $( "#userID" ).combobox();
    $( "#toggle" ).click(function() {
      $( "#userID" ).toggle();
    });
  });
a.avrahami
 
Posts: 9
Joined: Tue Jan 27, 2015 2:37 pm

Re: Error replacing the shopper by an administrator + Add script

Postby admin » Wed Apr 01, 2015 9:10 pm

hello, i will check this error for you.

you can fix it with:
Code: Select all
   $empty = '';
         $array = array();
     VmConfig::loadJLang('com_virtuemart_shoppers',TRUE);
      $userFields = $userFieldsModel->getUserFieldsFilled($prepareUserFields,$array,$empty);



instead of :

Code: Select all
VmConfig::loadJLang('com_virtuemart_shoppers',TRUE);
      $userFields = $userFieldsModel->getUserFieldsFilled(
      $prepareUserFields
      ,array()
      ,''
      );




you could also fix it be removing the & within the function parameters of the function within the VM usermodels, as there are some known problem is with it and the reference should not really be there.


to add your code to the registration section, you can try to:

for the admin's feature you can use Joomla theme override:
\components\com_onepage\views\add_shopper\tmpl\default.php

copy this file to:

/templates/YOUR JOOMLA TEMPLATE/html/com_onepage/add_shopper/default.php

(paste your code there)

i can assist with this, but ideally only after the easter hollidays (tuesday next week).

best regards, stan, rupostel.com
admin
Site Admin
 
Posts: 2708
Joined: Wed Jan 06, 2010 11:43 pm


Return to One Page Checkout for Virtuemart 3 on Joomla 3.x