[Checkins] SVN: Products.ExternalEditor/trunk/ Reformat readme and
changes as rest
Hanno Schlichting
plone at hannosch.info
Sat May 3 15:22:03 EDT 2008
Log message for revision 86276:
Reformat readme and changes as rest
Changed:
U Products.ExternalEditor/trunk/CHANGES.txt
U Products.ExternalEditor/trunk/README.txt
U Products.ExternalEditor/trunk/setup.py
-=-
Modified: Products.ExternalEditor/trunk/CHANGES.txt
===================================================================
--- Products.ExternalEditor/trunk/CHANGES.txt 2008-05-03 19:21:38 UTC (rev 86275)
+++ Products.ExternalEditor/trunk/CHANGES.txt 2008-05-03 19:22:02 UTC (rev 86276)
@@ -1,284 +1,315 @@
-External Editor Change Log
+Change Log
+==========
- unreleased - 0.9.4
+unreleased - 0.9.4
+------------------
- - Updated package metadata to be usable as a package.
+ - Updated package metadata to be usable as a package.
- 01/03/2007 - 0.9.3 Release
- - Fixed issue with 'manage_FTPget' overriding the 'Content-Type'
- header.
+01/03/2007 - 0.9.3
+------------------
- - Only run ExpandEnvironmentStrings on win32 systems.
+ - Fixed issue with 'manage_FTPget' overriding the 'Content-Type'
+ header.
- 9/14/2006 - 0.9.2 Release
+ - Only run ExpandEnvironmentStrings on win32 systems.
- - Added 'skip_data' option to make External Editor send out only
- the metadata part and skip appending data to the 'body'.
- - Add a simple callback registry that can be used to add extra
- metadata headers or set special response headers when a file is
- edited through External Editor.
+9/14/2006 - 0.9.2
+-----------------
- - Use rfc822.Message for parsing the metadata of the file being
- edited.
+ - Added 'skip_data' option to make External Editor send out only
+ the metadata part and skip appending data to the 'body'.
- - Don't emit a warning about deprecated 'methods' in Zope >= 2.10.
+ - Add a simple callback registry that can be used to add extra
+ metadata headers or set special response headers when a file is
+ edited through External Editor.
- - Fixed acquisition issue in manage_main.dtml to sync up with the
- same fix applied to Zope.
+ - Use rfc822.Message for parsing the metadata of the file being
+ edited.
- 6/23/2005 - 0.9.1 Release
+ - Don't emit a warning about deprecated 'methods' in Zope >= 2.10.
- - Older pyc files for plugins were included in the 0.9 release.
- This version has the most up to date plugins.
+ - Fixed acquisition issue in manage_main.dtml to sync up with the
+ same fix applied to Zope.
- 6/20/2005 - 0.9 Release
- - When using the Excel plugin, errors were seen by users like
- "TypeError: This object does not support enumeration". We now
- make the user deal with these.
+6/23/2005 - 0.9.1
+-----------------
- - When using the Excel plugin, errors were intermittently raised to the
- user in the form "Fatal error: <unknown>.Path" and the user could
- subsequently not save the document back to Zope because the
- external editor process had quit.
+ - Older pyc files for plugins were included in the 0.9 release.
+ This version has the most up to date plugins.
- - Changes to documents intermittently may not have been saved back to Zope
- when using any plugin that involved COM (Word, Excel, Powerpoint, etc).
- - If Word was exited before a user actively saved, if there were
- outstanding changes in the document being edited, those changes
- would not be saved to the server despite the user answering
- "yes" to the "do you want to save before you exit" dialog
- presented by Word.
+6/20/2005 - 0.9
+---------------
- - The "title" attribute of the object being externally edited is
- now available within the set of headers returned by EE to the
- zopeedit client.
+ - When using the Excel plugin, errors were seen by users like
+ "TypeError: This object does not support enumeration". We now
+ make the user deal with these.
- - Detecting whether the client has External Editor installed from
- within IE using JavaScript or VBScript is now possible, assuming
- that the client software is installed via the InnoSetup
- installer. See "win32/ocx.txt" for more info.
+ - When using the Excel plugin, errors were intermittently raised to the
+ user in the form "Fatal error: <unknown>.Path" and the user could
+ subsequently not save the document back to Zope because the
+ external editor process had quit.
- - External Editor now compatible with objects that return a
- "filestream iterator" in Zope 2.7.1+. (if upgrading: this fix
- does not require an update to EE client, just the EE Zope
- product).
+ - Changes to documents intermittently may not have been saved back to Zope
+ when using any plugin that involved COM (Word, Excel, Powerpoint, etc).
- - Properly escape hyphens in man page. Thanks to Federico Sevilla III.
-
- - Check if the editor was launched before locking the file in Zope. This
- prevents errors if the editor is closed before the lock request
- completes.
-
- - Do not ask the user what editor to use on Posix platforms. Instead just
- tell the user to edit the config file. The askstring()
- function does not work with a hidden root Tk window in Python 2.3.4.
- Thanks to Christopher Mann.
+ - If Word was exited before a user actively saved, if there were
+ outstanding changes in the document being edited, those changes
+ would not be saved to the server despite the user answering
+ "yes" to the "do you want to save before you exit" dialog
+ presented by Word.
- 7/13/04 - 0.8 release
-
- - Add external editor icon to ZMI breadcrumbs for editable objects.
+ - The "title" attribute of the object being externally edited is
+ now available within the set of headers returned by EE to the
+ zopeedit client.
- - Compiled windows helper app binary using Python 2.3.4, Pythonwin build
- 163 and py2exe 0.5.
+ - Detecting whether the client has External Editor installed from
+ within IE using JavaScript or VBScript is now possible, assuming
+ that the client software is installed via the InnoSetup
+ installer. See "win32/ocx.txt" for more info.
- - Add Dreamweaver plugin contributed by Manuel Aristaránn. Thanks also
- to Anton Stonor.
-
- - Add ZMI support for Zope 2.7's ordered folder objects.
-
- - Fix bug detecting basic auth info from older versions of CookieCrumber.
- Thanks to David D. Smith and Federico Sevilla III.
-
- - Workaround IE browser error when running over SSL. Thanks to
- Marc-Aurèle Darche.
-
- - Add ".zem" file extension support for MacOS X (especially Mac IE),
- to ease helper app integration where MIME support is lacking. Thanks
- to Zac Bir.
-
- - Added "long_file_name" and "file_name_separator" config options.
+ - External Editor now compatible with objects that return a
+ "filestream iterator" in Zope 2.7.1+. (if upgrading: this fix
+ does not require an update to EE client, just the EE Zope
+ product).
- - Fixed bug which happened under Win32 when editing an Excel file
- using the Excel plugin where the symptom was a "Call was
- rejected by callee" COM error. Thanks to Chris McDonough.
+ - Properly escape hyphens in man page. Thanks to Federico Sevilla III.
- 4/23/04 - 0.7.2 Release
+ - Check if the editor was launched before locking the file in Zope. This
+ prevents errors if the editor is closed before the lock request
+ completes.
- - Change default configuration to use .txt extension for text/plain only.
- Add extensions for css and javascript files.
+ - Do not ask the user what editor to use on Posix platforms. Instead just
+ tell the user to edit the config file. The askstring()
+ function does not work with a hidden root Tk window in Python 2.3.4.
+ Thanks to Christopher Mann.
- - Fixed packaging bug in Windows binary which disabled several plugins.
- This fixes "Editor did not launch properly" errors for MSOffice
- among others.
- - Fixed a bug where very short editing sessions where no changes were
- made could make EE think the editor never launched. Thanks to Maik Ihde.
+7/13/04 - 0.8
+-------------
- 11/7/03 - 0.7.1 Release (affects win32 binary only)
+ - Add external editor icon to ZMI breadcrumbs for editable objects.
- - Fix encoding bug in windows binary. Thanks to Chris McDonough.
+ - Compiled windows helper app binary using Python 2.3.4, Pythonwin build
+ 163 and py2exe 0.5.
+
+ - Add Dreamweaver plugin contributed by Manuel Aristaránn. Thanks also
+ to Anton Stonor.
+
+ - Add ZMI support for Zope 2.7's ordered folder objects.
+
+ - Fix bug detecting basic auth info from older versions of CookieCrumber.
+ Thanks to David D. Smith and Federico Sevilla III.
- - Added tip for configuring IE to save files over SSL. Thanks to
- Jonah Bossewitch.
+ - Workaround IE browser error when running over SSL. Thanks to
+ Marc-Aurèle Darche.
- 4/1/03 - 0.7 Release
+ - Add ".zem" file extension support for MacOS X (especially Mac IE),
+ to ease helper app integration where MIME support is lacking. Thanks
+ to Zac Bir.
- - Added working distutils setup for Unix.
+ - Added "long_file_name" and "file_name_separator" config options.
- - You can now specify from the server that the helper app should
- borrow a lock by passing borrow_lock=1 via the request, thus
- suppressing the dialog box which appears by default. Thanks
- to Shane Hathaway.
+ - Fixed bug which happened under Win32 when editing an Excel file
+ using the Excel plugin where the symptom was a "Call was
+ rejected by callee" COM error. Thanks to Chris McDonough.
- - Improved open file check in Word and Powerpoint plugins
- thanks to Yura Petrov.
- - Added plugins for Microsoft Word, Excel and Powerpoint.
+4/23/04 - 0.7.2
+---------------
- - Added the man page from the Debian distro. Thanks go out to
- Federico Sevilla III and Andreas Tille
+ - Change default configuration to use .txt extension for text/plain only.
+ Add extensions for css and javascript files.
- 11/02/02 - 0.6 Release
+ - Fixed packaging bug in Windows binary which disabled several plugins.
+ This fixes "Editor did not launch properly" errors for MSOffice
+ among others.
- - Built Windows helper app using Python 2.2.2 and PythonWin 148.
+ - Fixed a bug where very short editing sessions where no changes were
+ made could make EE think the editor never launched. Thanks to Maik Ihde.
- - The externalEdit_ object now accepts a path argument to the object to
- edit, allowing URLs like: http://zope/externalEdit_?path=/some/object.
- This allows external editor to play better with applications making use
- of traversal magic of their own. Thanks to Tres Seaver.
+11/7/03 - 0.7.1
+---------------
- - Fixed NameError bug in unlock retry code. Thanks to Federico Sevilla III.
+ - Fix encoding bug in windows binary. Thanks to Chris McDonough.
- - Added a workaround for non-compliant SSL servers. The software now
- silently ignores "EOF occurred in violation of protocol" errors coming
- from httplib. Thanks to Christopher Deckard.
+ - Added tip for configuring IE to save files over SSL. Thanks to
+ Jonah Bossewitch.
- - Removed stderr writes to cure "Invalid File Descriptor" errors on
- Windows. Thanks to Martijn Peters.
- - Added Photoshop plugin (win32)
+4/1/03 - 0.7
+------------
- - Added HomeSite plugin (win32)
+ - Added working distutils setup for Unix.
- - Added win32 editor plugin support for the helper application.
+ - You can now specify from the server that the helper app should
+ borrow a lock by passing borrow_lock=1 via the request, thus
+ suppressing the dialog box which appears by default. Thanks
+ to Shane Hathaway.
- 8/19/02 - 0.5 Release
+ - Improved open file check in Word and Powerpoint plugins
+ thanks to Yura Petrov.
- - Added patch for Zope find template so that you can use external editor
- directly from find results in the ZMI. Thanks to Jim Washington.
+ - Added plugins for Microsoft Word, Excel and Powerpoint.
- - Factored out external editor link generator. Product now registers
- a global method "externalEditLink_" which can be called to generate
- the external editor icon link for any object.
+ - Added the man page from the Debian distro. Thanks go out to
+ Federico Sevilla III and Andreas Tille
- - External editing is now governed by the "Use external editor" permission
- to allow non-managers to use it. Users must also have the permissions to
- edit/modify the objects they edit, plus do WebDAV locking if desired.
- Thanks to Reineke and others.
- - Unix editor command line parsing is much more robust now and properly
- handles quoted arguments. You can also specify the "$1" placeholder in the
- editor command to denote where the content file name is inserted. If
- omitted it is appended to the end of the command line. "%1" continues to
- work similarly for Windows. Thanks to Marc St-Jean.
+11/02/02 - 0.6
+--------------
- - Fixed bug editing large (chunked) files and images. External editor now
- streams their data properly to the client. Thanks to all the users who
- reported various symptoms of this bug.
+ - Built Windows helper app using Python 2.2.2 and PythonWin 148.
- - Fixed bug editing objects inside a Squishdot site. Thanks to Kevin Salt.
+ - The `externalEdit_` object now accepts a path argument to the object to
+ edit, allowing URLs like: `http://zope/externalEdit_?path=/some/object.`
+ This allows external editor to play better with applications making use
+ of traversal magic of their own. Thanks to Tres Seaver.
- - Added the capability to borrow exising DAV locks. This allows external
- editor to play well with other systems using locks, such as CMFStaging. A
- new configuration flag, always_borrow_locks can be set to suppress the
- borrow lock warning dialog when editing.
+ - Fixed NameError bug in unlock retry code. Thanks to Federico Sevilla III.
- - Fixed auth bug when product was used with mysqlUserFolder. Thanks to
- ViNiL.
+ - Added a workaround for non-compliant SSL servers. The software now
+ silently ignores "EOF occurred in violation of protocol" errors coming
+ from httplib. Thanks to Christopher Deckard.
- 6/30/02 - 0.4.2 Release (affects win32 binary only)
+ - Removed stderr writes to cure "Invalid File Descriptor" errors on
+ Windows. Thanks to Martijn Peters.
- - Added SSL support to Windows binary package. Thanks to Federico
- Sevilla III
+ - Added Photoshop plugin (win32)
- 6/29/02 - 0.4.1 Release
+ - Added HomeSite plugin (win32)
- - Fixed dangling dav lock bug on fatal errors. Thanks to Marc St-Jean.
+ - Added win32 editor plugin support for the helper application.
- - Fixed content_type bug, now checks if it is callable. Thanks to Arnaud
- Bienvenu.
- - Fixed bug with editing binary data on Windows. Thanks to Eric Kamm.
+8/19/02 - 0.5
+-------------
- - Fixed bug setting the editor on Posix platforms.
+ - Added patch for Zope find template so that you can use external editor
+ directly from find results in the ZMI. Thanks to Jim Washington.
- 6/24/02 - 0.4 Release
+ - Factored out external editor link generator. Product now registers
+ a global method `externalEditLink_` which can be called to generate
+ the external editor icon link for any object.
- - Added --version command line argument
+ - External editing is now governed by the "Use external editor" permission
+ to allow non-managers to use it. Users must also have the permissions to
+ edit/modify the objects they edit, plus do WebDAV locking if desired.
+ Thanks to Reineke and others.
- - Made manage_FTPget the default source for the editable content, instead
- of document_src which was broken for CMF Wiki Pages.
+ - Unix editor command line parsing is much more robust now and properly
+ handles quoted arguments. You can also specify the "$1" placeholder in the
+ editor command to denote where the content file name is inserted. If
+ omitted it is appended to the end of the command line. "%1" continues to
+ work similarly for Windows. Thanks to Marc St-Jean.
- - Fixed Windows "body_file" bug.
+ - Fixed bug editing large (chunked) files and images. External editor now
+ streams their data properly to the client. Thanks to all the users who
+ reported various symptoms of this bug.
- - Added binary build support for Windows using py2exe and Inno setup.
+ - Fixed bug editing objects inside a Squishdot site. Thanks to Kevin Salt.
- - Fixed Windows config file locator. It now looks in the program directory
- and then the user's home directory (if specified)
+ - Added the capability to borrow exising DAV locks. This allows external
+ editor to play well with other systems using locks, such as CMFStaging. A
+ new configuration flag, always_borrow_locks can be set to suppress the
+ borrow lock warning dialog when editing.
- - Fixed bug in Windows registry editor lookup.
+ - Fixed auth bug when product was used with mysqlUserFolder. Thanks to
+ ViNiL.
- 6/16/02 - 0.3 Release
- - Improved behavior when saving after lock attempts fail.
+6/30/02 - 0.4.2
+---------------
- - Now works on Windows (applause) using Pythonwin. Much overall
- refactoring to abstract process control. Thanks to Oliver Deckmyn,
- Gabriel Genellina and Arno Gross for testing, patches and suggestions.
+ - Added SSL support to Windows binary package. Thanks to Federico
+ Sevilla III
- - Added "temp_dir" configuration option for specifying a different
- temp file directory then the OS default. Also further improved
- temp file name generation.
- - Added support for domain specific configuration options.
+6/29/02 - 0.4.1
+---------------
- - Fixed trailing newline bug in encoded auth data coming from
- CookieCrumbler. Thanks to Harald Koschinski.
+ - Fixed dangling dav lock bug on fatal errors. Thanks to Marc St-Jean.
- - You can now pass command line arguments to the editor in the config file,
- or wrap the editor in an xterm without using a shell script.
-
- - Rewrote "Editor did not launch" error message so it makes more sense.
+ - Fixed content_type bug, now checks if it is callable. Thanks to Arnaud
+ Bienvenu.
- - Fixed https detection bug. External editor is now tested and working with
- https. Many thanks to Hans-Dieter Stich and Martin Grönemeyer for their
- assistance and ideas.
+ - Fixed bug with editing binary data on Windows. Thanks to Eric Kamm.
- - Made it possible to edit objects that are methods of ZClasses. Thanks to
- Jim Washington
+ - Fixed bug setting the editor on Posix platforms.
- - Refactored link generation code in manage_main so that it uses
- the parent's absolute_url rather than URL1. Thanks to
- Jim Washington
- - Removed implicit save in Configuration class destructor
+6/24/02 - 0.4
+-------------
- - Added caching headers to prevent client-side caching of edit data.
- Thanks to Gabriel Genellina for pointing this out.
+ - Added --version command line argument
- - Added improved support for editing CMF documents
+ - Made manage_FTPget the default source for the editable content, instead
+ of document_src which was broken for CMF Wiki Pages.
- - Eliminated spurious "Editor did not launch" errors on short sessions
- or when other errors occurred.
+ - Fixed Windows "body_file" bug.
- 5/16/02 - 0.2 Release
+ - Added binary build support for Windows using py2exe and Inno setup.
- - Fixed product uninstallation bug
+ - Fixed Windows config file locator. It now looks in the program directory
+ and then the user's home directory (if specified)
- 5/15/02 - 0.1
+ - Fixed bug in Windows registry editor lookup.
- - Initial release
+
+6/16/02 - 0.3
+-------------
+
+ - Improved behavior when saving after lock attempts fail.
+
+ - Now works on Windows (applause) using Pythonwin. Much overall
+ refactoring to abstract process control. Thanks to Oliver Deckmyn,
+ Gabriel Genellina and Arno Gross for testing, patches and suggestions.
+
+ - Added "temp_dir" configuration option for specifying a different
+ temp file directory then the OS default. Also further improved
+ temp file name generation.
+
+ - Added support for domain specific configuration options.
+
+ - Fixed trailing newline bug in encoded auth data coming from
+ CookieCrumbler. Thanks to Harald Koschinski.
+
+ - You can now pass command line arguments to the editor in the config file,
+ or wrap the editor in an xterm without using a shell script.
+
+ - Rewrote "Editor did not launch" error message so it makes more sense.
+
+ - Fixed https detection bug. External editor is now tested and working with
+ https. Many thanks to Hans-Dieter Stich and Martin Grönemeyer for their
+ assistance and ideas.
+
+ - Made it possible to edit objects that are methods of ZClasses. Thanks to
+ Jim Washington
+
+ - Refactored link generation code in manage_main so that it uses
+ the parent's absolute_url rather than URL1. Thanks to
+ Jim Washington
+
+ - Removed implicit save in Configuration class destructor
+
+ - Added caching headers to prevent client-side caching of edit data.
+ Thanks to Gabriel Genellina for pointing this out.
+
+ - Added improved support for editing CMF documents
+
+ - Eliminated spurious "Editor did not launch" errors on short sessions
+ or when other errors occurred.
+
+5/16/02 - 0.2
+-------------
+
+ - Fixed product uninstallation bug
+
+5/15/02 - 0.1
+-------------
+
+ - Initial release
Modified: Products.ExternalEditor/trunk/README.txt
===================================================================
--- Products.ExternalEditor/trunk/README.txt 2008-05-03 19:21:38 UTC (rev 86275)
+++ Products.ExternalEditor/trunk/README.txt 2008-05-03 19:22:02 UTC (rev 86276)
@@ -1,81 +1,84 @@
Zope External Editor
+====================
- The Zope External Editor is a new way to integrate Zope more seamlessly with
- client-side tools. It has the following features:
-
- - Edit objects locally, directly from the ZMI.
-
- - Works with any graphical editor application that can open a file from the
- command line, including: emacs, gvim, xemacs, nedit, gimp, etc.
+The Zope External Editor is a new way to integrate Zope more seamlessly with
+client-side tools. It has the following features:
- - Automatically saves changes back to Zope without ending the editing session.
+ - Edit objects locally, directly from the ZMI.
- - Associate any client-side editor application with any Zope object by
- meta-type or content-type. Both text and binary object content can be
- edited.
+ - Works with any graphical editor application that can open a file from the
+ command line, including: emacs, gvim, xemacs, nedit, gimp, etc.
- - Locks objects while they are being edited. Automatically unlocks them when
- the editing session ends.
+ - Automatically saves changes back to Zope without ending the editing session.
- - Can add file extensions automatically to improve syntax highlighting or
- file type detection.
-
- - Works with basic auth, cookie auth and Zope versions. Credentials are
- automatically passed down to the helper application. No need to
- reauthenticate.
-
- - https support (Openssl required)
-
- Using It
+ - Associate any client-side editor application with any Zope object by
+ meta-type or content-type. Both text and binary object content can be
+ edited.
- Use of the application is about as easy as using the ZMI once your browser
- is configured (see the installation instructions). To edit an object
- externally, just click on the pencil icon next to the object in the ZMI.
- The object will be downloaded and opened using the editor application you
- have chosen (you will be prompted the first time to choose an editor).
+ - Locks objects while they are being edited. Automatically unlocks them when
+ the editing session ends.
- You edit the object just like any other file. When you save the changes in
- your editor, they are automatically uploaded back to Zope in the
- background. While the object is open in your editor, it is locked in Zope
- to prevent concurrent editing. When you end your editing session (ie you
- close your editor) the object is unlocked.
+ - Can add file extensions automatically to improve syntax highlighting or
+ file type detection.
- How it Works
-
- Ok, so this all sounds a bit too good to be true, no? So how the heck does
- it work anyway? First I'll give you a block diagram::
-
- +------------+ +------------+ +---------+ +------+
- | Editor App | <-- | Helper App | <-- | Browser | <-/ /- | Zope |
- +------------+ +------------+ +---------+ +------+
- ^ ^ ^ ^
- \ / \ /
- v v -----------------------/ /----
- -------
- / Local \
- \ File /
- -------
-
- Now the key to getting this to work is solving the problem that the editor
- cannot know about Zope, and must only deal with local files. Also, there is
- no standard way to communication with editors, so the only communication
- channel can be the local file which contains the object's content or code.
-
- It is trivial to get the browser to fire up your editor when you download
- a particular type of data with your browser. But that does you little good,
- since the browser no longer involves itself once the data is downloaded. It
- just creates a temp file and fires off the registered application, passing
- it the file path. Once the editor is running, it is only aware of the local
- file, and has no concept of where it originated from.
-
- To solve this problem, I have developed a helper application whose job is
- essentially two-fold:
-
+ - Works with basic auth, cookie auth and Zope versions. Credentials are
+ automatically passed down to the helper application. No need to
+ reauthenticate.
+
+ - https support (Openssl required)
+
+Using It
+--------
+
+Use of the application is about as easy as using the ZMI once your browser
+is configured (see the installation instructions). To edit an object
+externally, just click on the pencil icon next to the object in the ZMI.
+The object will be downloaded and opened using the editor application you
+have chosen (you will be prompted the first time to choose an editor).
+
+You edit the object just like any other file. When you save the changes in
+your editor, they are automatically uploaded back to Zope in the
+background. While the object is open in your editor, it is locked in Zope
+to prevent concurrent editing. When you end your editing session (ie you
+close your editor) the object is unlocked.
+
+How it Works
+------------
+
+Ok, so this all sounds a bit too good to be true, no? So how the heck does
+it work anyway? First I'll give you a block diagram::
+
+ +------------+ +------------+ +---------+ +------+
+ | Editor App | <-- | Helper App | <-- | Browser | <-/ /- | Zope |
+ +------------+ +------------+ +---------+ +------+
+ ^ ^ ^ ^
+ \ / \ /
+ v v -----------------------/ /----
+ -------
+ / Local \
+ \ File /
+ -------
+
+Now the key to getting this to work is solving the problem that the editor
+cannot know about Zope, and must only deal with local files. Also, there is
+no standard way to communication with editors, so the only communication
+channel can be the local file which contains the object's content or code.
+
+It is trivial to get the browser to fire up your editor when you download
+a particular type of data with your browser. But that does you little good,
+since the browser no longer involves itself once the data is downloaded. It
+just creates a temp file and fires off the registered application, passing
+it the file path. Once the editor is running, it is only aware of the local
+file, and has no concept of where it originated from.
+
+To solve this problem, I have developed a helper application whose job is
+essentially two-fold:
+
- Determine the correct editor to launch for a given Zope object
-
+
- Get the data back into Zope when the changes are saved
- So, let's take a step by step look at how it works:
+So, let's take a step by step look at how it works:
1. You click on the external editor link (the pencil icon) in the Zope
management interface.
@@ -108,263 +111,267 @@
uploaded if it has changed. Then a WebDAV unlock request is sent to Zope.
9. The helper application exits.
+
+Configuration
+-------------
+
+The helper application supports several configuration options, each of
+which can be triggered in any combination of object meta-type, content-type
+or domain. This allows you to create appropriate behavior for different
+types of Zope objects and content or even different servers. The
+configuration file is stored in the file "~/.zope-external-edit" (Unix) or
+"~\ZopeEdit.ini" (Windows). If no configuration file is found when the
+helper application starts, a default config file is created in your home
+directory.
+
+The configuration file follows the standard Python ConfigParser format,
+which is pretty much like the old .ini file format from windows. The file
+consists of sections and options in the following format::
+
+ [section 1]
+ option1 = value
+ option2 = value
+
+ [section 2]
+ ...
+
+Options
+-------
+
+The available options for all sections of the config file are:
+
+ editor -- Command line or plugin name used to invoke the editor
+ application. On Windows, if no editor setting is found for an object you
+ edit, the helper app will search the file type registry for an
+ appropriate editor based on the content-type or file extension of the
+ object (which can be specified using the extension option below). By
+ default, the file path of the local file being edited is appended to
+ this command line. To insert the file path in the middle of your
+ command, use "$1" for Unix and "%1" for Windows respectively.
+
+ save_interval -- (float) The interval in seconds that the helper
+ application checks the edited file for changes.
+
+ use_locks -- (1 or 0) Whether to use WebDAV locking. The user editing must
+ have the proper WebDAV related permissions for this to work.
- Configuration
-
- The helper application supports several configuration options, each of
- which can be triggered in any combination of object meta-type, content-type
- or domain. This allows you to create appropriate behavior for different
- types of Zope objects and content or even different servers. The
- configuration file is stored in the file "~/.zope-external-edit" (Unix) or
- "~\ZopeEdit.ini" (Windows). If no configuration file is found when the
- helper application starts, a default config file is created in your home
- directory.
+ always_borrow_locks -- (1 or 0) When use_locks is enabled this features
+ suppresses warnings when trying to edit an object you have already locked.
+ When enabled, external editor will always "borrow" the existing lock token
+ instead of doing the locking itself. This is useful when using CMFStaging
+ for instance. If omitted, this option defaults to 0.
- The configuration file follows the standard Python ConfigParser format,
- which is pretty much like the old .ini file format from windows. The file
- consists of sections and options in the following format::
+ cleanup_files -- (1 or 0) Whether to delete the temp files created.
+ WARNING the temp file coming from the browser contains authentication
+ information and therefore setting this to 0 is a security risk,
+ especially on shared machines. If set to 1, that file is deleted at the
+ earliest opportunity, before the editor is even spawned. Set to 0 for
+ debugging only.
- [section 1]
- option1 = value
- option2 = value
+ extension -- (text) The file extension to add to the content file. Allows
+ better handling of images and can improve syntax highlighting.
- [section 2]
- ...
+ temp_dir -- (path) Path to store local copies of object data being
+ edited. Defaults to operating system temp directory. *Note: this setting
+ has no apparent effect on Windows* 8^(
- Options
-
- The available options for all sections of the config file are:
+ long_file_name -- (1 or 0) Whether to include the whole path to the
+ object including the hostname in the file name (the default) or just the
+ id of the object being edited. Turn this option off for shorter file
+ names in your editors, and for editors that don't like long names.
- editor -- Command line or plugin name used to invoke the editor
- application. On Windows, if no editor setting is found for an object you
- edit, the helper app will search the file type registry for an
- appropriate editor based on the content-type or file extension of the
- object (which can be specified using the extension option below). By
- default, the file path of the local file being edited is appended to
- this command line. To insert the file path in the middle of your
- command, use "$1" for Unix and "%1" for Windows respectively.
+ file_name_separator -- (string) Character or characters used to separate
+ path elements in long files names used by external editor. Defaults to
+ a comma (,). This must be a legal character for use in file names on
+ your platorm (i.e., don't use a path separator character!). This option
+ is ignored if 'long_file_name' is set to 0.
- save_interval -- (float) The interval in seconds that the helper
- application checks the edited file for changes.
+Sections
+--------
- use_locks -- (1 or 0) Whether to use WebDAV locking. The user editing must
- have the proper WebDAV related permissions for this to work.
-
- always_borrow_locks -- (1 or 0) When use_locks is enabled this features
- suppresses warnings when trying to edit an object you have already locked.
- When enabled, external editor will always "borrow" the existing lock token
- instead of doing the locking itself. This is useful when using CMFStaging
- for instance. If omitted, this option defaults to 0.
+The sections of the configuration file specify the types of objects and
+content that the options beneath them apply to.
- cleanup_files -- (1 or 0) Whether to delete the temp files created.
- WARNING the temp file coming from the browser contains authentication
- information and therefore setting this to 0 is a security risk,
- especially on shared machines. If set to 1, that file is deleted at the
- earliest opportunity, before the editor is even spawned. Set to 0 for
- debugging only.
+There is only one mandatory section '[general]', which should define all
+of the above options that do not have a default value. If no other
+section defines an option for a given object, the general settings are
+used.
- extension -- (text) The file extension to add to the content file. Allows
- better handling of images and can improve syntax highlighting.
+Additional sections can apply to a particular domain, content-type or
+meta-type. Since objects can have all these properties, the options are
+applied in this order of precedence.
- temp_dir -- (path) Path to store local copies of object data being
- edited. Defaults to operating system temp directory. *Note: this setting
- has no apparent effect on Windows* 8^(
-
- long_file_name -- (1 or 0) Whether to include the whole path to the
- object including the hostname in the file name (the default) or just the
- id of the object being edited. Turn this option off for shorter file
- names in your editors, and for editors that don't like long names.
+ - `[content-type:text/html]` -- Options by whole content-type come first.
- file_name_separator -- (string) Character or characters used to separate
- path elements in long files names used by external editor. Defaults to
- a comma (,). This must be a legal character for use in file names on
- your platorm (i.e., don't use a path separator character!). This option
- is ignored if 'long_file_name' is set to 0.
+ - `[content-type:text/*]` -- Options by major content-type come second.
- Sections
-
- The sections of the configuration file specify the types of objects and
- content that the options beneath them apply to.
-
- There is only one mandatory section '[general]', which should define all
- of the above options that do not have a default value. If no other
- section defines an option for a given object, the general settings are
- used.
+ - `[meta-type:File]` -- Options by Zope meta-type are third.
- Additional sections can apply to a particular domain, content-type or
- meta-type. Since objects can have all these properties, the options are
- applied in this order of precedence.
+ - `[domain:www.mydomain.com]` -- Options by domain follow. Several
+ sections can be added for each domain level if desired.
- - '[content-type:text/html]' -- Options by whole content-type come first
-
- - '[content-type:text/*]' -- Options by major content-type come second.
-
- - '[meta-type:File]' -- Options by Zope meta-type are third.
+ - `[general]` -- General options are last.
- - '[domain:www.mydomain.com]' -- Options by domain follow. Several
- sections can be added for each domain level if desired.
-
- - '[general]' -- General options are last.
-
- This scheme allows you to specify an extension by content-type, the
- editor by meta-type, the locking settings by domain and the remaining
- options under general for a given object.
-
- Editor Plugins
+This scheme allows you to specify an extension by content-type, the
+editor by meta-type, the locking settings by domain and the remaining
+options under general for a given object.
- For tighter client-side integration, external editor has a plugin system
- that allows it to interact directly with supported applications.
+Editor Plugins
+--------------
- On Windows this generally means using COM to invoke the application, open
- the content file and wait for the user to save and close the file. Because
- each application has different remote scripting capabilities and APIs,
- editor specific plugins must be written tailored to each supported
- application and platform.
+For tighter client-side integration, external editor has a plugin system
+that allows it to interact directly with supported applications.
- This system allows external editor to efficiently connect to running
- applications without relaunching them and therefore fully support MDI
- environments. The following applications currently have plugin support::
+On Windows this generally means using COM to invoke the application, open
+the content file and wait for the user to save and close the file. Because
+each application has different remote scripting capabilities and APIs,
+editor specific plugins must be written tailored to each supported
+application and platform.
- Application Platform Plugin Module Name(s)
- ===================================================
- HomeSite Windows homesite5, homesite
- Dreamweaver Windows dreamweaver
- Photoshop Windows photoshp, photoshop
- MS Word Windows winword, word
- MS Excel Windows excel
- MS Powerpoint Windows powerpnt, powerpoint
+This system allows external editor to efficiently connect to running
+applications without relaunching them and therefore fully support MDI
+environments. The following applications currently have plugin support::
- External editor will attempt to load a plugin for any application before
- using the general editor control method. It does this by matching the
- name of the application executable file (sans extension) in the editor
- command line with the available plugins.
+ Application Platform Plugin Module Name(s)
+ ===================================================
+ HomeSite Windows homesite5, homesite
+ Dreamweaver Windows dreamweaver
+ Photoshop Windows photoshp, photoshop
+ MS Word Windows winword, word
+ MS Excel Windows excel
+ MS Powerpoint Windows powerpnt, powerpoint
- Because plugins do not require the path of the editor application to work,
- you can simply specify the plugin module name for your editor in the
- configuration file if desired. For example, to specify Photoshop for all
- image files, use add the following section to your config file
- (ZopeEdit.ini on Windows)::
+External editor will attempt to load a plugin for any application before
+using the general editor control method. It does this by matching the
+name of the application executable file (sans extension) in the editor
+command line with the available plugins.
- [content-type:image/*]
- editor=photoshop
+Because plugins do not require the path of the editor application to work,
+you can simply specify the plugin module name for your editor in the
+configuration file if desired. For example, to specify Photoshop for all
+image files, use add the following section to your config file
+(ZopeEdit.ini on Windows)::
- This is only a shortcut and specifying the full application path will
- still use the plugin where possible.
+ [content-type:image/*]
+ editor=photoshop
- Plugin Notes
+This is only a shortcut and specifying the full application path will
+still use the plugin where possible.
- Photoshop -- Photoshop's COM API is quite limited, and external editor
- cannot detect that you have closed a file until you exit the entire
- application (it can still detect saves). Therefore you may want to turn
- off DAV locking (use_locks=0) or borrow locks (always_borrow_locks=1)
- when using it.
+Plugin Notes
+------------
- Dreamweaver -- External editor cannot detect when you have finished
- editing a single file. Objects edited with Dreamweaver will remain
- locked on the server until you exit the application. As with Photoshop
- above, you may want to turn off locking for Dreamweaver.
+Photoshop -- Photoshop's COM API is quite limited, and external editor
+cannot detect that you have closed a file until you exit the entire
+application (it can still detect saves). Therefore you may want to turn
+off DAV locking (use_locks=0) or borrow locks (always_borrow_locks=1)
+when using it.
- If your favorite editor needs a plugin because the general support is
- not good enough, please let me know. Keep in mind that I must be able to
- run a copy of the application in order to develop a plugin for it. So,
- unless the application is free, or a full demo is available for download
- I won't be able to help much. Plugins are not difficult to write, and I
- encourage you to write one for your favorite editor, start by reading
- one of the existing ones. I am happy to include third-party plugins with
- the distribution.
-
- Permissions
+Dreamweaver -- External editor cannot detect when you have finished
+editing a single file. Objects edited with Dreamweaver will remain
+locked on the server until you exit the application. As with Photoshop
+above, you may want to turn off locking for Dreamweaver.
+
+If your favorite editor needs a plugin because the general support is
+not good enough, please let me know. Keep in mind that I must be able to
+run a copy of the application in order to develop a plugin for it. So,
+unless the application is free, or a full demo is available for download
+I won't be able to help much. Plugins are not difficult to write, and I
+encourage you to write one for your favorite editor, start by reading
+one of the existing ones. I am happy to include third-party plugins with
+the distribution.
+
+Permissions
+-----------
+
+External editing is governed by the permission "Use external editor".
+Users with this permission can launch external editor from editable
+objects. In order to save changes, users will need additional permissions
+appropriate for the objects they are editing.
+
+If users wish to use the built-in locking support, they must have the
+"WebDAV access", "WebDAV Lock items" and "WebDAV Unlock items" permissions
+for the objects they are editing.
+
+If these permissions are not set in Zope, then the helper application will
+receive unauthorized errors from Zope which it will present to the user.
- External editing is governed by the permission "Use external editor".
- Users with this permission can launch external editor from editable
- objects. In order to save changes, users will need additional permissions
- appropriate for the objects they are editing.
-
- If users wish to use the built-in locking support, they must have the
- "WebDAV access", "WebDAV Lock items" and "WebDAV Unlock items" permissions
- for the objects they are editing.
-
- If these permissions are not set in Zope, then the helper application will
- receive unauthorized errors from Zope which it will present to the user.
-
- Integrating with External Editor
-
- The external editor product in zope installs a globally available object
- that can format objects accessible through FTP/DAV for use by the helper
- application. You can take advantage of this functionality easily in your
- own content management applications.
-
- Say you have an FTP editable object, "document", in a Zope folder named
- "my_stuff". The URL to view the object would be::
-
- http://zopeserver/my_stuff/document
-
- The URL to kick off the external editor on this document would be::
-
- http://zopeserver/my_stuff/externalEdit_/document
-
- Now, this may look a bit odd to you if you are used to tacking views on to
- the end of the URL. Because 'externalEdit_' is required to work on Python
- Scripts and Page Templates, which swallow the remaining path segments on
- the URL following themselves, you must put the call to 'externalEdit_'
- *directly before* the object to be edited. You could do this in ZPT using
- some TAL in a Page Template like::
+Integrating with External Editor
+--------------------------------
- <a href='edit'
- attributes='href
- string:${here/aq_parent/absolute_url}/externalEdit_/${here/getId}'>
- Edit Locally
- </a>
-
- As an alternative, you can also pass the path the object you want to edit
- directly to the externalEdit_ object when you call its index_html method.
- It can be called either directly by URL or from a python script.
- externalEdit_ will return the proper response data for the object to edit.
- Here are some examples::
+The external editor product in zope installs a globally available object
+that can format objects accessible through FTP/DAV for use by the helper
+application. You can take advantage of this functionality easily in your
+own content management applications.
- http://zopeserver/externalEdit_?path=/my_stuff/document
-
- return context.externalEdit_.index_html(
- context.REQUEST, context.RESPONSE, path='/my_stuff/document')
+Say you have an FTP editable object, "document", in a Zope folder named
+"my_stuff". The URL to view the object would be::
- When integrating External Editor with a CMS that already uses DAV
- locks, it will, by default allow users to borrow locks made on the server
- after displaying a confirmation dialog box. Although you can make this
- automatic by specifying 'always_borrow_locks = 1' in the External Editor
- config file, it may be desireable to make this the default behavior when
- using that server. To facilitate this, you can specify that locks
- should be automatically borrowed in the URL (New in 0.7)::
+ http://zopeserver/my_stuff/document
- http://zopeserver/my_stuff/externalEdit_/document?borrow_lock=1
-
- External Editor also defines a global method that you can call to insert
- pencil icon links for appropriate objects. The method automatically checks
- if the object supports external editing and whether the user has the "Use
- external editor" permission for that object. If both are true, it returns
- the HTML code to insert the external editor icon link. Otherwise it returns
- an empty string.
+The URL to kick off the external editor on this document would be::
- The method is 'externalEditLink_(object)'. The object argument is the
- object to create the link for if appropriate. Here is some example page
- template code that inserts links to objects in the current folder and the
- external editor icon where appropriate::
+ http://zopeserver/my_stuff/externalEdit_/document
- <div tal:repeat="object here/objectValues">
- <a href="#"
- tal:attributes="href object/absolute_url"
- tal:content="object/title_or_id">Object Title</a>
- <span tal:replace="structure python:here.externalEditLink_(object)" />
- </div>
+Now, this may look a bit odd to you if you are used to tacking views on to
+the end of the URL. Because `externalEdit_` is required to work on Python
+Scripts and Page Templates, which swallow the remaining path segments on
+the URL following themselves, you must put the call to `externalEdit_`
+*directly before* the object to be edited. You could do this in ZPT using
+some TAL in a Page Template like::
- Conclusion
-
- I hope you enjoy using this software. If you have any comments, suggestions
- or would like to report a bug, send an email to the author:
-
- Casey Duncan
-
- casey_duncan at yahoo.com
+ <a href='edit'
+ attributes='href
+ string:${here/aq_parent/absolute_url}/externalEdit_/${here/getId}'>
+ Edit Locally
+ </a>
---
+As an alternative, you can also pass the path the object you want to edit
+directly to the `externalEdit_` object when you call its index_html method.
+It can be called either directly by URL or from a python script.
+`externalEdit_` will return the proper response data for the object to edit.
+Here are some examples::
-(c) 2003, Casey Duncan and Zope Corporation. All rights reserved.
+ http://zopeserver/externalEdit_?path=/my_stuff/document
+
+ return context.externalEdit_.index_html(
+ context.REQUEST, context.RESPONSE, path='/my_stuff/document')
+
+When integrating External Editor with a CMS that already uses DAV
+locks, it will, by default allow users to borrow locks made on the server
+after displaying a confirmation dialog box. Although you can make this
+automatic by specifying 'always_borrow_locks = 1' in the External Editor
+config file, it may be desireable to make this the default behavior when
+using that server. To facilitate this, you can specify that locks
+should be automatically borrowed in the URL (New in 0.7)::
+
+ http://zopeserver/my_stuff/externalEdit_/document?borrow_lock=1
+
+External Editor also defines a global method that you can call to insert
+pencil icon links for appropriate objects. The method automatically checks
+if the object supports external editing and whether the user has the "Use
+external editor" permission for that object. If both are true, it returns
+the HTML code to insert the external editor icon link. Otherwise it returns
+an empty string.
+
+The method is 'externalEditLink_(object)'. The object argument is the
+object to create the link for if appropriate. Here is some example page
+template code that inserts links to objects in the current folder and the
+external editor icon where appropriate::
+
+ <div tal:repeat="object here/objectValues">
+ <a href="#"
+ tal:attributes="href object/absolute_url"
+ tal:content="object/title_or_id">Object Title</a>
+ <span tal:replace="structure python:here.externalEditLink_(object)" />
+ </div>
+
+Conclusion
+----------
+
+I hope you enjoy using this software. If you have any comments, suggestions
+or would like to report a bug, send an email to the author:
+
+Casey Duncan
+
+`(c) 2003, Casey Duncan and Zope Corporation. All rights reserved.`
Modified: Products.ExternalEditor/trunk/setup.py
===================================================================
--- Products.ExternalEditor/trunk/setup.py 2008-05-03 19:21:38 UTC (rev 86275)
+++ Products.ExternalEditor/trunk/setup.py 2008-05-03 19:22:02 UTC (rev 86276)
@@ -4,6 +4,8 @@
setup(name='Products.ExternalEditor',
version='0.9.4',
description="Zope External Editor",
+ long_description=open("README.txt").read() + "\n" + \
+ open("CHANGES.txt").read(),
classifiers=[
'Framework :: Zope2',
],
More information about the Checkins
mailing list