function pad(number, length) { var str = '' + number; while (str.length < length) { str = '0' + str; } return str; } EditInPlace = function() { }; EditInPlace.settings = function(set) { var settings = { id: false, save_url: false, validation_rule: 'validation_rule', maxchars: 'maxchars', css_class: 'eip_editable', savebutton: 'eip_savebutton', cancelbutton: 'eip_cancelbutton', saving: 'eip_saving', empty: 'eip_empty', type: 'text', is_empty: false, empty_text: 'Click to edit', orig_text: false, options: { }, option_name: false }; for(var i in set) { settings[i] = set[i]; } return($H(settings)); }; EditInPlace.formField = function(set) { var onkeyup = ''; switch (set['validation_rule']) { case "letters_only": onkeyup = 'alphaVal(this)'; break; case "numbers_only": onkeyup = 'numericVal(this)'; break; case "cccode": onkeyup = 'ccVal(this)'; break; default: onkeyup=''; } var field = ''; if(set['is_empty'] == true) { $(set['id']).innerHTML = ''; } set['orig_text'] = $(set['id']).innerHTML; if(set['type'] == 'text') { var size = set['orig_text'].length + 10; if(size >= 100) { size = 100; } if(set['size']) { size = set['size']; } if(set['id'] == "pb_um_distance|1") { set['maxchars'] = 3; } if(set['id'] == "event_overview|405" || set['id'] == "event_overview|398") { set['maxchars'] = 300; } field = '
'; } else if(set['type'] == 'time') { var split1 = set['orig_text'].split(":"); var old_hour = split1[0]; var old_min = split1[1].substr(0,2); var old_ampm = split1[1].substr(2,4); var sel = ''; field = ' : '; field += ''; field += ' '; } else if(set['type'] == 'select') { field = ''; } else if(set['type'] == 'select_other') { field = ''; } else if(set['type'] == 'checkbox') { field = ''; for(var i in set['options']) { field += ' ' + set['options'][i] + '
'; } field += '
'; } else if(set['type'] == 'checkbox_other') { field = ''; for(var i in set['options']) { if(set['options'][i] == "Other") { var onclick = " onclick=\"document.getElementById('select_other').style.display='';\""; } field += ' ' + set['options'][i] + '
'; } field += '
'; } else if(set['type'] == 'date') { var read_only = ' readonly="readonly"'; var size = set['orig_text'].length + 10; if(size >= 100) { size = 100; } if(set['size']) { size = set['size']; } field = '
'; } else if(set['type'] == 'date2') { var formatSplitter = "."; var monthFormat = "mm"; var yearFormat = "yyyy"; var formatType = "dd"+formatSplitter+monthFormat+formatSplitter+yearFormat; //var read_only = ' readonly="readonly"'; var size = set['orig_text'].length + 10; if(size >= 100) { size = 100; } if(set['size']) { size = set['size']; } field = '
'; } else if(set['type'] == 'tinymce') { var cols = 50; if(set['cols']) { cols = set['cols']; } var rows = (set['orig_text'].length / cols) + 3; if(set['rows']) { rows = set['rows']; } field = '
'; } else if(set['type'] == 'textarea') { var cols = 50; if(set['cols']) { cols = set['cols']; } var rows = (set['orig_text'].length / cols) + 3; if(set['rows']) { rows = set['rows']; } field = '
'; } return(field); }; EditInPlace.formButtons = function(set) { return( ' OR ' + '' + '
' ); }; EditInPlace.setEvents = function(set) { Event.observe( set['id'], 'mouseover', function() { Element.addClassName(set['id'], set['css_class']); }, false ); Event.observe( set['id'], 'mouseout', function() { Element.removeClassName(set['id'], set['css_class']); }, false ); Event.observe( set['id'], 'click', function() { Element.hide(set['id']); var field = EditInPlace.formField(set); var button = EditInPlace.formButtons(set); new Insertion.After(set['id'], field + button); if(set['type'] != 'checkbox') { Field.focus(set['id'] + '_edit'); } // added by chris if(set['type'] == "tinymce") { tinyMCE.init({ // General options entity_encoding : "raw", mode : "textareas", theme : "advanced", skin : "o2k7", plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor", theme_advanced_buttons3 : "tablecontrols,|,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen", theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, // Example content CSS (should be your site CSS) content_css : "../mailtool/style_emails.css", // Drop lists for link/image/media/template dialogs template_external_list_url : "tiny_mce/lists/template_list.js", external_link_list_url : "tiny_mce/lists/link_list.js", external_image_list_url : "tiny_mce/lists/image_list.js", media_external_list_url : "tiny_mce/lists/media_list.js", // Replace values for the template plugin template_replace_values : { username : "Some User", staffid : "991234" } }); } if(set['type'] == 'date') { // } Event.observe( set['id'] + '_save', 'click', function() { EditInPlace.saveChanges(set); }, false ); Event.observe( set['id'] + '_cancel', 'click', function() { EditInPlace.cancelChanges(set); closeCalendar();}, false ); }, false ); }; EditInPlace.saveComplete = function(t, set) { if(t.responseText == '') { set['is_empty'] = true; $(set['id']).innerHTML = '' + set['empty_text'] + ''; } else { set['is_empty'] = false; $(set['id']).innerHTML = t.responseText; } Element.removeClassName(set['id'], set['css_class']); // refresh if needed if(set['refresh'] == 'refresh') {$(set['id']).innerHTML = ''; location.reload();} }; EditInPlace.saveFailed = function(t, set) { $(set['id']).innerHTML = set['orig_text']; Element.removeClassName(set['id'], set['css_class']); alert('Failed to save changes.'); }; EditInPlace.saveChanges = function(set) { if(set['id'].search(/start_times/) != -1) { var new_text = pad(escape($F(set['id'] + '_hr_edit')),2) + ':' + pad(escape($F(set['id'] + '_min_edit')),2) + escape($F(set['id'] + '_ampm_edit')); } else { var new_text = escape($F(set['id'] + '_edit')); } if(set['type'] == 'checkbox') { for(var i in set['options']) { if(document.getElementById(set['id'] + '_option_' + i).checked == true) { new_text += set['options'][i] + ', '; } } } $(set['id']).innerHTML = ''; var params = 'field=' + set['id'] + '&content=' + new_text + '&table=' + set['current_table'] + '&db_id='+ current_db_id + '&id_name=' + current_id_name; if(set['type'] == 'select') { params += '&option_name=' + $(set['id'] + '_option_' + new_text).innerHTML; } if(set['type'] == 'select_other') { if($(set['id'] + '_edit_other').value != "") { new_text = escape($F(set['id'] + '_edit_other')); var params = 'field=' + set['id'] + '&content=' + new_text + '&table=' + set['current_table'] + '&db_id='+ current_db_id + '&id_name=' + current_id_name; } else { params += '&option_name=' + $(set['id'] + '_option_' + new_text).innerHTML; } } if(set['type'] == 'checkbox') { } Element.remove(set['id'] + '_editor'); Element.show(set['id']); var ajax_req = new Ajax.Request( set['save_url'], { method: 'post', postBody: params, onSuccess: function(t) { EditInPlace.saveComplete(t, set); }, onFailure: function(t) { EditInPlace.saveFailed(t, set); } } ); }; EditInPlace.cancelChanges = function(set) { Element.remove(set['id'] + '_editor'); Element.removeClassName(set['id'], set['css_class']); if($(set['id']).innerHTML == '') { set['is_empty'] = true; $(set['id']).innerHTML = '' + set['empty_text'] + ''; } Element.show(set['id']); } EditInPlace.makeEditable = function(args) { var set = EditInPlace.settings(args); if($(set['id']).innerHTML == '') { set['is_empty'] = true; $(set['id']).innerHTML = '' + set['empty_text'] + ''; } EditInPlace.setEvents(set); }