Adds repository level capability page and adjusts tooltips. #274.

This commit is contained in:
Mateus Machado Luna 2019-11-08 15:11:50 -03:00
parent b6d7e1bfc3
commit 5966d31f62
9 changed files with 83 additions and 46 deletions

View File

@ -41,7 +41,7 @@
}, },
content: capability.display_name, content: capability.display_name,
autoHide: false, autoHide: false,
classes: ['tooltip'], classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}"> }">
{{ capability.display_name }} {{ capability.display_name }}
@ -60,7 +60,7 @@
}, },
content: capability.description, content: capability.description,
autoHide: false, autoHide: false,
classes: ['tooltip'], classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-html="capability.description"/> v-html="capability.description"/>
@ -82,7 +82,7 @@
}, },
content: props['complete-roles-list'], content: props['complete-roles-list'],
autoHide: false, autoHide: false,
classes: ['tooltip'], classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-html="props['complete-roles-list']"/> v-html="props['complete-roles-list']"/>
@ -103,7 +103,7 @@
v-tooltip="{ v-tooltip="{
content: $i18n.get('edit'), content: $i18n.get('edit'),
autoHide: true, autoHide: true,
classes: ['tooltip'], classes: ['tooltip', 'repository-tooltip'],
placement: 'auto' placement: 'auto'
}" }"
class="icon"> class="icon">

View File

@ -124,6 +124,25 @@
<span class="menu-text">{{ $i18n.get('activities') }}</span> <span class="menu-text">{{ $i18n.get('activities') }}</span>
</router-link> </router-link>
</li> </li>
<li>
<router-link
tag="a"
:to="this.$routerHelper.getCapabilitiesPath()"
:class="activeRoute == 'CapabilitiesPage' ? 'is-active':''">
<span
v-tooltip="{
offset: 4,
content: isMenuCompressed ? $i18n.get('capabilities') : '',
autoHide: true,
classes: ['tooltip', 'repository-tooltip'],
placement: 'auto'
}"
class="icon">
<i class="tainacan-icon tainacan-icon-20px tainacan-icon-user"/>
</span>
<span class="menu-text">{{ $i18n.get('capabilities') }}</span>
</router-link>
</li>
<li> <li>
<router-link <router-link
tag="a" tag="a"

View File

@ -64,19 +64,23 @@ export default {
opacity: 0; opacity: 0;
.help-tooltip-header { .help-tooltip-header {
padding: 0.8em 0.8em 0em 0.8em; padding: 0.8rem 0.8rem 0rem 0.8rem;
h5 { h5 {
font-size: 14px; font-size: 0.875rem;
font-weight: bold; font-weight: bold;
} }
} }
.help-tooltip-body { .help-tooltip-body {
padding: 0.8em 1.0em 1.0em 1.0em; padding: 0.5em 1.0rem 1.0rem 1.0rem;
font-size: 11px;
font-weight: normal; p {
white-space: normal; font-size: 0.875rem !important;
font-weight: normal !important;
white-space: normal !important;
overflow: visible;
}
} }
&:before { &:before {

View File

@ -41,50 +41,52 @@ const routes = [
{ path: '/', redirect:'/home' }, { path: '/', redirect:'/home' },
{ path: '/home', name: 'HomePage', component: HomePage, meta: {title: 'Tainacan'} }, { path: '/home', name: 'HomePage', component: HomePage, meta: {title: 'Tainacan'} },
{ path: '/collections', name: 'CollectionsPage', component: CollectionsPage, meta: {title: i18nGet('title_repository_collections_page'), icon: 'folder-multiple'} }, { path: '/collections', name: 'CollectionsPage', component: CollectionsPage, meta: { title: i18nGet('title_repository_collections_page') } },
{ path: '/collections/new', name: 'CollectionCreationForm', component: CollectionEditionForm, meta: {title: i18nGet('title_create_collection'), icon: 'folder-multiple'} }, { path: '/collections/new', name: 'CollectionCreationForm', component: CollectionEditionForm, meta: {title: i18nGet('title_create_collection') } },
{ path: '/collections/new/:mapper', name: 'MappedCollectionCreationForm', component: CollectionEditionForm, meta: {title: i18nGet('title_create_collection'), icon: 'folder-multiple'} }, { path: '/collections/new/:mapper', name: 'MappedCollectionCreationForm', component: CollectionEditionForm, meta: {title: i18nGet('title_create_collection') } },
{ path: '/collections/:collectionId', component: CollectionPage, meta: {title: i18nGet('title_collection_page'), icon: 'folder-multiple'}, { path: '/collections/:collectionId', component: CollectionPage, meta: {title: i18nGet('title_collection_page') },
children: [ children: [
{ path: '', redirect: 'items'}, { path: '', redirect: 'items'},
{ path: 'items', component: ItemsPage, name: 'CollectionItemsPage', meta: {title: i18nGet('title_collection_page'), icon: 'folder-multiple'} }, { path: 'items', component: ItemsPage, name: 'CollectionItemsPage', meta: {title: i18nGet('title_collection_page') } },
{ path: 'items/:itemId/edit', name: 'ItemEditionForm', component: ItemEditionForm, meta: {title: i18nGet('title_edit_item'), icon: 'folder-multiple'} }, { path: 'items/:itemId/edit', name: 'ItemEditionForm', component: ItemEditionForm, meta: {title: i18nGet('title_edit_item') } },
{ path: 'items/new', name: 'CollectionItemCreatePage', component: ItemEditionForm, meta: {title: i18nGet('title_create_item_collection'), icon: 'folder-multiple'} }, { path: 'items/new', name: 'CollectionItemCreatePage', component: ItemEditionForm, meta: {title: i18nGet('title_create_item_collection') } },
{ path: 'items/:itemId', name: 'ItemPage', component: ItemPage, meta: {title: i18nGet('title_item_page'), icon: 'folder-multiple'} }, { path: 'items/:itemId', name: 'ItemPage', component: ItemPage, meta: {title: i18nGet('title_item_page') } },
{ path: 'bulk-add', name: 'CollectionItemBulkAddPage', component: ItemBulkEditionForm, meta: {title: i18nGet('title_item_bulk_add'), icon: 'folder-multiple'} }, { path: 'bulk-add', name: 'CollectionItemBulkAddPage', component: ItemBulkEditionForm, meta: {title: i18nGet('title_item_bulk_add') } },
{ path: 'bulk-add/:groupId', name: 'CollectionItemBulkAddMetadataPage', component: ItemMetadataBulkEditionForm, meta: {title: i18nGet('title_item_bulk_add'), icon: 'folder-multiple'} }, { path: 'bulk-add/:groupId', name: 'CollectionItemBulkAddMetadataPage', component: ItemMetadataBulkEditionForm, meta: {title: i18nGet('title_item_bulk_add') } },
{ path: 'settings', component: CollectionEditionForm, name: 'CollectionEditionForm', meta: {title: i18nGet('title_collection_settings'), icon: 'folder-multiple'} }, { path: 'settings', component: CollectionEditionForm, name: 'CollectionEditionForm', meta: {title: i18nGet('title_collection_settings') } },
{ path: 'metadata', component: MetadataList, name: 'MetadataList', meta: {title: i18nGet('title_collection_metadata_edition'), icon: 'folder-multiple'} }, { path: 'metadata', component: MetadataList, name: 'MetadataList', meta: {title: i18nGet('title_collection_metadata_edition') } },
{ path: 'filters', component: FiltersList, name: 'FiltersList', meta: {title: i18nGet('title_collection_filters_edition'), icon: 'folder-multiple'} }, { path: 'filters', component: FiltersList, name: 'FiltersList', meta: {title: i18nGet('title_collection_filters_edition') } },
{ path: 'activities', component: ActivitiesPage, name: 'CollectionActivitiesPage', meta: {title: i18nGet('title_collection_activities'), icon: 'flash'} }, { path: 'activities', component: ActivitiesPage, name: 'CollectionActivitiesPage', meta: {title: i18nGet('title_collection_activities') } },
{ path: 'capabilities', component: CapabilitiesPage, name: 'CollectionCapabilitiesPage', meta: {title: i18nGet('title_collection_capabilities'), icon: 'flash'} }, { path: 'capabilities', component: CapabilitiesPage, name: 'CollectionCapabilitiesPage', meta: {title: i18nGet('title_collection_capabilities') } },
{ path: 'sequence/:sequenceId', name: 'SavedSequenceEditionForm', component: ItemEditionForm, meta: {title: i18nGet('title_edit_item'), icon: 'folder-multiple'} }, { path: 'sequence/:sequenceId', name: 'SavedSequenceEditionForm', component: ItemEditionForm, meta: {title: i18nGet('title_edit_item') } },
{ path: 'sequence/:sequenceId/:itemPosition', name: 'SequenceEditionForm', component: ItemEditionForm, meta: {title: i18nGet('title_edit_item'), icon: 'folder-multiple'} }, { path: 'sequence/:sequenceId/:itemPosition', name: 'SequenceEditionForm', component: ItemEditionForm, meta: {title: i18nGet('title_edit_item') } },
] ]
}, },
{ path: '/items', name: 'ItemsPage', component: ItemsPage, meta: {title: i18nGet('title_items_page'), icon: 'file-multiple'} }, { path: '/items', name: 'ItemsPage', component: ItemsPage, meta: {title: i18nGet('title_items_page') } },
{ path: '/items/new', name: 'ItemCreationForm', component: ItemEditionForm, meta: {title: i18nGet('title_create_item'), icon: 'file-multiple'} }, { path: '/items/new', name: 'ItemCreationForm', component: ItemEditionForm, meta: {title: i18nGet('title_create_item') } },
{ path: '/filters', name: 'FiltersPage', component: FiltersPage, meta: {title: i18nGet('title_repository_filters_page'), icon: 'filter'} }, { path: '/filters', name: 'FiltersPage', component: FiltersPage, meta: {title: i18nGet('title_repository_filters_page') } },
{ path: '/metadata', name: 'MetadataPage', component: MetadataPage, meta: {title: i18nGet('title_repository_metadata_page'), icon: 'format-list-checks'} }, { path: '/metadata', name: 'MetadataPage', component: MetadataPage, meta: {title: i18nGet('title_repository_metadata_page') } },
{ path: '/taxonomies', name: 'TaxonomyPage', component: TaxonomyPage, meta: {title: i18nGet('title_taxonomies_page'), icon: 'shape'} }, { path: '/taxonomies', name: 'TaxonomyPage', component: TaxonomyPage, meta: {title: i18nGet('title_taxonomies_page') } },
{ path: '/taxonomies/new', name: 'TaxonomyCreationForm', component: TaxonomyEditionForm, meta: {title: i18nGet('title_create_taxonomy_page'), icon: 'shape'} }, { path: '/taxonomies/new', name: 'TaxonomyCreationForm', component: TaxonomyEditionForm, meta: {title: i18nGet('title_create_taxonomy_page') } },
{ path: '/taxonomies/:taxonomyId/edit', name: 'TaxonomyEditionForm', component: TaxonomyEditionForm, meta: {title: i18nGet('title_taxonomy_edition_page'), icon: 'shape'} }, { path: '/taxonomies/:taxonomyId/edit', name: 'TaxonomyEditionForm', component: TaxonomyEditionForm, meta: {title: i18nGet('title_taxonomy_edition_page') } },
{ path: '/taxonomies/:taxonomyId', redirect: '/taxonomies/:taxonomyId/edit' }, { path: '/taxonomies/:taxonomyId', redirect: '/taxonomies/:taxonomyId/edit' },
{ path: '/activities', name: 'ActivitiesPage', component: ActivitiesPage, meta: {title: i18nGet('title_repository_activities_page'), icon: 'flash'} }, { path: '/activities', name: 'ActivitiesPage', component: ActivitiesPage, meta: {title: i18nGet('title_repository_activities_page') } },
{ path: '/importers/', name: 'AvailableImportersPage', component: AvailableImportersPage, meta: {title: i18nGet('title_importers_page'), icon: 'import'} }, { path: '/capabilities', component: CapabilitiesPage, name: 'CapabilitiesPage', meta: {title: i18nGet('title_repository_capabilities') } },
{ path: '/importers/:importerSlug', name: 'ImporterEditionForm', component: ImporterEditionForm, meta: {title: i18nGet('title_importer_page'), icon: 'import'} },
{ path: '/importers/:importerSlug/:sessionId', name: 'ImporterCreationForm', component: ImporterEditionForm, meta: { title: i18nGet('title_importer_page'), icon: 'import' } },
{ path: '/importers/:importerType/:sessionId/mapping/:collectionId', name: 'ImporterMappingForm', component: ImporterMappingForm, meta: {title: i18nGet('title_importer_mapping_page'), icon: 'import'} },
{ path: '/exporters/', name: 'ExportersPage', component: AvailableExportersPage, meta: {title: i18nGet('title_exporters_page'), icon: 'export'} }, { path: '/importers/', name: 'AvailableImportersPage', component: AvailableImportersPage, meta: {title: i18nGet('title_importers_page') } },
{ path: '/exporters/:exporterSlug', name: 'ExporterEditionForm', component: ExporterEditionForm, meta: {title: i18nGet('title_exporter_page'), icon: 'export'}}, { path: '/importers/:importerSlug', name: 'ImporterEditionForm', component: ImporterEditionForm, meta: {title: i18nGet('title_importer_page') } },
{ path: '/importers/:importerSlug/:sessionId', name: 'ImporterCreationForm', component: ImporterEditionForm, meta: { title: i18nGet('title_importer_page') } },
{ path: '/importers/:importerType/:sessionId/mapping/:collectionId', name: 'ImporterMappingForm', component: ImporterMappingForm, meta: {title: i18nGet('title_importer_mapping_page') } },
{ path: '/exporters/', name: 'ExportersPage', component: AvailableExportersPage, meta: {title: i18nGet('title_exporters_page') } },
{ path: '/exporters/:exporterSlug', name: 'ExporterEditionForm', component: ExporterEditionForm, meta: {title: i18nGet('title_exporter_page') }},
{ path: '*', redirect: '/'} { path: '*', redirect: '/'}
]; ];

View File

@ -233,6 +233,9 @@ RouterHelperPlugin.install = function (Vue, options = {}) {
getActivitiesPath(query) { getActivitiesPath(query) {
return '/activities/?' + qs.stringify(query); return '/activities/?' + qs.stringify(query);
}, },
getCapabilitiesPath() {
return '/capabilities';
},
getAvailableImportersPath() { getAvailableImportersPath() {
return '/importers'; return '/importers';
}, },

View File

@ -1,5 +1,9 @@
<template> <template>
<div> <div
:class="{
'repository-level-page': isRepositoryLevel,
'page-container': isRepositoryLevel
}">
<tainacan-title <tainacan-title
:bread-crumb-items="[{ path: '', label: this.$i18n.get('capabilities') }]"/> :bread-crumb-items="[{ path: '', label: this.$i18n.get('capabilities') }]"/>
@ -69,6 +73,7 @@
name: 'CapabilitiesPage', name: 'CapabilitiesPage',
data() { data() {
return { return {
isRepositoryLevel: false,
isLoading: false, isLoading: false,
roles: [], roles: [],
isFetchingRoles: false, isFetchingRoles: false,
@ -156,6 +161,9 @@
mounted() { mounted() {
this.loadCapabilities(); this.loadCapabilities();
this.fetchRolesForFiltering(); this.fetchRolesForFiltering();
},
created() {
this.isRepositoryLevel = (this.$route.params.collectionId === undefined);
} }
} }
</script> </script>

View File

@ -189,4 +189,4 @@
margin: 1rem auto; margin: 1rem auto;
} }
} }
} }

View File

@ -132,7 +132,8 @@ return apply_filters( 'tainacan-admin-i18n', [
'title_processes_page' => __( 'Processes', 'tainacan' ), 'title_processes_page' => __( 'Processes', 'tainacan' ),
'title_item_bulk_add' => __( 'Bulk Add Items', 'tainacan' ), 'title_item_bulk_add' => __( 'Bulk Add Items', 'tainacan' ),
'title_exporter_page' => __( 'Exporter', 'tainacan'), 'title_exporter_page' => __( 'Exporter', 'tainacan'),
'title_collection_capabilities' => __( 'Related Capabilities', 'tainacan'), 'title_collection_capabilities' => __( 'Capabilities Related to the Collection', 'tainacan'),
'title_repository_capabilities' => __( 'Capabilities Related to the Repository', 'tainacan'),
// Labels (used mainly on Aria Labels and Inputs) // Labels (used mainly on Aria Labels and Inputs)
'label' => __( 'Label', 'tainacan' ), 'label' => __( 'Label', 'tainacan' ),

View File

@ -48,8 +48,8 @@ export const fetchRoles = ({ commit }) => {
// CAPABILITIES // CAPABILITIES
export const fetchCapabilities = ({ commit }, { collectionId } ) => { export const fetchCapabilities = ({ commit }, { collectionId } ) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const endpoint = collectionId != undefined ? `/collection/${collectionId}/capabilities` : `/capabilities`
axios.tainacan.get(`/collection/${collectionId}/capabilities`) axios.tainacan.get(endpoint)
.then(res => { .then(res => {
let capabilities = res.data.capabilities; let capabilities = res.data.capabilities;