import { iconNode } from 'discourse/helpers/fa-icon-node'; import { createWidget } from 'discourse/widgets/widget'; import { h } from 'virtual-dom'; createWidget('post-admin-menu-button', { tagName: 'li.btn', buildClasses(attrs) { return attrs.className; }, html(attrs) { return [iconNode(attrs.icon), I18n.t(attrs.label)]; }, click() { this.sendWidgetAction('closeAdminMenu'); return this.sendWidgetAction(this.attrs.action); } }); export default createWidget('post-admin-menu', { tagName: 'div.post-admin-menu.popup-menu', html(attrs) { const contents = []; contents.push(h('h3', I18n.t('admin_title'))); if (!attrs.isWhisper && this.currentUser.staff) { const buttonAtts = { action: 'togglePostType', icon: 'shield', className: 'toggle-post-type' }; if (attrs.isModeratorAction) { buttonAtts.label = 'post.controls.revert_to_regular'; } else { buttonAtts.label = 'post.controls.convert_to_moderator'; } contents.push(this.attach('post-admin-menu-button', buttonAtts)); } if (attrs.canManage) { contents.push(this.attach('post-admin-menu-button', { icon: 'cog', label: 'post.controls.rebake', action: 'rebakePost', className: 'rebuild-html' })); if (attrs.hidden) { contents.push(this.attach('post-admin-menu-button', { icon: 'eye', label: 'post.controls.unhide', action: 'unhidePost', className: 'unhide-post' })); } } if (this.currentUser.admin) { contents.push(this.attach('post-admin-menu-button', { icon: 'user', label: 'post.controls.change_owner', action: 'changePostOwner', className: 'change-owner' })); } // toggle Wiki button if (attrs.wiki) { contents.push(this.attach('post-admin-menu-button', { action: 'toggleWiki', label: 'post.controls.unwiki', icon: 'pencil-square-o', className: 'wiki wikied' })); } else { contents.push(this.attach('post-admin-menu-button', { action: 'toggleWiki', label: 'post.controls.wiki', icon: 'pencil-square-o', className: 'wiki' })); } return contents; }, clickOutside() { this.sendWidgetAction('closeAdminMenu'); } });