Skip to content
Snippets Groups Projects
vmupdatecredentialscheck.php 5.42 KiB
<?php
defined('_JEXEC') or die();
/**
 *
 * @package    VirtueMart
 * @subpackage Plugins  - Fields
 * @author Reinhold Kainhofer, Open Tools
 * @link http://www.open-tools.net
 * @copyright Copyright (c) 2016 Reinhold Kainhofer. All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.txt
 * VirtueMart is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
 
defined('DS') or define('DS', DIRECTORY_SEPARATOR);
if (!class_exists( 'VmConfig' )) 
    require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
VmConfig::loadConfig();

class JFormFieldVmUpdateCredentialsCheck extends JFormField {
    var $_name = 'vmUpdateCredentialsCheck';
    
	// VM2 on J2 works, VM3 on J3 works out of the box, but
	// VM3 on J2 does NOT work by simply calling vmJsApi::jQuery, because
	// the JS is never added to the page header, so we have to add this manually
	public function loadjQuery() {
		vmJsApi::jQuery();
		// TODO: jquery::ui available only in J3:
		if (version_compare(JVERSION, '3.0', 'lt')) {
		} else {
			JHtml::_('jquery.ui', array('core', 'sortable'));
		}
		// If we are on Joomla 2.5 and VM 3, manually add the script declarations 
		// cached in vmJsApi to the document header:
		if (version_compare(JVERSION, '3.0', 'lt') && defined('VM_VERSION') && VM_VERSION>=3) {
			$document = JFactory::getDocument();
			$scripts = vmJsApi::getJScripts();
			foreach ($scripts as $name => $jsToAdd) {
				if($jsToAdd['written']) continue;
				$file = $jsToAdd['script'] ? $jsToAdd['script'] : $name;
				
				if(strpos($file,'/')!==0){
					$file = vmJsApi::setPath($file,false,'');
				} else if(strpos($file,'//')!==0){
					$file = JURI::root(true).$file;
				}

				$ver = '';
				if(!empty($jsToAdd['ver'])) $ver = '?vmver='.$jsToAdd['ver'];
				$document->addScript( $file .$ver,"text/javascript",$jsToAdd['defer'],$jsToAdd['async'] );
				vmJsApi::removeJScript($name);
			}
		}
	}
    
    protected function getJavaScript() {
		return "
var credentials_ajaxurl = \"".$this->element["ajaxurl"]."\";
var credentials_updateMessages = function(messages, area) {
    jQuery( \"#system-message-container #system-message .\"+area+\"-message\").remove();
    var newmessages = jQuery( messages ).find(\"div.alert, .message\").addClass(area+\"-message\");
    if (!jQuery( \"#system-message-container #system-message\").length && newmessages.length) {
        if (jQuery(newmessages).first().prop(\"tagName\")==\"dt\") { // Joomla 2.x:
            jQuery( \"#system-message-container\" ).append( \"<dl id=\'system-message\'></div>\" );
        } else {
            jQuery( \"#system-message-container\" ).append( \"<div id=\'system-message\'></div>\" );
        }
    }
    newmessages.appendTo( \"#system-message-container #system-message\");
};

var checkUpdateCredentialsError = function() {
	alert (\"".JText::_('OPENTOOLS_CHECK_CREDENTIALS_ERROR')."\"); 
}

var checkUpdateCredentials = function () {
	var ordernumber = jQuery('#jform_params_order_number').val();
	var orderpass = jQuery('#jform_params_order_pass').val();
	
    var ajaxargs = {
        type: \"POST\",
		dataType: \"text\",
        url: credentials_ajaxurl,
        data: { 
			action: \"check_update_access\",
			order_number: ordernumber, 
			order_pass: orderpass
		},
		
		success: function ( json ) {
			try {
				json = jQuery.parseJSON(json);
				credentials_updateMessages(json['messages'], 'ordernumber');
			} catch (e) {
				checkUpdateCredentialsError();
				return;
			}
			var success=0;
			if (json.success>0) {
				success=1;
			}
			jQuery('#update_credentials_hidden_checked').val(success);
			jQuery('.credentials_checked')
				.removeClass('credentials_checked_0')
				.removeClass('credentials_checked_1')
				.addClass('credentials_checked_'+success);
		},
		error: function() { checkUpdateCredentialsError(); },
		complete: function() {  },
	};
	jQuery.ajax(ajaxargs);
};
jQuery(document).ready (function () {
	jQuery('#jform_params_order_number').focusout(checkUpdateCredentials);
	jQuery('#jform_params_order_pass').focusout(checkUpdateCredentials);
});

";
    }
    
    protected function getCSS() {
		return "
div.credentials_checked {
	padding: 10px 5px;
    float: left;
    clear: left;
    display: block;
    width: 100%;
}
div.credentials_checked_0 {
	background-color: #FFD0D0;
}
div.credentials_checked_1 {
	background-color: #D0FFD0;
}
a#credentials_check {
}
";
    }
	protected function getInput() {
		// Tell the user that automatic updates are not available in Joomla 2.5:
		if (version_compare(JVERSION, '3.0', 'lt')) {
			JFactory::getApplication()->enqueueMessage(JText::_('OPENTOOLS_COMMERCIAL_UPDATES_J25'), 'warning');
		}

		$this->loadjQuery();
		
		$doc = JFactory::getDocument();
		$doc->addScriptDeclaration($this->getJavaScript());
		$doc->addStyleDeclaration($this->getCSS());
		
		if ($this->value!=1) {
			$this->value=0;
		}
// 		if ($this->value==1) {
		return "<input type='hidden' id=\"update_credentials_hidden_checked\" name='".$this->name."' value='".$this->value."' /><div class='credentials_checked credentials_checked_".$this->value."'><a href=\"#\" class=\"btn btn-info credentials_check\" id=\"credentials_check\" onclick=\"checkUpdateCredentials()\" >".JText::_('OPENTOOLS_CHECK_CREDENTIALS')."</a></div>";
	}
}