Exemplo n.º 1
0
 /**
  * Add data about search criteria to object state
  *
  * @param   Mage_Eav_Model_Entity_Attribute $attribute
  * @param   mixed $value
  * @return  Mage_CatalogSearch_Model_Advanced
  */
 protected function _addSearchCriteria($attribute, $value)
 {
     $name = $attribute->getStoreLabel();
     if (is_array($value)) {
         if (isset($value['from']) && isset($value['to'])) {
             if (!empty($value['from']) || !empty($value['to'])) {
                 if (isset($value['currency'])) {
                     $currencyModel = Mage::getModel('directory/currency')->load($value['currency']);
                     $from = $currencyModel->format($value['from'], array(), false);
                     $to = $currencyModel->format($value['to'], array(), false);
                 } else {
                     $currencyModel = null;
                 }
                 if (strlen($value['from']) > 0 && strlen($value['to']) > 0) {
                     // -
                     $value = sprintf('%s - %s', $currencyModel ? $from : $value['from'], $currencyModel ? $to : $value['to']);
                 } elseif (strlen($value['from']) > 0) {
                     // and more
                     $value = Mage::helper('catalogsearch')->__('%s and greater', $currencyModel ? $from : $value['from']);
                 } elseif (strlen($value['to']) > 0) {
                     // to
                     $value = Mage::helper('catalogsearch')->__('up to %s', $currencyModel ? $to : $value['to']);
                 }
             } else {
                 return $this;
             }
         }
     }
     if (($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') && is_array($value)) {
         foreach ($value as $key => $val) {
             $value[$key] = $attribute->getSource()->getOptionText($val);
             if (is_array($value[$key])) {
                 $value[$key] = $value[$key]['label'];
             }
         }
         $value = implode(', ', $value);
     } else {
         if ($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') {
             $value = $attribute->getSource()->getOptionText($value);
             if (is_array($value)) {
                 $value = $value['label'];
             }
         } else {
             if ($attribute->getFrontendInput() == 'boolean') {
                 $value = $value == 1 ? Mage::helper('catalogsearch')->__('Yes') : Mage::helper('catalogsearch')->__('No');
             }
         }
     }
     $this->_searchCriterias[] = array('name' => $name, 'value' => $value);
     return $this;
 }
Exemplo n.º 2
0
 /**
  * Select field filter HTML with selected value.
  *
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  * @param mixed $value
  * @return string
  */
 protected function _getSelectHtmlWithValue(Mage_Eav_Model_Entity_Attribute $attribute, $value)
 {
     if ($attribute->getFilterOptions()) {
         $options = array();
         foreach ($attribute->getFilterOptions() as $value => $label) {
             $options[] = array('value' => $value, 'label' => $label);
         }
     } else {
         $options = $attribute->getSource()->getAllOptions(false);
     }
     if ($size = count($options)) {
         // add empty vaue option
         $firstOption = reset($options);
         if ('' === $firstOption['value']) {
             $options[key($options)]['label'] = '';
         } else {
             array_unshift($options, array('value' => '', 'label' => ''));
         }
         $selectBlock = new Mage_Core_Block_Html_Select(array('name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'select', 'extra_params' => 'style="width:280px"'));
         return $selectBlock->setOptions($options)->setValue($value)->getHtml();
     } else {
         return $this->_helper->__('Attribute does not has options, so filtering is impossible');
     }
 }
Exemplo n.º 3
0
 /**
  * Apply configuration specific for different element type
  *
  * @param string $inputType
  * @param Varien_Data_Form_Element_Abstract $element
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  */
 protected function _applyTypeSpecificConfig($inputType, $element, Mage_Eav_Model_Entity_Attribute $attribute)
 {
     switch ($inputType) {
         case 'select':
             $element->setValues($attribute->getSource()->getAllOptions(true, true));
             break;
         case 'multiselect':
             $element->setValues($attribute->getSource()->getAllOptions(false, true));
             $element->setCanBeEmpty(true);
             break;
         case 'date':
             $element->setImage($this->getViewFileUrl('images/grid-cal.gif'));
             $element->setDateFormat(Mage::app()->getLocale()->getDateFormatWithLongYear());
             break;
         case 'multiline':
             $element->setLineCount($attribute->getMultilineCount());
             break;
         default:
             break;
     }
 }
Exemplo n.º 4
0
 /**
  * Get Human Readable label for attribute value option
  *
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  * @param int|string                      $attributeValueId
  *
  * @return string|boolean
  */
 public function getAttributeAdminLabel($attribute, $attributeValueId)
 {
     if ($attribute->getFrontendInput() == 'select') {
         return $attribute->getSource()->getOptionText($attributeValueId);
     }
     return false;
 }
Exemplo n.º 5
0
 /**
  * Select field filter HTML with selected value.
  *
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  * @param mixed $value
  * @return string
  */
 protected function _getSelectHtmlWithValue(Mage_Eav_Model_Entity_Attribute $attribute, $value)
 {
     if ($attribute->getFilterOptions()) {
         $options = array();
         foreach ($attribute->getFilterOptions() as $value => $label) {
             $options[] = array('value' => $value, 'label' => $label);
         }
     } else {
         $options = $attribute->getSource()->getAllOptions(false);
     }
     if ($size = count($options)) {
         // add empty vaue option
         $firstOption = reset($options);
         if ('' === $firstOption['value']) {
             $options[key($options)]['label'] = '';
         } else {
             array_unshift($options, array('value' => '', 'label' => ''));
         }
         $arguments = array('name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'select select-export-filter');
         /** @var $selectBlock Mage_Core_Block_Html_Select */
         $selectBlock = $this->_layout->getBlockFactory()->createBlock('Mage_Core_Block_Html_Select', $arguments);
         return $selectBlock->setOptions($options)->setValue($value)->getHtml();
     } else {
         return Mage::helper('Mage_ImportExport_Helper_Data')->__('Attribute does not has options, so filtering is impossible');
     }
 }
Exemplo n.º 6
0
 /**
  * Retrieves attribute value
  *
  * @param array $row
  * @param Mage_Eav_Model_Entity_Attribute $attribute
  * @return mixed|null
  */
 protected function _getAttributeValue($row, $attribute)
 {
     if (isset($row[$attribute->getAttributeCode()]) && !is_array($row[$attribute->getAttributeCode()])) {
         $value = $row[$attribute->getAttributeCode()];
     } elseif ($attribute->getIsRequired() && $attribute->getDefaultValue() !== null && $attribute->getDefaultValue() !== '' && !is_array($attribute->getDefaultValue())) {
         $value = $attribute->getDefaultValue();
     } else {
         $value = null;
     }
     if ($attribute->usesSource() && $value !== null) {
         if ($attribute->getSource() instanceof Mage_Eav_Model_Entity_Attribute_Source_Abstract) {
             $value = $attribute->getSource()->getOptionId($value);
         } else {
             $value = $this->_getOptionIdNonAttributeSource($attribute->getSource()->getAllOptions(), $value);
         }
     }
     return $value;
 }