# -*- 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 = '''

%(this_alias_text)s

%(this_exif_date_text)s

''' % { "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()