/** * @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); } }
/** * @inheritDoc BaseElementModel::getEagerLoadedElements() * * @param string $handle * * @return BaseElementModel[]|null */ public function getEagerLoadedElements($handle) { // See if we have this stored with a block type-specific handle $blockTypeHandle = $this->getType()->handle . ':' . $handle; if (isset($this->_eagerLoadedBlockTypeElements[$blockTypeHandle])) { return $this->_eagerLoadedBlockTypeElements[$blockTypeHandle]; } return parent::getEagerLoadedElements($handle); }
public function getEagerLoadedElements($handle) { if (isset($this->_eagerLoadedBlockTypeElements[$handle])) { return $this->_eagerLoadedBlockTypeElements[$handle]; } return parent::getEagerLoadedElements($handle); }