/**
  * 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);
     }
 }
Exemple #15
0
 /**
  * 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));
 }
Exemple #25
0
 /**
  * @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)));
 }
Exemple #27
0
 /**
  * @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};
     }
 }