67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
|
/*##################################################|*/
|
||
|
/* #CMS# */
|
||
|
(function($) {
|
||
|
// CMS.$ will be passed for $
|
||
|
$(document).ready(function () {
|
||
|
|
||
|
// set local variables
|
||
|
var title= $('#id_title');
|
||
|
var slug = $('#id_slug');
|
||
|
var changed = false;
|
||
|
var prefill = false;
|
||
|
|
||
|
// hide rows when hidden input fields are added
|
||
|
$('input[type="hidden"]').each(function () {
|
||
|
$(this).parent('.form-row').hide()
|
||
|
});
|
||
|
|
||
|
// determine if slug is empty
|
||
|
if(slug.val() === '') prefill = true;
|
||
|
|
||
|
// always bind the title > slug generation and do the validation inside for better ux
|
||
|
title.bind('keyup', function() {
|
||
|
var value = title.val();
|
||
|
// international language handling
|
||
|
if(window.UNIHANDECODER) value = UNIHANDECODER.decode(value);
|
||
|
// if slug is empty, prefill again
|
||
|
if(prefill === false && slug.val() === '') prefill = true;
|
||
|
// urlify
|
||
|
var urlified = URLify(value, 64);
|
||
|
if(prefill) slug.val(urlified);
|
||
|
});
|
||
|
// autocall
|
||
|
title.trigger('keyup');
|
||
|
|
||
|
// set focus to title
|
||
|
title.focus();
|
||
|
|
||
|
// all permissions and page states loader
|
||
|
$('div.loading').each(function () {
|
||
|
$(this).load($(this).attr('rel'));
|
||
|
});
|
||
|
|
||
|
// add changed data bindings to elements
|
||
|
slug.add(title).bind('change', function () {
|
||
|
$(this).data('changed', true);
|
||
|
});
|
||
|
|
||
|
// public api for changing the language tabs
|
||
|
// used in admin/cms/page/change_form.html
|
||
|
CMS.API.changeLanguage = function (url) {
|
||
|
// also make sure that we will display the confirm dialog
|
||
|
// in case users switch tabs while editing plugins
|
||
|
var answer = true;
|
||
|
if(slug.length) {
|
||
|
// check if the slug has the changed attribute
|
||
|
if(slug.data('changed') || title.data('changed')) changed = true;
|
||
|
}
|
||
|
|
||
|
if(changed) {
|
||
|
var question = gettext("Are you sure you want to change tabs without saving the page first?");
|
||
|
answer = confirm(question);
|
||
|
}
|
||
|
if(answer) window.location.href = url;
|
||
|
};
|
||
|
|
||
|
});
|
||
|
})(CMS.$);
|