GIF89a;
| Direktori : /home/serb/www/livechat/js/app/view/admin/ |
| Current File : /home/serb/www/livechat/js/app/view/admin/WidgetThemeView.js |
//==============================================================================
//
// Widget theme view
//
//==============================================================================
(function(app, config, $)
{
app.WidgetThemeView = Backbone.View.extend({
events : {
'click #customer-chat-widget-theme-save' : 'save',
'change #inputWidgetTheme' : 'updatePreview'
},
inputs : null,
syncing : false,
initialize : function()
{
// Initialize models
this.model = app.model.uiSettings;
// Cache view elements
this.$inputs = this.$('*[name]');
this.$widgetTheme = this.$('#inputWidgetTheme');
this.$preview = this.$('#widget-theme-preview');
this.$save = this.$('#customer-chat-widget-theme-save');
this.$loading = this.$('.customer-chat-content-loading-icon').hide();
this.$inputs.blur($.proxy(this.validate, this));
// Handle rendering
this.model.on('change', this.render, this);
this.model.on('request', this.disable, this);
this.model.on('sync', this.enable, this);
this.render();
},
save : function()
{
var attributes = {};
this.$inputs.each(function()
{
var $el = $(this);
if($el.attr('type') == 'checkbox')
{
attributes[$el.attr('name')] = $el.is(':checked') ? 'true' : 'false';
}
else
{
attributes[$el.attr('name')] = $el.val();
}
});
if(!this.syncing)
{
this.model.save(attributes);
}
},
render : function()
{
var _this = this;
this.$inputs.each(function()
{
var $el = $(this);
// Display the model value in the input element
if($el.attr('type') == 'checkbox')
{
$el.attr('checked', _this.model.get($el.attr('name')) == 'true');
}
else
{
$el.val(_this.model.get($el.attr('name')));
}
});
this.updatePreview();
},
updatePreview : function()
{
// Update theme's preview image
var themePath = this.$widgetTheme.val();
if(themePath)
{
var imagePath = config.rootPath + themePath + '/preview.png';
this.$preview.attr('src', imagePath);
}
},
disable : function()
{
this.syncing = true;
this.$save.addClass('button-disabled');
this.$loading.fadeIn();
},
enable : function()
{
var _this = this;
setTimeout(function()
{
_this.$save.removeClass('button-disabled');
_this.$loading.fadeOut();
_this.syncing = false;
}, 500);
}
});
})(window.Application, window.chatConfig, jQuery);