Exemple #1
0
 public function hasEagerLoadedElements($handle)
 {
     if (isset($this->_eagerLoadedBlockTypeElements[$handle])) {
         return true;
     }
     return parent::hasEagerLoadedElements($handle);
 }
 /**
  * @inheritDoc BaseElementModel::hasEagerLoadedElements()
  *
  * @param string $handle
  *
  * @return bool
  */
 public function hasEagerLoadedElements($handle)
 {
     // See if we have this stored with a block type-specific handle
     $blockTypeHandle = $this->getType()->handle . ':' . $handle;
     if (isset($this->_eagerLoadedBlockTypeElements[$blockTypeHandle])) {
         return true;
     }
     return parent::hasEagerLoadedElements($handle);
 }
 /**
  * @inheritDoc IElementType::getTableAttributeHtml()
  *
  * @param BaseElementModel $element
  * @param string           $attribute
  *
  * @return mixed|string
  */
 public function getTableAttributeHtml(BaseElementModel $element, $attribute)
 {
     switch ($attribute) {
         case 'link':
             $url = $element->getUrl();
             if ($url) {
                 return '<a href="' . $url . '" target="_blank" data-icon="world" title="' . Craft::t('Visit webpage') . '"></a>';
             } else {
                 return '';
             }
         case 'uri':
             $url = $element->getUrl();
             if ($url) {
                 $value = $element->uri;
                 if ($value == '__home__') {
                     $value = '<span data-icon="home" title="' . Craft::t('Homepage') . '"></span>';
                 } else {
                     // Add some <wbr> tags in there so it doesn't all have to be on one line
                     $find = array('/');
                     $replace = array('/<wbr>');
                     $wordSeparator = craft()->config->get('slugWordSeparator');
                     if ($wordSeparator) {
                         $find[] = $wordSeparator;
                         $replace[] = $wordSeparator . '<wbr>';
                     }
                     $value = str_replace($find, $replace, $value);
                 }
                 return '<a href="' . $url . '" target="_blank" class="go" title="' . Craft::t('Visit webpage') . '"><span dir="ltr">' . $value . '</span></a>';
             } else {
                 return '';
             }
         default:
             // Is this a custom field?
             if (preg_match('/^field:(\\d+)$/', $attribute, $matches)) {
                 $fieldId = $matches[1];
                 $field = craft()->fields->getFieldById($fieldId);
                 if ($field) {
                     $fieldType = $field->getFieldType();
                     if ($fieldType && $fieldType instanceof IPreviewableFieldType) {
                         // Was this field value eager-loaded?
                         if ($fieldType instanceof IEagerLoadingFieldType && $element->hasEagerLoadedElements($field->handle)) {
                             $value = $element->getEagerLoadedElements($field->handle);
                         } else {
                             $value = $element->getFieldValue($field->handle);
                         }
                         $fieldType->setElement($element);
                         return $fieldType->getTableAttributeHtml($value);
                     }
                 }
                 return '';
             }
             $value = $element->{$attribute};
             if ($value instanceof DateTime) {
                 return '<span title="' . $value->localeDate() . ' ' . $value->localeTime() . '">' . $value->uiTimestamp() . '</span>';
             }
             return HtmlHelper::encode($value);
     }
 }