diff --git a/frontend/src/main/web/lib/components/SystemGlossary.jsx b/frontend/src/main/web/lib/components/SystemGlossary.jsx index e3962b00f5..3c573aca9f 100644 --- a/frontend/src/main/web/lib/components/SystemGlossary.jsx +++ b/frontend/src/main/web/lib/components/SystemGlossary.jsx @@ -83,6 +83,7 @@ var SystemGlossary = React.createClass({ totalCount={this.state.totalCount} canAddNewEntry={this.state.canAddNewEntry} canUpdateEntry={this.state.canUpdateEntry} + canDeleteEntry={this.state.canDeleteEntry} user={Configs.user} srcLocale={srcLocale} selectedTransLocale={selectedTransLocale}/>); diff --git a/frontend/src/main/web/lib/components/glossary/DataTable.jsx b/frontend/src/main/web/lib/components/glossary/DataTable.jsx index 23b412e63b..8508f148e6 100644 --- a/frontend/src/main/web/lib/components/glossary/DataTable.jsx +++ b/frontend/src/main/web/lib/components/glossary/DataTable.jsx @@ -54,6 +54,7 @@ var DataTable = React.createClass({ ), canAddNewEntry: React.PropTypes.bool.isRequired, canUpdateEntry: React.PropTypes.bool.isRequired, + canDeleteEntry: React.PropTypes.bool.isRequired, user: React.PropTypes.shape({ username: React.PropTypes.string, email: React.PropTypes.string, @@ -284,7 +285,9 @@ var DataTable = React.createClass({ columnData, width) { if(id === null) { return ; - } else if(!this.props.canUpdateEntry && !this.props.canAddNewEntry) { + } else if(!this.props.canUpdateEntry && + !this.props.canDeleteEntry && + !this.props.canAddNewEntry) { return; } var entry = this._getGlossaryEntry(id); @@ -303,7 +306,7 @@ var DataTable = React.createClass({ srcLocaleId={this.props.srcLocale.locale.localeId} info={info} canUpdateEntry={this.props.canUpdateEntry} - canDeleteEntry={this.props.canAddNewEntry}/> + canDeleteEntry={this.props.canDeleteEntry}/> ); } }, diff --git a/frontend/src/main/web/lib/stores/GlossaryStore.js b/frontend/src/main/web/lib/stores/GlossaryStore.js index 54c2323c08..fafa9694a9 100644 --- a/frontend/src/main/web/lib/stores/GlossaryStore.js +++ b/frontend/src/main/web/lib/stores/GlossaryStore.js @@ -24,6 +24,7 @@ EventEmitter.prototype.setMaxListeners(MAX_LISTENERS); var _state = { canAddNewEntry: false, canUpdateEntry: false, + canDeleteEntry: false, localeOptions: [], srcLocale: null, selectedTransLocale: null, @@ -99,6 +100,10 @@ function canAddNewEntry () { function canUpdateEntry() { return Configs.data.permission.updateGlossary; } +function canDeleteEntry() { + return Configs.data.permission.deleteGlossary; +} + function processGlossaryList(res) { if(res.error) { @@ -249,6 +254,7 @@ function refreshGlossaryEntries() { //load permission here _state.canAddNewEntry = canAddNewEntry(); _state.canUpdateEntry = canUpdateEntry(); + _state.canDeleteEntry = canDeleteEntry(); GlossaryAPIStore.loadLocalesStats() .then(processLocalesStatistic) diff --git a/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java b/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java index 24933c892c..57a625a123 100644 --- a/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java +++ b/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java @@ -47,14 +47,17 @@ public Permission getUserPermission() { Permission permission = new Permission(); boolean canUpdate = false; boolean canInsert = false; + boolean canDelete = false; if(authenticatedAccount != null) { canUpdate = identity.hasPermission("", "glossary-update"); canInsert = identity.hasPermission("", "glossary-insert"); + canDelete = identity.hasPermission("", "glossary-delete"); } permission.put("updateGlossary", canUpdate); permission.put("insertGlossary", canInsert); + permission.put("deleteGlossary", canDelete); return permission; }