620
621
fname = wikiutil.taintfilename(filename)
621
622
if AttachFile.exists(self.request, pagename, fname):
622
623
target = AttachFile.getAttachUrl(pagename, fname, self.request, do=querystr['do'])
623
title = "attachment:%s" % url
624
if not 'title' in kw:
625
kw['title'] = "attachment:%s" % url
626
kw['css'] = 'attachment'
626
target = AttachFile.getAttachUrl(pagename, fname, self.request, upload=True)
627
title = _('Upload new attachment "%(filename)s"') % {'filename': fname}
628
css = 'attachment nonexistent'
629
return self.url(on, target, css=css, title=title)
628
target = AttachFile.getAttachUrl(pagename, fname, self.request, do='upload_form')
629
kw['title'] = _('Upload new attachment "%(filename)s"') % {'filename': fname}
630
kw['css'] = 'attachment nonexistent'
631
return self.url(on, target, **kw)
631
633
return self.url(on)
649
651
title = _('Upload new attachment "%(filename)s"') % {'filename': fname}
650
652
img = self.icon('attachimg')
651
653
css = 'nonexistent'
652
target = AttachFile.getAttachUrl(pagename, fname, self.request, upload=True)
654
target = AttachFile.getAttachUrl(pagename, fname, self.request, do='upload_form')
653
655
return self.url(1, target, css=css, title=title) + img + self.url(0)
655
657
def attachment_drawing(self, url, text, **kw):
656
# XXX text arg is unused!
657
_ = self.request.getText
658
pagename, filename = AttachFile.absoluteName(url, self.page.page_name)
659
fname = wikiutil.taintfilename(filename)
661
fname = fname + u".png"
662
filename = filename + u".png"
663
# fallback for old gif drawings (1.1 -> 1.2)
664
exists = AttachFile.exists(self.request, pagename, fname)
666
gfname = fname[:-4] + u".gif"
667
gfilename = filename[:-4] + u".gif"
668
exists = AttachFile.exists(self.request, pagename, gfname)
670
fname, filename = gfname, gfilename
672
# check whether attachment exists, possibly point to upload form
673
drawing_url = AttachFile.getAttachUrl(pagename, fname, self.request, drawing=drawing, upload=True)
675
title = _('Create new drawing "%(filename)s (opens in new window)"') % {'filename': fname}
676
img = self.icon('attachimg') # TODO: we need a new "drawimg" in similar grey style and size
678
return self.url(1, drawing_url, css=css, title=title) + img + self.url(0)
680
title = _('Edit drawing %(filename)s (opens in new window)') % {'filename': self.text(fname)}
681
kw['src'] = AttachFile.getAttachUrl(pagename, filename, self.request, addts=1)
682
kw['css'] = 'drawing'
684
mappath = AttachFile.getFilename(self.request, pagename, drawing + u'.map')
658
# ToDo try to move this to a better place e.g. __init__
686
map = file(mappath, 'r').read()
687
except (IOError, OSError):
690
# we have a image map. inline it and add a map ref to the img tag
691
mapid = 'ImageMapOf' + drawing
692
map = map.replace('%MAPNAME%', mapid)
693
# add alt and title tags to areas
694
map = re.sub('href\s*=\s*"((?!%TWIKIDRAW%).+?)"', r'href="\1" alt="\1" title="\1"', map)
695
map = map.replace('%TWIKIDRAW%"', '%s" alt="%s" title="%s"' % (drawing_url, title, title))
696
# unxml, because 4.01 concrete will not validate />
697
map = map.replace('/>', '>')
698
title = _('Clickable drawing: %(filename)s') % {'filename': self.text(fname)}
699
if 'title' not in kw:
702
kw['alt'] = kw['title']
703
kw['usemap'] = '#'+mapid
704
return map + self.image(**kw)
706
if 'title' not in kw:
709
kw['alt'] = kw['title']
710
return self.url(1, drawing_url) + self.image(**kw) + self.url(0)
660
drawing_action = AttachFile.get_action(self.request, url, do='modify')
661
assert drawing_action is not None
662
attachment_drawing = wikiutil.importPlugin(self.request.cfg, 'action',
663
drawing_action, 'attachment_drawing')
664
return attachment_drawing(self, url, text, **kw)
665
except (wikiutil.PluginMissingError, wikiutil.PluginAttributeError, AssertionError):
713
668
# Text ##############################################################
930
887
# id in here no longer used
931
888
self._code_area_state = [None, show, start, step, start]
891
attr = {'class': 'codemsg'}
892
res.append(self._open('div', attr={'class': 'codemsg'}))
894
res.append(self._close('div'))
933
896
# Open the code div - using left to right always!
934
897
attr = {'class': 'codearea', 'lang': 'en', 'dir': 'ltr'}
935
898
res.append(self._open('div', attr=attr))