Version 1.8.28 - Deprecated DCDSQLConnection and DCDSQLMethod. Added a SQLWithBrains that uses ZODB Connections but enables a brain to be specified when added (only addable from pothon code that is). - Added Navigation and Publishable support to EasyExcelFile, EasyBlob and EasyImage. - Fixed manage_access so that acquired permissions are marked even when the checkbox is disabled. - Added a special update method to EasyEditable: manage_remove_property(id, delete_value=0, changed=0, REQUEST=None) It removes any on wanted properties added by content regions. - Upgraded Formulator to 1.7.0 (cep now works with Zope 2.7.3) - Upgraded PlacelessTranslationService to 1.0 (cep now works with Zope 2.7.3) - Seperated PlainTemplate from EasyTemplate. (Might move the EasyEditor support in EasyTemplate to a Plugin. But EasyTemplate needs to be left for backward compatability.) And fixing template acquisition. Now we write a voyatil attribute to the class (of the object), get the attribute through the object and delete the class attribute. This way th attribute gets wrapped up in the class context and this works with extenssion classes (as it seems) and there for the object will acquire the correct context (before (using instancemethod) the aq context was just the objects not it's parents.) We need to set up methods to get the templates acquisition context (the world seen from the template) and maybe the EasyEditor context (but it should be accessible from the templates context or by direct call to getEasyEditor (getTemplateService) from the objects context. (An internal note: class methods in EasyEditor and Template classes will not have a local context when called from the object. There for all methods that needs to be visible to each other in such a context should be exported, or getTemplateContext should be used. ) Version 1.8.27 - Added EasyBlob. It's a replacement for EasyFile and EasyImage that is designed to be able to handle hugh files as well as filebased repositories. (No ZODB repository implemented yet.) EasyBlobs will be template-aware in the future, this release it's just a basic blob objekt. EasyFile objects use the file-streaming interface which enables large files without consuming large amount of system resourses. - Added getIconTitle to all places that use getIcon. - Made EasyVHM configurable from a configure file (etc/VirtualHosts.conf) which overrides (and disables) the TTW configuration. An EasyVHM still needs to be created to use the information in the etc/VirtualHosts.conf. All EasyVHMs created in the Zope instance will use the same information. Error messages are stored in the module of the EasyVHM, this might not be so good in host/instance installation. Make sure the EasyVHM always gets installed in the instances Products folder. - REQUEST['here'] has been replaced by the API call getHere() (in EasySkinnable). ToDo: - Remove the old ciew calling implementation from EasyEditable. - Review the __bobo_traverse__ functionality in EasyEditable. - Replace the rest of the REQUEST variables in the EasyEditable implementation with real API calls and update the documentation. - Fixed bugs in BooleanStorage. - Fixed EasyTemplatePlugins so that the attribute exported is depending on the order of the plugins. - Added EasyMessageBoard. A plugin based Message board product. Version 1.8.26 - Fixed problems with the dialogs in EasyEditor due to the use of deprecated methods (getEasyNavigationURL and getEasyResourcesURL). - Removed viewItems from EasyTemplate and EasyApplicationView. - Changed name on getEditViewId too getDefaultEditViewId. - Removed getEditView from EasyTemplate. - Removed hasFeature, getFeature, featureIds, featureValues, featureItems, featureMap from EasyTemplate. - Refactored all View related stuff from EasyTemplate to EasyTemplateBase.EasyViewContainer class - Added a TemplateInheritance API to EasyViewContainer: getParentTemplates, returns a list of inherited templates starting with it self as the first template and ending with the last template set to EasyEditor. - EasyTemplateBase.EasyViewContainer.viewValues is deprecated. - Added viewObjectIds(self, edit=None) and viewObjectValues(self, edit=None) to EasyViewContainer which returnes ids ot object for views (either dedicated view objects or objects marked as views or editable views by the new Modify View Interface. - Added Modify View Interface to EasyViewContainer:: def toogleViewObjects(self, view_ids=[], set_view=1, set_edit=None): """Toogles views or edit views in the _object tulpe.""" def manage_toogleAsViews(self, ids=[], REQUEST=None): def manage_toogleAsEditViews(self, ids=[], REQUEST=None): - Made views inherited. If template are placed inside each other views will be inherited from the parents. EasyEditor will always be the to level where views can be created. Regulare objects can be promoted to views by selecting and toogle them in the Contents view. - Removed the dependance on the ActiveX Scripting.Dictionary in the Easy Editor (using native JavaScript hash tables instead). Version 1.8.25 - Added a patch for StructuredText enabling unicode and iso-8859-1 text to be used in structured text. - Added a new storage, SimpleCollectionStorage, that stores and manages a list of other regions. API Changes: - Added a EasySchema template that is a ContentRegion container for regions not directly accessable from EasyEditable::HTML. EasySchema can be used as content defintions for SimpleCollectionStorage. - Added a new Easy View (non rendering on Data View) called EasySchema EasySchemas holds Content Regions that doesn't get automatically accessable from the HTML view of the editable. Changed SimpleCollectionStorage to on EasySchema as the template for the items. (Future. EasySchemas should be exportable to the HTML View under different sub-tabs (one tab to one schema).) - New Method in EasyEditable:: getRegionById(self, region_id) """Returnes the Region Object from the current template.""" - Added:: getUniqueValuesFor(self, query={}, unique_index=None, group_by=None, output_ids=None) """Returns a list of unique values or a dictionary with groups of unique values (unique to the group).""" to Products.EasyCore.ZCatalog.ProtectedCatalog. - Updated EasyVHM to take a remote path. Remote path will be added to the root URL so that all URLs start with it. This is for sites that are mapped as sub folder in other maps (URLs to management stylesheets and icons will not work if the EasyVHM doesn't specify where the root is). Version 1.8.24 - Added fully configurable HTML Tidy support in EditableRegions. (Requires mxTidy) - Remove FileSystemSite and add ProxyIndex. Update Formulator and ParsedXML (with versions from Silva) Added Infrae license to root, so they are creadited. - Added EasyCore.EasySkinnable to EasyEditor. This breaks EasyRoots portal_skins integration. Also this is only a preview of the Skinnable support planed, only the propeties and objects of the EasyEditor is propagated to the EasyEditables namespace - Added plugin support for EasyTemplates. Plugins are classes that register (via registerPluginClass) and that export a set of attributes (__exported_attributes__=) to the template which in turn get propegated to the document. The attributes looks like they where defined on the document object. Also added a MethWrap to wrap plugin methods to get them to participate in the normal "acquisition game".a Plugins can be created by inherit the base class: Products.EasyEditor.EasyTemplates.EasyTemplatePlugins.EasyTemplatePluginBase They need to be registered with context.registerPluginClass() in the products __init__.py. (registerPluginClass takes the same arguments as registerClass but registers the class as a Plugin rather than a regulare Zope Product.) (Also see registerEasyRegionClass, registerEasyViewClass, registerEasyTemplateClass.) Plugins are creatable inside EasyTemplates but will probably also be addable in the EasyEditor it self for "global" plugins. Global plugins may be of a different set that Template Plugins (which would in that case be configurable in the registerPluginClass call). See future updates to this file (Changs.txt). - Removed the acquisition magic in DTMLViews __call__ (because now all method objects in a template can act like views. Future step may be to refactor the "View Functionality" out of the View rendering DTMLViews obsolete (a DTMLView can be created by externaly "viewify" a DTML Method or DTML Document, same thing for PageTemplates and Scripts (including Controlled versions of the two). At this point this is left to do. - Added getValueFor and setValueFor to EasyEditables. They should be used when getting or setting region values from documents. Direct access to the region strorage attributes are now deprecated. The advantage of using getValueFor and setValueFor is that they can trigger events (such as initRegionEvent the initilizes a region locally using the default value): getValueFor(region_id, default=_marker, render=1) setValueFor(region_id, value) Because this kind of access doesn't work that good in &dtml-attribute_name; a special attribute look up has been made available. Accessing variables starting with "get_value_" and ending with the region_id will look up det regions value by executing getValueFor on the prepended region_id with full initzializing and all. - Filteres has been added to EasyEditor and EasyTemplate that can filter out attribute that _should not_ be exported. Templates and EditableRegions are never exported, this may change in the future but because the exported attributes appears as attributes if the document this leads to conflicts. (Using explicit calls like getValueFor will make your template code more future compatible.) The filters are configurable from the Properties: "Hidden Attributes" and "Hidden Meta Types " - You can now control how the manage_option looks like for documents by setting options in the Templates Properties view. Disable Editor -- Disables the EasyEditor view even for Internet Explorer (default: false) Edit Option Name -- Sets the name of the HTML tab (default: 'HTML') Edit Option First -- Let's the HTML tabs sho before all other (e.g. Contents) - More options Default Object Sorting -- Sets the default sort index for the Content View in Documents with this Template. Filter Template Types -- Toggles if Template Types shopuld be filtered by "Allowed Template Types" Allowed Template Types -- The Template Types that should be shown by the Documents Content View. Use Base Class -- In Easy Publisher 1.8 Template Types are always shown in the top of the Select Box in the Content View. Selecting a Template will add an object defined by this property with the template pre-defined. Filter Meta Types -- Filters the Content View base on "Allowed Meta Type" Allowed Meta Type -- The Meta Types that should be shown by the Documents Content View. Version 1.8.22 - Added some feature to template that modifies how HTML view is shown (name, disable editor, and order of HTML/Editor and Content) are configurable from Templates properties. Version 1.8 beta18 - Fixed JavaScript bugs in EasyEditor when using multiple editable view. - Added EasyExcelFile which is a file object that takes a Microsoft Excel XML file, parses it and lets the users access data scripts or DTML/ZPT. Currently only getAllRows and a sequence interface (__len__, __getitem__, __getslice__ etc.) is implemented. Storage and interfaces are going to change for this class in the future. This also requires PyXML to be installed (not optional yet). Version 1.8 beta17 - Requires Zope 2.7.1 - Included APE, Archetypes (validation, generator), BTreeFolder2, CMFCore, CMFDefault, CMFFormController, CookieCrumbler, DCWorkflow, CPSSchemas, Epoz, TinyTablePlus, GroupUserFolder, ExternalEditor, MailBoxer, GroupUserFolder, ParsedXML, PlacelessTranslationService, PloneErrorReporting, PortalTransforms, ReplaceSupport, and Xron (which may be replaced). And Formulator off course. All these third party products may not be useful or even used by Easy Publisher. (But I finds the interesting and I want to keep them around.) - EasyRoot now acts as a PortalRoot, e.g. it talks to portal_skins to setup access to skins objects. A EasyRoot site can basically be a CMF portal now (this is untested yet, bugg reports or comments are welcome). - The App.ProductContext.registerClass now takes a category argument for sorting meta_type in to categories. This is uses for instance in the Add Object box in the manage_main (Contents) view to group objects by category (this should be made optional through user configuration). - Add Object box in the manage_main (Contents) view also shows all allowed EasyEditor templates by name first in the select box. When a Template is choosen a object of a pre-defined type is added with the template choosen. Allowed template as well as allowed meta_type and the pre-defined object type to add is configured in the Properties view of each template. Easy Publisher 1.8 beta15, 2004-05-05 What's new This document describes what is new and that has change in Easy Publisher 1.8. Issues has been divided in to three separate categories: - Content Providers - Web Designers and Developers - Administrators Content Providers Overview New Options and User Interface changes - The look and feel of the views as been changed. - New Body Tabs, some View Tabs have moved. - Buttons named Change have been change to Save Changes for better consistency - Easy Contact Form has a option (Use EasyMailService) to use the settings of the Easy Mail Service to get mail server information (compared to Easy Publisher 1.6) - The Image and Link dialogs now permit the user to upload both EasyImages and EasyFiles. The upload function will detect the file type and choose the appropriate object type. - The dialogs also takes meta data about the files that are being uploaded. - EasyFiles and EasyImages now show icons based on the type of file. - The Content view now shows an External Editor link which make it possible to edit object via the External Editor client. - WebDAV support has been improved which enables the user to connect to the server using a WebDAV or FTP client and edit object. For Windows users we can recommend WebDrive which is a client that lets you mount Easy Publisher inside the Windows Exporer just like it was a network drive. New Management Views - Simple Text interface for add batches of navigation Urls - There is a Replace View in EasyEditables which can search and replace strings. New Object Types - The Workflow management interface has been moved from Easy Navigation to own object called Easy Workflow Manager - Easy Language Service is a new object that manage languages and language codes. - Easy Property Container is an object that can hold a propertysheet. It can be used to make parts of the website interface modifiable that is not content editable. For instance contact information or fixed labels, menus and other text. It can be use to localize parts of the web site. - TinyTablePlus is a third party product inlcuded in Easy Publisher. It is used to hold simpler forms of tabular data. View Tabs have mode to Body Tabs One more level of view tabs. Simple text form for Navigation Simple Text interface for add batches of navigation URLs. Enter the simple text form click the Simple Text link in the Navigation view. Enter the urls To add (either virtual urls or physical urls) You can't delete existing entiries. To delete or change exisiting entries you need to copy the whole content, press Delete All and then paste the content and edit it. Web Designers and Developers Overview Administrators Easy Publisher 1.8 runs on Zope 2.5.1 and Zope 2.6.1. Installation Remarks regarding the Source Distribution For the source distribution of Easy Publisher, to replace the Zope Root with the Easy Root you need to copy OFS/Application251.py resp. OFS/Application261.py over the OFS/Application.py. Also Python Image Library (PIL) needs to be installed manually, see the Install.PIL.txt in the source root. Easy Workflow Manager A new object EasyWorkflowManager has replaced the Workflow Manager interface of EasyNavigation. This makes it possible to add serveral EasyWorkflowManagers in a Zope site. Each EasyWorkflow manager handles the part of the web where it has been added (and only that part). This makes it possible for users that only can contribute in a sub part of a site to use the Workflow Manager for that part. The Workflow manager has gained to new views: - Configure - Statistics In the Configure view the user can change which columns is shown (this has been move from the Wrokflow view) and what object types (meta types) that shall be shown in the listing. In the Statistics view the user can see a simple statistic over object. The changes in the Configure and Workflow views are now persisten over the user session, even if the user performs an action or leaves the page. References EasyEditables Easy Editable are all editable documents in Easy Publisher: - EasyDocument - EasyNewsItem - EasyContactForm Physical and Virtual URLs Third Party Products - Formulator 1.3.1 (Upgraded see Products/Formulator/README.txt) - External Editor 0.7 (Optional) - OrderedFolder 0.4.0 (Upgraded see Products/OrderedFolder/CHANGES.txt) - PIL 1.3 (Needs to be complemented with binary components, see INSTALL_PIL.txt) (Optional) - ReplaceSupport 1.0.1 (Optional) - TinyTablePlus 0.9.0 (Optional) - CMFCore (Optional) Deprecated Features Base Classes VirtualPathBase: - absoluteURL (Computed Attribute), use instead: virtualURL - getSiteRootPath, use instead: getVirtualRootPath EasyPublisherBase: - getEasyNavigationURL, use instead: getEasyNavigation.physicalURL - getEasyNavigationPath, use instead: getEasyNavigation.physicalPath - getEasyResourcesURL, use instead: getEasyResources.physicalURL - getEasyResourcesPath, use instead: getEasyResources.physicalPath - getEasyNewsServiceURL, use instead: getEasyNewsService.physicalURL - getEasyNewsServicePath, use instead: getEasyNewsService.physicalPath - getEasyEditor, use instead: getTemplateService - getEasyEditorURL, use instead: tsURL (Computed Attribute) - getEasyEditorPath, use instead: tsPath (Computed Attribute) EasyNavigation: Deprecated Methods: - get_object() - get_subobjects() - get_object_navigation_path() Deprecated (expensive) Methods: - getMenuMap, use instead: getMenu and use recurrsive calls. The brains returned by getMenu contains reference to the following methods that can be used to call getMenu recursivly: LocalNavigationBrain.query LocalNavigationBrain.object_path LocalNavigationBrain.skip_root LocalNavigationBrain.getMenu() LocalNavigationBrain.current_path LocalNavigationBrain.here LocalNavigationBrain.path_in LocalNavigationBrain.getNavigationTrail() LocalNavigationBrain.virtual_root_path_of_request LocalNavigationBrain.domain (= self.getCurrentDomainName()) LocalNavigationBrain.NavigationService (= self) LocalNavigationBrain.EasyVHM (self.EasyVHM or None) - getNavigationTrailMap, use instead: getNavigationTrail - getNavigationContextMap, use instead: getMenu and getNavigationTrail EasyNewsItem (and EasyDublinCore): - The Date interface of EasyNewsItems are now a part of the EasyDublinCore (effecting all EasyEditables) The method of the interface are: def effective_year(self): def effective_month(self): def effective_month_name(self): def effective_day(self): def effective_weekday(self): def publish_date(self): def archive_date(self): def is_visible(self): def is_published(self): def is_archived(self): publish_date (and is_* methods) now calculate the published date base on first the Effective Date, and if not set it looks at the Creation Date (previous EasyNewsItem check the Modification Date which made the News Items undeliberate change date if the was no Effective Date and they where change or moved (for instance exported/imported)). Rendering Context of EasyEditables EASYEDITORURL, EASYNAVIGATIONURL has been *removed*. New Object and Features New Workflow Manager Workflow Management has moved from EasyNavigation to a new object called Workflow Manager. The upside with this is that there can be more than one Workflow Manager, for instance some where in the hierarcy were the workflow manager have access (if they don't have access to the root).