I'm having an issue with v6.1.6 where the form's id is 'aspnetForm' instead of 'form1', I don't know why.
Using $('form') is much safer than using $('#form1').
131 lines
4.5 KiB
JavaScript
131 lines
4.5 KiB
JavaScript
Umbraco.Sys.registerNamespace("Umbraco.Dialogs");
|
|
|
|
(function ($) {
|
|
|
|
// register AssignDomain dialog
|
|
Umbraco.Dialogs.AssignDomain2 = base2.Base.extend({
|
|
|
|
_opts: null,
|
|
|
|
_isRepeated: function (element) {
|
|
var inputs = $('form input.domain');
|
|
var elementName = element.attr('name');
|
|
var repeated = false;
|
|
inputs.each(function() {
|
|
var input = $(this);
|
|
if (input.attr('name') != elementName && input.val() == element.val())
|
|
repeated = true;
|
|
});
|
|
return repeated;
|
|
},
|
|
|
|
// constructor
|
|
constructor: function (opts) {
|
|
// merge options with default
|
|
this._opts = $.extend({
|
|
invalidDomain: 'Invalid domain.',
|
|
duplicateDomain: 'Domain has already been assigned.'
|
|
}, opts);
|
|
},
|
|
|
|
// public methods/variables
|
|
|
|
languages: null,
|
|
language: null,
|
|
domains: null,
|
|
|
|
addDomain: function () {
|
|
this.domains.push({
|
|
Name: "",
|
|
Lang: ""
|
|
});
|
|
},
|
|
|
|
init: function () {
|
|
var self = this;
|
|
|
|
self.domains = ko.observableArray(self._opts.domains);
|
|
self.languages = self._opts.languages;
|
|
self.language = self._opts.language;
|
|
self.removeDomain = function() { self.domains.remove(this); };
|
|
|
|
ko.applyBindings(self);
|
|
|
|
$.validator.addMethod("domain", function (value, element, param) {
|
|
var re = /^(http[s]?:\/\/)?([-\w]+(\.[-\w]+)*)(:\d+)?(\/[-\w]*)?$/gi;
|
|
return this.optional(element) || re.test(value);
|
|
}, self._opts.invalidDomain);
|
|
|
|
$.validator.addMethod("duplicate", function (value, element, param) {
|
|
return $(element).nextAll('input').val() == 0 && !self._isRepeated($(element));
|
|
}, self._opts.duplicateDomain);
|
|
|
|
$.validator.addClassRules({
|
|
domain: { domain: true },
|
|
duplicate: { duplicate: true }
|
|
});
|
|
|
|
$('form').validate({
|
|
debug: true,
|
|
focusCleanup: true,
|
|
onkeyup: false
|
|
});
|
|
|
|
$('form input.domain').live('focus', function(event) {
|
|
if (event.type != 'focusin') return;
|
|
$(this).nextAll('input').val(0);
|
|
});
|
|
|
|
// force validation *now*
|
|
$('form').valid();
|
|
|
|
$('#btnSave').click(function () {
|
|
if (!$('form').valid())
|
|
return false;
|
|
|
|
var mask = $('#komask');
|
|
var masked = mask.next();
|
|
mask.height(masked.height());
|
|
mask.width(masked.width());
|
|
mask.show();
|
|
|
|
var data = { nodeId: self._opts.nodeId, language: self.language ? self.language : 0, domains: self.domains };
|
|
$.post(self._opts.restServiceLocation + 'SaveLanguageAndDomains', ko.toJSON(data), function (json) {
|
|
mask.hide();
|
|
|
|
if (json.Valid) {
|
|
UmbClientMgr.closeModalWindow();
|
|
}
|
|
else {
|
|
var inputs = $('form input.domain');
|
|
inputs.each(function() { $(this).nextAll('input').val(0); });
|
|
for (var i = 0; i < json.Domains.length; i++) {
|
|
var d = json.Domains[i];
|
|
if (d.Duplicate == 1)
|
|
inputs.each(function() {
|
|
var input = $(this);
|
|
if (input.val() == d.Name)
|
|
input.nextAll('input').val(1);
|
|
});
|
|
}
|
|
$('form').valid();
|
|
}
|
|
})
|
|
.fail(function (xhr, textStatus, errorThrown) {
|
|
mask.css('opacity', 1).css('color', "#ff0000").html(xhr.responseText);
|
|
});
|
|
return false;
|
|
});
|
|
}
|
|
|
|
});
|
|
|
|
// set defaults for jQuery ajax calls
|
|
$.ajaxSetup({
|
|
dataType: 'json',
|
|
cache: false,
|
|
contentType: 'application/json; charset=utf-8'
|
|
});
|
|
|
|
})(jQuery);
|