From 10aefcb04e5be52d81e9f6d000e2935778c56190 Mon Sep 17 00:00:00 2001 From: richard Date: Thu, 24 Apr 2003 05:38:11 +0000 Subject: [PATCH] new improved help controls git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1677 57a73879-2fb5-44c3-a270-3262357dd7e2 --- templates/classic/html/_generic.help.html | 143 +++++++++------------- templates/classic/html/help_controls.js | 138 +++++++++++++++++++++ templates/classic/html/style.css | 65 ++++++++-- 3 files changed, 249 insertions(+), 97 deletions(-) create mode 100644 templates/classic/html/help_controls.js diff --git a/templates/classic/html/_generic.help.html b/templates/classic/html/_generic.help.html index 0749525..803c171 100644 --- a/templates/classic/html/_generic.help.html +++ b/templates/classic/html/_generic.help.html @@ -1,91 +1,58 @@ + - - - - + + + + +
+ +
+ + + + +
-// this is the name of the field in the original form that we're working on -field = '${request/form/property/value}'; + + + + + + + + + + + + + +
 x
+ + + +
 x
-function listClose() { - window.close(); -} - -function listClear() { - window.opener.document.itemSynopsis[field].value = ''; -} - -function pick(opt) { - if (window.opener && !window.opener.closed) { - window.opener.document.itemSynopsis[field].value = opt; - } -} - -// add a value to the form field -function add(opt) { - val = window.opener.document.itemSynopsis[field].value; - if (/^\s*$$/.test(val)) { - newval = opt; // existing is all whitespace, so just replace - } else { - newval = val + ', ' + opt; - } - pick(newval); -} - -// remove a value from the form field -function remove(opt) { - // ((opt(,\s*)?)|(,\s*opt)) - replaceStr = new String('(('+opt+'(,\\s*)?)|(,\\s*'+opt+'))'); - re = new RegExp(replaceStr); - - str = window.opener.document.itemSynopsis[field].value; - - // replace occurences with empty string - newstr = str.replace(re, ''); - pick(newstr); -} -"> - - - - - -
- - | - -
- - - - - - - - - - -
add/remove
- - -
-
- - + + + \ No newline at end of file diff --git a/templates/classic/html/help_controls.js b/templates/classic/html/help_controls.js new file mode 100644 index 0000000..f3c5006 --- /dev/null +++ b/templates/classic/html/help_controls.js @@ -0,0 +1,138 @@ +// initial values for either Nosy, Superceder, Topic and Waiting On, +// depecding on which has called + +original_field = window.opener.document.itemSynopsis[field].value; + + +// pop() and push() methods for pre5.5 IE browsers + +function bName() { + // test for IE + if (navigator.appName == "Microsoft Internet Explorer") + return 1; + return 0; +} + +function bVer() { + // return version number (e.g., 4.03) + msieIndex = navigator.appVersion.indexOf("MSIE") + 5; + return(parseFloat(navigator.appVersion.substr(msieIndex,3))); +} + +function pop() { + // make a pop method for old IE browsers + var lastElement = this[this.length - 1]; + this.length--; + return lastElement; +} + +function push() { + // make a pop method for old IE browsers + var sub = this.length; + for (var i = 0; i < push.arguments.length; ++i) { + this[sub] = push.arguments[i]; + sub++; + } +} + +// add the pop() and push() method to Array prototype for old IE browser +if (bName() == 1 && bVer() >= 5.5); +else { + Array.prototype.pop = pop; + Array.prototype.push = push; +} + +function trim(value) { + var temp = value; + var obj = /^(\s*)([\W\w]*)(\b\s*$)/; + if (obj.test(temp)) { temp = temp.replace(obj, '$2'); } + var obj = / /g; + while (temp.match(obj)) { temp = temp.replace(obj, " "); } + return temp; +} + +function updateList() { + // write back to opener window + var list = new Array(); + for (box=0; box < document.frm_help.check.length; box++) { + if (document.frm_help.check[box].checked) { + list.push(document.frm_help.check[box].value); + } + } + window.opener.document.itemSynopsis[field].value = list.join(","); +} + +function updatePreview() { + // add new checkbox selections to preview + var list = new Array(); + for (box=0; box < document.frm_help.check.length; box++) { + if (document.frm_help.check[box].checked) { + list.push(document.frm_help.check[box].value); + } + } + listString = new String(list.join(',')); + writePreview(listString); +} + +function clearList() { + // uncheck all checkboxes + for (box=0; box < document.frm_help.check.length; box++) { + document.frm_help.check[box].checked = false; + } +} + +function reviseList(vals) { + // update the checkboxes based on the preview field + var to_check; + var list = vals.split(","); + for (box=0; box < document.frm_help.check.length; box++) { + check = document.frm_help.check[box]; + to_check = false; + for (val in list) { + if (check.value==trim(list[val])) { + to_check = true; + break; + } + } + check.checked = to_check; + } +} + +function resetList() { + // reset preview and check boxes to initial values + var to_check; + var list = original_field.split(','); + writePreview(list); + for (box=0; box < document.frm_help.check.length; box++) { + check = document.frm_help.check[box]; + to_check = false; + for (val in list) { + if (check.value==trim(list[val])) { + to_check = true; + break; + } + } + check.checked = to_check; + } +} + +function writePreview(val) { + // writes a value to the text_preview + document.forms[0].text_preview.value = val; +} + +function focusField(name) { + for(i=0; i < document.forms.length; ++i) { + var obj = document.forms[i].elements[name]; + if (obj && obj.focus) {obj.focus();} + } +} + +function selectField(name) { + for(i=0; i < document.forms.length; ++i) { + var obj = document.forms[i].elements[name]; + if (obj && obj.focus){obj.focus();} + if (obj && obj.select){obj.select();} + } +} + diff --git a/templates/classic/html/style.css b/templates/classic/html/style.css index da5c4c6..bec2a1c 100644 --- a/templates/classic/html/style.css +++ b/templates/classic/html/style.css @@ -265,26 +265,73 @@ table.classlist th { /* style for class help display */ -table.classhelp { - border-spacing: 0px; - border-collapse: separate; - width: 100%; +table.classhelp { /* the table-layout: fixed; */ + table-layout: fixed; /* compromises quality for speed */ + overflow: hidden; + font-size: .9em; + padding-bottom: 3em; } table.classhelp th { - font-weight: bold; + font-weight: normal; text-align: left; - color: #707040; + color: #444444; + background-color: #efefef; + border-bottom: 1px solid #afafaf; + border-top: 1px solid #afafaf; + text-transform: uppercase; + vertical-align: middle; + line-height:1.5em; } table.classhelp td { - padding: 2 2 2 2; - border: 1px solid black; + vertical-align: middle; + padding-right: .2em; + border-bottom: 1px solid #efefef; + text-align: left; + empty-cells: show; +} + +table.classhelp td { + white-space: nowrap; + vertical-align: middle; + padding-right: .2em; + border-bottom: 1px solid #efefef; text-align: left; - vertical-align: top; empty-cells: show; } +table.classhelp tr:hover { + background-color: #eeeeee; +} + +label.classhelp-label { + cursor: pointer; +} + +#classhelp-controls { + position: fixed; + display: block; + top: auto; + right: 0; + bottom: 0; + left: 0; + padding: .5em; + border-top: 2px solid #444444; + background-color: #eeeeee; +} + +#classhelp-controls input.apply { + width: 7em; + font-weight: bold; + margin-right: 2em; + margin-left: 2em; +} + +#classhelp-controls input.preview { + margin-right: 3em; + margin-left: 1em; +} /* style for "other" displays */ table.otherinfo { -- 2.30.2