I added an ordering adapter that prepends like so:
from plone.folder.default import DefaultOrdering
class PrependOrdering(DefaultOrdering):
"""prepend new added content"""
def notifyAdded(self, id):
"""
Inform the ordering implementation that an item was added
"""
order = self._order(True)
pos = self._pos(True)
order.insert(0, id)
pos.clear()
for n, id in enumerate(order):
pos[id] = n
and registered like so:
<adapter
factory=".ordering.PrependOrdering"
name="prepend"
/>
Then you just need a snippet of code somehwere setting the ordering. I did this on a type basis with a subscriber like so:
def handler_set_ordering(obj, event):
"""subscriber to set ordering
"""
if getattr(aq_base(obj), 'portal_type', '') not in PREPEND_ORDERING_TYPES:
return
obj.setOrdering('prepend')
and registered it like so:
<subscriber
for="*
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".content.handler_set_ordering"
/>
but you can set it with a view as well.