public/components/content-list-drawer/content-list-drawer.html (566 lines of code) (raw):

<tr class="content-list-drawer content-list-drawer--hidden" ng-class="{'content-list-drawer--trashed': contentItem.item.trashed}"> <td colspan="100"> <div class="drawer"> <div class="drawer__section" ng-class="{'drawer__section--closed' : openSection !== 'furniture'}"> <div class="drawer__header" ng-if="openSection === 'furniture'"> <i class="drawer__icon" wf-icon="furniture"></i> Furniture <button type="button" class="btn btn-primary btn-xs pull-right" ng-disabled="defaultSection === 'furniture'" ng-click="setDefaultOpenSection('furniture')">Set default</button> </div> <button type="button" class="drawer__header-toggle" ng-if="openSection !== 'furniture'" ng-click="toggleSection('furniture')"> <p class="drawer__header drawer__header--closed"> <i class="drawer__icon" wf-icon="furniture"></i> Furniture </p> </button> <span class ="drawer__warning" ng-if="capiData.capiError && openSection === 'furniture'">Warning: Could not reach content api. Some fields will be missing. Please go to composer to view full content information. If problem persists contact digitalcms.dev@guardian.co.uk.</span> <!--CONTENT DRAWER--> <div class="drawer__inner" ng-class="{'drawer__inner--closed' : openSection !== 'furniture'}" ng-if="!supportedAtomTypes.includes(contentItem.contentType)"> <ul class="drawer__column"> <li class="drawer__item"> <p class="drawer__item-title">Working title</p> <wf-editable class="drawer__item-content" ng-model="contentItem.workingTitle" wf-editable-on-update="onBeforeSaveWorkingTitle(newValue)" wf-editable-required="true"> {{ contentItem.workingTitle || '-' }} </wf-editable> </li> <li class="drawer__item"> <p class="drawer__item-title">Note</p> <wf-editable class="drawer__item-content" wf-editable-type="textarea" ng-model="contentItem.note" wf-editable-on-update="onBeforeSaveNote(newValue)" wf-editable-maxlength="maxNoteLength">{{ contentItem.note || 'Add note' }} </wf-editable> </li> <li class="drawer__item"> <span class="drawer__item-title">Standfirst</span> <span class="drawer__item-content" ng-class="{'drawer__item-content--empty': !capiData.standfirst}"> {{ capiData.standfirst || "None" }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Headline</p> <span class="drawer__item-content">{{ capiData.headline || '-' }}</span> </li> <li class="drawer__item"> <span class="drawer__item-title">URL</span> <span class="drawer__item-content" ng-if="contentItem.path"> <a href="{{ contentItem.links.live || contentItem.links.preview || contentItem.links.composer || contentItem.links.editor }}">{{ contentItem.path }}</a> </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Section</p> <select ng-click="$event.stopPropagation()" ng-model="contentItem.section" ng-options="section.name for section in contentList.sections" wf-content-item-update-action="section"></select> </li> </ul> <ul class="drawer__column"> <li cng-class="{'drawer__section-mainmedia--nopreview': capiData.mainMediaType != 'image'}"> <span class="drawer__item-title">Main media</span> <div ng-if="capiData.mainMediaType == 'image'" class="drawer__image-container"> <img ng-src="{{ capiData.mainMediaUrl}}" class="drawer__image" alt=""/> </div> <div ng-if="contentItem.mainMediaNoPreview" class="drawer__section-image-container"> {{capiData.mainMediaType}} </div> <div ng-if="!capiData.mainMediaType" class="drawer__item-content drawer__item-content--empty"> None </div> </span> </li> <li class="drawer__item"> <span class="drawer__item-title">Caption</span> <span class="drawer__item-content" ng-class="{'drawer__item-content--empty': !capiData.mainMediaCaption}"> {{ capiData.mainMediaCaption || "None" }} </span> </li> <li class="drawer__item"> <span class="drawer__item-title">Alt text</span> <span class="drawer__item-content" ng-class="{'drawer__item-content--empty': !capiData.mainMediaAltText}"> {{ capiData.mainMediaAltText || "None" }} </span> </li> <li class="drawer__item"> <span class="drawer__item-title">Trail picture</span> <div ng-if="capiData.trailImageUrl" class="drawer__image-container"> <img ng-src="{{ capiData.trailImageUrl }}" class="drawer__image" alt=""/> </div> <div ng-if="!capiData.trailImageUrl" class="drawer__item-content drawer__item-content--empty"> None </div> </li> <li class="drawer__item"> <span class="drawer__item-title">Trail text</span> <span class="drawer__item-content" ng-class="{'drawer__item-content--empty': !capiData.trailText}"> {{ capiData.trailText || "None" }} </span> </li> </ul> <ul class="drawer__column"> <li class="drawer__item"> <span class="drawer__item-title">Comments</span> <span class="drawer__item-content">{{ capiData.commentsTitle }}</span> </li> <li class="drawer__item"> <span class="drawer__item-title">Optimised for web</span> <span class="drawer__item-content" ng-if="contentItem.optimisedForWeb">Optimised</span> <span class="drawer__item-content" ng-if="!contentItem.optimisedForWeb && !contentItem.optimisedForWebChanged">Not optimised</span> <span class="drawer__item-content" ng-if="contentItem.optimisedForWebChanged">Modified since being optimised</span> <span class="drawer__item-content"><a target="_blank" href="https://docs.google.com/document/d/1MgQfsl1JaSS0UfE3NCsA06ErY99gbQyF7nAXjmu1uiA">Web headline guide</a></span> </li> <li class="drawer__item"> <span class="drawer__item-title">Content type</span> <span class="drawer__item-content"> <i class="drawer__icon" wf-icon="{{ contentItem.contentType }}"></i> {{ contentItem.contentTypeTitle }} </span> </li> <li class="drawer__item" ng-show="contentItem.contentType == 'article'"> <div class="drawer__item-wordcount"> <span class="drawer__item-title">Web word count</span> <span class="drawer__item-content">{{ capiData.wordCount }} </span> </div> <div class="drawer__item-wordcount"> <span class="drawer__item-title">Print word count</span> <span class="drawer__item-content" ng-class="{'drawer__item-content--empty': !contentItem.printWordCount}"> {{ contentItem.printWordCount || "n/a" }} </span> </div> </li> <li class="drawer__item" ng-show="contentItem.contentType == 'article'"> <span class="drawer__item-title">Commissioned Length</span> <wf-editable class="drawer__item-content" wf-editable-type="input" wf-editable-input-type="number" ng-model="contentItem.commissionedLength" wf-editable-on-update="updateCommissionedLength(newValue)" wf-editable-maxlength="5">{{contentItem.commissionedLength || formatReason(contentItem.missingCommissionedLengthReason) || "Add" }} </wf-editable> </li> <li class="drawer__item"> <span class="drawer__item-title">Commissioning info</span> <span class="drawer__item-content" ng-repeat="desk in capiData.commissioningDesks" ng-show="capiData.commissioningDesks.length">{{ desk }}</span> <span class="drawer__item-content--warning" ng-show="!capiData.commissioningDesks.length">None</span> <span class="drawer__item-content--warning" ng-show="tagsUnavailable()">Commissioning info is temporarily unavailable</span> </li> <li class="drawer__item"> <span class="drawer__item-title">Story packages</span> <span class="drawer__item-content" ng-repeat="p in capiData.packages" ng-show="capiData.packages.length"> <a href="{{storyPackagesUrl}}/editorial?layout=latest,content:{{p.id}},packages" target="_blank">{{ p.name }}</a> </span> <span class="drawer__item-content--warning" ng-show="!capiData.packages.length">None</span> </li> </ul> </div> <div ng-if="supportedAtomTypes.includes(contentItem.contentType)" ng-switch="contentItem.contentType"> <!--MEDIA ATOM DRAWER--> <div class="drawer__inner" ng-class="{'drawer__inner--closed' : openSection !== 'furniture'}" ng-switch-when="media"> <ul class="drawer__column"> <li class="drawer__item"> <p class="drawer__item-title">Working title</p> <wf-editable class="drawer__item-content" ng-model="contentItem.workingTitle" wf-editable-on-update="onBeforeSaveWorkingTitle(newValue)" wf-editable-required="true"> {{ contentItem.workingTitle || '-' }} </wf-editable> </li> <li class="drawer__item"> <p class="drawer__item-title">Note</p> <wf-editable class="drawer__item-content" wf-editable-type="textarea" ng-model="contentItem.note" wf-editable-on-update="onBeforeSaveNote(newValue)" wf-editable-maxlength="maxNoteLength"> {{ contentItem.note || 'Add note' }} </wf-editable> </li> <li class="drawer__item"> <p class="drawer__item-title">URL</p> <span class="drawer__item-content" ng-if="capiData.editorUrl"> <a href="{{ capiData.editorUrl }}"> {{ capiData.editorUrl }}</a> </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Section</p> <select ng-click="$event.stopPropagation()" ng-model="contentItem.section" ng-options="section.name for section in contentList.sections" wf-content-item-update-action="section"></select> </li> </ul> <ul class="drawer__column"> <li class="drawer__item"> <p class="drawer__item-title">Content type</p> <span class="drawer__item-content"> {{ contentItem.contentTypeTitle || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Headline (YT title)</p> <span class="drawer__item-content"> {{ capiData.title || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Standfirst</p> <span class="drawer__item-content" ng-bind-html="capiData.description | wfTrustedHtml"> </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Trail text</p> <span class="drawer__item-content"> {{ capiData.trailText || '-' }} </span> </li> </ul> <ul class="drawer__column"> <li class="drawer__item"> <p class="drawer__item-title">Video source</p> <span class="drawer__item-content"> {{ capiData.source || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Video category</p> <span class="drawer__item-content"> {{ capiData.category || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Expiry date</p> <span class="drawer__item-content"> {{ capiData.friendlyExpiryDate || '-' }} </span> </li> <!-- Remove this when YT data is added --> <li class="drawer__item"> <p class="drawer__item-title">Keywords</p> <span class="drawer__item-content"> {{ capiData.keywords || '-' }} </span> </li> </ul> </ul> <!--TODO: Add helpful Youtube data--> <!--<ul class="drawer__column"> <li class="drawer__item"> <p class="drawer__item-title">Youtube category ID</p> <span class="drawer__item-content"> {{ capiData.metadata.categoryId || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Youtube channel ID</p> <span class="drawer__item-content"> {{ capiData.metadata.channelId || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Keywords</p> <span class="drawer__item-content"> {{ capiData.keywords || '-' }} </span> </li> </ul>--> <ul class="drawer__column drawer__column--wide" > <li class="drawer__item"> <p class="drawer__item-title">Video preview</p> <div class="drawer__video" ng-if="capiData.currentAsset" ng-bind-html="capiData.defaultHtml | wfTrustedHtml" /> <span class="drawer__item-content" ng-if="!capiData.currentAsset"> No preview available </span> </li> <li class="drawer__item"> <span class="drawer__item-title">Commissioning info</span> <span class="drawer__item-content" ng-repeat="desk in capiData.commissioningInfo" ng-show="capiData.commissioningDesks.length">{{ desk }}</span> <span class="drawer__item-content--warning" ng-show="!capiData.commissioningDesks.length">None</span> </li> </ul> </div> <!--DEFAULT ATOM DRAWER--> <div class="drawer__inner" ng-class="{'drawer__inner--closed' : openSection !== 'furniture'}" ng-switch-default> <ul class="drawer__column"> <li class="drawer__item"> <p class="drawer__item-title">Working title</p> <wf-editable class="drawer__item-content" ng-model="contentItem.workingTitle" wf-editable-on-update="onBeforeSaveWorkingTitle(newValue)" wf-editable-required="true"> {{ contentItem.workingTitle || '-' }} </wf-editable> </li> <li class="drawer__item"> <p class="drawer__item-title">Note</p> <wf-editable class="drawer__item-content" wf-editable-type="textarea" ng-model="contentItem.note" wf-editable-on-update="onBeforeSaveNote(newValue)" wf-editable-maxlength="maxNoteLength"> {{ contentItem.note || 'Add note' }} </wf-editable> </li> <li class="drawer__item"> <p class="drawer__item-title">URL</p> <span class="drawer__item-content" ng-if="capiData.editorUrl"> <a href="{{ capiData.editorUrl }}"> {{ capiData.editorUrl }}</a> </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Section</p> <select ng-click="$event.stopPropagation()" ng-model="contentItem.section" ng-options="section.name for section in contentList.sections" wf-content-item-update-action="section"></select> </li> <li class="drawer__item"> <p class="drawer__item-title">Content type</p> <span class="drawer__item-content"> {{ contentItem.contentTypeTitle || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Title</p> <span class="drawer__item-content"> {{ capiData.title || '-' }} </span> </li> </ul> </div> </div> </div> <div class="drawer__section" ng-class="{'drawer__section--closed' : openSection !== 'management'}"> <div class="drawer__header" ng-if="openSection === 'management'"> <i class="drawer__icon" wf-icon="management"></i> Management <button type="button" class="btn btn-primary btn-xs pull-right" ng-disabled="defaultSection === 'management'" ng-click="setDefaultOpenSection('management')">Set default</button> </div> <button data-cy="management-drawer" type="button" class="drawer__header-toggle" ng-if="openSection !== 'management'" ng-click="toggleSection('management')"> <p class="drawer__header drawer__header--closed"> <i class="drawer__icon" wf-icon="management"></i> Management </p> </button> <div class="drawer__inner" ng-class="{'drawer__inner--closed' : openSection !== 'management'}" > <!-- We allow overflow here for the datepicker, which will otherwise be occluded by its container --> <ul class="drawer__column drawer__column--with-overflow drawer__column--wide"> <li class="drawer__item"> <p class="drawer__item-title">Priority</p> <select ng-model="contentItem.priority" ng-options="p.value as p.name for p in contentList.priorities" wf-content-item-update-action="priority"></select> </li> <li class="drawer__item"> <p class="drawer__item-title">Production deadline</p> <button ng-hide="dateTimeEdit" ng-click="dateTimeEdit = true" ng-class="{ 'drawer__section-data-row--editable': contentItem.item.due, 'drawer__section-data-row--editable-empty': !contentItem.item.due, 'editable__view-value': true, 'editable__edit-button': true }" title="{{ (contentItem.item.due | wfLocaliseDateTime:$root.globalSettings.location | wfFormatDateTime:'long') || '' }}"> {{ (contentItem.item.due | wfLocaliseDateTime:$root.globalSettings.location | wfFormatDateTime) || 'Add deadline' }} </button> <form ng-show="dateTimeEdit" ng-submit="dateTimeEdit = false"> <div class="form-group"> <div wf-date-time-picker wf-update-on="enter" ng-model="currentDatePickerValue" wf-on-cancel="dateTimeEdit = false; revertDeadline()" wf-cancel-on="blur" wf-on-submit="updateDeadline(); dateTimeEdit = false;" help-text="true"></div> </div> </form> </li> <li class="drawer__item"> <p class="drawer__item-title">Scheduled</p> <span class="drawer__item-content"> {{ (contentItem.item.scheduledLaunchDate | wfLocaliseDateTime | wfFormatDateTime) || "-" }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Embargoed</p> <span class="drawer__item-content"> {{ contentItem.lifecycleStateSupl || (contentItem.lifecycleStateSuplDate | wfLocaliseDateTime | wfFormatDateTime) || "-" }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">State</p> <span class="drawer__item-content"> {{ contentItem.state || '-' }} </span> </li> <li class="drawer__item"> <p class="drawer__item-title">Status</p> <select ng-model="contentItem.status" ng-options="status.value as status.label for status in contentItem.statusValues" wf-content-item-update-action="status"></select> </li> </ul> <!-- We allow overflow here for the datepicker, which will otherwise be occluded by its container --> <ul class="drawer__column drawer__column--wide drawer__column--with-overflow"> <li class="drawer__item"> <p class="drawer__item-title">Print Location</p> <div class="drawer__item-printlocation"> <span>Book section:</span> <span ng-if="contentItem.shortActualPrintLocationDescription">{{contentItem.shortActualPrintLocationDescription}}</span> <button ng-if="!contentItem.shortActualPrintLocationDescription" class="editable__edit-button" ng-hide="showBookTagPicker" ng-click="toggleBookTagPicker(true)"> <div class="planned-print-location editable__view-value"> <span>{{ (editedShortPlannedPrintLocationDescription || contentItem.shortPlannedPrintLocationDescription) || 'Add planned print location' }}</span> <span class="planned-print-location__brackets" ng:show="editedShortPlannedPrintLocationDescription || contentItem.shortPlannedPrintLocationDescription" class="editable__printlocation">(planned)</span> </div> </button> <div class="editable--edit editable--inline autocomplete" ng-show="showBookTagPicker"> <input class="text-input fullwidth" ng-model="$parent.bookSectionQuery" placeholder="Enter a book section…" name="bookSection" autocomplete="off" ui-filter-list="candidateBookSections" ui-filter-list-on-filter="setBookSections()" ui-filter-list-on-select="pickBookSection(selectedItem)" > <ul class="autocomplete__results" ng:show="candidateBookSections"> <li ng-repeat="tag in candidateBookSections" ng:class="{'is-selected': tag.selected}"> <button ng-click="pickBookSection(tag.item)" >{{tag.item.internalName}}</button> </li> </ul> <span class="editable__controls"> <button class="editable__control editable__control--cancel" ng-click="toggleBookTagPicker(false)" title="Cancel changes"> <i class="editable__control-icon editable__control-icon--cancel" wf-icon="cross"></i> </button> </span> </div> </div> <div class="drawer__item-printlocation"> <span>Page number:</span> <span ng-if="contentItem.actualNewspaperPageNumber">{{contentItem.actualNewspaperPageNumber}}</span> <wf-editable class="editable--inline" ng-if="!contentItem.actualNewspaperPageNumber" ng-model="contentItem.plannedNewspaperPageNumber" wf-editable-on-update="onBeforeSavePlannedPageNumber(newValue)" wf-editable-input-type="number"> <div class="planned-print-location editable__view-value"> <span>{{ contentItem.plannedNewspaperPageNumber || 'Add planned page number.' }}</span> <span class="planned-print-location__brackets" ng:show="contentItem.plannedNewspaperPageNumber" class="editable__printlocation">(planned)</span> </div> </wf-editable> </div> <div class="drawer__item-printlocation"> <span>Publication date:</span> <span ng-if="contentItem.actualNewspaperPublicationDate">{{contentItem.actualNewspaperPublicationDate | wfFormatDateTime:'date'}}</span> <button ng-hide="publicationDateTimeEdit || contentItem.actualNewspaperPublicationDate" ng-click="publicationDateTimeEdit = true" ng-class="{ 'drawer__section-data-row--editable': contentItem.plannedNewspaperPublicationDate, 'drawer__section-data-row--editable-empty': !contentItem.plannedNewspaperPublicationDate, 'editable__edit-button': true }" title="{{ (contentItem.plannedNewspaperPublicationDate | wfFormatDateTime:'date') || '' }}" > <div class="planned-print-location editable__view-value"> <span>{{ (contentItem.plannedNewspaperPublicationDate | wfFormatDateTime:'date') || 'Add planned publication date' }}</span> <span class="planned-print-location__brackets" ng:show="contentItem.plannedNewspaperPublicationDate" class="editable__printlocation">(planned)</span> </div> </button> <form ng-show="publicationDateTimeEdit" ng-submit="publicationDateTimeEdit = false"> <div class="form-group editable--inline"> <div wf-date-time-picker wf-update-on="enter" ng-model="$parent.currentPublicationDatePickerValue" wf-on-cancel="publicationDateTimeEdit = false; revertPlannedPublicationDate()" wf-cancel-on="blur" wf-on-submit="updatePlannedPublicationDate(); publicationDateTimeEdit = false;" wf-date-only="true" ></div> </div> </form> </div> </li> <li class="drawer__item"> <p class="drawer__item-title">Last modified (print)</p> <span class="drawer__item-content">{{ (contentItem.lastModified | wfLocaliseDateTime:$root.globalSettings.location | wfFormatDateTime) || "-" }}</span> <span class="drawer__item-content" ng-show="contentItem.lastModifiedInPrintBy">by {{ contentItem.lastModifiedInPrintBy }}</span> </li> <li class="drawer__item"> <p class="drawer__item-title">Status in print</p> <span class="drawer__item-content" ng-show="contentItem.statusInPrint">{{ contentItem.statusInPrint }}</span> </li> <li class="drawer__item"> <p class="drawer__item-title">Rights</p> <span class="drawer__item-content"> <ui-edit-rights content-item="contentItem" /> </span> </li> </ul> <ul class="drawer__column drawer__column--wide"> <li class="drawer__item"> <p class="drawer__item-title">Office</p> <select ng-model="contentItem.office" ng-change="updateOffice(contentItem.office)" ng-options="office.value as office.name for office in prodOffices" wf-content-item-update-action="prodOffice"></select> </li> <li class="drawer__item" ng-switch="!!editingAssignee"> <div ng-switch-when="false"> <p class="drawer__item-title">Assigned to</p> <span class="drawer__section-data-row--editable drawer__user-name" ng-click="toggleAssigneeEditing();" onbeforesave="onBeforeSaveAssignee($data)">{{ contentItem.assignee || "None" }}</span> </div> <div ng-switch-when="true"> <punters stub="contentItem" indrawer="true"></punters> </div> </li> <li class="drawer__item"> <p class="drawer__item-title">In use by</p> <wf-presence-indicators presence-id="contentItem.composerId" dont-display-idle="contentItem.contentType == 'liveblog'" in-drawer="true" ng-if="contentItem.composerId"></wf-presence-indicators> <wf-presence-indicators presence-id="'media-' + contentItem.item.editorId" in-drawer="true" ng-if="contentItem.contentType === 'media'"></wf-presence-indicators> </li> <li class="drawer__item"> <p class="drawer__item-title">Last modified</p> <span class="drawer__item-content">{{ (contentItem.lastModified | wfLocaliseDateTime:$root.globalSettings.location | wfFormatDateTime) || "-" }}</span> <span class="drawer__item-content" ng-show="contentItem.lastModifiedBy">by {{ contentItem.lastModifiedBy }}</span> </li> <li class="drawer__item" ng-if="contentItem.contentType !== 'media'"> <p class="drawer__item-title">InCopy</p> <span class="drawer__item-content">{{ contentItem.incopyTitle }}</span> <span class="drawer__item-content" ng-if="contentItem.isOwnedByInCopy"><i>Locked</i></span> </li> <li class="drawer__item"> <p class="drawer__item-title">Legal status</p> <select ng-model="contentItem.needsLegal" ng-options="ls.value as ls.name for ls in legalValues" wf-content-item-update-action="needsLegal"></select> </li> <li class="drawer__item"> <p class="drawer__item-title">Picture Desk status</p> <select ng-model="contentItem.needsPictureDesk" ng-options="pds.value as pds.name for pds in pictureDeskValues" wf-content-item-update-action="needsPictureDesk"></select> </li> </ul> </div> </div> <div class="drawer__section" ng-class="{'drawer__section--closed' : openSection !== 'usages'}" ng-if="supportedAtomTypes.includes(contentItem.contentType)"> <div class="drawer__header" ng-if="openSection === 'usages'"> <i class="drawer__icon" wf-icon="usages"></i> Usages </div> <button type="button" class="drawer__header-toggle" ng-if="openSection !== 'usages'" ng-click="toggleSection('usages')"> <p class="drawer__header drawer__header--closed"> <i class="drawer__icon" wf-icon="usages"></i> Usages </p> </button> <div class="drawer__inner" ng-class="{'drawer__inner--closed' : openSection !== 'usages'}" > <ul class="drawer__column drawer__column--wide"> <li class="drawer__item"> <ul class="drawer__item-content usages-list" ng-if="capiData.usages.length"> <li class="usage" ng-class="{'usage--highlight' : usage.type === 'video'}" ng-repeat="usage in capiData.usages"> <p class="usage__title">{{ usage.webTitle || '-' }}</p> <div class="usage__details"> <span class="usage__date">{{ 'Created: ' + usage.friendlyCreationDate + ' '}}</span> <a ng:if="usage.type !== 'video'" href="{{ usage.composerUrl }}" target="_blank"><i class="drawer__icon usage__icon" wf-icon="composer"></i></a> <a ng:if="usage.type === 'video'" href="{{ usage.composerUrl }}" target="_blank"><i class="drawer__icon usage__icon" wf-icon="composer-video"></i></a> <a href="{{ usage.viewerUrl }}" target="_blank"><i class="drawer__icon usage__icon" wf-icon="preview"></i></a> <a href="{{ usage.webUrl }}" target="_blank"><i class="drawer__icon usage__icon" wf-icon="live-site"></i></a> </div> </li> </ul> <p class="drawer__item-content" ng-if="!capiData.usages.length">No usages found for this Atom</p> </li> </ul> </div> </div> <div class="drawer__section" ng-class="{'drawer__section--closed' : openSection !== 'atoms'}" ng-if="!supportedAtomTypes.includes(contentItem.contentType)"> <div class="drawer__header" ng-if="openSection === 'atoms'"> <i class="drawer__icon" wf-icon="atom"></i> Atoms </div> <button type="button" class="drawer__header-toggle" ng-if="openSection !== 'atoms'" ng-click="toggleSection('atoms')"> <p class="drawer__header drawer__header--closed"> <i class="drawer__icon" wf-icon="atom"></i> Atoms </p> </button> <div class="drawer__inner" ng-class="{'drawer__inner--closed' : openSection !== 'atoms'}" > <ul class="drawer__column drawer__column--wide"> <li class="drawer__item"> <ul class="drawer__item-content usages-list" ng-if="capiData.atomUsages.length"> <li class="usage" ng-repeat="atom in capiData.usages"> <p class="usage__title">{{ atom.atomType }} - {{ atom.title }}</p> <p class="usage__details"> <span class="usage__date">{{ 'Created: ' + atom.friendlyCreationDate + ' '}}</span> <a ng:if="atom.editorUrl" href="{{ atom.editorUrl }}" target="_blank"><i class="drawer__icon usage__icon" wf-icon="atom"></i></a> </p> </li> </ul> <p class="drawer__item-content" ng-if="!capiData.atomUsages.length">No atoms found in this content</p> </li> </ul> </div> </div> </div> <div class="drawer__toolbar"> <span class="drawer__toolbar-item drawer__toolbar-item--danger" ng-class="{'drawer__control--confirm': awaitingDeleteConfirmation}" ng-click="deleteContentItem(!contentItem.item.trashed)" title="{{ contentItem.item.trashed ? 'Restore' : 'Trash' }}" ng-class="{'drawer__control-item--restore': contentItem.item.trashed}"> <i ng-if="!contentItem.item.trashed" class="drawer__icon drawer__toolbar-icon" wf-icon="delete"></i> {{ contentItem.item.trashed ? 'Restore' : 'Trash' }} </span> <div class="drawer__toolbar-item drawer__toolbar-item--spacer"> &nbsp; </div> <!-- if the content doesn't have a Composer page, it won't be accessible in Restorer --> <span ng:if="!composerRestorerUrl.includes('null')" class="drawer__toolbar-item drawer__toolbar-item--action"> <a href="{{ composerRestorerUrl }}" target="_blank" class="drawer__item-content" title="View versions"> <i class="drawer__icon drawer__toolbar-icon" wf-icon="view-versions"></i> View versions </a> </span> <span ng-hide="contentItem.linkedWithIncopy" class="drawer__toolbar-item drawer__toolbar-item--action"> <a href="{{ indesignExportUrl }}" title="Send to InDesign" class="drawer__item-content" > <i class="drawer__icon drawer__toolbar-icon" wf-icon="indesign"></i> Send to InDesign </a> </span> <span class="drawer__toolbar-item drawer__toolbar-item--action"> <a href="{{ contentItem.linkedWithIncopy ? buildUrl({ 'storyBundleId': contentItem.storyBundleId }, incopyOpenUrlTemplate) : buildUrl({ 'composerId': contentItem.composerId }, incopyExportUrlTemplate) }}" title="{{ contentItem.linkedWithIncopy ? 'Open in' : 'Send to' }} InCopy" class="drawer__item-content" > <i class="drawer__icon drawer__toolbar-icon" wf-icon="incopy"></i> {{ contentItem.linkedWithIncopy ? "Open in" : "Send to" }} InCopy </a> </span> <span class="drawer__toolbar-item drawer__toolbar-item--discreet" ng-click="contentListDrawerController.hide()" title="Close details"> <i class="drawer__icon drawer__toolbar-icon" wf-icon="cross"></i> Close details </span> </div> </td> </tr>