diff --git a/pyweb/djextdirect/formprovider.py b/pyweb/djextdirect/formprovider.py
index 8d036a1..a85dbd6 100644
--- a/pyweb/djextdirect/formprovider.py
+++ b/pyweb/djextdirect/formprovider.py
@@ -50,6 +50,18 @@ Ext.ux.%(clsname)s = function( config ){
if( typeof config.pk != "undefined" ){
this.load();
}
+
+ this.form.addEvents({
+ 'submitSuccess': true,
+ 'submitFailure': true
+ });
+
+ if( typeof config.listeners != "undefined" ){
+ if( typeof config.listeners.submitSuccess != "undefined" )
+ this.form.on("submitSuccess", config.listeners.submitSuccess);
+ if( typeof config.listeners.submitFailure != "undefined" )
+ this.form.on("submitFailure", config.listeners.submitFailure);
+ }
}
Ext.extend( Ext.ux.%(clsname)s, Ext.form.FormPanel, {
@@ -64,6 +76,10 @@ Ext.extend( Ext.ux.%(clsname)s, Ext.form.FormPanel, {
typeof action.result.errors['__all__'] != 'undefined' ){
Ext.Msg.alert( "Error", action.result.errors['__all__'] );
}
+ form.fireEvent("submitFailure", form, action);
+ },
+ success: function( form, action ){
+ form.fireEvent("submitSuccess", form, action);
}
});
},
@@ -267,6 +283,7 @@ class FormProvider(Provider):
"""buttons: [{
text: "Submit",
handler: this.submit,
+ id: '"""+clsname+"""_submit',
scope: this
}]"""
'}',
diff --git a/pyweb/mumble/templates/mumble/mumble.html b/pyweb/mumble/templates/mumble/mumble.html
index eaabf62..9aa33b1 100644
--- a/pyweb/mumble/templates/mumble/mumble.html
+++ b/pyweb/mumble/templates/mumble/mumble.html
@@ -119,68 +119,120 @@
xtype: "{{ RegForm|lower }}",
pk: {% if MumbleAccount %}{{ MumbleAccount.id }}{% else %}-1{% endif %},
labelWidth: 150,
- baseParams: {serverid: {{MumbleServer.id}} }
+ baseParams: {serverid: {{MumbleServer.id}} },
+ {% if not MumbleAccount %}
+ listeners: {
+ submitSuccess: function( form, action ){
+ window.location.reload();
+ }
+ }
+ {% else %}
+ listeners: {
+ submitSuccess: function( form, action ){
+ form.savetip = new Ext.ToolTip({
+ id: 'content-anchor-tip',
+ target: '{{ RegForm }}_submit',
+ anchor: 'right',
+ html: gettext("Saved successfully."),
+ width: 150,
+ autoHide: true,
+ listeners: {
+ hide: function( ttip ){
+ form.savetip.destroy();
+ form.savetip = null;
+ }
+ }
+ });
+ form.savetip.show();
+ }
+ }
+ {% endif %}
},
{% if IsAdmin %}
{
title: gettext("Administration"),
pk: {{ MumbleServer.id }},
labelWidth: 150,
- xtype: 'mumbleform'
+ xtype: 'mumbleform',
+ listeners: {
+ submitSuccess: function( form, action ){
+ form.savetip = new Ext.ToolTip({
+ id: 'content-anchor-tip',
+ target: 'MumbleForm_submit',
+ anchor: 'right',
+ html: gettext("Saved successfully."),
+ width: 150,
+ autoHide: true,
+ listeners: {
+ hide: function( ttip ){
+ form.savetip.destroy();
+ form.savetip = null;
+ }
+ }
+ });
+ form.savetip.show();
+ }
+ }
},
{% endif %}
{% if MumbleAccount %}
{
title: gettext("User texture"),
- layout: "border",
- items: [{
- region: "north",
- layout: "hbox",
- height: 200,
+ {% if MumbleServer|mmversion_eq:"1.2.2" %}
+ html: gettext(
+ 'Sorry, due to a bug in Murmur 1.2.2, displaying and setting the Texture is disabled.'
+ )
+ {% else %}
+ layout: "border",
items: [{
- flex: 1,
- height: 200,
- title: gettext("Texture"),
- html: String.format('',
- "{% url mumble.views.showTexture MumbleServer.id MumbleAccount.id %}")
- }, {
- flex: 1,
+ region: "north",
+ layout: "hbox",
height: 200,
- title: gettext("Gravatar"),
- html: String.format('', "{{ MumbleAccount.gravatar }}")
- }]
- }, {
- region: "center",
- xtype: "form",
- labelWidth: 150,
- fileUpload: true,
- url: "{% url mumble.views.update_avatar MumbleAccount.id %}",
- items: [{
- name: "usegravatar",
- fieldLabel: gettext("Use Gravatar"),
- xtype: "checkbox"
+ items: [{
+ flex: 1,
+ height: 200,
+ title: gettext("Texture"),
+ html: String.format('',
+ "{% url mumble.views.showTexture MumbleServer.id MumbleAccount.id %}")
+ }, {
+ flex: 1,
+ height: 200,
+ title: gettext("Gravatar"),
+ html: String.format('', "{{ MumbleAccount.gravatar }}")
+ }]
}, {
- name: "texturefile",
- fieldLabel: gettext("Upload Avatar"),
- xtype: "textfield",
- inputType: "file"
- }],
- buttons: [{
- text: gettext('Submit'),
- handler: function(){
- this.ownerCt.ownerCt.getForm().submit({
- success: function(form, action){
- var now = new Date();
- var img = Ext.fly("img_avatar");
- img.dom.src = String.format("{0}?_dc={1}",
- "{% url mumble.views.showTexture MumbleServer.id MumbleAccount.id %}",
- now.getTime()
- );
- }
- });
+ region: "center",
+ xtype: "form",
+ labelWidth: 150,
+ fileUpload: true,
+ url: "{% url mumble.views.update_avatar MumbleAccount.id %}",
+ items: [{
+ name: "usegravatar",
+ fieldLabel: gettext("Use Gravatar"),
+ xtype: "checkbox"
+ }, {
+ name: "texturefile",
+ fieldLabel: gettext("Upload Avatar"),
+ xtype: "textfield",
+ inputType: "file"
+ }],
+ buttons: [{
+ text: gettext('Submit'),
+ handler: function(){
+ this.ownerCt.ownerCt.getForm().submit({
+ success: function(form, action){
+ var now = new Date();
+ var img = Ext.fly("img_avatar");
+ img.dom.src = String.format("{0}?_dc={1}",
+ "{% url mumble.views.showTexture MumbleServer.id MumbleAccount.id %}",
+ now.getTime()
+ );
+ }
+ });
}
+ }]
}]
- }]
+ {% endif %}
},
{% endif %}
{% if IsAdmin %}