/* * Snyke ( http://www.Snyke.net ) * Description: In-Situ Editing of text paragraphs on click. * Based on 'Edit-in-Place with Ajax' of 24ways.org * @params string element, parameters (get) */ function editinplace(obj, params){ Element.hide(obj); var textarea = '
'; var button = '
'; new Insertion.After(obj, textarea+button); Event.observe(obj.id+'_save', 'click', function(){saveChanges(obj, params)}, false); Event.observe(obj.id+'_cancel', 'click', function(){cleanUp(obj)}, false); } function saveChanges(obj, params){ var new_content = escape($F(obj.id+'_edit')); obj.innerHTML = " Saving..."; cleanUp(obj, true); var success = function(t){editComplete(t, obj);} var failure = function(t){editFailed(t, obj);} var url = 'index.php'; var pars = '&'+params+'&ajax=editinplace&id='+obj.id+'&content='+new_content; var myAjax = new Ajax.Request(url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure}); } function cleanUp(obj, keepEditable){ Element.remove(obj.id+'_editor'); Element.show(obj); //new Effect.Highlight(obj, { duration: 3.0 }); } function editComplete(t, obj){ obj.innerHTML = t.responseText; } function editFailed(t, obj){ obj.innerHTML = 'Could not save...'; cleanUp(obj); }