define(['jquery.ui'], function (ui) {
var modal = {itemid: ''};
modal.init = function (params) {
window.tpl = params.tpl;
modal.attachurl = params.attachurl;
modal.menu = params.menu;
modal.id = params.id;
modal.merch = params.merch;
if (!modal.menu) {
modal.menu = {
name: '未命名自定义菜单',
params: {'navstyle': '1', 'navfloat': 'top'},
style: {
'pagebgcolor': '#f9f9f9',
'bgcolor': '#ffffff',
'bgcoloron': '#ffffff',
'iconcolor': '#999999',
'iconcoloron': '#999999',
'textcolor': '#666666',
'textcoloron': '#666666',
'bordercolor': '#ffffff',
'bordercoloron': '#ffffff',
'childtextcolor': '#666666',
'childbgcolor': '#f4f4f4',
'childbordercolor': '#eeeeee'
},
data: {
M0123456789101: {
imgurl: '../addons/ewei_shopv2/plugin/diypage/static/images/default/menu-1.png',
linkurl: '',
iconclass: 'icon-home',
text: '商城首页'
},
M0123456789102: {
imgurl: '../addons/ewei_shopv2/plugin/diypage/static/images/default/menu-2.png',
linkurl: '',
iconclass: 'icon-list',
text: '全部商品'
},
M0123456789103: {
imgurl: '../addons/ewei_shopv2/plugin/diypage/static/images/default/menu-3.png',
linkurl: '',
iconclass: 'icon-group',
text: '分销中心'
},
M0123456789104: {
imgurl: '../addons/ewei_shopv2/plugin/diypage/static/images/default/menu-4.png',
linkurl: '',
iconclass: 'icon-cart',
text: '购物车'
},
M0123456789105: {
imgurl: '../addons/ewei_shopv2/plugin/diypage/static/images/default/menu-5.png',
linkurl: '',
iconclass: 'icon-person2',
text: '个人中心'
}
}
}
}
tpl.helper("imgsrc", function (src) {
if (typeof src != 'string') {
return ''
}
if (src.indexOf('http://') == 0 || src.indexOf('https://') == 0 || src.indexOf('../addons') == 0) {
return src
} else if (src.indexOf('images/') == 0) {
return modal.attachurl + src
}
});
tpl.helper("count", function (data) {
return modal.length(data)
});
tpl.helper("link", function (link) {
if (!link) {
return
}
return '../app/' + link
});
tpl.helper("px", function (num) {
return num / 20
});
modal.initItems();
modal.initEditor();
modal.initGotop();
$(".btn-save").unbind('click').click(function () {
var status = $(this).data('status');
if (status) {
tip.msgbox.err("正在保存,请稍候。。。");
return
}
modal.save()
})
};
modal.initItems = function () {
var html = tpl("tpl_show_menu", modal.menu);
$("#phone").html(html).show();
var len = $(".diymenu .child").length;
$(".diymenu .child").each(function (i) {
var width = $(this).outerWidth();
var margin = -(width / 2);
var left = '50%';
var pleft = $(this).position().left - width / 2;
if(i==0 && pleft<2){
left = 2;
margin = 0;
var pwidth = $(this).closest('.item').width();
var arrowleft = pwidth / 2;
var oldleft = parseFloat($(this).find('.arrow').css('left').replace('px', ''));
$(this).find('.arrow').css({'left': arrowleft - 10, 'margin-left': 0})
} else if (i + 1 == len) {
var pwidth = $(this).closest('.item').width();
if(width>pwidth){
var left = - (width - pwidth) - 2;
margin = 0;
var c = $(this).closest('.item').width() / 2;
var arrowleft = width - c;
$(this).find('.arrow').css({'left': arrowleft - 8, 'margin-left': 0})
}
}
$(this).css({'position': 'absolute', 'left': left, 'margin-left': margin, 'z-index': 0})
})
};
modal.initSortable = function () {
$("#diy-editor .inner").sortable({
opacity: 0.8,
placeholder: "highlight",
items: '.item',
revert: 100,
scroll: false,
cancel: '.goods-selector,input,.btn',
start: function (event, ui) {
var height = ui.item.height();
$(".highlight").css({"height": height + 22 + "px"});
$(".highlight").html('
放置此处
');
$(".highlight div").css({"line-height": height + 16 + "px"})
},
update: function (event, ui) {
modal.sortItems()
}
});
$("#diy-editor .inner .item-child").sortable({
opacity: 0.8,
placeholder: "highlight",
items: '.item-body',
revert: 100,
scroll: false,
cancel: '.goods-selector,input,.btn',
start: function (event, ui) {
var height = ui.item.height();
$(".highlight").css({"height": height + "px"});
$(".highlight").html(' 放置此处
');
$(".highlight div").css({"line-height": height + 16 + "px"})
},
update: function (event, ui) {
modal.sortChild()
}
})
};
modal.sortItems = function () {
var newItems = {};
$("#diy-editor .inner .item").each(function () {
var thisid = $(this).data('id');
newItems[thisid] = modal.menu.data[thisid]
});
modal.menu.data = newItems;
modal.initItems()
};
modal.sortChild = function () {
var newChild = {};
var itemid = modal.itemid;
$("#diy-editor .inner").find(".item[data-id='" + itemid + "'] .item-child .child").each(function () {
var thisid = $(this).data('id');
newChild[thisid] = modal.menu.data[itemid].child[thisid]
});
modal.menu.data[itemid].child = newChild;
modal.initItems()
};
modal.initEditor = function () {
var html = tpl("tpl_edit_menu", modal.menu);
$("#diy-editor .inner").html(html);
$("#diy-editor #addChild").unbind('click').click(function () {
var itemid = $(this).closest('.item').data('id');
var childid = modal.getId('C', 0);
if (!modal.menu.data[itemid].child) {
modal.menu.data[itemid].child = {}
}
modal.menu.data[itemid].child[childid] = {linkurl: '', text: '二级菜单'};
modal.initItems();
modal.initEditor()
});
$("#diy-editor #addItem").unbind('click').click(function () {
var itemid = modal.getId('M', 0);
var max = $(this).closest('.form-items').data('max');
var num = modal.length(modal.menu.data);
if (num >= max) {
tip.msgbox.err("最大添加 " + max + " 个!");
return
}
modal.menu.data[itemid] = {
imgurl: '../addons/ewei_shopv2/plugin/diypage/static/images/default/menu-1.png',
linkurl: '',
iconclass: 'icon-home',
text: '菜单文字'
};
modal.initItems();
modal.initEditor()
});
$("#diy-editor .del-item").unbind('click').click(function () {
var min = $(this).closest('.form-items').data('min');
var itemid = $(this).closest('.item').data('id');
if (min) {
var length = modal.length(modal.menu.data);
if (length <= min) {
tip.msgbox.err("至少保留 " + min + " 个!");
return
}
}
tip.confirm("确定删除吗", function () {
delete modal.menu.data[itemid];
modal.initItems();
modal.initEditor()
})
});
$("#diy-editor .del-child").unbind('click').click(function () {
var itemid = $(this).closest('.item').data('id');
var childid = $(this).closest('.child').data('id');
var item = modal.menu.data[itemid];
if (item) {
var child = modal.menu.data[itemid].child[childid];
if (child) {
tip.confirm("确定删除吗", function () {
delete modal.menu.data[itemid].child[childid];
modal.initItems();
modal.initEditor()
})
}
}
});
$("#diy-editor .fold").unbind('click').click(function () {
var type = $(this).data('type');
if (type == 1) {
$(this).text('收起').data('type', 0).closest('.item').find('.item-child').show()
} else {
$(this).text('展开').data('type', 1).closest('.item').find('.item-child').hide()
}
});
$(document).on('mousedown', "#diy-editor .item-child .child", function () {
var itemid = $(this).closest('.item').data('id');
modal.itemid = itemid
});
$("#diy-editor .slider").each(function () {
var decimal = $(this).data('decimal');
var multiply = $(this).data('multiply');
var defaultValue = $(this).data("value");
if (decimal) {
defaultValue = defaultValue * decimal
}
$(this).slider({
slide: function (event, ui) {
var sliderValue = ui.value;
if (decimal) {
sliderValue = sliderValue / decimal
}
$(this).siblings(".input").val(sliderValue).trigger("propertychange");
$(this).siblings(".count").find("span").text(sliderValue)
}, value: defaultValue, min: $(this).data("min"), max: $(this).data("max")
})
});
$("#diy-editor").find(".diy-bind").bind('input propertychange change', function () {
var _this = $(this);
var bind = _this.data("bind");
var bindchild = _this.data('bind-child');
var bindparent = _this.data('bind-parent');
var bindthree = _this.data('bind-three');
var initEditor = _this.data('bind-init');
var value = '';
var tag = this.tagName;
if (tag == 'INPUT') {
var placeholder = _this.data('placeholder');
value = _this.val();
value = value == '' ? placeholder : value
} else if (tag == 'SELECT') {
value = _this.find('option:selected').val()
} else if (tag == 'TEXTAREA') {
value = _this.val()
}
value = $.trim(value);
if (bindchild) {
if (bindparent) {
if (bindthree) {
modal.menu[bindchild][bindparent].child[bindthree][bind] = value
} else {
modal.menu[bindchild][bindparent][bind] = value
}
} else {
modal.menu[bindchild][bind] = value
}
} else {
modal.menu[bind] = value
}
modal.initItems();
if (initEditor) {
modal.initEditor()
}
});
$("#phone").mouseenter(function () {
$("#diy-editor").find('.diy-bind').blur()
});
$("#diy-editor").show();
modal.initSortable()
};
modal.initGotop = function () {
$(window).bind('scroll resize', function () {
var scrolltop = $(window).scrollTop();
if (scrolltop > 100) {
$("#gotop").show()
} else {
$("#gotop").hide()
}
$("#gotop").unbind('click').click(function () {
$('body').animate({scrollTop: "0px"}, 1000)
})
})
};
modal.length = function (json) {
if (typeof(json) === 'undefined') {
return 0
}
var jsonlen = 0;
for (var item in json) {
jsonlen++
}
return jsonlen
};
modal.getId = function (S, N) {
var date = +new Date();
var id = S + (date + N);
return id
};
modal.save = function () {
if (!modal.menu.data) {
tip.msgbox.err("菜单为空!");
return
}
$(".btn-save").data('status', 1).text("保存中...");
if (modal.id) {
var posturl = biz.url("diypage/menu/edit", null, modal.merch)
} else {
var posturl = biz.url("diypage/menu/add", null, modal.merch)
}
$.post(posturl, {id: modal.id, menu: modal.menu}, function (ret) {
if (ret.status == 0) {
tip.msgbox.err(ret.result.message);
$(".btn-save").text("保存菜单").data("status", 0);
return
}
tip.msgbox.suc("保存成功!");
$(".btn-save").text("保存菜单").data("status", 0);
var menuid = ret.result.id;
if (menuid != modal.id) {
location.href = ret.result.url + '&id=' + menuid
}
}, 'json')
};
return modal
});