/** * Returns the table view HTML for a given attribute. * * @param BaseElementModel $element * @param string $attribute * @return string */ public function getTableAttributeHtml(BaseElementModel $element, $attribute) { switch ($attribute) { case 'mode': return ucwords($element->mode); case 'planAmount': if ($element->planType == 'recurring') { return $element->formatPlanName(); } else { return $element->formatPlanAmount(); } case 'customerName': return $element->customerName . ' <a href="mailto:' . $element->customerEmail . '">' . $element->customerEmail . '</a>'; case 'cardLast4': return '<span class="cardType type' . $element->cardType . '"></span> ' . $element->formatCard(); case 'planType': if ($element->planType == 'recurring') { return ucwords($element->planType); } else { return 'One-time'; } case 'timestamp': if ($element->timestamp) { return $element->timestamp->localeDate(); } else { return ''; } } }
/** * Prepares an element's content for being saved to the database. * * @param BaseElementModel $element * @param FieldLayoutModel $fieldLayout * @param bool $validate * @return ContentModel */ public function prepElementContentForSave(BaseElementModel $element, FieldLayoutModel $fieldLayout, $validate = true) { $elementTypeClass = $element->getElementType(); $elementType = craft()->elements->getElementType($elementTypeClass); $content = $element->getContent(); if ($validate) { // Set the required fields from the layout $requiredFields = array(); if ($elementType->hasTitles()) { $requiredFields[] = 'title'; } foreach ($fieldLayout->getFields() as $field) { if ($field->required) { $requiredFields[] = $field->fieldId; } } if ($requiredFields) { $content->setRequiredFields($requiredFields); } } // Give the fieldtypes a chance to clean up the post data foreach (craft()->fields->getAllFields() as $field) { $fieldType = craft()->fields->populateFieldType($field); if ($fieldType) { $fieldType->element = $element; $handle = $field->handle; $content->{$handle} = $fieldType->prepValueFromPost($content->{$handle}); } } return $content; }
public function getElementOptionsHtml(BaseElementModel $element) { $isNew = $element->id === null; $locales = array_keys($element->getLocales()); $settings = craft()->plugins->getPlugin('localeSync')->getSettings(); if ($isNew || count($locales) < 2) { return; } return craft()->templates->render('localesync/_cp/entriesEditRightPane', ['settings' => $settings, 'localeId' => $element->locale]); }
public function getTableAttributeHtml(BaseElementModel $element, $attribute) { switch ($attribute) { case 'data': $data = $element->_normalizeDataForElementsTable(); return $element->data; break; default: return parent::getTableAttributeHtml($element, $attribute); break; } }
/** * Get Tablet Attribute HTML * */ public function getTableAttributeHtml(BaseElementModel $element, $attribute) { switch ($attribute) { case 'submission': $data = $element->viewEntryLinkOnElementsTable(); return $element->submission; break; case 'files': $files = $element->normalizeFilesForElementsTable(); return $element->files; break; default: return parent::getTableAttributeHtml($element, $attribute); break; } }
/** * Return table attribute html. * * @param BaseElementModel $element * @param string $attribute * * @return string */ public function getTableAttributeHtml(BaseElementModel $element, $attribute) { // First give plugins a chance to set this $pluginAttributeHtml = craft()->plugins->callFirst('getAuditLogTableAttributeHtml', array($element, $attribute), true); // Check if that had a valid result if ($pluginAttributeHtml) { return $pluginAttributeHtml; } // Modify custom attributes switch ($attribute) { // Format dates case 'dateCreated': case 'dateUpdated': return craft()->dateFormatter->formatDateTime($element->{$attribute}); // Return clickable user link // Return clickable user link case 'user': $user = $element->getUser(); return $user ? '<a href="' . $user->getCpEditUrl() . '">' . $user . '</a>' : Craft::t('Guest'); // Return clickable event origin // Return clickable event origin case 'origin': return '<a href="' . preg_replace('/' . craft()->config->get('cpTrigger') . '\\//', '', UrlHelper::getUrl($element->origin), 1) . '">' . $element->origin . '</a>'; // Return view changes button // Return view changes button case 'changes': return '<a class="btn" href="' . UrlHelper::getCpUrl('auditlog/' . $element->id) . '">' . Craft::t('View') . '</a>'; // Default behavior // Default behavior default: return $element->{$attribute}; } }
/** * Indexes the attributes of a given element defined by its element type. * * @param BaseElementModel $element * @param string|null $localeId * @return bool Whether the indexing was a success. */ public function indexElementAttributes(BaseElementModel $element, $localeId = null) { // Get the element type $elementTypeClass = $element->getElementType(); $elementType = craft()->elements->getElementType($elementTypeClass); // Does it have any searchable attributes? $searchableAttributes = $elementType->defineSearchableAttributes(); if ($elementType->hasTitles()) { $searchableAttributes[] = 'title'; } foreach ($searchableAttributes as $attribute) { $value = $element->{$attribute}; $value = StringHelper::arrayToString($value); $this->_indexElementKeywords($element->id, $attribute, '0', $localeId, $value); } return true; }
/** * @access protected * @return array */ protected function defineAttributes() { // Craft email settings $settings = craft()->email->getSettings(); $systemEmail = !empty($settings['emailAddress']) ? $settings['emailAddress'] : ''; $systemName = !empty($settings['senderName']) ? $settings['senderName'] : ''; return array_merge(parent::defineAttributes(), array('id' => AttributeType::Number, 'fieldLayoutId' => AttributeType::Number, 'redirectEntryId' => AttributeType::Number, 'name' => AttributeType::String, 'handle' => AttributeType::String, 'titleFormat' => array(AttributeType::String, 'default' => "{dateCreated|date('D, d M Y H:i:s')}"), 'submitAction' => AttributeType::String, 'submitButton' => AttributeType::String, 'afterSubmitText' => AttributeType::Mixed, 'submissionEnabled' => array(AttributeType::Bool, 'default' => true), 'sendCopy' => array(AttributeType::Bool, 'default' => false), 'sendCopyTo' => AttributeType::String, 'notificationEnabled' => array(AttributeType::Bool, 'default' => true), 'notificationFilesEnabled' => array(AttributeType::Bool, 'default' => false), 'notificationRecipients' => array(AttributeType::String, 'default' => $systemEmail), 'notificationSubject' => array(AttributeType::String, 'default' => Craft::t('{formName} form was submitted')), 'notificationSenderName' => array(AttributeType::String, 'default' => $systemName), 'notificationSenderEmail' => array(AttributeType::String, 'default' => $systemEmail), 'notificationReplyToEmail' => array(AttributeType::String, 'default' => $systemEmail), 'formTemplate' => AttributeType::String, 'tabTemplate' => AttributeType::String, 'fieldTemplate' => AttributeType::String, 'notificationTemplate' => AttributeType::String)); }
/** * Returns whether this is the first time the element's content has been edited. * * @return bool */ protected function isFresh() { // If this is for a Matrix block, we're more interested in its owner if (isset($this->element) && $this->element->getElementType() == ElementType::MatrixBlock) { $element = $this->element->getOwner(); } else { $element = $this->element; } return !$element || empty($element->getContent()->id) && !$element->hasErrors(); }
/** * Returns whether this is the first time the element's content has been edited. * * @return bool */ protected function isFresh() { if (!isset($this->_isFresh)) { if (isset($this->element)) { $this->_isFresh = $this->element->getHasFreshContent(); } else { $this->_isFresh = true; } } return $this->_isFresh; }
/** * Upload and process the result. * * @param BaseElementModel $element * @param AssetFileModel $asset * @param string $handle * * @return bool */ public function process(BaseElementModel $element, AssetFileModel $asset, $handle) { // Check if we have this asset already or upload to YouTube if (!($youTubeId = $this->exists($asset))) { try { $youTubeId = $this->assemble($asset); } catch (Exception $e) { return $e->getMessage(); } } // Get current video's $content = $element->getContent()->getAttribute($handle); // Make sure content's an array $content = is_array($content) ? $content : array(); // Remove this asset's id from the content unset($content[array_search($asset->id, $content)]); // Add video to (existing) content $element->getContent()->{$handle} = array_merge($content, array($youTubeId)); // Save the content without validation craft()->content->saveContent($element, false); // All went well return true; }
/** * Returns the element's status. * * @return string|null */ public function getStatus() { $status = parent::getStatus(); if ($status == static::ENABLED && $this->postDate) { $currentTime = DateTimeHelper::currentTimeStamp(); $postDate = $this->postDate->getTimestamp(); $expiryDate = $this->expiryDate ? $this->expiryDate->getTimestamp() : null; if ($postDate <= $currentTime && (!$expiryDate || $expiryDate > $currentTime)) { return static::LIVE; } else { if ($postDate > $currentTime) { return static::PENDING; } else { return static::EXPIRED; } } } return $status; }
/** * Prepare reserved ElementModel values. * * @param array &$fields * @param BaseElementModel $element * * @return BaseElementModel */ public function prepForElementModel(array &$fields, BaseElementModel $element) { // Set slug $slug = Import_ElementModel::HandleSlug; if (isset($fields[$slug])) { $element->{$slug} = ElementHelper::createSlug($fields[$slug]); unset($fields[$slug]); } // Set title $title = Import_ElementModel::HandleTitle; if (isset($fields[$title])) { $element->getContent()->{$title} = $fields[$title]; unset($fields[$title]); } // Return element return $element; }
/** * @inheritDoc IElementType::onAfterMoveElementInStructure() * * @param BaseElementModel $element * @param int $structureId * * @return null|void */ public function onAfterMoveElementInStructure(BaseElementModel $element, $structureId) { // Was the entry moved within its section's structure? $section = $element->getSection(); if ($section->type == SectionType::Structure && $section->structureId == $structureId) { craft()->elements->updateElementSlugAndUri($element, true, true, true); } }
/** * Return a dimension of the image. * * @param $dimension 'height' or 'width' * @param $transform * * @return null|float|mixed */ private function _getDimension($dimension, $transform) { if ($this->kind != 'image') { return null; } if ($transform === null && isset($this->_transform)) { $transform = $this->_transform; } if (!$transform) { return parent::getAttribute($dimension); } $transform = craft()->assetTransforms->normalizeTransform($transform); $dimensions = array('width' => $transform->width, 'height' => $transform->height); if (!$transform->width || !$transform->height) { // Fill in the blank $dimensionArray = ImageHelper::calculateMissingDimension($dimensions['width'], $dimensions['height'], $this->_getWidth(), $this->_getHeight()); $dimensions['width'] = (int) $dimensionArray[0]; $dimensions['height'] = (int) $dimensionArray[1]; } // Special case for 'fit' since that's the only one whose dimensions vary from the transform dimensions if ($transform->mode == 'fit') { $factor = max($this->_getWidth() / $dimensions['width'], $this->_getHeight() / $dimensions['height']); $dimensions['width'] = (int) round($this->_getWidth() / $factor); $dimensions['height'] = (int) round($this->_getHeight() / $factor); } return $dimensions[$dimension]; }
/** * @inheritDoc BaseModel::defineAttributes() * * @return array */ protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('name' => AttributeType::Name, 'handle' => AttributeType::Handle, 'fieldLayoutId' => AttributeType::Number)); }
/** * @inheritDoc BaseModel::defineAttributes() * * @return array */ protected function defineAttributes() { $requireUsername = !craft()->config->get('useEmailAsUsername'); return array_merge(parent::defineAttributes(), array('username' => array(AttributeType::String, 'maxLength' => 100, 'required' => $requireUsername), 'photo' => array(AttributeType::String, 'maxLength' => 100), 'firstName' => AttributeType::String, 'lastName' => AttributeType::String, 'email' => array(AttributeType::Email, 'required' => !$requireUsername), 'password' => AttributeType::String, 'preferredLocale' => AttributeType::Locale, 'weekStartDay' => array(AttributeType::Number, 'default' => craft()->config->get('defaultWeekStartDay')), 'admin' => AttributeType::Bool, 'client' => AttributeType::Bool, 'locked' => AttributeType::Bool, 'suspended' => AttributeType::Bool, 'pending' => AttributeType::Bool, 'archived' => AttributeType::Bool, 'lastLoginDate' => AttributeType::DateTime, 'invalidLoginCount' => AttributeType::Number, 'lastInvalidLoginDate' => AttributeType::DateTime, 'lockoutDate' => AttributeType::DateTime, 'passwordResetRequired' => AttributeType::Bool, 'lastPasswordChangeDate' => AttributeType::DateTime, 'unverifiedEmail' => AttributeType::Email, 'newPassword' => AttributeType::String, 'currentPassword' => AttributeType::String, 'verificationCodeIssuedDate' => AttributeType::DateTime)); }
/** * Define Attributes * */ protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('id' => AttributeType::Number, 'formId' => AttributeType::Number, 'title' => AttributeType::String, 'files' => AttributeType::String, 'submission' => AttributeType::String)); }
protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('eid' => AttributeType::Number, 'eventid' => AttributeType::Number, 'startDate' => AttributeType::DateTime, 'order' => array(AttributeType::String, 'default' => 'venti.startDate asc'), 'endDate' => AttributeType::DateTime, 'allDay' => AttributeType::Number, 'repeat' => AttributeType::Number, 'rRule' => AttributeType::String, 'summary' => AttributeType::String, 'isrepeat' => AttributeType::Number, 'locale' => AttributeType::String, 'postDate' => AttributeType::DateTime, 'expiryDate' => AttributeType::DateTime)); }
/** * @inheritDoc IElementType::getEditorHtml() * * @param BaseElementModel $element * * @return string */ public function getEditorHtml(BaseElementModel $element) { return sprintf('<div class="pane"><a class="btn submit" href="%s" target="_blank">%s</a></div>', $element->getCpEditUrl(), Craft::t('Edit form')); }
/** * Updates an element’s descendants’ slugs and URIs. * * @param BaseElementModel $element The element whose descendants should be updated. * @param bool $updateOtherLocales Whether the element’s other locales should also be updated. * @param bool $asTask Whether the descendants’ slugs and URIs should be updated via a background task. * * @return null */ public function updateDescendantSlugsAndUris(BaseElementModel $element, $updateOtherLocales = true, $asTask = false) { $criteria = $this->getCriteria($element->getElementType()); $criteria->descendantOf = $element; $criteria->descendantDist = 1; $criteria->status = null; $criteria->localeEnabled = null; $criteria->locale = $element->locale; if ($asTask) { $childIds = $criteria->ids(); if ($childIds) { craft()->tasks->createTask('UpdateElementSlugsAndUris', null, array('elementId' => $childIds, 'elementType' => $element->getElementType(), 'locale' => $element->locale, 'updateOtherLocales' => $updateOtherLocales, 'updateDescendants' => true)); } } else { $children = $criteria->find(); foreach ($children as $child) { $this->updateElementSlugAndUri($child, $updateOtherLocales, true, false); } } }
/** * Routes the request when the URI matches an element. * * @param BaseElementModel * @return mixed Can be false if no special action should be taken, * a string if it should route to a template path, * or an array that can specify a controller action path, params, etc. */ public function routeRequestForMatchedElement(BaseElementModel $element) { // Make sure that the entry is actually live if ($element->getStatus() == EntryModel::LIVE) { $section = $element->getSection(); // Make sure the section is set to have URLs and is enabled for this locale if ($section->hasUrls && array_key_exists(craft()->language, $section->getLocales())) { return array('action' => 'templates/render', 'params' => array('template' => $section->template, 'variables' => array('entry' => $element))); } } return false; }
/** * @access protected * @return array */ protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('locale' => array(AttributeType::String, 'default' => craft()->language), 'elementId' => array(AttributeType::Number, 'default' => 0), 'metaType' => array(AttributeType::Enum, 'values' => "default,template", 'default' => 'template'), 'metaPath' => array(AttributeType::String, 'default' => ''), 'seoMainEntityCategory' => array(AttributeType::String, 'default' => 'CreativeWork'), 'seoMainEntityOfPage' => array(AttributeType::String, 'default' => 'WebPage'), 'seoTitle' => array(AttributeType::String, 'default' => ''), 'seoDescription' => array(AttributeType::String, 'default' => ''), 'seoKeywords' => array(AttributeType::String, 'default' => ''), 'seoImageTransform' => array(AttributeType::String, 'default' => ''), 'seoFacebookImageTransform' => array(AttributeType::String, 'default' => ''), 'seoTwitterImageTransform' => array(AttributeType::String, 'default' => ''), 'twitterCardType' => array(AttributeType::String, 'default' => ''), 'openGraphType' => array(AttributeType::String, 'default' => ''), 'robots' => array(AttributeType::String, 'default' => ''), 'seoImageId' => array(AttributeType::Number, 'default' => null), 'seoTwitterImageId' => array(AttributeType::Number, 'default' => null), 'seoFacebookImageId' => array(AttributeType::Number, 'default' => null))); }
/** * @return array */ protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('appId' => AttributeType::Number, 'platform' => AttributeType::String, 'token' => AttributeType::String)); }
/** * @inheritDoc BaseModel::defineAttributes() * * @return array */ protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('groupId' => AttributeType::Number)); }
protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('id' => array(AttributeType::Number), 'elementId' => array(AttributeType::Number, 'required' => true), 'elementType' => array(AttributeType::String, 'required' => true), 'listId' => array(AttributeType::Number), 'listName' => array('AttrributeType::String', 'required' => true), 'public' => array(AttributeType::Bool, 'default' => true), 'type' => array(AttributeType::String, 'label' => 'Item Type'), 'sortOrder' => array(AttributeType::Number), 'inList' => array(AttributeType::Bool, 'required' => true, 'default' => false), 'otherLists' => array(AttributeType::Mixed))); }
/** * @inheritDoc IElementType::getEditorHtml() * * @param BaseElementModel $element * * @return string */ public function getEditorHtml(BaseElementModel $element) { $html = craft()->templates->renderMacro('_includes/forms', 'textField', array(array('label' => Craft::t('Filename'), 'id' => 'filename', 'name' => 'filename', 'value' => $element->filename, 'errors' => $element->getErrors('filename'), 'first' => true, 'required' => true))); $html .= craft()->templates->renderMacro('_includes/forms', 'textField', array(array('label' => Craft::t('Title'), 'locale' => $element->locale, 'id' => 'title', 'name' => 'title', 'value' => $element->title, 'errors' => $element->getErrors('title'), 'required' => true))); $html .= parent::getEditorHtml($element); return $html; }
protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('id' => array(AttributeType::Number), 'ownerId' => array(AttributeType::Number), 'draftId' => array(AttributeType::Number), 'editorId' => array(AttributeType::Number), 'publisherId' => array(AttributeType::Number), 'status' => array(AttributeType::Enum, 'values' => array(Workflow_SubmissionModel::APPROVED, Workflow_SubmissionModel::PENDING, Workflow_SubmissionModel::REJECTED, Workflow_SubmissionModel::REVOKED)), 'notes' => array(AttributeType::Mixed), 'dateApproved' => array(AttributeType::DateTime), 'dateRejected' => array(AttributeType::DateTime), 'dateRevoked' => array(AttributeType::DateTime), 'dateCreated' => array(AttributeType::DateTime), 'dateUpdated' => array(AttributeType::DateTime))); }
/** * @inheritDoc BaseModel::defineAttributes() * * @return array */ protected function defineAttributes() { return array_merge(parent::defineAttributes(), array('fieldId' => AttributeType::Number, 'ownerId' => AttributeType::Number, 'ownerLocale' => AttributeType::Locale, 'typeId' => AttributeType::Number, 'sortOrder' => AttributeType::Number, 'collapsed' => AttributeType::Bool)); }
/** * Returns the table view HTML for a given attribute. * * @param BaseElementModel $element * @param string $attribute * @return string */ public function getTableAttributeHtml(BaseElementModel $element, $attribute) { switch ($attribute) { case 'owner': if ($element->ownerType == 'guest') { return Craft::t('Guest'); } else { $user = craft()->users->getUserById($element->ownerId); if ($user == null) { return Craft::t('[Deleted User]'); } else { $url = UrlHelper::getCpUrl('users/' . $user->id); return "<a href='" . $url . "'>" . $user->getFriendlyName() . "</a>"; } } case 'itemCount': return count($element->items()); case 'itemList': $items = $element->items(); $str = array(); $i = 0; foreach ($items as $item) { if ($i < $this->listInlineViewLimit) { $parent = craft()->entries->getEntryById($item->elementId); $url = UrlHelper::getCpUrl('shortlist/list/' . $element->id . '#' . $item->elementId); $str[] = '<a href="' . $url . '">' . $parent->title . '</a>'; } $i++; } $ret = implode(', ', $str); if (count($items) > $this->listInlineViewLimit) { $hidden = count($items) - $this->listInlineViewLimit; $moreUrl = UrlHelper::getCpUrl('shortlist/list/' . $element->id . '#items'); $ret .= " .. <a href='" . $moreUrl . "'>+" . $hidden . " more</a>"; } return $ret; default: return $element->{$attribute}; } }