Description
Please post one bug report per issue.
Wiki tables break in FireFox, not in IE7. This tends to happen when previewing or after saving changes made in GUI edit mode using FireFox.
Sometimes when editing in GUI mode with IE7, the page freezes up (usually when making numerous changes). After a few minutes a scripting error pops up ("A script on this page is causing IE to run slowly"), but it can be ignored and you can then continue editing until it freezes again. When this happens it does not affect the page from being saved/previewed.
I've noticed using FireFox, if I start typing after a
Macro the yellow highlight gets extended to the text I type (in GUI mode), even though there is a space that was put in after the macro (in text mode). When this happens, the cell gets destroyed and the table properties appear as text in the table when saved/previewed. This does not happen when editing in IE7.
The "Illegal Attribute" error is reproducible if you edit the table with FireFox in GUI mode and then click preview. If you hit save instead of preview the page will save but the next time someone tries to edit the page in GUI, the error will prevent you from doing so. I've attached a calendar table we are using as a text file, perhaps it has something to do with the way the tables are set up.
Please see the attached screenshot.
Steps to reproduce
Edit calendar in FireFox
- Click Preview
Example
ValueError Illegal HTML attribute "height" passed to formatter If you want to report a bug, please save this page and attach it to your bug report. * Show <javascript:toggleDebugInfo()> debugging information * Report bug <http://moinmoin.wikiwikiweb.de/MoinMoinBugs> * Visit <http://moinmoin.wikiwikiweb.de/FrontPage> MoinMoin wiki Traceback A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred. 1. C:\Python24\lib\site-packages\MoinMoin\request.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Crequest.py> in run (self=<MoinMoin.request.RequestCGI object>) 1. 1110 from MoinMoin.wikiaction import getHandler 2. 1111 handler = getHandler(self, action) 3. 1112 handler(self.page.page_name, self) 4. 1113 5. 1114 # generate page footer (actions that do not want this footer use * handler = <function do_edit> * self = <MoinMoin.request.RequestCGI object> * self.page = <MoinMoin.Page.Page instance> * self.page.page_name = u'TestForDimi' 2. C:\Python24\lib\site-packages\MoinMoin\wikiaction.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cwikiaction.py> in do_edit (pagename=u'TestForDimi', request=<MoinMoin.request.RequestCGI object>) 0. 634 request.form.has_key('button_spellcheck') or 1. 635 request.form.has_key('button_newwords')): 2. 636 pg.sendEditor(preview=savetext, comment=comment) 3. 637 4. 638 # Preview with mode switch * pg = <MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance> * pg.sendEditor = <bound method PageGraphicalEditor.sendEditor of ...ageGraphicalEditor.PageGraphicalEditor instance>> * preview undefined * savetext = u'= Boardroom Meetings Schedule =\n== January 2007 ...t; background-color: transparent;"> ||\n\n\n .\n----\n' * comment = u'' 3. C:\Python24\lib\site-packages\MoinMoin\PageGraphicalEditor.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5CPageGraphicalEdito r.py> in sendEditor (self=<MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance>, **kw={'comment': u'', 'preview': u'= Boardroom Meetings Schedule =\n== January 2007 ...t; background-color: transparent;"> ||\n\n\n .\n----\n'}) 0. 287 self.formatter = Formatter(request) 1. 288 self.formatter.page = self 2. 289 output = request.redirectedOutput(self.send_page_content, request, Parser, raw_body, do_cache=False) 3. 290 output = repr(output) 4. 291 if output[0] == 'u': * output undefined * request = <MoinMoin.request.RequestCGI object> * request.redirectedOutput = <bound method RequestCGI.redirectedOutput of <MoinMoin.request.RequestCGI object>> * self = <MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance> * self.send_page_content = <bound method PageGraphicalEditor.send_page_cont...ageGraphicalEditor.PageGraphicalEditor instance>> * global Parser = <class MoinMoin.parser.wiki.Parser> * raw_body = u'= Boardroom Meetings Schedule =\n== January 2007 ...t; background-color: transparent;"> ||\n\n\n .\n----\n' * do_cache undefined * builtin False = False 4. C:\Python24\lib\site-packages\MoinMoin\request.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Crequest.py> in redirectedOutput (self=<MoinMoin.request.RequestCGI object>, function=<bound method PageGraphicalEditor.send_page_cont...ageGraphicalEditor.PageGraphicalEditor instance>>, *args=(<MoinMoin.request.RequestCGI object>, <class MoinMoin.parser.wiki.Parser>, u'= Boardroom Meetings Schedule =\n== January 2007 ...t; background-color: transparent;"> ||\n\n\n .\n----\n'), **kw={'do_cache': False}) 0. 701 self.redirect(buffer) 1. 702 try: 2. 703 function(*args, **kw) 3. 704 finally: 4. 705 self.redirect() * function = <bound method PageGraphicalEditor.send_page_cont...ageGraphicalEditor.PageGraphicalEditor instance>> * args = (<MoinMoin.request.RequestCGI object>, <class MoinMoin.parser.wiki.Parser>, u'= Boardroom Meetings Schedule =\n== January 2007 ...t; background-color: transparent;"> ||\n\n\n .\n----\n') * kw = {'do_cache': False} 5. C:\Python24\lib\site-packages\MoinMoin\Page.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5CPage.py> in send_page_content (self=<MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance>, request=<MoinMoin.request.RequestCGI object>, Parser=<class MoinMoin.parser.wiki.Parser>, body=u'= Boardroom Meetings Schedule =\n== January 2007 ...t; background-color: transparent;"> ||\n\n\n .\n----\n', format_args='', do_cache=False, **kw={}) 0. 1313 1. 1314 if not (do_cache and self.canUseCache(Parser)): 2. 1315 self.format(parser) 3. 1316 else: 4. 1317 try: * self = <MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance> * self.format = <bound method PageGraphicalEditor.format of <Moi...ageGraphicalEditor.PageGraphicalEditor instance>> * parser = <MoinMoin.parser.wiki.Parser instance> 6. C:\Python24\lib\site-packages\MoinMoin\Page.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5CPage.py> in format (self=<MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance>, parser=<MoinMoin.parser.wiki.Parser instance>) 0. 1330 def format(self, parser): 1. 1331 """ Format and write page content without caching """ 2. 1332 parser.format(self.formatter) 3. 1333 4. 1334 def execute(self, request, parser, code): * parser = <MoinMoin.parser.wiki.Parser instance> * parser.format = <bound method Parser.format of <MoinMoin.parser.wiki.Parser instance>> * self = <MoinMoin.PageGraphicalEditor.PageGraphicalEditor instance> * self.formatter = <MoinMoin.formatter.text_gedit.Formatter instance> 7. C:\Python24\lib\site-packages\MoinMoin\parser\wiki.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cparser%5Cwiki.py> in format (self=<MoinMoin.parser.wiki.Parser instance>, formatter=<MoinMoin.formatter.text_gedit.Formatter instance>) 0. 1098 1. 1099 # Scan line, format and write 2. 1100 formatted_line = self.scan(scan_re, line) 3. 1101 self.request.write(formatted_line) 4. 1102 * formatted_line = u'<p class="line867"><hr /><p class="line874"> ' * self = <MoinMoin.parser.wiki.Parser instance> * self.scan = <bound method Parser.scan of <MoinMoin.parser.wiki.Parser instance>> * scan_re = <_sre.SRE_Pattern object> * line = u'||<tablewidth="908px" tableheight="707px" tables...background-color: transparent;">\'\'\'\'\'Sat\'\'\'\'\' || ' 8. C:\Python24\lib\site-packages\MoinMoin\parser\wiki.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cparser%5Cwiki.py> in scan (self=<MoinMoin.parser.wiki.Parser instance>, scan_re=<_sre.SRE_Pattern object>, line=u'||<tablewidth="908px" tableheight="707px" tables...background-color: transparent;">\'\'\'\'\'Sat\'\'\'\'\' || ') 0. 874 self.in_table or self.in_list): 1. 875 result.append(self.formatter.paragraph(1, css_class="line867")) 2. 876 result.append(self.replace(match)) 3. 877 lastpos = match.end() 4. 878 * result = [] * result.append = <built-in method append of list object> * self = <MoinMoin.parser.wiki.Parser instance> * self.replace = <bound method Parser.replace of <MoinMoin.parser.wiki.Parser instance>> * match = <_sre.SRE_Match object> 9. C:\Python24\lib\site-packages\MoinMoin\parser\wiki.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cparser%5Cwiki.py> in replace (self=<MoinMoin.parser.wiki.Parser instance>, match=<_sre.SRE_Match object>) 0. 903 # Get replace method and replece hit 1. 904 replace = getattr(self, '_' + type + '_repl') 2. 905 result.append(replace(hit)) 3. 906 return ''.join(result) 4. 907 else: * result = [] * result.append = <built-in method append of list object> * replace = <bound method Parser._table_repl of <MoinMoin.parser.wiki.Parser instance>> * hit = u'||<tablewidth="908px" tableheight="707px" tables...t; height: 36pt; background-color: transparent;">' 10. C:\Python24\lib\site-packages\MoinMoin\parser\wiki.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cparser%5Cwiki.py> in _table_repl (self=<MoinMoin.parser.wiki.Parser instance>, word=u'||<tablewidth="908px" tableheight="707px" tables...t; height: 36pt; background-color: transparent;">') 0. 734 1. 735 # return the complete cell markup 2. 736 result.append(self.formatter.table_cell(1, attrs) + attrerr) 3. 737 result.append(self._line_anchordef()) 4. 738 return ''.join(result) * result = [u'<tr height="36pt" style="">'] * result.append = <built-in method append of list object> * self = <MoinMoin.parser.wiki.Parser instance> * self.formatter = <MoinMoin.formatter.text_gedit.Formatter instance> * self.formatter.table_cell = <bound method Formatter.table_cell of <MoinMoin.formatter.text_gedit.Formatter instance>> * attrs = {u'rowstyle': u'"height: 36pt;"', u'style': u'"border: 1pt solid windowtext; padding: 0cm 5.4p...pt; height: 36pt; background-color: transparent;"', u'tableheight': u'"707px"', u'tablestyle': u'"border: medium none ; margin: auto auto auto 5.4pt; border-collapse: collapse;"', u'tablewidth': u'"908px"', u'width': u'"120px"'} * attrerr = '' 11. C:\Python24\lib\site-packages\MoinMoin\formatter\text_html.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cformatter%5Ctext_h tml.py> in table_cell (self=<MoinMoin.formatter.text_gedit.Formatter instance>, on=1, attrs={'bgcolor': u'transparent', 'height': u'36pt', u'style': u'border:1pt solid windowtext;padding:0cm 5.4pt;vertical-align:top; ', u'width': u'120px'}, **kw={}) 0. 1335 attrs = self._checkTableAttr(attrs, '') 1. 1336 return ' ' + self._open(tag, attr=attrs, 2. 1337 allowed_attrs=self._allowed_table_attrs[''], 3. 1338 **kw) 4. 1339 return self._close(tag) + '\n' * allowed_attrs undefined * self = <MoinMoin.formatter.text_gedit.Formatter instance> * self._allowed_table_attrs = {'': ['colspan', 'rowspan', 'class', 'id', 'style', 'bgcolor', 'width'], 'row': ['class', 'id', 'style', 'bgcolor', 'width', 'height'], 'table': ['class', 'id', 'style', 'bgcolor', 'width', 'height']} 12. C:\Python24\lib\site-packages\MoinMoin\formatter\text_html.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cformatter%5Ctext_h tml.py> in _open (self=<MoinMoin.formatter.text_gedit.Formatter instance>, tag='td', newline=False, attr={'bgcolor': u'transparent', 'height': u'36pt', u'style': u'border:1pt solid windowtext;padding:0cm 5.4pt;vertical-align:top; ', u'width': u'120px'}, allowed_attrs=['colspan', 'rowspan', 'class', 'id', 'style', 'bgcolor', 'width'], **kw={}) 0. 343 1. 344 # Format 2. 345 attributes = self._formatAttributes(attributes, allowed_attrs=allowed_attrs, **kw) 3. 346 result.append('<%s%s%s>' % (tag, attributes, is_self_closing)) 4. 347 if newline: * attributes = {'bgcolor': u'transparent', 'height': u'36pt', u'style': u'border:1pt solid windowtext;padding:0cm 5.4pt;vertical-align:top; ', u'width': u'120px'} * self = <MoinMoin.formatter.text_gedit.Formatter instance> * self._formatAttributes = <bound method Formatter._formatAttributes of <MoinMoin.formatter.text_gedit.Formatter instance>> * allowed_attrs = ['colspan', 'rowspan', 'class', 'id', 'style', 'bgcolor', 'width'] * kw = {} 13. C:\Python24\lib\site-packages\MoinMoin\formatter\text_html.py <file:///C:%5CPython24%5Clib%5Csite-packages%5CMoinMoin%5Cformatter%5Ctext_h tml.py> in _formatAttributes (self=<MoinMoin.formatter.text_gedit.Formatter instance>, attr={'bgcolor': u'transparent', 'height': u'36pt', u'style': u'border:1pt solid windowtext;padding:0cm 5.4pt;vertical-align:top; ', u'width': u'120px'}, allowed_attrs=['colspan', 'rowspan', 'class', 'id', 'style', 'bgcolor', 'width'], **kw={}) 0. 291 # Unknown or unallowed attribute. 1. 292 err = 'Illegal HTML attribute "%s" passed to formatter' % name 2. 293 raise ValueError(err) 3. 294 4. 295 # Finally, format them all as a single string. * builtin ValueError = <class exceptions.ValueError> * err = 'Illegal HTML attribute "height" passed to formatter' ValueError Illegal HTML attribute "height" passed to formatter * args = ('Illegal HTML attribute "height" passed to formatter',) System Details * Date: Tue, 30 Jan 2007 21:18:02 +0000 * Platform: win32 (nt) * Python: Python 2.4.3 (C:\Python24\python.exe) * MoinMoin: Release 1.5.4 (release)
Component selection
- general
- gui
Details
MoinMoin Version |
1.5.4 |
OS and Version |
Windows 2003 |
Python Version |
2.4.3 |
Server Setup |
|
Server Details |
|
Language you are using the wiki in (set in the browser/UserPreferences) |
English |
Workaround
Discussion
Please try this at test.wikiwikiweb.de too
Does it work there?
Please also give your exact moin and python version, see page SystemInfo in your wiki.
It seems as though this problem is fixed on the test.wikiwikiweb.de site, but I did notice something else. If I have a page with this table, click "edit GUI", make changes, then click preview, the preview looks good but the editing part of the page above the preview shows the table all blue. Then if you save it the table will be saved with a blue fill. I made a page from the Sandbox on this site called NewTableTest to test it. Take a look: http://test.wikiwikiweb.de/NewTableTest
Plan
- Priority:
- Assigned to:
- Status: