mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-17 18:51:10 +01:00
added window for exception details
This commit is contained in:
@@ -142,6 +142,7 @@
|
||||
<!-- sonia.action -->
|
||||
<script type="text/javascript" src="resources/js/action/sonia.action.js"></script>
|
||||
<script type="text/javascript" src="resources/js/action/sonia.action.changepasswordwindow.js"></script>
|
||||
<script type="text/javascript" src="resources/js/action/sonia.action.exceptionwindow.js"></script>
|
||||
|
||||
<!-- sonia.plugin -->
|
||||
<script type="text/javascript" src="resources/js/plugin/sonia.plugin.js"></script>
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
/* *
|
||||
* Copyright (c) 2010, Sebastian Sdorra
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of SCM-Manager; nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* http://bitbucket.org/sdorra/scm-manager
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
Sonia.action.ExceptionWindow = Ext.extend(Ext.Window,{
|
||||
|
||||
title: null,
|
||||
message: null,
|
||||
stacktrace: null,
|
||||
icon: Ext.MessageBox.ERROR,
|
||||
|
||||
// TODO i18n
|
||||
// labels
|
||||
okText: 'Ok',
|
||||
detailsText: 'Details',
|
||||
exceptionText: 'Exception',
|
||||
|
||||
initComponent: function(){
|
||||
var config = {
|
||||
title: this.title,
|
||||
width: 300,
|
||||
height: 110,
|
||||
closable: true,
|
||||
resizable: true,
|
||||
plain: true,
|
||||
border: false,
|
||||
modal: true,
|
||||
bodyCssClass: 'x-window-dlg',
|
||||
items: [{
|
||||
xtype: 'panel',
|
||||
height: 45,
|
||||
bodyCssClass: 'x-panel-mc x-dlg-icon',
|
||||
html: '<div class="ext-mb-icon ' + this.icon + '"></div><div class="ext-mb-content"><span class="ext-mb-text">' + this.message + '</span></div>'
|
||||
},{
|
||||
id: 'stacktraceArea',
|
||||
xtype: 'textarea',
|
||||
editable: false,
|
||||
fieldLabel: this.exceptionText,
|
||||
value: this.stacktrace,
|
||||
width: '98%',
|
||||
height: 260,
|
||||
hidden: true
|
||||
}],
|
||||
buttons: [{
|
||||
text: this.okText,
|
||||
scope: this,
|
||||
handler: this.close
|
||||
},{
|
||||
id: 'detailButton',
|
||||
text: this.detailsText,
|
||||
scope: this,
|
||||
handler: this.showDetails
|
||||
}]
|
||||
}
|
||||
|
||||
Ext.apply(this, Ext.apply(this.initialConfig, config));
|
||||
Sonia.action.ChangePasswordWindow.superclass.initComponent.apply(this, arguments);
|
||||
},
|
||||
|
||||
showDetails: function(){
|
||||
Ext.getCmp('detailButton').setDisabled(true);
|
||||
Ext.getCmp('stacktraceArea').setVisible(true);
|
||||
this.setWidth(640);
|
||||
this.setHeight(380);
|
||||
this.center();
|
||||
}
|
||||
|
||||
});
|
||||
@@ -392,7 +392,7 @@ Sonia.scm.Main = Ext.extend(Ext.util.Observable, {
|
||||
}, this);
|
||||
},
|
||||
|
||||
handleFailure: function(status, title, message){
|
||||
handleFailure: function(status, title, message, serverException){
|
||||
if (debug){
|
||||
console.debug( 'handle failure for status code: ' + status );
|
||||
}
|
||||
@@ -428,12 +428,41 @@ Sonia.scm.Main = Ext.extend(Ext.util.Observable, {
|
||||
message = this.errorMessage;
|
||||
}
|
||||
|
||||
Ext.MessageBox.show({
|
||||
title: title,
|
||||
msg: String.format(message, status),
|
||||
buttons: Ext.MessageBox.OK,
|
||||
icon: Ext.MessageBox.ERROR
|
||||
});
|
||||
var text = null;
|
||||
if (serverException){
|
||||
try {
|
||||
if ( Ext.isString(serverException) ){
|
||||
serverException = Ext.decode(serverException);
|
||||
}
|
||||
text = serverException.stacktrace;
|
||||
if ( debug ){
|
||||
console.debug( text );
|
||||
}
|
||||
} catch (e){
|
||||
if ( debug ){
|
||||
console.debug(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
message = String.format(message, status);
|
||||
|
||||
if ( text == null ){
|
||||
|
||||
Ext.MessageBox.show({
|
||||
title: title,
|
||||
msg: message,
|
||||
buttons: Ext.MessageBox.OK,
|
||||
icon: Ext.MessageBox.ERROR
|
||||
});
|
||||
|
||||
} else {
|
||||
new Sonia.action.ExceptionWindow({
|
||||
title: title,
|
||||
message: message,
|
||||
stacktrace: text
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user