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.' : '; - 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