From ac24c5f5af398f689aa7ebecdccf2ff3b392e812 Mon Sep 17 00:00:00 2001 From: dbs Date: Thu, 2 Apr 2009 03:33:29 +0000 Subject: [PATCH] Prevent error messages with many lines from scrolling off the bottom of the screen, by truncating messages at 30 lines. Also, fix some FIMXEs, in case anyone ever gets ambitious about grepping for FIXMEs :) git-svn-id: svn://svn.open-ils.org/ILS/trunk@12760 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../xul/staff_client/chrome/content/util/error.js | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Open-ILS/xul/staff_client/chrome/content/util/error.js b/Open-ILS/xul/staff_client/chrome/content/util/error.js index e5b6a493c3..03774ac47c 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/error.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/error.js @@ -325,7 +325,7 @@ util.error.prototype = { this.sound.bad(); - //FIMXE - is that good enough of an escape job? + //FIXME - is that good enough of an escape job? s = s.replace(/&/g, '&').replace(//g, '>'); var xml = '' @@ -394,7 +394,7 @@ util.error.prototype = { this.sound.bad(); - //FIMXE - is that good enough of an escape job? + //FIXME - is that good enough of an escape job? s = s.replace(/&/g, '&').replace(//g, '>'); var xml = '' @@ -473,9 +473,27 @@ util.error.prototype = { // the buttons, which are used if BUTTON_TITLE_IS_STRING is assigned to a // particular button. The last two arguments are for an optional check box. var check = {}; - var rv = promptService.confirmEx(window,title, s, flags, b1, b2, b3, c, check); + + // promptService.confirmEx does not offer scrollbars for long + // content, so trim error lines to avoid spilling offscreen + // + // There's probably a better way of doing this. + + var maxlines = 30; + var ss = ''; + var linefeeds = 0; + for (var i = 0; linefeeds < maxlines && i < s.length; i++) { + t = s.charAt(i); + if (t == "\n") { + linefeeds++; + } + ss = ss + t; + i++; + } + + var rv = promptService.confirmEx(window,title, ss, flags, b1, b2, b3, c, check); if (c && !check.value) { - return this.yns_alert(s,title,b1,b2,b3,c); + return this.yns_alert(ss,title,b1,b2,b3,c); } return rv; }, -- 2.11.0