340 lines
21 KiB
HTML
340 lines
21 KiB
HTML
<div loading-spinner if="state.isPersonDataLoading" centered="true" overlay="true"></div>
|
|
|
|
<div tabindex="0" role="region" class="person-profile__not-found" ng-if="!state.isPersonDataLoading && !person.id">
|
|
<h3>{{'person.details.notFound' | i18n}}</h3>
|
|
</div>
|
|
|
|
<div ux-id="person-details" class="person-profile" ng-if="!state.isPersonDataLoading && person.id" ng-class="{ 'person-profile__header-edit': editHeader}">
|
|
|
|
<div class="person-profile__header clearfix">
|
|
|
|
<!--Person header section-->
|
|
<editable-content-section ux-id="profile-header" id="ticket-header" class="custom-edit-button" hide-edit-button="editDisabledFor('ticket-header')"
|
|
edit-mode-allowed="person.accessMappings.detailsEditAllowed" aria-label="{{'ticket.region.header' | i18n}}" role="region" tabindex="0">
|
|
|
|
<!-- Read mode content -->
|
|
<div ng-show="!editMode" class="ticket__management clearfix">
|
|
<div class="profile__header-icon">
|
|
<img alt="{{person.fullName}}" class="person__userpic" thumbnail-img="{{person.thumbnail}}" imgplaceholder="user" />
|
|
|
|
<div ux-id="profile-image" ng-show="person.accessMappings.detailsEditAllowed" class="person__edit-icon">
|
|
<input type="file" name="file" onchange="angular.element(this).scope().handleFileChange(this)" class="edit-icon__file-input"
|
|
aria-label="{{'person.details.edit.personImage'| i18n}}" ie-activate-by-enter/>
|
|
<div class="icon-pencil"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="profile__header-content">
|
|
<div class="profile__title-content">
|
|
<span class="profile__title" ux-id="fullname" ng-if="isFullVersion" title="{{person.fullName}}">{{person.fullName}}</span>
|
|
<span ng-if="!isFullVersion"><a ux-id="fullname-link" class="profile__title" href="#/person/{{person.id | escape}}" target="{{setTarget}}" title="{{person.fullName}}">{{person.fullName}}</a></span>
|
|
<a ux-id="view-full-link" class="profile__display-link" aria-label="{{'search.preview.viewFullPerson' | i18n}}" ng-if="!isFullVersion" href="#/person/{{person.id | escape}}">{{'search.preview.viewFullPerson' | i18n}}</a>
|
|
<span class="person-summary__VIP" ng-if="person.isVIP">{{'common.labels.vip' | i18n}}</span>
|
|
</div>
|
|
|
|
<div class="person__department-section">
|
|
<div ux-id="job-title">{{person.jobTitle}}</div>
|
|
<div ux-id="organization">{{person.organization}}</div>
|
|
<div ux-id="department">{{person.department}}</div>
|
|
</div>
|
|
|
|
<div ux-id="company-name" class="person__company-name">
|
|
{{person.company.name}}
|
|
</div>
|
|
|
|
<div class="profile__action-bar person__action-bar" ng-if="displayMenu" person-menu="person">
|
|
<div ux-id="details-edit" title="{{'controls.action.edit' | i18n}}" class="profile-action-bar__item edit-ticket-header-button" role="link" tabindex="0"
|
|
aria-label="{{'controls.action.edit' | i18n}}"
|
|
ng-if="person.accessMappings.detailsEditAllowed" ng-click="handleExternalEditClick()" ng-enter="handleExternalEditClick()">
|
|
<i class="icon-pencil"></i></div>
|
|
<div class="profile-action-bar__item dropdown" title="{{'controls.action.share' | i18n}}">
|
|
<button type="button" class="btn_link dropdown-toggle" title="{{'controls.action.share' | i18n}}">
|
|
<i ux-id="share-btn" class="icon-share"></i>
|
|
</button>
|
|
<ul class="profile-action-bar__item-menu dropdown-menu">
|
|
<li>
|
|
<div ux-id="share-ticket-email" ng-class="(disableClick) ? 'disabled' : ''" class="dropdown-item" ng-click="disableClick || emailPerson($event)" ng-enter="emailPerson($event)" tabindex="0" role="menuitem">
|
|
{{'action.ticket.email' | i18n: ('common.labels.' + person.type | i18n) }}
|
|
</div>
|
|
</li>
|
|
<li ng-if="chatModel.connected">
|
|
<a ux-id="share-ticket-chat" class="dropdown-item profile-action-bar__item-menu_start-chat" tabindex="0" role="menuitem">
|
|
{{'chat.startFromPerson.headerMenu' | i18n: ('common.labels.' + person.type | i18n) }}
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div ux-id="print-btn" title="{{'controls.action.print' | i18n}}" class="profile-action-bar__item"
|
|
aria-label="{{'controls.action.print' | i18n}}" role="link" tabindex="0"
|
|
ng-click="showPrintDialog($event)" ng-enter="showPrintDialog($event)">
|
|
<i class="{{'icon-printer'}}"></i>
|
|
</div>
|
|
<launch-actions-dropdown ux-id="person-actions" class="profile-action-bar__item profile-action-bar__item_text" context="person"></launch-actions-dropdown>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Edit mode content -->
|
|
<div class="edit-header" ng-show="editMode">
|
|
<form name="editPersonHeaderSection">
|
|
<edit-person-data ux-id="edit-header" person-profile="person"></edit-person-data>
|
|
</form>
|
|
</div>
|
|
|
|
</editable-content-section>
|
|
</div>
|
|
|
|
<div class="person-profile__body" aria-label="{{'common.labels.person' | i18n}} {{'ticket.region.details' | i18n}}" role="region" tabindex="0">
|
|
|
|
<editable-content-section ux-id="profile-body" id="person-customer-card"
|
|
hide-edit-button="editDisabledFor('person-customer-card')"
|
|
edit-mode-allowed="person.accessMappings.detailsEditAllowed">
|
|
|
|
<!-- Read mode content -->
|
|
<div class="person-profile__summary-section" ng-show="!editMode">
|
|
|
|
<person-info-card person="person" person-type="person" profile-type="person" class="person__location-section clearfix"></person-info-card>
|
|
|
|
<div class="person__agent" ng-show="person.isSupportStaff">
|
|
<button ux-id="show-more-btn" type="button" class="btn_link" ng-click="isCollapsed = !isCollapsed" ng-enter="isCollapsed = !isCollapsed" aria-expanded="{{ !isCollapsed }}">
|
|
{{ isCollapsed ? ('common.labels.showMore' | i18n) : ('common.labels.showLess' | i18n) }}
|
|
<i class="person__agent-icon" ng-class="isCollapsed ? 'icon-angle_down' : 'icon-angle_up'"></i>
|
|
</button>
|
|
|
|
<div class="person__agent-info" collapse="isCollapsed">
|
|
<div class="person__introduction-title">{{'person.details.introduction' | i18n}}</div>
|
|
<div ux-id="introduction" class="person__introduction-desc">
|
|
{{person.introduction}}
|
|
</div>
|
|
|
|
<div class="person__agent-info-block">
|
|
<div class="person__agent-availability">
|
|
<div>
|
|
<span class="person__info-label">{{'person.details.enabled' | i18n}}:</span>
|
|
<span ux-id="person-enabled_{{::person.enabled}}" class="person__point-value">{{person.enabled? ('common.labels.yes' | i18n) : ('common.labels.no' | i18n)}}</span>
|
|
</div>
|
|
<div>
|
|
<span class="person__info-label">{{'person.details.availableForAssignment' | i18n}}:</span>
|
|
<span ux-id="assignment_{{::person.availableForAssignment}}" class="person__point-value">{{person.availableForAssignment? ('common.labels.yes' | i18n) : ('common.labels.no' | i18n)}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="person__agent-network">
|
|
<div>
|
|
<span class="person__info-label">{{'person.details.linkedin' | i18n}}:</span>
|
|
<span ng-show="isURL(person.linkedIn)" class="person__point-value"><a ux-id="linkedin-link" href="{{person.linkedIn}}" target="_blank" title="{{person.linkedIn}}" rel="nofollow noopener noreferrer">{{person.linkedIn | characters:20}}</a></span>
|
|
<span ux-id="linked-in" ng-show="!isURL(person.linkedIn)" class="person__point-value" title="{{person.linkedIn}}">{{person.linkedIn | characters:20}}</span>
|
|
</div>
|
|
<div>
|
|
<span class="person__info-label">{{'person.details.twitter' | i18n}}:</span>
|
|
<span ng-show="isURL(person.twitter)" class="person__point-value"><a ux-id="twitter-url" href="{{person.twitter}}" target="_blank" title="{{person.twitter}}" rel="nofollow noopener noreferrer">{{person.twitter | characters:20}}</a></span>
|
|
<span ux-id="twitter" ng-show="!isURL(person.twitter)" class="person__point-value" title="{{person.twitter}}">{{person.twitter | characters:20}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="person__agent-organization">
|
|
<div>
|
|
<span class="person__info-label">{{'person.details.agentsManager' | i18n}}:</span>
|
|
<a ux-id="manager-fullname" aria-label="{{'person.details.agentsManager' | i18n}} {{person.manager.fullName}}" class="person__point-link" href="#/person/{{person.manager.loginId | escape}}" target="{{setTarget}}">{{person.manager.fullName}}</a>
|
|
</div>
|
|
<div>
|
|
<span class="person__info-label">{{'person.details.costCenter' | i18n}}:</span>
|
|
<span ux-id="cost-center" class="person__point-value">{{person.costCenter}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="person-service-summary__section">
|
|
<div class="person-service-summary__title">
|
|
{{'personInfoCard.label.serviceSummary' | i18n}}
|
|
</div>
|
|
<div class="person-service-summary__body">
|
|
<div class="person-service-summary__rating-section">
|
|
<div aria-label="{{'personInfoCard.label.avgRating' | i18n : serviceSummary.ratingScore}}" title="{{'personInfoCard.label.avgRating' | i18n : serviceSummary.ratingScore}}" tabindex="0">
|
|
<span ng-repeat="marker in serviceSummary.ratingMarkers" ng-class="{'icon-star_o': marker.value === 0, 'icon-star_half': marker.value === 50, 'icon-star': marker.value === 100}" class="person-service-summary__rating-star"></span>
|
|
<span ux-id="rating-count" class="person-service-summary__rating-count">
|
|
{{serviceSummary.ratingCount}} {{'personInfoCard.label.ratingCount' | i18n}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="person-service-summary__escalation-section" tabindex="0">
|
|
<span class="icon-exclamation_triangle"></span>
|
|
<span ux-id="escalation" class="person-service-summary__escalation">{{'personInfoCard.label.numberOfEscalations' | i18n: (serviceSummary.escalation)}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="profile-summary__editable-content">
|
|
<form name="editPersonSummarySection">
|
|
<edit-person-contact ux-id="profile-contact" person-profile="person"
|
|
ng-show="editMode"
|
|
class="editable-content-section-block">
|
|
</edit-person-contact>
|
|
<custom-field-area ux-id="profile-custom-fields" ticket="person" stacked="true"
|
|
panel-id="personDetailsScreen.Person Summary"
|
|
class="editable-content-section-block">
|
|
</custom-field-area>
|
|
</form>
|
|
</div>
|
|
|
|
</editable-content-section>
|
|
|
|
<div class="person__relationships-section" aria-label="{{'ticket.region.relationship' | i18n}}" role="region" tabindex="0">
|
|
<tabset justified="true" class="tabset_short-relative-tabs" ng-if="!person.isSupportStaff">
|
|
<tab tooltip-append-to-body="true"
|
|
tooltip-popup-delay="300"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
ux-id="open-tickets-tab" heading="{{'common.tabs.openTickets' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.openTickets' | i18n}} {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-tickets-found" ng-show="!personOpenTickets.length">
|
|
{{'person.details.tickets.noTicketsFound' | i18n}}
|
|
</div>
|
|
<div ux-id="ticket_{{$index}}" class="person-item__template" ng-repeat="ticket in personOpenTickets" aria-label="{{'common.tabs.tickets' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" role="heading" aria-labelledby="personInfo_{{data.id}}">
|
|
<person-ticket-renderer data="ticket" selected-chat="selectedChat" set-style="setDeafultStyleForTickets"></person-ticket-renderer>
|
|
</div>
|
|
<div class="person-items__loading-spinner" ng-if="state.isMoreRequestedByTicketsLoading">
|
|
<div loading-spinner if="true" inline="true" centered="true"></div>
|
|
</div>
|
|
<button ux-id="load-more" type="button" ng-click="loadMoreRequestedByTickets()" ng-show="personOpenTicketsChunkAvailable"
|
|
ng-disabled="state.isMoreRequestedByTicketsLoading" class="btn_primary person-items__loadMore-btn" aria-expanded="{{!personOpenTicketsChunkAvailable}}">
|
|
<span class="icon-repeat"></span>
|
|
{{'common.labels.loadMore' | i18n}}
|
|
</button>
|
|
<div ng-include src="'views/person/person-servicebroker-tickets-partial.html'" ng-if="isServiceBrokerEnabled"></div>
|
|
</div>
|
|
</tab>
|
|
|
|
<tab ux-id="all-tickets-tab"
|
|
tooltip-append-to-body="true"
|
|
tooltip-popup-delay="300"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
heading="{{'common.tabs.allTickets' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.allTickets' | i18n}} {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-tickets-found" ng-show="!personAllTickets.length">
|
|
{{'person.details.tickets.noTicketsFound' | i18n}}
|
|
</div>
|
|
<div ux-id="ticket_{{$index}}" class="person-item__template" ng-repeat="ticket in personAllTickets" aria-label="{{'common.tabs.tickets' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" role="heading" aria-labelledby="personInfo_{{data.id}}">
|
|
<person-ticket-renderer data="ticket" selected-chat="selectedChat" set-style="setDeafultStyleForTickets"></person-ticket-renderer>
|
|
</div>
|
|
<div class="person-items__loading-spinner" ng-if="state.isMoreAllTicketsLoading">
|
|
<div loading-spinner if="true" inline="true" centered="true"></div>
|
|
</div>
|
|
<button ux-id="load-more" type="button" ng-click="loadMoreAllTickets()" ng-show="personAllTicketsChunkAvailable"
|
|
ng-disabled="state.isMoreAllTicketsLoading" class="btn_primary person-items__loadMore-btn" aria-expanded="{{ !personAllTicketsChunkAvailable }}">
|
|
<span class="icon-repeat"></span>
|
|
{{'common.labels.loadMore' | i18n}}
|
|
</button>
|
|
</div>
|
|
</tab>
|
|
|
|
<tab ux-id="assets-tab" heading="{{'common.tabs.assets' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.assets' | i18n}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-assets-found" ng-show="!personAssetList.length">
|
|
{{'person.details.assets.noAssetsFound' | i18n}}
|
|
</div>
|
|
<div ux-id="person-asset_{{::$index}}" class="person-item__template" ng-repeat="asset in personAssetList" aria-label="{{'common.tabs.assets' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" role="heading" aria-labelledby="assetInfo_{{data.name}}">
|
|
<person-asset-renderer data="asset" ng-click="showProfileDetails(asset, 'asset', $event)"></person-asset-renderer>
|
|
</div>
|
|
</div>
|
|
</tab>
|
|
</tabset>
|
|
|
|
<tabset justified="true" class="tabset_short-relative-tabs" ng-if="person.isSupportStaff">
|
|
<tab ux-id="tickets-tab" heading="{{'common.tabs.tickets' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.tickets' | i18n}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-tickets-found"
|
|
ng-show="!personOpenTickets.length && !personAssignedTickets.length">
|
|
{{'person.details.tickets.noTicketsFound' | i18n}}
|
|
</div>
|
|
<div class="person-items__tickets" ng-if="personOpenTickets.length">
|
|
<div ux-id="requestedby-count" tabindex="0" role="heading" class="person-ticket__type-title">
|
|
<span aria-label="{{requestedByCount()}} {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
style="unicode-bidi: embed; direction: ltr;">{{requestedByCount()}}</span>
|
|
</div>
|
|
<div ux-id="open-ticket_{{$index}}" class="person-item__template" ng-repeat="ticket in personOpenTickets | orderBy :'modifiedDate': true" aria-label="{{'common.tabs.tickets' | i18n}} {{'ticket.region.details' | i18n}}" tabindex="0"
|
|
role="heading" aria-labelledby="personInfo_{{data.id}}">
|
|
<person-ticket-renderer data="ticket" selected-chat="selectedChat" set-style="setDeafultStyleForTickets"></person-ticket-renderer>
|
|
</div>
|
|
</div>
|
|
<div class="person-items__loading-spinner" ng-if="state.isMoreRequestedByTicketsLoading">
|
|
<div loading-spinner if="true" inline="true" centered="true"></div>
|
|
</div>
|
|
<button ux-id="load-more-requestedby" type="button" ng-click="loadMoreRequestedByTickets()" ng-show="personOpenTicketsTotalMatches > personOpenTickets.length"
|
|
ng-disabled="state.isMoreRequestedByTicketsLoading" class="btn_primary person-items__loadMore-btn" aria-expanded="{{ !(personOpenTicketsTotalMatches > personOpenTickets.length) }}">
|
|
<span class="icon-repeat"></span>
|
|
{{'common.labels.loadMore' | i18n}}
|
|
</button>
|
|
<div class="clearfix person-items__tickets-assigned" ng-if="personAssignedTickets.length">
|
|
<div ux-id="assigned-count" tabindex="0" role="heading" class="person-ticket__type-title">
|
|
<span aria-label="{{'person.details.tickets.assignedTo' | i18n}} {{person.firstName}} ({{personAssignedTicketsTotalMatches || 0}}) {{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
tooltip="{{ (restrictPersonProfileResultForNoOfDays === 0) ? '' : ('person.details.tooltip.pastNDays' | i18n: restrictPersonProfileResultForNoOfDays)}}"
|
|
style="unicode-bidi: embed; direction: ltr;">{{'person.details.tickets.assignedTo' | i18n}} {{person.firstName}} ({{personAssignedTicketsTotalMatches || 0}})
|
|
</span>
|
|
</div>
|
|
<div ux-id="assined-ticket_{{$index}}" class="person-item__template" ng-repeat="ticket in personAssignedTickets | orderBy :'modifiedDate':true" aria-label="{{'common.tabs.tickets' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" aria-labelledby="personInfo_{{data.id}}" role="heading">
|
|
<person-ticket-renderer data="ticket" selected-chat="selectedChat" set-style="setDeafultStyleForTickets"></person-ticket-renderer>
|
|
</div>
|
|
</div>
|
|
<div class="person-items__loading-spinner" ng-if="state.isPersonMoreTicketsLoading">
|
|
<div loading-spinner if="true" inline="true" centered="true"></div>
|
|
</div>
|
|
<button ux-id="load-more-assigned" type="button" ng-click="loadMoreAssignedTickets()" ng-show="personAssignedTicketsTotalMatches > personAssignedTickets.length"
|
|
ng-disabled="state.isPersonMoreTicketsLoading" class="btn_primary person-items__loadMore-btn" aria-expanded="{{ !(personAssignedTicketsTotalMatches > personAssignedTickets.length) }}">
|
|
<span class="icon-refresh"></span>
|
|
{{'common.labels.loadMore' | i18n}}
|
|
</button>
|
|
<div ng-include src="'views/person/person-servicebroker-tickets-partial.html'" ng-if="isServiceBrokerEnabled"></div>
|
|
</div>
|
|
|
|
</tab>
|
|
|
|
<tab ux-id="assets-tab" heading="{{'common.tabs.assets' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.assets' | i18n}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-assets-found" ng-show="!personAssetList.length">
|
|
{{'person.details.assets.noAssetsFound' | i18n}}
|
|
</div>
|
|
<div ux-id="asset_{{::$index}}" class="person-item__template" ng-repeat="asset in personAssetList" aria-label="{{'common.tabs.assets' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" role="heading" aria-labelledby="assetInfo_{{data.name}}">
|
|
<person-asset-renderer data="asset" ng-click="showProfileDetails(asset, 'asset', $event)"></person-asset-renderer>
|
|
</div>
|
|
</div>
|
|
</tab>
|
|
|
|
<tab ux-id="support-groups-tab" heading="{{'common.tabs.supportGroups' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.supportGroups' | i18n}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-groups-found" ng-show="!personSupportGroups.length">
|
|
{{'person.details.supportGroups.noGroupsFound' | i18n}}
|
|
</div>
|
|
<div ux-id="group_{{::$index}}" class="person-item__template" id="support-groups-template"
|
|
ng-repeat="group in personSupportGroups"
|
|
aria-label="{{'common.tabs.supportGroups' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" role="heading" aria-labelledby="personSupportGroupInfo_{{data.name}}">
|
|
<person-support-group-renderer data="group"></person-support-group-renderer>
|
|
</div>
|
|
</div>
|
|
</tab>
|
|
|
|
<tab ux-id="ka-tab" heading="{{'common.tabs.knowledge' | i18n}}">
|
|
<div role="region" aria-label="{{'common.tabs.knowledge' | i18n}}" tabindex="0">
|
|
<div tabindex="0" class="person-items__no-knowledge-articles-found" ng-show="!personKnowledgeArticles.length">
|
|
{{'person.details.knowledgeArticles.noArticlesFound' | i18n}}
|
|
</div>
|
|
<div ux-id="ka_{{::$index}}"class="person-item__template" ng-repeat="article in personKnowledgeArticles" aria-label="{{'common.tabs.knowledge' | i18n}} {{'ticket.region.details' | i18n}}"
|
|
tabindex="0" role="heading" aria-labelledby="personKnowledgeInfo_{{data.title}}">
|
|
<person-knowledge-renderer data="article" ng-click="showProfileDetails(article, 'knowledge', $event)"></person-knowledge-renderer>
|
|
</div>
|
|
</div>
|
|
</tab>
|
|
</tabset>
|
|
</div>
|
|
</div>
|
|
</div>
|