diff options
author | ianb <devnull@localhost> | 2005-05-17 23:26:06 +0000 |
---|---|---|
committer | ianb <devnull@localhost> | 2005-05-17 23:26:06 +0000 |
commit | 9080910c4f45fff75c4bb3a15efba53d5f3162bd (patch) | |
tree | e1d207fc4ff94ea8148a88e7d4eb6a25f3360fe9 /paste/exceptions | |
parent | b6333394ade881c436cb39e209ca319e2285a3b4 (diff) | |
download | paste-9080910c4f45fff75c4bb3a15efba53d5f3162bd.tar.gz |
Made HTML backward compatible with non-JS browsers (which describes most email programs; embed CSS in all HTML errors messages (since it makes them prettier)
Diffstat (limited to 'paste/exceptions')
-rw-r--r-- | paste/exceptions/formatter.py | 65 |
1 files changed, 55 insertions, 10 deletions
diff --git a/paste/exceptions/formatter.py b/paste/exceptions/formatter.py index 97da7ab..9d94d97 100644 --- a/paste/exceptions/formatter.py +++ b/paste/exceptions/formatter.py @@ -209,15 +209,19 @@ class HTMLFormatter(TextFormatter): for name in 'normal', 'supplemental': lines.extend([value for n, value in data_by_importance[name]]) if data_by_importance['extra']: + #lines.append( + # hide_display_js + + # '<a href="#extra_data" ' + # 'onclick="javascript:hide_display(\'extra_data\')" ' + # 'class="button">show extra data</a><br>' + # '<div id="extra_data" class="hidden-data">') lines.append( - hide_display_js + - '<a href="#extra_data" ' - 'onclick="javascript:hide_display(\'extra_data\')" ' - 'class="button">show extra data</a><br>' - '<div id="extra_data" style="display: none">') + '<script type="text/javascript">\nshow_button(\'extra_data\');\n</script>\n' + + '<div id="extra_data" class="hidden-data">\n') lines.extend([value for n, value in data_by_importance['extra']]) lines.append('</div>') - return self.format_combine_lines(lines) + text = self.format_combine_lines(lines) + return error_css + hide_display_js + text def zebra_table(self, title, rows, table_class="variables"): if isinstance(rows, dict): @@ -258,21 +262,62 @@ class HTMLFormatter(TextFormatter): new_words.append(word) return ' '.join(new_words) -hide_display_js = '''\ +hide_display_js = r''' <script type="text/javascript"> function hide_display(id) { var el = document.getElementById(id); - if (el.style.display == "none") { - el.style.display = ""; + if (el.className == "hidden-data") { + el.className = ""; return true; } else { - el.style.display = "none"; + el.className = "hidden-data"; return false; } } +document.write('<style type="text/css">\n'); +document.write('.hidden-data {display: none}\n'); +document.write('</style>\n'); +function show_button(toggle_id) { + document.write('<a href="#' + toggle_id + + '" onclick="javascript:hide_display(\'' + toggle_id + + '\')" class="button">show extra data</a><br>'); +} </script>''' +error_css = """ +<style type="text/css"> +table { + width: 100%; +} + +tr.header { + background-color: #006; + color: #fff; +} + +tr.even { + background-color: #ddd; +} + +table.variables td { + verticle-align: top; + overflow: auto; +} + +a.button { + background-color: #ccc; + border: 2px outset #aaa; + color: #000; + text-decoration: none; +} + +a.button:hover { + background-color: #ddd; +} +</style> +""" + def format_html(exc_data, **ops): return HTMLFormatter(**ops).format_collected_data(exc_data) def format_text(exc_data, **ops): |