$( 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)); })