diff --git a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js
index a722b5b912..073ef2fced 100644
--- a/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js
+++ b/src/components/DataBrowserHeaderBar/DataBrowserHeaderBar.react.js
@@ -16,7 +16,7 @@ export default
@DragDropContext(HTML5Backend)
class DataBrowserHeaderBar extends React.Component {
render() {
- let { headers, onResize, selectAll, onAddColumn, updateOrdering, readonly } = this.props;
+ let { headers, onResize, selectAll, onAddColumn, updateOrdering, readonly, preventSchemaEdits } = this.props;
let elements = [
// Note: bulk checkbox is disabled as all rows are selected (not just visible ones due to current lazy loading implementation)
// TODO: add bulk checking only visible rows
@@ -61,8 +61,9 @@ class DataBrowserHeaderBar extends React.Component {
if (headers.length % 2) {
finalStyle.background = 'rgba(224,224,234,0.10)';
}
+
elements.push(
- readonly ? null : (
+ readonly || preventSchemaEdits ? null : (
);
}
}
+
+BrowserTable.contextTypes = {
+ currentApp: PropTypes.instanceOf(ParseApp)
+};
+
diff --git a/src/dashboard/Data/Browser/BrowserToolbar.react.js b/src/dashboard/Data/Browser/BrowserToolbar.react.js
index 6631a4a7ae..c7d07a7943 100644
--- a/src/dashboard/Data/Browser/BrowserToolbar.react.js
+++ b/src/dashboard/Data/Browser/BrowserToolbar.react.js
@@ -45,6 +45,8 @@ let BrowserToolbar = ({
enableDeleteAllRows,
enableExportClass,
enableSecurityDialog,
+ enableColumnManipulation,
+ enableClassManipulation
}) => {
let selectionLength = Object.keys(selection).length;
let details = [];
@@ -93,8 +95,8 @@ let BrowserToolbar = ({
menu = (
-
-
+ {enableColumnManipulation ? : }
+ {enableClassManipulation ? : }
diff --git a/src/dashboard/Data/Browser/DataBrowser.react.js b/src/dashboard/Data/Browser/DataBrowser.react.js
index cbef02f7df..2a5618f49c 100644
--- a/src/dashboard/Data/Browser/DataBrowser.react.js
+++ b/src/dashboard/Data/Browser/DataBrowser.react.js
@@ -10,7 +10,7 @@ import BrowserToolbar from 'dashboard/Data/Browser/BrowserToolbar.react'
import * as ColumnPreferences from 'lib/ColumnPreferences';
import ParseApp from 'lib/ParseApp';
import React from 'react';
-import PropTypes from 'lib/PropTypes';
+import PropTypes from 'lib/PropTypes';
import { SpecialClasses } from 'lib/Constants';
/**
@@ -189,6 +189,7 @@ export default class DataBrowser extends React.Component {
render() {
let { className, ...other } = this.props;
+ const { preventSchemaEdits } = this.context.currentApp;
return (
);
diff --git a/src/lib/ParseApp.js b/src/lib/ParseApp.js
index 74b3956211..70a42fd542 100644
--- a/src/lib/ParseApp.js
+++ b/src/lib/ParseApp.js
@@ -42,6 +42,7 @@ export default class ParseApp {
primaryBackgroundColor,
secondaryBackgroundColor,
supportedPushLocales,
+ preventSchemaEdits
}) {
this.name = appName;
this.createdAt = created_at ? new Date(created_at) : new Date();
@@ -65,6 +66,7 @@ export default class ParseApp {
this.primaryBackgroundColor=primaryBackgroundColor;
this.secondaryBackgroundColor=secondaryBackgroundColor;
this.supportedPushLocales = supportedPushLocales ? supportedPushLocales : [];
+ this.preventSchemaEdits = preventSchemaEdits || false;
if(!supportedPushLocales) {
console.warn(`Missing push locales for '` + appName + `', see this link for details on setting localizations up. https://github.com/parse-community/parse-dashboard#configuring-localized-push-notifications`);