Merge pull request #1101 from stasvovk/admin_console_urls

#962: change url when a user navigates between tabs in admin console
Этот коммит содержится в:
Harrison Healey
2015-10-19 10:10:09 -04:00
родитель 814aa57fc1 9fa3c996d5
Коммит 2d0b952941
5 изменённых файлов: 26 добавлений и 6 удалений

Просмотреть файл

@@ -40,9 +40,13 @@ export default class AdminController extends React.Component {
config: AdminStore.getConfig(), config: AdminStore.getConfig(),
teams: AdminStore.getAllTeams(), teams: AdminStore.getAllTeams(),
selectedTeams, selectedTeams,
selected: 'service_settings', selected: props.tab || 'service_settings',
selectedTeam: null selectedTeam: props.teamId || null
}; };
if (!props.tab) {
history.replaceState(null, null, `/admin_console/${this.state.selected}`);
}
} }
componentDidMount() { componentDidMount() {
@@ -142,7 +146,9 @@ export default class AdminController extends React.Component {
} else if (this.state.selected === 'service_settings') { } else if (this.state.selected === 'service_settings') {
tab = <ServiceSettingsTab config={this.state.config} />; tab = <ServiceSettingsTab config={this.state.config} />;
} else if (this.state.selected === 'team_users') { } else if (this.state.selected === 'team_users') {
tab = <TeamUsersTab team={this.state.teams[this.state.selectedTeam]} />; if (this.state.teams) {
tab = <TeamUsersTab team={this.state.teams[this.state.selectedTeam]} />;
}
} }
} }

Просмотреть файл

@@ -24,6 +24,7 @@ export default class AdminSidebar extends React.Component {
handleClick(name, teamId, e) { handleClick(name, teamId, e) {
e.preventDefault(); e.preventDefault();
this.props.selectTab(name, teamId); this.props.selectTab(name, teamId);
history.pushState({name: name, teamId: teamId}, null, `/admin_console/${name}/${teamId || ''}`);
} }
isSelected(name, teamId) { isSelected(name, teamId) {

Просмотреть файл

@@ -5,9 +5,12 @@ var ErrorBar = require('../components/error_bar.jsx');
var SelectTeamModal = require('../components/admin_console/select_team_modal.jsx'); var SelectTeamModal = require('../components/admin_console/select_team_modal.jsx');
var AdminController = require('../components/admin_console/admin_controller.jsx'); var AdminController = require('../components/admin_console/admin_controller.jsx');
export function setupAdminConsolePage() { export function setupAdminConsolePage(props) {
ReactDOM.render( ReactDOM.render(
<AdminController />, <AdminController
tab={props.ActiveTab}
teamId={props.TeamId}
/>,
document.getElementById('admin_controller') document.getElementById('admin_controller')
); );

Просмотреть файл

@@ -12,7 +12,7 @@
<div id='select_team_modal'></div> <div id='select_team_modal'></div>
<script> <script>
window.setup_admin_console_page(); window.setup_admin_console_page({{ .Props }});
$(document).ready(function(){ $(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip(); $('[data-toggle="tooltip"]').tooltip();

Просмотреть файл

@@ -64,6 +64,9 @@ func InitWeb() {
mainrouter.Handle("/signup/{service:[A-Za-z]+}/complete", api.AppHandlerIndependent(signupCompleteOAuth)).Methods("GET") mainrouter.Handle("/signup/{service:[A-Za-z]+}/complete", api.AppHandlerIndependent(signupCompleteOAuth)).Methods("GET")
mainrouter.Handle("/admin_console", api.UserRequired(adminConsole)).Methods("GET") mainrouter.Handle("/admin_console", api.UserRequired(adminConsole)).Methods("GET")
mainrouter.Handle("/admin_console/", api.UserRequired(adminConsole)).Methods("GET")
mainrouter.Handle("/admin_console/{tab:[A-Za-z0-9-_]+}", api.UserRequired(adminConsole)).Methods("GET")
mainrouter.Handle("/admin_console/{tab:[A-Za-z0-9-_]+}/{team:[A-Za-z0-9-]*}", api.UserRequired(adminConsole)).Methods("GET")
mainrouter.Handle("/hooks/{id:[A-Za-z0-9]+}", api.ApiAppHandler(incomingWebhook)).Methods("POST") mainrouter.Handle("/hooks/{id:[A-Za-z0-9]+}", api.ApiAppHandler(incomingWebhook)).Methods("POST")
@@ -699,7 +702,14 @@ func adminConsole(c *api.Context, w http.ResponseWriter, r *http.Request) {
return return
} }
params := mux.Vars(r)
activeTab := params["tab"]
teamId := params["team"]
page := NewHtmlTemplatePage("admin_console", "Admin Console") page := NewHtmlTemplatePage("admin_console", "Admin Console")
page.Props["ActiveTab"] = activeTab
page.Props["TeamId"] = teamId
page.Render(c, w) page.Render(c, w)
} }