Ext.define("Compass.ErpApp.Desktop.Applications.ControlPanel.DesktopManagementPanel",{
extend:"Ext.Panel",
requires:['Ext.ux.desktop.Wallpaper'],
alias:"widget.controlpanel_desktopmanagementpanel",
setWindowStatus : function(status){
this.findParentByType('statuswindow').setStatus(status);
},
clearWindowStatus : function(){
this.findParentByType('statuswindow').clearStatus();
},
setup:function(){
this.form.setup();
},
buildPreferenceForm: function(form, preferenceTypes){
var self = this;
form.removeAll(true);
Ext.each(preferenceTypes, function(preferenceType){
var store = []
Ext.each(preferenceType.preference_options,function(option){
store.push([option.value,option.description])
});
if(preferenceType.internal_identifier == 'desktop_background')
{
form.add({
xtype:'combo',
fieldLabel:preferenceType.description,
editable:false,
forceSelection:true,
id:preferenceType.internal_identifier + '_id',
width:150,
triggerAction: 'all',
store:store,
name:preferenceType.internal_identifier,
listeners:{
scope:self,
'select':function(combo){
self.wallpaperImageChange(combo.getValue());
}
}
});
}
else
{
form.add({
xtype:'combo',
editable:false,
forceSelection:true,
id:preferenceType.internal_identifier + '_id',
fieldLabel:preferenceType.description,
name:preferenceType.internal_identifier,
valueField:'field1',
width:150,
triggerAction: 'all',
store:store
});
}
});
},
setPreferences: function(preferences){
var preference = preferences.find("preference_type.internal_identifier == 'desktop_background'");
var wallpaper = preference.preference_option.value;
var img = Ext.get('wallpaper_background_image').dom;
img.src = "/images/wallpaper/" + wallpaper;
},
wallpaperImageChange: function(selectedImage){
var img = Ext.get('wallpaper_background_image').dom;
img.src = "/images/wallpaper/" + selectedImage;
},
constructor : function(config) {
var self = this;
var backgroundImagePanel = {
layout:'fit',
width:150,
xtype:'panel',
region:'east',
html:'
Preview![]()
'
}
this.form = Ext.create('Compass.ErpApp.Shared.PreferenceForm',{
url:'/erp_app/desktop/control_panel/desktop_management/update_desktop_preferences',
setupPreferencesUrl:'/erp_app/desktop/control_panel/desktop_management/desktop_preferences',
loadPreferencesUrl:'/erp_app/desktop/control_panel/desktop_management/selected_desktop_preferences',
width:350,
defaults:{
width:150
},
region:'center',
listeners:{
'beforeAddItemsToForm':function(form, preferenceTypes){
self.buildPreferenceForm(form, preferenceTypes);
return false;
},
'beforeSetPreferences':function(form,preferences){
self.setPreferences(preferences);
},
'afterUpdate':function(form, preferences){
var preference = preferences.find("preference_type.internal_identifier == 'desktop_background'");
compassDesktop.getDesktop().setWallpaper("/images/wallpaper/" + preference.preference_option.value, true);
var old_theme_preference = form.preferences.find("preference_type.internal_identifier == 'extjs_theme'");
var theme_preference = preferences.find("preference_type.internal_identifier == 'extjs_theme'");
if(old_theme_preference.preference_option.value != theme_preference.preference_option.value){
Compass.ErpApp.Utility.promptReload();
return false;
}
else{
return true;
}
}
}
});
config = Ext.apply({
title:'Desktop',
items:[this.form,backgroundImagePanel],
layout:'border',
tbar:{
items:{
iconCls:'icon-picture',
text:'Add Background',
handler:function(btn){
var addBackgroundWindow = new Ext.Window({
layout:'fit',
width:340,
title:'Add Background',
height:130,
plain: true,
buttonAlign:'center',
items: new Ext.FormPanel({
frame:false,
fileUpload: true,
bodyStyle:'padding:5px 5px 0',
width: 425,
defaults:{
labelWidth:110
},
url:'/erp_app/desktop/control_panel/desktop_management/add_background',
items:[
{
xtype:'textfield',
fieldLabel:'Description',
allowBlank:true,
name:'description'
},
{
xtype:'filefield',
fieldLabel:'Background Image',
buttonText:'Upload',
buttonOnly:false,
allowBlank:false,
name:'image_data'
}
]
}),
buttons: [{
text:'Submit',
listeners:{
'click':function(button){
var window = button.findParentByType('window');
var formPanel = window.query('form')[0];
self.setWindowStatus('Adding background...');
formPanel.getForm().submit({
reset:true,
success:function(form, action){
self.clearWindowStatus();
var obj = Ext.decode(action.response.responseText);
if(obj.success){
self.setup();
}
else{
Ext.Msg.alert("Error", obj.msg);
}
},
failure:function(form, action){
self.clearWindowStatus();
if(action.response !== undefined){
var obj = Ext.decode(action.response.responseText);
Ext.Msg.alert("Error", obj.msg);
}
else{
Ext.Msg.alert("Error", 'Error adding background.');
}
}
});
}
}
},{
text: 'Close',
handler: function(){
addBackgroundWindow.close();
}
}]
});
addBackgroundWindow.show();
}
}
}
}, config);
this.callParent([config]);
}
});