Spade
Mini Shell
index.html000064400000000054151165245660006553 0ustar00<html><body
bgcolor="#FFFFFF"></body></html>mod_phocacart_product.php000064400000006074151165245660011642
0ustar00<?php
/* @package Joomla
* @copyright Copyright (C) Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* @extension Phoca Extension
* @copyright Copyright (C) Jan Pavelka www.phoca.cz
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
defined('_JEXEC') or die;// no direct access
if (!JComponentHelper::isEnabled('com_phocacart', true)) {
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('Phoca Cart Error'),
JText::_('Phoca Cart is not installed on your system'),
'error');
return;
}
JLoader::registerPrefix('Phocacart', JPATH_ADMINISTRATOR .
'/components/com_phocacart/libraries/phocacart');
$p = array();
$p['load_component_media'] = $params->get(
'load_component_media', 1 );
$p['item_ordering'] = $params->get(
'item_ordering', 1 );
$p['item_limit'] = $params->get( 'item_limit', 1
);
$p['hide_price'] = $params->get( 'hide_price', 0
);
$p['display_view_product_button'] = $params->get(
'display_view_product_button', 1 );
$p['catid_multiple'] = $params->get(
'catid_multiple', array() );
$p['featured_only'] = $params->get(
'featured_only', 0 );
//$p['stock_checking'] = $params->get(
'stock_checking', 0 );// in module display all products
$p['display_product_description'] = $params->get(
'display_product_description', 0 );
$p['module_description'] = $params->get(
'module_description', '' );
$lang = JFactory::getLanguage();
//$lang->load('com_phocacart.sys');
$lang->load('com_phocacart');
$s = PhocacartRenderStyle::getStyles();
if ($p['load_component_media'] == 1) {
$media = PhocacartRenderMedia::getInstance('main');
$media->loadBase();
$media->loadBootstrap();
$media->loadSpec();
}
$rights = new PhocacartAccessRights();
$p['can_display_price'] = $rights->canDisplayPrice();
if ($p['hide_price'] == 1) {
$p['can_display_price'] = false;// override the component
rights
}
$moduleclass_sfx =
htmlspecialchars($params->get('moduleclass_sfx'), ENT_COMPAT,
'UTF-8');
$pCom = PhocacartUtils::getComponentParameters();
$pc['display_star_rating'] = $pCom->get(
'display_star_rating', 0 );
$t['switch_image_category_items'] = $pCom->get(
'switch_image_category_items', 0 );
$t['image_width_cat'] = $pCom->get(
'image_width_cat', '' );
$t['image_height_cat'] = $pCom->get(
'image_height_cat', '' );
$t['lazy_load_category_items'] = $pCom->get(
'lazy_load_category_items', 0 );
$t['medium_image_width'] = $pCom->get(
'medium_image_width', 300 );
$t['medium_image_height'] = $pCom->get(
'medium_image_height', 200 );
$t['display_webp_images'] = $pCom->get(
'display_webp_images', 0 );
// TO DO - the following function can check publish, stock, price - this
can be added to the parameters
$products = PhocacartProduct::getProducts(0, $p['item_limit'],
$p['item_ordering'], 0, true, false, false, 0,
$p['catid_multiple'], $p['featured_only'], array(0,1),
'', '', true);
$t['pathitem'] =
PhocacartPath::getPath('productimage');
require(JModuleHelper::getLayoutPath('mod_phocacart_product',
$params->get('layout', 'default')));
?>
mod_phocacart_product.xml000064400000013307151165245660011650
0ustar00<?xml version="1.0" encoding="utf-8"?>
<extension type="module" client="site"
method="upgrade" version="3.9">
<name>mod_phocacart_product</name>
<author>Jan Pavelka (www.phoca.cz)</author>
<creationDate>04/12/2021</creationDate>
<authorEmail></authorEmail>
<authorUrl>https://www.phoca.cz</authorUrl>
<copyright>Jan Pavelka</copyright>
<license>GNU/GPL</license>
<version>3.5.8</version>
<description>MOD_PHOCACART_PRODUCT_DESCRIPTION</description>
<projectName>PhocaCartProductModule</projectName>
<files>
<folder>tmpl</folder>
<filename
module="mod_phocacart_product">index.html</filename>
<filename
module="mod_phocacart_product">mod_phocacart_product.php</filename>
</files>
<languages>
<language
tag="en-GB">language/en-GB/en-GB.mod_phocacart_product.ini</language>
<language
tag="en-GB">language/en-GB/en-GB.mod_phocacart_product.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="basic"
addfieldpath="/administrator/components/com_phocacart/models/fields">
<field name="catid_multiple"
type="phocacartcategory"
label="COM_PHOCACART_FIELD_CATEGORY_LABEL"
description="COM_PHOCACART_FIELD_CATEGORY_DESC"
class="inputbox" multiple="true"/>
<field name="item_ordering" type="list"
default="1"
label="MOD_PHOCACART_PRODUCT_FIELD_PRODUCT_ORDERING_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_PRODUCT_ORDERING_DESC">
<option
value="1">MOD_PHOCACART_PRODUCT_ORDERING_ASC</option>
<option
value="2">MOD_PHOCACART_PRODUCT_ORDERING_DESC</option>
<option
value="3">MOD_PHOCACART_PRODUCT_TITLE_ASC</option>
<option
value="4">MOD_PHOCACART_PRODUCT_TITLE_DESC</option>
<option
value="5">MOD_PHOCACART_PRODUCT_PRICE_ASC</option>
<option
value="6">MOD_PHOCACART_PRODUCT_PRICE_DESC</option>
<option
value="7">MOD_PHOCACART_PRODUCT_DATE_ASC</option>
<option
value="8">MOD_PHOCACART_PRODUCT_DATE_DESC</option>
<option
value="9">MOD_PHOCACART_PRODUCT_RATING_ASC</option>
<option
value="10">MOD_PHOCACART_PRODUCT_RATING_DESC</option>
<option
value="13">MOD_PHOCACART_PRODUCT_BEST_SELLING_PRODUCTS_ASC</option>
<option
value="14">MOD_PHOCACART_PRODUCT_BEST_SELLING_PRODUCTS_DESC</option>
<option
value="15">MOD_PHOCACART_PRODUCT_MOST_VIEWED_PRODUCTS_ASC</option>
<option
value="16">MOD_PHOCACART_PRODUCT_MOST_VIEWED_PRODUCTS_DESC</option>
<option
value="17">MOD_PHOCACART_PRODUCT_ADDITIONAL_HITS_ASC</option>
<option
value="18">MOD_PHOCACART_PRODUCT_ADDITIONAL_HITS_DESC</option>
</field>
<field name="featured_only" default="0"
type="radio" class="btn-group btn-group-yesno"
label="MOD_PHOCACART_PRODUCT_FIELD_FEATURED_ONLY_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_FEATURED_ONLY_DESC">
<option value="0">MOD_PHOCACART_PRODUCT_NO</option>
<option value="1">MOD_PHOCACART_PRODUCT_YES</option>
</field>
<field name="item_limit" default="1"
size="10" type="text"
label="MOD_PHOCACART_PRODUCT_FIELD_PRODUCT_LIMIT_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_PRODUCT_LIMIT_DESC"/>
<field name="hide_price" default="0"
type="radio" class="btn-group btn-group-yesno"
label="MOD_PHOCACART_PRODUCT_FIELD_HIDE_PRICES_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_HIDE_PRICES_DESC">
<option value="0">MOD_PHOCACART_PRODUCT_NO</option>
<option value="1">MOD_PHOCACART_PRODUCT_YES</option>
</field>
<field name="display_view_product_button"
type="radio" class="btn-group btn-group-yesno"
default="1"
label="MOD_PHOCACART_PRODUCT_FIELD_DISPLAY_VIEW_PRODUCT_BUTTON_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_DISPLAY_VIEW_PRODUCT_BUTTON_DESC">
<option value="1">MOD_PHOCACART_PRODUCT_YES</option>
<option value="0">MOD_PHOCACART_PRODUCT_NO</option>
<option
value="2">MOD_PHOCACART_PRODUCT_YES_ICON_ONLY</option>
</field>
<field name="display_product_description"
default="0" type="radio" class="btn-group
btn-group-yesno"
label="MOD_PHOCACART_PRODUCT_FIELD_DISPLAY_PRODUCT_DESCRIPTION_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_DISPLAY_PRODUCT_DESCRIPTION_DESC">
<option value="0">MOD_PHOCACART_PRODUCT_NO</option>
<option value="1">MOD_PHOCACART_PRODUCT_YES</option>
</field>
<field name="module_description" type="editor"
buttons="true" hide="pagebreak,readmore"
class="inputbox"
label="MOD_PHOCACART_PRODUCT_FIELD_MODULE_DESCRIPTION_LABEL"
filter="safehtml"
description="MOD_PHOCACART_PRODUCT_FIELD_MODULE_DESCRIPTION_DESC"/>
<field name="load_component_media" type="radio"
class="btn-group btn-group-yesno" default="1"
label="MOD_PHOCACART_PRODUCT_FIELD_LOAD_COMPONENT_MEDIA_LABEL"
description="MOD_PHOCACART_PRODUCT_FIELD_LOAD_COMPONENT_MEDIA_DESC">
<option value="1">MOD_PHOCACART_PRODUCT_YES</option>
<option value="0">MOD_PHOCACART_PRODUCT_NO</option>
</field>
</fieldset>
<fieldset name="advanced">
<field name="layout" type="modulelayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_MODULE_LAYOUT_DESC"/>
<field name="moduleclass_sfx" type="textarea"
label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL"
description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC"
rows="3"/>
<field name="cache" type="list"
label="COM_MODULES_FIELD_CACHING_LABEL"
description="COM_MODULES_FIELD_CACHING_DESC"
default="1" filter="integer">
<option value="1">JGLOBAL_USE_GLOBAL</option>
<option
value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
</field>
<field name="cache_time" type="number"
label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
description="COM_MODULES_FIELD_CACHE_TIME_DESC"
default="900" filter="integer"/>
<field name="cachemode" type="hidden"
default="static">
<option value="static"/>
</field>
</fieldset>
</fields>
</config>
<updateservers>
<server type="extension"
name="MOD_PHOCACART_PRODUCT"
priority="1"><![CDATA[https://raw.githubusercontent.com/PhocaCz/PhocaCartProductModule/master/manifest.xml]]></server>
</updateservers>
</extension>
tmpl/default.php000064400000011553151165245660007675 0ustar00<?php
/* @package Joomla
* @copyright Copyright (C) Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* @extension Phoca Extension
* @copyright Copyright (C) Jan Pavelka www.phoca.cz
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
defined('_JEXEC') or die;
$layoutV = new JLayoutFile('button_product_view', null,
array('component' => 'com_phocacart'));
$layoutP = new JLayoutFile('product_price', null,
array('component' => 'com_phocacart'));
$layoutR = new JLayoutFile('product_rating', null,
array('component' => 'com_phocacart'));
$layoutI = new JLayoutFile('product_image', null,
array('component' => 'com_phocacart'));
echo '<div class="ph-product-module-box
'.$moduleclass_sfx .'">';
if ($p['module_description'] != '') {
echo '<div
class="ph-mod-desc">'.$p['module_description'].'</div>';
}
if (!empty($products)) {
foreach ($products as $k => $v) {
echo '<div class="ph-item-box">';
echo '<div
class="'.$s['c']['thumbnail'].'
ph-thumbnail">';
//$image = PhocacartImage::getThumbnailName($t['pathitem'],
$v->image, 'medium');
if (!isset($v->additional_image)) { $v->additional_image =
'';}
$lt = '';
$attributesOptions = array();
$image = PhocacartImage::getImageDisplay($v->image,
$v->additional_image, $t['pathitem'],
$t['switch_image_category_items'],
$t['image_width_cat'], $t['image_height_cat'],
'', $lt, $attributesOptions);
$link = JRoute::_(PhocacartRoute::getItemRoute($v->id, $v->catid,
$v->alias, $v->catalias));
/*echo '<a href="'.$link.'">';
if (isset($image->rel) && $image->rel != '') {
echo '<img
src="'.JURI::base(true).'/'.$image->rel.'"
alt=""
class="'.$s['c']['img-responsive'].'
ph-image"';
echo ' />';
}
echo '</a>';*/
$dI = array();
if (isset($image['image']->rel) &&
$image['image']->rel != '') {
$dI['t'] = $t;
$dI['s'] = $s;
$dI['product_id'] = (int)$v->id;
$dI['layouttype'] = $lt;
$dI['title'] = $v->title;
$dI['image'] = $image;
$dI['typeview'] = 'Category';
}
// :L: IMAGE
echo '<a href="'.$link.'">';
if (!empty($dI)) { echo $layoutI->render($dI);}
echo '</a>';
// CAPTION, DESCRIPTION
echo '<div
class="'.$s['c']['caption'].'
">';
echo '<h3>'.$v->title.'</h3>';
// REVIEW - STAR RATING
if ((int)$pc['display_star_rating'] > 0) {
$d = array();
$d['s'] = $s;
$d['rating'] = isset($v->rating) &&
(int)$v->rating > 0 ? (int)$v->rating : 0;
$d['size'] = 16;
$d['display_star_rating'] =
(int)$pc['display_star_rating'];
echo $layoutR->render($d);
}
// Description box will be displayed even no description is set - to set
height and have all columns same height
echo '<div class="ph-item-desc">';
if ($v->description != '' &&
(int)$p['display_product_description'] > 0) {
echo $v->description;
}
echo '</div>';// end desc
// :L: PRICE
if ($p['can_display_price']) {
$price = new PhocacartPrice;
$d = array();
$d['s'] = $s;
$d['type'] = $v->type;// PRODUCTTYPE
$d['priceitems'] = $price->getPriceItems($v->price,
$v->taxid, $v->taxrate, $v->taxcalculationtype, $v->taxtitle,
$v->unit_amount, $v->unit_unit, 1, 1, $v->group_price);
$d['priceitemsorig']= array();
if ($v->price_original != '' &&
$v->price_original > 0) {
$d['priceitemsorig'] =
$price->getPriceItems($v->price_original, $v->taxid,
$v->taxrate, $v->taxcalculationtype);
}
$d['class'] = 'ph-category-price-box';// we need
the same class as category or items view
$d['product_id'] = (int)$v->id;
$d['typeview'] = 'Module';
// Display discount price
// Move standard prices to new variable (product price -> product
discount)
$d['priceitemsdiscount'] = $d['priceitems'];
$d['discount'] =
PhocacartDiscountProduct::getProductDiscountPrice($v->id,
$d['priceitemsdiscount']);
// Display cart discount (global discount) in product views - under
specific conditions only
// Move product discount prices to new variable (product price ->
product discount -> product discount cart)
$d['priceitemsdiscountcart'] =
$d['priceitemsdiscount'];
$d['discountcart'] =
PhocacartDiscountCart::getCartDiscountPriceForProduct($v->id,
$v->catid, $d['priceitemsdiscountcart']);
$d['zero_price'] = 1;// Apply zero price if possible
echo $layoutP->render($d);
}
// VIEW PRODUCT BUTTON
echo '<div
class="ph-category-add-to-cart-box">';
// :L: LINK TO PRODUCT VIEW
if ((int)$p['display_view_product_button'] > 0) {
$d = array();
$d['s'] = $s;
$d['link'] = $link;
$d['display_view_product_button'] =
$p['display_view_product_button'];
echo $layoutV->render($d);
}
echo '</div>';// end add to cart box
echo '<div class="ph-cb"></div>';
echo '</div>';// end caption
echo '</div>';// end thumbnail
echo '</div>';// end ph-item-box
}
}
echo '</div>';
?>
tmpl/index.html000064400000000054151165245660007527
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>