2003-09-02  Sidnei da Silva  <sidnei@plone.org>

	* Field.py (Field.getAccessor): Be more robust about fields
	without accessor.

	* skins/archetypes/widgets/reference.pt: Provide a default value.

	* Field.py (ReferenceField.Vocabulary): Fixed typo in
	vocabylary. Patch by philiKON.

	* BaseUnit.py (newBaseUnit.content_type): Provide a content_type
	method to make ExternalEditor happy (oh, adapters...)

	* Marshall.py (PrimaryFieldMarshaller.marshall): Use __getitem__
	of BaseObject, so we get to use the same effect everywere (get a
	BaseUnit instead of a string).
	(RFC822Marshaller.marshall): Same thing here.

	* BaseUnit.py: Missing parameter on call to update on PUT.

2003-09-01  Sidnei da Silva  <sidnei@plone.org>

	* BaseObject.py (BaseObject.__getitem__): Fixed ExternalEditor
	with Archetypes, by passing maybe_baseunit, which triggers getRaw
	to return the BaseUnit instead of it's string value.

	* Marshall.py (PrimaryFieldMarshaller.marshall): Issue a log
	warning instead of cryptic error if no IBaseUnit returned.

	* BaseUnit.py (newBaseUnit.manage_FTPget): Typo.

2003-08-13  Sidnei da Silva  <sidnei@redesul.com.br>

	* utils.py (DisplayList.keys): Lookup keys/values as their string
	representation as well.

2003-07-31  Sidnei da Silva  <sidnei@redesul.com.br>

	* Field.py (ReferenceField.Vocabulary): Log a warning instead of
	failing when the object cannot be found on the catalog.

2003-07-30  Sidnei da Silva  <sidnei@redesul.com.br>

	* Field.py (FloatField.set): Bah, it was still broken

2003-07-30  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/widgets/multiselection.pt: Fix the
	multiselection widget. It was broken with Zope 2.7.

2003-07-29  Sidnei da Silva  <sidnei@redesul.com.br>

	* tests/test_sqlstorage.py (DummyTool.getConnFor): Fix
	SQLStorageTests by adding the ReferenceEngine as Mixin to the DummyTool.

	* Field.py (ImageField.get): Bah, fixing last minute change that
	broke existing image fields.

	* skins/archetypes/widgets/multiselection.pt: Fix checkbox
	handling on multiselection widget.

2003-07-28  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/displayValue.py: Whoa. A parentesis was out of order.
	Finish by filtering out empty values.

	* Marshall.py (RFC822Marshaller.marshall): Removed TODO
	DublinCoreMarshaller. The RFC822 one should do what the DublinCore
	one intended to do.
	(PrimaryFieldMarshaller.marshall): Make it just a little bit
	smarter. I don't see why this fails to George Pan :(

	* Field.py (Field.validate): Patch by Azazel. Allow passing kwargs
	to the validators, as they seem to already support kwargs in the
	method signatures. 

	* BaseObject.py (BaseObject._processForm): As suggested by George
	Pan, have a REQUEST argument on the processForm method to allow
	passing in a REQUEST.

	* skins/archetypes/displayValue.py: Ok, don't join chars with a
	',' if its a not a list (eg: string or unicode) and convert to a
	string if anything else (eg: int, float)

	* Field.py (Image.isBinary): Use return wrapped image in the
	instance context, and use the instance Title where
	possible. Existing images must be re-saved to get this
	functionality. If you want a non-wrapped image, you must pass the
	keyword argument 'unwrapped=1'.

2003-07-26  Sidnei da Silva  <sidnei@redesul.com.br>

	* Extensions/utils.py (filterTypes): Also check base classes to
	see if they implement IBaseObject.

2003-07-23  Sidnei da Silva  <sidnei@redesul.com.br>

	* Field.py (Field.copy): Do a deepcopy, so we don't get references
	for stuff we don't want to change.

2003-07-18  Sidnei da Silva  <sidnei@redesul.com.br>

	* BaseObject.py (BaseObject.__getitem__): Backport slightly
	modified fix from Ben from head. Enables External Editor to work again.

	* Field.py (Field.getMutator): Aha! self.mutator may be None
	actually, with ComputedField.

2003-07-17  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/content_edit.py (previous): Clearer schemata
	handling. Should fix #770953.

	* BaseObject.py (content_type): Make the RFC822Marshaller the
	default one. Pending tests.
	(BaseObject.SearchableText): Misplaced piece of code, for handling
	LinesField and SearchableText.

	* Marshall.py (RFC822Marshaller.marshall): Small fixes to deal
	with objects without PrimaryField set.

2003-07-16  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/unicodeTestIn.py: Trying to fix current unicode
	state on archetypes. Needs a unicode guru.

	* Schema.py (Schema.validate): Filter empty values on vocabulary lookup.

	* skins/archetypes/widgets/string.pt: Whitespace.

	* skins/archetypes/widgets/keyword.pt: Fill from request if available.

	* skins/archetypes/widgets/multiselection.pt: Reverting Xiru's
	changes and fixing accordingly. Include the default hidden field
	if not required.

	* Validators.py: Zope-dependent validators goes here.

	* skins/archetypes/widgets/field.pt: Display content type if available.

2003-07-15  Sidnei da Silva  <sidnei@redesul.com.br>

	* BaseObject.py: Missing import.

2003-07-11  Sidnei da Silva  <sidnei@x3ng.com>

	* skins/archetypes/base_edit.pt: Show 'default' schemata when
	there is more than one.
	Ops. That wasn't quite it. Fixed accordingly now.

	* skins/archetypes/widgets/multiselection.pt: <input> can't have
	tal:content. I guess it should be value, so changed it to that. It
	is a 'singleton' (or something like that).

	* ArchetypeTool.py (process_types): I was missing this feature for
	a loooong time. Lookup modify_fti on the base classes's modules.

2003-07-10  Sidnei da Silva  <sidnei@x3ng.com>

	* Field.py (ImageField.set): Trying to fix 'imgdata referenced
	before assignment' for Lewellyn.
	(ImageField.set): Doh, now 'mimetype refereced before assignment'

	* tests/test_all.py (test_suite): Added test_fields to the
	suite. Added test_widgets, but commented out. It should be run
	standalone, and with caution! It may harm your database.

	* Extensions/utils.py (isPloneSite): More permissive detection of
	a Plone Site (for people using sites created with *REALLY* old
	versions).

	* ArchetypeTool.py (ArchetypeTool._genId): Replaced weak
	implementation by version suggested by Robert Rotterman.
	(TTWSchema.compileSchema): Tentative to fix 'module Form not
	found' messages for people trying to use TTW schema.

	* skins/archetypes/base_view.pt: Define 'errors' so you can use
	edit widgets on the 'view' customization if you want to.

	* skins/archetypes/widgets/selection.pt: Made selection widget
	work with LinesField. I know it wasn't supposed to be like this,
	but I supposed it should work and it didn't worked, so I ended up
	making it work, which is good in the end :)

2003-07-09  Sidnei da Silva  <sidnei@x3ng.com>

	* tests/test_fields.py: Simple tests for 'processForm'.

	* tests/test_widgets.py (WidgetTests.test_widgets): Kids, don't do
	that at home :) I know I warned you guys against using commit() on
	unittests, but theres *really* no easy way out of this. I have to
	get the site commited to be able to reach it through HTTP, and
	hence use ClientForm to test the forms.

2003-07-08  Sylvain Thnault  <syt@logilab.fr>

    * make subobjects working :))) You can access to subobjects
    generated by transformation of new base unit from the
    instance. For instance if there is a 'image.jpg' subobject on
    <yourobject>, you can get it by accessing yourobject_url/image.jpg
    (or yourobject.getSubObject('image.jpg') ).

    * BaseObject.py: new method isTransformable which return true if
    the field is transformable (i.e. TextField based). New methods to
    handle subobjects : addSubObjects and getSubObject (objects are
    stored in sessions). Automatic access to these subojects by
    overriding __bobo_traverse__.

    * BaseUnit.py: use the new idatastream api and the subobjects api
    of BaseObject. Move cache handling to the transforms tool.

    * I18NMixIn.py: docstring cleanup, fix to work with
    BaseObject.__bobo_traverse__.

    * skins/archetypes/widgets/rich.pt: use isTransformable instead
    of isBinary

2003-07-07  Sidnei da Silva  <sidnei@x3ng.com>

	* Extensions/utils.py: Removed hard dependencies on
	PortalTransform. We will make it optional for 1.0

2003-06-25  Sidnei da Silva  <sidnei@x3ng.com>

	* skins/archetypes/widgets/calendar.pt: Updated macro location to
	the recommended new one, which is calendar_slot not calendar_support.

	* utils.py (OrderedDict.reverse): Implemented 'reverse' operation
	on OrderedDict. Returns a reversed copy of the items list without
	modifying the object. Fixes bug #755622 on sf.

2003-06-23  Sylvain Thnault  <syt@logilab.fr>

	* BaseObject.py: add methods to handle a master translation and
	others translations states.

	* public.py: add i18N content related actions (not sure they are
	in the right place...)

	* skins/archetypes/base_translation.pt: template to edit a
	translation while viewing the master translation.

	* skins/archetypes/manage_translations_form.pt: form to delete
	existant translations or change the master translation.

2003-06-22  Geoff Davis <geoff@geoffdavis.net> (plonista)

    * ArchetypeTool.py: added mechanism for monitoring object schemae.  Schema
    are signed at registration time, and when a schema signature changes, it is
    flagged in ArchetypeTool._types.  Added a new tab on the tool that lets you
    see which types have schema that have changed and lets you update all the
    schema in place.  You will need to reinstall Archetypes to make this work.

    * Schema.py: Added toString and signature methods for use with update
    detection.  The toString method could use some improving.  Also made a minor
    fix for the case of validating objects in place.

    * Field.py: Added toString and signature methods for use with update
    detection.  The toString method could use some improving.

    * BaseObject.py: Added an automigration method for handling updated schema.
    The migration method works fine as long as calling a mutator on the value
    returned by an object's accessor leaves the object unchanged.  If you have
    objects for which this simple migration mechanism won't work, you will need
    to override BaseObject._updateSchema.

    * tests/test_update_schema.py: A new test to make sure all the schema updates
    work.  The individual subtests all work when run individually, but something
    evil in Archetypes is causing POSKeyErrors to be raised when the suite is
    run.  You will need to download the test product ArchetypesTestUpdateSchema
    for this test to run.

    * skins/archetypes/widget/label.pt: Added a skin for a Label Widget (a
    widget used not for data storage, but rather as a kludge for displaying
    text on a form)

2003-06-19  Sylvain Thnault  <syt@logilab.fr>

	* Field.py: add the I18NMixin and create I18N fields for String,
	  Metadata, File, Text, Lines and Image.

	* interfaces/fields.py: added the hasI18NContent method

	* BaseObject.py: add a few methods for I18N content:
	hasI18NContent, getFilteredLanguages and getLanguage

	* skins/archetypes/base_view.py: add a language selector if object
	has I18N content

	* skins/archetypes/base_edit.py: add a language selector if object
	has I18N content

2003-06-18  Sylvain Thnault  <syt@logilab.fr>

	* always use mimetype (and not mime_type) as variable / argument,
	for consistency.

	* TransformTool.py: fix persistence bug in the transformations
	mapping , add support for list and dictionary in
	transforms'configuration.

	* www/configureTransform.pt: use some simple widgets according to
	config metadata.

2003-06-10  Geoff Davis <geoff@geoffdavis.net> (plonista)

	* Field.py: added max_size attribute to ImageField.  max_size is
	a 2-tuple that specifies the maximum width and height for an image.
	Images larger than max_size will be rescaled so that their dimensions
	are <= max_size.  Rescaling preserves the image's aspect ratio and
	requires PIL.

	* Schema.py: fixed a bug in validate when no REQUEST is passed in

	* Widget.py: added size and maxlength attributes to the StringWidget

	* widgets/string.pt: added support for size and maxlength widget
	attributes

	* widgets/zid.pt: allow a form to override member.visible_ids by
	defining a value for the variable visible_ids

2003-06-06  Sylvain Thnault  <syt@logilab.fr>

	* BaseUnit.py: make new base unit working with transforms /
	mimetypes tool.

	* ClassGen.py: add generation of the edit accessor for field with
	the 'w' mode. Edit accessor is like the standard accessor but is
	used before edition of the content. It has been introduced since
	accessor for TextField (i.e. wrapping a BU) return a html / plain
	text version of the content. The edit accessor return the BU
	instance in that case, the same thing as the standard accessor in
	other cases.

	* Field.py: add methods to handle the edit accessor. Add
	transformation in the TextField accessor.

	* Extensions/utils.py (install_tools): install the transforms tool
	and the mimetypes registry.

	* TransformTool.py: new TransformsChain classe, simple policy
	handling

2003-06-04  Sidnei da Silva  <sidnei@x3ng.com>

	* SQLStorage.py (BaseSQLStorage.unmap_fixedpoint): Was causing an
	error if not yet initialized. There is a deep problem in
	archetypes that we need to solve, which is to postpone
	initialization until the object is in the ZODB, currently it is
	being done on a not very friendly order.

	* ArchetypeTool.py (ArchetypeTool.lookupObject): Return None if an
	empty uid was passed.

2003-06-02  Sidnei da Silva  <sidnei@x3ng.com>

	* TransformTool.py (Transform.reload): Got TransformTool and
	MimeTypesTool into a working state, so we can start from
	something. Also, fixed reload method of TransformTool.

2003-05-16  Sidnei da Silva  <sidnei@x3ng.com>

	* utils.py (DisplayList.__add__): Typo. mgsids -> msgids.

	* Field.py (Field.checkExternalEditor): Add check for external
	editor plus permission. This is to make it display the external
	edit link only if it is enabled in plone site_properties (which
	usually means external editor is installed and setup).

	* TemplateMixin.py: Changed references from FieldList to Schema.

2003-05-15  Sidnei da Silva  <sidnei@x3ng.com>

	* Schema.py (Schema.validate): Dont fail if visible_ids is False
	and no id was sent in the request.
	Missing import :(

2003-05-14  Sidnei da Silva  <sidnei@x3ng.com>

	* interfaces/interface.py: Trying to normalize the way interfaces
	are imported in different versions of Zope.

2003-05-13  Sidnei da Silva  <sidnei@x3ng.com>

	* Extensions/utils.py (install_indexes): Changed behavior on index
	instantiation: now uses "TextIndex|FieldIndex:schema". The change
	is in that before this, schema was separated by a pipe, and now it
	uses ':'.

	* skins/archetypes/widgets/calendar.pt: Allow to override calendar
	default value on search widget from request.

	* Storage.py (AttributeStorage.get): Strip acquisition wrappers
	before doing getattr, and try to add them back before returning the value.

	* Field.py (FileField.set): Fixed problem with uploading
	files. Sometimes the mime_type was being wrongly set. Added a test
	to make sure it keeps working.
	(ObjectField.set): Remove acquisition wrappers before going into storage.

2003-05-12  Sidnei da Silva  <sidnei@x3ng.com>

	* ArchetypeTool.py (modify_fti): Get 'global_allow' from the class
	definition, if possible.

2003-05-08  Benjamin Saller  <bcsaller@yahoo.com>

	* Schema.py (Schema.setDefaults): ok, we really do need callable
	default methods but we not have the normal Field.default and the
	Field.default_method that is a name of a method on the instance,
	called with no args and returning the value to be used as the
	default.

2003-05-07  Sidnei da Silva  <sidnei@frodo.x3ng.intranet>

	* skins/archetypes/widgets/textarea.pt: Value is not a valid
	attribute for textareas.

	* Field.py (TextField.getContentType): Changed default to None, or
	else uploaded files of unknown type could end up as text/plain.

	* skins/archetypes/widgets/rich.pt: Display 'download or edit'
	widget.

	* Field.py (Field.getAccessor): Provide a common way for finding
	the accessor and mutator methods.

	* BaseObject.py (BaseObject.isBinary): Improve testing for
	'binaricity' of content.

	* skins/archetypes/widgets/rich.pt: Dont display binary content.

	* ArchetypeTool.py (modify_fti): Set filter_content_types
	accordingly with allowed_content_types or klass attribute.

	* BaseBTreeFolder.py (__getitem__): Cope with BaseBTreeFolder __getitem__.

	* Field.py (FileField.set): Should really store a file, if we want
	it to use external editor with it. This change should not break
	existing instances, but tell me if it does.

2003-05-05  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseObject.py (BaseObject._processForm): Wrong property. Should
	be isMetadata, not metadata.

	* skins/archetypes/widgets/multiselection.pt: Add default value
	for when no option was selected.

2003-05-01  Benjamin Saller  <bcsaller@yahoo.com>

	* ReferenceEngine.py (ReferenceEngine._addBref): There was a
	problem with Brefs getting added more than once since an
	assumption was violated with the addition of relationships. Fixed.

2003-04-30  Benjamin Saller  <bcsaller@yahoo.com>

	* ReferenceEngine.py (ReferenceEngine.addReference): changed the
	before add/del hooks to get passed the name of the
	relationship. Made delete take the name of the relationship and
	introduced a slight policy change as seen in test_singleReference.
	We record a single reference for an (object, relationship) pair,
	but an object can keep many references to a single object with
	different relationships. The delete case was also broken by the
	introduction of relationship types, this has been fixed and a test
	added.


2003-04-30  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseObject.py (BaseObject._processForm): Mispelling. metdata -> metadata.

2003-04-28  Benjamin Saller  <bcsaller@yahoo.com>

	* Referenceable changes: added before Add/Delete hooks for
	target. Added getRelationships which is a list of all types of
	relationships managed for this object.

2003-04-27  Sidnei da Silva  <sidnei@x3ng.com>

	* Marshall.py (RFC822Marshaller.demarshall): Use the mutator
	instead of field.set().
	(RFC822Marshaller.marshall): Add a new line.

2003-04-25  Sidnei da Silva  <sidnei@x3ng.com>

	* tests/test_all.py (test_suite): Was missing a test on the test suite.

2003-04-23  Sidnei da Silva  <sidnei@x3ng.com>

	* Schema.py (MetadataSchema.addField): Layer was not being
	registered, which caused it not to be initialized/cleaned.

	* Storage.py (Storage.__repr__): Uniquefy Storage. Storages dont
	have special attributes, so using two instances need to be like
	one to initializeLayers and cleanupLayers.

	* Marshall.py (Marshaller.cleanupInstance): Avoid trying to delete
	the hook twice. XXX Need to find out why it is being called twice.

	* Field.py (TextField.set): The the mime-type parameter is spelled
	mime_type, also, the new BaseUnit doesnt accepts an instance parameter.

2003-04-22  Benjamin Saller  <bcsaller@yahoo.com>

	* tests/test_referenceable.py
	(ReferenceableTests.test_relationships): Added tests for and the
	ability to define the relationship between references. Look at the
	test for details but know that we can say things like:
		a.addReference('Owns', b)
		a.getRefs() = [..all..]
		a.getRefs('Owns') [b]

	IMPORTANT: The old storage format for reference is no longer
	supported. It should possible to convert to the new model using a
	script and a default relationship type though


2003-04-22  Sidnei da Silva  <sidnei@x3ng.com>

	* Marshall.py (Marshaller.initializeInstance): Method was not
	matching the interface.
	(RFC822Marshaller.marshall): Check by interface, instead of attribute.
	(Marshaller.initializeInstance): Better initialization/cleanup.

	* interfaces/layer.py (ILayerRuntime.initializeLayers): Update
	interfaces to match the real implementation.


2003-04-21  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseContent.py (BaseContent): No ObjectManager here please.

	* Field.py (ImageField): Theres no reason why this coudlnt use
	AttributeStorage by default. Using ObjectManagedStorage breaks it
	when using with BaseContent objects.

	* tests/test_baseunit.py (BaseUnitTest.testSame): Added the same
	tests here as on the transform package, to confirm it works with
	the new BaseUnit.

2003-04-20  Sidnei da Silva  <sidnei@x3ng.com>

	* content_driver/html4zope.py: Fixed Subtitle.

2003-04-19  Sidnei da Silva  <sidnei@x3ng.com>

	* Marshall.py (RFC822Marshaller.demarshall): Adding a bare RFC822
	Marshaller, and fixing lots of typoes :P
	(RFC822Marshaller.marshall): Should use instance['field_name'] to
	reliably access fields. BaseObject.__getitem__ does the right job
	at getting and calliing the accessor.

	* content_driver/reST.py (Converter.convertData): Rendering of
	reST was broken. It was not rendering references the right way,
	and it didnt seem like it was doing the right thing with
	titles. Updated to use docutils.core.publish_string.

	* tests/test_baseunit.py: Added minimal test for BaseUnit.

2003-04-18  Sidnei da Silva  <sidnei@x3ng.com>

	* public.py: Added BaseBTreeFolderSchema. Fixed BaseFolderSchema
	and BaseSchema, now that we have added ExtensibleMetadata in the classes.

2003-04-17  Benjamin Saller  <bcsaller@yahoo.com>

	* ArchetypeTool.py (listTypes): deprecated old listTypes, but keep
	the import working, this should avoid a class of errors coming
	from 'near misses' on the imports


2003-04-16  Sidnei da Silva  <sidnei@x3ng.com>

        * BaseFolder.py: Add ExtensibleMetadata.schema to the Folder
	schema. Otherwise, were dont really implement IExtensibleMetadata.

	* BaseFolder.py (BaseFolder.manage_afterAdd): SkinnedFolder
	subclasses CMFCatalogAware, so, now that Referenceable doenst
	subclasses it anymore, we call SkinnedFolder.manage_afterAdd.

	* BaseContent.py (BaseContent.manage_afterAdd): PortalContent
	subclasses CMFCatalogAware, so, now that Referenceable doenst
	subclasses it anymore, we call PortalContent.manage_afterAdd.

	* Referenceable.py (Referenceable.manage_afterAdd): Dont subclass
	CMFCatalogAware anymore. Some methods were being called twice,
	because of this, and some initialization couldnt be performed
	because it tried to catalog fields that were not being
	initialized, and you couldnt make initialization happen first
	because it could depend on UID being set.

	* ArchetypeTool.py (modify_fti): Setting category to Folder was
	causing bad things. We need to fix plone, because a portal_type
	that is marked as 'use_folder_tabs' dont get tabs of the object category.
	(modify_fti): Hide references if IReferenceable is not implemented
	by the class.
	(modify_fti): Hide metadata if IExtensibleMetadata is not
	implemented by the class.

	* BaseContent.py: Assert that we implement IReferenceable

	* BaseFolder.py: Assert that we implement IReferenceable

	* BaseObject.py: Assert that we implement IReferenceable

	* interfaces/referenceable.py (IReferenceable._verifyObjectPaste):
	Added IReferenceable interface.

2003-04-15  Benjamin Saller  <bcsaller@yahoo.com>

	* Made widget.Description more runtime callable by looking for an
	optional method on the class of its name and returning its value.

2003-04-15  Sidnei da Silva  <sidnei@x3ng.com>

	* skins/archetypes/widgets/lines.pt: Should be :lines, not
	:list. Textareas dont have a value attribute.

	* skins/archetypes/base_view.pt: Allow users to provide custom
	header, body and footer macros for the the autogenerated
	view. This happens by looking for a template named
	'${portal_type}_view' and inside this template, looking for macros
	named 'header', 'body' and 'footer'. The body macro overrides the
	generated field listing. The header macro is inserted at the top,
	replacing <h1>Title</h1> and the footer macro is inserted after
	the field listing.

	* SQLStorage.py: Forgot to import type_map from Storage.py

2003-04-14  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseBTreeFolder.py: Declare the right interfaces we implement.

	* ArchetypeTool.py (modify_fti): Make folderish types actions have
	a category of 'folder', so it works correctly with Plone.

	* public.py: Make Storages and DisplayList available from public.

	* SQLStorage.py: Import only what is needed from Storage.

	* Storage.py (__all__): Restrict whats going to be imported so we
	dont pollute the namespace.

	* BaseObject.py (BaseObject.__getitem__): Was not playing nicely
	with acquisition.

2003-04-12  Sidnei da Silva  <sidnei@x3ng.com>

	* *.py: Removed trailing whitespace and rewrapped some long lines.

	* Marshall.py (PrimaryFieldMarshaller.marshall): Fixing a broken
	import plus moving interface declaration to interfaces subdir.

2003-04-08  Benjamin Saller  <bcsaller@yahoo.com>

	* ArchetypeTool.py (process_types): changed the module level fti
	hook to pass fti[0] as its simpler for the developer

2003-04-07 Sidnei da Silva <sidnei@x3ng.com>

        * Made possible to have multiple fieldsets (they are called
	schemata). Just add "schemata = 'your_fieldset_name' when
	declaring a field. It will show up as a link on your edit form.

	* Blown away validate_metadata.py and metadata_edit.py. You may
	need to fix your portal_properties/form_properties
	[validate_metadata -> validate_base] and
	portal_properties/navigation_properties [metadata_edit ->
	content_edit] on your existing sites.

2003-02-11  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.__init__): Added the ability for FieldList
	to hold properties itself and be a layer container. Added minimal
	support for the marshalling layer.

	* BaseObject.py (content_type): Makeing title's default='' makes
	this work with ZCTextIndex again on creation.

	* GeneratorTool.py (modify_fti): icon is a name used by the ZMI,
	we don't wanna play in that name space so to specify an icon use
	the content_icon name

	* Marshall.py (Marshaller.__init__): A default marshalling impl
	can store hooks that it will call on the instance that should take
	the data that comes out of the demarshall call and update the
	object as needed.

	* BaseContent.py (BaseContent.PUT): Notion of top level PUT/ftpGET
	handling that deligates to a plugable marshalling layer, this
	abstaction should get some testing at the sprint.

	* Merged some of VladDrak's patches. I am not going to include the
	metadata patch until I've had more time to look it over but I
	don't mind getting that in given a couple of days.

2003-02-03  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.__init__): Made FieldList take props, made
	fieldlist a layercontainer, added placeholder for marshalling layer

2003-01-30  Benjamin Saller  <bcsaller@yahoo.com>

	* BaseObject.py (BaseObject.__getitem__): Play nice with Aq again

	* GeneratorTool.py (getType): added introspect tab so when people
	as me what types got registered we can just look now.... This is a
	step towards exposing the schema on the web.

	* BaseUnit.py (BaseUnit.__str__): __call__ maps to str for the
	catalog to work.

2003-01-14  Benjamin Saller  <bcsaller@yahoo.com>

	* templates/singleselection_pulldown_body: use the str() to cmp
	the values. better for int keys

	* Field.py (DateTimeField.set): Don't cvt if if you don't need
	to... duh

	* Storage.py: removed deprecated method from iface

	* BaseUnit.py (BaseUnit.reConvert): docstring to publish

	* GeneratorTool.py (modify_fti): allowed_content_types on a klass
	now sets up the fti, yum.
	(listTypes): listTypes specific to a package with the new argument

2003-01-07  Benjamin Saller  <bcsaller@yahoo.com>

	* GeneratorTool.py (process_types): got rid of the old
	view/edit/script dirs in favor of a simple target_dir (its all
	generated code anyway). This should be honored now, with a default
	of the cmft skin directory.

	* Generator.py (Generator.__init__): All references to editable
	are removed from generator and the templates. The str method on
	BaseUnits mostly covers this as we always return the raw object.

	* ClassGen.py (Generator.makeMethod): Generate uniform lambda for
	the created methods, this works now that we delegate to the schema
	all the time. Also gets rid of the methods template directory as
	its not needed anymore.

	* Field.py (FieldList.initalizeLayers): Play nice with the layer
	code, I hope to bulid this out a little more in the future, but
	for now its very simple.

	* cmf_types/DDocument.py (content_type): Broke out the schema to
	the module level, types only keep a ref to it. Also see how the
	type is the composite of BaseContent.type and
	ExtensibleMetadata.type.

	* Extensions/utils.py (install_navigation): changes to all the
	external method calls to skip most of the special metadata
	handling.

	* ExtensibleMetadata.py: Its just called 'type' now, metadata type
	is deprecated and we have more uniform handling of data/metadata.

	* Generator.py (_modes): Generation modes, generate views takes a
	list of either keys to this dict or just new dicts in this format
	that are the modes to be generated. Have fun.

2003-01-05  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.initalizeLayers): Added Layers calls to
	FieldList and the base Field Object. We explicitly register layers
	and expect that they will get initalized. The idea is that
	subsystems may require particular initalization on the part of an
	instance or an instance's field. The current interfaces support
	this.

2003-01-04  Benjamin Saller  <bcsaller@yahoo.com>

	* ContentTool.py (ContentTool._genId): Mr.Topf caught a bug in id
	generation where I wasn't incrementing the counter
	properly. Patched in accordance with his idea.

	* Storage.py (MetadataStorage.get): Thinking it might make more
	sense to call out to the metadata interface for this, handing off
	the storage concern once again. This can change when storage can
	perform initalization on the object during construction via a
	callback into the schema. Thus each storage item might be able to
	modify the instance if need be.

2003-01-03  Benjamin Saller  <bcsaller@yahoo.com>

	* ExtensibleMetadata.py (metadatatype): Updated field to use
	MetadataField type (and the new Metadata Storage) and removed a
	number of fields that are in the DublinCore but were
	invisible. Trying to let CMFTypes manage these internal fields
	seems to be a mistake so I let the default impl handle it.

	* ClassGen.py (_modes): one more step towards removing editable. I
	will be happy when this is gone

	* BaseObject.py (BaseObject.__init__): Had to move id mgmt to
	later to avoid a special case in the default handling
	(BaseObject.get): delegate through schema

2003-01-02  Benjamin Saller  <bcsaller@yahoo.com>

	* BaseObject.py (BaseObject.Vocabulary): Still trying to figure
	out just what I want to bubble up to this level and what should
	remain in the schema.

	* skins/cmft/collectKeywords.py: use new BaseObject.Vocabulary
	method.

	* Field.py (FieldList._properties): Easier to read/manage way of
	setting Field defaults/properties. See how the other fields use
	the _properties to set defaults and attributes now.

	* debug.py (Log.log_exc): take msg='' and **kwargs now, like log

	* Field.py (ObjectField.get): changed get/set to drive through
	Field.storage (see below)

	* Storage.py: Provide sample storage interface. This layer of
	indirection can be overridden on a per field basis to alter the
	way storage is handled. With the right tool it should be a simple
	task to store large fields on the filesystem or in a RDB of some
	sort.

	* Field.py (FieldList.setDefaults): Simplfied setDefaults, but now
	it really only should be called when object is uninitalized (which
	I may want to track)

	* BaseUnit.py (BaseUnit.PUT): Fixed PUT to use new driver code

	* __init__.py (listTypes): Updated to use generatorTool, still
	generates on initalize though

	* GeneratorTool.py (modify_fti): new tool, moved fti stuff here as
	well as process_types and registerType. Also added "icon" as an
	attribute of your content class so you can override its icon

