/* The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is the Bugzilla Bug Tracking System. * * The Initial Developer of the Original Code is Netscape Communications * Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): Myk Melez * Joel Peshkin * Erik Stambaugh * Marc Schumann */ var SUPA_JAVA_DISABLED_ERROR = 'You cannot paste images from clipboard because Java support'+ ' is not enabled in your browser. Please download Java plugin'+ ' from http://java.com/'; function htmlspecialchars_decode(str) { str = str.replace(/>/g, '>'); str = str.replace(/</g, '<'); str = str.replace(/"/g, '"'); str = str.replace(/'/g, '\''); str = str.replace(/&/g, '&'); return str; } function switchAttype(chk) { var t = chk.value=='text'; var s = chk.value=='supa'; var sr = document.getElementById('attype_supa_row'); s = s && sr; document.getElementById('attype_text_row').style.display = t ? '' : 'none'; document.getElementById('attype_file_row').style.display = t || s ? 'none' : ''; if (sr) sr.style.display = s ? '' : 'none'; document.getElementById('content_type_row').style.display = s ? 'none' : ''; var d = document.getElementById('description'); if (s) { if (d.value == '') d.value = 'Screenshot.png'; document.getElementById('manual').checked = true; document.getElementById('contenttypeentry').value = 'image/png'; document.getElementById('ispatch').checked = false; setContentTypeDisabledState(chk.form); var sc = document.getElementById('supa_container'); if (sc.innerHTML.toLowerCase().indexOf(' l) l = lw; field_description.value = field_data.value.substr(l); } } function clearAttachmentFields() { var element; document.getElementById('data').value = ''; DataFieldHandler(); if ((element = document.getElementById('bigfile'))) element.checked = ''; document.getElementById('description').value = ''; /* Fire onchange so that the disabled state of the content-type * radio buttons are also reset */ element = document.getElementById('ispatch'); element.checked = ''; bz_fireEvent(element, 'change'); if ((element = document.getElementById('isprivate'))) element.checked = ''; } /* Functions used when viewing patches in Diff mode. */ function collapse_all() { var elem = document.checkboxform.firstChild; while (elem != null) { if (elem.firstChild != null) { var tbody = elem.firstChild.nextSibling; if (tbody.className == 'file') { tbody.className = 'file_collapse'; twisty = get_twisty_from_tbody(tbody); twisty.firstChild.nodeValue = '(+)'; twisty.nextSibling.checked = false; } } elem = elem.nextSibling; } return false; } function expand_all() { var elem = document.checkboxform.firstChild; while (elem != null) { if (elem.firstChild != null) { var tbody = elem.firstChild.nextSibling; if (tbody.className == 'file_collapse') { tbody.className = 'file'; twisty = get_twisty_from_tbody(tbody); twisty.firstChild.nodeValue = '(-)'; twisty.nextSibling.checked = true; } } elem = elem.nextSibling; } return false; } var current_restore_elem; function restore_all() { current_restore_elem = null; incremental_restore(); } function incremental_restore() { if (!document.checkboxform.restore_indicator.checked) { return; } var next_restore_elem; if (current_restore_elem) { next_restore_elem = current_restore_elem.nextSibling; } else { next_restore_elem = document.checkboxform.firstChild; } while (next_restore_elem != null) { current_restore_elem = next_restore_elem; if (current_restore_elem.firstChild != null) { restore_elem(current_restore_elem.firstChild.nextSibling); } next_restore_elem = current_restore_elem.nextSibling; } } function restore_elem(elem, alertme) { if (elem.className == 'file_collapse') { twisty = get_twisty_from_tbody(elem); if (twisty.nextSibling.checked) { elem.className = 'file'; twisty.firstChild.nodeValue = '(-)'; } } else if (elem.className == 'file') { twisty = get_twisty_from_tbody(elem); if (!twisty.nextSibling.checked) { elem.className = 'file_collapse'; twisty.firstChild.nodeValue = '(+)'; } } } function twisty_click(twisty) { tbody = get_tbody_from_twisty(twisty); if (tbody.className == 'file') { tbody.className = 'file_collapse'; twisty.firstChild.nodeValue = '(+)'; twisty.nextSibling.checked = false; } else { tbody.className = 'file'; twisty.firstChild.nodeValue = '(-)'; twisty.nextSibling.checked = true; } return false; } function get_tbody_from_twisty(twisty) { return twisty.parentNode.parentNode.parentNode.nextSibling; } function get_twisty_from_tbody(tbody) { return tbody.previousSibling.firstChild.nextSibling.firstChild.firstChild; } var prev_mode = 'raw'; var current_mode = 'raw'; var has_edited = 0; var has_viewed_as_diff = 0; function editAsComment(patchviewerinstalled) { switchToMode('edit', patchviewerinstalled); has_edited = 1; } function undoEditAsComment(patchviewerinstalled) { switchToMode(prev_mode, patchviewerinstalled); } function redoEditAsComment(patchviewerinstalled) { switchToMode('edit', patchviewerinstalled); } function viewDiff(attachment_id, patchviewerinstalled) { switchToMode('diff', patchviewerinstalled); // If we have not viewed as diff before, set the view diff frame URL if (!has_viewed_as_diff) { var viewDiffFrame = document.getElementById('viewDiffFrame'); viewDiffFrame.src = 'attachment.cgi?id=' + attachment_id + '&action=diff&headers=0'; has_viewed_as_diff = 1; } } function viewRaw(patchviewerinstalled) { switchToMode('raw', patchviewerinstalled); } function switchToMode(mode, patchviewerinstalled) { if (mode == current_mode) { alert('switched to same mode! This should not happen.'); return; } // Switch out of current mode if (current_mode == 'edit') { hideElementById('editFrame'); hideElementById('undoEditButton'); } else if (current_mode == 'raw') { hideElementById('viewFrame'); if (patchviewerinstalled) hideElementById('viewDiffButton'); hideElementById(has_edited ? 'redoEditButton' : 'editButton'); hideElementById('smallCommentFrame'); } else if (current_mode == 'diff') { if (patchviewerinstalled) hideElementById('viewDiffFrame'); hideElementById('viewRawButton'); hideElementById(has_edited ? 'redoEditButton' : 'editButton'); hideElementById('smallCommentFrame'); } // Switch into new mode if (mode == 'edit') { showElementById('editFrame'); showElementById('undoEditButton'); } else if (mode == 'raw') { showElementById('viewFrame'); if (patchviewerinstalled) showElementById('viewDiffButton'); showElementById(has_edited ? 'redoEditButton' : 'editButton'); showElementById('smallCommentFrame'); } else if (mode == 'diff') { if (patchviewerinstalled) showElementById('viewDiffFrame'); showElementById('viewRawButton'); showElementById(has_edited ? 'redoEditButton' : 'editButton'); showElementById('smallCommentFrame'); } prev_mode = current_mode; current_mode = mode; } function hideElementById(id) { var elm = document.getElementById(id); if (elm) elm.style.display = 'none'; } function showElementById(id, val) { var elm = document.getElementById(id); if (elm) { if (!val) val = 'inline'; elm.style.display = val; } } function normalizeComments() { // Remove the unused comment field from the document so its contents // do not get transmitted back to the server. var small = document.getElementById('smallCommentFrame'); var big = document.getElementById('editFrame'); if (small && small.style.display == 'none') { small.parentNode.removeChild(small); } if (big && big.style.display == 'none') { big.parentNode.removeChild(big); } }