mirror of https://github.com/movim/movim
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
9.4 KiB
238 lines
9.4 KiB
<section>
|
|
{$url = $contact->getPhoto()}
|
|
<header class="big"
|
|
{if="$url"}
|
|
style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0.5) 100%), url('{$contact->getPhoto('xxl')}');"
|
|
{/if}
|
|
>
|
|
<ul class="list thick">
|
|
<li>
|
|
{if="$url"}
|
|
<span onclick="MovimUtils.reload('{$c->route('contact', $jid)}')"
|
|
class="primary icon bubble color active
|
|
{if="$roster && $roster->presence"}status {$roster->presence->presencekey}{/if}
|
|
">
|
|
<img src="{$url}">
|
|
</span>
|
|
{elseif="!$contact->isFromMuc()"}
|
|
<span onclick="MovimUtils.reload('{$c->route('contact', $jid)}')"
|
|
class="primary icon bubble color {$contact->id|stringToColor} active
|
|
{if="$roster && $roster->presence"}status {$roster->presence->presencekey}{/if}
|
|
">
|
|
<i class="material-icons">person</i>
|
|
</span>
|
|
{/if}
|
|
{if="!$contact->isFromMuc()"}
|
|
<span class="control icon active" onclick="MovimUtils.reload('{$c->route('contact', $contact->id)}')">
|
|
<i class="material-icons">person</i>
|
|
</span>
|
|
{/if}
|
|
{if="!$contact->isMe()"}
|
|
<span class="control icon active divided" onclick="ContactActions_ajaxChat('{$contact->id|echapJS}')">
|
|
<i class="material-icons">comment</i>
|
|
</span>
|
|
{if="$roster && $roster->presences->count() > 0"}
|
|
{loop="$roster->presences"}
|
|
{if="$value->capability && $value->capability->isJingleAudio()"}
|
|
<span title="{$c->__('button.audio_call')}" class="control icon active"
|
|
onclick="VisioLink.openVisio('{$value->jid|echapJS}');">
|
|
<i class="material-icons">phone</i>
|
|
</span>
|
|
{/if}
|
|
{if="$value->capability && $value->capability->isJingleVideo()"}
|
|
<span title="{$c->__('button.video_call')}" class="control icon active"
|
|
onclick="VisioLink.openVisio('{$value->jid|echapJS}', '', true);">
|
|
<i class="material-icons">videocam</i>
|
|
</span>
|
|
{break}
|
|
{/if}
|
|
{/loop}
|
|
{/if}
|
|
{/if}
|
|
<div>
|
|
<p class="line">{$contact->truename}</p>
|
|
<p class="line">{$contact->id}</p>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</header>
|
|
|
|
{if="$roster && $roster->presences->count() > 0"}
|
|
<ul class="list middle">
|
|
<li class="subheader">
|
|
<div>
|
|
<p>{$c->__('clients.title')}</p>
|
|
</div>
|
|
</li>
|
|
{loop="$roster->presences"}
|
|
{if="$value->capability"}
|
|
<li class="block">
|
|
<span class="primary icon gray status {$value->presencekey}">
|
|
<i class="material-icons">
|
|
{$value->capability->getDeviceIcon()}
|
|
</i>
|
|
</span>
|
|
<div>
|
|
<p class="normal line">
|
|
{$value->capability->name}
|
|
<span class="second">{$value->resource}</span>
|
|
</p>
|
|
{if="$value->capability->identities()->first() && isset($clienttype[$value->capability->identities()->first()->type])"}
|
|
<p class="line">
|
|
{$clienttype[$value->capability->identities()->first()->type]}
|
|
</p>
|
|
{/if}
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
{/loop}
|
|
</ul>
|
|
{/if}
|
|
|
|
{if="$fingerprints->count() > 0"}
|
|
<ul class="list middle">
|
|
<li class="subheader">
|
|
<div>
|
|
<p>{$c->__('omemo.fingerprints')}</p>
|
|
</div>
|
|
</li>
|
|
{loop="$fingerprints"}
|
|
<li>
|
|
<span class="primary icon gray">
|
|
<i class="material-icons">fingerprint</i>
|
|
</span>
|
|
<div>
|
|
<p class="normal">
|
|
<span class="fingerprint" title="{$value->bundle_id}">
|
|
{$value->fingerprint}
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</li>
|
|
{/loop}
|
|
</ul>
|
|
{/if}
|
|
|
|
<ul class="tabs" id="navtabs"></ul>
|
|
|
|
<div class="tabelem" title="{$c->__('vcard.title')}" id="contact_info">
|
|
<ul class="list middle">
|
|
{if="$roster && $roster->presence && $roster->presence->seen"}
|
|
<li>
|
|
<span class="primary icon gray">
|
|
<i class="material-icons">access_time</i>
|
|
</span>
|
|
<div>
|
|
<p>{$c->__('last.title')}</p>
|
|
<p>
|
|
{$roster->presence->seen|strtotime|prepareDate:true,true}
|
|
</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="$contact->fn != null"}
|
|
<li>
|
|
<span class="primary icon gray">{$contact->fn|firstLetterCapitalize}</span>
|
|
<div>
|
|
<p>{$c->__('general.name')}</p>
|
|
<p>{$contact->fn}</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="$contact->nickname != null"}
|
|
<li>
|
|
<span class="primary icon gray">{$contact->nickname|firstLetterCapitalize}</span>
|
|
<div>
|
|
<p>{$c->__('general.nickname')}</p>
|
|
<p>{$contact->nickname}</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="$roster && $roster->group"}
|
|
<li>
|
|
<span class="primary icon gray">
|
|
<i class="material-icons">recent_actors</i>
|
|
</span>
|
|
<div>
|
|
<p>{$c->__('edit.group')}</p>
|
|
<p>
|
|
<span class="tag color {$roster->group|stringToColor}">
|
|
{$roster->group}
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="$contact->url != null"}
|
|
<li>
|
|
<span class="primary icon gray">
|
|
<i class="material-icons">link</i>
|
|
</span>
|
|
<div>
|
|
<p>{$c->__('general.website')}</p>
|
|
<p>
|
|
{if="filter_var($contact->url, FILTER_VALIDATE_URL)"}
|
|
<a href="{$contact->url}" target="_blank">{$contact->url}</a>
|
|
{else}
|
|
{$contact->url}
|
|
{/if}
|
|
</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="$contact->email != null"}
|
|
<li>
|
|
<span class="primary icon gray"><i class="material-icons">email</i></span>
|
|
<div>
|
|
<p>{$c->__('general.email')}</p>
|
|
<p><a href="mailto:{$contact->email}">{$contact->email}</a></p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="$contact->description != null && trim($contact->description) != ''"}
|
|
<li>
|
|
<span class="primary icon gray"><i class="material-icons">subject</i></span>
|
|
<div>
|
|
<p>{$c->__('general.about')}</p>
|
|
<p class="all">
|
|
{autoescape="off"}
|
|
{$contact->description|nl2br|addEmojis}
|
|
{/autoescape}
|
|
</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
|
|
{if="strtotime($contact->date) != 0"}
|
|
<li class="block">
|
|
<span class="primary icon gray"><i class="material-icons">cake</i></span>
|
|
<div>
|
|
<p>{$c->__('general.date_of_birth')}</p>
|
|
<p>{$contact->date|strtotime|prepareDate:false}</p>
|
|
</div>
|
|
</li>
|
|
{/if}
|
|
</ul>
|
|
</div>
|
|
|
|
{if="$pictures->count() > 0"}
|
|
<div class="tabelem" title="{$c->__('general.pictures')}" id="contact_medias">
|
|
<ul class="grid active">
|
|
{loop="$pictures"}
|
|
<li style="background-image: url('{$value->file['uri']|protectPicture}')"
|
|
onclick="Preview_ajaxHttpShow('{$value->file['uri']}')">
|
|
<i class="material-icons">visibility</i>
|
|
</li>
|
|
{/loop}
|
|
</ul>
|
|
</div>
|
|
{/if}
|
|
|
|
<br />
|
|
</section>
|