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

  1. Edit calendar in FireFox

  2. Click Preview

Example

screenshot.jpg

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

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.

Plan


CategoryMoinMoinBug

MoinMoin: MoinMoinBugs/FormatterErrorWhenHandlingCalendarInFireFox (last edited 2007-10-29 19:08:56 by localhost)