/**
* Created by Alt on 6/25/2015.
*/
(function(ve,$){
var list;
var ajax=function(data){
return ve.ajax(data,'json');
};
var ListOptions=Backbone.View.extend({
events:{
"click .row-actions .delete":"deleteOption",
"click .row-actions .edit":"editOption",
"click [data-filter]":"filterResult",
"click .pagination-links a":"onPagination"
},
initialize: function(option) {
var self=this;
this.$topnav=this.$('.tablenav.top');
this.$bottomnav=this.$('.tablenav.bottom');
this.$tabs=this.$el.closest('.ve-ui-tabs');
this.$form=this.$tabs.closest('.ve-ajax-form');
this.$pOption=this.$tabs.find('.edit-poptions');
this.$editBtn=this.$tabs.find('[data-edit-popup-option]');
this.$submitBtn=this.$form.find('#submit_btn');
this.$tabs.on( "tabsbeforeactivate", function( event, ui ) {
if(ui.newTab.find('#add_new_btn').length){
self.init_new_option();
}else{
if(ui.newTab.find('[data-edit-popup-option]').length){
self.init_edit_option();
}else{
self.$submitBtn.hide()
}
}
} );
},
editOption:function(e){
e.preventDefault();
var line=$(e.currentTarget).closest('tr');
this.option_id=line.data('option-id');
this.option=line.data('option');
this.edit_option=line.data('p-title');
this.$editBtn.trigger('click');
return false;
},
reloadPopupList:function(){
var self=this;
ajax({action:"ve_get_popup_options"}).done(function(data){
if(data) {
var options=data.options;
var $html='';
$.each(options, function (k, v) {
$html += '';
});
var list=data.list;
self.$pOption.find('#ve_poption_popup').html($html);
$('#popup-setting-tab1').find('.popup-options-list').html(list);
}
});
},
init_new_option:function(){
this.$pOption.find('.popup_title').html(this.edit_option).hide();
this.$pOption.find('#ve_poption_popup').show();
this.$pOption.find(':input').val(null).trigger('change');
this.$form.trigger("reset");
this.$submitBtn.show();
},
init_edit_option:function(){
this.$pOption.find('.popup_title').html(this.edit_option).show();
this.$pOption.find('#ve_poption_popup').hide();
this.set_form('option_id',this.option_id);
this.set_form('position',this.option.position);
this.set_form('top',this.option.top);
this.set_form('left',this.option.left);
this.set_form('bottom',this.option.bottom);
this.set_form('right',this.option.right);
this.set_form('placement',this.option.placement).trigger('change');
this.set_select2_val('#popup_post',this.option.popup_post);
this.set_select2_val('#popup_page',this.option.popup_page);
this.set_select2_val('#popup_category',this.option.popup_category);
this.set_form('open',this.option.open).trigger('change');
this.set_form('delay',this.option.delay);
this.set_form('inactive',this.option.inactive);
this.$editBtn.show();
this.$submitBtn.show();
},
set_form:function(name,val){
function escapeStr(str)
{
if (str)
return str.replace(/([ #;?%&,.+*~\':"!^$[\]()=>|\/@])/g,'\\$1');
return str;
}
name=escapeStr(name);
return this.$form.find('[name='+name+']').val(val);
},
set_select2_val:function($element,data){
$element=$($element);
var $options=$element.find('option');
var selected=[];
if(data) {
$.each(data, function (k, v) {
selected.push(v.id);
});
}
var $html='';
if(data) {
if($options.length<=0) {
$.each(data, function (k, v) {
$html += '';
});
}else{
$options.each(function(){
var isSelected='';
if(selected.indexOf($(this).val())!=-1){
isSelected=' selected="selected"'
}
$html += '';
});
}
}
$element.html($html);
var select2=$element.data('select2');
if(select2&&select2.options&&data){
var oldoptions=select2.options.options;
var options={
width:oldoptions.width,
ajax:oldoptions.ajax,
minimumInputLength:oldoptions.minimumInputLength
};
$element.select2(options);
}
},
deleteOption:function(e){
e.preventDefault();
var self=this;
if(confirm('Are you sure to delete this option')){
var option_id=$(e.currentTarget).closest('tr').data('option-id');
ajax({
action:'ve_delete_popup_option',
option_id:option_id,
paged:this.paged,
"option-filter":this.filter
}).done(
function(response){
if(response.paged){
self.paged=response.paged;
}
$('#ve-popup-option-'+option_id).fadeOut(400,function(){
self.setContent(response);
});
self.$editBtn.hide();
self.reloadPopupList();
}
);
}
},
setContent:function(data){
if(data.rows){
this.$('tbody').html(data.rows);
}
if(data.top_nav){
this.$topnav.find('.tablenav-pages').replaceWith(data.top_nav);
}
if(data.bottom_nav){
this.$bottomnav.find('.tablenav-pages').replaceWith(data.bottom_nav);
}
},
onPagination:function(e){
e.preventDefault();
var link=$(e.currentTarget);
if(link.hasClass('disabled'))
return false;
if(!link.length){
return false;
}
var query=link.get(0).search;
if(query){
query=query.substr(1);
}
var params={};
ve.php.parse_str(query,params);
if(params.paged) {
this.paged=params.paged;
this.loadPage();
}
return false;
},
loadPage:function(paged){
var self=this;
paged=ve.php.intval(paged);
if(paged>0) {
this.paged = paged;
}
ajax({action:'ve_list_popup_options',paged:this.paged,"option-filter":this.filter}).done(function(data){
self.setContent(data);
});
},
filterResult:function(e){
this.filter = $(e.currentTarget).data('filter');
this.loadPage();
}
});
ve.add_action('load',function(){
list=new ListOptions({el:$('.ve-list-popup-options').closest('.ve-list-table')});
});
ve.add_action('post_saved',function(){
list.reloadPopupList();
});
ve.add_action('ajax_form_done_ve_add_popup_option',function(req,response){
list.setContent(response);
list.reloadPopupList();
});
})(ve,jQuery);