import initial
darcs-hash:20061213214504-f46e9-d1bfba998bd933dfc9abf305a942411b6dbc2682.gz
This commit is contained in:
parent
9492f584c6
commit
d315e506b3
2 changed files with 481 additions and 0 deletions
398
wiki/action/gallery2image.py
Normal file
398
wiki/action/gallery2image.py
Normal file
|
@ -0,0 +1,398 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
"""
|
||||
MoinMoin - gallery2Image Actionmacro
|
||||
|
||||
PURPOSE::
|
||||
This action macro is used to rotate, move to bak or to slide through the images from Gallery2
|
||||
|
||||
CALLING SEQUENCE::
|
||||
called by Gallery2 POST Method
|
||||
|
||||
PROCEDURE::
|
||||
see Gallery2
|
||||
|
||||
Please remove the version number from this file
|
||||
|
||||
RESTRICTIONS::
|
||||
spaces in file names are not supported. I don't know how to escape them right. Probaly this does work in 1.3.5
|
||||
|
||||
MODIFICATION HISTORY::
|
||||
Version 1.3.3.-1
|
||||
@copyright: 2005 by Reimar Bauer (R.Bauer@fz-juelich.de)
|
||||
@license: GNU GPL, see COPYING for details.
|
||||
2005-06-24: 1.3.3.-2 feature reqeust of CraigJohnson added
|
||||
os.path.join used to join platform independent pathes
|
||||
os.unlink removed to get it more platform independend
|
||||
2005-08-06: 1.3.5-3 RB VS mode added
|
||||
by one step back or forward could be toggled through the selected slides
|
||||
and the first and last one could be selected too
|
||||
2005-08-07 1.3.5-4 RB bug fixed for cgi-bin call. formatting of tables adjusted
|
||||
2005-08-13 1.3.5-5 RB code change from GET to POST
|
||||
forms instead of link
|
||||
toggle between webnail and image by click on image
|
||||
alias (description) and exif_date added
|
||||
this version needs Gallery2-1.3.5-7.py
|
||||
2005-08-31 1.3.5-6 RB html code changed into a function :-)
|
||||
some html bugs fixed too
|
||||
instead of button text now images used (disabled buttons are grey color coded)
|
||||
back link to callers page
|
||||
whole page inserted into the common wiki page
|
||||
code clean up.
|
||||
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Dependencies = []
|
||||
import os,string,Image,StringIO
|
||||
from MoinMoin import config, wikiutil
|
||||
from MoinMoin.PageEditor import PageEditor
|
||||
from MoinMoin import user, util
|
||||
from MoinMoin.Page import Page
|
||||
from MoinMoin.action import AttachFile
|
||||
from MoinMoin.formatter.text_html import Formatter
|
||||
from MoinMoin.parser import wiki
|
||||
|
||||
def html_show_image(request,pagename,url_wiki_page,full,alias,exif_date,target,idx):
|
||||
|
||||
n = len(target)
|
||||
last_disabled = ''
|
||||
last_status = ''
|
||||
first_disabled = ''
|
||||
first_status = ''
|
||||
previous = idx - 1
|
||||
next = idx + 1
|
||||
|
||||
if idx == n-1 :
|
||||
last_disabled = 'disabled'
|
||||
last_status = '_disabled'
|
||||
|
||||
if idx == 0 :
|
||||
first_disabled = 'disabled'
|
||||
first_status = '_disabled'
|
||||
|
||||
|
||||
if previous < 0 :
|
||||
previous = 0
|
||||
|
||||
if next > n - 1 :
|
||||
next = n - 1
|
||||
|
||||
if n == 1 :
|
||||
next = 0
|
||||
# previous = 0
|
||||
# first_disabled = 'disabled'
|
||||
# first_status = '_disabled'
|
||||
# last_disabled = 'disabled'
|
||||
# last_status = '_disabled'
|
||||
|
||||
html = '''
|
||||
<table border="1" align="center"">
|
||||
<tr align="center" >
|
||||
<td>
|
||||
<table border="0";style="border-style:none;">
|
||||
<tr align="center">
|
||||
|
||||
<form action="%(base_url)s/%(pagename)s" method="POST" enctype="multipart/form-data">
|
||||
<th>
|
||||
<input type="hidden" name="action" value="gallery2image">
|
||||
<input type="hidden" name="do" value="VS">
|
||||
<input type="hidden" name="full" value="%(first_full_list)s">
|
||||
<input type="hidden" name="alias" value="%(first_alias_list)s">
|
||||
<input type="hidden" name="exif_date" value="%(first_exif_date_list)s">
|
||||
<input type="hidden" name="target" value="%(first_target_list)s">
|
||||
<input type="image" value="submit" src="/wiki/modern/img/first%(first_status)s.png" title="first slide" %(first_disabled)s>
|
||||
</th>
|
||||
</form>
|
||||
<form action="%(base_url)s/%(pagename)s" method="POST" enctype="multipart/form-data">
|
||||
<th>
|
||||
<input type="hidden" name="action" value="gallery2image">
|
||||
<input type="hidden" name="do" value="VS">
|
||||
<input type="hidden" name="full" value="%(previous_full_list)s">
|
||||
<input type="hidden" name="alias" value="%(previous_alias_list)s">
|
||||
<input type="hidden" name="exif_date" value="%(previous_exif_date_list)s">
|
||||
<input type="hidden" name="target" value="%(previous_target_list)s">
|
||||
<input type="image" value="submit" src="/wiki/modern/img/previous%(first_status)s.png" title="previous slide" %(first_disabled)s>
|
||||
</th>
|
||||
</form>
|
||||
<form action="%(base_url)s/%(pagename)s" method="POST" enctype="multipart/form-data">
|
||||
<th>
|
||||
<input type="hidden" name="action" value="gallery2image">
|
||||
<input type="hidden" name="do" value="VS">
|
||||
<input type="hidden" name="full" value="%(next_full_list)s">
|
||||
<input type="hidden" name="exif_date" value="%(next_exif_date_list)s">
|
||||
<input type="hidden" name="alias" value="%(next_alias_list)s">
|
||||
<input type="hidden" name="target" value="%(next_target_list)s">
|
||||
<input type="image" value="submit" src="/wiki/modern/img/next%(last_status)s.png" title="next slide" %(last_disabled)s>
|
||||
</th>
|
||||
</form>
|
||||
<form action="%(base_url)s/%(pagename)s" method="POST" enctype="multipart/form-data">
|
||||
<th>
|
||||
<input type="hidden" name="action" value="gallery2image">
|
||||
<input type="hidden" name="do" value="VS">
|
||||
<input type="hidden" name="full" value="%(last_full_list)s">
|
||||
<input type="hidden" name="alias" value="%(last_alias_list)s">
|
||||
<input type="hidden" name="exif_date" value="%(last_exif_date_list)s">
|
||||
<input type="hidden" name="target" value="%(last_target_list)s">
|
||||
<input type="image" value="submit" src="/wiki/modern/img/last%(last_status)s.png" title="last slide" %(last_disabled)s>
|
||||
</th>
|
||||
</form>
|
||||
<form action="%(base_url)s/%(pagename)s" method="POST" enctype="multipart/form-data">
|
||||
<th>
|
||||
<input type="hidden" name="action" value="gallery2image">
|
||||
<input type="hidden" name="do" value="BS">
|
||||
<input type="hidden" name="full" value="%(this_full_list)s">
|
||||
<input type="hidden" name="alias" value="%(this_alias_list)s">
|
||||
<input type="hidden" name="exif_date" value="%(this_exif_date_list)s">
|
||||
<input type="hidden" name="target" value="%(this_target_list)s">
|
||||
<input type="image" value="submit" src="/wiki/modern/img/back.png" title="return to %(pagename)s">
|
||||
</th>
|
||||
</form>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr align="center">
|
||||
<form action="%(base_url)s/%(pagename)s" method="POST" enctype="multipart/form-data">
|
||||
<th>
|
||||
<input type="hidden" name="action" value="gallery2image">
|
||||
<input type="hidden" name="do" value="VS">
|
||||
<input type="hidden" name="full" value="%(this_target_list)s">
|
||||
<input type="hidden" name="alias" value="%(this_alias_list)s">
|
||||
<input type="hidden" name="exif_date" value="%(this_exif_date_list)s">
|
||||
<input type="hidden" name="target" value="%(this_full_list)s">
|
||||
<input type="image" value="submit" src="%(this_image)s">
|
||||
</th>
|
||||
</form>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
%(this_alias_text)s
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
%(this_exif_date_text)s
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>''' % {
|
||||
|
||||
"base_url" : request.getScriptname(),
|
||||
"first_status" : first_status,
|
||||
"last_status" : last_status,
|
||||
"first_full_list" : full[0] + "," + string.join(full,','),
|
||||
"first_alias_list" : alias[0] + '!,!' + string.join(alias,'!,!'),
|
||||
"first_exif_date_list" : exif_date[0] + ',' + string.join(exif_date,','),
|
||||
"first_target_list" : target[0] + "," + string.join(target,','),
|
||||
|
||||
"previous_full_list" : full[previous] + "," + string.join(full,','),
|
||||
"previous_alias_list" : alias[previous] + '!,!' + string.join(alias,'!,!'),
|
||||
"previous_exif_date_list" : exif_date[previous] + ',' + string.join(exif_date,','),
|
||||
"previous_target_list" : target[previous] + "," + string.join(target,','),
|
||||
|
||||
"next_full_list" : full[next] + "," + string.join(full,','),
|
||||
"next_alias_list" : alias[next] + '!,!' + string.join(alias,'!,!'),
|
||||
"next_exif_date_list" : exif_date[next] + ',' + string.join(exif_date,','),
|
||||
"next_target_list" : target[next] + "," + string.join(target,','),
|
||||
|
||||
"last_full_list" : full[n-1] + "," + string.join(full,','),
|
||||
"last_alias_list" : alias[n-1] + '!,!' + string.join(alias,'!,!'),
|
||||
"last_exif_date_list" : exif_date[n-1] + ',' + string.join(exif_date,','),
|
||||
"last_target_list" : target[n-1] + "," + string.join(target,','),
|
||||
|
||||
"this_full_list" : full[idx] + "," + string.join(full,','),
|
||||
"this_alias_list" : alias[idx] + '!,!' + string.join(alias,'!,!'),
|
||||
"this_exif_date_list" : exif_date[idx] + ',' + string.join(exif_date,','),
|
||||
"this_target_list" : target[idx] + "," + string.join(target,','),
|
||||
|
||||
"first_disabled" : first_disabled,
|
||||
"last_disabled" : last_disabled,
|
||||
"this_alias_text" : alias[idx],
|
||||
"this_exif_date_text" : exif_date[idx],
|
||||
"this_image" : AttachFile.getAttachUrl(pagename,target[idx],request),
|
||||
"url_wiki_page" : url_wiki_page,
|
||||
"pagename" : pagename
|
||||
}
|
||||
|
||||
|
||||
return html
|
||||
|
||||
def to_wikiname(request,text):
|
||||
|
||||
#taken from test_parser_wiki
|
||||
page = Page(request, 'ThisPageDoesNotExistsAndWillNeverBeReally')
|
||||
page.formatter = Formatter(request)
|
||||
request.formatter = page.formatter
|
||||
page.formatter.setPage(page)
|
||||
page.hilite_re = None
|
||||
|
||||
out=StringIO.StringIO()
|
||||
request.redirect(out)
|
||||
wikiizer = wiki.Parser(text.strip(),request)
|
||||
wikiizer.format(page.formatter)
|
||||
result = out.getvalue()
|
||||
request.redirect()
|
||||
del out
|
||||
|
||||
return result.strip()
|
||||
|
||||
|
||||
action_name = __name__.split('.')[-1]
|
||||
|
||||
def execute(pagename, request):
|
||||
""" Main dispatcher for the 'Gallery' action.
|
||||
"""
|
||||
_ = request.getText
|
||||
|
||||
request.formatter = Formatter(request)
|
||||
attachment_path = AttachFile.getAttachDir(request,pagename)
|
||||
if request.form['do'][0] == 'VS' :
|
||||
web = {}
|
||||
images = string.split(request.form['target'][0],',')
|
||||
target = images[0]
|
||||
images = (images[1:])
|
||||
|
||||
full_image = string.split(request.form['full'][0],',')
|
||||
full_target = full_image[0]
|
||||
full_image = (full_image[1:])
|
||||
|
||||
all_description = string.split(request.form['alias'][0],'!,!')
|
||||
this_description = all_description[0]
|
||||
all_description = (all_description[1:])
|
||||
|
||||
all_exif_date = string.split(request.form['exif_date'][0],',')
|
||||
this_exif_date = all_exif_date[0]
|
||||
all_exif_date = (all_exif_date[1:])
|
||||
|
||||
z = 0
|
||||
for img in images :
|
||||
if target == img :
|
||||
idx = z
|
||||
|
||||
z += 1
|
||||
n = len(images)
|
||||
|
||||
######## url_wiki_page #############################################################
|
||||
text = pagename
|
||||
url = pagename
|
||||
url_wiki_page = wikiutil.link_tag(request, url, text = text,
|
||||
formatter = request.formatter)
|
||||
############################################################################
|
||||
|
||||
attachment_path = AttachFile.getAttachDir(request,pagename)
|
||||
|
||||
web['src'] = AttachFile.getAttachUrl(pagename,target,request)
|
||||
web['title'] = target
|
||||
#web['width']="1024"
|
||||
|
||||
|
||||
image_link=request.formatter.image(**web)
|
||||
|
||||
|
||||
request.http_headers()
|
||||
request.setContentLanguage(request.lang)
|
||||
wikiutil.send_title(request, pagename,
|
||||
pagename=pagename)
|
||||
request.write(request.formatter.startContent("content"))
|
||||
|
||||
|
||||
html = html_show_image(request,pagename,url_wiki_page,full_image,all_description,all_exif_date,images,idx)
|
||||
request.write(html)
|
||||
request.write(request.formatter.endContent())
|
||||
wikiutil.send_footer(request, pagename)
|
||||
msg = None
|
||||
#return
|
||||
|
||||
elif request.form['do'][0] == 'PS' :
|
||||
images=string.split(request.form['target'][0],',')
|
||||
attachment_path = AttachFile.getAttachDir(request,pagename)
|
||||
target=request.form['target'][0]
|
||||
|
||||
msg= _('not finished by now') #+ target
|
||||
|
||||
elif request.form['do'][0] == 'BS' :
|
||||
|
||||
msg = "gone back" #None
|
||||
|
||||
elif request.user.may.delete(pagename):
|
||||
# only users which are allowed to delete should use this tool
|
||||
|
||||
target=request.form['target'][0]
|
||||
file, ext = os.path.splitext(target)
|
||||
|
||||
if ext == '.gif' or ext == '.png' :
|
||||
img_type = 'PNG'
|
||||
thumbfile = "thumbnail_%(file)s.png" % {"file" : file}
|
||||
webnail = "webnail_%(file)s.png" % {"file" : file}
|
||||
else:
|
||||
img_type="JPEG"
|
||||
thumbfile="thumbnail_%(file)s.jpg" % {"file" : file}
|
||||
webnail="webnail_%(file)s.jpg" % {"file" : file}
|
||||
|
||||
thumb = os.path.join(attachment_path,thumbfile)
|
||||
webf = os.path.join(attachment_path,webnail)
|
||||
infile = os.path.join(attachment_path,target)
|
||||
|
||||
msg = None
|
||||
if action_name in request.cfg.excluded_actions:
|
||||
msg = _('File attachments are not allowed in this wiki!')
|
||||
|
||||
elif request.form['do'][0] == 'RM' :
|
||||
if os.path.exists(infile + '.bak') :
|
||||
os.unlink("%(file)s.bak" % {"file" : infile})
|
||||
os.link(infile,"%(file)s.bak" % {"file" : infile})
|
||||
os.unlink(infile)
|
||||
os.unlink(webf)
|
||||
os.unlink(thumb)
|
||||
|
||||
msg = _('%(target)s deleted, backup in place' % {
|
||||
'target':target})
|
||||
|
||||
elif request.form['do'][0] == 'RL' :
|
||||
im = Image.open(infile)
|
||||
#os.unlink(infile)
|
||||
im.rotate(90).save(infile,img_type)
|
||||
nim = Image.open(infile)
|
||||
nim.thumbnail((640,640), Image.ANTIALIAS)
|
||||
#os.unlink(webf)
|
||||
nim.save(webf, img_type)
|
||||
nim.thumbnail((128, 128), Image.ANTIALIAS)
|
||||
#os.unlink(thumb)
|
||||
nim.save(thumb, img_type)
|
||||
msg= _('%(target)s rotated to left 90 degrees' % {
|
||||
'target':target})
|
||||
|
||||
elif request.form['do'][0] == 'RR' :
|
||||
im = Image.open(infile)
|
||||
#os.unlink(infile)
|
||||
im.rotate(270).save(infile,img_type)
|
||||
|
||||
|
||||
nim = Image.open(infile)
|
||||
|
||||
nim.thumbnail((640,640), Image.ANTIALIAS)
|
||||
#os.unlink(webf)
|
||||
nim.save(webf, img_type)
|
||||
nim.thumbnail((128, 128), Image.ANTIALIAS)
|
||||
#os.unlink(thumb)
|
||||
nim.save(thumb, img_type)
|
||||
msg= _('%(target)s rotated to right 90 degrees' % {
|
||||
'target':target})
|
||||
|
||||
|
||||
|
||||
|
||||
else:
|
||||
msg = _('action not implemented: %s') % (request.form['do'][0],)
|
||||
else:
|
||||
msg = _('Your are not allowed to change images on this page: %s') % (pagename,)
|
||||
|
||||
if msg:
|
||||
AttachFile.error_msg(pagename, request, msg)
|
||||
|
||||
return()
|
83
wiki/action/opensearch.py
Normal file
83
wiki/action/opensearch.py
Normal file
|
@ -0,0 +1,83 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
"""
|
||||
MoinMoin - "opensearch" action
|
||||
|
||||
Generate an opensearch xml description.
|
||||
|
||||
@copyright: 2006 by Grégoire Détrez <gdetrez@crans.org>
|
||||
@license: GNU GPL, see COPYING for details.
|
||||
"""
|
||||
|
||||
from MoinMoin import config, wikiutil
|
||||
from MoinMoin.util import MoinMoinNoFooter
|
||||
from MoinMoin.wikixml.util import XMLGenerator
|
||||
import StringIO
|
||||
from xml.sax import saxutils
|
||||
|
||||
def execute(pagename, request):
|
||||
_ = request.getText
|
||||
form = request.form
|
||||
|
||||
if form.has_key('searchtype'):
|
||||
searchtype = form['searchtype'][0]
|
||||
else:
|
||||
searchtype = "Titres"
|
||||
|
||||
request.http_headers(["Content-Type: text/xml; charset=%s" % config.charset ])
|
||||
|
||||
name = request.cfg.sitename + " (%s)" % searchtype
|
||||
if searchtype == "Titres":
|
||||
Desc = "%s, recherche dans les titres" % request.cfg.sitename
|
||||
else:
|
||||
Desc = "%s, recherche dans le texte" % request.cfg.sitename
|
||||
|
||||
if searchtype == "Titres":
|
||||
searchtype_arg = "titlesearch=Titres"
|
||||
else:
|
||||
searchtype_arg = "fullsearch=Texte"
|
||||
server_search_addr = "http://%s%s?action=fullsearch&context=180&value={searchTerms}&%s" % (request.http_host, request.script_name, searchtype_arg)
|
||||
|
||||
# prepare output
|
||||
out = StringIO.StringIO()
|
||||
handler = OpenSearchGenerator(out)
|
||||
|
||||
|
||||
handler.startDocument()
|
||||
|
||||
handler.node('ShortName', name)
|
||||
handler.node('Description', Desc)
|
||||
|
||||
handler.node('Image', 'http://%s/favicon.ico' % request.http_host, {
|
||||
'height': "16",
|
||||
'width': "16",
|
||||
'type': "image/x-icon",
|
||||
})
|
||||
handler.node('Url', None, {
|
||||
'template': server_search_addr,
|
||||
'method': "get",
|
||||
'type': "text/html",
|
||||
})
|
||||
handler.endDocument()
|
||||
request.write(out.getvalue())
|
||||
|
||||
raise MoinMoinNoFooter
|
||||
|
||||
class OpenSearchGenerator(saxutils.XMLGenerator):
|
||||
default_xmlns = {
|
||||
'opensearch':"http://a9.com/-/spec/opensearch/1.1/",
|
||||
}
|
||||
def __init__(self, out):
|
||||
saxutils.XMLGenerator.__init__(self, out=out, encoding=config.charset)
|
||||
#self.xmlns = self.default_xmlns
|
||||
def startDocument(self):
|
||||
saxutils.XMLGenerator.startDocument(self)
|
||||
self.startElement('OpenSearchDescription', {'xmlns': "http://a9.com/-/spec/opensearch/1.1/"})
|
||||
def endDocument(self):
|
||||
self.endElement('OpenSearchDescription')
|
||||
saxutils.XMLGenerator.endDocument(self)
|
||||
def node(self, tag, value, attr={}):
|
||||
self.startElement(tag, attr)
|
||||
if value: self.characters(value)
|
||||
self.endElement(tag)
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue