(function() {
var activate, handleClick, renderTemplate, save;
scrivito.editors.enum_editor = {
can_edit: function(element) {
return $(element).is('[data-scrivito-field-type=enum]');
},
activate: function(element) {
return activate($(element));
}
};
scrivito.on('load', function() {
return scrivito.define_editor('enum', scrivito.editors.enum_editor);
});
activate = function(cmsField) {
cmsField.html(renderTemplate(cmsField.scrivito('content'), cmsField.scrivito('valid_values')));
return cmsField.find('.scrivito_enum_editor li').on('click', function() {
return handleClick(cmsField, $(this));
});
};
renderTemplate = function(value, validValues) {
var i, len, li, ul, validValue;
ul = $('
');
for (i = 0, len = validValues.length; i < len; i++) {
validValue = validValues[i];
li = $('');
li.text(validValue);
if (validValue === value) {
li.addClass('scrivito_enum_active');
}
ul.append(li);
}
return ul;
};
handleClick = function(cmsField, clickedItem) {
if (clickedItem.hasClass('scrivito_enum_active')) {
clickedItem.removeClass('scrivito_enum_active');
save(cmsField, null);
} else {
cmsField.find('li').removeClass('scrivito_enum_active');
clickedItem.addClass('scrivito_enum_active');
save(cmsField, clickedItem.text());
}
return false;
};
save = function(cmsField, value) {
return cmsField.scrivito('save', value).done(function() {
cmsField.trigger('scrivito_editors:save');
return cmsField.trigger('scrivito_editors:blur');
});
};
}).call(this);