mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
96 lines
2.9 KiB
JavaScript
96 lines
2.9 KiB
JavaScript
(function($) {
|
|
$.entwine('ss', function($){
|
|
$('.cms-page-add-form-dialog').entwine({
|
|
onmatch: function() {
|
|
this.dialog({
|
|
autoOpen: false,
|
|
bgiframe: true,
|
|
modal: true,
|
|
height: 400,
|
|
width: 600,
|
|
ghost: true
|
|
});
|
|
this._super();
|
|
}
|
|
});
|
|
|
|
$('.cms-page-add-form-dialog input[name=PageType]').entwine({
|
|
onmatch: function() {
|
|
if(this.is(':checked')) this.trigger('click');
|
|
this._super();
|
|
},
|
|
onclick: function() {
|
|
var el = this.parents('li:first');
|
|
el.setSelected(true);
|
|
el.siblings().setSelected(false);
|
|
}
|
|
});
|
|
|
|
$(".cms-add-form").entwine({
|
|
onmatch: function() {
|
|
var self = this;
|
|
this.find('#ParentID .TreeDropdownField').bind('change', function() {
|
|
self.updateTypeList();
|
|
});
|
|
this.updateTypeList();
|
|
},
|
|
|
|
/**
|
|
* Limit page type selection based on parent class.
|
|
* Similar implementation to LeftAndMain.Tree.js.
|
|
*/
|
|
updateTypeList: function() {
|
|
var hints = this.find('.hints').data('hints'),
|
|
metadata = this.find('#ParentID .TreeDropdownField').data('metadata'),
|
|
id = this.find('#ParentID .TreeDropdownField').getValue(),
|
|
newClassName = metadata ? metadata.ClassName : null,
|
|
hintKey = newClassName ? newClassName : 'Root',
|
|
hint = (typeof hints[hintKey] != 'undefined') ? hints[hintKey] : null;
|
|
|
|
var disallowedChildren = (hint && typeof hint.disallowedChildren != 'undefined') ? hint.disallowedChildren : [],
|
|
defaultChildClass = (hint && typeof hint.defaultChild != 'undefined') ? hint.defaultChild : null;
|
|
|
|
// Limit selection
|
|
this.find('#PageType li').each(function() {
|
|
var className = $(this).find('input').val(), isAllowed = ($.inArray(className, disallowedChildren) == -1);
|
|
$(this).setEnabled(isAllowed);
|
|
});
|
|
|
|
// Set default child selection, or fall back to first available option
|
|
if(defaultChildClass) {
|
|
var selectedEl = this.find('#PageType li input[value=' + defaultChildClass + ']').parents('li:first');
|
|
} else {
|
|
var selectedEl = this.find('#PageType li:not(.disabled):first');
|
|
}
|
|
selectedEl.setSelected(true);
|
|
selectedEl.siblings().setSelected(false);
|
|
}
|
|
});
|
|
|
|
$(".cms-add-form #PageType li").entwine({
|
|
onclick: function() {
|
|
this.setSelected(true);
|
|
},
|
|
setSelected: function(bool) {
|
|
var input = this.find('input');
|
|
this.toggleClass('selected', bool);
|
|
if(bool && !input.is(':disabled')) {
|
|
this.siblings().setSelected(false);
|
|
input.attr('checked', 'checked');
|
|
}
|
|
},
|
|
setEnabled: function(bool) {
|
|
$(this).toggleClass('disabled', !bool);
|
|
if(!bool) $(this).find('input').attr('disabled', 'disabled').removeAttr('checked');
|
|
else $(this).find('input').removeAttr('disabled');
|
|
}
|
|
});
|
|
|
|
$(".cms-page-add-button").entwine({
|
|
onclick: function(e) {
|
|
$('.cms-page-add-form-dialog').dialog('open');
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
});
|
|
}(jQuery)); |