43 public function __construct($model, $haveGoToDetailsLink =
false)
45 assert(
'$model instanceof Item');
46 assert(
'is_bool($haveGoToDetailsLink)');
47 $this->model = $model;
48 $this->haveGoToDetailsLink = $haveGoToDetailsLink;
51 protected function renderFrontOfCardContent()
53 $content = $this->resolveAvatarContent();
54 $content .= $this->resolveNameContent();
55 $content .= $this->resolveBackOfCardLinkContent();
56 $content .= $this->resolveJobTitleContent();
57 $content .= $this->resolveDepartmentAndAccountContent();
58 $content .= $this->resolveGenderAndAgeContent();
59 $content .= $this->resolveSocialConnectorsContent();
60 $content .= $this->resolvePhoneAndEmailContent();
61 $content .= $this->resolveAddressContent();
65 protected function resolveAvatarContent()
67 $content = Yii::app()->dataEnhancer->getPersonAvatar($this->model);
70 $htmlOptions = array(
'class' =>
'gravatar',
'width' =>
'100',
'height' =>
'100');
71 $url = Yii::app()->theme->baseUrl .
'/images/offline_user.png';
72 $content = ZurmoHtml::image($url, strval($this->model), $htmlOptions);
77 protected function resolveNameContent()
80 $element->nonEditableTemplate =
'{content}';
83 if (StarredUtil::modelHasStarredInterface($this->model))
85 $starLink = StarredUtil::getToggleStarStatusLink($this->model, null);
87 $salutation = $element->render();
88 if ($salutation != null)
90 $spanContent = ZurmoHtml::tag(
'span', array(
'class' =>
'salutation'), $element->render());
92 return ZurmoHtml::tag(
'h2', array(), $spanContent . strval($this->model) . $starLink . $this->renderGoToDetailsLink());
95 protected function renderGoToDetailsLink()
97 if ($this->haveGoToDetailsLink)
99 if (get_class($this->model) ==
'User')
101 $link = Yii::app()->createUrl(
'users/default/details/', array(
'id' => $this->model->id));
105 $link = Yii::app()->createUrl(
'leads/default/details/', array(
'id' => $this->model->id));
109 $link = Yii::app()->createUrl(
'contacts/default/details/', array(
'id' => $this->model->id));
111 return ZurmoHtml::link(Zurmo::t(
'ZurmoModule',
'Go To Details'), $link, array(
'class' =>
'simple-link',
'target' =>
'_blank'));
115 protected function resolveBackOfCardLinkContent()
117 if (Yii::app()->dataEnhancer->personHasBackOfCard($this->model))
119 static::registerBackOfCardScript();
120 $spanContent = ZurmoHtml::tag(
'span', array(
'class' =>
'show'), Yii::app()->dataEnhancer->getPersonBackOfCardLabel());
121 $spanContent .= ZurmoHtml::tag(
'span', array(), Yii::app()->dataEnhancer->getPersonBackOfCardCloseLabel());
122 $content = ZurmoHtml::link($spanContent,
'#', array(
'class' =>
'toggle-back-of-card-link mini-button clearfix'));
127 protected function resolveJobTitleContent()
129 if ($this->model->jobTitle != null)
131 $content = ZurmoHtml::tag(
'h3', array(
'class' =>
'position'), $this->model->jobTitle);
136 protected function resolveDepartmentAndAccountContent()
138 $departmentAndAccountContent = null;
139 if ($this->model->department != null)
141 $departmentAndAccountContent = $this->model->department;
143 if ($this->model instanceof
Contact && $this->model->account->id > 0)
145 if ($departmentAndAccountContent != null)
147 $departmentAndAccountContent .=
' / ';
149 $departmentAndAccountContent .= static:: resolveAccountContentByUser($this->model->account, Yii::app()->user->userModel);
151 elseif ($this->model instanceof
Contact)
153 if ($departmentAndAccountContent != null && $this->model->companyName != null)
155 $departmentAndAccountContent .=
' / ' . $this->model->companyName;
157 elseif ($departmentAndAccountContent == null && $this->model->companyName != null)
159 $departmentAndAccountContent = $this->model->companyName;
162 if ($departmentAndAccountContent != null)
164 return ZurmoHtml::tag(
'h4', array(
'class' =>
'position'), $departmentAndAccountContent);
168 protected function resolveGenderAndAgeContent()
170 $demographicContent = Yii::app()->dataEnhancer->getPersonDemographicViewContent($this->model);
171 if ($demographicContent != null)
173 return ZurmoHtml::tag(
'div', array(
'class' =>
'demographic-details'), $demographicContent);
177 protected function resolveSocialConnectorsContent()
179 $socialContent = Yii::app()->dataEnhancer->getPersonSocialNetworksViewContent($this->model);
180 if ($socialContent != null)
182 return ZurmoHtml::tag(
'div', array(
'class' =>
'social-details'), $socialContent);
186 protected function resolvePhoneAndEmailContent()
189 if ($this->model->officePhone != null)
191 $content .= Yii::app()->phoneHelper->resolvePersonCardViewOfficePhoneNumberContent($this->model->officePhone,
194 if ($this->model->mobilePhone != null)
196 $content .= Yii::app()->phoneHelper->resolvePersonCardViewMobilePhoneNumberContent($this->model->mobilePhone,
199 if ($this->model->primaryEmail->emailAddress != null)
202 $this->model->primaryEmail->emailAddress, $this->model);
203 $content .= ZurmoHtml::tag(
'span', array(
'class' =>
'icon-email'), $emailContent);
205 if ($content != null)
207 return ZurmoHtml::tag(
'div', array(
'class' =>
'contact-details'), $content);
211 protected function resolveAddressContent()
213 $element =
new AddressElement($this->model,
'primaryAddress', null);
214 $element->breakLines =
false;
215 $element->nonEditableTemplate =
'{content}';
216 return ZurmoHtml::tag(
'div', array(
'class' =>
'address'), $element->render());
219 protected function renderBackOfCardContent()
221 $backOfCardContent = Yii::app()->dataEnhancer->getPersonBackOfCardViewContent($this->model);
222 if ($backOfCardContent != null)
224 return ZurmoHtml::tag(
'div', array(
'class' =>
'back-of-card clearfix'), $backOfCardContent);
228 protected static function registerBackOfCardScript()
231 $('.toggle-back-of-card-link').click(function()
233 $('span', this).slideToggle();
234 $('.back-of-card').slideToggle();
237 Yii::app()->getClientScript()->registerScript(
'backOfCardScript', $script);
240 protected static function resolveAccountContentByUser(
Account $account,
User $user)
244 if ($userCanAccess && $userCanReadItem)
246 return ZurmoHtml::link(Yii::app()->format->text($account), Yii::app()->createUrl(
'accounts/default/details/',
247 array(
'id' => $account->id)));
249 elseif (!$userCanAccess && $userCanReadItem)
251 return strval($account);
static renderEmailAddressAsMailToOrModalLinkStringContent($emailAddress, RedBeanModel $model)
static isStateALead(ContactState $state)
static canUserAccessModule($moduleClassName, $user)
static canUserPerformAction($actionType, $model, $user)