====== Module - creating a new dashboard button ====== In this tutorial we will describe how to create and register new button on identity dashboard. ===== What do you need before you start ===== * You need to install CzechIdM 9.6.0 (and higher). We have CzechIdM installed for this tutorial on server ''http://localhost:8080/idm-backend''. Source codes for this tutorial can be found in the [[https://github.com/bcvsolutions/CzechIdMng/blob/develop/Realization/frontend/czechidm-example/src/content/dashboards/button/IdentityContractDashboardButton.js|example module]] ===== 01 Create a button component ===== We will use ''AbstractIdentityDashboardButton'' component as superclass for creating custom button (prepared in core ''advanced'' component library) - contains some default method implementations (common button features ... boiler plate). Newly created button will do a redirect to selected identity contacts tab. import { connect } from 'react-redux'; // import { Advanced, Managers } from 'czechidm-core'; const identityManager = new Managers.IdentityManager(); /** * Quick button to identity detail with contract tab selected. * * @since 9.6.0 */ class IdentityContractDashboardButton extends Advanced.AbstractIdentityDashboardButton { constructor(props, context) { super(props, context); } getIcon() { return 'component:contract'; } isRendered() { const { identity, permissions } = this.props; // return identityManager.canRead(identity, permissions); } getLabel() { return this.i18n('content.identity.identityContracts.header'); } getTitle() { return this.i18n('content.identity.identityContracts.title'); } onClick() { this.context.router.push(`/identity/${encodeURIComponent(this.getIdentityIdentifier())}/contracts`); } } function select(state) { return { i18nReady: state.config.get('i18nReady'), // required (listen locale is changed) userContext: state.security.userContext // required (listen logged user context) }; } export default connect(select)(IdentityContractDashboardButton); ===== 02 Register button component ===== Component is created, now we need to register her in [[https://github.com/bcvsolutions/CzechIdMng/tree/develop/Realization/frontend/czechidm-core#component-descriptor|component descriptor]]. New button will be available on identity dashboard. Add component into module's ''component-descriptor.js'': ... module.exports = { ... 'components': [ ... { 'id': 'identity-contract-dashboard-button', 'type': 'identity-dashboard-button', 'order': 150, 'component': require('./src/content/dashboards/button/IdentityContractDashboardButton') } ... ] }; ... {{:tutorial:dev:screenshot_from_2019-04-10_13-49-00.png|}}