in Allura/allura/public/nf/js/allura-base.js [20:86]
(function($) {
// Setup editable widgets
$('div.editable, span.editable, h1.editable')
.find('.viewer')
.append('<a class="edit_btn btn"><b class="fa fa-edit"></b></a>')
.end()
.click(function(e){
var editable = $(this).closest('.editable');
var editor = editable.find('.editor');
var viewer = editable.find('.viewer');
if(editor.hasClass('overlap')){
editor.width(viewer.width());
}
editable.addClass('editing')
.removeClass('viewing');
// autoresize textareas will be the wrong size the first time due to being hidden, so nudge them
editor.find('textarea').change();
e.stopPropagation();
})
.find('a').click(function(event){
if(!$(this).hasClass('edit_btn')){
event.stopPropagation();
}
})
.end()
.end()
.find('.editor')
.find('input, select, textarea').each(function(i){
var $this = $(this);
var editor = $this.closest('.editor');
if ($this.attr('type') === 'checkbox') {
$this.attr('original_val', this.checked);
} else {
$this.attr('original_val', this.value);
}
if(!$('a.cancel_btn', editor).length){
var save_btns = $('<div class="save_holder"><input type="submit" value="Save"/><a href="#" class="cancel_btn">Cancel</a></div>');
if(editor.hasClass('multiline')){
var save_holder = editor.find('.save_holder');
if(save_holder.length){
save_holder.append(save_btns);
}
else{
editor.append(save_btns);
}
}
else{
editor.append($('<table class="holder_table"><tr/></table>')
.append($('<td/>').append($this))
.append($('<td class="save_controls"/>').append($(save_btns)))
);
}
}
})
.end()
.find('.cancel_btn').click(function(e){
var $editable = $(this).closest('.editable');
$editable.addClass('viewing').removeClass('editing');
$editable.find('input:text, select, textarea').each(function(){
$(this).val($(this).attr('original_val'));
});
$editable.find('input[type=checkbox]').each(function(){
this.checked = ($(this).attr('original_val') === 'true');
});
return false;
});
})(jQuery);