[Checkins] SVN: Products.ExternalEditor/trunk/ Rearranged

Hanno Schlichting plone at hannosch.info
Sat May 3 15:03:45 EDT 2008


Log message for revision 86272:
  Rearranged
  

Changed:
  _U  Products.ExternalEditor/trunk/
  A   Products.ExternalEditor/trunk/CHANGES.txt
  _U  Products.ExternalEditor/trunk/Products/
  _U  Products.ExternalEditor/trunk/Products/ExternalEditor/
  D   Products.ExternalEditor/trunk/Products/ExternalEditor/CHANGES.txt
  D   Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-UNIX.txt
  D   Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-WIN32.txt
  D   Products.ExternalEditor/trunk/Products/ExternalEditor/README.txt
  D   Products.ExternalEditor/trunk/Products/ExternalEditor/setup.py
  A   Products.ExternalEditor/trunk/Products/__init__.py
  A   Products.ExternalEditor/trunk/README.txt
  A   Products.ExternalEditor/trunk/docs/
  A   Products.ExternalEditor/trunk/docs/INSTALL-UNIX.txt
  A   Products.ExternalEditor/trunk/docs/INSTALL-WIN32.txt
  A   Products.ExternalEditor/trunk/setup.py

-=-

Property changes on: Products.ExternalEditor/trunk
___________________________________________________________________
Name: svn:ignore
   + build
dist
*.egg-info
*.pyc


Copied: Products.ExternalEditor/trunk/CHANGES.txt (from rev 86271, Products.ExternalEditor/trunk/Products/ExternalEditor/CHANGES.txt)
===================================================================
--- Products.ExternalEditor/trunk/CHANGES.txt	                        (rev 0)
+++ Products.ExternalEditor/trunk/CHANGES.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -0,0 +1,284 @@
+External Editor Change Log
+
+  unreleased - 1.0 Release
+
+    - 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.
+
+    - Only run ExpandEnvironmentStrings on win32 systems.
+
+  9/14/2006 - 0.9.2 Release
+
+    - 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.
+
+    - Use rfc822.Message for parsing the metadata of the file being
+      edited.
+
+    - Don't emit a warning about deprecated 'methods' in Zope >= 2.10.
+
+    - Fixed acquisition issue in manage_main.dtml to sync up with the
+      same fix applied to Zope.
+
+  6/23/2005 - 0.9.1 Release
+
+    - Older pyc files for plugins were included in the 0.9 release.
+      This version has the most up to date plugins.
+
+  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.
+
+    - 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.
+
+    - 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.
+
+    - The "title" attribute of the object being externally edited is
+      now available within the set of headers returned by EE to the
+      zopeedit client.
+
+    - 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.
+
+    - 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).
+
+    - 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.
+
+  7/13/04 - 0.8 release
+  
+    - Add external editor icon to ZMI breadcrumbs for editable objects.
+
+    - 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.
+    
+    - 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.
+
+    - 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.
+
+  4/23/04 - 0.7.2 Release
+
+    - Change default configuration to use .txt extension for text/plain only. 
+      Add extensions for css and javascript files.
+
+    - 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.
+
+  11/7/03 - 0.7.1 Release (affects win32 binary only)
+
+    - Fix encoding bug in windows binary. Thanks to Chris McDonough.
+  
+    - Added tip for configuring IE to save files over SSL. Thanks to
+      Jonah Bossewitch.
+
+  4/1/03 - 0.7 Release
+
+    - Added working distutils setup for Unix.
+
+    - 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.
+
+    - Improved open file check in Word and Powerpoint plugins 
+      thanks to Yura Petrov.
+
+    - Added plugins for Microsoft Word, Excel and Powerpoint.
+
+    - Added the man page from the Debian distro. Thanks go out to
+      Federico Sevilla III and Andreas Tille
+
+  11/02/02 - 0.6 Release
+
+    - Built Windows helper app using Python 2.2.2 and PythonWin 148.
+
+    - 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.
+
+    - Fixed NameError bug in unlock retry code. Thanks to Federico Sevilla III.
+
+    - 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.
+
+    - Removed stderr writes to cure "Invalid File Descriptor" errors on
+      Windows. Thanks to Martijn Peters.
+
+    - Added Photoshop plugin (win32)
+
+    - Added HomeSite plugin (win32)
+
+    - Added win32 editor plugin support for the helper application.
+
+  8/19/02 - 0.5 Release
+
+    - Added patch for Zope find template so that you can use external editor
+      directly from find results in the ZMI. Thanks to Jim Washington.
+
+    - 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.
+
+    - 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.
+
+    - 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.
+
+    - Fixed bug editing objects inside a Squishdot site. Thanks to Kevin Salt.
+
+    - 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 auth bug when product was used with mysqlUserFolder. Thanks to
+      ViNiL.
+
+  6/30/02 - 0.4.2 Release (affects win32 binary only)
+
+    - Added SSL support to Windows binary package. Thanks to Federico 
+      Sevilla III
+
+  6/29/02 - 0.4.1 Release
+
+    - Fixed dangling dav lock bug on fatal errors. Thanks to Marc St-Jean.
+
+    - 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.
+
+    - Fixed bug setting the editor on Posix platforms.
+
+  6/24/02 - 0.4 Release
+
+    - Added --version command line argument
+
+    - Made manage_FTPget the default source for the editable content, instead
+      of document_src which was broken for CMF Wiki Pages.
+
+    - Fixed Windows "body_file" bug.
+
+    - Added binary build support for Windows using py2exe and Inno setup.
+
+    - Fixed Windows config file locator. It now looks in the program directory
+      and then the user's home directory (if specified)
+
+    - Fixed bug in Windows registry editor lookup.
+
+  6/16/02 - 0.3 Release
+
+    - 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 Release
+
+    - Fixed product uninstallation bug
+
+  5/15/02 - 0.1
+
+    - Initial release


Property changes on: Products.ExternalEditor/trunk/Products
___________________________________________________________________
Name: svn:ignore
   + *.pyc



Property changes on: Products.ExternalEditor/trunk/Products/ExternalEditor
___________________________________________________________________
Name: svn:ignore
   + *.pyc


Deleted: Products.ExternalEditor/trunk/Products/ExternalEditor/CHANGES.txt
===================================================================
--- Products.ExternalEditor/trunk/Products/ExternalEditor/CHANGES.txt	2008-05-03 18:58:19 UTC (rev 86271)
+++ Products.ExternalEditor/trunk/Products/ExternalEditor/CHANGES.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -1,284 +0,0 @@
-External Editor Change Log
-
-  unreleased - 1.0 Release
-
-    - 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.
-
-    - Only run ExpandEnvironmentStrings on win32 systems.
-
-  9/14/2006 - 0.9.2 Release
-
-    - 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.
-
-    - Use rfc822.Message for parsing the metadata of the file being
-      edited.
-
-    - Don't emit a warning about deprecated 'methods' in Zope >= 2.10.
-
-    - Fixed acquisition issue in manage_main.dtml to sync up with the
-      same fix applied to Zope.
-
-  6/23/2005 - 0.9.1 Release
-
-    - Older pyc files for plugins were included in the 0.9 release.
-      This version has the most up to date plugins.
-
-  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.
-
-    - 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.
-
-    - 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.
-
-    - The "title" attribute of the object being externally edited is
-      now available within the set of headers returned by EE to the
-      zopeedit client.
-
-    - 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.
-
-    - 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).
-
-    - 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.
-
-  7/13/04 - 0.8 release
-  
-    - Add external editor icon to ZMI breadcrumbs for editable objects.
-
-    - 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.
-    
-    - 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.
-
-    - 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.
-
-  4/23/04 - 0.7.2 Release
-
-    - Change default configuration to use .txt extension for text/plain only. 
-      Add extensions for css and javascript files.
-
-    - 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.
-
-  11/7/03 - 0.7.1 Release (affects win32 binary only)
-
-    - Fix encoding bug in windows binary. Thanks to Chris McDonough.
-  
-    - Added tip for configuring IE to save files over SSL. Thanks to
-      Jonah Bossewitch.
-
-  4/1/03 - 0.7 Release
-
-    - Added working distutils setup for Unix.
-
-    - 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.
-
-    - Improved open file check in Word and Powerpoint plugins 
-      thanks to Yura Petrov.
-
-    - Added plugins for Microsoft Word, Excel and Powerpoint.
-
-    - Added the man page from the Debian distro. Thanks go out to
-      Federico Sevilla III and Andreas Tille
-
-  11/02/02 - 0.6 Release
-
-    - Built Windows helper app using Python 2.2.2 and PythonWin 148.
-
-    - 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.
-
-    - Fixed NameError bug in unlock retry code. Thanks to Federico Sevilla III.
-
-    - 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.
-
-    - Removed stderr writes to cure "Invalid File Descriptor" errors on
-      Windows. Thanks to Martijn Peters.
-
-    - Added Photoshop plugin (win32)
-
-    - Added HomeSite plugin (win32)
-
-    - Added win32 editor plugin support for the helper application.
-
-  8/19/02 - 0.5 Release
-
-    - Added patch for Zope find template so that you can use external editor
-      directly from find results in the ZMI. Thanks to Jim Washington.
-
-    - 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.
-
-    - 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.
-
-    - 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.
-
-    - Fixed bug editing objects inside a Squishdot site. Thanks to Kevin Salt.
-
-    - 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 auth bug when product was used with mysqlUserFolder. Thanks to
-      ViNiL.
-
-  6/30/02 - 0.4.2 Release (affects win32 binary only)
-
-    - Added SSL support to Windows binary package. Thanks to Federico 
-      Sevilla III
-
-  6/29/02 - 0.4.1 Release
-
-    - Fixed dangling dav lock bug on fatal errors. Thanks to Marc St-Jean.
-
-    - 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.
-
-    - Fixed bug setting the editor on Posix platforms.
-
-  6/24/02 - 0.4 Release
-
-    - Added --version command line argument
-
-    - Made manage_FTPget the default source for the editable content, instead
-      of document_src which was broken for CMF Wiki Pages.
-
-    - Fixed Windows "body_file" bug.
-
-    - Added binary build support for Windows using py2exe and Inno setup.
-
-    - Fixed Windows config file locator. It now looks in the program directory
-      and then the user's home directory (if specified)
-
-    - Fixed bug in Windows registry editor lookup.
-
-  6/16/02 - 0.3 Release
-
-    - 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 Release
-
-    - Fixed product uninstallation bug
-
-  5/15/02 - 0.1
-
-    - Initial release

Deleted: Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-UNIX.txt
===================================================================
--- Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-UNIX.txt	2008-05-03 18:58:19 UTC (rev 86271)
+++ Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-UNIX.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -1,115 +0,0 @@
-Zope External Editor Installation
-
-  Installation is two-fold: 
-
-  - Install the ExternalEditor product in Zope.
-
-  - Install the helper application on the client(s) and configure the browser(s)
-
-  Product Installation
-
-    Download the archive and extract it into your Zope products directory. Then
-    restart Zope. If you succeeded, you'll notice pencil icons next to the
-    external editable objects in the Zope management screens.
-
-  Helper Application Installation
-
-    Dependancies: Python 2.2, Tk
-
-    Download the helper app archive and extract it. Enter the ExternalEditor
-    directory and run (You may need to be root)::
-
-      python2.2 setup.py install
-
-    This will install the zopeedit.py executable (in /usr/local/bin on my
-    system). Alternately, you can just copy zopeedit.py to the location of
-    your choosing.
-
-    Once you have the helper application installed, you need to configure your
-    browser to fire it off appropriately. To do so, create an entry in the
-    helper applications list for your browser(s) that associates the mime type
-    "application/x-zope-edit" with the helper application.
-    
-    Here are the step-by-step configuration instructions for Mozilla:
-    
-    - From the Edit menu choose Preferences
-    
-    - Under Navigator choose Helper Applications
-    
-    - Click on the New Type button
-    
-    - Enter a description, like "Zope Editor"
-    
-    - For MIME type, enter application/x-zope-edit
-    
-    - for Application, select the helper application python file
-
-    Here are instructions for Konqueror (provided by Mark Bucciarelii)
-
-    - Settings -> Configure Konqueror
-    
-    - Select the File Associations icon
-    
-    - Add a new File Assocation: group = application, type = x-zope-edit
-    
-    - This association should now be currently selected in the Known Types 
-      tree control
-      
-    - Add a description, if you like
-
-    - Click the Add button in the Application Preference Order section.  
-      Browse to select /usr/local/bin/zopeedit.py
-
-  Tips
-  
-    The helper application can run any editor program that does not detach
-    itself from the controlling process.
-    
-    To get terminal based editors to work, you need to spawn them inside an 
-    xterm. to do this, use something like the following for the editor option::
-
-      editor = xterm -e vi
-      
-    You can of course modify the above to fire up your favorite terminal and 
-    editor or add any command line arguments you want.
-    
-    As for editors that insist on detaching from the controlling process (gvim
-    does this by default), you need to configure them so that they do not
-    detach. For gvim you could use::
-
-      editor = gvim -f
-
- Troubleshooting
-
-    If the helper app won't launch try the following suggestions:
-    
-    - Make sure you have Tk installed properly. To test this, bring up Python
-      in a terminal and enter 'import Tkinter'. If it throws an exception,
-      that is your problem.
-
-    - Netscape 4 users, add a "%s" at the end of the application command line. 
-      It appears the Netscape  likes to alert you with spurious things coming
-      from stderr. I'll see if I can come up with a solution to that.
-
-    - Make sure the file is marked as executable for your user 
-      ('chmod +x zopeedit.py' should do it)
-
-    - Make sure the browser is properly configured. Use a full path to the 
-      helper app.
-
-    - Make sure you are using a graphical editor (that uses X windows). To use
-      a terminal based editor (like vi), setup the editor option to spawn it 
-      inside an xterm. See tips above.
-
-    - Try downloading and saving the external editor data to a file manually
-      (right click on the pencil icon). Then try running the helper app from 
-      the command line, passing it the path to this file. If it runs, then
-      there is something wrong with the browser configuration. If not, then it
-      should output a traceback to your terminal. Email me a copy of this
-      traceback, and the data file and I will try to fix it.
-
-    - If the editor launches, but the helper app complains that it lost its 
-      connection to the editor process, this is because your editor detached 
-      from the parent process (the helper app). Configure the editor such that 
-      it does not do this. Unfortunately this prevents you from using a 
-      multi-headed text edit server (like nedit and emacs can provide). 

Deleted: Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-WIN32.txt
===================================================================
--- Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-WIN32.txt	2008-05-03 18:58:19 UTC (rev 86271)
+++ Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-WIN32.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -1,139 +0,0 @@
-Zope External Editor Installation
-
-  Installation is two-fold: 
-
-  - Install the ExternalEditor product in Zope.
-
-  - Install the helper application on the client(s) and configure the browser(s)
-
-  Product Installation
-
-    Download the archive and extract it into your Zope products directory. Then
-    restart Zope. If you succeeded, you'll notice pencil icons next to the
-    external editable objects in the Zope management screens.
-    
-  Helper Application Installation (Binary)
-
-    The binary distribution for Windows includes everything you need to
-    to install the helper application. It is precompiled to a native Windows
-    executable using Python 2.3.4, Pythonwin build 163 and Py2exe 0.5. 
-    Everything is included for you in one package.
-
-    Just run the setup executable to install and configure the helper app
-    for use with Internet Explorer. You can also register it (zopeedit.exe) 
-    with other browsers directly.
-
-    You can download the binary installer from Zope.org at::
-
-      http://www.zope.org/Members/Caseman/ExternalEditor
-
-  Helper Application Installation (Source)
-
-    Dependancies: Python 2.2 or newer, Pythonwin extensions (win32all)
-
-    *Note: This configuration is for Windows 98, for easier setup on XP and
-    Windows 2000, use the binary distribution*
-    
-    Download the helper app archive and extract into the directory where you 
-    want to install it: C:\Program Files\ZopeEdit might be a good choice. 
-
-    Once you have the help application installed, you need to configure your
-    browser to fire it off appropriately. To do so, create an entry in the
-    helper applications list for your browser(s) that associates the mime type
-    "application/x-zope-edit" with the helper application.
-
-    To do this for Internet Explorer and other recent browsers, you must
-    register the external editor file type with Windows:
-
-    - From the "My Computer" window, choose "Folder Options" from the "View"
-      menu.
-
-    - In the "File Types" tab, click on the "New Type" button.
-
-    - Enter a description such as "Zope External Editor"
-
-    - Enter an extension not otherwise used on your system (.zope is usually a
-      good choice, the exact value is not important)
-
-    - For content type (MIME) enter: application/x-zope-edit
-
-    - Under "Actions", click on the "New" button.
-
-    - For Action enter: Open
-
-    - For application used, enter or browse to the path to pythonw.exe
-      (wherever you installed python2.3, such as C:\Python23).
-      Use quotes around the path if it includes spaces. Following the path to
-      Python, enter the path to the helper application file, in quotes if
-      needed.  Follow it with: "%1" (in quotes). On my system it looks like::
-
-        '"C:\Python23\pythonw.exe" C:\Casey\ExternalEditor\zopeedit.py "%1"
-
-    - Click OK.
-
-    - Uncheck "Confirm open after download"
-      
-    - Click OK, you should now see your new file type.
-    
-  Tips
-  
-    The helper application can run any editor program that does not detach
-    itself from the controlling process.
-    
-    As for editors that insist on detaching from the controlling process
-    (EditPad does this by default), you need to configure them so that they do
-    not detach. For EditPad you could use::
-
-      editor = C:\Program Files\EditPadClassic\EditPad.exe /newinstance
-
-    Check the command line options of your favorite editor to see if it
-    supports this.
-    
- Troubleshooting
-
-    If the helper app won't launch or you receive errors try the following 
-    suggestions:
-    
-    - Make sure you have Pythonwin installed properly. To test this, bring up 
-      the Python console and type in 'import win32api'. If it throws an
-      exception, you need to install Pythonwin.
-
-    - Netscape 4 users, add a "%s" at the end of the application command line. 
-      It appears the Netscape  likes to alert you with spurious things coming
-      from stderr. I'll see if I can come up with a solution to that.
-
-    - Make sure the file type is properly configured to launch the helper app
-      when it receives files of type "application/x-zope-edit".
-
-    - Try downloading and saving the external editor data to a file manually
-      (right click on the pencil icon). Then try running the helper app from 
-      the command line, passing it the path to this file. If it runs, then
-      there is something wrong with the browser/system configuration. If not,
-      then it should output a traceback to your terminal. Email me a copy of
-      this traceback, and the data file and I will try to fix it.
-
-    - If the editor launches, but the helper app complains that it lost its 
-      connection to the editor process, this is because your editor detached 
-      from the parent process (the helper app). Configure the editor such that 
-      it does not do this. Unfortunately, many MDI applications do this and
-      cannot be configured otherwise. To solve this problem, a plug-in must
-      be developed for the application. See the README file for more details.
-      
-    - If you are using IE connecting to Zope over SSL (HTTPS), and you receive
-      errors that the file could not be opened or downloaded, or you receive
-      errors from External Editor that the file was not found try the following:
-
-      - Go to Tools->Internet Options and click on the advanced tab
-
-      - Under security (near the bottom) uncheck "Do not save encrypted files 
-        to disk"
-    
-    - If you are using IE and you receive an error from the helper app like
-      "FATAL ERROR [Errno 2] No such file or directory...." it means that IE is
-      refusing to save the temp file to disk. This is usually caused by a cache
-      control header such as "Cache-Control: no-cache". To use external editor
-      with IE you must prevent this header from being set. Some versions of
-      CookieCrumber inject this header for all authenticated requests. You can
-      fix this by changing the CC configuration on its properties tab in the
-      ZMI to use another cache control value such as "private".
-

Deleted: Products.ExternalEditor/trunk/Products/ExternalEditor/README.txt
===================================================================
--- Products.ExternalEditor/trunk/Products/ExternalEditor/README.txt	2008-05-03 18:58:19 UTC (rev 86271)
+++ Products.ExternalEditor/trunk/Products/ExternalEditor/README.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -1,370 +0,0 @@
-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.
-
-  - Automatically saves changes back to Zope without ending the editing session.
-
-  - 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.
-
-  - Locks objects while they are being edited. Automatically unlocks them when
-    the editing session ends.
-
-  - 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
-
-    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:
-
-    1. You click on the external editor link (the pencil icon) in the Zope 
-       management interface.
-       
-    2. The product code on the server creates a response that encapsulates the
-       necessary meta-data (URL, meta-type, content-type, cookies, etc) and the
-       content of the Zope object, which can be text or binary data. The
-       response has the contrived content-type "application/x-zope-edit".
-
-    3. The browser receives the request, and finds our helper application
-       registered for "application/x-zope-edit". It saves the response data 
-       locally to disk and spawns the helper app to process it.
-
-    4. The helper app, reads its config file and the response data file. The
-       meta-data from the file is parsed and the content is copied to a new
-       temporary file. The appropriate editor program is determined based on
-       the data file and the configuration.
-       
-    5. The editor is launched as a sub-process of the helper app, passing it the
-       file containing the content data.
-       
-    6. If so configured, the helper app sends a WebDAV lock request back to Zope
-       to lock the object.
-       
-    7. Every so often (if so configured), the helper app stats the content file
-       to see if it has been changed. If so, it sends an HTTP PUT request
-       back to Zope containing the new data.
-       
-    8. When the editor is closed, the content file is checked one more time and
-       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.
-      
-      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.
-
-      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.
-
-      extension -- (text) The file extension to add to the content file. Allows
-      better handling of images and can improve syntax highlighting.
-
-      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.
-
-      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.
-
-    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.
-
-      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.
-
-      - '[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.
-
-      - '[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
-
-    For tighter client-side integration, external editor has a plugin system
-    that allows it to interact directly with supported applications.
-
-    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.
-
-    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::
-
-      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
-
-    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. 
-
-    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)::
-
-      [content-type:image/*]
-      editor=photoshop
-
-    This is only a shortcut and specifying the full application path will
-    still use the plugin where possible.
-
-    Plugin Notes
-
-      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.
-
-      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.
-      
-  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::
-
-      <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::
-
-      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
-      
-      casey_duncan at yahoo.com
-
---
-
-(c) 2003, Casey Duncan and Zope Corporation. All rights reserved.

Deleted: Products.ExternalEditor/trunk/Products/ExternalEditor/setup.py
===================================================================
--- Products.ExternalEditor/trunk/Products/ExternalEditor/setup.py	2008-05-03 18:58:19 UTC (rev 86271)
+++ Products.ExternalEditor/trunk/Products/ExternalEditor/setup.py	2008-05-03 19:03:45 UTC (rev 86272)
@@ -1,25 +0,0 @@
-from setuptools import setup, find_packages
-from zopeedit import __version__
-
-
-setup(name='Products.ExternalEditor',
-      version=__version__,
-      description="Zope External Editor",
-      classifiers=[
-        'Framework :: Zope2',
-      ],
-      author="Casey Duncan and Contributors, maintained by Chris McDonough",
-      author_email="chrism at plope.com",
-      url="http://www.plope.com/software/ExternalEditor",
-      packages=find_packages(),
-      namespace_packages=['Products'],
-      include_package_data=True,
-      zip_safe=False,
-      install_requires=[
-        'setuptools',
-      ],
-      entry_points="""
-      [console_scripts]
-          zopeedit=Products.ExternalEditor.zopeedit:main
-      """,
-      )

Added: Products.ExternalEditor/trunk/Products/__init__.py
===================================================================
--- Products.ExternalEditor/trunk/Products/__init__.py	                        (rev 0)
+++ Products.ExternalEditor/trunk/Products/__init__.py	2008-05-03 19:03:45 UTC (rev 86272)
@@ -0,0 +1,6 @@
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)


Property changes on: Products.ExternalEditor/trunk/Products/__init__.py
___________________________________________________________________
Name: svn:eol-style
   + native

Copied: Products.ExternalEditor/trunk/README.txt (from rev 86271, Products.ExternalEditor/trunk/Products/ExternalEditor/README.txt)
===================================================================
--- Products.ExternalEditor/trunk/README.txt	                        (rev 0)
+++ Products.ExternalEditor/trunk/README.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -0,0 +1,370 @@
+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.
+
+  - Automatically saves changes back to Zope without ending the editing session.
+
+  - 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.
+
+  - Locks objects while they are being edited. Automatically unlocks them when
+    the editing session ends.
+
+  - 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
+
+    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:
+
+    1. You click on the external editor link (the pencil icon) in the Zope 
+       management interface.
+       
+    2. The product code on the server creates a response that encapsulates the
+       necessary meta-data (URL, meta-type, content-type, cookies, etc) and the
+       content of the Zope object, which can be text or binary data. The
+       response has the contrived content-type "application/x-zope-edit".
+
+    3. The browser receives the request, and finds our helper application
+       registered for "application/x-zope-edit". It saves the response data 
+       locally to disk and spawns the helper app to process it.
+
+    4. The helper app, reads its config file and the response data file. The
+       meta-data from the file is parsed and the content is copied to a new
+       temporary file. The appropriate editor program is determined based on
+       the data file and the configuration.
+       
+    5. The editor is launched as a sub-process of the helper app, passing it the
+       file containing the content data.
+       
+    6. If so configured, the helper app sends a WebDAV lock request back to Zope
+       to lock the object.
+       
+    7. Every so often (if so configured), the helper app stats the content file
+       to see if it has been changed. If so, it sends an HTTP PUT request
+       back to Zope containing the new data.
+       
+    8. When the editor is closed, the content file is checked one more time and
+       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.
+      
+      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.
+
+      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.
+
+      extension -- (text) The file extension to add to the content file. Allows
+      better handling of images and can improve syntax highlighting.
+
+      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.
+
+      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.
+
+    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.
+
+      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.
+
+      - '[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.
+
+      - '[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
+
+    For tighter client-side integration, external editor has a plugin system
+    that allows it to interact directly with supported applications.
+
+    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.
+
+    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::
+
+      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
+
+    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. 
+
+    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)::
+
+      [content-type:image/*]
+      editor=photoshop
+
+    This is only a shortcut and specifying the full application path will
+    still use the plugin where possible.
+
+    Plugin Notes
+
+      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.
+
+      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.
+      
+  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::
+
+      <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::
+
+      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
+      
+      casey_duncan at yahoo.com
+
+--
+
+(c) 2003, Casey Duncan and Zope Corporation. All rights reserved.

Copied: Products.ExternalEditor/trunk/docs/INSTALL-UNIX.txt (from rev 86271, Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-UNIX.txt)
===================================================================
--- Products.ExternalEditor/trunk/docs/INSTALL-UNIX.txt	                        (rev 0)
+++ Products.ExternalEditor/trunk/docs/INSTALL-UNIX.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -0,0 +1,115 @@
+Zope External Editor Installation
+
+  Installation is two-fold: 
+
+  - Install the ExternalEditor product in Zope.
+
+  - Install the helper application on the client(s) and configure the browser(s)
+
+  Product Installation
+
+    Download the archive and extract it into your Zope products directory. Then
+    restart Zope. If you succeeded, you'll notice pencil icons next to the
+    external editable objects in the Zope management screens.
+
+  Helper Application Installation
+
+    Dependancies: Python 2.2, Tk
+
+    Download the helper app archive and extract it. Enter the ExternalEditor
+    directory and run (You may need to be root)::
+
+      python2.2 setup.py install
+
+    This will install the zopeedit.py executable (in /usr/local/bin on my
+    system). Alternately, you can just copy zopeedit.py to the location of
+    your choosing.
+
+    Once you have the helper application installed, you need to configure your
+    browser to fire it off appropriately. To do so, create an entry in the
+    helper applications list for your browser(s) that associates the mime type
+    "application/x-zope-edit" with the helper application.
+    
+    Here are the step-by-step configuration instructions for Mozilla:
+    
+    - From the Edit menu choose Preferences
+    
+    - Under Navigator choose Helper Applications
+    
+    - Click on the New Type button
+    
+    - Enter a description, like "Zope Editor"
+    
+    - For MIME type, enter application/x-zope-edit
+    
+    - for Application, select the helper application python file
+
+    Here are instructions for Konqueror (provided by Mark Bucciarelii)
+
+    - Settings -> Configure Konqueror
+    
+    - Select the File Associations icon
+    
+    - Add a new File Assocation: group = application, type = x-zope-edit
+    
+    - This association should now be currently selected in the Known Types 
+      tree control
+      
+    - Add a description, if you like
+
+    - Click the Add button in the Application Preference Order section.  
+      Browse to select /usr/local/bin/zopeedit.py
+
+  Tips
+  
+    The helper application can run any editor program that does not detach
+    itself from the controlling process.
+    
+    To get terminal based editors to work, you need to spawn them inside an 
+    xterm. to do this, use something like the following for the editor option::
+
+      editor = xterm -e vi
+      
+    You can of course modify the above to fire up your favorite terminal and 
+    editor or add any command line arguments you want.
+    
+    As for editors that insist on detaching from the controlling process (gvim
+    does this by default), you need to configure them so that they do not
+    detach. For gvim you could use::
+
+      editor = gvim -f
+
+ Troubleshooting
+
+    If the helper app won't launch try the following suggestions:
+    
+    - Make sure you have Tk installed properly. To test this, bring up Python
+      in a terminal and enter 'import Tkinter'. If it throws an exception,
+      that is your problem.
+
+    - Netscape 4 users, add a "%s" at the end of the application command line. 
+      It appears the Netscape  likes to alert you with spurious things coming
+      from stderr. I'll see if I can come up with a solution to that.
+
+    - Make sure the file is marked as executable for your user 
+      ('chmod +x zopeedit.py' should do it)
+
+    - Make sure the browser is properly configured. Use a full path to the 
+      helper app.
+
+    - Make sure you are using a graphical editor (that uses X windows). To use
+      a terminal based editor (like vi), setup the editor option to spawn it 
+      inside an xterm. See tips above.
+
+    - Try downloading and saving the external editor data to a file manually
+      (right click on the pencil icon). Then try running the helper app from 
+      the command line, passing it the path to this file. If it runs, then
+      there is something wrong with the browser configuration. If not, then it
+      should output a traceback to your terminal. Email me a copy of this
+      traceback, and the data file and I will try to fix it.
+
+    - If the editor launches, but the helper app complains that it lost its 
+      connection to the editor process, this is because your editor detached 
+      from the parent process (the helper app). Configure the editor such that 
+      it does not do this. Unfortunately this prevents you from using a 
+      multi-headed text edit server (like nedit and emacs can provide). 

Copied: Products.ExternalEditor/trunk/docs/INSTALL-WIN32.txt (from rev 86271, Products.ExternalEditor/trunk/Products/ExternalEditor/INSTALL-WIN32.txt)
===================================================================
--- Products.ExternalEditor/trunk/docs/INSTALL-WIN32.txt	                        (rev 0)
+++ Products.ExternalEditor/trunk/docs/INSTALL-WIN32.txt	2008-05-03 19:03:45 UTC (rev 86272)
@@ -0,0 +1,139 @@
+Zope External Editor Installation
+
+  Installation is two-fold: 
+
+  - Install the ExternalEditor product in Zope.
+
+  - Install the helper application on the client(s) and configure the browser(s)
+
+  Product Installation
+
+    Download the archive and extract it into your Zope products directory. Then
+    restart Zope. If you succeeded, you'll notice pencil icons next to the
+    external editable objects in the Zope management screens.
+    
+  Helper Application Installation (Binary)
+
+    The binary distribution for Windows includes everything you need to
+    to install the helper application. It is precompiled to a native Windows
+    executable using Python 2.3.4, Pythonwin build 163 and Py2exe 0.5. 
+    Everything is included for you in one package.
+
+    Just run the setup executable to install and configure the helper app
+    for use with Internet Explorer. You can also register it (zopeedit.exe) 
+    with other browsers directly.
+
+    You can download the binary installer from Zope.org at::
+
+      http://www.zope.org/Members/Caseman/ExternalEditor
+
+  Helper Application Installation (Source)
+
+    Dependancies: Python 2.2 or newer, Pythonwin extensions (win32all)
+
+    *Note: This configuration is for Windows 98, for easier setup on XP and
+    Windows 2000, use the binary distribution*
+    
+    Download the helper app archive and extract into the directory where you 
+    want to install it: C:\Program Files\ZopeEdit might be a good choice. 
+
+    Once you have the help application installed, you need to configure your
+    browser to fire it off appropriately. To do so, create an entry in the
+    helper applications list for your browser(s) that associates the mime type
+    "application/x-zope-edit" with the helper application.
+
+    To do this for Internet Explorer and other recent browsers, you must
+    register the external editor file type with Windows:
+
+    - From the "My Computer" window, choose "Folder Options" from the "View"
+      menu.
+
+    - In the "File Types" tab, click on the "New Type" button.
+
+    - Enter a description such as "Zope External Editor"
+
+    - Enter an extension not otherwise used on your system (.zope is usually a
+      good choice, the exact value is not important)
+
+    - For content type (MIME) enter: application/x-zope-edit
+
+    - Under "Actions", click on the "New" button.
+
+    - For Action enter: Open
+
+    - For application used, enter or browse to the path to pythonw.exe
+      (wherever you installed python2.3, such as C:\Python23).
+      Use quotes around the path if it includes spaces. Following the path to
+      Python, enter the path to the helper application file, in quotes if
+      needed.  Follow it with: "%1" (in quotes). On my system it looks like::
+
+        '"C:\Python23\pythonw.exe" C:\Casey\ExternalEditor\zopeedit.py "%1"
+
+    - Click OK.
+
+    - Uncheck "Confirm open after download"
+      
+    - Click OK, you should now see your new file type.
+    
+  Tips
+  
+    The helper application can run any editor program that does not detach
+    itself from the controlling process.
+    
+    As for editors that insist on detaching from the controlling process
+    (EditPad does this by default), you need to configure them so that they do
+    not detach. For EditPad you could use::
+
+      editor = C:\Program Files\EditPadClassic\EditPad.exe /newinstance
+
+    Check the command line options of your favorite editor to see if it
+    supports this.
+    
+ Troubleshooting
+
+    If the helper app won't launch or you receive errors try the following 
+    suggestions:
+    
+    - Make sure you have Pythonwin installed properly. To test this, bring up 
+      the Python console and type in 'import win32api'. If it throws an
+      exception, you need to install Pythonwin.
+
+    - Netscape 4 users, add a "%s" at the end of the application command line. 
+      It appears the Netscape  likes to alert you with spurious things coming
+      from stderr. I'll see if I can come up with a solution to that.
+
+    - Make sure the file type is properly configured to launch the helper app
+      when it receives files of type "application/x-zope-edit".
+
+    - Try downloading and saving the external editor data to a file manually
+      (right click on the pencil icon). Then try running the helper app from 
+      the command line, passing it the path to this file. If it runs, then
+      there is something wrong with the browser/system configuration. If not,
+      then it should output a traceback to your terminal. Email me a copy of
+      this traceback, and the data file and I will try to fix it.
+
+    - If the editor launches, but the helper app complains that it lost its 
+      connection to the editor process, this is because your editor detached 
+      from the parent process (the helper app). Configure the editor such that 
+      it does not do this. Unfortunately, many MDI applications do this and
+      cannot be configured otherwise. To solve this problem, a plug-in must
+      be developed for the application. See the README file for more details.
+      
+    - If you are using IE connecting to Zope over SSL (HTTPS), and you receive
+      errors that the file could not be opened or downloaded, or you receive
+      errors from External Editor that the file was not found try the following:
+
+      - Go to Tools->Internet Options and click on the advanced tab
+
+      - Under security (near the bottom) uncheck "Do not save encrypted files 
+        to disk"
+    
+    - If you are using IE and you receive an error from the helper app like
+      "FATAL ERROR [Errno 2] No such file or directory...." it means that IE is
+      refusing to save the temp file to disk. This is usually caused by a cache
+      control header such as "Cache-Control: no-cache". To use external editor
+      with IE you must prevent this header from being set. Some versions of
+      CookieCrumber inject this header for all authenticated requests. You can
+      fix this by changing the CC configuration on its properties tab in the
+      ZMI to use another cache control value such as "private".
+

Copied: Products.ExternalEditor/trunk/setup.py (from rev 86271, Products.ExternalEditor/trunk/Products/ExternalEditor/setup.py)
===================================================================
--- Products.ExternalEditor/trunk/setup.py	                        (rev 0)
+++ Products.ExternalEditor/trunk/setup.py	2008-05-03 19:03:45 UTC (rev 86272)
@@ -0,0 +1,25 @@
+from setuptools import setup, find_packages
+from zopeedit import __version__
+
+
+setup(name='Products.ExternalEditor',
+      version=__version__,
+      description="Zope External Editor",
+      classifiers=[
+        'Framework :: Zope2',
+      ],
+      author="Casey Duncan and Contributors, maintained by Chris McDonough",
+      author_email="chrism at plope.com",
+      url="http://www.plope.com/software/ExternalEditor",
+      packages=find_packages(),
+      namespace_packages=['Products'],
+      include_package_data=True,
+      zip_safe=False,
+      install_requires=[
+        'setuptools',
+      ],
+      entry_points="""
+      [console_scripts]
+          zopeedit=Products.ExternalEditor.zopeedit:main
+      """,
+      )



More information about the Checkins mailing list