358 lines
18 KiB
HTML
358 lines
18 KiB
HTML
<div loading-spinner if="state.dataIsLoading" centered="true" overlay="true"></div>
|
|
<div class="ka-metadata__main-section_view clearfix" role="region" ng-if="!editMode">
|
|
<div class="ka-metadata__section" ng-if="article.articleVisibilityGroup.length">
|
|
<div class="label__text">
|
|
{{ 'create.knowledge.visibility' | i18n }}
|
|
</div>
|
|
<div>
|
|
<span ng-repeat="visibility in article.articleVisibilityGroup">{{visibility | parseVisibilityGroups}}
|
|
{{$last ? '' : ', '}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section clearfix">
|
|
<div class="label__text">
|
|
{{ 'create.knowledge.visibility.internalUse' | i18n }}
|
|
</div>
|
|
<div>
|
|
{{article.internalUse ? 'common.labels.no' : 'common.labels.yes' | i18n}}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section clearfix">
|
|
<div class="ka-metadata__ca-section-item" ng-if="article.author">
|
|
<div class="app__person-avatar pull-left">
|
|
<img alt="{{article.author.fullName}}" class="app__person-avatar_small" imgplaceholder="user"
|
|
user-availability="article.author" thumbnail-img="{{article.author.thumbnail}}" />
|
|
</div>
|
|
<div class="ka__author-name">
|
|
<div class="ka-metadata__label-small">{{'create.knowledge.author' | i18n}}</div>
|
|
<span ng-if="article.author.loginId" class="ticket__field-value">
|
|
<a aria-label="{{'create.knowledge.author' | i18n}} {{article.author.fullName}}"
|
|
href="#/person/{{article.author.loginId | escape}}">{{article.author.fullName}}</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="ka-metadata__ca-section-item" ng-if="article.language">
|
|
<div class="ka-metadata__label-small">{{'common.labels.language' | i18n}}</div>
|
|
<span>{{ article.language | localizeLabel: 'language':'knowledge' }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="clearfix ka-metadata__section" ng-if="article.assignee">
|
|
<div class="app__person-avatar pull-left">
|
|
<img class="app__person-avatar_small" ng-if="article.assignee.loginId" alt="{{article.assignee.fullName}}" user-availability="article.assignee" imgplaceholder="user"
|
|
thumbnail-img="{{'data:' + article.assignee.thumbnailMime + ';base64,' + article.assignee.thumbnail}}" />
|
|
<span ng-if="!article.assignee.loginId" class="ka-metadata-assignment__none icon-question_circle"></span>
|
|
</div>
|
|
<div class="ka__author-name">
|
|
<div class="ka-metadata__label-small">{{'common.labels.assignedTo' | i18n}}</div>
|
|
<span ng-if="!article.assignee.loginId" class="ticket__field-value">{{'common.label.noneYet' | i18n }}</span>
|
|
<span ng-if="article.assignee.loginId" class="ticket__field-value">
|
|
<a aria-label="{{'common.labels.assignee' | i18n}} {{article.assignee.fullName}}"
|
|
href="#/person/{{article.assignee.loginId | escape}}">{{article.assignee.fullName}}</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section">
|
|
<span class="label__text">
|
|
{{'create.knowledge.company' | i18n}}
|
|
</span>
|
|
|
|
<div class="relative-position">
|
|
{{article.company.name === 'All' ? 'console.category.all' : article.company.name | i18n}} ({{'common.labels.primary' | i18n}})
|
|
<span ng-repeat="company in article.additionalCategoriesCompanies">, {{company.name}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section" ng-if="article.tags && article.tags.length">
|
|
<div class="label__text">
|
|
{{'create.knowledge.keywords' | i18n}}
|
|
</div>
|
|
<div>
|
|
<span class="ka-metadata-tag-panel__keyword" ng-repeat="tag in article.tags track by $index">
|
|
{{tag}}{{$last ? '' : ', '}}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section" ng-if="article.allSites.length">
|
|
<span class="label__text">
|
|
{{'common.label.site' | i18n}}
|
|
</span>
|
|
|
|
<div class="relative-position">
|
|
<span ng-repeat="site in article.allSites">{{site.name ? site.name : site.siteGroup ? site.siteGroup : site.region}} {{site.primary ? '(' + ('common.labels.primary' | i18n) + ')' : ''}}{{$last ? '' : ', '}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section" ng-if="article.allOrganizations.length">
|
|
<span class="label__text">
|
|
{{'create.knowledge.organization.department' | i18n}}
|
|
</span>
|
|
|
|
<div class="relative-position">
|
|
<span ng-repeat="organization in article.allOrganizations">{{organization.department ? organization.department : organization.organization}} {{organization.primary ? '(' + ('common.labels.primary' | i18n) + ')' : ''}}{{$last ? '' : ', '}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__section" ng-if="article.allServices.length">
|
|
<span class="label__text">
|
|
{{'create.knowledge.business.service' | i18n}}
|
|
</span>
|
|
|
|
<div class="relative-position">
|
|
<span ng-repeat="service in article.allServices">{{service.name}} {{service.primary ? '(' + ('common.labels.primary' | i18n) + ')' : ''}}{{$last ? '' : ', '}}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="ka-metadata__categories">
|
|
<div class="categories-section__subcategory" ng-repeat="category in article.categoriesControls">
|
|
<span class="label__text" ng-if="(article.categoriesSet | filter: {name: category.name}).length">{{category.label}}</span>
|
|
<div>
|
|
<div ng-repeat="categoryTag in (article.categoriesSet | filter: {name: category.name})">
|
|
{{(categoryTag | serializeCategory) || ('categorization.noneSet' | i18n)}}{{categoryTag.primary ? ' (' + ('common.labels.primary' | i18n) + ')' : ''}}{{$last ? '' : ','}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<form class="ka-metadata__main-section clearfix" role="region" ng-if="editMode">
|
|
<ka-visibility-directive article="article" company="userCompany"></ka-visibility-directive>
|
|
<!-- author and language -->
|
|
<div class="ka-metadata__ca-section clearfix">
|
|
<div class="ka-metadata__ca-section-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'create.knowledge.author' | i18n}}
|
|
</span>
|
|
|
|
<div class="relative-position">
|
|
<input type="text"
|
|
title="{{'create.knowledge.author' | i18n}}"
|
|
class="text-input full-width"
|
|
ng-model="article.author.fullName"
|
|
required
|
|
ng-disabled="true"
|
|
placeholder="{{ 'create.knowledge.author.placeholder' | i18n }}">
|
|
</div>
|
|
</label>
|
|
</div>
|
|
<div class="ka-metadata__ca-section-item">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'common.labels.language' | i18n}}
|
|
</span>
|
|
|
|
<div class="relative-position">
|
|
<selection selection-items="languages"
|
|
selected-item="state.selectedLanguage"
|
|
disabled-selection="!article.accessMappings.detailsEditAllowed"
|
|
title-text="{{'common.labels.language' | i18n}}"
|
|
label="label"
|
|
value="name"
|
|
selection-callback="selectLanguage(item)"
|
|
update-selected-item=true
|
|
show-clear=true>
|
|
</selection>
|
|
</div>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<!-- assignee -->
|
|
<div class="ka-metadata__section col-xs-12">
|
|
<span class="label__text">{{ 'create.ticket.assignee' | i18n }}</span>
|
|
|
|
<div>
|
|
<div class="auto-assign__text" ng-if="article.autoAssign">
|
|
{{ 'create.ticket.auto.assign' | i18n }}
|
|
</div>
|
|
<div class="ka-metadata__assignment" ng-if="!article.autoAssign">
|
|
<img ng-if="article.assignee.loginId" alt="{{article.assignee.fullName}}" class="ticket-assignee__thumbnail" imgplaceholder="user"
|
|
thumbnail-img="{{'data:' + article.assignee.thumbnailMime + ';base64,' + article.assignee.thumbnail}}" />
|
|
<span ng-if="!article.assignee.loginId" class="ticket-assignee__none icon-question_circle"></span>
|
|
|
|
<div class="ticket-assignee__info">
|
|
<div class="ticket__label-small">{{'common.labels.assignedTo' | i18n }}:</div>
|
|
<span ng-if="!article.assignee.loginId" class="ticket__field-value">{{'common.label.noneYet' | i18n }}</span>
|
|
<span ng-if="article.assignee.loginId" class="ticket__field-value">{{article.assignee.fullName}}</span>
|
|
</div>
|
|
|
|
<div class="ticket-assignee__support-group">
|
|
<div class="ticket__label-small">{{'common.labels.supportGroup' | i18n}}:</div>
|
|
<span class="ticket__field-value">{{ article.assigneeGroup.name || ('common.label.noneYet' | i18n ) }}</span>
|
|
</div>
|
|
</div>
|
|
<div class="ticket-incident-assignee__action" ng-if="article.accessMappings.assigneeEditAllowed && article.assignee.loginId !== loggedInUserId"
|
|
ng-click="assignToMe($event, 'ticketassignee')" ng-enter="assignToMe($event, 'ticketassignee')">
|
|
<i class="icon-user_plus"></i>
|
|
<a aria-label="{{'common.labels.assignToMe' | i18n}}">
|
|
{{'common.labels.assignToMe' | i18n }}
|
|
</a>
|
|
</div>
|
|
<button type="button" class="ka-metadata__change_assignment-btn ka-metadata__assignment-btn" ng-click="assign($event)" ng-if="article.accessMappings.assigneeEditAllowed"
|
|
aria-label="{{'common.button.change' | i18n}} {{'common.labels.assignee' | i18n}}">
|
|
{{'common.button.change' | i18n}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<!-- keywords -->
|
|
<div class="col-xs-12 ka-metadata__section" ng-if="article.accessMappings.detailsEditAllowed || article.tags.length">
|
|
<label class="label_control-wrap">
|
|
<span class="label__text">
|
|
{{'create.knowledge.keywords' | i18n}}
|
|
</span>
|
|
|
|
<div ng-class="{'tag-section': true, 'tag-section_disabled': !article.accessMappings.detailsEditAllowed}" ng-if="article.tags.length">
|
|
<div class="tag_removable" ng-repeat="tag in article.tags track by $index">
|
|
{{tag}}
|
|
<i ng-show="article.accessMappings.keywordsEditAllowed" class="icon-cross tag__remove" ng-click="removeTag(tag, article.tags)" ng-enter="removeTag(tag, article.tags)"
|
|
title="{{'common.button.remove' | i18n}} {{'common.labels.keyword'| i18n}} {{tag}}" role="link" tabindex="0"></i>
|
|
</div>
|
|
</div>
|
|
|
|
<input ng-show="article.accessMappings.keywordsEditAllowed" type="text"
|
|
ng-if="article.accessMappings.detailsEditAllowed"
|
|
title="{{'create.knowledge.keywords' | i18n}}: {{ 'create.knowledge.keywords.placeholder' | i18n }}"
|
|
class="text-input full-width"
|
|
ng-model="state.tag"
|
|
role="textbox"
|
|
ng-enter="addKeyword();"
|
|
placeholder="">
|
|
|
|
<div ng-show="article.accessMappings.keywordsEditAllowed" class="ka-metadata__input-description">{{ 'create.knowledge.keywords.placeholder' | i18n }}</div>
|
|
</label>
|
|
</div>
|
|
<!-- company -->
|
|
<div class="ka-metadata__section col-xs-12" ng-if="article.accessMappings.companyEditAllowed || article.allCompanies.length">
|
|
<label class="label_control-wrap" for="ka-metadata__company">
|
|
<span class="label__text">
|
|
{{'create.knowledge.company' | i18n}}
|
|
</span>
|
|
</label>
|
|
<div ng-class="{'tag-section': true, 'tag-section_disabled': !article.accessMappings.companyEditAllowed}" ng-if="article.allCompanies.length">
|
|
<div ng-class="{tag: true, tag_removable: !company.primary, 'tag__potential-primary': article.accessMappings.companyEditAllowed}"
|
|
ng-repeat="company in article.allCompanies" ng-click="article.accessMappings.companyEditAllowed && setPrimaryCompany(company)"
|
|
ng-enter="article.accessMappings.companyEditAllowed && setPrimaryCompany(company)" tabindex="0">
|
|
<span class="tag__name">{{company.name == 'All' ? ('console.category.all' | i18n) : company.name }}</span>
|
|
<span class="tag__primary" ng-if="company.primary">{{"common.labels.primary" | i18n}}</span>
|
|
<i class="icon-cross tag__remove" ng-click="removeCompany(company, $event)" ng-enter="removeCompany(company, $event)" ng-if="!company.primary"
|
|
title="{{'common.button.remove' | i18n}} {{'common.label.company'| i18n}} {{company.name}}" role="link" tabindex="0"></i>
|
|
</div>
|
|
</div>
|
|
<div class="relative-position" ng-if="article.accessMappings.companyEditAllowed">
|
|
<selection input-id="ka-metadata__company"
|
|
selection-items="availiableCompanies"
|
|
selected-item=""
|
|
selection-callback="addCompany(item)"
|
|
title-text="{{'create.knowledge.company.placeholder' | i18n}}"
|
|
label="name"
|
|
value="name"
|
|
update-selected-item=false,
|
|
disabled-selection="!availiableCompanies.length && !state.tooManyCompanies"
|
|
selection-filter="true"
|
|
selection-filter-placeholder-text="assignBlade.searchCompany"
|
|
show-chunking-tooltip="true"
|
|
typeahead-mode="state.tooManyCompanies"
|
|
typeahead-details="company as company.name for company in getList($viewValue)"
|
|
typeahead-get-list="getCompaniesByName(name)"
|
|
show-clear=true>
|
|
</selection>
|
|
</div>
|
|
</div>
|
|
<!-- sites -->
|
|
<div class="col-xs-12 ka-metadata__section" ng-if="article.accessMappings.detailsEditAllowed || article.allSites.length">
|
|
<label class="label_control-wrap" for="foundation-selector__site">
|
|
<span class="label__text">
|
|
{{'common.label.site' | i18n}}
|
|
</span>
|
|
</label>
|
|
<div ng-class="{'tag-section': true, 'tag-section_disabled': !article.accessMappings.detailsEditAllowed}" ng-if="article.allSites.length">
|
|
<div ng-repeat="site in article.allSites" ng-click="article.accessMappings.detailsEditAllowed && setPrimaryTag(site, article.allSites)"
|
|
ng-enter="article.accessMappings.detailsEditAllowed && setPrimaryTag(site, article.allSites)" tabindex="0"
|
|
ng-class="{tag_removable: true, 'tag__potential-primary': site.companyName === state.primaryCompany.name}">
|
|
<span class="tag__name">{{buildSiteTag(site)}}</span>
|
|
<span class="tag__primary" ng-if="site.primary">{{("common.labels.primary" | i18n).toUpperCase()}}</span>
|
|
<i class="icon-cross tag__remove" ng-click="removeTag(site, article.allSites)" ng-enter="removeTag(site, article.allSites)"
|
|
title="{{'common.button.remove' | i18n}} {{'common.label.site'| i18n}} {{buildSiteTag(site)}}" role="link" tabindex="0"></i>
|
|
</div>
|
|
</div>
|
|
<foundation-selector ng-if="article.accessMappings.detailsEditAllowed" type="site" multiple="true" use-chunking="false"
|
|
typeahead-mode="true" options="foundationOptions.site" selected-foundations="article.allSites" inline="true" is-full-width="true"></foundation-selector>
|
|
</div>
|
|
<!-- organisation/department -->
|
|
<div class="col-xs-12 ka-metadata__section" ng-if="article.accessMappings.detailsEditAllowed || article.allOrganizations.length">
|
|
<label class="label_control-wrap" for="foundation-selector__organization">
|
|
<span class="label__text">
|
|
{{'create.knowledge.organization.department' | i18n}}
|
|
</span>
|
|
</label>
|
|
|
|
<div ng-class="{'tag-section': true, 'tag-section_disabled': !article.accessMappings.detailsEditAllowed}" ng-if="article.allOrganizations.length">
|
|
<div ng-repeat="organization in article.allOrganizations" ng-click="article.accessMappings.detailsEditAllowed && setPrimaryTag(organization, article.allOrganizations)"
|
|
ng-enter="article.accessMappings.detailsEditAllowed && setPrimaryTag(organization, article.allOrganizations)" tabindex="0"
|
|
ng-class="{tag_removable: true, 'tag__potential-primary': organization.companyName === state.primaryCompany.name}">
|
|
<span class="tag__name">{{buildOrganizationTag(organization)}}</span>
|
|
<span class="tag__primary" ng-if="organization.primary">{{("common.labels.primary" | i18n).toUpperCase()}}</span>
|
|
<i class="icon-cross tag__remove" ng-click="removeTag(organization, article.allOrganizations)" ng-enter="removeTag(organization, article.allOrganizations)"
|
|
title="{{'common.button.remove' | i18n}} {{'common.label.organization'| i18n}} {{buildOrganizationTag(organization)}}" role="link" tabindex="0"></i>
|
|
</div>
|
|
</div>
|
|
<foundation-selector ng-if="article.accessMappings.detailsEditAllowed" type="organization" multiple="true" use-chunking="false" typeahead-mode="true"
|
|
options="foundationOptions.organization" selected-foundations="article.allOrganizations" inline="true" is-full-width="true"></foundation-selector>
|
|
</div>
|
|
<!-- business service -->
|
|
<div class="col-xs-12 ka-metadata__section" ng-if="article.accessMappings.detailsEditAllowed || article.allServices.length">
|
|
<label class="label_control-wrap" for="ka-metadata__business-service">
|
|
<span class="label__text">
|
|
{{'create.knowledge.business.service' | i18n}}
|
|
</span>
|
|
</label>
|
|
<div ng-class="{'tag-section': true, 'tag-section_disabled': !article.accessMappings.detailsEditAllowed}" ng-if="article.allServices.length">
|
|
<div class="tag_removable tag__potential-primary" ng-repeat="service in article.allServices" ng-click="article.accessMappings.detailsEditAllowed && setPrimaryBusinessService(service, article.allServices);"
|
|
ng-enter="article.accessMappings.detailsEditAllowed && setPrimaryBusinessService(service);" tabindex="0">
|
|
<span class="tag__name">{{service.name}}</span>
|
|
<span class="tag__primary" ng-if="service.primary">{{("common.labels.primary" | i18n).toUpperCase()}}</span>
|
|
<i class="icon-cross tag__remove" ng-click="removeTag(service, article.allServices)" ng-enter="removeTag(service, article.allServices)"
|
|
title="{{'common.button.remove' | i18n}} {{'common.labels.service'| i18n}} {{service.name}}" role="link" tabindex="0"></i>
|
|
</div>
|
|
</div>
|
|
<div class="ka-metadata__business-service" ng-if="article.accessMappings.detailsEditAllowed">
|
|
<input type="text"
|
|
title="{{'create.knowledge.business.service' | i18n}}"
|
|
class="text-input full-width"
|
|
id="ka-metadata__business-service"
|
|
ng-model="state.service"
|
|
role="combobox"
|
|
placeholder="{{ 'create.knowledge.business.service.placeholder' | i18n }}"
|
|
typeahead-min-length="3"
|
|
typeahead-template-url="views/create/custom-add-asset-dropdown.html"
|
|
typeahead="service as service.name for service in searchService.getListOfServiceByText($viewValue, '%')"
|
|
typeahead-on-select="addTag($item, article.allServices, state.service); state.service = ''"
|
|
typeahead-loading="state.loadService"
|
|
typeahead-wait-ms="500">
|
|
<div class="select-custom-dropdown__spinner-container">
|
|
<loading-spinner if="state.loadService" inline="true"></loading-spinner>
|
|
</div>
|
|
<i class="icon-cross item-input__delete-btn" tabindex=0 role="link"
|
|
title="{{'common.button.clear' | i18n}} {{'common.labels.service' | i18n }}" ng-if="state.service && !state.loadService"
|
|
focus-input-on-clear ng-click="state.service = ''" ng-enter="state.service = ''">
|
|
</i>
|
|
</div>
|
|
</div>
|
|
<!-- operationa/product categories -->
|
|
<div class="ka-metadata__categories col-xs-12" ng-show="article.categoriesControls">
|
|
<categories-editor edit-disabled="!article.accessMappings.categorizationEditAllowed"
|
|
entity="article"
|
|
categories="article.categoriesControls"
|
|
update-is-handled-by-parent="false"
|
|
class="editable-content-section-block category-editor__center"
|
|
multiple="true"
|
|
categories-set="article.categoriesSet"
|
|
company="state.primaryCompany">
|
|
</categories-editor>
|
|
</div>
|
|
</form>
|