first commit
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}";
|
||||
}
|
||||
Reference in New Issue
Block a user