$( document ).ready(
function() {
isFormDirty.init("#ContentElement");
var submitFunction = function(e) {
if (!e.isDefaultPrevented()) {
e.preventDefault(); // avoid to execute the actual submit of the form.
var form = e.currentTarget;
var editor = CKEDITOR.instances.contenteditor;
var childLinks = new Array();
var fileLinks = new Array();
var content = editor.getData();
$(form).find("#content").val(content);
//important to get data irrespective of Dirty check
//content is only rendered inside
//and transferred to textarea upon submit
//else empty textarea will erase data
var fullHost = location.protocol + "//" + location.host;
var outputHref = "";
$(content).find("a").each(
function(index,element) {
var href = $(element).attr("href");
if (href && (href.length > 0) && $(element).first()) {
if (href.substr(0, fullHost.length) == fullHost) {
outputHref = href.substr(fullHost.length);
} else {
outputHref = href;
}
childLinks.push("
" + $(element).first().html() + "");
}
}
);
$(form).find("input[name='childlinks']").val(childLinks.join("~"));
$(content).find("img").each(
function(index,element) {
var imgSrc = $(element).attr("src");
if (imgSrc && imgSrc.length > 0) {
if (imgSrc.substr(0, fullHost.length) == fullHost) {
outputSrc = imgSrc.substr(fullHost.length);
} else {
outputSrc = imgSrc;
}
fileLinks[fileLinks.length] = outputSrc;
}
}
);
$(form).find("input[name='filelinks']").val(fileLinks.join("~"));
var loading = $("#loading");
var filename = $(form).find('input[name="contentid"]').val()+ ".html";
var formdata = $(form).serialize();
var nextpage = $(form).data('nextaction') + filename;
var url = $(form).attr('action') + filename;
$.ajax({
beforeSend: function(jqXHR, settings) {
loading.show();
},
complete: function(jqXHR, textStatus) {
loading.hide();
},
type: "POST",
url: url,
data: formdata,
success: function(data){
window.location.href = nextpage;
},
error: function(status) {
alert("Something when wrong. Error : " + status)
}
});
}
};
$("#ContentElement").validator().on("submit", function(e){submitFunction(e)});
var linkValidationHandler = {
menuName: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("select#MenuName")},
order: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("input#Order")},
link: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("input#Link")},
menuCheckbox: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("#Menu")},
footerLinkCheckbox: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("#FooterLink")},
promoTileCheckbox: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("#PromotionTile")},
sideContentCheckbox: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("#SideContent")},
pageContentCheckbox: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("#Page")},
isMenuContent: function(currentElement){
return this.menuCheckbox(currentElement).is(":checked")},
isFooterLinkContent: function(currentElement){
return this.footerLinkCheckbox(currentElement).is(":checked")},
isPromoTileContent: function(currentElement){
return this.promoTileCheckbox(currentElement).is(":checked")},
isSideContent: function(currentElement){
return this.sideContentCheckbox(currentElement).is(":checked")},
isPageContent: function(currentElement){
return this.pageContentCheckbox(currentElement).is(":checked")},
isLinkEntered: function(currentElement){
return $(currentElement).closest("div[class='panel-body']").find("#Link").val() !== ""},
isPageContentAllowed: function(currentElement){
return !(this.isLinkEntered(currentElement) || this.isPromoTileContent(currentElement) || this.isSideContent(currentElement))},
processValidation : function(event){
var _order = this.order(event.target);
_order.prop("required", (this.isMenuContent(event.target) || this.isFooterLinkContent(event.target)|| this.isPromoTileContent(event.target)));
_order.prop("disabled", !(this.isMenuContent(event.target) || this.isFooterLinkContent(event.target) || this.isPromoTileContent(event.target)));
if($(event.target).attr("id")=="Menu"){
var _menuName = this.menuName(event.target);
_menuName.prop("required", _order.prop("required"));
_menuName.prop("disabled", !_order.prop("required"));
this.promoTileCheckbox(event.target).prop("checked", !(this.isMenuContent(event.target) || this.isFooterLinkContent(event.target)) && this.isPromoTileContent(event.target));
this.sideContentCheckbox(event.target).prop("checked", !(this.isMenuContent(event.target) || this.isFooterLinkContent(event.target)) && this.isSideContent(event.target));
this.pageContentCheckbox(event.target).prop("checked", this.isPageContentAllowed(event.target) && (this.isMenuContent(event.target) || this.isPageContent(event.target)) );
}
if($(event.target).attr("id")=="FooterLink"){
this.promoTileCheckbox(event.target).prop("checked", !(this.isMenuContent(event.target) || this.isFooterLinkContent(event.target)) && this.isPromoTileContent(event.target));
this.sideContentCheckbox(event.target).prop("checked", !(this.isMenuContent(event.target) || this.isFooterLinkContent(event.target)) && this.isSideContent(event.target));
this.pageContentCheckbox(event.target).prop("checked", this.isPageContentAllowed(event.target) && (this.isFooterLinkContent(event.target) || this.isPageContent(event.target)) );
this.link(event.target).prop("required", (this.isFooterLinkContent(event.target)));
}
if(($(event.target).attr("id")=="Link") || ($(event.target).attr("id")=="PromotionTile") || ($(event.target).attr("id")=="SideContent")) {
this.menuCheckbox(event.target).prop("checked", !(this.isPromoTileContent(event.target) || this.isSideContent(event.target)) && this.isMenuContent(event.target));
this.footerLinkCheckbox(event.target).prop("checked", !(this.isPromoTileContent(event.target) || this.isSideContent(event.target) ) && this.isFooterLinkContent(event.target));
this.pageContentCheckbox(event.target).prop("checked", this.isPageContentAllowed(event.target));
}
$(event.target).closest('form').validator('validate');
}
}
$("#Menu").change($.proxy(linkValidationHandler.processValidation, linkValidationHandler));
$("#PromotionTile").change($.proxy(linkValidationHandler.processValidation, linkValidationHandler));
$("#SideContent").change($.proxy(linkValidationHandler.processValidation, linkValidationHandler));
$("#FooterLink").change($.proxy(linkValidationHandler.processValidation, linkValidationHandler));
$("#Link").change($.proxy(linkValidationHandler.processValidation, linkValidationHandler));
})