Sha256: 238a86290be40bf3ca96402ef439b69b20df8bd78b37c35a4a286e2a1151d370

Contents?: true

Size: 1.97 KB

Versions: 2

Compression:

Stored size: 1.97 KB

Contents

(function($) {
    // Add treeview translations
    $.translations({
	en: {
	    confirmUnsaved: 'The page was not saved. Continue?',
	    pageUnsaved: 'The page was not saved.'
	},
	de: {
	    confirmUnsaved: 'Die Seite wurde nicht gespeichert. Fortsetzen?',
	    pageUnsaved: 'Die Seite wurde nicht gespeichert.'
	},
 	cs: {
	    confirmUnsaved: 'Stránka nebyla uložena. Pokračovat?',
	    pageUnsaved: 'Stránka nebyla uložena.'
	},
	fr: {
	    confirmUnsaved: "La page n'a pas été enregistrée. Voulez vous continuer ?",
	    pageUnsaved: "La page n'a pas été enregistrée."
	}
    });

    function updateUnsaved() {
	var unsaved = false;
	switch (this.type) {
	case 'checkbox':
	case 'radio':
	    unsaved = this.checked != this.defaultChecked;
	    break;
	case 'hidden':
	case 'password':
	case 'text':
	case 'textarea':
	case 'file':
	    unsaved = this.value != this.defaultValue;
	    break;
	case 'select-one':
	case 'select-multiple':
	    for (var i = 0; i < this.options.length && !unsaved; ++i) {
                unsaved = this.options[i].selected != this.options[i].defaultSelected;
	    }
	    break;
	}
	$('label[for=' + this.id + ']').toggleClass('unsaved', unsaved);
	$(this).toggleClass('unsaved', unsaved);
    }

    function hasUnsavedChanges(element) {
	$('input.observe, textarea.observe, select.observe').each(function() {
	    updateUnsaved.call(this);
	});
	return $('.unsaved', element).size() !== 0;
    }

    $.fn.confirmUnsaved = function() {
	return !hasUnsavedChanges(this) || confirm($.t('confirmUnsaved'));
    };

    $(document).on('change autocompletechange', 'input.observe, textarea.observe, select.observe', updateUnsaved);

    var submitForm = false;
    $(document).on('submit', 'form', function() {
	submitForm = true;
    }).bind('reset', function() {
	$('.unsaved', this).removeClass('unsaved');
    });

    $(window).bind('beforeunload', function() {
	if (!submitForm && hasUnsavedChanges(document)) {
	    return $.t('pageUnsaved');
	}
    });
})(jQuery);

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
olelo-0.9.6 static/script/11-olelo.unsaved.js
olelo-0.9.5 static/script/11-olelo.unsaved.js