From d06a4207aa12b832e3fa6dcd0e8963c89ff202ed Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Sat, 3 Jan 2015 02:42:33 +0100
Subject: [PATCH] V0.2: Initial version, including text version list display

---
 Makefile                                      |  25 ++
 elements/compatfolders.php                    |  81 ++++++
 elements/index.html                           |   4 +
 fields/compatfolders.php                      |  14 +-
 fields/index.html                             |   4 +
 index.html                                    |   4 +
 .../en-GB.plg_vmcustom_versioncompat.ini      |   7 +-
 .../en-GB.plg_vmcustom_versioncompat.sys.ini  |   7 +-
 language/index.html                           |   4 +
 releases/plg_vmcustom_versioncompat_v0.2.zip  | Bin 0 -> 32955 bytes
 versioncompat.php                             | 251 ++++++++----------
 versioncompat.xml                             |  29 +-
 .../images/ExtensionTypes/component.png       | Bin 0 -> 667 bytes
 versioncompat/images/ExtensionTypes/hack.png  | Bin 0 -> 967 bytes
 .../images/ExtensionTypes/index.html          |   4 +
 .../images/ExtensionTypes/language.png        | Bin 0 -> 488 bytes
 .../images/ExtensionTypes/module.png          | Bin 0 -> 601 bytes
 .../images/ExtensionTypes/plugin.png          | Bin 0 -> 538 bytes
 .../images/ExtensionTypes/specific.png        | Bin 0 -> 669 bytes
 .../images/ExtensionTypes/template.png        | Bin 0 -> 542 bytes
 versioncompat/images/Joomla/index.html        |   4 +
 versioncompat/images/VirtueMart/index.html    |   4 +
 versioncompat/images/VirtueMart/vm1.0.png     | Bin 0 -> 877 bytes
 versioncompat/images/VirtueMart/vm1.1.png     | Bin 0 -> 797 bytes
 versioncompat/images/VirtueMart/vm2.0.png     | Bin 0 -> 924 bytes
 versioncompat/images/VirtueMart/vm3.0.png     | Bin 0 -> 836 bytes
 versioncompat/images/index.html               |   4 +
 versioncompat/tmpl/default.php                |  55 +++-
 versioncompat/tmpl/search.php                 |  27 --
 29 files changed, 321 insertions(+), 207 deletions(-)
 create mode 100644 Makefile
 create mode 100644 elements/compatfolders.php
 create mode 100644 elements/index.html
 create mode 100644 fields/index.html
 create mode 100644 index.html
 create mode 100644 language/index.html
 create mode 100644 releases/plg_vmcustom_versioncompat_v0.2.zip
 create mode 100644 versioncompat/images/ExtensionTypes/component.png
 create mode 100644 versioncompat/images/ExtensionTypes/hack.png
 create mode 100644 versioncompat/images/ExtensionTypes/index.html
 create mode 100644 versioncompat/images/ExtensionTypes/language.png
 create mode 100644 versioncompat/images/ExtensionTypes/module.png
 create mode 100644 versioncompat/images/ExtensionTypes/plugin.png
 create mode 100644 versioncompat/images/ExtensionTypes/specific.png
 create mode 100644 versioncompat/images/ExtensionTypes/template.png
 create mode 100644 versioncompat/images/Joomla/index.html
 create mode 100644 versioncompat/images/VirtueMart/index.html
 create mode 100644 versioncompat/images/VirtueMart/vm1.0.png
 create mode 100644 versioncompat/images/VirtueMart/vm1.1.png
 create mode 100644 versioncompat/images/VirtueMart/vm2.0.png
 create mode 100644 versioncompat/images/VirtueMart/vm3.0.png
 create mode 100644 versioncompat/images/index.html

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..8e1b786
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,25 @@
+BASE=versioncompat
+PLUGINTYPE=vmcustom
+VERSION=0.2
+
+PLUGINFILES=$(BASE).php $(BASE).script.php $(BASE).xml index.html $(BASE)/
+
+SYSTRANSLATIONS=$(call wildcard,language/*/*.plg_$(PLUGINTYPE)_$(BASE).*sys.ini)
+NONSYSTRANSLATIONS=${SYSTRANSLATIONS:%.sys.ini=%.ini}
+TRANSLATIONS=$(SYSTRANSLATIONS) $(NONSYSTRANSLATIONS) $(call wildcard,language/*/index.html) language/index.html
+
+FIELDS=fields/ elements/
+
+ZIPFILE=plg_$(PLUGINTYPE)_$(BASE)_v$(VERSION).zip
+
+all: zip
+
+$(NONSYSTRANSLATIONS): %.ini: %.sys.ini
+	cp $< $@
+
+zip: $(PLUGINFILES) $(TRANSLATIONS) $(SYSTRANSLATIONS) $(NONSYSTRANSLATIONS)
+	@echo "Packing all files into distribution file $(ZIPFILE):"
+	@zip -r $(ZIPFILE) $(PLUGINFILES) $(TRANSLATIONS) $(FIELDS)
+
+clean:
+	rm -f $(ZIPFILE)
diff --git a/elements/compatfolders.php b/elements/compatfolders.php
new file mode 100644
index 0000000..3b2ec02
--- /dev/null
+++ b/elements/compatfolders.php
@@ -0,0 +1,81 @@
+<?php
+defined ('_JEXEC') or die();
+/**
+ *
+ * @package    VirtueMart
+ * @subpackage Plugins  - Elements
+ * @author Reinhold Kainhofer
+ * @link http://www.open-tools.net
+ * @copyright   Copyright (C) 2014 Open Tools, Reinhold Kainhofer. All rights reserved.
+ * Based on Joomla core files:
+ * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
+ * @license     GNU General Public License version 2 or later; see LICENSE
+ *
+ * VirtueMart and this plugin are 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.
+ *
+ */
+if (!class_exists('VmConfig'))  require(JPATH_VM_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
+if(!class_exists('VmModel'))    require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmmodel.php');
+jimport('joomla.filesystem.folder');
+
+/*
+ * This class is used by VirtueMart Payment or Shipment Plugins
+ * which uses JParameter
+ * So It should be an extension of JElement
+ * Those plugins cannot be configured througth the Plugin Manager anyway.
+ */
+class JElementCompatFolders extends JElement {
+
+	/**
+	 * Element name
+	 *
+	 * @access    protected
+	 * @var        string
+	 */
+	var $_name = 'CompatFolders';
+
+	protected function getGroups($node)
+	{
+		$groups = array(''=>JHtml::_('select.option', '', '---'));
+	    foreach ($node->children() as $dir) {
+    		if ($dir->name() != 'folder') continue;
+
+			$directory = (string)$dir->data();
+			if ($groupLabel = (string) $dir->attributes('label')) {
+				$label = JText::_($groupLabel);
+			} else {
+				$label = $directory;
+			}
+			if (!JFolder::exists($directory))
+                $directory = JPATH_ROOT . DS . $directory;
+			if (!JFolder::exists($directory)) continue;
+
+			// Initialize the group if necessary.
+			if (!isset($groups[$label])) {
+    			$groups[$label]['id'] = $label;
+	       		$groups[$label]['text'] = $label;
+	       		$groups[$label]['items'] = array();
+			}
+
+			// List all subfolders of the given directory:
+			$folders = JFolder::folders($directory, (string)$dir->attributes('filter'));
+
+			foreach ($folders as $option) {
+	            $groups[$label]['items'][] = JHtml::_('select.option', (string)$dir->data().$option, $option);
+			}
+		}
+		reset($groups);
+		return $groups;
+	}
+
+	function fetchElement ($name, $value, &$node, $control_name) {
+        $dirs = $this->getGroups($node);
+        $class = ($node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : '');
+		return JHTML::_ ('select.groupedlist', $dirs, '' . $control_name . '[' . $name . ']',
+		        array('id' => $control_name . $name, 'list.attr' => $class, 'list.select' => array($value)));
+	}
+
+}
diff --git a/elements/index.html b/elements/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/elements/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/fields/compatfolders.php b/fields/compatfolders.php
index f15ec7c..0f69303 100644
--- a/fields/compatfolders.php
+++ b/fields/compatfolders.php
@@ -20,10 +20,10 @@ class JFormFieldCompatFolders extends JFormFieldGroupedList
 
 	protected function getGroups()
 	{
-		$groups = array();
+		$groups = array(JHtml::_('select.option', '', '---'));
 		foreach ($this->element->children() as $dir) {
 			if ($dir->getName() != 'folder') continue;
-			
+
 			$directory = (string)$dir;
 			if ($groupLabel = (string) $dir['label']) {
 				$label = JText::_($groupLabel);
@@ -31,18 +31,18 @@ class JFormFieldCompatFolders extends JFormFieldGroupedList
 				$label = $directory;
 			}
 			if (!JFolder::exists($directory))
-                $directory = JPATH_ROOT . '/' . $directory;
+                $directory = JPATH_ROOT . DS . $directory;
 			if (!JFolder::exists($directory)) continue;
 
 			// Initialize the group if necessary.
-			if (!isset($groups[$label])) 
+			if (!isset($groups[$label]))
 				$groups[$label] = array();
-			
+
 			// List all subfolders of the given directory:
 			$folders = JFolder::folders($directory, (string)$dir['filter']);
-			
+
 			foreach ($folders as $option) {
-				$groups[$label][] = JHtml::_('select.option', (string)$dir.'/'.$option, $option);
+				$groups[$label][] = JHtml::_('select.option', (string)$dir.DS.$option, $option);
 			}
 		}
 		reset($groups);
diff --git a/fields/index.html b/fields/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/fields/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/language/en-GB/en-GB.plg_vmcustom_versioncompat.ini b/language/en-GB/en-GB.plg_vmcustom_versioncompat.ini
index abd7ae0..a596460 100644
--- a/language/en-GB/en-GB.plg_vmcustom_versioncompat.ini
+++ b/language/en-GB/en-GB.plg_vmcustom_versioncompat.ini
@@ -8,4 +8,9 @@ VMCUSTOM_VERSIONCOMPAT_FOLDER="Folder containing choices"
 VMCUSTOM_VERSIONCOMPAT_FOLDER_PLUGIN="Plugin's directory"
 VMCUSTOM_VERSIONCOMPAT_FOLDER_JOOMLA="Joomla Media directory"
 VMCUSTOM_VERSIONCOMPAT_FOLDER_IMAGES="Joomla Image directory"
-VMCUSTOM_VERSIONCOMPAT_SEARCHABLE="Searchable"
\ No newline at end of file
+VMCUSTOM_VERSIONCOMPAT_SEARCHABLE="Searchable"
+VMCUSTOM_VERSIONCOMPAT_NONE="(None)"
+VMCUSTOM_VERSIONCOMPAT_TEXTVERSIONS="Text versions"
+VMCUSTOM_VERSIONCOMPAT="Version compatibility"
+VMCUSTOM_VERSIONCOMPAT_IMAGES="Images"
+VMCUSTOM_VERSIONCOMPAT_TEXTS="Text versions"
diff --git a/language/en-GB/en-GB.plg_vmcustom_versioncompat.sys.ini b/language/en-GB/en-GB.plg_vmcustom_versioncompat.sys.ini
index abd7ae0..a596460 100644
--- a/language/en-GB/en-GB.plg_vmcustom_versioncompat.sys.ini
+++ b/language/en-GB/en-GB.plg_vmcustom_versioncompat.sys.ini
@@ -8,4 +8,9 @@ VMCUSTOM_VERSIONCOMPAT_FOLDER="Folder containing choices"
 VMCUSTOM_VERSIONCOMPAT_FOLDER_PLUGIN="Plugin's directory"
 VMCUSTOM_VERSIONCOMPAT_FOLDER_JOOMLA="Joomla Media directory"
 VMCUSTOM_VERSIONCOMPAT_FOLDER_IMAGES="Joomla Image directory"
-VMCUSTOM_VERSIONCOMPAT_SEARCHABLE="Searchable"
\ No newline at end of file
+VMCUSTOM_VERSIONCOMPAT_SEARCHABLE="Searchable"
+VMCUSTOM_VERSIONCOMPAT_NONE="(None)"
+VMCUSTOM_VERSIONCOMPAT_TEXTVERSIONS="Text versions"
+VMCUSTOM_VERSIONCOMPAT="Version compatibility"
+VMCUSTOM_VERSIONCOMPAT_IMAGES="Images"
+VMCUSTOM_VERSIONCOMPAT_TEXTS="Text versions"
diff --git a/language/index.html b/language/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/language/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/releases/plg_vmcustom_versioncompat_v0.2.zip b/releases/plg_vmcustom_versioncompat_v0.2.zip
new file mode 100644
index 0000000000000000000000000000000000000000..53b01f8c3e6b009a8b89300185b9d0ba94b8baab
GIT binary patch
literal 32955
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%0A+H2c9%jVupG4Bj3Nw{%y
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
Lf(#6D`5+zuNuK>f

literal 0
HcmV?d00001

diff --git a/versioncompat.php b/versioncompat.php
index c0a97e2..874e6ff 100644
--- a/versioncompat.php
+++ b/versioncompat.php
@@ -18,170 +18,133 @@ if (!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmcustompl
 
 class plgVmCustomVersionCompat extends vmCustomPlugin {
 
-	function __construct(& $subject, $config) {
-
-		parent::__construct($subject, $config);
-
-		$this->_tablepkey = 'id';
-		$this->tableFields = array_keys($this->getTableSQLFields());
-		$this->varsToPush = array('compatibility'=> array('', 'string'),'searchable'=>array(0,'int'));
-
-		$this->setConfigParameterable('custom_params',$this->varsToPush);
-
-	}
-	/**
-	 * Create the table for this plugin if it does not yet exist.
-	 */
-	public function getVmPluginCreateTableSQL() {
-		return $this->createTableSQL('Joomla Compatibility Table');
-	}
-
-	function getTableSQLFields() {
-		$SQLfields = array(
-		    'id' => 'bigint(20) unsigned NOT NULL AUTO_INCREMENT',
-		    'virtuemart_custom_id' => 'int(11) UNSIGNED DEFAULT NULL',
-		    'virtuemart_product_id' => 'int(11) UNSIGNED DEFAULT NULL',
-		    'compatibility' => 'varchar(50) NOT NULL DEFAULT \'\' ',
-		);
-
-		return $SQLfields;
-	}
-	
-	function getImages() {
-		jimport('joomla.filesystem.file');
-		jimport('joomla.filesystem.folder');
-		$path = __DIR__.DS.'joocompatibility';
-		$images = JFolder::files($path,'.png');
-		return $images;
-	}
-
-
-	// get product param for this plugin on edit
-	function plgVmOnProductEdit($field, $product_id, &$row,&$retValue) {
+    function __construct(& $subject, $config) {
+        parent::__construct($subject, $config);
+
+        $this->varsToPush = array(
+            'compatibility'=>array(array(), 'array'),
+            'versions'=>array(array(), 'array'),
+            'searchable'=>array(0,'int'),
+            'directory'=>array('', 'string'),
+            'textversions'=>array('', 'string'),
+        );
+
+        if(!defined('VM_VERSION') or VM_VERSION < 3){
+            $this->setConfigParameterable ('custom_params', $this->varsToPush);
+        } else {
+            $this->setConfigParameterable ('customfield_params', $this->varsToPush);
+        }
+
+    }
+
+    function getImages($path) {
+        jimport('joomla.filesystem.file');
+        jimport('joomla.filesystem.folder');
+
+        if (!JFolder::exists($path))
+            $path = JPATH_ROOT . DS . $path;
+        if (!JFolder::exists($path)) continue;
+        $images = JFolder::files($path, '.png');
+        return $images;
+    }
+
+
+    // get product param for this plugin on edit
+    function plgVmOnProductEdit($field, $product_id, &$row, &$retValue) {
 		if ($field->custom_element != $this->_name) return '';
-		$this->getCustomParams($field);
-		$this->getPluginCustomData($field, $product_id);
-		$images = $this->getImages();
-		
-		$logos = array();
-		foreach ($images as $logo) {
-			$logos[] = JHTML::_('select.option', $logo, strtoupper(basename($logo,'.png')));
-		}
-
-		$id = $this->getIdForCustomIdProduct ($product_id, $field->virtuemart_custom_id);
-		$datas = $this->getPluginInternalData ($id);
-		$selectedOptions = explode($this->glue,$datas->compatibility);
-
-		$html ='<div>';
-		$html .= '<input type="hidden" name="plugin_param['.$row.']['.$this->_name.'][virtuemart_custom_id]" value="'.$field->virtuemart_custom_id.'" />';
-		$html .= JHTML::_('select.genericlist', $logos, 'plugin_param['.$row.']['.$this->_name.'][compatibility][]', ' size="5" multiple="multiple"', 'value', 'text', $selectedOptions );
-		$html .='</div>';
-		$retValue .= $html  ;
-		$row++;
-		return true  ;
-	}
+        if(!defined('VM_VERSION') or VM_VERSION < 3){
+            $this->parseCustomParams ($field); // Not needed in VM3!
+            $paramName = 'custom_param';
+        } else {
+            $paramName = 'customfield_params';
+        }
+        $html  = '';
+		$html .='<fieldset>';
+// 		$html .= '<legend>'. JText::_('VMCUSTOM_VERSIONCOMPAT') .'</legend>';
+		$html .= '<table class="admintable">
+			';
+        if (!empty($field->directory)) {
+            $images = $this->getImages($field->directory);
+            $logos = array();
+            foreach ($images as $logo) {
+                $logos[] = JHTML::_('select.option', $logo, strtoupper(basename($logo,'.png')));
+            }
+
+            $html .= VmHTML::row('genericlist', 'VMCUSTOM_VERSIONCOMPAT_IMAGES', $logos, $paramName.'['.$row.'][compatibility][]', ' size="5" multiple data-placeholder="' . JText::_('VMCUSTOM_VERSIONCOMPAT_NONE') . '" ', 'value', 'text', $field->compatibility);
+        }
+
+        if (!empty($field->textversions)) {
+            $textversions = explode(",", $field->textversions);
+            $logos = array();
+            foreach ($textversions as $ver) {
+                $v = trim($ver);
+                $versions[] = JHTML::_('select.option', $v, $v);
+            }
+
+            $html .= VmHTML::row('genericlist', 'VMCUSTOM_VERSIONCOMPAT_TEXTS', $versions, $paramName.'['.$row.'][versions][]', ' size="5" multiple data-placeholder="' . JText::_('VMCUSTOM_VERSIONCOMPAT_NONE') . '" ', 'value', 'text', $field->versions);
+        }
+        $html .= '</table></fieldset>';
+
+        $retValue .= $html;
+        $row++;
+        return true;
+    }
+
+	function displayProductFE ($product, &$group) {
+        // default return if it's not this plugin
+        if ($group->custom_element != $this->_name) return '';
+        if (!defined('VM_VERSION') or VM_VERSION < 3) { // VM2
+            $this->parseCustomParams($group);
+        }
+
+        jimport('joomla.filesystem.file');
+        jimport('joomla.filesystem.folder');
+        $group->display .=  $this->renderByLayout('default',array($group->directory, $group->compatibility, $group->versions) );
+
+        return true;
 
+	}
 	/**
 	 * @ idx plugin index
 	 * @see components/com_virtuemart/helpers/vmCustomPlugin::onDisplayProductFE()
 	 * @author Patrick Kohl
 	 *  Display product
 	 */
-	function plgVmOnDisplayProductFE($product,&$idx,&$group) {
-		// default return if it's not this plugin
-		if ($group->custom_element != $this->_name) return '';
-
-		$this->_tableChecked = true;
-		$this->getCustomParams($group);
-		$this->getPluginCustomData($group, $product->virtuemart_product_id);
-		$id = $this->getIdForCustomIdProduct ($product->virtuemart_product_id, $group->virtuemart_custom_id);
-		$datas = $this->getPluginInternalData ($id);
-		$this->params->selectedOptions = explode($this->glue,$datas->compatibility);
-
-		jimport('joomla.filesystem.file');
-		jimport('joomla.filesystem.folder');
-		$this->params->path = 'plugins/vmcustom/joocompatibility/';
-		if (JFolder::exists(JPATH_SITE.DS.'plugins'.DS.'vmcustom'.DS.'joocompatibility'.DS.'joocompatibility')) {
-			$this->params->path = 'plugins/vmcustom/joocompatibility/joocompatibility/';
-		}
-		$group->display .=  $this->renderByLayout('default',array($this->params,&$idx,&$group ) );
-		
-		return true;
-	}
-
-	function plgVmOnStoreProduct($data,$plugin_param){
-		if (key ($plugin_param) == $this->_name) {
-			if (is_array($plugin_param[$this->_name]['compatibility'])) {
-				$compatibility = implode($this->glue,$plugin_param[$this->_name]['compatibility']);
-			} else {
-				$compatibility = $plugin_param[$this->_name]['compatibility'];
-			}
-			$plugin_param[$this->_name]['compatibility'] = $compatibility;
-		}
-		return $this->OnStoreProduct($data,$plugin_param);
-	}
-
-	public function plgVmSelectSearchableCustom(&$selectList,&$searchCustomValues,$virtuemart_custom_id)
-	{
-		$db =JFactory::getDBO();
-		$db->setQuery('SELECT `virtuemart_custom_id`, `custom_title`, custom_params FROM `#__virtuemart_customs` WHERE `custom_element` ="'.$this->_name.'"');
-		$custom_param = $db->loadObject();
-		$this->selectList = $db->loadAssocList();
-		VmTable::bindParameterable ($custom_param, 'custom_params', $this->_varsToPushParam);
-		if (!$custom_param->searchable) {
-			return;
-		}
-
-		$this->params->custom_title = $custom_param->custom_title;
-
-		jimport('joomla.filesystem.file');
-		jimport('joomla.filesystem.folder');
-		
-		$this->params->path = 'plugins/vmcustom/joocompatibility/';
-		if (JFolder::exists(JPATH_SITE.DS.'plugins'.DS.'vmcustom'.DS.'joocompatibility'.DS.'joocompatibility')) {
-			$this->params->path = 'plugins/vmcustom/joocompatibility/joocompatibility/';
-		}
-		$this->params->images = $this->getImages();
-		$this->params->searched = JRequest::getVar('joocompatibility',array());
-		
-		$selectList = array_merge((array)$this->selectList,$selectList);
-		$searchCustomValues .=  $this->renderByLayout('search',array($this->params) );
-		return true;
-	}
+    function plgVmOnDisplayProductFE($product, &$idx, &$group) {
+        return $this->displayProductFE($product, $group);
+    }
 
-	public function plgVmAddToSearch(&$where,&$PluginJoinTables,$custom_id)
-	{
-		$searched = JRequest::getVar('joocompatibility',array());
-		$conditions = array();
-		if (count($searched)) {
-			foreach ($searched as $searchOption) {
-				$conditions[] = $this->_name .'.`compatibility` LIKE "%'.$searchOption.'%"';
-			}
-			$where[] = implode(' OR ', $conditions);
-			$PluginJoinTables[] = $this->_name ;
-		}
-		return true;
-	}
+    function plgVmOnDisplayProductFEVM3(&$product, &$group) {
+        return $this->displayProductFE($product, $group);
+    }
 
 	/**
 	 * We must reimplement this triggers for joomla 1.7
 	 * vmplugin triggers note by Max Milbers
 	 */
-	public function plgVmOnStoreInstallPluginTable($psType,$name) {
-		return $this->onStoreInstallPluginTable($psType,$name);
-	}
+// 	public function plgVmOnStoreInstallPluginTable($psType,$name) {
+// 		return $this->onStoreInstallPluginTable($psType,$name);
+// 	}
 
 	function plgVmSetOnTablePluginParamsCustom($name, $id, &$table){
 		return $this->setOnTablePluginParams($name, $id, $table);
 	}
 
-	function plgVmDeclarePluginParamsCustom($psType,$name,$id, &$data){
-		return $this->declarePluginParams('custom', $name, $id, $data);
-	}
+    function plgVmDeclarePluginParamsCustom($psType,$name,$id, &$data){
+        return $this->declarePluginParams('custom', $name, $id, $data);
+    }
 
-	/**
-	 * Custom triggers note by Max Milbers
-	 */
+    function plgVmDeclarePluginParamsCustomVM3(&$data){
+        return $this->declarePluginParams('custom', $data);
+    }
+
+    function plgVmGetTablePluginParams($psType, $name, $id, &$xParams, &$varsToPush){
+        return $this->getTablePluginParams($psType, $name, $id, $xParams, $varsToPush);
+    }
+
+// 	/**
+// 	 * Custom triggers note by Max Milbers
+// 	 */
 	function plgVmOnDisplayEdit($virtuemart_custom_id,&$customPlugin){
 		return $this->onDisplayEditBECustom($virtuemart_custom_id,$customPlugin);
 	}
diff --git a/versioncompat.xml b/versioncompat.xml
index 5ba3781..21c38fd 100644
--- a/versioncompat.xml
+++ b/versioncompat.xml
@@ -6,7 +6,7 @@
     <authorUrl>http://www.open-tools.net/</authorUrl>
     <creationDate>2014-12-16</creationDate>
     <copyright>2010 Daycounts.com, 2014 OpenTools.net</copyright>
-    <version>2.0.0</version>
+    <version>0.2</version>
     <description>Version compatibility custom field</description>
     <files>
         <filename plugin="versioncompat">versioncompat.php</filename>
@@ -25,26 +25,23 @@
     <!-- VM 3.x support (fields rather than params): -->
     <vmconfig>
         <fields name="params" addfieldpath="/administrator/components/com_virtuemart/fields">
-            <fieldset name="customfield" label="VMCUSTOM_VERSIONCOMPAT_CONFIG" addfieldpath="/plugins/vmcustom/versioncompat/fields">
-                <field name="directory" size="500" type="compatfolders" scope="com_virtuemart" label="VMCUSTOM_VERSIONCOMPAT_FOLDER">
-                    <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_PLUGIN">/plugins/vmcustom/versioncompat/versioncompat/images/</folder>
-                    <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_JOOMLA">/media/plg_vmcustom_versioncompat/</folder>
-                    <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_IMAGES">/images/versioncompat/</folder>
+            <fieldset name="versioncompat" addfieldpath="/plugins/vmcustom/versioncompat/fields">
+                <field name="directory" type="compatfolders" scope="com_virtuemart" label="VMCUSTOM_VERSIONCOMPAT_FOLDER">
+                    <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_PLUGIN">plugins/vmcustom/versioncompat/versioncompat/images/</folder>
+                    <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_JOOMLA">media/plg_vmcustom_versioncompat/</folder>
+                    <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_IMAGES">images/versioncompat/</folder>
                 </field>
-                <field name="searchable" type="radio" scope="com_virtuemart" default="1" class="btn-group btn-group-yesno" label="VMCUSTOM_VERSIONCOMPAT_SEARCHABLE">
-                    <option value="1">JYES</option>
-                    <option value="0">JNO</option>
-                </field>
-
+                <field name="textversions" type="text" size="70" label="VMCUSTOM_VERSIONCOMPAT_TEXTVERSIONS" />
             </fieldset>
         </fields>
     </vmconfig>
 
-    <params addpath="/administrator/components/com_virtuemart/elements">
-        <param type="vmjpluginwarning" />
-        <param name="searchable" type="radio" default="1" label="searchable">
-            <option value="1">Yes</option>
-            <option value="0">No</option>
+    <params name="params" addpath="/plugins/vmcustom/versioncompat/elements">
+        <param name="directory" type="compatfolders" scope="com_virtuemart" label="VMCUSTOM_VERSIONCOMPAT_FOLDER">
+            <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_PLUGIN">plugins/vmcustom/versioncompat/versioncompat/images/</folder>
+            <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_JOOMLA">media/plg_vmcustom_versioncompat/</folder>
+            <folder label="VMCUSTOM_VERSIONCOMPAT_FOLDER_IMAGES">images/versioncompat/</folder>
         </param>
+        <param name="textversions" type="text" size="70" label="VMCUSTOM_VERSIONCOMPAT_TEXTVERSIONS" />
     </params>
 </extension>
\ No newline at end of file
diff --git a/versioncompat/images/ExtensionTypes/component.png b/versioncompat/images/ExtensionTypes/component.png
new file mode 100644
index 0000000000000000000000000000000000000000..87867a722b9ab5febe80ad321429865b1c16ab39
GIT binary patch
literal 667
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4mJh`2J2k+UknTkk|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+m~1^=978H@)dZi<z7intZ_}}|+wZo$R9YKw<yz3f
z3XMe(B7Xt}Z7T#s1NW?`__*r_d&NgR4Y|E5#aG9<9BkgdL99!OOD@d2)N^}m^mfnL
z+h+U5eVX&#Y`5CYtCc*H&1e2hdp6tU;@U&14Ca<Qj#;*!uU#3J@U-*yzg3?5)=Y}O
z$h#}!D$6~c4Vn%w@>cb|&-%Yo<m<xBIm@i(efDn%@#f0BWVAW)hFVTorquE<o9&6;
zd{6SQS#5XnUBPksyr^va^rDUDEHY%&n`Y&CCVSl0oBZjTPTgAlMZ33h-?rMmVE&ic
zmd(F+7Jk|GU194+=EE};HS)P9$1J#dOXlreRreqJ{xDl6NA(#Qnzz1N()PM~{lXpl
z8a|(2&n8kK)L~J$nxVu@gOgJsCC##bQtkuSf2LxmRV9tT{V3TRakWY#l;@F(iC^2Q
zt4|&uO5Zd8zeCC`K_l0%AC!*7mIZMq><eeFT<U*ib>+s=<BeC$TRnd!Sc=t6pI)#d
ze?N=l-96Gr!fg{btd{@YcYor0H#wQk1{Ib{r}XgW8;_lmm|v&Gtj{;!H7J)=d4ic~
zr?$1e$A9m?bKl(fDjBJ^w&=}COS!!DvAKuWI-9@B7Q6H20-Nf?X`8!(&+9pFf2Oop
zE4lyNhaYofSxS-~Xz+b|dwAYFL6K`+Gqmasz11)0Tp*wr)lu}|;YlqH+56w6!(N#F
zah~_b>*&hPQx?MeH(xujOJ3#pfx{;oXK*TMdb7;*5qjFl+9GHXBlqJ(7t>h=kInTg
b5)2uC`af-ddHx6k0|SGntDnm{r-UW|4-he8

literal 0
HcmV?d00001

diff --git a/versioncompat/images/ExtensionTypes/hack.png b/versioncompat/images/ExtensionTypes/hack.png
new file mode 100644
index 0000000000000000000000000000000000000000..a3ba7f5695210170b4876bd308d8949b7e3d0eab
GIT binary patch
literal 967
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4rT@h2A<8^PcSerNS3%plmzFem6RtIr7}3C
z<R_&nc;+Uirv{}arc@T5OtoQPU}gyL32`+xHl8_i=4N4G2Lpru|Ns9tHcm@RJ9Fkt
zudM8U28RDLXQrvC{SOFu`t)gieZ7y5&*sgWZ*p?}Z)o^0AaL{M&HwxNM@B|EI5_-2
zbLK2BZ*g&PPfyRMPoIjFmH(%uJ!510{{8#XrAz-SDD2<A-&a?+p`l@!nAm>@hnbR+
z|I^a`-@pHV=FI;aHhf}cZctE&)YSa{{{4Odf&cye{|gGfGceREC@_qI(GZ|n2qfFi
z_`<-z5bNpU7*cU7Wr8K&0R<kG?Gl=yOGKvp{BJJH@od9QrX>??vIQbI4qajTv)xDd
zz+S;Brb^+!uUnNXp1g8Ar)L|aq$Dt3Lnml=Y3bEZGV3)Ci`XQeN}Kq8&c5S6SR@!`
WSlQa%u2>KP@`b0XpUXO@geCyVua}nq

literal 0
HcmV?d00001

diff --git a/versioncompat/images/ExtensionTypes/index.html b/versioncompat/images/ExtensionTypes/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/versioncompat/images/ExtensionTypes/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/versioncompat/images/ExtensionTypes/language.png b/versioncompat/images/ExtensionTypes/language.png
new file mode 100644
index 0000000000000000000000000000000000000000..380e27a711cca19e1daf5df012b844f39d114f06
GIT binary patch
literal 488
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4mJh`2J2k+UknTkk|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+7`r@O978H@O_^-#ci2Iob^bx22||pl;SGmmP2Cqf
z6)V|tr*U4NaX=AcON)|*(n1jdSI>@~$rgRrUnhRkzjvh5$t}t@v;6sN^T(wQp5{y+
z7y?+dB2@y!{>SD{`5Ef4e{Q&6&lfe(Xoi-{We)bbw-#-h9<x^9=aM=@8-}v)3^NbU
z={D7CZSGm^TmJD0PlgQRUp0ewIVHkQKCjxdc4#eGF-Igg;S2AQ+G6zwpN|=CsDCj>
z=le?q<F=lLd(s9K=>b{M!QXd=p4ysRX0$H4)US)@N6n*YyW$oF>jiAuo$}(m%ayr2
z(RU7APfA_Oqc7=ngp1$FtWs>YSc!FTa4z2o9S2*ljD|}BdzUe;U|eQ<jm2WWnE>nb
z%&BX*6B!fc@Yt=nduY`x&rF3?yL{f*U7fTwOMTU;nn#CJb{&knGwbQ`$Ep|V;<DV+
zw#6r^pIiMuY0Yj0{z=EwcCPuxyvu&+tI4U?1jC}gU+tDX!TJB(AJZkZC70r&mU}bw
s%}`uyT{qKEC6`Sg?C9C~49pDekB=lt_SDugFfcH9y85}Sb4q9e0I<Hzg8%>k

literal 0
HcmV?d00001

diff --git a/versioncompat/images/ExtensionTypes/module.png b/versioncompat/images/ExtensionTypes/module.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f54d092d93cd42b7d5532783481e0bb9c5984dc
GIT binary patch
literal 601
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4mJh`2J2k+UknTkk|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+7=L@ZIEGZ*>IpvUb=X1R-zLx8)f|jp7bsN-p8v{P
z!w`R{oBx9Q2hJM7i;FLKz4SaXS?-9umYB%ij@-4^wt1G#y_sU(8CH^T<L2Bm=J)>`
z;k@-Wm!W#XC3g|WR>cqjh9x<#C%>P3e|MJ6IxEN3R~L5w?{D~1{pxkqru*M}4{J_+
zP$4H0=)9lbQsN22kv}$bT5_-C%~sjB{NBAB&ZA#TJ9b*OITY0PzIbyctt>n&;NGpK
ziTB>E`)W9OidL%OBRzfRAf{lai4L14ea)Ppld7ClCYDqs_3&}>oZMVpcA<Osm|B_c
zw6b#Oxo=MNoxx&m{_D#Mo0~5WC>kt}Ikw@ZkK+n;#i=${wyhT!c#eGGIq`F+-Eu9_
z9(}zB>(;&cz2c(BN|noj@84IdEt~V=CFjAXOVa}G+;GS&4z4%0u-G6`_Ql5Zbc?@c
z@`QGFo^Ri`+HT&=T%O6f`0?W%`D`kiot5_NcCM)J-*C0**N+Zsf01^PBS8!HZK%2S
zdgn3a%`Hy*_9!S#-7DvM+-JwZPhUmnx3?P_&${s8#S8VxDU0SUJHo5VyKbGy1SN*L
z=aY^+Qfk{8CF8K~;z>@$6(#FE=05jweaXG~!PI|8uazekD?NT3Y9Lw1;KOBRwmN8=
zNq<JE=8gZ|om-6$c9yVSjl1e_zpnhZ^o&5G6D$muUQK6UW)OI!RFt1QH<y8dfx*+&
K&t;ucLK6VFITVus

literal 0
HcmV?d00001

diff --git a/versioncompat/images/ExtensionTypes/plugin.png b/versioncompat/images/ExtensionTypes/plugin.png
new file mode 100644
index 0000000000000000000000000000000000000000..bfdfd16f4529be7a46db6f330911c626a2796d6d
GIT binary patch
literal 538
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4mJh`2J2k+UknTkk|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+825O(IEGZ*S~JmGpE*$E`2XNwA<<h`qLo~3Y?$Qn
zgXxiWNAJ?y>)XDWiPf-4bBlG%Rp^NDm?-jfo%`jBiMP%@j(dJj@~Yo%fjLi}oSSp}
z{h#+cy<Vx=^CrwIZaH~SlD+tZ<cYhJr~k9QUub2zs#lZ$WKEmY;ias5yqLc?-gVp*
z7OXqD^)KteC{{<)2dk2}TAWTl(RfiNdEhtS>afP0lfBf+zg<zj62ZJ*a#!<@eSQvM
z%YsCO_mv&E`CZfJ{EZWnxK$@kTfp+2@7m)OfBn1MU0(aj6dd)Kqi!Ahx>K=Sr2c$j
z%_i=P-=fy&tX;fzw<NExA`cILh1VbNFB(n@Cz@{DU)i<$2(#m|ls_L|aenWNJ{4_o
z<Hp($CG&ThoTh9?mKvBy9X)fWqenI`cG_Fd^DhE?gC5n(D#k|?yUY5%*EfrqzjUL;
z?$C`NHeDCwlA9d)g_lh*GxyNBTfE!C^)>Pz|2^wqG;dP)iUyhd{eg#;J=b=q{^_7N
z{rC+R7q!cp%+KA=7p&MARV-LkKXWqc8N-vZe~w+rI=H)quW<YIE63j}p5{)UXZ6~B
w0>i(9EH1y5os~KI|1vId3{0BO#KZ7Ryyf%X{Xv%)7#J8lUHx3vIVCg!05i$(J^%m!

literal 0
HcmV?d00001

diff --git a/versioncompat/images/ExtensionTypes/specific.png b/versioncompat/images/ExtensionTypes/specific.png
new file mode 100644
index 0000000000000000000000000000000000000000..64bfc8b07b25cb91998b8e1849262bdf5821f2dd
GIT binary patch
literal 669
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4mJh`2J2k+UknTkk|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+nCv}W978H@l}z!?zw98;7Oy^=KRmPWbhzq@E{#RD
z4J`uVEaECG>_=L)#n;JvX8yrA$KuddA@LodP97m1djtHYatJ9*S>>9g=;=J0|G4Lz
z8~0Mn-ddFT9N(0-cV6Y6b7xN7+7MjH^ng`?N73SdEyqJwoA9^`#*_A`?ufq9_N*?r
zAn%A!^8yQ>Umx9-Hi$i5mwV*pABh7S3z`d$e~bU;USwt89+K8IjqlDs#XWV#Y|@o#
zG1iO|I)B}K?O`aJ9Nl*LCv*1uV4bjML6(1Als7LA6FKlQB+>j-maS<$@64CQ7b5uH
z&d*NR6|z#fIw{cUjmz1YhxYs`d%u9?`l^NDznMN?cbAwhe@MFQVF~|(h)|AQL0|JX
z&8b_o(8Mq$T`VACNAJ7$z6ProHEa@*WS^<m67@NeJ?imqX+z7oCHD?|X|+D(e)dkR
zd+lpc)mb9ye<n`8&gZ@Q(0smdhW01?vvwC$*H5%BX0^K8`q_Nq?ARcM?0Vs;z3EGi
zvY(K-wmMIfp}gt?Tdu*%M~`B6+_gG0mw%PKdwjUz?oS-c^KF(2<+J`3R_x%tRlU*5
zbk>oRtNT4SvHo7s<Cq-1_cPnFAf>6R{;@8-5OUy8kPF8o&u8bX(x$yj{CLniD9Fhw
z+9B`Vq^2#~@Apq-Q80Vuy2Eq9t>@3PT7q`j$Y087GOyp`y8Dk_SeMD#Kfm_fa&n1V
zp(7>prgfv>WUr_#nLlhLn->)wPgpp`FGAbZR@3Xki=H3PTiHwd|Eb!%xvA3d?vXts
b8$<thTkDBDFC-Zl7#KWV{an^LB{Ts5!qh0U

literal 0
HcmV?d00001

diff --git a/versioncompat/images/ExtensionTypes/template.png b/versioncompat/images/ExtensionTypes/template.png
new file mode 100644
index 0000000000000000000000000000000000000000..85f36fad1518296d7182b515d17b5a354c4c1baa
GIT binary patch
literal 542
zcmeAS@N?(olHy`uVBq!ia0y~yU=Rdh4mJh`2J2k+UknTkk|nMYCBgY=CFO}lsSJ)O
z`AMk?p1FzXsX?iUDV2pMQ*9U+7!P>5IEGZ*Y6(8*cgR7Yc4`uXs>u-vKDS=;#}|(*
zwtwLNgYy$>U6cKTyOZS?u<Oh9h<6&Q&0681bWq`f5^K<c-S2X?dvk}H&-6=A`~B?f
z>ve&--}xEm6dZUo=WsfMvVM=@CoQq}j&fT5hB6cNrPu3T7i*ll<7K?S%`1j`IXAoL
zZR)ghOPT!UhxiItg^f;DsS1<*PFk4gIWkC1|91OuVb4saz`I8lPdT5odB)-V*QdW0
ze7$t-49AHtM*?PTsxY}LcueO-+?k~tH*M+ocj9>PWl>Xp)9Q}RyRFQ+B1Mcc->ef&
zh_N&O`R9(~p1r$z<_5|2&$pGCbMKT)u<5!Q#q3pub%FCFF1)G~K5NFpxiyRPS+K9t
zsmY<QVsA7Xe!I5TA%cl<3g02+AKfuoi&}XnWPY1nE`9YJgZuC3Nu4Va7QG5oTWEe>
zUP`EUm)SmBo@4vimh54<_&mePjc3WHi&vG-mNzCb)yk%|PF1MWv1D%2^s+GG-m2)P
zb0hg!<}t@Cr|GY^^SzUf{mUNdQe&#ybLk^%zgXHzwYj`vb!){83txz-mwGZi{A_+O
yQegA6R?B_64(_umnH;gEL71UsYCVetgV&|0b?vg%(-{~T7(8A5T-G@yGywqR0Ot<?

literal 0
HcmV?d00001

diff --git a/versioncompat/images/Joomla/index.html b/versioncompat/images/Joomla/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/versioncompat/images/Joomla/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/versioncompat/images/VirtueMart/index.html b/versioncompat/images/VirtueMart/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/versioncompat/images/VirtueMart/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/versioncompat/images/VirtueMart/vm1.0.png b/versioncompat/images/VirtueMart/vm1.0.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9a19d223daa1c341fd13621ebab663839def8c0
GIT binary patch
literal 877
zcmeAS@N?(olHy`uVBq!ia0y~yU<hDfVBqIqVqjqSv-<uG1_ovmPZ!4!kItuIu^z#R
z5_S7G8w<ZZBsuHW)GB4G?iY(hm&Q(6*ZtF2)^}C+yD1!zFBTZMeM#POaFUc~tV_g{
zS%M{-mr6tki3#;xI8wLm$b2)^<;BI;*6Fb|zuuO7dpu#LBmd*upY85{wtZfGzMN0`
z(#w($_Kj=|y>6SY-u~fjAk}M<Ha&|!_ifmt<5Sb~&(E>j+Stl(CC6x&$P@YRTuW}&
z=fH@74I5iSSUg=mb4q?}_n8><pg--IaHE{H{l<<7E6iqEON*{K-+i)k+w_VfoA3IX
z_S{}-HnY%^=ZHLy!Jo*WGV`k|cx+V~g)X{0XK#DH*)G3_t?2Wo?5kOSzh=AatP1Y;
z?A~U1NB&_8W5SJRDVBV~Mz8$jE{B~8X_Hg&tE&p*V-OEr+Pv7TF+SJGet*F7wNo;+
zQ=1o?Z9RGCZpdQGec`DuURtd`!qPdplXtq|r@|r=ja91!Th;c}sNUU{F?*^gS88ih
z$+_dNIM3J0&o1c|E-k!f_q2fVz@FMUJ=5jCGaXpFY0mfiGC`b74fBPs+1%>ooqRd(
zQOGvCKqiKUhaOf8Gk*Wtc=pnNsmc4yn@eq^^%g(%|7_M~nEC(U&%ZOw&92<vS$;on
z^G}=85gQ}o-kv(g^}OEXO#8ottlt-m7`9A(T5;FgW&Qp6ckN6*-xSsHa#m{D(6RsM
z?Ma%a+~+*!dtNn7jG;j%esenqUrb!g3yII`X3I;9i2k(f?cm@oW@HmyeK>lG*e->~
z(V0`1ZsD)|vh?Mg>%Juid3O~mJpE?PKktyb3~x{VQU%iud3AFt61Rn%JiYqKQ+YSH
z4MD2<{M!}h`YpehA@%L;jmdJm{6%!P{d*MAHqmQB#GEe|AKsojF{Sj^QX!Q^N0t5T
zFD?~QapG|Kvb<H{w1I18$FeYQh6Kqr9hExAgqWW;SH4^IPn+^VKBVulO!4Q)nUcZA
zn<M7Wnt3$1=Jw%p>n_OiGwxsr-eJqppwY5}Ay~(;gIB~`pjBXv;F{nH^PGksm8uLa
zVnX{B4A%Xbu|Pvh+qn7uya#)qD!<~F{qHqHSal9Z#THG*&e*neHI~)9_hsk#SA2Q4
qFh3#TaCRnxfmCnj?KAuP?w^{pXT89cd65hZ3=E#GelF{r5}E+%0hFHr

literal 0
HcmV?d00001

diff --git a/versioncompat/images/VirtueMart/vm1.1.png b/versioncompat/images/VirtueMart/vm1.1.png
new file mode 100644
index 0000000000000000000000000000000000000000..a740d7837e01b3da518b44458da9ad379cb025b0
GIT binary patch
literal 797
zcmeAS@N?(olHy`uVBq!ia0y~yU<hDfVBqIqVqjqSv-<uG1_q`lo-U3d9-U7^Vm*Qr
zCF;&?pIKribMbsyT&DS@*w3e|Ih6|Sb0l&+v;<vZTR2LS#aGXcWp#d$CFp3sAmqp7
zwrM>^OJ?6_RSC-4X`<G3%WV6NbN#V3zus1SE54%BDrdLP_WW<#`-gweJ1qJ9^Un|V
zj{FPu?ycQ_`-eLR3scppU(qqYZ=dRWP;;ev<<Ccc`L;EGSibNEn}mhGO%1LWW@30y
zQu<Zz-K0OMbMv?ptz+MGcuw6vA<{GC>!Y95?SGg*|65SAVv69l%UjP$zZ8r;Ghy$F
z%bNZ(W1jb(Vo8maoH2X7rCaLNm9u5Hb9ugPWaRO2b%|Wo@>XB3de<Ja=Jm#l^*u{t
z7(c8zde_))<)_d85-!y*KArvg)2*sw>Xr2dmCN5|KDKOLZ(R1<N>#F!b8}#%%6v8P
z#=~!)ahRLhP7c@F_>uSY#PvaGu9XLL-IltDG}xG*{&tN0E<;__t6z5Y#j|{E6wcIS
z8VF@g2zx%`@`b|d+zb(=*O^{a+Xm&UFtFWk(Ww0Tt#<Mux739-?=E+3+4_FxiE_)y
ziJRWux>|kk_r#kwOSEQcf96@^bSUsKXDj0o+ft{Z-mAOMN7*j?@FD0<p5A5QJ~2)U
zhFzC}Qg3|zb<0PI&%tBeR;?T_CuZZ16`zl1o~`i}aOygdWBWfhaLIn=&)#LllG@%c
zzifKjqb~BSqWO}a{Dp}J4Qd@$o4syb$nTph?3*ln?$l)0T~jW-Y+KxJ`gwc*y@d}S
zwf)JLa5xlrS-SV+B8Q%3EsNXw6jiQwTol<H9e+;W`mA)Rgs;HS8Fz2(7ntsPFi-FD
zX`!hMDS-vI)?7LEXO+X-8r?r$OQZJ6F|7Ob*?tkX=u<JRasvaGi<Ld>4i<ciUTm7t
zp|ev*?NH$aGtRZeG7L(dk^7yPPQ<0ug+4I*Wa`MVagGJwf<<>0O}Q;svAI+=eQM02
zN3DG!OLm+&`=>aE=S`LQx{t@}4;UC(?b_X4#n9-G;6K~)!VliM(536=RoqQtU|?YI
MboFyt=akR{0Ah%KdH?_b

literal 0
HcmV?d00001

diff --git a/versioncompat/images/VirtueMart/vm2.0.png b/versioncompat/images/VirtueMart/vm2.0.png
new file mode 100644
index 0000000000000000000000000000000000000000..531e5405b647b1111703754ba96505f9916c5440
GIT binary patch
literal 924
zcmeAS@N?(olHy`uVBq!ia0y~yU<hDfVBqIqVqjqSv-<uG1_tJ2PZ!4!kItu|-u@zy
z61LyNSc7}5r+Rca-sask(f&b~MTvm5>WW@|m9_@`NfZ4_#1^f%7}<03ONPO^j!ym-
zjZXpUm$TA(I<;>KBp*AGoi>9n>(S!OUAepRrs~=4xGNHS_sI5-I(g^5-~BxIpI@lz
z*;%t^f3$UEy>R2kkEPdt_;9c=X&IiscTa!!DVdMQCExeG%6)HM{qB(K1!*-M&2@h)
zylbN*7{bIv_kQ0qYuQo7H7XO;9pg@3TDJY}si0W_##`T;Ow#h>b`9*9v23QT_TLw8
z!e-y!`geQhjt4I1-p}?|zk6+)i*n($XXSyKtU>xZ^QyE@-<p<@?Yyoez%s@DYQeVp
zm;#FjA3h3C`T2aYd(y=fZ{+_!RhhVq`FF1J%e_whc@fJLl>Gl5KR0RDw`*;8Wai!Y
zl+ELCbDlPHZLC@C?E71P=WJQBZts$HwF}m-KKp)EZs)pnJFncDu={bz3=ckk56P*L
ze@<HJ_L<7w3440`)$K3AmlZ=pQ*SL}{;j>|wbq{3DMg){7Z1!3y)-G_^@Xamq!A;J
z{njTpYgY+5eB5{azx|tw)2bM+-(TDo5#q*_sQNX%{5ex7L)e>I)(7Vk`Xin&7JUEa
ztMvW<FWG;(L2gSY*Jn&%JbBmc|KIaoD$BNoU+tS0=Nh=mJh$f06VJLhx#uzt1{JFn
z>J2l4EHBkvI$iGCW>w43C4F4k(D_@pmbF~@uSbg=*KU~e@ulN2#xth_XG|)I*!uI;
z4;Ll}l{5y^AhTu$*Qv4(JC8(cuv)!e*s7}Pb@n#?-X5Q0>Z!NRcnIH^Q8(-1LFuT(
zop1cre9G^3KlHobWvjpV<nx4jhj+ii4^KD0Ai6hE-AB!5>jItC^=uklm#RJreO&dm
zsycl8JI$-MOZk8OUb(W`D_1#_DY)&1$96@X-j7drD~Tuz8Jl$PE^j-|zCPP~@0IHe
zhg+)Cf1I`7+qPlLp`wprONAN~b;|cnPYJR=T)_8Fa>K%!+>AGxg^DfT+f9?t&l7*5
zf6aF3run~Yt=Y_cR(S8xIv`>0lX1G_<FxG4CC7GbaA^6}Q^;`WQINiO(e&n^eB(LY
z`-NKsD!Ii^Ofpn^e6uKxv*+d2;GJ*IsF}ShNmZVC`sO^o>P>5Ah4`?_?OMhx`Ty~L
ssXIH%-#Z@*WoUGGpsf3u_krvcoiEFp4u17zU|?YIboFyt=akR{08*92M*si-

literal 0
HcmV?d00001

diff --git a/versioncompat/images/VirtueMart/vm3.0.png b/versioncompat/images/VirtueMart/vm3.0.png
new file mode 100644
index 0000000000000000000000000000000000000000..ca5a73f0268842ce1c0d34189f49cd627dad8ce1
GIT binary patch
literal 836
zcmeAS@N?(olHy`uVBq!ia0y~yU<hDfVBqIqVqjqSv-<uG1_lPUByV>YhW{YAVDIwD
z3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfJq`hGS+gBncaJhKFkSR?aSZV|{xtl&
zw@9Ky-M&KOXZ#;T7Tr@RJN$Lg!W9>mI;-=0JyP1$er82T*x4>KC&h>Y!Px73ny1|s
zw4ZaGxWDtjovWr?SJwD&H7!tyF5frz<%eh2Enc7Ly6IRGX*chC?fmyMYxkA6-A#;J
zFYd0H!w?k})z=Zd|9-x5$+qv87XCQazn<+??AG76t!3&yq#qKwna;&`dV$}w=kKf6
zZ@C?-_p&kKrE-*#>4&o?suEU2zn1@FoYS%3Zf#|vg<c_3?ebTdOY^dI_8ffVxO;Yx
zqd<+`%3td|qLUxWwR>yaQ0UwhXAo+ySIEtrYo5pSp|pId?kqov1HZ0hPgUpa*!u3?
z+EWe7k3T#WvZTBFJL4SrH!)JPO+Pf3ecyWH@TrF7Mh_yTX7k><yLRJ;o%^(H`NE4$
zToi&Qvh)UV*9Mt!$CpoEzq?z8Yx_#q$1T&hoPX{4bA95s+|XFY4}QOuu3c!gW;msM
z&tKSZr;hjm>3zq%H+38c4K;XgmGxi+V}MP$?19gn>VHba8a}>U&XSgP>_G{))Y7zH
zuX7}=PG`&8t?F#K=bVwUW!)~X_{f+D1BTU{;^)fu<Vbai{5rLGyZMi0E5vzC7&`Vx
zO!h90IQGr0lhHyiRnECBVH&TQ*q7^KU#{29ty#VNErY{F2j{x{t8rh}E?&1w%fx8c
z|MZBPcIV$;K3$aAw<3Qf=kqn{mrO$btop1j@|W?fDKFy!=Av_3U8UGpx(b_h>zXEN
zTTTqSZ*@Y;cZQqpAL(OxSu<>M`qpbnO;-)GxbJ9Y_G6jO%5xdN`&Xv!)S3RuXo14Z
zo^AhURjkj5(L4K4QfeuKNU!xpH<N?+HD|=xzpV)VxGrohkG99HQ=4-cl6@S5)}46l
zGg<qSM6!$)<0|803<b-$_IY^5=7`iZKZyJC|NVKP)_-0tuBxIE8zN6LthpR=w%KIQ
ur9Uq={5e}?X8Ch{+uyqX7b~NG@owth)Oy=7_6h?71B0ilpUXO@geCwBPJtr;

literal 0
HcmV?d00001

diff --git a/versioncompat/images/index.html b/versioncompat/images/index.html
new file mode 100644
index 0000000..0e44bd0
--- /dev/null
+++ b/versioncompat/images/index.html
@@ -0,0 +1,4 @@
+<html>
+<body bgcolor="#FFFFFF">
+</body>
+</html>
\ No newline at end of file
diff --git a/versioncompat/tmpl/default.php b/versioncompat/tmpl/default.php
index c559415..ce24d65 100644
--- a/versioncompat/tmpl/default.php
+++ b/versioncompat/tmpl/default.php
@@ -1,21 +1,54 @@
-<?php 
+<?php
 /*------------------------------------------------------------------------
-# joocompatibility - Custom field for Virtuemart
+# versioncompat - Custom field for Virtuemart
 # ------------------------------------------------------------------------
-# author    Jeremy Magne
+# author    Reinhold Kainhofer, Jeremy Magne
+# copyright Copyright (C) 2014 OpenTools.net. All Rights Reserved.
 # copyright Copyright (C) 2010 Daycounts.com. All Rights Reserved.
-# Websites: http://www.daycounts.com
-# Technical Support: http://www.daycounts.com/en/contact/
 # @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 -------------------------------------------------------------------------*/
-defined('_JEXEC') or 	die(); 
+defined('_JEXEC') or 	die();
 // Here the plugin values
-//JHTML::_('behavior.tooltip');
+
+$path = $viewData[0];
+$compatibility = $viewData[1];
+$versions = $viewData[2];
+$cssclass = 'versioncompat-'.strtolower(basename($path));
+
+static $versioncompat_css_included;
+if (!$versioncompat_css_included) {
+    $css =
+"ul.versioncompat {
+    list-style: none;
+    margin-left: 0;
+}
+.versioncompat li {
+    float: left;
+    margin-left: 0;
+    margin-right: 0px;
+}
+.versioncompat-versions {
+    margin-left: 5px;
+}
+";
+    $document = JFactory::getDocument();
+    $document->addStyleDeclaration($css);
+    $versioncompat_css_included = true;
+}
+
+//  style="list-style:none; margin-left:0;"
+//  style="float:left; margin-left:0; margin-right:10px;"
+if (count($compatibility)>0) {
 ?>
-<ul class="joocompatibility" style="list-style:none; margin-left:0;">
+<ul class="versioncompat <?php echo $cssclass; ?>">
 <?php
-	foreach ($this->params->selectedOptions as $compat) {
-		echo '<li style="float:left; margin-left:0; margin-right:10px;">'.JHTML::image(JURI::root() . $this->params->path.$compat, JText::_(basename($compat,'.png'))).'</li>';
+	foreach ($compatibility as $compat) {
+		echo '<li>'.JHTML::image(JURI::root() . $path . DS . $compat, JText::_(basename($compat,'.png'))).'</li>';
 	}
 ?>
-</ul> 
+</ul>
+<?php
+}
+if (count($versions)>0) {
+    echo "<span class=\"versioncompat-versions\">".join(", ", $versions)."</span>";
+}
diff --git a/versioncompat/tmpl/search.php b/versioncompat/tmpl/search.php
index 6ab9de4..e69de29 100644
--- a/versioncompat/tmpl/search.php
+++ b/versioncompat/tmpl/search.php
@@ -1,27 +0,0 @@
-<?php 
-/*------------------------------------------------------------------------
-# joocompatibility - Custom field for Virtuemart
-# ------------------------------------------------------------------------
-# author    Jeremy Magne
-# copyright Copyright (C) 2010 Daycounts.com. All Rights Reserved.
-# Websites: http://www.daycounts.com
-# Technical Support: http://www.daycounts.com/en/contact/
-# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
--------------------------------------------------------------------------*/
-defined('_JEXEC') or 	die(); 
-// Here the plugin values
-?>
-<?php
-	echo $this->params->custom_title.'&nbsp;:&nbsp;';
-	foreach ($this->params->images as $image) { 
-		if (in_array($image,$this->params->searched)) {
-			$checked = 'checked="checked"';
-		} else {
-			$checked = '';
-		}
-	?>
-    	<label><input type="checkbox" value="<?php echo $image ?>" name="joocompatibility[]" <?php echo $checked; ?>><?php echo JHTML::image(JURI::root() . $this->params->path.$image, basename($image,'.png')); ?></label>
-        <?php
-	}
-?>
-<br />
-- 
GitLab