first commit

This commit is contained in:
2025-03-12 17:06:23 +01:00
commit 2241f7131f
13185 changed files with 1692479 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
<?php
class appProductAttributeBackendBreadcrumbsBuilder extends autoAppProductAttributeBackendBreadcrumbsBuilder
{
public function getDefaultBreadcrumbs()
{
if (null === $this->defaultBreadcrumbs)
{
$breadcrumbs = parent::getDefaultBreadcrumbs();
if (isset($this->forwardParameters['category_id']) && $this->forwardParameters['category_id'])
{
$category = CategoryPeer::retrieveByPK($this->forwardParameters['category_id']);
foreach ($category->getPath() as $parent)
{
$breadcrumbs->add($parent->getOptName(), !$parent->isRoot() ? '@stProduct?action=list&category_id='.$parent->getId() : null);
}
$breadcrumbs->add($category->getOptName(), '@stProduct?action=list&category_id='.$category->getId());
}
$this->defaultBreadcrumbs = $breadcrumbs;
}
return $this->defaultBreadcrumbs;
}
}

View File

@@ -0,0 +1,134 @@
<?php
class appProductAttributeBackendImportExport extends autoAppProductAttributeBackendImportExport
{
public static function setProductCode($object, $value, $log, $data) {}
public static function setProductName($object, $value, $log, $data) {}
public static function setAttributeName($object, $value, $log, $data) {}
public static function setAttributeId($object, $value, $log, $data) {}
public static function setVariantName($object, $value, $log, $data)
{
if ($object && $object->getId())
{
$attribute = appProductAttributePeer::retrieveByPK($data['attribute_id']);
if ($attribute)
{
self::clearVariants($object, $attribute);
if (empty($value))
{
return;
}
$variantSeparator = stConfig::getInstance('appProductAttributeBackend')->get('import_export_variant_separator', '|');
$variants = explode($variantSeparator, $value);
$variants = array_unique($variants);
foreach ($variants as $variant)
{
$variant = trim($variant);
if (empty($variant))
{
continue;
}
$c = new Criteria();
if ($attribute->getType() == 'C')
{
$c->add(appProductAttributeVariantPeer::OPT_NAME, $variant);
}
else
{
$c->add(appProductAttributeVariantPeer::OPT_VALUE, $attribute->getType() == 'B' ? '' : $variant);
}
$c->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeHasVariantPeer::VARIANT_ID);
$c->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $attribute->getId());
$attributeVariant = appProductAttributeVariantPeer::doSelectOne($c);
if ($attribute->getType() == 'B')
{
if (in_array($variant, array('1', 'Y', 'Yes', 'T', 'Tak')))
{
if (!$attributeVariant) {
$attributeVariant = new appProductAttributeVariant();
$attributeVariant->setCulture(stLanguage::getOptLanguage());
$attributeVariant->setValue('');
$attributeVariant->save();
$pahv = new appProductAttributeHasVariant();
$pahv->setAttributeId($attribute->getId());
$pahv->setVariantId($attributeVariant->getId());
$pahv->save();
}
}
else
{
$attributeVariant = null;
}
}
elseif ($attribute->getType() != 'C')
{
if (!$attributeVariant) {
$attributeVariant = new appProductAttributeVariant();
$attributeVariant->setCulture(stLanguage::getOptLanguage());
$attributeVariant->setValue($variant);
$attributeVariant->save();
$pahv = new appProductAttributeHasVariant();
$pahv->setAttributeId($attribute->getId());
$pahv->setVariantId($attributeVariant->getId());
$pahv->save();
}
}
if ($attributeVariant) {
$pahp = new appProductAttributeVariantHasProduct();
$pahp->setProductId($object->getId());
$pahp->setVariantId($attributeVariant->getId());
$pahp->save();
}
}
}
else
{
stImportExportLog::getActiveLogger()->add($object->getCode(), sfContext::getInstance()->getI18n()->__('Atrybut "%attr%" nie istnieje w produkcie - aktualizacja atrybutu zostaje pominięta', array('%attr%' => $data['attribute_name']), 'stProduct'), 2);
}
}
else
{
stImportExportLog::getActiveLogger()->add($object->getCode(), sfContext::getInstance()->getI18n()->__('Produkt nie istnieje - Atrybut "%attr%" nie został zaktualizowany', array('%attr%' => $data['attribute_name']), 'stProduct'), 2);
}
}
public static function clearVariants($product, $attribute)
{
$c = new Criteria();
$c->addSelectColumn(appProductAttributeHasVariantPeer::VARIANT_ID);
$c->addJoin(appProductAttributeVariantHasProductPeer::VARIANT_ID, appProductAttributeHasVariantPeer::VARIANT_ID);
$c->add(appProductAttributeVariantHasProductPeer::PRODUCT_ID, $product->getId());
$c->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $attribute->getId());
$rs = appProductAttributeHasVariantPeer::doSelectRs($c);
$ids = array();
while($rs->next())
{
$row = $rs->getRow();
$ids[] = $row[0];
}
$c = new Criteria();
$c->add(appProductAttributeVariantHasProductPeer::PRODUCT_ID, $product->getId());
$c->add(appProductAttributeVariantHasProductPeer::VARIANT_ID, $ids, Criteria::IN);
BasePeer::doDelete($c, Propel::getConnection());
}
}

View File

@@ -0,0 +1,25 @@
<?php
class appProductAttributeBackendWebApi extends autoAppProductAttributeBackendWebApi
{
public function setFieldsForUpdateAttributeVariantI18n($object, $item)
{
parent::setFieldsForUpdateAttributeVariantI18n($object, $item);
if (null === $item->getType())
{
$item->setName(null);
$item->setValue($object->name);
}
}
public function getFieldsForGetAttributeVariantI18nList($object, $item)
{
parent::getFieldsForGetAttributeVariantI18nList($object, $item);
if (null === $item->getType())
{
$object->name = stWebApi::formatData($item->getValue(), 'string');
}
}
}

View File

@@ -0,0 +1,145 @@
<?php
use_helper('stCategory');
function object_category(appProductAttribute $app_product_attribute, $method, $options = array())
{
$context = sfContext::getInstance();
$request = $context->getRequest();
$defaults = array();
if ($request->hasErrors())
{
$parameters = $request->getParameter($options['control_name']);
$defaults = stJQueryToolsHelper::parseTokensFromRequest($parameters);
}
elseif ($app_product_attribute->isNew())
{
$filters = $context->getUser()->getAttributeHolder()->getAll('soteshop/stAdminGenerator/appProductAttributeBackend/list/filters');
if (isset($filters['category']) && $filters['category'])
{
$c = new Criteria();
$c->add(CategoryPeer::ID, $filters['category']);
$defaults = ProductPeer::doSelectCategoriesTokens($c);
}
}
else
{
$defaults = appProductAttributePeer::doSelectCategoriesForTokenInput($app_product_attribute);
}
return category_picker_input_tag($options['control_name'], $defaults, array('show_default' => false, 'allow_assign_parents_only' => true, 'allow_assign_root' => true));
}
function app_product_attribute_variant_tokenizer(appProductAttribute $attribute, Product $product)
{
static $fc = null;
if (null === $fc)
{
$fc = new stFunctionCache('appProductAttributeVariant');
}
$id = $attribute->getId();
$type = $attribute->getType();
$dc = new Criteria();
$dc->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeHasVariantPeer::VARIANT_ID);
$dc->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeVariantHasProductPeer::VARIANT_ID);
$dc->add(appProductAttributeVariantHasProductPeer::PRODUCT_ID, $product->getId());
$dc->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $attribute->getId());
$vc = new Criteria();
$vc->addJoin(appProductAttributeVariantPeer::ID, appProductAttributeHasVariantPeer::VARIANT_ID);
$vc->add(appProductAttributeHasVariantPeer::ATTRIBUTE_ID, $id);
if ($type == 'B')
{
$checked = appProductAttributeVariantPeer::doCount($dc);
$vc->addSelectColumn(appProductAttributeVariantPeer::ID);
$variant_id = appProductAttributeVariantPeer::doSelectSingleScalar($vc);
return checkbox_tag('app_product_attribute_variant['.$id.']', $variant_id, $checked, array('id' => 'token-input-app_product_attribute_variant_'.$id));
}
elseif ($type == 'T' || $type == 'C' || $type == 'S')
{
$defaults = appProductAttributeVariantPeer::doSelectTokens($dc, $type);
$variants = $fc->cacheCall(array('appProductAttributeVariantPeer', 'doSelectTokens'), array($vc, $type));
$tokenizer = array(
'createNew' => $type != 'C',
'preventDuplicates' => true,
'hintText' => __('Wpisz nazwę szukanego wariantu'),
'tokenLimit' => 20,
'animateDropdown' => false,
'propertyToSearch' => $type == 'C' ? 'name' : 'value'
);
if ($type == 'C')
{
$tokenizer['resultsFormatter'] = _variant_tokens_results_formatter();
$tokenizer['tokenFormatter'] = _variant_tokens_token_formatter();
}
elseif ($type == 'S')
{
$tokenizer['onBeforeAdd'] = _variant_tokens_on_add();
}
return st_tokenizer_input_tag(
'app_product_attribute_variant['.$id.']',
$variants,
$defaults,
array('tokenizer' => $tokenizer)
);
}
}
function _variant_tokens_results_formatter()
{
return "function (item, token_input, query) {
if (item['type'] == 'C') {
var style = 'background-color: #'+item['value'];
} else {
var style = 'background-image: url(/'+item['value']+')';
}
return '<li class=\"app_variant_token\"><div class=\"background\"><div style=\"'+style+'\"></div></div><span class=\"name\">'+item['name']+'</span></li>';
}";
}
function _variant_tokens_token_formatter()
{
return "function (item, token_input, query) {
if (item['type'] == 'C') {
var style = 'background-color: #'+item['value'];
} else {
var style = 'background-image: url(/'+item['value']+')';
}
return '<li class=\"app_variant_token\"><div class=\"background\"><div style=\"'+style+'\"></div></div><span class=\"name\">'+item['name']+'</span></li>';
}";
}
function _variant_tokens_on_add()
{
return "function(item) {
$(this).data('tokenInputObject').clear();
}";
}