diff --git a/erpnext/public/js/hub/pages/item.js b/erpnext/public/js/hub/pages/item.js
index dabddea..b3c63c8 100644
--- a/erpnext/public/js/hub/pages/item.js
+++ b/erpnext/public/js/hub/pages/item.js
@@ -1,4 +1,4 @@
-import SubPage from './base_page';
+import SubPage from './subpage';
 import { get_rating_html } from '../helpers';
 
 erpnext.hub.Item = class Item extends SubPage {
@@ -90,20 +90,23 @@
 		const rating_html = get_rating_html(item.average_rating);
 		const rating_count = item.no_of_ratings > 0 ? `${item.no_of_ratings} reviews` : __('No reviews yet');
 
-		let edit_buttons_html = '';
+		let menu_items = '';
 
 		if(this.own_item) {
-			edit_buttons_html = `<div style="margin-top: 20px">
-				<button class="btn btn-secondary btn-default btn-xs margin-right edit-item">Edit Details</button>
-				<button class="btn btn-secondary btn-danger btn-xs unpublish">Unpublish</button>
-			</div>`;
+			menu_items = `
+				<li><a data-action="edit_details">${__('Edit Details')}</a></li>
+				<li><a data-action="unpublish_item">${__('Unpublish')}</a></li>`;
+		} else {
+			menu_items = `
+				<li><a data-action="report_item">${__('Report this item')}</a></li>
+			`;
 		}
 
 		const html = `
 			<div class="hub-item-container">
 				<div class="row visible-xs">
 					<div class="col-xs-12 margin-bottom">
-						<button class="btn btn-xs btn-default" data-route="marketplace/home">Back to home</button>
+						<button class="btn btn-xs btn-default" data-route="marketplace/home">${__('Back to home')}</button>
 					</div>
 				</div>
 				<div class="row">
@@ -126,7 +129,6 @@
 							` : `<p>${__('No description')}<p>`
 						}
 						</div>
-						${edit_buttons_html}
 					</div>
 					<div class="col-md-1">
 						<div class="dropdown pull-right hub-item-dropdown">
@@ -134,8 +136,7 @@
 								<span class="caret"></span>
 							</a>
 							<ul class="dropdown-menu dropdown-right" role="menu">
-								<li><a>Edit Details</a></li>
-								<li><a>Unpublish</a></li>
+								${menu_items}
 							</ul>
 						</div>
 					</div>
@@ -173,10 +174,6 @@
 
 		this.$wrapper.html(html);
 
-		if(this.own_item) {
-			this.bind_edit_buttons();
-		}
-
 		this.make_review_area();
 
 		this.get_reviews()
@@ -186,21 +183,17 @@
 			});
 	}
 
-	bind_edit_buttons() {
-		this.edit_dialog = new frappe.ui.Dialog({
-			title: "Edit Your Product",
-			fields: []
-		});
-
-		this.$wrapper.find('.edit-item').on('click', this.on_edit.bind(this));
-		this.$wrapper.find('.unpublish').on('click', this.on_unpublish.bind(this));
-	}
-
-	on_edit() {
+	edit_details() {
+		if (!this.edit_dialog) {
+			this.edit_dialog = new frappe.ui.Dialog({
+				title: "Edit Your Product",
+				fields: []
+			});
+		}
 		this.edit_dialog.show();
 	}
 
-	on_unpublish() {
+	unpublish_item() {
 		if(!this.unpublish_dialog) {
 			this.unpublish_dialog = new frappe.ui.Dialog({
 				title: "Edit Your Product",
