--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>Epoz</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.python.pydev.PyDevBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>com.ibm.sse.model.structuredbuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.trustudio.core.trustudio</nature>\r
+ <nature>org.python.pydev.pythonNature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+Epoz - Changes
+
+ 0.9.0
+
+ - Reorganized directory layout into core, i18n, images & plone. Please
+ note: You need to "reinstall" Epoz with Quickinstaller / External Method
+ when using Epoz in CMF/Plone.
+
+ - Andy Dustman provided a patch for removing MS-Word-Garbage-tags.
+ Thanks Andy!!!
+
+ - Documentation about Epoz for end-users is provided by Tom Purl (see
+ "EpozBook":http://zopewiki.org/EpozBook). Thanks Tom!
+
+ - fixed bug: Plone-Toolbox didn't check permissions 'View' and
+ 'List folder contents' in breadcrumbs. Thanks to Cyrille Lebeaupin
+ from Ingeniweb for patch!
+
+ - fixed bug: Image-Preview in Plone-Toolbox was broken in IE.
+
+ - fixed bug: JavaScript in content-area could break Epoz...
+ Thanks to Christian Zagrodnick from gocept.com for patch!
+
+ - cleaned up line-endings. No more need to write complicated
+ PERL/C++/ADA-Scripts to get rid of them...
+
+
+ 0.8.6
+
+ - fixed bug: Mozilla / Firefox leaves a single br-tag for
+ an empty form. Epoz will clean this mess now.
+
+ - added a wysiwyg_support-switch so Epoz can coexist with
+ other wysiwyg-editors in Plone (esp. Kupu). Moved former
+ wysiwyg_support to epoz_wysiwyg_support. Thanks to
+ Duncan Booth for patch!!!
+
+ - little cleanup to epoz_script_widget: refactored img-string
+ for spacer, so the code becomes more readable.
+
+ - fixed bug in epoz_toolbox: CMFPhotos were only shown for preview,
+ but not for inserting as image. Thanks to Bjorn van der Meer
+ for patch!!!
+
+ - updated russian translation; thanks to Michael Krishtopa!
+
+ - added some new FAQs.
+
+
+ 0.8.5
+
+ - added keyboard shortcuts for Mozilla / Firefox which are already
+ supported by IE: CTRL + b for bold, CTRL + i for italics, CTRL + u
+ for underlined, CTRL + k for create link.
+
+ - added a HowTo for easier setup of mxTidy to get valid XHTML from Epoz
+ (see mxTidyHowTo.txt).
+
+ - fixed bug: made width/height-settings for Epoz working
+ with Archetypes. Thanks to Christian Theune from Gocept for patch!
+
+ - fixed bug: corrected the slashing of folders in Epoz-toolbox
+ for Plone (http://plone.org/collector/3479)
+
+
+ 0.8.4
+
+ - fixed bug: toolbox didn't start from the correct location if the
+ portal_factory was activated.
+
+ - fixed bug: wysiwyg support in Plone could be broken, because
+ URL3 in wysiwyg_support isn't available under all circumstances.
+ I forgot that the damn test()-method evaluates all expressions
+ always, regardless of the condition... Thanks to Simon Pamies
+ for patch!
+
+ - updated browser-detection-javascript to Browser Detect v2.1.6.
+
+ - some whitespace-cleanups thanks to AnyEdit for Eclipse.
+
+ 0.8.3
+
+ - added a FAQ. Pleae read it before asking questions...
+
+ - added label for html-source-switch, because many people asked for
+ it. Hope this helps clearing up the meaning of the little checkbox
+ below the wysiwyg-area...
+
+ - added translations for tidy-messages in the browser-status-bar to
+ en & de. Please note: Don't use any entities if you want to translate,
+ because the browser-status-bar doesn't support entities!
+
+ - Fixed bug: missing form_path in epoz_script_widget caused problems
+ when using portal_factory in Plone. Thanks to Danny Bloemendaal (for
+ detecting the problem) and Geoff Davis for patch! Added a check to
+ wysiwyg_support to detect document-creation via portal_factory.
+
+ - Fixed bug: the Epoz-Iframe in epoz_script_widget wasn't loaded via
+ an absolute url, so browsers could complain when running Epoz via https.
+
+ 0.8.2
+
+ - Updated license to Zope Public License 2.1.
+
+ - Danny Bloemendaal provided a cleaned up toolbox for use in Plone 2.
+ Thank you, Danny!
+
+ - Added "Photo" (CMFPhoto) as selectable image-type to the toolbox.
+ Thanks to Shane Graber for patch!
+
+ - set wordwrap for mxTidy/uTidy to 79 character to avoid some problems
+ with splitted a-href-tags.
+
+ - fixed bug: making relative urls for images was broken in EpozPostTidy
+ for people who have no mxTidy / uTidylib installed.
+
+ - fixed bug: removed .strip() from data-handler in Extensions/EpozPostTidy.py,
+ so required whitespace isn't killed; added a "useless-whitespace"-cleanup
+ to EpozPostTidy.
+
+ 0.8.1
+
+ - Now the setup for getting relative urls from Epoz is much more easier:
+ There's a default EpozPostTidy.py in Epoz/Extensions which can be
+ used out of the box.
+ Simply create an External-Method in the root of the ZMI or your Plone-Site with
+ id=EpozPostTidy, Module-Name=Epoz.EpozPostTidy, Function-Name=EpozPostTidy.
+
+ - added a customcss-parameter (esp. for use in Plone) to render customized
+ css-styles in difference to a global css correctly.
+
+ - fixed bug: the XMLRPC for tidying etc. is now independent of your
+ Zope-Server-Root, so the EpozPostTidy-Hook can be created in
+ your Plone-Instance without a VHM-Setup anymore.
+
+ - fixed bug: canceling "Add anchor" resulted in emtpy tag. Thanks to
+ Simon Pamies for patch!!!
+
+ - fixed bug: IE complained about security when Epoz was called via
+ https. Thanks to Sam Brauer and Andrew Athan for patches!
+
+ - fixed bug: <embed>-tag was replaced by <ibed> in Mozilla. Thanks
+ to Christian Ledermann.
+
+ - fixed bug in epoz_script_main.js.dtml/InitEpoz: IE 5.0 isn't
+ wysiwyg-able and therefore needs to fall back to a textarea. Thanks
+ to Marc Zacher!
+
+ - updated epoz_lang_pt-br. Thanks to Luiz Fernando Pasqual S. Souza!
+
+ - updated epoz_lang_zh-cn. Thanks to panjunyong!
+
+ - updated epoz_lang_no.js.dtml. Thanks to Einar Jensen!
+
+
+ 0.8.0
+
+ - added support for uTidylib (http://utidylib.sourceforge.net/);
+ Thanks to Shane Hathaway from Zope Corporation for his
+ patches!!! Please note: there are still some problems with UTF8;
+ maybe someone can provide a patch?
+
+ - rearranged the Javascript so that it's not necessary to
+ "auto"-switch to source mode when saving. Thanks
+ again to Shane Hathaway from Zope Corporation for his patches!!!
+
+ - added pageurl-parameter to Epoz; pageurl defines the base
+ url of the edited page. The pageurl is forwarded to Epoz(Post)Tidy,
+ so you can rewrite urls according to the given base url.
+ **PLEASE NOTE:** You must add an additional parameter
+ if you use EpozPostTidy-Hooks in your applications.
+
+ - added support for adding anchors; works very nice with Mozilla, IE
+ doesn't show the css-styles. IE is crap anyway...
+ Thanks to Christian Theune from Gocept for his patches!!!
+
+ - added global support (EpozGetRelativeUrl) for calculating relative urls
+ from absolute urls; Thanks to Gilles Lenfant for this feature! Please
+ see README.txt for how to enable this feature.
+
+ - added simple example for EpozPostTidy-Hook to README.txt.
+
+ - added danish-translation; thanks to Nikolay Kim!!!
+
+ - fixed bug: IE couldn't handle anchors; added base-tag to
+ epoz_blank_iframe.html. Thanks to Stefanie Panke pointing
+ me to this problem.
+
+ - changed default height of the edit form in Plone to be a more
+ sensible 450px (limi).
+
+ - removed annoying pop-up saying "Your browser does not support
+ XML-RPC" from the JS. If it doesn't, we degrade anyway - no reason
+ to insult the user. ;) (limi)
+
+ - fixed epoz_toolbox to use 'sanctioned' calls for meta_types. Thanks
+ to Marc Lindahl for patch!!!
+
+ - wysiwyg_support was causing a wierd error when used
+ inside CMFBoard sometimes (Attribute Error: meta_type). Traced it to
+ test of text_format. test() evaluates both true and false branches.
+ Restructured it to fix the problem. Thanks to Marc Lindahl for patch!!!
+
+ - fixed tabindex for Plone (limi)
+
+ - added class="visualFontSizeCorrection" to body-tag of
+ epoz_blank_iframe.html; mostly needed for displaying correct font-sizes
+ for the wysiywg-area in Plone 2.0. Please note: To use this with
+ older Plones, add visualFontSizeCorrection { font-size: 75%; }
+ to your ploneCustom.css (limi)
+
+ - synced default wysiwyg_support with Plone 2.0.
+
--- /dev/null
+###
+# EpozPostTidy.py
+#
+# This is just an example for transforming
+# absolute urls to relative urls with Epoz.
+#
+# Use it at your own risk or improve it!
+###
+
+from HTMLParser import HTMLParser
+import re
+
+# These tags will get a newline after the closing tag
+blocktags = ['p', 'pre', 'div',
+ 'table', 'tr', 'th', 'td', 'thead', 'tbody', 'tfoot',
+ 'ul','ol','li',
+ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']
+
+# Just a simple htmlparser
+class aHTMLParser(HTMLParser):
+ res = ""
+
+ def handle_starttag(self, tag, attrs):
+ attributes=""
+ for (key,value) in attrs:
+ # Internal Link?
+ if (tag=="a" and key=="href") or (tag=="img" and key=="src"):
+ value = self.getRelativeUrl(self.pageurl, value)
+ attributes += ' %s="%s"' % (key,value)
+ self.res += "<%s%s>" % (tag, attributes)
+
+ def handle_endtag(self, tag):
+ self.res += "</%s>" % (tag,)
+ # Some pretty-nice-printing for block-elements
+ if tag in blocktags:
+ self.res += "\n"
+
+ def handle_startendtag(self, tag, attrs):
+ attributes=""
+ for (key,value) in attrs:
+ # Image?
+ if tag=="img" and key=="src":
+ value = self.getRelativeUrl(self.pageurl, value)
+ attributes += ' %s="%s"' % (key,value)
+ self.res += "<%s%s />" % (tag, attributes)
+
+ def handle_data(self, data):
+ self.res += data
+
+ def handle_charref(self, data):
+ self.res += "&%s;" % data
+
+ def handle_entityref(self, data):
+ self.res += "&%s;" % data
+
+ def handle_comment(self, data):
+ self.res += "<!-- %s -->"
+
+
+def EpozPostTidy(self, html, pageurl):
+
+ # Create a parser
+ parser = aHTMLParser()
+
+ # Give the parser the global method for relative urls
+ parser.getRelativeUrl = self.EpozGetRelativeUrl
+
+ # Submit the pageurl as base-url for calculating urls
+ parser.pageurl = pageurl
+
+ # And now lets turn the wheels
+ parser.feed(html)
+ parser.close()
+
+ # Get & return postprocessed html from parser
+ html = parser.res
+
+ # Just some cleanups to remove useless whitespace
+ html = re.sub("[ ]+"," ",html)
+ html = re.sub("[\n]+","\n", html)
+
+ return html
--- /dev/null
+###
+# Epoz-Installer-Script for CMF/Plone
+# Taken and adapted from CMFVisualEditor
+###
+
+from Products.Epoz import cmfepoz_globals
+from StringIO import StringIO
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.DirectoryView import addDirectoryViews
+
+_globals = globals()
+
+def install_plone(self, out):
+ """ add Epoz to 'my preferences' """
+ portal_props=getToolByName(self,'portal_properties')
+ site_props=getattr(portal_props,'site_properties', None)
+ attrname='available_editors'
+ if site_props is not None:
+ editors=list(site_props.getProperty(attrname))
+ if 'Epoz' not in editors:
+ editors.append('Epoz')
+ site_props._updateProperty(attrname, editors)
+ print >>out, "Added 'Epoz' to available editors in Plone."
+
+def install_subskin(self, out, skin_name, globals=cmfepoz_globals):
+ skinstool=getToolByName(self, 'portal_skins')
+ if skin_name not in skinstool.objectIds():
+ addDirectoryViews(skinstool, 'epoz', globals)
+
+ for skinName in skinstool.getSkinSelections():
+ path = skinstool.getSkinPath(skinName)
+ path = [i.strip() for i in path.split(',')]
+ try:
+ if skin_name not in path:
+ path.insert(path.index('custom') +1, skin_name)
+ except ValueError:
+ if skin_name not in path:
+ path.append(skin_name)
+
+ path = ','.join(path)
+ skinstool.addSkinSelection(skinName, path)
+
+def install(self):
+ out = StringIO()
+ print >>out, "Installing Epoz"
+ install_subskin(self, out, 'epoz_core')
+ install_subskin(self, out, 'epoz_i18n')
+ install_subskin(self, out, 'epoz_images')
+ install_subskin(self, out, 'epoz_plone')
+ install_plone(self, out)
+
+ print >>out, "Done."
+
+ return out.getvalue()
--- /dev/null
+# This is needed for import.
--- /dev/null
+Epoz-FAQ
+
+ - What does Epoz mean?
+
+ Nothing special. Don't break your mind! Sounds nice and is simply
+ Zope turned around. Long history for that one...
+
+
+ - Will Epoz be maintained in the future? I've heard of Kupu...
+
+ Yes, it will. The Kupu-project (formerly know as Epoz 1.X)
+ will not replace Epoz 0.x in any of my applications, because
+ I need a "simple, but rock-stable solution". I'll maintain, support
+ and develop Epoz therefore in the future.
+
+
+ - Does Epoz work with Opera, Konqueror, Safari, Mac-IE, ...?
+
+ No! No chance to make it work. Epoz uses a rich-text-feature
+ which is only supported by IE >=5.5 and Mozilla >= 1.3 (or other
+ recent Gecko-based browsers). But there are rumors that Opera
+ and Safari will implement a rich-text-engine in upcoming
+ releases. We'll see...
+
+
+ - Can I use several Epoz-Widgets in one page (e.g. for Archetypes)?
+
+ No, you can't and I have no idea how to make this work. If someone can
+ provide a patch (several people tried hard, but found no solution),
+ I'm fine and you will get famous, if not, that's the end of the story.
+
+
+ - How can I get relative URLs from Epoz?
+
+ Install the shipped EpozPostTidy-Hook. Create an External Method
+ as described in the README.txt to make it work. Very simple.
+
+
+ - Why doesn't Epoz support different fonts or sizes?
+
+ Simple answer: because I don't like crazy people playing with fonts and
+ different font-sizes. All fonts or sizes should be set in stylesheets
+ and not in the content. If you want this feature, please do it yourself.
+
+
+ - How can I get valid XHTML from Epoz?
+
+ Simply install mxTidy (http://www.lemburg.com/files/python/mxTidy.html)
+ and restart your server. Please see the mxTidyHowTo.txt provided with
+ Epoz if you have problems installing mxTidy. Please note: I do NOT
+ support mxTidy-problems!
+
+
+ - How can I edit ZPT, DTML or JavaScript with Epoz?
+
+ Simple answer: you can't!!! Epoz is a HTML-wysiwyg-**content**-editor,
+ just a simple replacement for (Re)StructuredText for the average user.
+ You CAN'T (!!!) edit any JavaScript, DTML, ZPT, PHP, ASP, JSP, PSP,
+ CSP, ABC, XYZ, AWK, Python, Forth, Assembler, AmigaBasic,
+ Half-Life-Mod or your haircut with Epoz... it's sad, but I have no
+ time to work on these features...;)
+
+
+ - How can I change the background-color of the Epoz-Wysiwyg-Area in Plone?
+
+ Epoz uses the Plone-CSS for rendering the wyswyg-area. In some cases
+ this might be a problem, so you want to specify another background-color
+ for editing content. Simply add a customized css-definition to your
+ ploneCustom.css::
+
+ .visualFontSizeCorrection {font-size: 75%; background-color: #e0e0e0;}
--- /dev/null
+Epoz - History
+
+ 0.7.5
+
+ - updated to Plone 2.0 format in preparation of the release (limi).
+
+ - added portugese-translation; Thanks to Nuno Teixeira!!!
+
+ - added chinese-translation; Thanks to panjunyong!!!
+
+ 0.7.4
+
+ - fixed bug: Catched all errors for XMLRPC-call, so
+ content is secured if something fails between
+ client and server.
+
+ - Changed char_encoding for mxTidy from raw to utf8
+ to avoid problems with
+
+ 0.7.3
+
+ - changed all default-encodings to utf-8; sorry,
+ I've had a broken installation of mxTidy so I thought
+ utf-8 didn't work well with mxTidy and released 0.7.2
+ to early... removed charset-arg from EpozTidy.
+
+ 0.7.2
+
+ - changed toolbox-icon into a folder; link-icon and
+ toolbox-icon were to similar before.
+
+ - added remove-format-button; this can be useful if you want
+ to remove several text-formats at once. Maybe someone can
+ provide a better icon? Please note: IE is a little bit
+ smarter than Mozilla. IE removes colors as well...
+
+ - made some css-fixes for using Epoz with tableless layout
+ in Plone 2:
+
+ - removed nowrap-style around epoz_toolbox;
+
+ - changed toolbox-width in wysiwyg_support from
+ absolute px to relative percentage, so Epoz won't
+ break the layout anymore;
+
+ - made widget xhtml-compatible.
+
+ Please note: Epoz uses the Plone-CSS to render the content.
+ The Plone-CSS doesn't allow other alignments then left-aligned
+ for paragraphs and so clicking on the Epoz-alignment-buttons
+ shows no effect in Plone. Please don't mail me about this...
+ fix the Plone-CSS (remove 'text-align: left;' from
+ p-defintion in plone.css).
+
+ - removed break_before_br in EpozTidy to keep pre-formatted
+ text in order.
+
+ - fixed bug: Stefanie Panke noticed encoding problems
+ when using the Euro-Sign. Switched all default
+ encodings from ISO-8859-1 to more universal windows-1252.
+ Thanks, Stefanie!
+
+ - fixed bug: Casey Duncan from Zope Corporation tracked
+ down a subtle bug in the product initialisation process
+ of Epoz. Short story: Registering a product and a method
+ with the same name (Epoz) can cause conflicts under some
+ circumstances (esp. running test-suites in Zope 2.7 etc.).
+ Now Epoz is marked as __replaceable__. Thanks, Casey!!!
+
+ - fixed bug: removed hardcoded protocol (http:) in
+ XMLRPC-call; Epoz over https: should now work again.
+ Thanks to Gabriel Wicke for his complaints!
+
+ 0.7.1
+
+ - fixed critical bug: Mozilla truncated contents to
+ 4096 bytes received from EpozTidy over XMLRPC
+ due to a bug in the string-code of the vcXMLRPC-library.
+
+ - fixed critical bug: if mxTidy found errors in html,
+ an empty document was returned to Epoz. JavaScript-alert
+ informs the user about critical errors in document.
+
+ - added a paragraph in the README.txt explaining the
+ relation of Epoz 0.x to Epoz 1.x. Thanks to
+ Gregor Hoffleit!
+
+ - updated french tranlsation; Thanks to Jean Laroque!!!
+
+ 0.7.0
+
+ - added support for mxTidy to produce nice and valid xhtml-code.
+
+ - added site-hook EpozPostTidy, so you can change the output of Epoz
+ with an additional script / external method. Useful if you want
+ to clean up or rewrite (absolute) links etc.pp.
+
+ - added missing language support for Plone.
+
+ - fixed breadcrumb-bug in Plone-Toolbox.
+
+ - updated sample code for edit-method; now a File-Object is used
+ as default, because, no, really no, Epoz can't edit any DTML-tags...
+
+ - updated hungarian translation. thanks to Tamas Decsi.
+
+ 0.6.1
+
+ - Fixed bug: The css-skin-parameter in wysiwyg_support.pt wasn't
+ url quoted, so skin-names with spaces weren't called correctly.
+
+ 0.6.0
+
+ - Epoz renders now the wysiwyg-textarea with your given
+ css-styles. This gives you a more realistic feeling about
+ the look of your work (esp. in Plone). Many kudos to
+ Ariel Sebbag for the solution to a real problem!!!
+
+ - Fixed issue for from time to time disabled wysiwyg-areas on
+ Mozilla. Removed EpozTimeOut by a try-catch-poll in order
+ to get Mozilla working in wysiwyg-mode. Many thanks to
+ Guido Wesdorp for this idea!!!
+
+ - Improved Table-Popup: Now you can insert tables
+ with or without heads.
+
+ - Added nowrap-style around Epoz-Toolbar so buttons
+ won't break onto two lines.
+
+ - Added finish translation. Thanks to Petri Savolainen!
+
+
+ 0.5.2
+
+ - Added strikethrough-button. Now you can use Epoz to correct
+ websites online if you are a teacher...;)
+
+ - Added nice workaround for all people who want cleaner
+ html-code from Epoz: switching the views (wysiwyg, source)
+ automatically before submitting the form will give you
+ browser-cleaned-up-code (Mozilla does a nice job, IE is crap
+ anyway).
+
+ - Added hungarian-translation. Thanks to Tamas Decsi and
+ Gabor Suveg!
+
+ - Fixed bug in epoz_toolbox. The default_charset was broken.
+ Thanks to Marian Saeger for the patch!
+
+ - Fixed a minor bug in the Plone-Toolbox: Images with single
+ quotes in the title weren't opened in the popup. Thanks to
+ Tony Addyman.
+
+ - Added a dummy blank page. IE breaks over SSL if no source
+ is given in the inline frame. Thanks to Brian Brinegar for
+ his patches!
+
+ - Sanitized the Epoz-init-string in __init__.py with dictionary.
+ Thanks to Philipp von Weitershausen for his patch!
+
+ - Improved i18n-layer. Untranslated strings will now fall
+ back to default-english. Thanks to Sergey Volobuev for his
+ help and patches!
+
+ - fixed typo in the example in the README.txt.
+ Thanks to Luiz Fernando.
+
+
+ 0.5.1
+
+ - fixed bug with different format-tags for IE
+ and Mozilla. Mozilla couldn't "unbold" text which
+ was created with IE.
+
+ Mozilla now inserts no more style-tags
+ for simple formats like bold and italics. Additionaly
+ IE's EM- and STRONG-tags will be converted to Mozilla's
+ I- and B-tags, which works perfectly with both browsers
+ rich-text-controls.
+
+ - introduced EpozTimeOut; if you encounter problems with
+ Mozilla on MacOS / etc.pp. (you can't see a cursor
+ in the wysiwyg-area or edit anything) adjust this variable.
+
+ - added norwegian-language-file. Thanks to Einar Naess Jensen!
+
+
+ 0.5.0
+
+ - added source-view-switch. Now you can view / edit
+ the html-source by clicking on the little checkbox
+ below the editor. If you use a customized
+ widget-template, please diff it to the current one
+ before upgrading.
+
+ - added search-feature to Plone-Toolbox. Now you can
+ search for contents via SearchableText.
+
+ - added a frameborder="0" to iframe, so IE doesn't
+ render an additional border anymore.
+
+ - added French translation; Thanks to Jean Laroque &
+ Yannick Dirou!
+
+ - switched license to Zope Public License (ZPL 2.0).
+ This should give you more freedom in integrating
+ Epoz into your own commercial applications / services.
+
+
+ 0.4.1
+
+ - fixed bug in wysiwyg_support.pt for Plone 1.0.1. No more dependency
+ on global 'member' which was introduced after 1.0.1.
+
+ - added missing translations for Spanish. Thanks to Pedro J. Rey Sanchiz!
+
+ - added Polnish translation; Thanks to Jakub Kasprzycki!
+
+ - added Dutch translation; Thanks to Ad Schellevis!
+
+
+ 0.4.0
+
+ - redesigned buttons with CSS; now you can have a real
+ customizable Plone/or/something/else-look&feel...:)
+ Please note: I had to make some minor changes to the Epoz-API,
+ so diff your customized templates against the current
+ ones before upgrading.
+ Thanks to Vidar Andersen from BlackTar.com for providing the
+ icons! I had to convert Vidar's icons to GIFs, because IE
+ doesn't handle PNGs with transparent background
+ very well.
+
+ - fixed bug in wysiwyg_support: no more error when wysiwyg
+ is not set.
+
+ - added language-file for italian; thanks to Nicola Bertellini
+
+ - added language-file for russian; thanks to Sergey V. Volobuev!
+
+ - added missing translations to pt-BR;
+ thanks to Luiz Fernando Pasqual S. Souza!
+
+
+ 0.3.0
+
+ - added a default-toolbox for Plone. Now you can insert links & images
+ by simply navigating through your site... could be a killer-feature
+ for Epoz & Plone.
+
+ - fixed installer: Epoz will not be added more than once to the
+ available editor-list in Plone.
+
+ - minor fix: corrected alt-attributes for sub/superscript-button.
+
+
+ 0.2.3
+
+ - fixed bug: backslashes weren't quoted, so Epoz did eat them
+ up. Thanks to Michael Bickel. (Note: Please update your
+ PythonScript if you use Epoz on a shared server like
+ freezope.org.)
+
+ - fixed bug: Epoz didn't work when Zope was served via CGI, corrected
+ the path to Epoz-scripts with BASE1. Thanks to Ralf Kraudelt.
+
+ - minor clean/speed-up for select-format. Thanks to Puna Tannehill.
+
+
+ 0.2.2
+
+ - added buttons for sub- and superscript to Epoz.
+
+ - added a widget-parameter, so you can specify your own-js-widget
+ for Epoz; take epoz_script_widget.js as starting-point.
+
+ - changed timeout from 10 to 100 for Mozilla getting the midas-controls.
+ This should fix some sync-issues with Mozilla.
+
+ - made widget-rendering faster by removing expensive document.writeln
+ for each row; added a break after tag-selection-box, so
+ Epoz won't need so much horizontal space.
+
+ - added translation for background-color to pt-br.
+ Thanks to Luiz Fernando.
+
+
+ 0.2.1
+
+ - Tables are now inserted at the current selection.
+
+ - added a focus-on-load for table- and colorselector, so an
+ already openend tool is brought into front when already opened.
+ Thanks to Puna Tannehill.
+
+ - reworked code; the Epoz-Editor is only fetched once by getElementbyId,
+ so this should speed up Epoz on slow machines; Thanks to Puna Tannehill.
+
+ - removed focus (and bottom-scrolling on IE) for initialization
+ of document; Thanks to Puna Tannehill.
+
+ - fixed bug: IE on MacOS was recognized as rich-text-editor,
+ which it is not; Bill G., maybe you can sync your IE's on
+ all platforms? Thanks to Martin Huntley.
+
+ - fixed bug: Gecko-Browsers without Midas will now display a
+ textarea instead of breaking.
+
+ - corrected language-code for Portuguese/Brasil (pt-br).
+
+
+ 0.2
+
+ - integrated Epoz as Wysiwyg-Editor into Plone.
+ Added install-script for Plone. Moved files to skin/epoz and prefixed
+ them with 'epoz_*'.
+
+ - seperated JavaScripts for browser-detection, widget-drawing, etc.
+
+ - removed hard-wired-dependency on SubmitEpoz for submit-buttons. You
+ can/must use your own submit-button now! Please correct your forms
+ (simply add a submit-button). Removed submit from parameter-list.
+
+ - removed useless table around Epoz-Box.
+
+
+ 0.1.2
+
+ - reworked table-selection as popup-window.
+
+ - reworked color-selector as popup-window. The former
+ iframe-implementation was broken in Plone.
+
+ - added a background-color-selection.
+
+ - cleaned up the JavaScript-code a bit.
+
+ - added a portugese(brasilian)-language-file. Thanks to Luiz
+ Fernando Pasqual S. Souza!
+
+ - added spanish-language-file. Thanks to Pedro J. Rey Sanchiz!
+
+ - html-quoted non-ascii-chars in language-files.
+ InternetExplorer can crash when Unicode is set as character
+ set, but latin-coded "umlaute" appear in JavaScript.
+
+ - made the submit-button optional (pass a empty
+ submit-paramter). This will make it easier to integrate Epoz
+ into your own form-layout. Please be sure to call
+ onclick="SubmitEpoz();" for your customized submitt-button.
+ Thanks to Volker Bachschneider!
+
+
+ 0.1.1
+
+ - removed dependency on hard-wired paths to scripts/images; Epoz can now
+ be used more easily standalone
+
+ - added a description on how to turn Epoz into a
+ standalone-Zope-Web-Application which can be installed on shared
+ servers with no filesystem access (e.g. freezope.org)
+
+ - added newlines to CreateTable (results in more readable table-source)
+
+ - added a convenient catch for calling Epoz when data is None;
+ thanks to Joachim Schmitz!
+
+ - fixed broken style-parameter
+
+ - fixed a spelling-typo in www/de.js
+
+ - fixed some minor misunderstandings in the README.txt; corrected
+ sample-edit-method (no more empty action, method should be post)
+
+
+ 0.1
+
+ - inital release
--- /dev/null
+Epoz - Copyright (C) 2004 Maik Jablonski (maik.jablonski@uni-bielefeld.de)
+All Rights Reserved.
+
+This software is subject to the provisions of the Zope Public License,
+Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+FOR A PARTICULAR PURPOSE.
+
+
+Zope Public License (ZPL) Version 2.1
+
+A copyright notice accompanies this license document that identifies the
+copyright holders.
+
+This license has been certified as open source. It has also been designated as
+GPL compatible by the Free Software Foundation (FSF).
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ 1. Redistributions in source code must retain the accompanying copyright
+ notice, this list of conditions, and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the accompanying copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Names of the copyright holders must not be used to endorse or promote
+ products derived from this software without prior written permission from
+ the copyright holders.
+ 4. The right to distribute this software or to use it for any purpose does
+ not give you the right to use Servicemarks (sm) or Trademarks (tm) of
+ the copyright holders. Use of them is covered by separate agreement with
+ the copyright holders.
+ 5. If any files are modified, you must cause the modified files to carry
+ prominent notices stating that you changed the files and the date of any
+ change.
+
+Disclaimer
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
--- /dev/null
+Epoz - a cross-browser-wysiwyg-editor for Zope
+
+ Epoz allows you to edit Zope-objects with a wysiwyg-editor. No
+ plugins are required. You only have to use a recent browser (IE >=
+ 5.5, Mozilla >= 1.3.1, Netscape >= 7.1, Firebird >= 0.7) that
+ supports Rich-Text-controls (called Midas for Mozilla).
+
+ Please read the CHANGES.txt before upgrading Epoz.
+
+ To use Epoz, simply install it into your Products-directory of your
+ Zope-Server and restart the server. If you want to get nice
+ formatted and xhtml-compatible html-code from Epoz, you should also
+ install "mxTidy":http://www.lemburg.com/files/python/mxTidy.html or
+ "uTidylib":http://utidylib.sourceforge.net on your server.
+
+ Documentation about Epoz for end-users is provided by Tom Purl (see
+ "EpozBook":http://zopewiki.org/EpozBook). Thanks Tom!
+
+ Epoz talks over XMLRPC to the Zope-Server to clean up the html-code.
+ After the processing of mxTidy, Epoz tries to call an additional hook
+ (EpozPostTidy) which can do postprocessings on the html-source.
+
+ If you want to use the EpozPostTidy-Hook for getting relative urls from
+ Epoz out of the box, create an External Method in the root of the ZMI or
+ your Plone-Site with id=EpozPostTidy, Module Name=Epoz.EpozPostTidy,
+ Function Name=EpozPostTidy.
+
+ If you want to use the EpozPostTidy-Hook for customized tasks, please
+ have a look at Epoz/Extensions/EpozPostTidy.py on how to build an
+ EpozPostTidy-hook. To use the EpozPostTidy-Hook for your
+ own applications, create an external method or a python-script with
+ id=EpozPostTidy in the root of your site, which expects three parameters
+ 'self' (=server context), 'html' (=only htmlbody) and 'pageurl' (=the "real" base
+ url of current page, use it to traverse the object, rewrite urls, etc.).
+ It should return a new html-body.
+
+ If you want to use Epoz with Plone use the CMFQuickInstaller or
+ create an External Method with id=Install in your Plone-Site.
+ Then edit the newly created External Method, set
+ Module Name = Epoz.Install, Function Name = install and
+ click on 'Test'. Now you can select Epoz as default editor in "your
+ preferences" of the Plone-Site. You can customize the widget
+ (uncomment elements you don't want to see) through customization
+ of portal_skins/epoz/epoz_script_widget.js. Epoz is shipped with a
+ default toolbox for Plone (icon with folder on it). You can insert links
+ (please highlight text before inserting a link) and images by
+ searching / navigating through your site and simply click
+ "Insert Link/Image".
+
+ If you want to use Epoz with native Zope applications, you have to
+ create a customized edit-script. Because there is no unique
+ interface for editing Zope-Objects, I did not include a
+ "manage_edit_all"-script for Epoz. You have to create it yourself!!!
+ To start working with Epoz, simply create a DTML-Method with
+ id=edit::
+
+ <dtml-var standard_html_header>
+ <dtml-if html>
+ <dtml-call "manage_edit('', content_type='text/html', filedata=_.str(html))">
+ </dtml-if>
+
+ <p><a href="<dtml-var URL1>">View Document</a></p>
+
+ <form action="<dtml-var URL>" method="post">
+ <dtml-var "Epoz('html:string', data=this().data,
+ toolbox='/toolbox',
+ lang='en',
+ style='width: 620px; height: 250px; border: 1px solid #000000;')">
+ <input type="submit" name="submit" value=" Save Changes " >
+ </form>
+ <dtml-var standard_html_footer>
+
+
+ Then create an empty File with id=test and point your
+ browser to http://yourServer/test/edit. That's all...:) Please note:
+ Epoz is a pure HTML-editor and can't edit any ZPT-or-DTML-Tags!
+
+ To create an Epoz-Rich-Text-Editor from your own
+ Products/Scripts/Methods/ZPT, you have to call it with one fixed and several
+ optional paramters::
+
+ Epoz(self, name, data='', toolbox='', lang='en',
+ path='', widget='',
+ style='width: 600px; height: 250px; border: 1px solid #000000;',
+ button='background-color: #EFEFEF; border: 1px solid #A0A0A0; cursor: pointer; margin-right: 1px; margin-bottom: 1px;',
+ css='', customcss='', charset='utf-8', pageurl=''):
+ """ Create an Epoz-Wysiwyg-Editor.
+
+ name : the name of the form-element which submits the data
+ data : the data to edit
+ toolbox : a link to a HTML-Page which delivers additional tools
+ lang: a code for the language-file (en,de,...)
+ path : path to Epoz-Javascript. Needed mainly for Plone (portal_url).
+ widget: You can specify a path to an alternative JavaScript for
+ epoz_script_widget.js
+ style : style-definition for the editor-area
+ button : style-definiton for buttons
+ css : url to a global css which should be used for rendering
+ content in editor-area
+ customcss : url to a customized css which should be used for rendering
+ content in editor-area
+ charset : charset which is edited in the editor-area
+ pageurl: the base-url for the edited page
+
+ If Epoz can't create a Rich-Text-Editor, a simple textarea is created.
+ """
+
+ Epoz is shipped with a very nice additional feature. Besides the
+ rich-text-controls you can set up a customized toolbox. This is
+ simply an URL which provides a popup-window with special functions.
+ To get the idea, create a DTML-Method with id=toolbox in your Zope-Root
+ and enter something like::
+
+ <html>
+ <head><title>Epoz-Toolbox</title></head>
+ <body onload="this.focus();">
+
+ <h1>Images</h1>
+
+ <dtml-in "PYTHONPATH.TO.IMAGES.objectValues(['Image'])">
+ <img src="<dtml-var absolute_url>"
+ border="0"
+ width="16"
+ height="16"
+ alt="<dtml-var title_or_id>"
+ style="cursor: pointer;"
+ onclick="window.opener.CreateImage('<dtml-var absolute_url>'); window.close();">
+ </dtml-in>
+
+ <hr />
+
+ <h1>Links</h1>
+
+ <dtml-tree "PYTHONPATH.TO.CONTENT" branches_expr="objectValues(['Folder','File'])" nowrap=1>
+ <a href="#"
+ style="cursor: pointer;"
+ onclick="window.opener.CreateLink('<dtml-var absolute_url>'); window.close();" ><dtml-var title_or_id></a>
+ </dtml-tree>
+
+ </body>
+ </html>
+
+ Now you can click onto the little icon with the folder on it and get a
+ popup, which provides images (simply click) and links (select text in
+ Epoz-window, then click onto link).
+
+ If you want to translate Epoz into your own language, have a look at
+ skins/epoz_lang_en.js.dtml. It would be nice if you want to share
+ your translation with me.
+
+ I hope you'll enjoy Epoz. For me Epoz is the missing link to Zope.
+ If you consider using Epoz, please write me a short mail about your
+ use-case.
+
+ Bug-reports & patches are welcome. Please send them to:
+ maik.jablonski@uni-bielefeld.de
--- /dev/null
+Fix bugs...
+
+- Unicode doesn't work propertly for uTidylib. Someone an idea?
--- /dev/null
+#####
+### Epoz - a cross-browser-wysiwyg-editor for Zope
+## Copyright (C) 2005 Maik Jablonski (maik.jablonski@uni-bielefeld.de)
+#
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+## WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+### FOR A PARTICULAR PURPOSE.
+####
+
+import re
+import urlparse
+import cgi
+
+# try to import mxTidy as default
+try:
+ from mx import Tidy
+ mxTidyIsAvailable = 1
+except:
+ mxTidyIsAvailable = 0
+
+# try to import uTidylib as fallback
+try:
+ import tidy
+ uTidyIsAvailable = 1
+except ImportError:
+ uTidyIsAvailable = 0
+
+import Globals
+from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+from App.ImageFile import ImageFile
+
+# Regexp for snipping the body of a document
+HTML_BODY = re.compile('<body[^>]*?>(.*)</body[^>]*?>', re.DOTALL|re.IGNORECASE)
+MSO_CLASS = re.compile(r'<(\w+)\W+(class="Mso.*?")>', re.IGNORECASE)
+EPOZ_SCRIPT = re.compile(r'<epoz:script (style="[^"]*")? ?')
+
+misc_ = {
+ # The Format-Controls
+'epoz_script_main.js':ImageFile('epoz/epoz_core/epoz_script_main.js.dtml', globals()),
+
+ # Rendering of the widget
+'epoz_script_widget.js':ImageFile('epoz/epoz_core/epoz_script_widget.js.dtml', globals()),
+
+ # Browser-detection
+'epoz_script_detect.js':ImageFile('epoz/epoz_core/epoz_script_detect.js.dtml', globals()),
+
+ # Code for the color-selection-popup
+'epoz_script_color.html':ImageFile('epoz/epoz_core/epoz_script_color.html.dtml', globals()),
+
+ # Code for the table-popup
+'epoz_script_table.html':ImageFile('epoz/epoz_core/epoz_script_table.html.dtml', globals()),
+
+ # The XMLRPC-handler
+'vcXMLRPC.js':ImageFile('epoz/epoz_core/vcXMLRPC.js.dtml', globals()),
+
+# Multi-Epoz
+'epoz_redirect.js':ImageFile('epoz/epoz_core/epoz_redirect.js.dtml', globals()),
+'epoz_iframe_trigger.js':ImageFile('epoz/epoz_core/epoz_iframe_trigger.js.dtml', globals()),
+
+ # The Epoz-Language-Files
+'epoz_lang_da.js':ImageFile('epoz/epoz_i18n/epoz_lang_da.js.dtml', globals()),
+'epoz_lang_de.js':ImageFile('epoz/epoz_i18n/epoz_lang_de.js.dtml', globals()),
+'epoz_lang_en.js':ImageFile('epoz/epoz_i18n/epoz_lang_en.js.dtml', globals()),
+'epoz_lang_es.js':ImageFile('epoz/epoz_i18n/epoz_lang_es.js.dtml', globals()),
+'epoz_lang_fi.js':ImageFile('epoz/epoz_i18n/epoz_lang_fi.js.dtml', globals()),
+'epoz_lang_fr.js':ImageFile('epoz/epoz_i18n/epoz_lang_fr.js.dtml', globals()),
+'epoz_lang_hu.js':ImageFile('epoz/epoz_i18n/epoz_lang_hu.js.dtml', globals()),
+'epoz_lang_it.js':ImageFile('epoz/epoz_i18n/epoz_lang_it.js.dtml', globals()),
+'epoz_lang_nl.js':ImageFile('epoz/epoz_i18n/epoz_lang_nl.js.dtml', globals()),
+'epoz_lang_no.js':ImageFile('epoz/epoz_i18n/epoz_lang_no.js.dtml', globals()),
+'epoz_lang_pl.js':ImageFile('epoz/epoz_i18n/epoz_lang_pl.js.dtml', globals()),
+'epoz_lang_pt.js':ImageFile('epoz/epoz_i18n/epoz_lang_pt.js.dtml', globals()),
+'epoz_lang_pt-br.js':ImageFile('epoz/epoz_i18n/epoz_lang_pt-br.js.dtml', globals()),
+'epoz_lang_ru.js':ImageFile('epoz/epoz_i18n/epoz_lang_ru.js.dtml', globals()),
+'epoz_lang_zh-cn.js':ImageFile('epoz/epoz_i18n/epoz_lang_zh-cn.js.dtml', globals()),
+
+# Generic language file transalted by PlacelessTranslationService (for example)
+'epoz_multilingual.js':PageTemplateFile('epoz/epoz_core/epoz_multilingual.js.pt', globals()),
+
+ # The Epoz-Buttons
+'epoz_button_anchor.gif':ImageFile('epoz/epoz_images/epoz_button_anchor.gif', globals()),
+'epoz_button_bgcolor.gif':ImageFile('epoz/epoz_images/epoz_button_bgcolor.gif', globals()),
+'epoz_button_bold.gif':ImageFile('epoz/epoz_images/epoz_button_bold.gif', globals()),
+'epoz_button_centre.gif':ImageFile('epoz/epoz_images/epoz_button_centre.gif', globals()),
+'epoz_button_hr.gif':ImageFile('epoz/epoz_images/epoz_button_hr.gif', globals()),
+'epoz_button_hyperlink.gif':ImageFile('epoz/epoz_images/epoz_button_hyperlink.gif', globals()),
+'epoz_button_image.gif':ImageFile('epoz/epoz_images/epoz_button_image.gif', globals()),
+'epoz_button_indent.gif':ImageFile('epoz/epoz_images/epoz_button_indent.gif', globals()),
+'epoz_button_italic.gif':ImageFile('epoz/epoz_images/epoz_button_italic.gif', globals()),
+'epoz_button_left_just.gif':ImageFile('epoz/epoz_images/epoz_button_left_just.gif', globals()),
+'epoz_button_list.gif':ImageFile('epoz/epoz_images/epoz_button_list.gif', globals()),
+'epoz_button_numbered_list.gif':ImageFile('epoz/epoz_images/epoz_button_numbered_list.gif', globals()),
+'epoz_button_outdent.gif':ImageFile('epoz/epoz_images/epoz_button_outdent.gif', globals()),
+'epoz_button_redo.gif':ImageFile('epoz/epoz_images/epoz_button_redo.gif', globals()),
+'epoz_button_right_just.gif':ImageFile('epoz/epoz_images/epoz_button_right_just.gif', globals()),
+'epoz_button_strikethrough.gif':ImageFile('epoz/epoz_images/epoz_button_strikethrough.gif', globals()),
+'epoz_button_subscript.gif':ImageFile('epoz/epoz_images/epoz_button_subscript.gif', globals()),
+'epoz_button_superscript.gif':ImageFile('epoz/epoz_images/epoz_button_superscript.gif', globals()),
+'epoz_button_table.gif':ImageFile('epoz/epoz_images/epoz_button_table.gif', globals()),
+'epoz_button_textcolor.gif':ImageFile('epoz/epoz_images/epoz_button_textcolor.gif', globals()),
+'epoz_button_tools.gif':ImageFile('epoz/epoz_images/epoz_button_tools.gif', globals()),
+'epoz_button_underline.gif':ImageFile('epoz/epoz_images/epoz_button_underline.gif', globals()),
+'epoz_button_undo.gif':ImageFile('epoz/epoz_images/epoz_button_undo.gif', globals()),
+'epoz_button_unformat.gif':ImageFile('epoz/epoz_images/epoz_button_unformat.gif', globals()),
+}
+
+
+def Epoz(self, name, data='', toolbox='', lang='auto',
+ path='', widget='',
+ style='width: 600px; height: 250px; border: 1px solid #000000;',
+ button='background-color: #EFEFEF; border: 1px solid #A0A0A0; cursor: pointer; margin-right: 1px; margin-bottom: 1px;',
+ css='', customcss='', charset='utf-8', pageurl=''):
+ """ Create an Epoz-Wysiwyg-Editor.
+
+ name : the name of the form-element which submits the data
+ data : the data to edit
+ toolbox : a link to a HTML-Page which delivers additional tools
+ lang: a code for the language-file (en,de,...).
+ Use auto to enable browser language detection.
+ In this case, a localization product must be installed (like PlacelessTranslationService).
+ path : path to Epoz-Javascript. Needed mainly for Plone (portal_url).
+ widget: You can specify a path to an alternative JavaScript for
+ epoz_script_widget.js
+ style : style-definition for the editor-area
+ button : style-definiton for buttons
+ css : url to a global css which should be used for rendering
+ content in editor-area
+ customcss: url to a customized css which should be used for rendering
+ content in editor-area
+ charset : charset which is edited in the editor-area
+ pageurl: the base-url for the edited page
+
+ If Epoz can't create a Rich-Text-Editor, a simple textarea is created.
+ """
+
+ if data is None:
+ data=''
+
+ js_data = data
+ data = cgi.escape(data)
+
+ # hide scripts without removing them
+ js_data = js_data.replace('<script ',
+ '<epoz:script style="display: none" ')
+ js_data = js_data.replace('</script>', '</epoz:script>')
+
+ # Quote newlines and single quotes, so the Epoz-JavaScript won't break.
+ # Needs to be a list and no dictionary, cause we need order!!!
+
+ quotes = (("\\","\\\\"), ("\n","\\n"), ("\r","\\r"), ("'","\\'"))
+
+ for item in quotes:
+ js_data = js_data.replace(item[0], item[1])
+
+ # Determine the correct path for VirtualHostMonsters & PCGI & etc.pp.
+ if not path:
+ path = "%s/misc_/Epoz/" % (self.REQUEST.get('BASEPATH1',''),)
+
+ if not pageurl:
+ pageurl = self.REQUEST.get('URL1','')
+
+ if lang == 'auto' :
+ i18n='<script language="JavaScript" type="text/javascript" src="%(path)sepoz_multilingual.js?charset=%(charset)s" charset="%(charset)s"></script>' % {'path' : path, 'charset' : charset}
+ else :
+ i18n='<script language="JavaScript" type="text/javascript" src="%sepoz_lang_en.js"></script>' % (path,)
+ if lang<>'en':
+ i18n += '<script language="JavaScript" type="text/javascript" src="%sepoz_lang_%s.js"></script>' % (path, lang)
+
+ if not widget:
+ widget = "%sepoz_script_widget.js" % path
+
+ # This is just a dummy page for test-iframe
+ # to prevent IE complaining when using Epoz via https
+ iframesrc = pageurl+'/epoz_blank_iframe.html'
+
+ # Return the HTML-Code for the Epoz-Rich-Text-Editor
+ return """
+%(i18n)s
+<script language="JavaScript" type="text/javascript" src="%(widget)s"></script>
+<script language="JavaScript" type="text/javascript" src="%(path)svcXMLRPC.js"></script>
+<script language="JavaScript" type="text/javascript" src="%(path)sepoz_script_detect.js"></script>
+<script language="JavaScript" type="text/javascript" src="%(path)sepoz_script_main.js" charset="utf-8"></script>
+<script language="JavaScript" type="text/javascript" src="%(path)sepoz_redirect.js"></script>
+<script language="JavaScript" type="text/javascript">
+<!--
+ InitIframe('%(name)s','%(js_data)s','%(path)s','%(toolbox)s','%(style)s','%(button)s','%(css)s','%(customcss)s','%(charset)s', '%(pageurl)s');
+//-->
+</script>
+<noscript><textarea name="%(name)s" style="%(style)s">%(data)s</textarea></noscript>
+""" % {
+ 'i18n': i18n,
+ 'widget': widget,
+ 'path': path,
+ 'name': name,
+ 'js_data': js_data,
+ 'toolbox': toolbox,
+ 'style': style,
+ 'button': button,
+ 'css': css,
+ 'customcss': customcss,
+ 'charset': charset,
+ 'data': data,
+ 'pageurl': pageurl,
+ 'iframesrc': iframesrc
+ }
+
+
+
+def EpozTidy(self, html, pageurl):
+ """ Take html and deliver xhtml if mxTidy is installed;
+ call EpozPostTidy for html-postprocessings before returning the result
+ """
+
+ errors = 0
+ output = html
+ errordata = ""
+
+ input = html.encode("utf-8")
+ input = EPOZ_SCRIPT.sub('<script ', input)
+ input = input.replace('</epoz:script>', '</script>')
+
+ if mxTidyIsAvailable:
+ (errors, warnings, output, errordata) = Tidy.tidy(
+ input, drop_empty_paras=1, indent_spaces=1, indent="auto",
+ output_xhtml=1, word_2000=1, wrap=79, char_encoding="utf8")
+ if errors:
+ output = html
+ elif uTidyIsAvailable:
+ parsed = tidy.parseString(
+ input, drop_empty_paras=1, indent_spaces=1, indent="auto",
+ output_xhtml=1, word_2000=1, wrap=79, char_encoding="utf8",
+ add_xml_decl=0, doctype="omit", indent_attributes=1,
+ drop_proprietary_attributes=1, bare=1, clean=1,
+ enclose_text=1, tidy_mark=0)
+ reports = parsed.get_errors()
+ all_errors = [str(x) for x in reports if x.severity != 'W']
+ errors = len(all_errors)
+ errordata = '\n'.join(all_errors)
+ if errors:
+ output = html
+ else:
+ output = str(parsed)
+
+ output = MSO_CLASS.sub(r"<\1>", output)
+ result = HTML_BODY.search(output)
+ if result:
+ output = result.group(1)
+
+ # Call External Method / PythonScript for postprocessing
+ # The script should expect two parameters:
+ # self = called context (=server)
+ # html = the htmlbody to postprocess
+ # pathname = path of edited object (maybe with template!)
+ # The script should return the new htmlbody
+
+ EpozPostTidy = getattr(self, 'EpozPostTidy', None)
+ if EpozPostTidy is not None:
+ output = EpozPostTidy(self, output, pageurl)
+
+ return (errors, output, errordata)
+
+
+def EpozGetRelativeUrl(self, pageUrl, targetUrl):
+ """ Returns relative path from targetUrl to pageUrl. """
+
+ # Just some shortcuts...
+ SCHEME, HOSTNAME, PATH, PARAMS, QUERY, FRAGMENT = range(6)
+
+ pageUnits = urlparse.urlparse(pageUrl)
+ targetUnits = urlparse.urlparse(targetUrl)
+
+ if pageUnits[:PATH] != targetUnits[:PATH]:
+ # Scheme (http) or host:port (www.comain.com) are different
+ # -> no possible relative URL
+ return targetUrl
+
+ afterPath = targetUnits[PARAMS:]
+
+ pagePath = pageUnits[PATH].split('/')
+ pagePath.reverse()
+
+ targetPath = targetUnits[PATH].split('/')
+ targetPath.reverse()
+
+ # Remove parts which are equal (['a', 'b'] ['a', 'c'] --> ['c'])
+ while (len(pagePath) > 0
+ and len(targetPath) > 0
+ and pagePath[-1] == targetPath[-1]):
+ pagePath.pop()
+ last_pop = targetPath.pop()
+ if len(pagePath) == 0 and len(targetPath) == 0:
+ # Special case: link to itself (http://foo/a http://foo/a -> a)
+ targetPath.append(last_pop)
+ if len(pagePath) == 1 and pagePath[0] == "" and len(targetPath) == 0:
+ # Special case: (http://foo/a/ http://foo/a -> ../a)
+ pagePath.append(last_pop)
+ targetPath.append(last_pop)
+
+ targetPath.reverse()
+
+ relativeUrl = ['..'] * (len(pagePath) -1)
+ relativeUrl = ('', '', '/'.join(relativeUrl + targetPath)) + tuple(afterPath)
+
+ return urlparse.urlunparse(relativeUrl)
+
+
+# Make sure the Epoz method is replaceable in the Products folder
+Epoz.__replaceable__ = Globals.REPLACEABLE
+
+# Register Epoz as global method
+# Register EpozTidy as global method for XMLRPC
+# Register EpozGetRelativeUrl as global method
+# Register epoz_blank_iframe.html as global PageTemplate
+
+methods = {
+'Epoz': Epoz,
+'Epoz__roles__': None,
+
+'EpozTidy': EpozTidy,
+'EpozTidy__roles__': None,
+
+'EpozGetRelativeUrl': EpozGetRelativeUrl,
+'EpozGetRelativeUrl__roles__': None,
+
+'epoz_blank_iframe.html': PageTemplateFile('epoz/epoz_core/epoz_blank_iframe.html.pt', globals()),
+'epoz_blank_iframe.html__roles__': None,
+}
+
+
+# And now try to register Epoz for CMF/Plone
+
+try:
+ from Products.CMFCore.DirectoryView import registerDirectory
+
+ global cmfepoz_globals
+ cmfepoz_globals=globals()
+
+ def initialize(context):
+ registerDirectory('epoz', cmfepoz_globals)
+except:
+ pass
+
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+xmlns:metal="http://xml.zope.org/namespaces/metal">
+<head>
+<base tal:attributes="href python: request.get('pageurl',here.absolute_url())" />
+<meta http-equiv="Content-Type"
+ tal:define="dummy python:request.RESPONSE.setHeader('Content-Type', 'text/html;; charset=%s' % request.get('charset','utf-8'))"
+ tal:attributes="content python: 'text/html;; charset=%s' % request.get('charset','utf-8')" />
+<style media="all" type="text/css">
+<!--
+ a[name] {
+ border:1px solid grey;
+ background: lightgrey url(misc_/Epoz/epoz_button_anchor.gif) -2px -3px no-repeat;
+ padding: 1px 0px 1px 20px;
+ margin: 5px;
+ }
+
+ a[name]:after {
+ content: attr(name);
+ }
+-->
+</style>
+<style tal:condition="python: request.get('css')" type="text/css" media="all"
+ tal:content="string:@import url(${request/css});"></style>
+<style tal:condition="python: request.get('customcss')" type="text/css" media="all"
+ tal:content="string:@import url(${request/customcss});"></style>
+<script language="javascript" type="text/javascript" src="misc_/Epoz/epoz_script_detect.js"></script>
+<script language="javascript" type="text/javascript" src="misc_/Epoz/epoz_iframe_trigger.js"></script>
+</head>
+<body class="visualFontSizeCorrection" contentEditable="true" style="height:100%">
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+var IFramePrefix = "Iframe_";
+var IFramePrefixLength = IFramePrefix.length;
+var DocPrefix = "doc_";
+var DocPrefixLength = DocPrefix.length;
+
+
+function raiseEpozRedirect() {
+ docid = document.id;
+ if (!docid) return; // single mode
+ docid = document.id.slice(DocPrefixLength);
+ frameId = IFramePrefix + docid;
+ iframe = window.parent.document.getElementById(frameId);
+ if (iframe)
+ raiseEvent(iframe, "click");
+}
+
+function raiseEvent(ob, eventName) {
+ if (browser.isIE55 || browser.isIE6up) {
+ eventName = "on" + eventName;
+ ob.fireEvent(eventName);
+ }
+ else if (browser.isGecko) {
+ event = document.createEvent("MouseEvents");
+ event.initEvent(eventName, true, true);
+ ob.dispatchEvent(event);
+ }
+
+}
+
+function addMouseDownListener() {
+ if (browser.isIE55 || browser.isIE6up) {
+ document.attachEvent("onmousedown", raiseEpozRedirect);
+ }
+ else if (browser.isGecko) {
+ document.addEventListener("mousedown", raiseEpozRedirect, false);
+ }
+}
+
+window.onload = addMouseDownListener;
--- /dev/null
+[default]
+cache=HTTPCache
--- /dev/null
+var EpozLang=[];
+<tal:block define="messages python:[
+ 'Normal'
+, 'Paragraph'
+, 'Heading1'
+, 'Heading2'
+, 'Heading3'
+, 'Heading4'
+, 'Heading5'
+, 'Heading6'
+, 'Formatted'
+, 'Bold'
+, 'Italic'
+, 'Underline'
+, 'Strikethrough'
+, 'Subscript'
+, 'Superscript'
+, 'RemoveFormat'
+, 'TextColor'
+, 'BackColor'
+, 'AlignLeft'
+, 'Center'
+, 'AlignRight'
+, 'OrderedList'
+, 'UnorderedList'
+, 'Outdent'
+, 'Indent'
+, 'InsertLink'
+, 'InsertAnchor'
+, 'InsertImage'
+, 'InsertRule'
+, 'InsertTable'
+, 'Toolbox'
+, 'Undo'
+, 'Redo'
+, 'EnterLinkURL'
+, 'EnterAnchorName'
+, 'EnterImageURL'
+, 'EnterTableRows'
+, 'EnterTableColumns'
+, 'EnterTableBorder'
+, 'TableWithHead'
+, 'TableWithoutHead'
+, 'HTML'
+, 'TidyStart'
+, 'TidyStop'
+, 'TidyError'
+] ;
+charset request/form/charset;
+dummy python:request.RESPONSE.setHeader('Content-Type', 'text/javascript;;charset=' + charset)
+"
+i18n:domain="epoz"
+>
+<tal:block repeat="m messages">EpozLang["<tal:block replace="m" />"]="<tal:block content="m" i18n:translate="" tal:omit-tag="" />";</tal:block>
+</tal:block>
\ No newline at end of file
--- /dev/null
+[default]
+cache=HTTPCache
--- /dev/null
+// This script allow to use several Epoz WYSIWYG fields.
+// Copyright (C) 2005 Benoît PIN <mailto:pin@cri.ensmp.fr>
+
+var IFramePrefix = "Iframe_";
+var IFramePrefixLength = IFramePrefix.length;
+var DocPrefix = "doc_";
+var DocPrefixLength = DocPrefix.length;
+var CheckBoxPrefix = "CB_";
+var CheckBoxPrefixLength = CheckBoxPrefix.length;
+var ToolBarPrefix = "ToolBar_";
+var ToolBarPrefixLength = ToolBarPrefix.length;
+
+
+function redirectEpoz(iframe) {
+ if(EpozElement) {
+ if (EpozElement == iframe)
+ return;
+ changeBorderStyle(EpozElement, "dashed");
+ unwrapEpozVariables();
+ }
+
+ // update Epoz variables
+ wrapEpozVariables(iframe);
+
+ //cosmetic
+ changeBorderStyle(EpozElement, "solid");
+ EpozElement.contentWindow.focus();
+}
+
+
+function wrapEpozVariables(iframe) {
+ try {
+ fieldId = iframe.contentWindow.document.id.slice(DocPrefixLength);
+ }
+ catch (e) {
+ // maybe not an epoz iframe
+ return false;
+ }
+
+ iframe.id = Epoz ;
+ EpozElement=iframe;
+ EpozTextArea = document.getElementById(fieldId);
+ toolBar = document.getElementById(ToolBarPrefix + fieldId);
+ toolBar.id = "EpozToolbar";
+ checkBox = document.getElementById(CheckBoxPrefix + fieldId);
+ checkBox.id = "EpozViewMode";
+ return true;
+}
+
+
+function unwrapEpozVariables() {
+ if (!EpozElement) // no redirection happens yet.
+ return;
+ fieldId = EpozElement.contentWindow.document.id.slice(DocPrefixLength);
+
+ EpozElement.id = IFramePrefix + fieldId;
+ toolBar = document.getElementById("EpozToolbar");
+ toolBar.id = ToolBarPrefix + fieldId;
+ checkBox = document.getElementById("EpozViewMode");
+ checkBox.id = CheckBoxPrefix + fieldId;
+}
+
+
+
+// Initialization functions
+
+if (!formDatas) {
+ var formDatas = new Array();
+}
+
+function InitIframe(name, data, path, toolbox, style, button, css, customcss, charset, pageurl) {
+ form_name = name;
+ form_data = data;
+ form_path = path;
+ form_toolbox = toolbox;
+ form_area_style = style;
+ form_button_style = button;
+ form_css = css;
+ form_customcss = customcss;
+ form_charset = charset;
+ form_pageurl = pageurl;
+
+ var richText;
+
+ if (browser.isIE55 || browser.isIE6up) {
+ // Mac-IE doesn't support RichText-Edit at the moment
+ if (browser.isMac) {
+ CreateTextarea();
+ richText = false;
+ } else {
+ CreateEpoz();
+ richText = true;
+ }
+ }
+ else if (browser.isGecko) {
+ //check to see if midas is enabled
+ try {
+ // Just a few cleanups for Mozilla
+
+ form_data = form_data.replace(/<strong>/ig,'<b>');
+ form_data = form_data.replace(/<strong(\s[^>]*)>/ig,'<b$1>');
+ form_data = form_data.replace(/<\/strong>/ig,'</b>');
+
+ form_data = form_data.replace(/<em>/ig,'<i>');
+ form_data = form_data.replace(/<em(\s[^>]*)>/ig,'<i$1>');
+ form_data = form_data.replace(/<\/em>/ig,'</i>');
+
+ CreateEpoz();
+ richText = true;
+ } catch (e) {
+ CreateTextarea();
+ richText = false;
+ }
+ }
+ else {
+ CreateTextarea();
+ richText = false;
+ }
+
+ if (richText) {
+ // change iframe id
+ formDatas[name] = form_data;
+ var iframe = document.getElementById(Epoz);
+ iframe.id = IFramePrefix + name;
+
+ // change EpozToolbar id
+ var toolBar = document.getElementById("EpozToolbar");
+ toolBar.id = ToolBarPrefix + name;
+
+ // Retrieve the switch HTML mode checkbox and change id and onclick function.
+ nodes = iframe.parentNode.nextSibling.nextSibling.childNodes;
+ var i;
+ for (i=0 ; i<nodes.length ; i++ ) {
+ if (nodes[i].nodeType == 1 && nodes[i].nodeName == 'INPUT')
+ break;
+ }
+ var checkbox = nodes[i];
+ checkbox.id = CheckBoxPrefix + name;
+
+ changeBorderStyle(iframe, "dashed");
+ }
+}
+
+
+
+function HandleEpozRedirect() {
+ if (browser.isIE55 || browser.isIE6up) {
+ iframe = event.srcElement;
+ }
+ else if (browser.isGecko) {
+ iframe = this;
+ }
+ redirectEpoz(iframe);
+}
+
+function redirectAndSwitchViewMode(checkbox) {
+ if (checkbox.id != "EpozViewMode") { // Otherwise, EpozElement already targets the good field.
+ var iframe = document.getElementById(IFramePrefix + checkbox.id.slice(CheckBoxPrefixLength));
+ redirectEpoz(iframe);
+ }
+ SwitchViewMode(checkbox.checked);
+}
+
+
+// cosmetics
+function changeBorderStyle(ob, borderStyle) {
+ s = ob.style;
+ s.borderBottomStyle = borderStyle;
+ s.borderLeftStyle = borderStyle;
+ s.borderRightStyle = borderStyle;
+ s.borderTopStyle = borderStyle;
+}
+
+// « overloads »
+
+function InitDocument(iframe) {
+ fieldId = iframe.id.slice(IFramePrefixLength);
+ var data = formDatas[fieldId];
+ delete formDatas[fieldId];
+ ta = document.getElementById(fieldId);
+ iframe.contentWindow.document.body.innerHTML = data;
+ ta.value = data;
+ iframe.contentWindow.document.id = DocPrefix + fieldId;
+ addListener(iframe, "click", HandleEpozRedirect);
+ form = retrieveForm(ta);
+ form.onsubmit=SyncEpoz;
+ if (browser.isGecko) {
+ scriptExpr = 'EnableDesignMode("' + iframe.id + '");';
+ window.setTimeout(scriptExpr, 10);
+ }
+}
+
+
+function SyncEpoz() {
+ if (document.getElementsByTagName)
+ var iframes = document.getElementsByTagName("IFRAME");
+ else if (document.all)
+ var iframes = document.all.tags("IFRAME");
+
+
+ for (var i=0;i<iframes.length;i++) {
+
+ unwrapEpozVariables();
+ if(!wrapEpozVariables(iframes[i]))
+ continue;
+
+ var html = TidyHTML(GetHTML());
+
+ // strip trailing whitespace
+ html = (html.replace(/^\s*/,'')).replace(/\s*$/,'');
+
+ // remove single br left by Firefox / Mozilla
+ if (html=="<br />" || html=="<br>" || html=="<p></p>") {
+ html = "";
+ }
+ form_name = EpozElement.contentWindow.document.id.slice(DocPrefixLength);
+ document.getElementById(form_name).value = html;
+ }
+
+}
+
+function EnableDesignMode(iframeId) {
+ iframe = document.getElementById(iframeId);
+ try {
+ iframe.contentDocument.designMode = "on";
+ iframe.contentWindow.document.addEventListener("keypress", HandleKeyboardEvent, true);
+ } catch (e) {
+ scriptExpr = 'EnableDesignMode("' + iframeId + '");';
+ setTimeout(scriptExpr, 10);
+ }
+}
+
+
+
+//utils
+
+function retrieveForm(baseOb){
+ var pn = baseOb.parentNode;
+
+ while (pn != document) {
+ if (pn.nodeName == 'FORM')
+ break;
+ else {
+ pn = pn.parentNode;
+ }
+ }
+ return pn;
+}
+
+
+function addListener(ob, eventName, functionReference){
+ if (browser.isIE55 || browser.isIE6up) {
+ eventName = "on" + eventName;
+ ob.attachEvent(eventName, functionReference);
+ }
+ else if (browser.isGecko) {
+ ob.addEventListener(eventName, functionReference, false);
+ }
+
+}
\ No newline at end of file
--- /dev/null
+[default]
+cache=HTTPCache
--- /dev/null
+<html>
+<head>
+
+<title>Epoz</title>
+
+<script type="text/javascript">
+
+function InitColorPalette() {
+ if (document.getElementsByTagName)
+ var x = document.getElementsByTagName('TD');
+ else if (document.all)
+ var x = document.all.tags('TD');
+ for (var i=0;i<x.length;i++) {
+ x[i].onmouseover = over;
+ x[i].onmouseout = out;
+ x[i].onclick = click;
+ }
+}
+
+function over() {
+ this.style.border='1px dotted white';
+}
+
+function out() {
+ this.style.border='1px solid gray';
+}
+
+function click() {
+ window.opener.SetColor(this.id);
+ window.close();
+}
+</script>
+</head>
+
+<body bgcolor="white" onLoad="InitColorPalette(); this.focus();">
+
+<table border="1" cellpadding="1" cellspacing="1">
+<tr>
+<td id="#FFFFFF" bgcolor="#FFFFFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFCCCC" bgcolor="#FFCCCC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFCC99" bgcolor="#FFCC99" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFFF99" bgcolor="#FFFF99" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFFFCC" bgcolor="#FFFFCC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#99FF99" bgcolor="#99FF99" width="20" height="20"><img width="1" height="1"></td>
+<td id="#99FFFF" bgcolor="#99FFFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CCFFFF" bgcolor="#CCFFFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CCCCFF" bgcolor="#CCCCFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFCCFF" bgcolor="#FFCCFF" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+<tr>
+<td id="#CCCCCC" bgcolor="#CCCCCC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FF6666" bgcolor="#FF6666" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FF9966" bgcolor="#FF9966" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFFF66" bgcolor="#FFFF66" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFFF33" bgcolor="#FFFF33" width="20" height="20"><img width="1" height="1"></td>
+<td id="#66FF99" bgcolor="#66FF99" width="20" height="20"><img width="1" height="1"></td>
+<td id="#33FFFF" bgcolor="#33FFFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#66FFFF" bgcolor="#66FFFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#9999FF" bgcolor="#9999FF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FF99FF" bgcolor="#FF99FF" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+<tr>
+<td id="#C0C0C0" bgcolor="#C0C0C0" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FF0000" bgcolor="#FF0000" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FF9900" bgcolor="#FF9900" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFCC66" bgcolor="#FFCC66" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFFF00" bgcolor="#FFFF00" width="20" height="20"><img width="1" height="1"></td>
+<td id="#33FF33" bgcolor="#33FF33" width="20" height="20"><img width="1" height="1"></td>
+<td id="#66CCCC" bgcolor="#66CCCC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#33CCFF" bgcolor="#33CCFF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#6666CC" bgcolor="#6666CC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CC66CC" bgcolor="#CC66CC" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+<tr>
+<td id="#999999" bgcolor="#999999" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CC0000" bgcolor="#CC0000" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FF6600" bgcolor="#FF6600" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFCC33" bgcolor="#FFCC33" width="20" height="20"><img width="1" height="1"></td>
+<td id="#FFCC00" bgcolor="#FFCC00" width="20" height="20"><img width="1" height="1"></td>
+<td id="#33CC00" bgcolor="#33CC00" width="20" height="20"><img width="1" height="1"></td>
+<td id="#00CCCC" bgcolor="#00CCCC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#3366FF" bgcolor="#3366FF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#6633FF" bgcolor="#6633FF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CC33CC" bgcolor="#CC33CC" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+<tr>
+<td id="#666666" bgcolor="#666666" width="20" height="20"><img width="1" height="1"></td>
+<td id="#990000" bgcolor="#990000" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CC6600" bgcolor="#CC6600" width="20" height="20"><img width="1" height="1"></td>
+<td id="#CC9933" bgcolor="#CC9933" width="20" height="20"><img width="1" height="1"></td>
+<td id="#999900" bgcolor="#999900" width="20" height="20"><img width="1" height="1"></td>
+<td id="#009900" bgcolor="#009900" width="20" height="20"><img width="1" height="1"></td>
+<td id="#339999" bgcolor="#339999" width="20" height="20"><img width="1" height="1"></td>
+<td id="#3333FF" bgcolor="#3333FF" width="20" height="20"><img width="1" height="1"></td>
+<td id="#6600CC" bgcolor="#6600CC" width="20" height="20"><img width="1" height="1"></td>
+<td id="#993399" bgcolor="#993399" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+<tr>
+<td id="#333333" bgcolor="#333333" width="20" height="20"><img width="1" height="1"></td>
+<td id="#660000" bgcolor="#660000" width="20" height="20"><img width="1" height="1"></td>
+<td id="#993300" bgcolor="#993300" width="20" height="20"><img width="1" height="1"></td>
+<td id="#996633" bgcolor="#996633" width="20" height="20"><img width="1" height="1"></td>
+<td id="#666600" bgcolor="#666600" width="20" height="20"><img width="1" height="1"></td>
+<td id="#006600" bgcolor="#006600" width="20" height="20"><img width="1" height="1"></td>
+<td id="#336666" bgcolor="#336666" width="20" height="20"><img width="1" height="1"></td>
+<td id="#000099" bgcolor="#000099" width="20" height="20"><img width="1" height="1"></td>
+<td id="#333399" bgcolor="#333399" width="20" height="20"><img width="1" height="1"></td>
+<td id="#663366" bgcolor="#663366" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+<tr>
+<td id="#000000" bgcolor="#000000" width="20" height="20"><img width="1" height="1"></td>
+<td id="#330000" bgcolor="#330000" width="20" height="20"><img width="1" height="1"></td>
+<td id="#663300" bgcolor="#663300" width="20" height="20"><img width="1" height="1"></td>
+<td id="#663333" bgcolor="#663333" width="20" height="20"><img width="1" height="1"></td>
+<td id="#333300" bgcolor="#333300" width="20" height="20"><img width="1" height="1"></td>
+<td id="#003300" bgcolor="#003300" width="20" height="20"><img width="1" height="1"></td>
+<td id="#003333" bgcolor="#003333" width="20" height="20"><img width="1" height="1"></td>
+<td id="#000066" bgcolor="#000066" width="20" height="20"><img width="1" height="1"></td>
+<td id="#330099" bgcolor="#330099" width="20" height="20"><img width="1" height="1"></td>
+<td id="#330033" bgcolor="#330033" width="20" height="20"><img width="1" height="1"></td>
+</tr>
+</table>
+</body>
+</html>
--- /dev/null
+// Browser Detect v2.1.6
+// documentation: http://www.dithered.com/javascript/browser_detect/index.html
+// license: http://creativecommons.org/licenses/by/1.0/
+// code by Chris Nott (chris[at]dithered[dot]com)
+
+
+function BrowserDetect() {
+ var ua = navigator.userAgent.toLowerCase();
+
+ // browser engine name
+ this.isGecko = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
+ this.isAppleWebKit = (ua.indexOf('applewebkit') != -1);
+
+ // browser name
+ this.isKonqueror = (ua.indexOf('konqueror') != -1);
+ this.isSafari = (ua.indexOf('safari') != - 1);
+ this.isOmniweb = (ua.indexOf('omniweb') != - 1);
+ this.isOpera = (ua.indexOf('opera') != -1);
+ this.isIcab = (ua.indexOf('icab') != -1);
+ this.isAol = (ua.indexOf('aol') != -1);
+ this.isIE = (ua.indexOf('msie') != -1 && !this.isOpera && (ua.indexOf('webtv') == -1) );
+ this.isMozilla = (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
+ this.isFirebird = (ua.indexOf('firebird/') != -1);
+ this.isNS = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && !this.isOpera && !this.isSafari && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
+
+ // spoofing and compatible browsers
+ this.isIECompatible = ( (ua.indexOf('msie') != -1) && !this.isIE);
+ this.isNSCompatible = ( (ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);
+
+ // rendering engine versions
+ this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
+ this.equivalentMozilla = ( (this.isGecko) ? parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) ) : -1 );
+ this.appleWebKitVersion = ( (this.isAppleWebKit) ? parseFloat( ua.substring( ua.indexOf('applewebkit/') + 12) ) : -1 );
+
+ // browser version
+ this.versionMinor = parseFloat(navigator.appVersion);
+
+ // correct version number
+ if (this.isGecko && !this.isMozilla) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('/', ua.indexOf('gecko/') + 6) + 1 ) );
+ }
+ else if (this.isMozilla) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) );
+ }
+ else if (this.isIE && this.versionMinor >= 4) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
+ }
+ else if (this.isKonqueror) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
+ }
+ else if (this.isSafari) {
+ this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('safari/') + 7 ) );
+ }
+ else if (this.isOmniweb) {
+ this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('omniweb/') + 8 ) );
+ }
+ else if (this.isOpera) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera') + 6 ) );
+ }
+ else if (this.isIcab) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab') + 5 ) );
+ }
+
+ this.versionMajor = parseInt(this.versionMinor);
+
+ // dom support
+ this.isDOM1 = (document.getElementById);
+ this.isDOM2Event = (document.addEventListener && document.removeEventListener);
+
+ // css compatibility mode
+ this.mode = document.compatMode ? document.compatMode : 'BackCompat';
+
+ // platform
+ this.isWin = (ua.indexOf('win') != -1);
+ this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1) );
+ this.isMac = (ua.indexOf('mac') != -1);
+ this.isUnix = (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
+ this.isLinux = (ua.indexOf('linux') != -1);
+
+ // specific browser shortcuts
+ this.isNS4x = (this.isNS && this.versionMajor == 4);
+ this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
+ this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
+ this.isNS4up = (this.isNS && this.versionMinor >= 4);
+ this.isNS6x = (this.isNS && this.versionMajor == 6);
+ this.isNS6up = (this.isNS && this.versionMajor >= 6);
+ this.isNS7x = (this.isNS && this.versionMajor == 7);
+ this.isNS7up = (this.isNS && this.versionMajor >= 7);
+
+ this.isIE4x = (this.isIE && this.versionMajor == 4);
+ this.isIE4up = (this.isIE && this.versionMajor >= 4);
+ this.isIE5x = (this.isIE && this.versionMajor == 5);
+ this.isIE55 = (this.isIE && this.versionMinor == 5.5);
+ this.isIE5up = (this.isIE && this.versionMajor >= 5);
+ this.isIE6x = (this.isIE && this.versionMajor == 6);
+ this.isIE6up = (this.isIE && this.versionMajor >= 6);
+
+ this.isIE4xMac = (this.isIE4x && this.isMac);
+}
+var browser = new BrowserDetect();
\ No newline at end of file
--- /dev/null
+[default]
+cache=HTTPCache
--- /dev/null
+//#####
+//### Epoz - a cross-browser-wysiwyg-editor for Zope
+//## Copyright (C) 2004 Maik Jablonski (maik.jablonski@uni-bielefeld.de)
+//#
+
+// Just to prevent typos when fetching the Epoz-IFrame...
+
+var Epoz = "EpozEditor";
+
+// Speed-Up-Storage for document.getElementById(Epoz);
+
+var EpozElement;
+var EpozTextArea;
+
+// Global storages
+
+var form_data; // the document-data
+var form_name; // the name of the form-element
+var form_path; // path to buttons, font-selectors, ...
+var form_toolbox; // path to optional toolbox
+var form_area_style; // css-definition for wysiwyg-area
+var form_button_style; // css-definition for buttons
+var form_css; // css-style for iframe
+var form_customcss; // customized css-style for iframe
+var form_charset; // charset for iframe
+var form_pageurl; // real url for the edited page
+
+
+// Returns the current HTML.
+
+function GetHTML(source_mode) {
+ if (source_mode == null)
+ source_mode = document.getElementById('EpozViewMode').checked;
+ if (source_mode) {
+ return EpozTextArea.value;
+ }
+ else {
+ try {
+ return EpozElement.contentWindow.document.body.innerHTML;
+ } catch (e) {
+ return EpozElement.value;
+ }
+ }
+}
+
+// Just a XMLRPC to a web-service to clean up the html
+
+function TidyHTML(html) {
+ window.status = EpozLang["TidyStart"];
+ try {
+ // Call EpozTidy one step above the given pageurl.
+ // This should avoid some problems with VHM & PageTemplates etc.
+ xmlrpchost = form_pageurl + "/..";
+ result = XMLRPC.call(xmlrpchost, "EpozTidy", html, form_pageurl);
+
+ errors = result[0];
+ output = result[1];
+ errordata = result[2];
+
+ if (errors != 0) {
+ window.status = EpozLang["TidyError"];
+ alert(errordata);
+ }
+ else {
+ window.status = EpozLang["TidyStop"];
+ }
+ return (output);
+ } catch (e) {
+ return (html);
+ }
+}
+
+// -------------------------------------------------------------
+// Here are the definitions for the control-and-format-functions
+
+// Format text with RichText-Controls
+
+function FormatText(command, option) {
+ EpozElement.contentWindow.focus();
+
+ // Mozilla inserts css-styles per default
+
+ if (browser.isGecko) {
+ EpozElement.contentWindow.document.execCommand('useCSS',false, true);
+ }
+
+ EpozElement.contentWindow.document.execCommand(command, false, option);
+}
+
+
+// Insert arbitrary HTML at current selection
+
+function InsertHTML(html) {
+
+ EpozElement.contentWindow.focus();
+
+ if (browser.isIE5up) {
+ selection = EpozElement.contentWindow.document.selection;
+ range = selection.createRange();
+ try {
+ range.pasteHTML(html);
+ } catch (e) {
+ // catch error when range is evil for IE
+ }
+ } else {
+ selection = EpozElement.contentWindow.window.getSelection();
+ EpozElement.contentWindow.focus();
+ if (selection) {
+ range = selection.getRangeAt(0);
+ } else {
+ range = EpozElement.contentWindow.document.createRange();
+ }
+
+ var fragment = EpozElement.contentWindow.document.createDocumentFragment();
+ var div = EpozElement.contentWindow.document.createElement("div");
+ div.innerHTML = html;
+
+ while (div.firstChild) {
+ fragment.appendChild(div.firstChild);
+ }
+
+ selection.removeAllRanges();
+ range.deleteContents();
+
+ var node = range.startContainer;
+ var pos = range.startOffset;
+
+ switch (node.nodeType) {
+ case 3:
+ if (fragment.nodeType == 3) {
+ node.insertData(pos, fragment.data);
+ range.setEnd(node, pos + fragment.length);
+ range.setStart(node, pos + fragment.length);
+ } else {
+ node = node.splitText(pos);
+ node.parentNode.insertBefore(fragment, node);
+ range.setEnd(node, pos + fragment.length);
+ range.setStart(node, pos + fragment.length);
+ }
+ break;
+
+ case 1:
+ node = node.childNodes[pos];
+ node.parentNode.insertBefore(fragment, node);
+ range.setEnd(node, pos + fragment.length);
+ range.setStart(node, pos + fragment.length);
+ break;
+ }
+ selection.addRange(range);
+ }
+}
+
+
+// Create an anchor - no browser supports this directly
+
+function CreateAnchor(name) {
+ name = prompt(EpozLang["EnterAnchorName"], "");
+ if (name) {
+ anchorhtml = '<a name="' + name + '" title="' + name + '"></a>';
+ InsertHTML(anchorhtml);
+ }
+}
+
+
+// Create a Hyperlink - IE has its own implementation
+
+function CreateLink(URL) {
+ if (browser.isIE5up == false && ((URL == null) || (URL == ""))) {
+ URL = prompt(EpozLang["EnterLinkURL"], "");
+
+ if ((URL != null) && (URL != "")) {
+ EpozElement.contentWindow.document.execCommand("CreateLink",false,URL)
+ } else {
+ EpozElement.contentWindow.document.execCommand("Unlink",false, "")
+ }
+ } else {
+ EpozElement.contentWindow.document.execCommand("CreateLink",false,URL)
+ }
+}
+
+
+// Insert image via a URL
+
+function CreateImage(URL) {
+ if ((URL == null) || (URL == "")) {
+ URL = prompt(EpozLang["EnterImageURL"], "");
+ }
+ if ((URL != null) && (URL != "")) {
+ EpozElement.contentWindow.focus()
+ EpozElement.contentWindow.document.execCommand('InsertImage', false, URL);
+ }
+}
+
+
+// Creates a simple table
+
+function CreateTable(rows, cols, border, head) {
+ rows = parseInt(rows);
+ cols = parseInt(cols);
+
+ if ((rows > 0) && (cols > 0)) {
+ table = ' <table border="' + border + '">\n';
+
+ for (var i=0; i < rows; i++) {
+ table = table + " <tr>\n";
+ for (var j=0; j < cols; j++) {
+ if(i==0 && head=="1") {
+ table += " <th>#</th>\n";
+ } else {
+ table += " <td>#</td>\n";
+ }
+ }
+ table += " </tr>\n";
+ }
+ table += " </table>\n";
+ InsertHTML(table);
+ }
+ EpozElement.contentWindow.focus()
+}
+
+
+// Sets selected formats
+
+function SelectFormat(selectname)
+{
+ // First one is only a label
+ if (selectname.selectedIndex != 0) {
+ EpozElement.contentWindow.document.execCommand(selectname.id, false, selectname.options[selectname.selectedIndex].value);
+ selectname.selectedIndex = 0;
+ }
+ EpozElement.contentWindow.focus();
+}
+
+
+// Sets foreground-color
+
+function SetTextColor() {
+ EpozColorCommand='forecolor';
+ window.open(form_path+'epoz_script_color.html','EpozColor','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=220,height=220');
+}
+
+// Sets background-color
+
+function SetBackColor() {
+ EpozColorCommand='backcolor';
+ window.open(form_path+'epoz_script_color.html','EpozColor','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=220,height=220');
+}
+
+// Submit color-command to Rich-Text-Controls
+
+function SetColor(color) {
+
+ if (browser.isGecko) {
+ EpozElement.contentWindow.document.execCommand('useCSS',false, false);
+ }
+
+ EpozElement.contentWindow.document.execCommand(EpozColorCommand, false, color);
+ EpozElement.contentWindow.focus();
+}
+
+// Switch between Source- and Wysiwyg-View
+
+function SwitchViewMode(source_mode)
+{
+ var html = GetHTML(!source_mode);
+
+ if (source_mode) {
+ EpozTextArea.value=TidyHTML(html);
+ document.getElementById("EpozToolbar").style.display="none";
+ EpozTextArea.style.display="inline";
+ } else {
+ html = html.replace('<script ', '<epoz:script style="display: none" ')
+ html = html.replace('</script>', '</epoz:script>')
+
+ EpozElement.contentWindow.document.body.innerHTML = html;
+ document.getElementById("EpozToolbar").style.display="inline";
+ EpozTextArea.style.display="none";
+
+ if (browser.isGecko) {
+ EpozElement.contentDocument.designMode = "on";
+ }
+ }
+}
+
+// Keyboard-Handler for Mozilla (supports same shortcuts as IE)
+
+function HandleKeyboardEvent(event)
+{
+ if (event.ctrlKey) {
+ var key = String.fromCharCode(event.charCode).toLowerCase();
+ switch (key) {
+ case 'b': FormatText('bold',''); event.preventDefault(); break;
+ case 'i': FormatText('italic',''); event.preventDefault(); break;
+ case 'u': FormatText('underline',''); event.preventDefault(); break;
+ case 'k': CreateLink(); event.preventDefault(); break;
+ };
+ }
+}
--- /dev/null
+[default]
+cache=HTTPCache
--- /dev/null
+<html>
+<head>
+
+<title>Epoz</title>
+
+<style type="text/css">
+<!--
+* {font-family: Arial, Helvetica, Sans-Serif; font-size: 12px;}
+//-->
+</style>
+
+<script type="text/javascript">
+
+function SubmitForm() {
+ rows = document.getElementById('rows').value;
+ cols = document.getElementById('cols').value;
+ border = document.getElementById('border').value;
+ head = document.getElementById('head').value;
+ window.opener.CreateTable(rows, cols, border, head);
+ window.close();
+};
+
+</script>
+</head>
+
+<body onload="this.focus();">
+
+<form>
+<table border="0" cellspacing="4" cellpadding="4">
+<tbody>
+
+ <tr>
+ <td><script type="text/javascript">document.writeln(opener.EpozLang["EnterTableRows"]);</script></td>
+ <td><input type="text" name="rows" id="rows" size="5" value="3" /></td>
+ </tr>
+
+ <tr>
+ <td><script type="text/javascript">document.writeln(opener.EpozLang["EnterTableColumns"]);</script></td>
+ <td><input type="text" name="cols" id="cols" size="5" value="3" /></td>
+ </tr>
+
+ <tr>
+ <td><script type="text/javascript">document.writeln(opener.EpozLang["EnterTableBorder"]);</script></td>
+ <td><input type="text" name="border" id="border" size="5" value="1" /></td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <select id="head" name="head">
+ <option value="0"><script type="text/javascript">document.writeln(opener.EpozLang["TableWithoutHead"]);</script></option>
+ <option value="1"><script type="text/javascript">document.writeln(opener.EpozLang["TableWithHead"]);</script></option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <button type="button" onclick="return SubmitForm();"><script type="text/javascript">document.writeln(opener.EpozLang["InsertTable"]);</script></button>
+ </td>
+ </tr>
+
+ </tbody>
+</table>
+
+</form>
+</body>
+</html>
--- /dev/null
+//
+// Create HTML for Epoz-Editor
+//
+// Comment out the parts you don't want to be shown.
+//
+
+function CreateEpoz() {
+
+ var widget = '';
+ var spacer = '<img src="'+form_path+'epoz_button_space.gif" width="2" height="1">';
+
+ widget += '<div id="EpozToolbar">';
+
+/*
+ The select-box for formats
+*/
+
+ widget += '<select id="formatblock" onchange="SelectFormat(this);" style="margin-bottom: 2px;">';
+ widget += '<option value="">'+EpozLang["Normal"]+'</option>';
+ widget += '<option value="<p>">'+EpozLang["Paragraph"]+'</option>';
+ widget += '<option value="<h1>">'+EpozLang["Heading1"]+'</option>';
+ widget += '<option value="<h2>">'+EpozLang["Heading2"]+'</option>';
+ widget += '<option value="<h3>">'+EpozLang["Heading3"]+'</option>';
+ widget += '<option value="<h4>">'+EpozLang["Heading4"]+'</option>';
+ widget += '<option value="<h5>">'+EpozLang["Heading5"]+'</option>';
+ widget += '<option value="<h6>">'+EpozLang["Heading6"]+'</option>';
+ widget += '<option value="<pre>">'+EpozLang["Formatted"]+'</option>';
+ widget += '</select>';
+ widget += '<br />';
+
+/*
+ The font-face-buttons (bold, italic, underline)
+*/
+
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_bold.gif" width="23" height="22" alt="'+EpozLang["Bold"]+'" title="'+EpozLang["Bold"]+'" onClick="FormatText(\'bold\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_italic.gif" width="23" height="22" alt="'+EpozLang["Italic"]+'" title="'+EpozLang["Italic"]+'" onClick="FormatText(\'italic\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_underline.gif" width="23" height="22" alt="'+EpozLang["Underline"]+'" title="'+EpozLang["Underline"]+'" onClick="FormatText(\'underline\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_strikethrough.gif" width="23" height="22" alt="'+EpozLang["Strikethrough"]+'" title="'+EpozLang["Strikethrough"]+'" onClick="FormatText(\'strikethrough\', \'\');" />';
+ widget += spacer;
+
+/*
+ The sub-/superscript-buttons
+*/
+
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_subscript.gif" width="23" height="22" alt="'+EpozLang["Subscript"]+'" title="'+EpozLang["Subscript"]+'" onClick="FormatText(\'subscript\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_superscript.gif" width="23" height="22" alt="'+EpozLang["Superscript"]+'" title="'+EpozLang["Superscript"]+'" onClick="FormatText(\'superscript\', \'\');" />';
+ widget += spacer;
+
+/*
+ The remove-format-button
+*/
+
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_unformat.gif" width="23" height="22" alt="'+EpozLang["RemoveFormat"]+'" title="'+EpozLang["RemoveFormat"]+'" onClick="FormatText(\'removeformat\', \'\');" />';
+ widget += spacer;
+
+/*
+ The color-selections (foreground, background)
+*/
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_textcolor.gif" width="23" height="22" alt="'+EpozLang["TextColor"]+'" title="'+EpozLang["TextColor"]+'" onClick="SetTextColor();" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_bgcolor.gif" width="23" height="22" alt="'+EpozLang["BackColor"]+'" title="'+EpozLang["BackColor"]+'" onClick="SetBackColor();" />';
+ widget += spacer;
+
+/*
+ Alignment-controls
+*/
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_left_just.gif" width="23" height="22" alt="'+EpozLang["AlignLeft"]+'" title="'+EpozLang["AlignLeft"]+'" onClick="FormatText(\'justifyleft\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_centre.gif" width="23" height="22" alt="'+EpozLang["Center"]+'" title="'+EpozLang["Center"]+'" onClick="FormatText(\'justifycenter\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_right_just.gif" width="23" height="22" alt="'+EpozLang["AlignRight"]+'" title="'+EpozLang["AlignRight"]+'" onClick="FormatText(\'justifyright\', \'\');" />';
+ widget += spacer;
+
+/*
+ Lists and In/Outdent
+*/
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_numbered_list.gif" width="23" height="22" alt="'+EpozLang["OrderedList"]+'" title="'+EpozLang["OrderedList"]+'" onClick="FormatText(\'insertorderedlist\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_list.gif" width="23" height="22" alt="'+EpozLang["UnorderedList"]+'" title="'+EpozLang["UnorderedList"]+'" onClick="FormatText(\'insertunorderedlist\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_outdent.gif" width="23" height="22" alt="'+EpozLang["Outdent"]+'" title="'+EpozLang["Outdent"]+'" onClick="FormatText(\'outdent\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_indent.gif" width="23" height="22" alt="'+EpozLang["Indent"]+'" title="'+EpozLang["Indent"]+'" onClick="FormatText(\'indent\', \'\');" />';
+ widget += spacer;
+
+/*
+ Insert Link, Image, Rule, Table
+*/
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_hyperlink.gif" width="23" height="22" alt="'+EpozLang["InsertLink"]+'" title="'+EpozLang["InsertLink"]+'" onClick="CreateLink();" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_anchor.gif" width="23" height="22" alt="'+EpozLang["InsertAnchor"]+'" title="'+EpozLang["InsertAnchor"]+'" onClick="CreateAnchor();" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_image.gif" width="23" height="22" alt="'+EpozLang["InsertImage"]+'" title="'+EpozLang["InsertImage"]+'" onClick="CreateImage();" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_hr.gif" width="23" height="22" alt="'+EpozLang["InsertRule"]+'" title="'+EpozLang["InsertRule"]+'" onClick="FormatText(\'inserthorizontalrule\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_table.gif" width="23" height="22" alt="'+EpozLang["InsertTable"]+'" title="'+EpozLang["InsertTable"]+'" onClick="window.open(\''+form_path+'epoz_script_table.html\',\'EpozTable\',\'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=220,height=220\');" />';
+
+/*
+ The optional toolbox
+*/
+ if ((form_toolbox != null) && (form_toolbox != "")) {
+ widget += spacer;
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_tools.gif" width="23" height="22" alt="'+EpozLang["Toolbox"]+'" title="'+EpozLang["Toolbox"]+'"" onClick="window.open(\''+form_toolbox+'\',\'EpozToolbox\',\'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=400,height=400\');" />';
+ }
+
+ widget += spacer;
+
+/*
+ Undo & Redo
+*/
+
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_undo.gif" width="23" height="22" alt="'+EpozLang["Undo"]+'" title="'+EpozLang["Undo"]+'" onClick="FormatText(\'undo\', \'\');" />';
+ widget += '<img style="'+form_button_style+'" src="'+form_path+'epoz_button_redo.gif" width="23" height="22" alt="'+EpozLang["Redo"]+'" title="'+EpozLang["Redo"]+'" onClick="FormatText(\'redo\', \'\');" />';
+
+/*
+ Don't remove!!! And better not touch...;)
+*/
+
+ widget += '\n<br />\n';
+ widget += '<iframe src="'+form_pageurl+'/epoz_blank_iframe.html?charset='+form_charset+'&css='+form_css+'&customcss='+form_customcss+'&pageurl='+form_pageurl+'" frameborder="0" id="' + Epoz + '" style="' + form_area_style + '" onload="InitDocument(this);"></iframe>';
+ widget += '</div>';
+
+ widget += '<textarea style="display: none; ' + form_area_style + '" id="' + form_name + '" name="' + form_name + '" value=""></textarea>';
+ widget += '<div style="margin: 0px;"><input id="EpozViewMode" style="margin: 0px; width: 10px; height: 10px;" type="checkbox" onclick="redirectAndSwitchViewMode(this);" /> <span style="font-size: 10px;">' + EpozLang["HTML"] + '</span></div>';
+
+ document.writeln(widget);
+}
+
+
+// Create a default-textbox for browsers without Rich-Text-Features
+
+function CreateTextarea() {
+ document.writeln('<textarea name="' + form_name + '" id="' + Epoz + '" style="' + form_area_style + '">'+form_data+'</textarea>');
+}
--- /dev/null
+//
+// Copyright (C) 2000, 2001, 2002 Virtual Cowboys info@virtualcowboys.nl
+//
+// Author: Ruben Daniels <ruben@virtualcowboys.nl>
+// Version: 0.91
+// Date: 29-08-2001
+// Site: www.vcdn.org/Public/XMLRPC/
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Object.prototype.toXMLRPC = function(){
+ var wo = this.valueOf();
+
+ if(wo.toXMLRPC == this.toXMLRPC){
+ retstr = "<struct>";
+
+ for(prop in this){
+ if(typeof wo[prop] != "function"){
+ retstr += "<member><name>" + prop + "</name><value>" + XMLRPC.getXML(wo[prop]) + "</value></member>";
+ }
+ }
+ retstr += "</struct>";
+
+ return retstr;
+ }
+ else{
+ return wo.toXMLRPC();
+ }
+}
+
+String.prototype.toXMLRPC = function(){
+ //<![CDATA[***your text here***]]>
+ return "<string><![CDATA[" + this.replace(/\]\]/g, "] ]") + "]]></string>";//.replace(/</g, "<").replace(/&/g, "&")
+}
+
+Number.prototype.toXMLRPC = function(){
+ if(this == parseInt(this)){
+ return "<int>" + this + "</int>";
+ }
+ else if(this == parseFloat(this)){
+ return "<double>" + this + "</double>";
+ }
+ else{
+ return false.toXMLRPC();
+ }
+}
+
+Boolean.prototype.toXMLRPC = function(){
+ if(this) return "<boolean>1</boolean>";
+ else return "<boolean>0</boolean>";
+}
+
+Date.prototype.toXMLRPC = function(){
+ //Could build in possibilities to express dates
+ //in weeks or other iso8601 possibillities
+ //hmmmm ????
+ //19980717T14:08:55
+ return "<dateTime.iso8601>" + doYear(this.getUTCYear()) + doZero(this.getMonth()) + doZero(this.getUTCDate()) + "T" + doZero(this.getHours()) + ":" + doZero(this.getMinutes()) + ":" + doZero(this.getSeconds()) + "</dateTime.iso8601>";
+
+ function doZero(nr) {
+ nr = String("0" + nr);
+ return nr.substr(nr.length-2, 2);
+ }
+
+ function doYear(year) {
+ if(year > 9999 || year < 0)
+ XMLRPC.handleError(new Error("Unsupported year: " + year));
+
+ year = String("0000" + year)
+ return year.substr(year.length-4, 4);
+ }
+}
+
+Array.prototype.toXMLRPC = function(){
+ var retstr = "<array><data>";
+ for(var i=0;i<this.length;i++){
+ retstr += "<value>" + XMLRPC.getXML(this[i]) + "</value>";
+ }
+ return retstr + "</data></array>";
+}
+
+function VirtualService(servername, oRPC){
+ this.version = '0.91';
+ this.URL = servername;
+ this.multicall = false;
+ this.autoroute = true;
+ this.onerror = null;
+
+ this.rpc = oRPC;
+ this.receive = {};
+
+ this.purge = function(receive){
+ return this.rpc.purge(this, receive);
+ }
+
+ this.revert = function(){
+ this.rpc.revert(this);
+ }
+
+ this.add = function(name, alias, receive){
+ this.rpc.validateMethodName();if(this.rpc.stop){this.rpc.stop = false;return false}
+ if(receive) this.receive[name] = receive;
+ this[(alias || name)] = new Function('var args = new Array(), i;for(i=0;i<arguments.length;i++){args.push(arguments[i]);};return this.call("' + name + '", args);');
+ return true;
+ }
+
+ //internal function for sending data
+ this.call = function(name, args){
+ var info = this.rpc.send(this.URL, name, args, this.receive[name], this.multicall, this.autoroute);
+
+ if(info){
+ if(!this.multicall) this.autoroute = info[0];
+ return info[1];
+ }
+ else{
+ if(this.onerror) this.onerror(XMLRPC.lastError);
+ return false;
+ }
+ }
+}
+
+
+XMLRPC = {
+ routeServer : "http://www.vcdn.org/cgi-bin/rpcproxy.cgi",
+ autoroute : true,
+ multicall : false,
+
+ services : {},
+ stack : {},
+ queue : new Array(),
+ timers : new Array(),
+ timeout : 30000,
+
+ ontimeout : null,
+
+ getService : function(serviceName){
+ //serviceNames cannot contain / or .
+ if(/[\/\.]/.test(serviceName)){
+ return new VirtualService(serviceName, this);
+ }
+ else if(this.services[serviceName]){
+ return this.services[serviceName];
+ }
+ else{
+ try{
+ var ct = eval(serviceName);
+ this.services[serviceName] = new ct(this);
+ }
+ catch(e){
+ return false;
+ }
+ }
+ },
+
+ purge : function(modConst, receive){
+ if(this.stack[modConst.URL].length){
+ var info = this.send(modConst.URL, "system.multicall", [this.stack[modConst.URL]], receive, false, modConst.autoroute);
+ modConst.autoroute = info[0];
+ this.revert(modConst);
+
+ if(info){
+ modConst.autoroute = info[0];
+ return info[1];
+ }
+ else{
+ if(modConst.onerror) modConst.onerror(this.lastError);
+ return false;
+ }
+ }
+ },
+
+ revert : function(modConst){
+ this.stack[modConst.URL] = new Array();
+ },
+
+ call : function(){
+ //[optional info || receive, servername,] functionname, args......
+ var args = new Array(), i, a = arguments;
+ var servername, methodname, receive, service, info, autoroute, multicall;
+
+ if(typeof a[0] == "object"){
+ receive = a[0][0];
+ servername = a[0][1].URL;
+ methodname = a[1];
+ multicall = (a[0][1].supportsMulticall && a[0][1].multicall);
+ autoroute = a[0][1].autoroute;
+ service = a[0][1];
+ }
+ else if(typeof a[0] == "function"){
+ i = 3;
+ receive = a[0];
+ servername = a[1];
+ methodname = a[2];
+ }
+ else{
+ i = 2;
+ servername = a[0];
+ methodname = a[1];
+ }
+
+ for(i=i;i<a.length;i++){
+ args.push(a[i]);
+ }
+
+ info = this.send(servername, methodname, args, receive, multicall, autoroute);
+ if(info){
+ (service || this).autoroute = info[0];
+ return info[1];
+ }
+ else{
+ if(service && service.onerror) service.onerror(this.lastError);
+ return false;
+ }
+
+ },
+
+ /***
+ * Perform typematching on 'vDunno' and return a boolean value corresponding
+ * to the result of the evaluation-match of the mask-value stated in the 2nd argument.
+ * The 2nd argument is optional (none will be treated as a 0-mask) or a sum of
+ * several masks as follows:
+ * type/s -> mask/s
+ * --------------------
+ * undefined -> 0/1 [default]
+ * number -> 2
+ * boolean -> 4
+ * string -> 8
+ * function -> 16
+ * object -> 32
+ * --------------------
+ * Examples:
+ * Want [String] only: (eqv. (typeof(vDunno) == 'string') )
+ * Soya.Common.typematch(unknown, 8)
+ * Anything else than 'undefined' acceptable:
+ * Soya.Common.typematch(unknown)
+ * Want [Number], [Boolean] or [Function]:
+ * Soya.Common.typematch(unknown, 2 + 4 + 16)
+ * Want [Number] only:
+ * Soya.Common.typematch(unknown, 2)
+ **/
+ typematch : function (vDunno, nCase){
+ var nMask;
+ switch(typeof(vDunno)){
+ case 'number' : nMask = 2; break;
+ case 'boolean' : nMask = 4; break;
+ case 'string' : nMask = 8; break;
+ case 'function': nMask = 16; break;
+ case 'object' : nMask = 32; break;
+ default : nMask = 1; break;
+ }
+ return Boolean(nMask & (nCase || 62));
+ },
+
+ getNode : function(data, tree){
+ var nc = 0;//nodeCount
+ //node = 1
+ if(data != null){
+ for(i=0;i<data.childNodes.length;i++){
+ if(data.childNodes[i].nodeType == 1){
+ if(nc == tree[0]){
+ data = data.childNodes[i];
+ if(tree.length > 1){
+ tree.shift();
+ data = this.getNode(data, tree);
+ }
+ return data;
+ }
+ nc++
+ }
+ }
+ }
+
+ return false;
+ },
+
+ toObject : function(data){
+ var ret, i;
+ switch(data.tagName){
+ case "string":
+ var s=""
+ //Mozilla has many textnodes with a size of 4096 chars each instead of one large one.
+ //They all need to be concatenated.
+ for(var j=0;j<data.childNodes.length;j++){
+ s+=new String(data.childNodes.item(j).nodeValue);
+ }
+ return s;
+ break;
+ case "int":
+ case "i4":
+ case "double":
+ return (data.firstChild) ? new Number(data.firstChild.nodeValue) : 0;
+ break;
+ case "dateTime.iso8601":
+ /*
+ Have to read the spec to be able to completely
+ parse all the possibilities in iso8601
+ 07-17-1998 14:08:55
+ 19980717T14:08:55
+ */
+
+ var sn = (isIE) ? "-" : "/";
+
+ if(/^(\d{4})(\d{2})(\d{2})T(\d{2}):(\d{2}):(\d{2})/.test(data.firstChild.nodeValue)){;//data.text)){
+ return new Date(RegExp.$2 + sn + RegExp.$3 + sn +
+ RegExp.$1 + " " + RegExp.$4 + ":" +
+ RegExp.$5 + ":" + RegExp.$6);
+ }
+ else{
+ return new Date();
+ }
+
+ break;
+ case "array":
+ data = this.getNode(data, [0]);
+
+ if(data && data.tagName == "data"){
+ ret = new Array();
+
+ var i = 0;
+ while(child = this.getNode(data, [i++])){
+ ret.push(this.toObject(child));
+ }
+
+ return ret;
+ }
+ else{
+ this.handleError(new Error("Malformed XMLRPC Message1"));
+ return false;
+ }
+ break;
+ case "struct":
+ ret = {};
+
+ var i = 0;
+ while(child = this.getNode(data, [i++])){
+ if(child.tagName == "member"){
+ ret[this.getNode(child, [0]).firstChild.nodeValue] = this.toObject(this.getNode(child, [1]));
+ }
+ else{
+ this.handleError(new Error("Malformed XMLRPC Message2"));
+ return false;
+ }
+ }
+
+ return ret;
+ break;
+ case "boolean":
+ return Boolean(isNaN(parseInt(data.firstChild.nodeValue)) ? (data.firstChild.nodeValue == "true") : parseInt(data.firstChild.nodeValue))
+
+ break;
+ case "base64":
+ return this.decodeBase64(data.firstChild.nodeValue);
+ break;
+ case "value":
+ child = this.getNode(data, [0]);
+ return (!child) ? ((data.firstChild) ? new String(data.firstChild.nodeValue) : "") : this.toObject(child);
+
+ break;
+ default:
+ this.handleError(new Error("Malformed XMLRPC Message: " + data.tagName));
+ return false;
+ break;
+ }
+ },
+
+ /*** Decode Base64 ******
+ * Original Idea & Code by thomas@saltstorm.net
+ * from Soya.Encode.Base64 [http://soya.saltstorm.net]
+ **/
+ decodeBase64 : function(sEncoded){
+ // Input must be dividable with 4.
+ if(!sEncoded || (sEncoded.length % 4) > 0)
+ return sEncoded;
+
+ /* Use NN's built-in base64 decoder if available.
+ This procedure is horribly slow running under NN4,
+ so the NN built-in equivalent comes in very handy. :) */
+
+ else if(typeof(atob) != 'undefined')
+ return atob(sEncoded);
+
+ var nBits, i, sDecoded = '';
+ var base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+ sEncoded = sEncoded.replace(/\W|=/g, '');
+
+ for(i=0; i < sEncoded.length; i += 4){
+ nBits =
+ (base64.indexOf(sEncoded.charAt(i)) & 0xff) << 18 |
+ (base64.indexOf(sEncoded.charAt(i+1)) & 0xff) << 12 |
+ (base64.indexOf(sEncoded.charAt(i+2)) & 0xff) << 6 |
+ base64.indexOf(sEncoded.charAt(i+3)) & 0xff;
+ sDecoded += String.fromCharCode(
+ (nBits & 0xff0000) >> 16, (nBits & 0xff00) >> 8, nBits & 0xff);
+ }
+
+ // not sure if the following statement behaves as supposed under
+ // all circumstances, but tests up til now says it does.
+
+ return sDecoded.substring(0, sDecoded.length -
+ ((sEncoded.charCodeAt(i - 2) == 61) ? 2 :
+ (sEncoded.charCodeAt(i - 1) == 61 ? 1 : 0)));
+ },
+
+ getObject : function(type, message){
+ if(type == "HTTP"){
+ if(isIE)
+ obj = new ActiveXObject("microsoft.XMLHTTP");
+ else if(isNS)
+ obj = new XMLHttpRequest();
+ }
+ else if(type == "XMLDOM"){
+ if(isIE){
+ obj = new ActiveXObject("microsoft.XMLDOM");
+ obj.loadXML(message)
+ }else if(isNS){
+ obj = new DOMParser();
+ obj = obj.parseFromString(message, "text/xml");
+ }
+
+ }
+ else{
+ this.handleError(new Error("Unknown Object"));
+ }
+
+ return obj;
+ },
+
+ validateMethodName : function(name){
+ /*do Checking:
+
+ The string may only contain identifier characters,
+ upper and lower-case A-Z, the numeric characters, 0-9,
+ underscore, dot, colon and slash.
+
+ */
+ if(/^[A-Za-z0-9\._\/:]+$/.test(name))
+ return true
+ else
+ this.handleError(new Error("Incorrect method name"));
+ },
+
+ getXML : function(obj){
+ if(typeof obj == "function"){
+ this.handleError(new Error("Cannot Parse functions"));
+ }else if(obj == null || obj == undefined || (typeof obj == "number" && !isFinite(obj)))
+ return false.toXMLRPC();
+ else
+ return obj.toXMLRPC();
+ },
+
+ handleError : function(e){
+ if(!this.onerror || !this.onerror(e)){
+ //alert("An error has occured: " + e.message);
+ throw e;
+ }
+ this.stop = true;
+ this.lastError = e;
+ },
+
+ cancel : function(id){
+ //You can only cancel a request when it was executed async (I think)
+ if(!this.queue[id]) return false;
+
+ this.queue[id][0].abort();
+ return true;
+ },
+
+ send : function(serverAddress, functionName, args, receive, multicall, autoroute){
+ var id, http;
+ //default is sync
+ this.validateMethodName();
+ if(this.stop){this.stop = false; return false;}
+
+ //setting up multicall
+ multicall = (multicall != null) ? multicall : this.multicall;
+
+ if(multicall){
+ if(!this.stack[serverAddress]) this.stack[serverAddress] = new Array();
+ this.stack[serverAddress].push({methodName : functionName, params : args});
+ return true;
+ }
+
+ //creating http object
+ var http = this.getObject("HTTP");
+
+ //setting some things for async/sync transfers
+ if(!receive || isNS){;
+ async = false;
+ }
+ else{
+ async = true;
+ /* The timer functionality is implemented instead of
+ the onreadystatechange event because somehow
+ the calling of this event crashed IE5.x
+ */
+ id = this.queue.push([http, receive, null, new Date()])-1;
+
+ this.queue[id][2] = new Function("var id='" + id + "';var dt = new Date(new Date().getTime() - XMLRPC.queue[id][3].getTime());diff = parseInt(dt.getSeconds()*1000 + dt.getMilliseconds());if(diff > XMLRPC.timeout){if(XMLRPC.ontimeout) XMLRPC.ontimeout(); clearInterval(XMLRPC.timers[id]);XMLRPC.cancel(id);return};if(XMLRPC.queue[id][0].readyState == 4){XMLRPC.queue[id][0].onreadystatechange = function(){};XMLRPC.receive(id);clearInterval(XMLRPC.timers[id])}");
+ this.timers[id] = setInterval("XMLRPC.queue[" + id + "][2]()", 20);
+ }
+
+ //setting up the routing
+ autoroute = (autoroute || this.autoroute);
+
+ //'active' is only set when direct sending the message has failed
+ var srv = (autoroute == "active") ? this.routeServer : serverAddress;
+
+ try{
+ http.open('POST', srv, async);
+ http.setRequestHeader("User-Agent", "vcXMLRPC v0.91 (" + navigator.userAgent + ")");
+ http.setRequestHeader("Host", srv.replace(/^https?:\/{2}([:\[\]\-\w\.]+)\/?.*/, '$1'));
+ http.setRequestHeader("Content-type", "text/xml");
+ if(autoroute == "active"){
+ http.setRequestHeader("X-Proxy-Request", serverAddress);
+ http.setRequestHeader("X-Compress-Response", "gzip");
+ }
+ }
+ catch(e){
+ if(autoroute == true){
+ //Access has been denied, Routing call.
+ autoroute = "active";
+ if(id){
+ delete this.queue[id];
+ clearInterval(this.timers[id]);
+ }
+ return this.send(serverAddress, functionName, args, receive, multicall, autoroute);
+ }
+
+ //Routing didn't work either..Throwing error
+ this.handleError(new Error("Could not sent XMLRPC Message (Reason: Access Denied on client)"));
+ if(this.stop){this.stop = false;return false}
+ }
+
+ //Construct the message
+ var message = '<?xml version="1.0"?><methodCall><methodName>' + functionName + '</methodName><params>';
+ for(i=0;i<args.length;i++){
+ message += '<param><value>' + this.getXML(args[i]) + '</value></param>';
+ }
+ message += '</params></methodCall>';
+
+ var xmldom = this.getObject('XMLDOM', message);
+ if(self.DEBUG) alert(message);
+
+ try{
+ //send message
+ http.send(xmldom);
+ }
+ catch(e){
+ //Most likely the message timed out(what happend to your internet connection?)
+ this.handleError(new Error("XMLRPC Message not Sent(Reason: " + e.message + ")"));
+ if(this.stop){this.stop = false;return false}
+ }
+
+ if(!async && receive)
+ return [autoroute, receive(this.processResult(http))];
+ else if(receive)
+ return [autoroute, id];
+ else
+ return [autoroute, this.processResult(http)];
+ },
+
+ receive : function(id){
+ //Function for handling async transfers..
+ if(this.queue[id]){
+ var data = this.processResult(this.queue[id][0]);
+ this.queue[id][1](data);
+ delete this.queue[id];
+ }
+ else{
+ this.handleError(new Error("Error while processing queue"));
+ }
+ },
+
+ processResult : function(http){
+ if(self.DEBUG) alert(http.responseText);
+ if(http.status == 200){
+ //getIncoming message
+ dom = http.responseXML;
+
+ if(dom){
+ var rpcErr, main;
+
+ //Check for XMLRPC Errors
+ rpcErr = dom.getElementsByTagName("fault");
+ if(rpcErr.length > 0){
+ rpcErr = this.toObject(rpcErr[0].firstChild);
+ this.handleError(new Error(rpcErr.faultCode, rpcErr.faultString));
+ return false
+ }
+
+ //handle method result
+ main = dom.getElementsByTagName("param");
+ if(main.length == 0) this.handleError(new Error("Malformed XMLRPC Message"));
+ data = this.toObject(this.getNode(main[0], [0]));
+
+ //handle receiving
+ if(this.onreceive) this.onreceive(data);
+ return data;
+ }
+ else{
+ this.handleError(new Error("Malformed XMLRPC Message"));
+ }
+ }
+ else{
+ this.handleError(new Error("HTTP Exception: (" + http.status + ") " + http.statusText + "\n\n" + http.responseText));
+ }
+ }
+}
+
+//Smell something
+ver = navigator.appVersion;
+app = navigator.appName;
+isNS = Boolean(navigator.productSub)
+//moz_can_do_http = (parseInt(navigator.productSub) >= 20010308)
+
+isIE = (ver.indexOf("MSIE 5") != -1 || ver.indexOf("MSIE 6") != -1) ? 1 : 0;
+isIE55 = (ver.indexOf("MSIE 5.5") != -1) ? 1 : 0;
+
+isOTHER = (!isNS && !isIE) ? 1 : 0;
+
--- /dev/null
+[default]
+cache=HTTPCache
--- /dev/null
+// Epoz-Language-File: da (Danish)
+// maik.jablonski@uni-bielefeld.de, 2003
+// Translated by overby@opentobusiness.com
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Citat';
+EpozLang["Heading1"]='Overskift 1';
+EpozLang["Heading2"]='Overskift 2';
+EpozLang["Heading3"]='Overskift 3';
+EpozLang["Heading4"]='Overskift 4';
+EpozLang["Heading5"]='Overskift 5';
+EpozLang["Heading6"]='Overskift 6';
+EpozLang["Formatted"]='Formatteret';
+
+EpozLang["Bold"]='Fed';
+EpozLang["Italic"]='Kursiv';
+EpozLang["Underline"]='Understreg';
+EpozLang["Strikethrough"]='Gennemstreg';
+
+EpozLang["Subscript"]='Sænket skrift';
+EpozLang["Superscript"]='Hævet skrift';
+
+EpozLang["RemoveFormat"]='Fjern formattering';
+
+EpozLang["TextColor"]='Skriftfarve';
+EpozLang["BackColor"]='Baggrundsfarve';
+
+EpozLang["AlignLeft"]='Venstrejusteret';
+EpozLang["Center"]='Centreret';
+EpozLang["AlignRight"]='Højrejusteret';
+
+EpozLang["OrderedList"]='Nummereret liste';
+EpozLang["UnorderedList"]='Punktliste';
+EpozLang["Outdent"]='Formindsk indrykning';
+EpozLang["Indent"]='Forøg indrykning';
+
+EpozLang["InsertLink"]='Indsæt link';
+EpozLang["InsertImage"]='Indsæt billede';
+EpozLang["InsertRule"]='Indsæt linie';
+EpozLang["InsertTable"]='Indsæt table';
+EpozLang["Toolbox"]='Værktøjskasse';
+
+EpozLang["Undo"]='Fortryd';
+EpozLang["Redo"]='Annuller fortryd';
+
+EpozLang["EnterLinkURL"]='Indsæt link adresse';
+EpozLang["EnterImageURL"]='Indsæt bille placering';
+
+EpozLang["EnterTableRows"]='Indsæt række';
+EpozLang["EnterTableColumns"]='Indsæt kolonne';
+EpozLang["EnterTableBorder"]='Kant';
+EpozLang["TableWithHead"]='Tabel med hoved';
+EpozLang["TableWithoutHead"]='Tabel uden hoved';
--- /dev/null
+// Epoz-Language-File: de (Deutsch)
+// maik.jablonski@uni-bielefeld.de, 2003
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Absatz';
+EpozLang["Heading1"]='Überschrift 1';
+EpozLang["Heading2"]='Überschrift 2';
+EpozLang["Heading3"]='Überschrift 3';
+EpozLang["Heading4"]='Überschrift 4';
+EpozLang["Heading5"]='Überschrift 5';
+EpozLang["Heading6"]='Überschrift 6';
+EpozLang["Formatted"]='Formatiert';
+
+EpozLang["Bold"]='Fett';
+EpozLang["Italic"]='Kursiv';
+EpozLang["Underline"]='Unterstrichen';
+EpozLang["Strikethrough"]='Durchgestrichen';
+
+EpozLang["Subscript"]='Tiefstellen';
+EpozLang["Superscript"]='Hochstellen';
+
+EpozLang["RemoveFormat"]='Formatierung entfernen';
+
+EpozLang["TextColor"]='Textfarbe';
+EpozLang["BackColor"]='Hintergrundfarbe';
+
+EpozLang["AlignLeft"]='Linksbündig';
+EpozLang["Center"]='Zentriert';
+EpozLang["AlignRight"]='Rechtsbündig';
+
+EpozLang["OrderedList"]='Aufzählung';
+EpozLang["UnorderedList"]='Liste';
+EpozLang["Outdent"]='Ausrücken';
+EpozLang["Indent"]='Einrücken';
+
+EpozLang["InsertLink"]='Link einfügen';
+EpozLang["InsertAnchor"]='Anker einfügen';
+EpozLang["InsertImage"]='Bild einfügen';
+EpozLang["InsertRule"]='Linie einfügen';
+EpozLang["InsertTable"]='Tabelle einfügen';
+EpozLang["Toolbox"]='Werkzeuge';
+
+EpozLang["Undo"]='Undo';
+EpozLang["Redo"]='Redo';
+
+EpozLang["EnterLinkURL"]='URL des Links eingeben';
+EpozLang["EnterAnchorName"]='Namen des Ankers eingeben';
+EpozLang["EnterImageURL"]='URL des Bildes eingeben';
+
+EpozLang["EnterTableRows"]='Anzahl der Reihen';
+EpozLang["EnterTableColumns"]='Anzahl der Spalten';
+EpozLang["EnterTableBorder"]='Randstärke';
+EpozLang["TableWithHead"]='Tabelle mit Kopf';
+EpozLang["TableWithoutHead"]='Tabelle ohne Kopf';
+
+EpozLang["HTML"]='HTML';
+
+EpozLang["TidyStart"]='HTML-Bereinigung...';
+EpozLang["TidyStop"]='HTML-Bereinigung abgeschlossen.'
+EpozLang["TidyError"]='Fehler im HTML-Quelltext.';
--- /dev/null
+// Epoz-Language-File: en (English)
+// maik.jablonski@uni-bielefeld.de, 2003
+
+// Global Epoz language-strings dictionary
+// Should be present only in "default" language file
+
+var EpozLang=[];
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Paragraph';
+EpozLang["Heading1"]='Heading 1';
+EpozLang["Heading2"]='Heading 2';
+EpozLang["Heading3"]='Heading 3';
+EpozLang["Heading4"]='Heading 4';
+EpozLang["Heading5"]='Heading 5';
+EpozLang["Heading6"]='Heading 6';
+EpozLang["Formatted"]='Formatted';
+
+EpozLang["Bold"]='Bold';
+EpozLang["Italic"]='Italic';
+EpozLang["Underline"]='Underline';
+EpozLang["Strikethrough"]='Strikethrough';
+
+EpozLang["Subscript"]='Subscript';
+EpozLang["Superscript"]='Superscript';
+
+EpozLang["RemoveFormat"]='Remove Format';
+
+EpozLang["TextColor"]='Text Color';
+EpozLang["BackColor"]='Background Color';
+
+EpozLang["AlignLeft"]='Align Left';
+EpozLang["Center"]='Center';
+EpozLang["AlignRight"]='Align Right';
+
+EpozLang["OrderedList"]='Ordered List';
+EpozLang["UnorderedList"]='Unordered List';
+EpozLang["Outdent"]='Outdent';
+EpozLang["Indent"]='Indent';
+
+EpozLang["InsertLink"]='Insert Link';
+EpozLang["InsertAnchor"]='Insert Anchor';
+EpozLang["InsertImage"]='Insert Image';
+EpozLang["InsertRule"]='Insert Rule';
+EpozLang["InsertTable"]='Insert Table';
+EpozLang["Toolbox"]='Toolbox';
+
+EpozLang["Undo"]='Undo';
+EpozLang["Redo"]='Redo';
+
+EpozLang["EnterLinkURL"]='Enter Link URL';
+EpozLang["EnterAnchorName"]='Enter Anchor Name';
+EpozLang["EnterImageURL"]='Enter Image URL';
+
+EpozLang["EnterTableRows"]='Enter Rows';
+EpozLang["EnterTableColumns"]='Enter Columns';
+EpozLang["EnterTableBorder"]='Enter Border';
+EpozLang["TableWithHead"]='Table with Head';
+EpozLang["TableWithoutHead"]='Table without Head';
+
+EpozLang["HTML"]='HTML';
+
+// Browser-Status-Messages
+// don't use any entities for translations
+
+EpozLang["TidyStart"]='Tidying...';
+EpozLang["TidyStop"]='Tidying complete.'
+EpozLang["TidyError"]='Detected errors in the HTML block.';
--- /dev/null
+// Epoz-Language-File: es (Spanish)
+// Thanks to Pedro J. Rey Sanchiz
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Párrafo';
+EpozLang["Heading1"]='Cabecera 1';
+EpozLang["Heading2"]='Cabecera 2';
+EpozLang["Heading3"]='Cabecera 3';
+EpozLang["Heading4"]='Cabecera 4';
+EpozLang["Heading5"]='Cabecera 5';
+EpozLang["Heading6"]='Cabecera 6';
+EpozLang["Formatted"]='Formateado';
+
+EpozLang["Bold"]='Negrita';
+EpozLang["Italic"]='Cursiva';
+EpozLang["Underline"]='Subrayado';
+
+EpozLang["Subscript"]='Subíndice';
+EpozLang["Superscript"]='Superíndice';
+
+EpozLang["TextColor"]='Color';
+EpozLang["BackColor"]='Color de fondo';
+
+EpozLang["AlignLeft"]='Alineación izquierda';
+EpozLang["Center"]='Centrado';
+EpozLang["AlignRight"]='Alineación derecha';
+
+EpozLang["OrderedList"]='Lista numerada';
+EpozLang["UnorderedList"]='Viñetas';
+EpozLang["Outdent"]='Sangrar más';
+EpozLang["Indent"]='Sangrar menos';
+
+EpozLang["InsertLink"]='Insertar hipervínculo';
+EpozLang["InsertImage"]='Insertar imagen';
+EpozLang["InsertRule"]='Insertar regla horizontal';
+EpozLang["InsertTable"]='Insertar tabla';
+EpozLang["Toolbox"]='Toolbox';
+
+EpozLang["Undo"]='Deshacer';
+EpozLang["Redo"]='Rehacer';
+
+EpozLang["EnterLinkURL"]='Introduzca la dirección del hipervínculo';
+EpozLang["EnterImageURL"]='Introduzca la situaci?n de la imagen';
+
+EpozLang["EnterTableRows"]='Introduzca el número de líneas';
+EpozLang["EnterTableColumns"]='Introduzca el número de columnas';
+EpozLang["EnterTableBorder"]='Introduzca el ancho del borde';
--- /dev/null
+// Epoz-Language-File: fi (Finnish)
+// petri.savolainen@iki.fi, 2003
+
+EpozLang["Normal"]='Normaali';
+EpozLang["Paragraph"]='Kappale';
+EpozLang["Heading1"]='Otsikko 1';
+EpozLang["Heading2"]='Otsikko 2';
+EpozLang["Heading3"]='Otsikko 3';
+EpozLang["Heading4"]='Otsikko 4';
+EpozLang["Heading5"]='Otsikko 5';
+EpozLang["Heading6"]='Otsikko 6';
+EpozLang["Formatted"]='Muotoiltu';
+
+EpozLang["Bold"]='Lihavoitu';
+EpozLang["Italic"]='Kursivoitu';
+EpozLang["Underline"]='Alleviivattu';
+EpozLang["Strikethrough"]='Yliviivattu';
+
+EpozLang["Subscript"]='Alaindeksi';
+EpozLang["Superscript"]='Yläindeksi';
+
+EpozLang["TextColor"]='Tekstin väri';
+EpozLang["BackColor"]='Taustan väri';
+
+EpozLang["AlignLeft"]='Tasaa vasemmalle';
+EpozLang["Center"]='Keskitä';
+EpozLang["AlignRight"]='Tasaa oikealle';
+
+EpozLang["OrderedList"]='Järjestetty lista';
+EpozLang["UnorderedList"]='Järjestämätön lista';
+EpozLang["Outdent"]='Vähennä sisennystä';
+EpozLang["Indent"]='Kasvata sisennystä';
+
+EpozLang["InsertLink"]='Lisää linkki';
+EpozLang["InsertImage"]='Lisää kuva';
+EpozLang["InsertRule"]='Lisää viiva';
+EpozLang["InsertTable"]='Lisää taulukko';
+EpozLang["Toolbox"]='Työkalupakki';
+
+EpozLang["Undo"]='Peru';
+EpozLang["Redo"]='Tee uudelleen';
+
+EpozLang["EnterLinkURL"]='Anna linkin URL';
+EpozLang["EnterImageURL"]='Anna kuvan URL';
+
+EpozLang["EnterTableRows"]='Anna rivimäärä';
+EpozLang["EnterTableColumns"]='Anna sarakemäärä';
+EpozLang["EnterTableBorder"]='Anna kehyksen määrittely';
--- /dev/null
+// Epoz-Language-File: fr (French)
+// Jean.Laroque@saint-gobain.com
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Paragraphe';
+EpozLang["Heading1"]='Titre 1';
+EpozLang["Heading2"]='Titre 2';
+EpozLang["Heading3"]='Titre 3';
+EpozLang["Heading4"]='Titre 4';
+EpozLang["Heading5"]='Titre 5';
+EpozLang["Heading6"]='Titre 6';
+EpozLang["Formatted"]='Formaté';
+
+EpozLang["Bold"]='Gras';
+EpozLang["Italic"]='Italique';
+EpozLang["Underline"]='Souligné';
+EpozLang["Strikethrough"]='Barré';
+
+EpozLang["Subscript"]='Indice';
+EpozLang["Superscript"]='Exposant';
+
+EpozLang["TextColor"]='Couleur Texte';
+EpozLang["BackColor"]='Couleur Fond';
+
+EpozLang["AlignLeft"]='Aligner à Gauche';
+EpozLang["Center"]='Centrer';
+EpozLang["AlignRight"]='Aligner à Droite';
+
+EpozLang["OrderedList"]='Liste Ordonnée';
+EpozLang["UnorderedList"]='Liste Désordonnée';
+EpozLang["Outdent"]='Diminuer le retrait';
+EpozLang["Indent"]='Augmenter le retrait';
+
+EpozLang["InsertLink"]='Insertion Lien';
+EpozLang["InsertImage"]='Insertion Image';
+EpozLang["InsertRule"]='Insertion Trait';
+EpozLang["InsertTable"]='Insertion Tableau';
+EpozLang["Toolbox"]='Boite à Outil';
+
+EpozLang["Undo"]='Annuler';
+EpozLang["Redo"]='Rétablir';
+
+EpozLang["EnterLinkURL"]='Entrer Lien URL';
+EpozLang["EnterImageURL"]='Entrer Image URL';
+
+EpozLang["EnterTableRows"]='Nombre de Lignes';
+EpozLang["EnterTableColumns"]='Nombre de Colonnes';
+EpozLang["EnterTableBorder"]='Type de Bordure';
+EpozLang["TableWithHead"]='Tableau avec Entête';
+EpozLang["TableWithoutHead"]='Tableau sans Entête';
--- /dev/null
+// Epoz-Language-File: hu (Hungarian)
+// dtamas@pressflex.com, 2003
+
+EpozLang["Normal"]='Normál';
+EpozLang["Paragraph"]='Bekezdés';
+EpozLang["Heading1"]='Címsor 1';
+EpozLang["Heading2"]='Címsor 2';
+EpozLang["Heading3"]='Címsor 3';
+EpozLang["Heading4"]='Címsor 4';
+EpozLang["Heading5"]='Címsor 5';
+EpozLang["Heading6"]='Címsor 6';
+EpozLang["Formatted"]='Formázott';
+
+EpozLang["Bold"]='Félkövér';
+EpozLang["Italic"]='Kurzív';
+EpozLang["Underline"]='Aláhúzott';
+EpozLang["Strikethrough"]='Áthúzott';
+
+EpozLang["Subscript"]='Alsó index';
+EpozLang["Superscript"]='Felsô index';
+
+EpozLang["TextColor"]='Szövegszín';
+EpozLang["BackColor"]='Háttérszín';
+
+EpozLang["AlignLeft"]='Balra igazított';
+EpozLang["Center"]='Közép';
+EpozLang["AlignRight"]='Jobbra igazított';
+
+EpozLang["OrderedList"]='Sorszámozott lista';
+EpozLang["UnorderedList"]='Felsorolás';
+EpozLang["Outdent"]='Kihúzás';
+EpozLang["Indent"]='Behúzás';
+
+EpozLang["InsertLink"]='Hivatkozás beszúrása';
+EpozLang["InsertImage"]='Kép beszúrása';
+EpozLang["InsertRule"]='Elválasztó beszúrása';
+EpozLang["InsertTable"]='Táblázat beszúrása';
+EpozLang["Toolbox"]='Eszköztár';
+
+EpozLang["Undo"]='Vissza';
+EpozLang["Redo"]='Újra';
+
+EpozLang["EnterLinkURL"]='Írja be a hivatkozás URL-jét';
+EpozLang["EnterImageURL"]='Írja be a kép URL-jét';
+
+EpozLang["EnterTableRows"]='Sorok száma';
+EpozLang["EnterTableColumns"]='Oszlopok száma';
+EpozLang["EnterTableBorder"]='Keretvastagság';
+EpozLang["TableWithHead"]='Táblázat fejléccel';
+EpozLang["TableWithoutHead"]='Táblázat fejléc nélkül';
--- /dev/null
+// Epoz-Language-File: it (Italiano)
+// maik.jablonski@uni-bielefeld.de, 2003
+// nbe@libero.it, 2003 traduzione
+
+EpozLang["Normal"]='Normale';
+EpozLang["Paragraph"]='Paragrafo';
+EpozLang["Heading1"]='Titolo 1';
+EpozLang["Heading2"]='Titolo 2';
+EpozLang["Heading3"]='Titolo 3';
+EpozLang["Heading4"]='Titolo 4';
+EpozLang["Heading5"]='Titolo 5';
+EpozLang["Heading6"]='Titolo 6';
+EpozLang["Formatted"]='Formattato';
+
+EpozLang["Bold"]='Grassetto';
+EpozLang["Italic"]='Italico';
+EpozLang["Underline"]='Sottolineato';
+
+EpozLang["Subscript"]='Pedice';
+EpozLang["Superscript"]='Apice';
+
+EpozLang["TextColor"]='Colore testo';
+EpozLang["BackColor"]='Colore sfondo';
+
+EpozLang["AlignLeft"]='Allinea sinistra';
+EpozLang["Center"]='Centra';
+EpozLang["AlignRight"]='Allinea destra';
+
+EpozLang["OrderedList"]='Lista numerata';
+EpozLang["UnorderedList"]='Lista puntata';
+EpozLang["Outdent"]='Riduci rientro';
+EpozLang["Indent"]='Aumenta rientro';
+
+EpozLang["InsertLink"]='Inserisci link';
+EpozLang["InsertImage"]='Inserisci immagine';
+EpozLang["InsertRule"]='Inserisci separatore';
+EpozLang["InsertTable"]='Inserisci tabella';
+EpozLang["Toolbox"]='Toolbox';
+
+EpozLang["Undo"]='Annulla';
+EpozLang["Redo"]='Ripeti';
+
+EpozLang["EnterLinkURL"]='Inserisci URL link';
+EpozLang["EnterImageURL"]='Inserisci immagine link';
+
+EpozLang["EnterTableRows"]='Inserisci righe';
+EpozLang["EnterTableColumns"]='Inserisci colonne';
+EpozLang["EnterTableBorder"]='Inserisci bordo';
--- /dev/null
+// Epoz-Language-File: nl (Dutch)
+// ad.schellevis@imasgroep.nl, 2003
+
+EpozLang["Normal"]='Normaal';
+EpozLang["Paragraph"]='Paragraaf';
+EpozLang["Heading1"]='Kop 1';
+EpozLang["Heading2"]='Kop 2';
+EpozLang["Heading3"]='Kop 3';
+EpozLang["Heading4"]='Kop 4';
+EpozLang["Heading5"]='Kop 5';
+EpozLang["Heading6"]='Kop 6';
+EpozLang["Formatted"]='Opgemaakt';
+
+EpozLang["Bold"]='Vet';
+EpozLang["Italic"]='Cursief';
+EpozLang["Underline"]='Onderstreept';
+
+EpozLang["Subscript"]='Subscript';
+EpozLang["Superscript"]='Superscript';
+
+EpozLang["TextColor"]='Tekst kleur';
+EpozLang["BackColor"]='Achtergrond kleur';
+
+EpozLang["AlignLeft"]='Links uitlijnen';
+EpozLang["Center"]='Centreren';
+EpozLang["AlignRight"]='Rechts uitlijnen';
+
+EpozLang["OrderedList"]='Nummering';
+EpozLang["UnorderedList"]='Opsommingstekens';
+EpozLang["Outdent"]='Inspringen verkleinen';
+EpozLang["Indent"]='Inspringen vergroten';
+
+EpozLang["InsertLink"]='Hyperlink invoegen';
+EpozLang["InsertImage"]='Plaatje invoegen';
+EpozLang["InsertRule"]='Rand invoegen';
+EpozLang["InsertTable"]='Tabel invoegen';
+EpozLang["Toolbox"]='Toolbox';
+
+EpozLang["Undo"]='Ongedaan maken';
+EpozLang["Redo"]='Herhalen';
+
+EpozLang["EnterLinkURL"]='Ingeven hyperlink URL';
+EpozLang["EnterImageURL"]='Ingeven locatie plaatje';
+
+EpozLang["EnterTableRows"]='Invoeren Rijen';
+EpozLang["EnterTableColumns"]='Invoegen Kolommen';
+EpozLang["EnterTableBorder"]='Invoegen Kader';
--- /dev/null
+// Epoz-Language-File: no (Norwegian)
+// einar.ness.jensen@hf.ntnu.no, 2004
+
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Avsnitt';
+EpozLang["Heading1"]='Overskrift 1';
+EpozLang["Heading2"]='Overskrift 2';
+EpozLang["Heading3"]='Overskrift 3';
+EpozLang["Heading4"]='Overskrift 4';
+EpozLang["Heading5"]='Overskrift 5';
+EpozLang["Heading6"]='Overskrift 6';
+EpozLang["Formatted"]='Preformatert';
+
+EpozLang["Bold"]='Fet';
+EpozLang["Italic"]='Kursiv';
+EpozLang["Underline"]='Understreket';
+EpozLang["Strikethrough"]='Gjennomstreket';
+
+EpozLang["Subscript"]='Subskrift';
+EpozLang["Superscript"]='Superskrift';
+
+EpozLang["RemoveFormat"]='Fjern Formatering';
+
+EpozLang["TextColor"]='Tekstfarge';
+EpozLang["BackColor"]='Bakgrunnsfarge';
+
+EpozLang["AlignLeft"]='Venstrejustert';
+EpozLang["Center"]='Midtjustert';
+EpozLang["AlignRight"]='Høyrejustert';
+
+EpozLang["OrderedList"]='Ordnet Liste';
+EpozLang["UnorderedList"]='Uordnet Liste';
+EpozLang["Outdent"]='Minsk Innrykk';
+EpozLang["Indent"]='Øk Innrykk';
+
+EpozLang["InsertLink"]='Sett inn Lenke';
+EpozLang["InsertAnchor"]='Sett inn Anker';
+EpozLang["InsertImage"]='Sett inn Bilde';
+EpozLang["InsertRule"]='Sett inn Horisontal Linje';
+EpozLang["InsertTable"]='Sett inn Tabell';
+EpozLang["Toolbox"]='Verktøy';
+
+EpozLang["Undo"]='Angre';
+EpozLang["Redo"]='Gjenta';
+
+EpozLang["EnterLinkURL"]='Skriv inn Lenke-URL';
+EpozLang["EnterAnchorName"]='Skriv inn Navn på Anker';
+EpozLang["EnterImageURL"]='Skriv inn Bilde-URL';
+
+EpozLang["EnterTableRows"]='Antall Rader';
+EpozLang["EnterTableColumns"]='Antall Kolonner';
+EpozLang["EnterTableBorder"]='Bredde Kantlinje';
+EpozLang["TableWithHead"]='Tabell med Topplinje';
+EpozLang["TableWithoutHead"]='Tabell uten Topplinje';
--- /dev/null
+// Epoz-Language-File: pl (Polish)
+// qbak@qbak.net, 2003
+
+EpozLang["Normal"]='Normalny';
+EpozLang["Paragraph"]='Akapit';
+EpozLang["Heading1"]='Nag³ówek 1';
+EpozLang["Heading2"]='Nag³ówek 2';
+EpozLang["Heading3"]='Nag³ówek 3';
+EpozLang["Heading4"]='Nag³ówek 4';
+EpozLang["Heading5"]='Nag³ówek 5';
+EpozLang["Heading6"]='Nag³ówek 6';
+EpozLang["Formatted"]='Sformatowany';
+
+EpozLang["Bold"]='Pogrubienie';
+EpozLang["Italic"]='Kursywa';
+EpozLang["Underline"]='Podkre¶lenie';
+
+EpozLang["Subscript"]='Indeks dolny';
+EpozLang["Superscript"]='Indeks górny';
+
+EpozLang["TextColor"]='Kolor tekstu';
+EpozLang["BackColor"]='Kolor t³a';
+
+EpozLang["AlignLeft"]='Wyrównanie do lewej';
+EpozLang["Center"]='Wy¶rodkowanie';
+EpozLang["AlignRight"]='Wyrównanie do prawej';
+
+EpozLang["OrderedList"]='Lista numerowana';
+EpozLang["UnorderedList"]='Lista wypunktowana';
+EpozLang["Outdent"]='Zmniejsz wciêcie';
+EpozLang["Indent"]='Zwiêksz wciêcie';
+
+EpozLang["InsertLink"]='Wstaw odno¶nik';
+EpozLang["InsertImage"]='Wstaw obrazek';
+EpozLang["InsertRule"]='Wstaw linijkê';
+EpozLang["InsertTable"]='Wstaw tabelê';
+EpozLang["Toolbox"]='Narzêdzia';
+
+EpozLang["Undo"]='Cofnij';
+EpozLang["Redo"]='Powtórz';
+
+EpozLang["EnterLinkURL"]='Wprowad¼ URL odno¶nika';
+EpozLang["EnterImageURL"]='Wprowad¼ URL obrazka';
+
+EpozLang["EnterTableRows"]='Wprowad¼ wiersze';
+EpozLang["EnterTableColumns"]='Wprowad¼ kolumny';
+EpozLang["EnterTableBorder"]='Wprowad¼ ramkê';
--- /dev/null
+// Epoz-Language-File: pt_br (Portuguese Brazil)
+// "Luiz Fernando Pasqual S. Souza" <pasquall@amcham.com.br>, 2004
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Parágrafo';
+EpozLang["Heading1"]='Cabeçalho 1';
+EpozLang["Heading2"]='Cabeçalho 2';
+EpozLang["Heading3"]='Cabeçalho 3';
+EpozLang["Heading4"]='Cabeçalho 4';
+EpozLang["Heading5"]='Cabeçalho 5';
+EpozLang["Heading6"]='Cabeçalho 6';
+EpozLang["Formatted"]='Formatado';
+
+EpozLang["Bold"]='Negrito';
+EpozLang["Italic"]='Itálico';
+EpozLang["Underline"]='Sublinhado';
+EpozLang["Strikethrough"]='Riscado';
+
+EpozLang["Subscript"]='Subescrito';
+EpozLang["Superscript"]='Sobrescrito';
+
+EpozLang["RemoveFormat"]='Remover formatação';
+
+EpozLang["TextColor"]='Cor do texto';
+EpozLang["BackColor"]='Cor do fundo';
+
+EpozLang["AlignLeft"]='Alinhar à esquerda';
+EpozLang["Center"]='Centralizar';
+EpozLang["AlignRight"]='Alinhar à direita';
+
+EpozLang["OrderedList"]='Lista numerada';
+EpozLang["UnorderedList"]='Lista ordenada';
+EpozLang["Outdent"]='Diminuir parágrafo';
+EpozLang["Indent"]='Aumentar parágrafo';
+
+EpozLang["InsertLink"]='Inserir Link';
+EpozLang["InsertAnchor"]='Inserir âncora';
+EpozLang["InsertImage"]='Inserir Imagem';
+EpozLang["InsertRule"]='Inserir Linha';
+EpozLang["InsertTable"]='Inserir Tabela';
+EpozLang["Toolbox"]='Caixa de ferramentas';
+
+EpozLang["Undo"]='Voltar';
+EpozLang["Redo"]='Refazer';
+
+EpozLang["EnterLinkURL"]='URL do link';
+EpozLang["EnterAnchorName"]='Nome da âncora';
+EpozLang["EnterImageURL"]='URL da imagem';
+
+EpozLang["EnterTableRows"]='Linhas';
+EpozLang["EnterTableColumns"]='Colunas';
+EpozLang["EnterTableBorder"]='Bordas';
+EpozLang["TableWithHead"]='Tabela com cabeçalho';
+EpozLang["TableWithoutHead"]='Tabela sem cabeçalho';
--- /dev/null
+// Epoz-Language-File: pt (Portuguese)
+// nteixeira@bmc.pt, 2003
+
+EpozLang["Normal"]='Normal';
+EpozLang["Paragraph"]='Parágrafo';
+EpozLang["Heading1"]='Cabeçalho 1';
+EpozLang["Heading2"]='Cabeçalho 2';
+EpozLang["Heading3"]='Cabeçalho 3';
+EpozLang["Heading4"]='Cabeçalho 4';
+EpozLang["Heading5"]='Cabeçalho 5';
+EpozLang["Heading6"]='Cabeçalho 6';
+EpozLang["Formatted"]='Formatado';
+
+EpozLang["Bold"]='Negrito';
+EpozLang["Italic"]='Itálico';
+EpozLang["Underline"]='Sublinhado';
+EpozLang["Strikethrough"]='Traçado';
+
+EpozLang["Subscript"]='Subescrito';
+EpozLang["Superscript"]='Sobrescrito';
+
+EpozLang["RemoveFormat"]='Retirar Formatação';
+
+EpozLang["TextColor"]='Cor do texto';
+EpozLang["BackColor"]='Cor do fundo';
+
+EpozLang["AlignLeft"]='Alinhar à esquerda';
+EpozLang["Center"]='Centrar';
+EpozLang["AlignRight"]='Alinhar à direita';
+
+EpozLang["OrderedList"]='Lista numerada';
+EpozLang["UnorderedList"]='Lista ordenada';
+EpozLang["Outdent"]='Diminuir parágrafo';
+EpozLang["Indent"]='Aumentar parágrafo';
+
+EpozLang["InsertLink"]='Inserir Link';
+EpozLang["InsertImage"]='Inserir Imagem';
+EpozLang["InsertRule"]='Inserir Linha';
+EpozLang["InsertTable"]='Inserir Tabela';
+EpozLang["Toolbox"]='Caixa de ferramentas';
+
+EpozLang["Undo"]='Desfazer';
+EpozLang["Redo"]='Refazer';
+
+EpozLang["EnterLinkURL"]='URL do link';
+EpozLang["EnterImageURL"]='URL da imagem';
+
+EpozLang["EnterTableRows"]='Número de Linhas';
+EpozLang["EnterTableColumns"]='Número de Colunas';
+EpozLang["EnterTableBorder"]='Tamanho das Bordas';
+EpozLang["TableWithHead"]='Tabela com cabeçalho';
+EpozLang["TableWithoutHead"]='Tabela sem cabeçalho';
--- /dev/null
+// Epoz-Language-File: ru (Russian (UTF-8))
+// Sergey V. Volobuev, 2003
+// Theo (theo@ua.fm), 22-10-2004
+
+EpozLang["Normal"]='Обычный';
+EpozLang["Paragraph"]='Абзац';
+EpozLang["Heading1"]='Заголовок 1';
+EpozLang["Heading2"]='Заголовок 2';
+EpozLang["Heading3"]='Заголовок 3';
+EpozLang["Heading4"]='Заголовок 4';
+EpozLang["Heading5"]='Заголовок 5';
+EpozLang["Heading6"]='Заголовок 6';
+EpozLang["Formatted"]='Форматированный';
+
+EpozLang["Bold"]='Полужирный';
+EpozLang["Italic"]='Курсив';
+EpozLang["Underline"]='Подчеркнутый';
+EpozLang["Strikethrough"]='Зачёркнутый';
+
+EpozLang["Subscript"]='Нижний индекс';
+EpozLang["Superscript"]='Верхний индекс';
+
+EpozLang["RemoveFormat"]='Убрать форматирование';
+
+EpozLang["TextColor"]='Цвет шрифта';
+EpozLang["BackColor"]='Цвет фона';
+
+EpozLang["AlignLeft"]='По левому краю';
+EpozLang["Center"]='По центру';
+EpozLang["AlignRight"]='По правому краю';
+
+EpozLang["OrderedList"]='Нумерация';
+EpozLang["UnorderedList"]='Маркеры';
+EpozLang["Outdent"]='Уменьшить отступ';
+EpozLang["Indent"]='Увеличить отступ';
+
+EpozLang["InsertLink"]='Вставить гиперссылку';
+EpozLang["InsertAnchor"]='Вставить якорь';
+EpozLang["InsertImage"]='Вставить изображение';
+EpozLang["InsertRule"]='Вставить линейку';
+EpozLang["InsertTable"]='Вставить таблицу';
+EpozLang["Toolbox"]='Инструменты';
+
+EpozLang["Undo"]='Отменить';
+EpozLang["Redo"]='Повторить';
+
+EpozLang["EnterLinkURL"]='Введите URL страницы';
+EpozLang["EnterAnchorName"]='Введите названия якоря';
+EpozLang["EnterImageURL"]='Введите URL изображения';
+
+EpozLang["EnterTableRows"]='Число строк';
+EpozLang["EnterTableColumns"]='Число столбцов';
+EpozLang["EnterTableBorder"]='Ширина границы';
+
+EpozLang["TableWithHead"]='Таблица с заголовком';
+EpozLang["TableWithoutHead"]='Таблица без заголовка';
+
+EpozLang["HTML"]='HTML';
+
--- /dev/null
+// Epoz-Language-File: zh (Chinese)
+// panjy@plone.cn, 2003
+
+var EpozLang=[];
+
+EpozLang['Normal']='常规';
+EpozLang['Paragraph']='段落';
+EpozLang['Heading1']='标题 1';
+EpozLang['Heading2']='标题 2';
+EpozLang['Heading3']='标题 3';
+EpozLang['Heading4']='标题 4';
+EpozLang['Heading5']='标题 5';
+EpozLang['Heading6']='标题 6';
+EpozLang['Formatted']='保持格式';
+
+EpozLang['Bold']='加粗';
+EpozLang['Italic']='倾斜';
+EpozLang['Underline']='下划线';
+EpozLang["Strikethrough"]='中划线';
+
+EpozLang['Subscript']='下标';
+EpozLang['Superscript']='上标';
+
+EpozLang["RemoveFormat"]='去除格式';
+
+EpozLang['TextColor']='文字颜色';
+EpozLang['BackColor']='背景颜色';
+
+EpozLang['AlignLeft']='左对齐';
+EpozLang['Center']='居中';
+EpozLang['AlignRight']='右对齐';
+
+EpozLang['OrderedList']='有序清单';
+EpozLang['UnorderedList']='无序清单';
+EpozLang['Outdent']='减少缩进';
+EpozLang['Indent']='增加缩进';
+
+EpozLang['InsertLink']='添加链接';
+EpozLang["InsertAnchor"]='添加书签(Anchor)';
+EpozLang['InsertImage']='添加图片';
+EpozLang['InsertRule']='添加尺线';
+EpozLang['InsertTable']='添加表格';
+EpozLang['Toolbox']='工具箱';
+
+EpozLang['Undo']='撤销';
+EpozLang['Redo']='恢复';
+
+EpozLang['EnterLinkURL']='输入链接的URL地址';
+EpozLang["EnterAnchorName"]='输入书签(Anchor)名';
+EpozLang['EnterImageURL']='输入图片的UR地址';
+
+EpozLang['EnterTableRows']='输入行数';
+EpozLang['EnterTableColumns']='输入列数';
+EpozLang['EnterTableBorder']='输入边框';
+EpozLang["TableWithHead"]='带标题的表格';
+EpozLang["TableWithoutHead"]='不带标题的表格';
+
+
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ i18n:domain="plone">
+
+<head tal:define="ztu modules/ZTUtils;">
+<title tal:content="here/title_or_id">Title or Id</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"
+ tal:define="charset here/portal_properties/site_properties/default_charset;
+ dummy python:request.RESPONSE.setHeader('Content-Type', 'text/html;;charset=%s' % charset)"
+ tal:attributes="content string:text/html;;charset=${charset}" />
+<style type="text/css" media="all"
+ tal:define="current_skin python:ztu.make_query(skin=request.get(here.portal_skins.getRequestVarname(), ''))"
+ tal:content="string: @import url(${here/portal_url}/plone.css?${current_skin});">
+</style>
+</head>
+
+<body onload="focus();"
+ style="margin: 4px;padding:0.5em;"
+ tal:define="checkPermission python: here.portal_membership.checkPermission;">
+
+ <form
+ action="search"
+ method="post"
+ name="search"
+ style="padding-bottom:1em;"
+ tal:define="DateTime python:modules['DateTime'].DateTime"
+ tal:attributes="action string: ${here/absolute_url}/${template/getId}">
+
+ <div i18n:translate="legend_search_terms">Search Terms</div>
+ <input type="text"
+ id="searchGadget"
+ name="SearchableText"
+ size="25"
+ tabindex=""
+ />
+ <input tabindex=""
+ class="searchButton"
+ type="submit"
+ name="submit"
+ value="Search"
+ i18n:attributes="value"
+ />
+ </form>
+
+ <tal:block tal:define="query_results python:[brain.getObject() for brain in here.queryCatalog()];">
+ <div tal:condition="query_results">
+ <span i18n:translate="heading_search_results">Search results</span>
+ </div>
+ <div style="border-top:1px solid black;border-bottom:1px solid black;"
+ tal:attributes="style string:border-top:1px solid ${here/base_properties/globalBorderColor};;
+ border-bottom:1px solid ${here/base_properties/globalBorderColor};;
+ margin-bottom:1em;;padding:0.2em 0 0.1em 0"
+ tal:condition="not: query_results"
+ tal:define="parents request/PARENTS;
+ nil python: parents.reverse();
+ portal here/portal_url/getPortalObject;">
+ <tal:block tal:repeat="parent parents">
+ <tal:block tal:condition="python:checkPermission('View', parent) and checkPermission('List folder contents', parent)">
+ <img tal:condition="repeat/parent/start" tal:attributes="src string:${here/portal_url}/logoIcon.gif"/>
+ <tal:block tal:condition="not: repeat/parent/start">
+ <a tal:attributes="href string: ${parent/absolute_url}/${template/getId};">
+ <span tal:content="string: ${parent/title_or_id}"
+ tal:condition="python: parent.absolute_url()!=portal.absolute_url()"/>
+ <span tal:content="string:Home" tal:condition="python: parent.absolute_url()==portal.absolute_url()"/>
+ <span tal:condition="not: repeat/parent/end" class="breadcrumbSeparator">»</span>
+ </a>
+ </tal:block>
+ </tal:block>
+ </tal:block>
+ </div>
+
+ <tal:block tal:define="results python: test(query_results, query_results,
+ [item for item in here.listFolderContents()
+ if checkPermission('View',item)]);">
+
+ <table tal:condition="results"
+ class="group" width="100%" cellspacing="0" cellpadding="2">
+
+ <tbody>
+
+ <tal:block tal:repeat="item results">
+ <tr tal:define="oddrow repeat/item/odd"
+ tal:attributes="class python:test(oddrow, 'even', 'odd')" >
+
+ <td width="50%">
+ <img src="#" tal:attributes="src string:${here/portal_url}/${item/getIcon};alt item/Title" />
+ <a tal:condition="python: item.isPrincipiaFolderish and item<>here"
+ tal:attributes="href string: ${item/absolute_url}/${template/getId}"
+ tal:content="item/title_or_id">Title</a>
+
+ <b tal:condition="python: not item.isPrincipiaFolderish or item==here"
+ tal:content="item/title_or_id">Title</b>
+
+ <a tal:condition="python: item.getTypeInfo().getId() in ['Image','Photo']"
+ tal:attributes="href string:#;
+ onclick string: window.open('${item/absolute_url}','${repeat/item/index}','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=${item/width},height=${item/height}');; ;">
+ <img tal:define="max python: 32;"
+ tal:attributes="src item/absolute_url;
+ height python: test(item.height < max, item.height, max);" />
+ </a>
+ </td>
+
+ <td width="25%"
+ i18n:translate=""
+ tal:content="python:item.getTypeInfo().Title()">Metatype</td>
+
+ <td width="25%" tal:define="url python: item.absolute_url() + test(item.isPrincipiaFolderish,'/','');">
+ <a tal:attributes="href string: #;
+ onclick string: window.opener.CreateLink('${url}');; window.close();; ;"
+ i18n:translate="epoz_insert_link">Insert Link</a>
+ <div tal:condition="python: item.getTypeInfo().getId() in ['Image','Photo']">
+ <a tal:attributes="href string: #;
+ onclick string: window.opener.CreateImage('${url}');; window.close();; ;"
+ i18n:translate="epoz_insert_image">Insert Image</a>
+ </div>
+ </td>
+ </tr>
+ </tal:block>
+
+ </tbody>
+ </table>
+
+ </tal:block>
+
+ </tal:block>
+</body>
+</html>
--- /dev/null
+<html i18n:domain="plone">
+
+<div metal:define-macro="wysiwygEditorBox">
+
+ <tal:block tal:define="wysiwyg python: here.portal_membership.getAuthenticatedMember().getProperty('wysiwyg_editor')=='Epoz';">
+
+ <tal:block tal:condition="wysiwyg"
+ tal:define="ztu modules/ZTUtils;
+ pss modules/Products/PythonScripts/standard;
+ text_format python: getattr(here,'text_format','html');
+ is_stx python:text_format=='structured-text';
+ is_ptx python:text_format=='plain';
+ url3 request/URL3|nothing;
+ pageurl python: test(here.portal_factory.isTemporary(here), url3, here.absolute_url());
+ getProperty python: here.stylesheet_properties.getProperty;
+ current_skin python: ztu.make_query(skin=request.get(here.portal_skins.getRequestVarname(), ''));"
+
+ tal:replace="structure python: here.Epoz(
+ inputname,
+ data = (is_stx and pss.structured_text(inputvalue))
+ or (is_ptx and pss.newline_to_br(inputvalue))
+ or inputvalue,
+ toolbox = pageurl + '/epoz_toolbox',
+ lang = here.portal_properties.site_properties.default_language,
+ style = 'width: %s; height: %s; margin-top: 2px; border: %s;' % (path('width|string:99%'), path('height|string:450px'), getProperty('preBorder','1px solid #8cacbb'),),
+ button = 'background-color: %s; border: 1px solid %s; cursor: pointer; margin-right: 1px; margin-bottom: 1px;' % (
+ getProperty('contentTabBackground','#CDE2A7'),
+ getProperty('contentTabFontColor','#578308'),),
+ path = here.portal_url() + '/',
+ css = here.portal_url()+'/plone.css?'+pss.url_quote(current_skin),
+ customcss = here.portal_url()+'/ploneCustom.css?'+pss.url_quote(current_skin),
+ charset = here.portal_properties.site_properties.default_charset,
+ pageurl = pageurl)">
+ </tal:block>
+
+ <tal:block condition="not: wysiwyg">
+
+ <textarea cols="80"
+ rows="25"
+ tabindex=""
+ name="description"
+ tal:content="inputvalue"
+ tal:attributes="name inputname;
+ id inputname;
+ tabindex tabindex|nothing;
+ rows rows|default;
+ cols cols|default;"></textarea>
+ </tal:block>
+ </tal:block>
+</div>
+
+<div metal:define-macro="textFormatSelector">
+
+ <tal:block tal:define="wysiwyg python: here.portal_membership.getAuthenticatedMember().getProperty('wysiwyg_editor')=='Epoz'">
+
+ <tal:block condition="wysiwyg">
+ <input type="hidden"
+ name="text_format"
+ value="html" />
+ </tal:block>
+
+ <tal:block condition="not: wysiwyg">
+
+ <div class="field"
+ tal:define="tabindex tabindex/next;
+ text_format python:request.get('text_format', getattr(here,'text_format','structured-text'))">
+
+ <label for="text_format" i18n:translate="label_format">Format</label>
+
+ <div class="formHelp" i18n:translate="help_format_wysiwyg">
+ If you are unsure of which format to use, just select Plain
+ Text and type the document as you usually do.
+ </div>
+
+ <input class="noborder"
+ type="radio"
+ name="text_format"
+ value="structured-text"
+ tabindex=""
+ id="cb_structuredtext"
+ tal:attributes="checked python:test(text_format=='structured-text', 1, None);
+ tabindex tabindex;"
+ />
+ <label for="cb_structuredtext" i18n:translate="structured_text">Structured Text</label> <br />
+
+ <input class="noborder"
+ type="radio"
+ name="text_format"
+ value="html"
+ tabindex=""
+ id="cb_html"
+ tal:attributes="checked python:test(text_format=='html', 1, None);
+ tabindex tabindex;"
+ />
+ <label for="cb_html" i18n:translate="html">HTML</label> <br />
+
+ <input class="noborder"
+ type="radio"
+ name="text_format"
+ value="plain"
+ tabindex=""
+ id="cb_plain"
+ tal:attributes="checked python:test(text_format=='plain', 1, None);
+ tabindex tabindex;"
+ />
+ <label for="cb_plain" i18n:translate="plain_text">Plain Text</label>
+
+ </div>
+ </tal:block>
+
+ </tal:block>
+</div>
+</html>
\ No newline at end of file
--- /dev/null
+<html i18n:domain="plone">
+
+<!-- wysiwyg multiplexing widget, this allows for both Epoz and Kupu to coexist -->
+
+<div metal:define-macro="wysiwygEditorBox">
+ <tal:block define="editor python: member.getProperty('wysiwyg_editor').lower();
+ support python: path('nocall:here/%s_wysiwyg_support|here/%s/wysiwyg_support|here/plone_wysiwyg/wysiwyg_support' % (editor, editor));">
+ <metal:block metal:use-macro="support/macros/wysiwygEditorBox">
+ </metal:block>
+ </tal:block>
+</div>
+
+<div metal:define-macro="textFormatSelector">
+ <tal:block define="editor python: member.getProperty('wysiwyg_editor').lower();
+ support python: path('nocall:here/%s_wysiwyg_support|here/%s/wysiwyg_support|here/plone_wysiwyg/wysiwyg_support' % (editor, editor));">
+ <metal:block metal:use-macro="support/macros/textFormatSelector">
+ </metal:block>
+ </tal:block>
+</div>
+
+</html>
--- /dev/null
+# Gettext Epoz-Language-File: da (Danish)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: overby@opentobusiness.com\n"
+"Language-Team: maik.jablonski@uni-bielefeld.de, overby@opentobusiness.com\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: da\n"
+"Language-Name: Danish\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Citat"
+
+msgid "Heading1"
+msgstr "Overskift 1"
+
+msgid "Heading2"
+msgstr "Overskift 2"
+
+msgid "Heading3"
+msgstr "Overskift 3"
+
+msgid "Heading4"
+msgstr "Overskift 4"
+
+msgid "Heading5"
+msgstr "Overskift 5"
+
+msgid "Heading6"
+msgstr "Overskift 6"
+
+msgid "Formatted"
+msgstr "Formatteret"
+
+msgid "Bold"
+msgstr "Fed"
+
+msgid "Italic"
+msgstr "Kursiv"
+
+msgid "Underline"
+msgstr "Understreg"
+
+msgid "Strikethrough"
+msgstr "Gennemstreg"
+
+msgid "Subscript"
+msgstr "Sænket skrift"
+
+msgid "Superscript"
+msgstr "Hævet skrift"
+
+msgid "RemoveFormat"
+msgstr "Fjern formattering"
+
+msgid "TextColor"
+msgstr "Skriftfarve"
+
+msgid "BackColor"
+msgstr "Baggrundsfarve"
+
+msgid "AlignLeft"
+msgstr "Venstrejusteret"
+
+msgid "Center"
+msgstr "Centreret"
+
+msgid "AlignRight"
+msgstr "Højrejusteret"
+
+msgid "OrderedList"
+msgstr "Nummereret liste"
+
+msgid "UnorderedList"
+msgstr "Punktliste"
+
+msgid "Outdent"
+msgstr "Formindsk indrykning"
+
+msgid "Indent"
+msgstr "Forøg indrykning"
+
+msgid "InsertLink"
+msgstr "Indsæt link"
+
+msgid "InsertImage"
+msgstr "Indsæt billede"
+
+msgid "InsertRule"
+msgstr "Indsæt linie"
+
+msgid "InsertTable"
+msgstr "Indsæt table"
+
+msgid "Toolbox"
+msgstr "Værktøjskasse"
+
+msgid "Undo"
+msgstr "Fortryd"
+
+msgid "Redo"
+msgstr "Annuller fortryd"
+
+msgid "EnterLinkURL"
+msgstr "Indsæt link adresse"
+
+msgid "EnterImageURL"
+msgstr "Indsæt bille placering"
+
+msgid "EnterTableRows"
+msgstr "Indsæt række"
+
+msgid "EnterTableColumns"
+msgstr "Indsæt kolonne"
+
+msgid "EnterTableBorder"
+msgstr "Kant"
+
+msgid "TableWithHead"
+msgstr "Tabel med hoved"
+
+msgid "TableWithoutHead"
+msgstr "Tabel uden hoved"
--- /dev/null
+# Gettext Epoz-Language-File: de (Deutsch)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: maik.jablonski@uni-bielefeld.de\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: de\n"
+"Language-Name: Deutsch\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: de-de, de-at, de-li, de-lu, de-ch\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Absatz"
+
+msgid "Heading1"
+msgstr "Überschrift 1"
+
+msgid "Heading2"
+msgstr "Überschrift 2"
+
+msgid "Heading3"
+msgstr "Überschrift 3"
+
+msgid "Heading4"
+msgstr "Überschrift 4"
+
+msgid "Heading5"
+msgstr "Überschrift 5"
+
+msgid "Heading6"
+msgstr "Überschrift 6"
+
+msgid "Formatted"
+msgstr "Formatiert"
+
+msgid "Bold"
+msgstr "Fett"
+
+msgid "Italic"
+msgstr "Kursiv"
+
+msgid "Underline"
+msgstr "Unterstrichen"
+
+msgid "Strikethrough"
+msgstr "Durchgestrichen"
+
+msgid "Subscript"
+msgstr "Tiefstellen"
+
+msgid "Superscript"
+msgstr "Hochstellen"
+
+msgid "RemoveFormat"
+msgstr "Formatierung entfernen"
+
+msgid "TextColor"
+msgstr "Textfarbe"
+
+msgid "BackColor"
+msgstr "Hintergrundfarbe"
+
+msgid "AlignLeft"
+msgstr "Linksbündig"
+
+msgid "Center"
+msgstr "Zentriert"
+
+msgid "AlignRight"
+msgstr "Rechtsbündig"
+
+msgid "OrderedList"
+msgstr "Aufzählung"
+
+msgid "UnorderedList"
+msgstr "Liste"
+
+msgid "Outdent"
+msgstr "Ausrücken"
+
+msgid "Indent"
+msgstr "Einrücken"
+
+msgid "InsertLink"
+msgstr "Link einfügen"
+
+msgid "InsertAnchor"
+msgstr "Anker einfügen"
+
+msgid "InsertImage"
+msgstr "Bild einfügen"
+
+msgid "InsertRule"
+msgstr "Linie einfügen"
+
+msgid "InsertTable"
+msgstr "Tabelle einfügen"
+
+msgid "Toolbox"
+msgstr "Werkzeuge"
+
+msgid "Undo"
+msgstr "Undo"
+
+msgid "Redo"
+msgstr "Redo"
+
+msgid "EnterLinkURL"
+msgstr "URL des Links eingeben"
+
+msgid "EnterAnchorName"
+msgstr "Namen des Ankers eingeben"
+
+msgid "EnterImageURL"
+msgstr "URL des Bildes eingeben"
+
+msgid "EnterTableRows"
+msgstr "Anzahl der Reihen"
+
+msgid "EnterTableColumns"
+msgstr "Anzahl der Spalten"
+
+msgid "EnterTableBorder"
+msgstr "Randstärke"
+
+msgid "TableWithHead"
+msgstr "Tabelle mit Kopf"
+
+msgid "TableWithoutHead"
+msgstr "Tabelle ohne Kopf"
+
+msgid "HTML"
+msgstr "HTML"
+
+msgid "TidyStart"
+msgstr "HTML-Bereinigung..."
+
+msgid "TidyStop"
+msgstr "HTML-Bereinigung abgeschlossen."
+
+msgid "TidyError"
+msgstr "Fehler im HTML-Quelltext."
--- /dev/null
+# Gettext Epoz-Language-File: en (English)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: maik.jablonski@uni-bielefeld.de\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: en-za, en-au, en-bz, en-ca, en-ie, en-jm, en-nz, en-ph, en-gb, en-tt, en-zw, en-us\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Paragraph"
+
+msgid "Heading1"
+msgstr "Heading 1"
+
+msgid "Heading2"
+msgstr "Heading 2"
+
+msgid "Heading3"
+msgstr "Heading 3"
+
+msgid "Heading4"
+msgstr "Heading 4"
+
+msgid "Heading5"
+msgstr "Heading 5"
+
+msgid "Heading6"
+msgstr "Heading 6"
+
+msgid "Formatted"
+msgstr "Formatted"
+
+msgid "Bold"
+msgstr "Bold"
+
+msgid "Italic"
+msgstr "Italic"
+
+msgid "Underline"
+msgstr "Underline"
+
+msgid "Strikethrough"
+msgstr "Strikethrough"
+
+msgid "Subscript"
+msgstr "Subscript"
+
+msgid "Superscript"
+msgstr "Superscript"
+
+msgid "RemoveFormat"
+msgstr "Remove Format"
+
+msgid "TextColor"
+msgstr "Text Color"
+
+msgid "BackColor"
+msgstr "Background Color"
+
+msgid "AlignLeft"
+msgstr "Align Left"
+
+msgid "Center"
+msgstr "Center"
+
+msgid "AlignRight"
+msgstr "Align Right"
+
+msgid "OrderedList"
+msgstr "Ordered List"
+
+msgid "UnorderedList"
+msgstr "Unordered List"
+
+msgid "Outdent"
+msgstr "Outdent"
+
+msgid "Indent"
+msgstr "Indent"
+
+msgid "InsertAnchor"
+msgstr "Insert Anchor"
+
+msgid "InsertFile"
+msgstr "Insert File"
+
+msgid "InsertImage"
+msgstr "Insert Image"
+
+msgid "InsertLink"
+msgstr "Insert Link"
+
+msgid "InsertRule"
+msgstr "Insert Rule"
+
+msgid "InsertTable"
+msgstr "Insert Table"
+
+msgid "Toolbox"
+msgstr "Toolbox"
+
+msgid "Undo"
+msgstr "Undo"
+
+msgid "Redo"
+msgstr "Redo"
+
+msgid "EnterLinkURL"
+msgstr "Enter Link URL"
+
+msgid "EnterAnchorName"
+msgstr "Enter Anchor Name"
+
+msgid "EnterImageURL"
+msgstr "Enter Image URL"
+
+msgid "EnterTableRows"
+msgstr "Enter Rows"
+
+msgid "EnterTableColumns"
+msgstr "Enter Columns"
+
+msgid "EnterTableBorder"
+msgstr "Enter Border"
+
+msgid "TableWithHead"
+msgstr "Table with Head"
+
+msgid "TableWithoutHead"
+msgstr "Table without Head"
+
+msgid "HTML"
+msgstr "HTML"
+
+msgid "TidyStart"
+msgstr "Tidying..."
+
+msgid "TidyStop"
+msgstr "Tidying complete."
+
+msgid "TidyError"
+msgstr "Detected errors in the HTML block."
--- /dev/null
+# Gettext Epoz-Language-File: es (Spanish)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: Pedro J. Rey Sanchiz\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: es\n"
+"Language-Name: Spanish\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: es-ar, es-bo, es-cl, es-co, es-cr, es-es, es-gt, es-hn, es-mx, es-ni, es-pa, es-py, es-pr, es-pe, es-do, es-sv, es-uy, es-ve, es-ec\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Párrafo"
+
+msgid "Heading1"
+msgstr "Cabecera 1"
+
+msgid "Heading2"
+msgstr "Cabecera 2"
+
+msgid "Heading3"
+msgstr "Cabecera 3"
+
+msgid "Heading4"
+msgstr "Cabecera 4"
+
+msgid "Heading5"
+msgstr "Cabecera 5"
+
+msgid "Heading6"
+msgstr "Cabecera 6"
+
+msgid "Formatted"
+msgstr "Formateado"
+
+msgid "Bold"
+msgstr "Negrita"
+
+msgid "Italic"
+msgstr "Cursiva"
+
+msgid "Underline"
+msgstr "Subrayado"
+
+msgid "Subscript"
+msgstr "Subíndice"
+
+msgid "Superscript"
+msgstr "Superíndice"
+
+msgid "TextColor"
+msgstr "Color"
+
+msgid "BackColor"
+msgstr "Color de fondo"
+
+msgid "AlignLeft"
+msgstr "Alineación izquierda"
+
+msgid "Center"
+msgstr "Centrado"
+
+msgid "AlignRight"
+msgstr "Alineación derecha"
+
+msgid "OrderedList"
+msgstr "Lista numerada"
+
+msgid "UnorderedList"
+msgstr "Viñetas"
+
+msgid "Outdent"
+msgstr "Sangrar más"
+
+msgid "Indent"
+msgstr "Sangrar menos"
+
+msgid "InsertLink"
+msgstr "Insertar hipervínculo"
+
+msgid "InsertImage"
+msgstr "Insertar imagen"
+
+msgid "InsertRule"
+msgstr "Insertar regla horizontal"
+
+msgid "InsertTable"
+msgstr "Insertar tabla"
+
+msgid "Toolbox"
+msgstr "Toolbox"
+
+msgid "Undo"
+msgstr "Deshacer"
+
+msgid "Redo"
+msgstr "Rehacer"
+
+msgid "EnterLinkURL"
+msgstr "Introduzca la dirección del hipervínculo"
+
+msgid "EnterImageURL"
+msgstr "Introduzca la situación de la imagen"
+
+msgid "EnterTableRows"
+msgstr "Introduzca el número de líneas"
+
+msgid "EnterTableColumns"
+msgstr "Introduzca el número de columnas"
+
+msgid "EnterTableBorder"
+msgstr "Introduzca el ancho del borde"
--- /dev/null
+# Gettext Epoz-Language-File: fi (Finnish)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: petri.savolainen@iki.fi\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: fi\n"
+"Language-Name: Finnish\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Normaali"
+
+msgid "Paragraph"
+msgstr "Kappale"
+
+msgid "Heading1"
+msgstr "Otsikko 1"
+
+msgid "Heading2"
+msgstr "Otsikko 2"
+
+msgid "Heading3"
+msgstr "Otsikko 3"
+
+msgid "Heading4"
+msgstr "Otsikko 4"
+
+msgid "Heading5"
+msgstr "Otsikko 5"
+
+msgid "Heading6"
+msgstr "Otsikko 6"
+
+msgid "Formatted"
+msgstr "Muotoiltu"
+
+msgid "Bold"
+msgstr "Lihavoitu"
+
+msgid "Italic"
+msgstr "Kursivoitu"
+
+msgid "Underline"
+msgstr "Alleviivattu"
+
+msgid "Strikethrough"
+msgstr "Yliviivattu"
+
+msgid "Subscript"
+msgstr "Alaindeksi"
+
+msgid "Superscript"
+msgstr "Yläindeksi"
+
+msgid "TextColor"
+msgstr "Tekstin väri"
+
+msgid "BackColor"
+msgstr "Taustan väri"
+
+msgid "AlignLeft"
+msgstr "Tasaa vasemmalle"
+
+msgid "Center"
+msgstr "Keskitä"
+
+msgid "AlignRight"
+msgstr "Tasaa oikealle"
+
+msgid "OrderedList"
+msgstr "Järjestetty lista"
+
+msgid "UnorderedList"
+msgstr "Järjestämätön lista"
+
+msgid "Outdent"
+msgstr "Vähennä sisennystä"
+
+msgid "Indent"
+msgstr "Kasvata sisennystä"
+
+msgid "InsertLink"
+msgstr "Lisää linkki"
+
+msgid "InsertImage"
+msgstr "Lisää kuva"
+
+msgid "InsertRule"
+msgstr "Lisää viiva"
+
+msgid "InsertTable"
+msgstr "Lisää taulukko"
+
+msgid "Toolbox"
+msgstr "Työkalupakki"
+
+msgid "Undo"
+msgstr "Peru"
+
+msgid "Redo"
+msgstr "Tee uudelleen"
+
+msgid "EnterLinkURL"
+msgstr "Anna linkin URL"
+
+msgid "EnterImageURL"
+msgstr "Anna kuvan URL"
+
+msgid "EnterTableRows"
+msgstr "Anna rivimäärä"
+
+msgid "EnterTableColumns"
+msgstr "Anna sarakemäärä"
+
+msgid "EnterTableBorder"
+msgstr "Anna kehyksen määrittely"
--- /dev/null
+# Gettext Epoz-Language-File: fr (French)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: benoit.pin@cri.ensmp.fr\n"
+"Language-Team: Jean.Laroque@saint-gobain.com, benoit.pin@cri.ensmp.fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: fr\n"
+"Language-Name: French\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: fr-be fr-ca fr-lu fr-mc fr-ch\n"
+
+
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Paragraphe"
+
+msgid "Heading1"
+msgstr "Titre 1"
+
+msgid "Heading2"
+msgstr "Titre 2"
+
+msgid "Heading3"
+msgstr "Titre 3"
+
+msgid "Heading4"
+msgstr "Titre 4"
+
+msgid "Heading5"
+msgstr "Titre 5"
+
+msgid "Heading6"
+msgstr "Titre 6"
+
+msgid "Formatted"
+msgstr "Formaté"
+
+msgid "Bold"
+msgstr "Gras"
+
+msgid "Italic"
+msgstr "Italique"
+
+msgid "Underline"
+msgstr "Souligné"
+
+msgid "Strikethrough"
+msgstr "Barré"
+
+msgid "Subscript"
+msgstr "Indice"
+
+msgid "Superscript"
+msgstr "Exposant"
+
+msgid "RemoveFormat"
+msgstr "Supprimer la mise en forme"
+
+msgid "TextColor"
+msgstr "Couleur Texte"
+
+msgid "BackColor"
+msgstr "Couleur Fond"
+
+msgid "AlignLeft"
+msgstr "Aligner à Gauche"
+
+msgid "Center"
+msgstr "Centrer"
+
+msgid "AlignRight"
+msgstr "Aligner à Droite"
+
+msgid "OrderedList"
+msgstr "Liste numérotée"
+
+msgid "UnorderedList"
+msgstr "Liste à puces"
+
+msgid "Outdent"
+msgstr "Diminuer le retrait"
+
+msgid "Indent"
+msgstr "Augmenter le retrait"
+
+msgid "InsertAnchor"
+msgstr "Insérer une ancre"
+
+msgid "InsertFile"
+msgstr "Insérer Fichier"
+
+msgid "InsertImage"
+msgstr "Insérer Image"
+
+msgid "InsertLink"
+msgstr "Insérer Lien"
+
+msgid "InsertRule"
+msgstr "Insérer Trait"
+
+msgid "InsertTable"
+msgstr "Insérer Tableau"
+
+msgid "Toolbox"
+msgstr "Boîte à Outil"
+
+msgid "Undo"
+msgstr "Annuler"
+
+msgid "Redo"
+msgstr "Rétablir"
+
+msgid "EnterLinkURL"
+msgstr "Entrer l'URL du lien"
+
+msgid "EnterAnchorName"
+msgstr "Entrer le nom de l'ancre"
+
+msgid "EnterImageURL"
+msgstr "Entrer l'URL de l'image"
+
+msgid "EnterTableRows"
+msgstr "Nombre de Lignes"
+
+msgid "EnterTableColumns"
+msgstr "Nombre de Colonnes"
+
+msgid "EnterTableBorder"
+msgstr "Type de Bordure"
+
+msgid "TableWithHead"
+msgstr "Tableau à en-tête"
+
+msgid "TableWithoutHead"
+msgstr "Tableau sans en-tête"
+
+msgid "TidyStart"
+msgstr "Nettoyage..."
+
+msgid "TidyStop"
+msgstr "Nettoyage terminé."
+
+msgid "TidyError"
+msgstr "Erreurs detectées dans le bloc de texte."
--- /dev/null
+# Gettext Epoz-Language-File: hu (Hungarian)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: dtamas@pressflex.com\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: hu\n"
+"Language-Name: Hungarian\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Normál"
+
+msgid "Paragraph"
+msgstr "Bekezdés"
+
+msgid "Heading1"
+msgstr "Címsor 1"
+
+msgid "Heading2"
+msgstr "Címsor 2"
+
+msgid "Heading3"
+msgstr "Címsor 3"
+
+msgid "Heading4"
+msgstr "Címsor 4"
+
+msgid "Heading5"
+msgstr "Címsor 5"
+
+msgid "Heading6"
+msgstr "Címsor 6"
+
+msgid "Formatted"
+msgstr "Formázott"
+
+msgid "Bold"
+msgstr "Félkövér"
+
+msgid "Italic"
+msgstr "Kurzív"
+
+msgid "Underline"
+msgstr "Aláhúzott"
+
+msgid "Strikethrough"
+msgstr "Áthúzott"
+
+msgid "Subscript"
+msgstr "Alsó index"
+
+msgid "Superscript"
+msgstr "Felsô index"
+
+msgid "TextColor"
+msgstr "Szövegszín"
+
+msgid "BackColor"
+msgstr "Háttérszín"
+
+msgid "AlignLeft"
+msgstr "Balra igazított"
+
+msgid "Center"
+msgstr "Közép"
+
+msgid "AlignRight"
+msgstr "Jobbra igazított"
+
+msgid "OrderedList"
+msgstr "Sorszámozott lista"
+
+msgid "UnorderedList"
+msgstr "Felsorolás"
+
+msgid "Outdent"
+msgstr "Kihúzás"
+
+msgid "Indent"
+msgstr "Behúzás"
+
+msgid "InsertLink"
+msgstr "Hivatkozás beszúrása"
+
+msgid "InsertImage"
+msgstr "Kép beszúrása"
+
+msgid "InsertRule"
+msgstr "Elválasztó beszúrása"
+
+msgid "InsertTable"
+msgstr "Táblázat beszúrása"
+
+msgid "Toolbox"
+msgstr "Eszköztár"
+
+msgid "Undo"
+msgstr "Vissza"
+
+msgid "Redo"
+msgstr "Újra"
+
+msgid "EnterLinkURL"
+msgstr "Írja be a hivatkozás URL-jét"
+
+msgid "EnterImageURL"
+msgstr "Írja be a kép URL-jét"
+
+msgid "EnterTableRows"
+msgstr "Sorok száma"
+
+msgid "EnterTableColumns"
+msgstr "Oszlopok száma"
+
+msgid "EnterTableBorder"
+msgstr "Keretvastagság"
+
+msgid "TableWithHead"
+msgstr "Táblázat fejléccel"
+
+msgid "TableWithoutHead"
+msgstr "Táblázat fejléc nélkül"
--- /dev/null
+# Gettext Epoz-Language-File: it (Italiano)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: nbe@libero.it\n"
+"Language-Team: maik.jablonski@uni-bielefeld.de, nbe@libero.it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: it\n"
+"Language-Name: Italiano\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: it-ch\n"
+
+
+msgid "Normal"
+msgstr "Normale"
+
+msgid "Paragraph"
+msgstr "Paragrafo"
+
+msgid "Heading1"
+msgstr "Titolo 1"
+
+msgid "Heading2"
+msgstr "Titolo 2"
+
+msgid "Heading3"
+msgstr "Titolo 3"
+
+msgid "Heading4"
+msgstr "Titolo 4"
+
+msgid "Heading5"
+msgstr "Titolo 5"
+
+msgid "Heading6"
+msgstr "Titolo 6"
+
+msgid "Formatted"
+msgstr "Formattato"
+
+msgid "Bold"
+msgstr "Grassetto"
+
+msgid "Italic"
+msgstr "Italico"
+
+msgid "Underline"
+msgstr "Sottolineato"
+
+msgid "Subscript"
+msgstr "Pedice"
+
+msgid "Superscript"
+msgstr "Apice"
+
+msgid "TextColor"
+msgstr "Colore testo"
+
+msgid "BackColor"
+msgstr "Colore sfondo"
+
+msgid "AlignLeft"
+msgstr "Allinea sinistra"
+
+msgid "Center"
+msgstr "Centra"
+
+msgid "AlignRight"
+msgstr "Allinea destra"
+
+msgid "OrderedList"
+msgstr "Lista numerata"
+
+msgid "UnorderedList"
+msgstr "Lista puntata"
+
+msgid "Outdent"
+msgstr "Riduci rientro"
+
+msgid "Indent"
+msgstr "Aumenta rientro"
+
+msgid "InsertLink"
+msgstr "Inserisci link"
+
+msgid "InsertImage"
+msgstr "Inserisci immagine"
+
+msgid "InsertRule"
+msgstr "Inserisci separatore"
+
+msgid "InsertTable"
+msgstr "Inserisci tabella"
+
+msgid "Toolbox"
+msgstr "Toolbox"
+
+msgid "Undo"
+msgstr "Annulla"
+
+msgid "Redo"
+msgstr "Ripeti"
+
+msgid "EnterLinkURL"
+msgstr "Inserisci URL link"
+
+msgid "EnterImageURL"
+msgstr "Inserisci immagine link"
+
+msgid "EnterTableRows"
+msgstr "Inserisci righe"
+
+msgid "EnterTableColumns"
+msgstr "Inserisci colonne"
+
+msgid "EnterTableBorder"
+msgstr "Inserisci bordo"
--- /dev/null
+# Gettext Epoz-Language-File: nl (Dutch)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: ad.schellevis@imasgroep.nl\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: nl\n"
+"Language-Name: Dutch\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: nl-be\n"
+
+
+msgid "Normal"
+msgstr "Normaal"
+
+msgid "Paragraph"
+msgstr "Paragraaf"
+
+msgid "Heading1"
+msgstr "Kop 1"
+
+msgid "Heading2"
+msgstr "Kop 2"
+
+msgid "Heading3"
+msgstr "Kop 3"
+
+msgid "Heading4"
+msgstr "Kop 4"
+
+msgid "Heading5"
+msgstr "Kop 5"
+
+msgid "Heading6"
+msgstr "Kop 6"
+
+msgid "Formatted"
+msgstr "Opgemaakt"
+
+msgid "Bold"
+msgstr "Vet"
+
+msgid "Italic"
+msgstr "Cursief"
+
+msgid "Underline"
+msgstr "Onderstreept"
+
+msgid "Subscript"
+msgstr "Subscript"
+
+msgid "Superscript"
+msgstr "Superscript"
+
+msgid "TextColor"
+msgstr "Tekst kleur"
+
+msgid "BackColor"
+msgstr "Achtergrond kleur"
+
+msgid "AlignLeft"
+msgstr "Links uitlijnen"
+
+msgid "Center"
+msgstr "Centreren"
+
+msgid "AlignRight"
+msgstr "Rechts uitlijnen"
+
+msgid "OrderedList"
+msgstr "Nummering"
+
+msgid "UnorderedList"
+msgstr "Opsommingstekens"
+
+msgid "Outdent"
+msgstr "Inspringen verkleinen"
+
+msgid "Indent"
+msgstr "Inspringen vergroten"
+
+msgid "InsertLink"
+msgstr "Hyperlink invoegen"
+
+msgid "InsertImage"
+msgstr "Plaatje invoegen"
+
+msgid "InsertRule"
+msgstr "Rand invoegen"
+
+msgid "InsertTable"
+msgstr "Tabel invoegen"
+
+msgid "Toolbox"
+msgstr "Toolbox"
+
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+msgid "Redo"
+msgstr "Herhalen"
+
+msgid "EnterLinkURL"
+msgstr "Ingeven hyperlink URL"
+
+msgid "EnterImageURL"
+msgstr "Ingeven locatie plaatje"
+
+msgid "EnterTableRows"
+msgstr "Invoeren Rijen"
+
+msgid "EnterTableColumns"
+msgstr "Invoegen Kolommen"
+
+msgid "EnterTableBorder"
+msgstr "Invoegen Kader"
--- /dev/null
+# Gettext Epoz-Language-File: no (Norwegian)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: einar.ness.jensen@hf.ntnu.no\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: no\n"
+"Language-Name: Norwegian\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: epoz\n"
+"X-Is-Fallback-For: nb, nn\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Avsnitt"
+
+msgid "Heading1"
+msgstr "Overskrift 1"
+
+msgid "Heading2"
+msgstr "Overskrift 2"
+
+msgid "Heading3"
+msgstr "Overskrift 3"
+
+msgid "Heading4"
+msgstr "Overskrift 4"
+
+msgid "Heading5"
+msgstr "Overskrift 5"
+
+msgid "Heading6"
+msgstr "Overskrift 6"
+
+msgid "Formatted"
+msgstr "Preformatert"
+
+msgid "Bold"
+msgstr "Fet"
+
+msgid "Italic"
+msgstr "Kursiv"
+
+msgid "Underline"
+msgstr "Understreket"
+
+msgid "Strikethrough"
+msgstr "Gjennomstreket"
+
+msgid "Subscript"
+msgstr "Subskrift"
+
+msgid "Superscript"
+msgstr "Superskrift"
+
+msgid "RemoveFormat"
+msgstr "Fjern Formatering"
+
+msgid "TextColor"
+msgstr "Tekstfarge"
+
+msgid "BackColor"
+msgstr "Bakgrunnsfarge"
+
+msgid "AlignLeft"
+msgstr "Venstrejustert"
+
+msgid "Center"
+msgstr "Midtjustert"
+
+msgid "AlignRight"
+msgstr "Høyrejustert"
+
+msgid "OrderedList"
+msgstr "Ordnet Liste"
+
+msgid "UnorderedList"
+msgstr "Uordnet Liste"
+
+msgid "Outdent"
+msgstr "Minsk Innrykk"
+
+msgid "Indent"
+msgstr "Øk Innrykk"
+
+msgid "InsertLink"
+msgstr "Sett inn Lenke"
+
+msgid "InsertAnchor"
+msgstr "Sett inn Anker"
+
+msgid "InsertImage"
+msgstr "Sett inn Bilde"
+
+msgid "InsertRule"
+msgstr "Sett inn Horisontal Linje"
+
+msgid "InsertTable"
+msgstr "Sett inn Tabell"
+
+msgid "Toolbox"
+msgstr "Verktøy"
+
+msgid "Undo"
+msgstr "Angre"
+
+msgid "Redo"
+msgstr "Gjenta"
+
+msgid "EnterLinkURL"
+msgstr "Skriv inn Lenke-URL"
+
+msgid "EnterAnchorName"
+msgstr "Skriv inn Navn pĺ Anker"
+
+msgid "EnterImageURL"
+msgstr "Skriv inn Bilde-URL"
+
+msgid "EnterTableRows"
+msgstr "Antall Rader"
+
+msgid "EnterTableColumns"
+msgstr "Antall Kolonner"
+
+msgid "EnterTableBorder"
+msgstr "Bredde Kantlinje"
+
+msgid "TableWithHead"
+msgstr "Tabell med Topplinje"
+
+msgid "TableWithoutHead"
+msgstr "Tabell uten Topplinje"
--- /dev/null
+# Gettext Epoz-Language-File: pl (Polish)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: qbak@qbak.net\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: pl\n"
+"Language-Name: Polish\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Normalny"
+
+msgid "Paragraph"
+msgstr "Akapit"
+
+msgid "Heading1"
+msgstr "Nagłówek 1"
+
+msgid "Heading2"
+msgstr "Nagłówek 2"
+
+msgid "Heading3"
+msgstr "Nagłówek 3"
+
+msgid "Heading4"
+msgstr "Nagłówek 4"
+
+msgid "Heading5"
+msgstr "Nagłówek 5"
+
+msgid "Heading6"
+msgstr "Nagłówek 6"
+
+msgid "Formatted"
+msgstr "Sformatowany"
+
+msgid "Bold"
+msgstr "Pogrubienie"
+
+msgid "Italic"
+msgstr "Kursywa"
+
+msgid "Underline"
+msgstr "Podkreślenie"
+
+msgid "Subscript"
+msgstr "Indeks dolny"
+
+msgid "Superscript"
+msgstr "Indeks górny"
+
+msgid "TextColor"
+msgstr "Kolor tekstu"
+
+msgid "BackColor"
+msgstr "Kolor tła"
+
+msgid "AlignLeft"
+msgstr "Wyrównanie do lewej"
+
+msgid "Center"
+msgstr "Wyśrodkowanie"
+
+msgid "AlignRight"
+msgstr "Wyrównanie do prawej"
+
+msgid "OrderedList"
+msgstr "Lista numerowana"
+
+msgid "UnorderedList"
+msgstr "Lista wypunktowana"
+
+msgid "Outdent"
+msgstr "Zmniejsz wcięcie"
+
+msgid "Indent"
+msgstr "Zwiększ wcięcie"
+
+msgid "InsertLink"
+msgstr "Wstaw odnośnik"
+
+msgid "InsertImage"
+msgstr "Wstaw obrazek"
+
+msgid "InsertRule"
+msgstr "Wstaw linijkę"
+
+msgid "InsertTable"
+msgstr "Wstaw tabelę"
+
+msgid "Toolbox"
+msgstr "Narzędzia"
+
+msgid "Undo"
+msgstr "Cofnij"
+
+msgid "Redo"
+msgstr "Powtórz"
+
+msgid "EnterLinkURL"
+msgstr "Wprowadź URL odnośnika"
+
+msgid "EnterImageURL"
+msgstr "Wprowadź URL obrazka"
+
+msgid "EnterTableRows"
+msgstr "Wprowadź wiersze"
+
+msgid "EnterTableColumns"
+msgstr "Wprowadź kolumny"
+
+msgid "EnterTableBorder"
+msgstr "Wprowadź ramkę"
--- /dev/null
+# Gettext Epoz-Language-File: pt-br (Portuguese Brazil)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: Luiz Fernando Pasqual S. Souza <pasquall@amcham.com.br>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: pt-br\n"
+"Language-Name: Portuguese Brazil\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Parágrafo"
+
+msgid "Heading1"
+msgstr "Cabeçalho 1"
+
+msgid "Heading2"
+msgstr "Cabeçalho 2"
+
+msgid "Heading3"
+msgstr "Cabeçalho 3"
+
+msgid "Heading4"
+msgstr "Cabeçalho 4"
+
+msgid "Heading5"
+msgstr "Cabeçalho 5"
+
+msgid "Heading6"
+msgstr "Cabeçalho 6"
+
+msgid "Formatted"
+msgstr "Formatado"
+
+msgid "Bold"
+msgstr "Negrito"
+
+msgid "Italic"
+msgstr "Itálico"
+
+msgid "Underline"
+msgstr "Sublinhado"
+
+msgid "Strikethrough"
+msgstr "Riscado"
+
+msgid "Subscript"
+msgstr "Subescrito"
+
+msgid "Superscript"
+msgstr "Sobrescrito"
+
+msgid "RemoveFormat"
+msgstr "Remover formatação"
+
+msgid "TextColor"
+msgstr "Cor do texto"
+
+msgid "BackColor"
+msgstr "Cor do fundo"
+
+msgid "AlignLeft"
+msgstr "Alinhar à esquerda"
+
+msgid "Center"
+msgstr "Centralizar"
+
+msgid "AlignRight"
+msgstr "Alinhar à direita"
+
+msgid "OrderedList"
+msgstr "Lista numerada"
+
+msgid "UnorderedList"
+msgstr "Lista ordenada"
+
+msgid "Outdent"
+msgstr "Diminuir parágrafo"
+
+msgid "Indent"
+msgstr "Aumentar parágrafo"
+
+msgid "InsertLink"
+msgstr "Inserir Link"
+
+msgid "InsertAnchor"
+msgstr "Inserir âncora"
+
+msgid "InsertImage"
+msgstr "Inserir Imagem"
+
+msgid "InsertRule"
+msgstr "Inserir Linha"
+
+msgid "InsertTable"
+msgstr "Inserir Tabela"
+
+msgid "Toolbox"
+msgstr "Caixa de ferramentas"
+
+msgid "Undo"
+msgstr "Voltar"
+
+msgid "Redo"
+msgstr "Refazer"
+
+msgid "EnterLinkURL"
+msgstr "URL do link"
+
+msgid "EnterAnchorName"
+msgstr "Nome da âncora"
+
+msgid "EnterImageURL"
+msgstr "URL da imagem"
+
+msgid "EnterTableRows"
+msgstr "Linhas"
+
+msgid "EnterTableColumns"
+msgstr "Colunas"
+
+msgid "EnterTableBorder"
+msgstr "Bordas"
+
+msgid "TableWithHead"
+msgstr "Tabela com cabeçalho"
+
+msgid "TableWithoutHead"
+msgstr "Tabela sem cabeçalho"
--- /dev/null
+# Epoz-Language-File: pt (Portuguese)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: nteixeira@bmc.pt\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: pt\n"
+"Language-Name: Portuguese\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Normal"
+
+msgid "Paragraph"
+msgstr "Parágrafo"
+
+msgid "Heading1"
+msgstr "Cabeçalho 1"
+
+msgid "Heading2"
+msgstr "Cabeçalho 2"
+
+msgid "Heading3"
+msgstr "Cabeçalho 3"
+
+msgid "Heading4"
+msgstr "Cabeçalho 4"
+
+msgid "Heading5"
+msgstr "Cabeçalho 5"
+
+msgid "Heading6"
+msgstr "Cabeçalho 6"
+
+msgid "Formatted"
+msgstr "Formatado"
+
+msgid "Bold"
+msgstr "Negrito"
+
+msgid "Italic"
+msgstr "Itálico"
+
+msgid "Underline"
+msgstr "Sublinhado"
+
+msgid "Strikethrough"
+msgstr "Traçado"
+
+msgid "Subscript"
+msgstr "Subescrito"
+
+msgid "Superscript"
+msgstr "Sobrescrito"
+
+msgid "RemoveFormat"
+msgstr "Retirar Formatação"
+
+msgid "TextColor"
+msgstr "Cor do texto"
+
+msgid "BackColor"
+msgstr "Cor do fundo"
+
+msgid "AlignLeft"
+msgstr "Alinhar à esquerda"
+
+msgid "Center"
+msgstr "Centrar"
+
+msgid "AlignRight"
+msgstr "Alinhar à direita"
+
+msgid "OrderedList"
+msgstr "Lista numerada"
+
+msgid "UnorderedList"
+msgstr "Lista ordenada"
+
+msgid "Outdent"
+msgstr "Diminuir parágrafo"
+
+msgid "Indent"
+msgstr "Aumentar parágrafo"
+
+msgid "InsertLink"
+msgstr "Inserir Link"
+
+msgid "InsertImage"
+msgstr "Inserir Imagem"
+
+msgid "InsertRule"
+msgstr "Inserir Linha"
+
+msgid "InsertTable"
+msgstr "Inserir Tabela"
+
+msgid "Toolbox"
+msgstr "Caixa de ferramentas"
+
+msgid "Undo"
+msgstr "Desfazer"
+
+msgid "Redo"
+msgstr "Refazer"
+
+msgid "EnterLinkURL"
+msgstr "URL do link"
+
+msgid "EnterImageURL"
+msgstr "URL da imagem"
+
+msgid "EnterTableRows"
+msgstr "Número de Linhas"
+
+msgid "EnterTableColumns"
+msgstr "Número de Colunas"
+
+msgid "EnterTableBorder"
+msgstr "Tamanho das Bordas"
+
+msgid "TableWithHead"
+msgstr "Tabela com cabeçalho"
+
+msgid "TableWithoutHead"
+msgstr "Tabela sem cabeçalho"
--- /dev/null
+# Gettext Epoz-Language-File: ru (Russian (UTF-8))
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: Theo (theo@ua.fm)\n"
+"Language-Team: Sergey V. Volobuev, Theo (theo@ua.fm)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: ru\n"
+"Language-Name: Russian\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "Обычный"
+
+msgid "Paragraph"
+msgstr "Абзац"
+
+msgid "Heading1"
+msgstr "Заголовок 1"
+
+msgid "Heading2"
+msgstr "Заголовок 2"
+
+msgid "Heading3"
+msgstr "Заголовок 3"
+
+msgid "Heading4"
+msgstr "Заголовок 4"
+
+msgid "Heading5"
+msgstr "Заголовок 5"
+
+msgid "Heading6"
+msgstr "Заголовок 6"
+
+msgid "Formatted"
+msgstr "Форматированный"
+
+msgid "Bold"
+msgstr "Полужирный"
+
+msgid "Italic"
+msgstr "Курсив"
+
+msgid "Underline"
+msgstr "Подчеркнутый"
+
+msgid "Strikethrough"
+msgstr "Зачёркнутый"
+
+msgid "Subscript"
+msgstr "Нижний индекс"
+
+msgid "Superscript"
+msgstr "Верхний индекс"
+
+msgid "RemoveFormat"
+msgstr "Убрать форматирование"
+
+msgid "TextColor"
+msgstr "Цвет шрифта"
+
+msgid "BackColor"
+msgstr "Цвет фона"
+
+msgid "AlignLeft"
+msgstr "По левому краю"
+
+msgid "Center"
+msgstr "По центру"
+
+msgid "AlignRight"
+msgstr "По правому краю"
+
+msgid "OrderedList"
+msgstr "Нумерация"
+
+msgid "UnorderedList"
+msgstr "Маркеры"
+
+msgid "Outdent"
+msgstr "Уменьшить отступ"
+
+msgid "Indent"
+msgstr "Увеличить отступ"
+
+msgid "InsertLink"
+msgstr "Вставить гиперссылку"
+
+msgid "InsertAnchor"
+msgstr "Вставить якорь"
+
+msgid "InsertImage"
+msgstr "Вставить изображение"
+
+msgid "InsertRule"
+msgstr "Вставить линейку"
+
+msgid "InsertTable"
+msgstr "Вставить таблицу"
+
+msgid "Toolbox"
+msgstr "Инструменты"
+
+msgid "Undo"
+msgstr "Отменить"
+
+msgid "Redo"
+msgstr "Повторить"
+
+msgid "EnterLinkURL"
+msgstr "Введите URL страницы"
+
+msgid "EnterAnchorName"
+msgstr "Введите названия якоря"
+
+msgid "EnterImageURL"
+msgstr "Введите URL изображения"
+
+msgid "EnterTableRows"
+msgstr "Число строк"
+
+msgid "EnterTableColumns"
+msgstr "Число столбцов"
+
+msgid "EnterTableBorder"
+msgstr "Ширина границы"
+
+msgid "TableWithHead"
+msgstr "Таблица с заголовком"
+
+msgid "TableWithoutHead"
+msgstr "Таблица без заголовка"
+
+msgid "HTML"
+msgstr "HTML"
--- /dev/null
+# Gettext Epoz-Language-File: zh (Chinese)
+msgid ""
+msgstr ""
+"Project-Id-Version: EPOZ 0.9\n"
+"POT-Creation-Date: 2005-01-29 19:18+0100\n"
+"PO-Revision-Date: 2005-01-29 19:18+0100\n"
+"Last-Translator: panjy@plone.cn\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language-Code: zh\n"
+"Language-Name: Chinese\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: epoz\n"
+
+
+msgid "Normal"
+msgstr "常规"
+
+msgid "Paragraph"
+msgstr "段落"
+
+msgid "Heading1"
+msgstr "标题 1"
+
+msgid "Heading2"
+msgstr "标题 2"
+
+msgid "Heading3"
+msgstr "标题 3"
+
+msgid "Heading4"
+msgstr "标题 4"
+
+msgid "Heading5"
+msgstr "标题 5"
+
+msgid "Heading6"
+msgstr "标题 6"
+
+msgid "Formatted"
+msgstr "保持格式"
+
+msgid "Bold"
+msgstr "加粗"
+
+msgid "Italic"
+msgstr "倾斜"
+
+msgid "Underline"
+msgstr "下划线"
+
+msgid "Strikethrough"
+msgstr "中划线"
+
+msgid "Subscript"
+msgstr "下标"
+
+msgid "Superscript"
+msgstr "上标"
+
+msgid "RemoveFormat"
+msgstr "去除格式"
+
+msgid "TextColor"
+msgstr "文字颜色"
+
+msgid "BackColor"
+msgstr "背景颜色"
+
+
+msgid "AlignLeft"
+msgstr "左对齐"
+
+msgid "Center"
+msgstr "居中"
+
+msgid "AlignRight"
+msgstr "右对齐"
+
+msgid "OrderedList"
+msgstr "有序清单"
+
+msgid "UnorderedList"
+msgstr "无序清单"
+
+msgid "Outdent"
+msgstr "减少缩进"
+
+msgid "Indent"
+msgstr "增加缩进"
+
+msgid "InsertLink"
+msgstr "添加链接"
+
+msgid "InsertAnchor"
+msgstr "添加书签(Anchor)"
+
+msgid "InsertImage"
+msgstr "添加图片"
+
+msgid "InsertRule"
+msgstr "添加尺线"
+
+msgid "InsertTable"
+msgstr "添加表格"
+
+msgid "Toolbox"
+msgstr "工具箱"
+
+
+msgid "Undo"
+msgstr "撤销"
+
+msgid "Redo"
+msgstr "恢复"
+
+
+msgid "EnterLinkURL"
+msgstr "输入链接的URL地址"
+
+msgid "EnterAnchorName"
+msgstr "输入书签(Anchor)名"
+
+msgid "EnterImageURL"
+msgstr "输入图片的UR地址"
+
+
+msgid "EnterTableRows"
+msgstr "输入行数"
+
+msgid "EnterTableColumns"
+msgstr "输入列数"
+
+msgid "EnterTableBorder"
+msgstr "输入边框"
+
+msgid "TableWithHead"
+msgstr "带标题的表格"
+
+msgid "TableWithoutHead"
+msgstr "不带标题的表格"
--- /dev/null
+How do I install mxTidy with Zope / Plone?
+
+Here are the steps. Be sure to use the same python as your Zope / Plone uses
+for setting up mxTidy correctly!
+
+1) Download these packages:
+
+http://www.egenix.com/files/python/egenix-mx-base-2.0.5.tar.gz
+http://www.egenix.com/files/python/egenix-mx-experimental-0.8.0.tar.gz
+
+2) Untar the packages
+
+tar xfvz egenix-mx-base-2.0.5.tar.gz
+tar xfvz egenix-mx-experimental-0.8.0.tar.gz
+
+3) Change to egenix-mx-base-2.0.5
+
+python setup.py install
+
+4) Change to egenix-mx-experimental-0.8.0
+
+python setup.py install
+
+Maybe you'll get an error like "Can't compile etc.pp."...
+
+If so, copy the "patched" file below (it just skips
+the "buggy" number-module which isn't needed for tidy) to
+egenix-mx-experimental-0.8.0/mxEXPERIMENTAL.py and try again.
+
+5) Restart your Zope / Plone to take changes effect!
+
+-----------------------------------------------------
+patched mxEXPERIMENTAL.py for easier mxTidy-Setup
+-----------------------------------------------------
+
+#!/usr/local/bin/python2.0
+
+""" Configuration for the eGenix mx EXPERIMENTAL distribution.
+
+ Copyright (c) 1997-2000, Marc-Andre Lemburg; mailto:mal(ät)lemburg.com
+ Copyright (c) 2000-2003, eGenix.com Software GmbH;
+mailto:info(ät)egenix.com
+ See the documentation for further information on copyrights,
+ or contact the author. All Rights Reserved.
+"""
+from mxSetup import mx_Extension
+import sys, glob, os
+
+#
+# Package version
+#
+version = '0.8.0'
+
+#
+# Setup information
+#
+name = "egenix-mx-experimental"
+
+#
+# Meta-Data
+#
+description = "eGenix mx-Extensions - EXPERIMENTAL package"
+long_description = """\
+The eGenix mx Extension Series are a collection of
+Python extensions written in ANSI C and Python
+which provide a large spectrum of useful additions
+to everyday Python programming.
+
+This package includes experimental subpackages of the
+series. Please understand that the software in these
+packages is still in alpha state and does not meet the
+quality standards of production quality software.
+
+This software is brought to you by eGenix.com. The included
+subpackages are either covered by the eGenix.com Public
+License or the eGenix.com Commercial License and/or other
+licenses. Please check the subpackage documentation for
+details or contact eGenix.com for more license information.
+"""
+license = (
+"Copyright (c) 2000-2003, eGenix.com Software GmbH, All Rights Reserved"
+)
+author = "Marc-Andre Lemburg"
+author_email = "mal(ät)egenix.com"
+url = "http://www.egenix.com/files/python/eGenix-mx-Extensions.html"
+
+#
+# Python packages
+#
+packages = [
+
+ 'mx',
+
+ # mxTidy
+ 'mx.Tidy',
+ 'mx.Tidy.mxTidy',
+
+ # mxURL
+ 'mx.URL',
+ 'mx.URL.mxURL',
+
+ # mxUID
+ 'mx.UID',
+ 'mx.UID.mxUID',
+
+ ]
+
+#
+# C libraries
+#
+
+libraries = [
+
+ # libtidy.a needed by mxTidy
+ ('libtidy',
+ {'sources':
+ glob.glob(os.path.join('mx','Tidy','mxTidy','libtidy','*.c')),
+ 'include_dirs':
+ [os.path.join('mx','Tidy','mxTidy','libtidy')],
+ 'macros':
+ [('COMPILING_TIDY', 1)],
+ }),
+
+ ]
+
+#
+# C Extensions
+#
+ext_modules = [
+
+ # mxTidy
+ mx_Extension('mx.Tidy.mxTidy.mxTidy',
+ ['mx/Tidy/mxTidy/mxTidy.c'],
+ include_dirs=['mx/Tidy/mxTidy',
+ 'mx/Tidy/mxTidy/libtidy'],
+ libraries=['libtidy'],
+ library_dirs=['mx/Tidy/mxTidy/libtidy']),
+
+ # mxURL
+ mx_Extension('mx.URL.mxURL.mxURL',
+ ['mx/URL/mxURL/mxURL.c'],
+ include_dirs=['mx/URL/mxURL']),
+
+ # mxUID
+ mx_Extension('mx.UID.mxUID.mxUID',
+ ['mx/UID/mxUID/mxUID.c'],
+ include_dirs=['mx/UID/mxUID']),
+
+ ]
+
+#
+# Data files
+#
+data_files = [
+
+ # mxTidy
+ 'mx/Tidy/Doc/mxTidy.html',
+ 'mx/Tidy/Doc/mxLicense.html',
+ 'mx/Tidy/Doc/Overview.html',
+ 'mx/Tidy/Doc/pending.html',
+ 'mx/Tidy/Doc/release-notes.html',
+ 'mx/Tidy/Doc/tidy.gif',
+ 'mx/Tidy/COPYRIGHT',
+ 'mx/Tidy/LICENSE',
+ 'mx/Tidy/README',
+ 'mx/Tidy/mxTidy/mxTidy.h',
+ 'mx/Tidy/mxTidy/mxh.h',
+ 'mx/Tidy/mxTidy/input.html',
+
+ # mxURL
+ 'mx/URL/Doc/mxURL.html',
+ 'mx/URL/Doc/mxLicense.html',
+ 'mx/URL/COPYRIGHT',
+ 'mx/URL/LICENSE',
+ 'mx/URL/README',
+ 'mx/URL/mxURL/mxURL.h',
+ 'mx/URL/mxURL/mxh.h',
+
+ # mxUID
+ 'mx/UID/Doc/mxUID.html',
+ 'mx/UID/Doc/mxLicense.html',
+ 'mx/UID/COPYRIGHT',
+ 'mx/UID/LICENSE',
+ 'mx/UID/README',
+ 'mx/UID/mxUID/mxUID.h',
+ 'mx/UID/mxUID/mxh.h',
+
+ ]