mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 17:26:22 +01:00
added Sonia.History class to simplify handling of browser back and forward buttons
This commit is contained in:
@@ -116,11 +116,7 @@ Sonia.group.Grid = Ext.extend(Sonia.rest.Grid, {
|
||||
console.debug( group.name + ' selected' );
|
||||
}
|
||||
|
||||
var token = Ext.History.getToken();
|
||||
if ( token ){
|
||||
var parts = token.split('|');
|
||||
Ext.History.add(parts[0] + '|' + group.name);
|
||||
}
|
||||
Sonia.History.append(group.name);
|
||||
|
||||
Ext.getCmp('groupRmButton').setDisabled(false);
|
||||
Sonia.group.setEditPanel([{
|
||||
|
||||
@@ -103,11 +103,7 @@ Sonia.repository.Grid = Ext.extend(Sonia.rest.Grid, {
|
||||
console.debug( item.name + ' selected' );
|
||||
}
|
||||
|
||||
var token = Ext.History.getToken();
|
||||
if ( token ){
|
||||
var parts = token.split('|');
|
||||
Ext.History.add(parts[0] + '|' + item.name);
|
||||
}
|
||||
Sonia.History.append(item.name);
|
||||
|
||||
var infoPanel = main.getInfoPanel(item.type);
|
||||
infoPanel.item = item;
|
||||
|
||||
@@ -29,14 +29,64 @@
|
||||
*
|
||||
*/
|
||||
|
||||
Ext.ns('Sonia');
|
||||
|
||||
Sonia.History = {
|
||||
|
||||
historyElements: [],
|
||||
recentlyAdded: [],
|
||||
|
||||
add: function(token){
|
||||
this.recentlyAdded.push(token);
|
||||
Ext.History.add(token, true);
|
||||
},
|
||||
|
||||
append: function(item){
|
||||
var token = Ext.History.getToken();
|
||||
if ( token ){
|
||||
var parts = token.split('|');
|
||||
this.add(parts[0] + '|' + item);
|
||||
}
|
||||
},
|
||||
|
||||
register: function(id, fn){
|
||||
this.historyElements.push({
|
||||
'id': id,
|
||||
'fn': fn
|
||||
});
|
||||
},
|
||||
|
||||
handleChange: function(id, params){
|
||||
if ( debug ){
|
||||
console.debug( 'handle ' + id + ' with "' + params + '"' );
|
||||
}
|
||||
for (var i=0; i<this.historyElements.length; i++){
|
||||
if (this.historyElements.id == id){
|
||||
el.fn(params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
Ext.History.on('change', function(token){
|
||||
if(token){
|
||||
var parts = token.split('|');
|
||||
var tab = parts[0];
|
||||
if ( debug ){
|
||||
console.debug( 'handle history event for ' + tab );
|
||||
var found = false;
|
||||
for ( var i=0; i<Sonia.History.recentlyAdded.length; i++ ){
|
||||
if (Sonia.History.recentlyAdded[i] == token){
|
||||
found = true;
|
||||
Sonia.History.recentlyAdded.splice(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found){
|
||||
var parts = token.split('|');
|
||||
var id = parts[0];
|
||||
Sonia.History.handleChange(id, parts.splice(1));
|
||||
}
|
||||
|
||||
} else if (debug) {
|
||||
console.debug('history token is empty');
|
||||
}
|
||||
|
||||
@@ -446,7 +446,7 @@ Ext.onReady(function(){
|
||||
listeners: {
|
||||
tabchange: function(tabPanel, tab){
|
||||
if ( Ext.isDefined(tab) ){
|
||||
Ext.History.add(tab.id);
|
||||
Sonia.History.add(tab.id, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,11 +103,7 @@ Sonia.user.Grid = Ext.extend(Sonia.rest.Grid, {
|
||||
console.debug( item.name + ' selected' );
|
||||
}
|
||||
|
||||
var token = Ext.History.getToken();
|
||||
if ( token ){
|
||||
var parts = token.split('|');
|
||||
Ext.History.add(parts[0] + '|' + item.name);
|
||||
}
|
||||
Sonia.History.append(item.name);
|
||||
|
||||
var panel = new Sonia.user.FormPanel({
|
||||
item: item,
|
||||
|
||||
Reference in New Issue
Block a user