From: David G. <svn...@pl...> - 2009-06-07 03:01:00
|
Author: davisagli Date: Sun Jun 7 03:00:53 2009 New Revision: 27329 Added: Plone/branches/davisagli-4.0-trunk-backports/docs/BACKWARDS_COMPATIBILITY.txt (contents, props changed) Removed: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/PloneContent.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/portlets/ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/colophon.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/correctPREformatting.js Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/cropText.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/document_actions.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/document_byline.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/enabling_cookies.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/enabling_cookies.pt.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/extract_date_components.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/folder_contents_filter.js Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/folder_contents_hideAddItems.js Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/folder_localrole_add.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/folder_localrole_delete.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/folder_localrole_form.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/folder_localrole_form.pt.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/footer.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getActionIconList.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getActionIconList.py.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getAddableTypesInMenu.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getCurrentUrl.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getEventString.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getNextMonth.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getOrderedUserActions.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getPersonalFolderFor.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getPreviousMonth.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getReplyReplies.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getViewTemplateId.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getWorkflowHistory.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getYearAndMonthToDisplay.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getZopeInfo.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/getZopeInfo.py.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_contentmenu.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_contentviews.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_logo.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_pathbar.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_personalbar.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_searchbox.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_sections.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_siteactions.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/global_skinswitcher.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/hide_columns.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/isDefaultPageInFolder.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/isRightToLeft.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/keyFilteredActions.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/login.js Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/navigationCurrent.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/navigationLocalRelated.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/old_folder_contents.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/old_folder_factories.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/old_folder_factories.pt.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/plone_minwidth.js.dtml Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/plone_minwidth.js.dtml.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/plonifyActions.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_calendar.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_events.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_languages.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_login.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_navigation.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_navtree_macro.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_news.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_recent.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_related.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/portlet_review.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/prepare_slots.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/presentation.css.dtml Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/presentation.css.dtml.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/rejectAnonymous.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/review_history.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/review_history.pt.metadata Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/showEditableBorder.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_deprecated/viewThreadsAtBottom.pt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testCalendarView.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testFolderLocalRoleForm.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testNewsPortletView.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testRecentView.py Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/PloneTool.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/__init__.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/navtree.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/ploneview.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/deprecated.zcml Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/profiles/default/propertiestool.xml Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_scripts/formatColumns.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_styles/deprecated.css.dtml Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/scripts.txt Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testBrowserDefaultScripts.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testContentTypeScripts.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneFolder.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneTool.py Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/utils.py Plone/branches/davisagli-4.0-trunk-backports/docs/HISTORY.txt Plone/branches/davisagli-4.0-trunk-backports/docs/NEWS.txt Log: merge r16759 from /CMFPlone/trunk, except for the removal of Large Folders. also moved old stuff from NEWS.txt to HISTORY.txt and added BACKWARDS_COMPATIBILITY.txt as a place to collect notes about API changes Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/PloneTool.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/PloneTool.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/PloneTool.py Sun Jun 7 03:00:53 2009 @@ -4,7 +4,6 @@ import urlparse import transaction -from zope.deprecation import deprecate from zope.interface import implements from AccessControl import ClassSecurityInfo, Unauthorized @@ -412,22 +411,6 @@ thread = [discussionContainer] return thread - security.declareProtected(ManagePortal, 'setDefaultSkin') - @deprecate("The setDefaultSkin method of the Plone tool has been " - "deprecated and will be removed in Plone 4.0.") - def setDefaultSkin(self, default_skin): - """Sets the default skin.""" - st = getToolByName(self, 'portal_skins') - st.default_skin = default_skin - - security.declarePublic('setCurrentSkin') - @deprecate("The setCurrentSkin method of the Plone tool has been " - "deprecated and will be removed in Plone 4.0.") - def setCurrentSkin(self, skin_name): - """Sets the current skin.""" - portal = getToolByName(self, 'portal_url').getPortalObject() - portal.changeSkin(skin_name) - security.declareProtected(ManagePortal, 'changeOwnershipOf') def changeOwnershipOf(self, object, userid, recursive=0, REQUEST=None): """Changes the ownership of an object.""" @@ -955,22 +938,19 @@ return obj.getOwner().getId() security.declarePublic('normalizeString') - def normalizeString(self, text, relaxed=False): + def normalizeString(self, text, relaxed=None): """Normalizes a title to an id. + The relaxed mode was removed in Plone 3.5. You should use either the + url or file name normalizer from the plone.i18n package instead. + normalizeString() converts a whole string to a normalized form that should be safe to use as in a url, as a css id, etc. - - If relaxed=True, only those characters that are illegal as URLs and - leading or trailing whitespace is stripped. >>> ptool = self.portal.plone_utils >>> ptool.normalizeString("Foo bar") 'foo-bar' - - >>> ptool.normalizeString("Foo bar", relaxed=True) - 'Foo bar' >>> ptool.normalizeString("Some!_are allowed, others&?:are not") 'some-_are-allowed-others-are-not' @@ -1023,7 +1003,7 @@ >>> ptool.normalizeString(u"\uc774\ubbf8\uc9f1 Korean") 'c774bbf8c9f1-korean' """ - return utils.normalizeString(text, context=self, relaxed=relaxed) + return utils.normalizeString(text, context=self) security.declarePublic('listMetaTags') def listMetaTags(self, context): Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/__init__.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/__init__.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/__init__.py Sun Jun 7 03:00:53 2009 @@ -1,2 +1 @@ - # browser package Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/navtree.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/navtree.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/navtree.py Sun Jun 7 03:00:53 2009 @@ -169,7 +169,6 @@ newNode['absolute_url'] = itemUrl newNode['getURL'] = itemUrl newNode['path'] = item.getPath() - newNode['icon'] = getattr(item, 'getIcon', None) # Deprecated, use item_icon newNode['item_icon'] = ploneview.getIcon(item) newNode['Creator'] = getattr(item, 'Creator', None) newNode['creation_date'] = getattr(item, 'CreationDate', None) Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/ploneview.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/ploneview.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/browser/ploneview.py Sun Jun 7 03:00:53 2009 @@ -12,7 +12,7 @@ from Products.CMFPlone import utils from Products.CMFPlone.browser.interfaces import IPlone -from zope.deprecation import deprecate, deprecated +from zope.deprecation import deprecate from zope.interface import implements, alsoProvides from zope.component import getMultiAdapter, queryMultiAdapter, getUtility @@ -27,22 +27,8 @@ from plone.app.content.browser.folderfactories import _allowedTypes -deprecated( - ('IndexIterator'), - "This reference to IndexIterator will be removed in Plone 4.0. Please " - "import it from Products.CMFPlone.utils instead.") - -IndexIterator = utils.IndexIterator - _marker = [] -import zope.deferredimport -zope.deferredimport.deprecated( - "It has been replaced by plone.memoize.instance.memoize. This alias will " - "be removed in Plone 4.0.", - cache_decorator = 'plone.memoize.instance:memoize', - ) - class Plone(BrowserView): implements(IPlone) @@ -445,25 +431,10 @@ # Deprecated in favour of the @@plone_context_state and @@plone_portal_state views - @deprecate("The keyFilteredActions method of the Plone view has been " - "deprecated and will be removed in Plone 4.0. Use the " - "keyed_actions method of the plone_context_state adapter " - "instead.") - def keyFilteredActions(self, actions=None): - context_state = getMultiAdapter((aq_inner(self.context), self.request), name=u'plone_context_state') - return context_state.keyed_actions() - def getCurrentUrl(self): context_state = getMultiAdapter((aq_inner(self.context), self.request), name=u'plone_context_state') return context_state.current_page_url() - @deprecate("The isRightToLeft method of the Plone view has been " - "deprecated and will be removed in Plone 4.0. Use the " - "is_rtl method of the plone_portal_state adapter instead.") - def isRightToLeft(self, domain='plone'): - portal_state = getMultiAdapter((aq_inner(self.context), self.request), name=u'plone_portal_state') - return portal_state.is_rtl() - def isDefaultPageInFolder(self): context_state = getMultiAdapter((aq_inner(self.context), self.request), name=u'plone_context_state') return context_state.is_default_page() Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/deprecated.zcml ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/deprecated.zcml (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/deprecated.zcml Sun Jun 7 03:00:53 2009 @@ -6,46 +6,6 @@ <!-- The following declarations are deprecated and will be removed in Plone 4.0. --> - <browser:page - for="*" - name="news_view" - class=".browser.portlets.news.NewsPortlet" - permission="zope.Public" - allowed_interface=".browser.interfaces.INewsPortlet" - /> - - <browser:page - for="*" - name="events_view" - class=".browser.portlets.events.EventsPortlet" - permission="zope.Public" - allowed_interface=".browser.interfaces.IEventsPortlet" - /> - - <browser:page - for="*" - name="navigation_view" - class=".browser.portlets.navigation.NavigationPortlet" - permission="zope.Public" - allowed_interface=".browser.interfaces.INavigationPortlet" - /> - - <browser:page - for="*" - name="calendar_view" - class=".browser.portlets.calendar.CalendarPortlet" - permission="zope.Public" - allowed_interface=".browser.interfaces.ICalendarPortlet" - /> - - <browser:page - for="*" - name="recent_view" - class=".browser.portlets.recent.RecentPortlet" - permission="zope.Public" - allowed_interface=".browser.interfaces.IRecentPortlet" - /> - <five:deprecatedManageAddDelete class=".Portal.PloneSite" /> Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/profiles/default/propertiestool.xml ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/profiles/default/propertiestool.xml (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/profiles/default/propertiestool.xml Sun Jun 7 03:00:53 2009 @@ -49,10 +49,6 @@ <property name="localTimeOnlyFormat" type="string">%I:%M %p</property> <property name="default_language" type="string">en</property> <property name="default_charset" type="string">utf-8</property> - <!-- BBB: use_folder_tabs is deprecated, but we leave it available until - Plone 4.0 --> - <property name="use_folder_tabs" type="lines"> - </property> <property name="ext_editor" type="boolean">False</property> <property name="available_editors" type="lines"> <element value="None"/> Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_scripts/formatColumns.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_scripts/formatColumns.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_scripts/formatColumns.py Sun Jun 7 03:00:53 2009 @@ -2,7 +2,6 @@ ##title=format a list of items into columns for better display # returns a list of lists of items -# see folder_localrole_form.pt for an example rows=[] Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_styles/deprecated.css.dtml ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_styles/deprecated.css.dtml (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/skins/plone_styles/deprecated.css.dtml Sun Jun 7 03:00:53 2009 @@ -4,22 +4,5 @@ /* <dtml-with base_properties> (do not remove this :) */ /* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */ -/* .system-message and #error-handling are reST error indicators */ -div.portalMessage, -p.portalMessage, -.system-message, -#error-handling { - background-color: &dtml-notifyBackgroundColor;; - border: &dtml-borderWidth; &dtml-borderStyle; &dtml-notifyBorderColor;; - color: &dtml-fontColor;; - font-size: &dtml-fontSmallSize;; - margin: 1em 0em; - padding: 0.5em 1em 0.5em 3em; - vertical-align: middle; - background-image: url(&dtml-portal_url;/info_icon.gif); - background-repeat: no-repeat; - background-position: 5px 50%; -} - /* </dtml-with> */ Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/scripts.txt ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/scripts.txt (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/scripts.txt Sun Jun 7 03:00:53 2009 @@ -55,29 +55,3 @@ >>> self.portal.unique(([1, 2], [2, 3], [1, 2])) [[1, 2], [2, 3]] - - -Tests for plonifyActions.py ---------------------------- - -plonifyActions is the script that returns a list of actions for use in -the content tabs. It should return the actions in the order we want -them. - -For the 'History' tab to also show up, we need to add folder to the -list of versionable content types: - - >>> folder = self.folder - >>> self.portal.portal_repository.setVersionableContentTypes( - ... self.portal.portal_repository.getVersionableContentTypes() + - ... [folder.portal_type]) - - -Now let us list the tabs that would show up in the page (note, that -`History` has been removed in the course of PLIP #243): - - >>> context_state = folder.restrictedTraverse('@@plone_context_state') - >>> pactions = folder.plonifyActions( - ... template_id='view', actions=context_state.actions()) - >>> [str(a['title']) for a in pactions] - ['Contents', 'View', 'Edit', 'Sharing'] Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testBrowserDefaultScripts.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testBrowserDefaultScripts.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testBrowserDefaultScripts.py Sun Jun 7 03:00:53 2009 @@ -37,18 +37,6 @@ # Make sure we can't define a default page if no object in folder self.failUnless(self.folder.canSelectDefaultPage()) - def testSetDefaultPageWithPage(self): - # Make sure we can define a Document as default page - self.folder.invokeFactory('Document', 'test', - title='Test default page') - self.failUnless(self.folder.canSelectDefaultPage()) - self.folder.saveDefaultPage('test') - self.failUnless(self.folder.test.isDefaultPageInFolder()) - - def testGetViewTemplateId(self): - self.folder.setLayout('atct_album_view') - self.assertEqual(self.folder.getViewTemplateId(), 'atct_album_view') - def test_suite(): from unittest import TestSuite, makeSuite Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testContentTypeScripts.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testContentTypeScripts.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testContentTypeScripts.py Sun Jun 7 03:00:53 2009 @@ -405,37 +405,6 @@ self.assertEqual(tag(self.ob)[-len(endswith):], endswith) -class TestWorkflowHistory(PloneTestCase.PloneTestCase): - - def afterSetUp(self): - self.folder.invokeFactory('Document',id='doc') - self.doc = self.folder.doc - self.wf = self.portal.portal_workflow - - def test_WorkflowHistory(self): - # see if doc returns any history at this point - history = self.doc.getWorkflowHistory() - self.failUnlessEqual(history, []) - - # do a transition - self.setRoles(['Reviewer']) # has no modify portal content permission - self.wf.doActionFor(self.doc, 'publish') - self.wf.doActionFor(self.doc, 'retract') - self.wf.doActionFor(self.doc, 'publish') - history = self.doc.getWorkflowHistory() - - # should return no history: no edit permission - self.failUnlessEqual([],[]) - - # give edit permissions. - self.doc.manage_permission('Modify portal content', ['Reviewer'], acquire=0) - # should return the history list - history = self.doc.getWorkflowHistory() - self.failUnlessEqual(history[0]['action'], 'publish') - self.failUnlessEqual(history[1]['action'], 'retract') - self.failUnlessEqual(history[2]['action'], 'publish') - - def test_suite(): from unittest import TestSuite, makeSuite suite = TestSuite() @@ -446,5 +415,4 @@ suite.addTest(makeSuite(TestFileExtensions)) suite.addTest(makeSuite(TestBadFileIds)) suite.addTest(makeSuite(TestImageProps)) - suite.addTest(makeSuite(TestWorkflowHistory)) return suite Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneFolder.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneFolder.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneFolder.py Sun Jun 7 03:00:53 2009 @@ -174,27 +174,6 @@ self.logout() self.assertEqual(self._contentIds(self.folder.A), []) - # -> For folders you also have to remove 'Access contents information' - # -> Never click around in the ZMI security screens, use the workflow! - - def test_folder_contents(self): - self.folder.sub1.invokeFactory('Document', id='sub1doc1') - - contents = self.folder.sub1.getFolderContents() - self.assertEqual(len(contents), 1) - self.assertEqual(contents[0].getId, 'sub1doc1') - - self.failUnless(self.folder.sub1.old_folder_contents()) - view = self.folder.sub1.restrictedTraverse("folder_contents") - self.failUnless(view()) - - self.folder.sub1.manage_permission('List folder contents', ['Manager'], acquire=0) - - self.assertRaises(Unauthorized, self.folder.sub1.old_folder_contents) - def func(): - return self.folder.sub1.restrictedTraverse("folder_contents") - self.assertRaises(Unauthorized, func) - class TestManageDelObjects(PloneTestCase.PloneTestCase): # manage_delObjects should check 'Delete objects' Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneTool.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneTool.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/tests/testPloneTool.py Sun Jun 7 03:00:53 2009 @@ -127,6 +127,28 @@ self.assertEqual(self.utils.normalizeString("this is. also. a file.html"), 'this-is-also-a-file.html') + def testNormalizeStringAccents(self): + # European accented chars will be transliterated to rough + # ASCII equivalents + input = u"Eksempel \xe6\xf8\xe5 norsk \xc6\xd8\xc5" + self.assertEqual(self.utils.normalizeString(input), + 'eksempel-eoa-norsk-eoa') + + def testNormalizeStringUTF8(self): + # In real life, input will not be Unicode... + input = u"Eksempel \xe6\xf8\xe5 norsk \xc6\xd8\xc5".encode('utf-8') + self.assertEqual(self.utils.normalizeString(input), + 'eksempel-eoa-norsk-eoa') + + def testNormalizeStringHex(self): + # Everything that can't be transliterated will be hex'd + self.assertEqual( + self.utils.normalizeString(u"\u9ad8\u8054\u5408 Chinese"), + '9ad880545408-chinese') + self.assertEqual( + self.utils.normalizeString(u"\uc774\ubbf8\uc9f1 Korean"), + 'c774bbf8c9f1-korean') + def testNormalizeStringIgnoredCharacters(self): # Some characters should be ignored self.assertEqual(self.utils.normalizeString("test'test"), 'testtest') @@ -142,21 +164,6 @@ self.assertEqual(self.utils.normalizeString("A String.a#b"), 'a-string-a-b') - def testNormalizeStringRelaxedKeepsUppercaseAndSpaces(self): - # Punctuation and spacing is removed and replaced by '-' - self.assertEqual(self.utils.normalizeString("Capital Letters and Spaces", relaxed=True), - 'Capital Letters and Spaces') - - def testNormalizeStringRelaxedStripsDangerousChars(self): - # Punctuation and spacing is removed and replaced by '-' - self.assertEqual(self.utils.normalizeString("A ?String&/\\foo.x!$#x", relaxed=True), - 'A -String-foo.x-#x') - - def testNormalizeStringRelaxedKeepsOtherSymbols(self): - # Punctuation and spacing is removed and replaced by '-' - self.assertEqual(self.utils.normalizeString("A ?String&/\\.foo_#xx", relaxed=True), - 'A -String-.foo_#xx') - def testTypesToList(self): # Make sure typesToList() returns the expected types wl = self.utils.typesToList() Modified: Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/utils.py ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/utils.py (original) +++ Plone/branches/davisagli-4.0-trunk-backports/Products/CMFPlone/utils.py Sun Jun 7 03:00:53 2009 @@ -6,8 +6,6 @@ from PIL import Image from plone.i18n.normalizer.interfaces import IIDNormalizer -from plone.i18n.normalizer.interfaces import IFileNameNormalizer -from plone.i18n.normalizer.interfaces import IUserPreferredFileNameNormalizer import zope.interface from zope.interface import implementedBy @@ -19,7 +17,6 @@ import Globals from Acquisition import aq_base, aq_inner, aq_parent from DateTime import DateTime -from Products.Five import BrowserView as BaseView from Products.Five.bridge import fromZ2Interface from Products.CMFCore.utils import ToolInit as CMFCoreToolInit from Products.CMFCore.utils import getToolByName @@ -27,7 +24,7 @@ import transaction from Products.PageTemplates.GlobalTranslationService import \ - getGlobalTranslationService + getGlobalTranslationService # Canonical way to get at CMFPlone directory PACKAGE_HOME = Globals.package_home(globals()) @@ -49,18 +46,9 @@ _marker = [] -class BrowserView(BaseView): - - def __init__(self, context, request): - self.context = [context] - self.request = request - def parent(obj): return aq_parent(aq_inner(obj)) -def context(view): - return view.context[0] - def createBreadCrumbs(context, request): view = getMultiAdapter((context, request), name='breadcrumbs_view') return view.breadcrumbs() @@ -216,7 +204,9 @@ wl = [t for t in all_types if not bl_dict.has_key(t)] return wl -def normalizeString(text, context=None, encoding=None, relaxed=False): +def normalizeString(text, context=None, encoding=None, relaxed=None): + # The relaxed mode was removed in Plone 3.5. You should use either the url + # or file name normalizer from the plone.i18n package instead. assert (context is not None) or (encoding is not None), \ 'Either context or encoding must be provided' # Make sure we are dealing with a stringish type @@ -231,20 +221,8 @@ encoding = getSiteEncoding(context) text = unicode(text, encoding) - if not relaxed: - return queryUtility(IIDNormalizer).normalize(text) - - # BBB To be removed in Plone 4.0 - log_deprecated("The relaxed mode of normalizeString is deprecated and will " - "be removed in Plone 4.0. Please use either the url or file " - "name normalizer from the plone.i18n package instead.") - - request = getattr(context, 'REQUEST', None) - # If we have a request, get the preferred user normalizer - if request is not None: - return IUserPreferredFileNameNormalizer(request).normalize(text) + return queryUtility(IIDNormalizer).normalize(text) - return queryUtility(IFileNameNormalizer).normalize(text) class IndexIterator(object): """BBB: This iterator was us ed for tabindex use, but for accessibility @@ -829,35 +807,3 @@ # which creates a funny exception when using zeo (see #6666) transaction.begin() return linked - -# BBB Plone 4.0: Cyclic import errors are bad, deprecate these import locations. -# Put these at the end to avoid an ImportError for safe_unicode -from i18nl10n import utranslate -from i18nl10n import ulocalized_time - -import zope.deprecation -zope.deprecation.deprecated( - ('getGlobalTranslationService'), - "This reference to getGlobalTranslationService will be removed in Plone 4.0" - ". Please import it from Products.PageTemplates.GlobalTranslationService.") -zope.deprecation.deprecated( - ('utranslate'), - "This reference to the utranslate method has been deprecated will be " - "removed in Plone 4.0. Please use the translate method of the " - "GlobalTranslationService instead.") -zope.deprecation.deprecated( - ('ulocalized_time'), - "This reference to the ulocalized_time method has been deprecated will be " - "removed in Plone 4.0. Please import it from Products.CMFPlone.i18nl10n.") -zope.deprecation.deprecated( - ('BrowserView'), - "Products.CMFPlone.utils.BrowserView will be removed in Plone 4.0. " - "Please use Products.Five.BrowserView instead.") -zope.deprecation.deprecated( - ('context'), - "This method is only useful for classes derived from the deprectaed " - "Products.CMFPlone.utils.BrowserView class. Please use " - "Products.Five.BrowserView as base class and aq_inner(self.context) " - "to get the current context.") - - Added: Plone/branches/davisagli-4.0-trunk-backports/docs/BACKWARDS_COMPATIBILITY.txt ============================================================================== --- (empty file) +++ Plone/branches/davisagli-4.0-trunk-backports/docs/BACKWARDS_COMPATIBILITY.txt Sun Jun 7 03:00:53 2009 @@ -0,0 +1,118 @@ +If you are updating existing custom code from Plone 3 to work with Plone 4, you +may need to take the following changes into account. + +* The PloneContent class has been removed. Use marker interfaces instead to + get a way to check for functionality that is common to some types. + +* The use_folder_tabs property in portal_properties/site_properties has been + removed. + +* Products.CMFPlone.browser.ploneview.IndexIterator is now + Products.CMFPlone.utils.IndexIterator + +* Products.CMFPlone.browser.ploneview.cache_decorator is now + plone.memoize.instance.memoize + +* The keyFilteredActions method of the Plone view has been removed. Use the + keyed_actions method of the plone_context_state view instead. + +* The isRightToLeft method of the Plone view has been removed. Use the is_rtl + method of the plone_portal_state view instead. + +* The SitemapNavtreeStrategy decorator factory no longer sets the 'icon' + attribute. Use 'item_icon' instead. + +* The old CalendarPortlet, NewsPortlet, NavigationPortlet, RecentPortlet, and + EventsPortlet classes have been removed from CMFPlone. plone.app.portlets + is the modern location for portlets. + +* The following items from the plone_deprecated skin layer have been removed. + - colophon.pt + - correctPREformatting.js + - cropText.py + - deprecated.css.dtml + - document_actions.pt + - document_byline.pt + - enabling_cookies.pt + - enabling_cookies.pt.metadata + - extract_date_components.py + - folder_contents_filter.js + - folder_contents_hideAddItems.js + - folder_localrole_add.py + - folder_localrole_delete.py + - folder_localrole_form.pt + - folder_localrole_form.pt.metadata + - footer.pt + - getActionIconList.py + - getActionIconList.py.metadata + - getAddableTypesInMenu.py + - getCurrentUrl.py + - getEventString.py + - getNextMonth.py + - getOrderedUserActions.py + - getPersonalFolderFor.py + - getPreviousMonth.py + - getReplyReplies.py + - getViewTemplateId.py + - getWorkflowHistory.py + - getYearAndMonthToDisplay.py + - getZopeInfo.py + - getZopeInfo.py.metadata + - global_contentmenu.pt + - global_contentviews.pt + - global_logo.pt + - global_pathbar.pt + - global_personalbar.pt + - global_searchbox.pt + - global_sections.pt + - global_siteactions.pt + - global_skinswitcher.pt + - hide_columns.py + - isDefaultPageInFolder.py + - isRightToLeft.py + - keyFilteredActions.py + - login.js + - navigationCurrent.py + - navigationLocalRelated.py + - old_folder_contents.pt + - old_folder_factories.pt + - old_folder_factories.pt.metadata + - plone_minwidth.js.dtml + - plone_minwidth.js.dtml.metadata + - plonifyActions.py + - portlet_calendar.pt + - portlet_events.pt + - portlet_languages.pt + - portlet_login.pt + - portlet_navigation.pt + - portlet_navtree_macro.pt + - portlet_news.pt + - portlet_recent.pt + - portlet_related.pt + - portlet_review.pt + - prepare_slots.py + - presentation.css.dtml + - presentation.css.dtml.metadata + - rejectAnonymous.py + - review_history.pt + - review_history.pt.metadata + - showEditableBorder.py + - viewThreadsAtBottom.pt + +* The setDefaultSkin and setCurrentSkin methods of the Plone tool have been + removed. + +* The relaxed mode of the normalizeString method was removed. You should use + either the URL or file name normalizer from the plone.i18n package instead. + +* The BrowserView class from Products.CMFPlone.utils has been removed. Use + Products.Five.BrowserView instead. + +* Products.CMFPlone.utils.getGlobalTranslationService is now + Products.PageTemplates.GlobalTranslationService.getGlobalTranslationService + +* The Products.CMFPlone.utils.utranslate method has been removed. Use the + translate method of the GlobalTranslationService instead. + +* The Products.CMFPlone.utils.ulocalized_time method is now + Products.CMFPlone.i18nl10n.ulocalized_time Modified: Plone/branches/davisagli-4.0-trunk-backports/docs/HISTORY.txt ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/docs/HISTORY.txt (original) +++ Plone/branches/davisagli-4.0-trunk-backports/docs/HISTORY.txt Sun Jun 7 03:00:53 2009 @@ -5,6 +5,210 @@ Older releases: +3.3 - Unreleased +---------------- + +- When viewing the prefs_install_products_form, do not do inline + migration for profiles that were previously unknown as this may hide + valid upgrade steps in some cases. + [maurits] + + +3.3rc3 - May 22, 2009 +--------------------- + +- Hide the NuPlone uninstall profile from the list of available extensions + at Plone site creation. + [wichert] + +- mark_special_links.js: Fix jQuery syntax for element wrapping. This closes + http://dev.plone.org/plone/ticket/8200 + [dunlapm] + +- form_tabbing.js: Allow for selection of a fieldset tab other than the default + if a url hash is in the form of #fieldset-[fieldsetname]. This allows for + graceful fallback if JavaScript is disabled. + [dunlapm] + +- Show old and new profile versions for products with profile, this closes + http://dev.plone.org/plone/ticket/9172 + [vincentfretin] + +- Removed width from eventDetails CSS class, this closes + http://dev.plone.org/plone/ticket/8933 + [vincentfretin] + +- Splitted label_event_byline into two in folder_summary_view.pt like in + folder_listing.pt fixed in Plone 3.3rc1, this closes + http://dev.plone.org/plone/ticket/8358 + [vincentfretin] + +- Removed spurious comma from unlockOnFormUnload.js which was causing + Javascript errors in IE. This closes http://dev.plone.org/plone/ticket/9157 + [davisagli] + +- Splitted description_no_account msgid into two, heading_new_user msgid added. + [vincentfretin] + +- Added Internet Explorer 8 support. We only load the workaround CSS file for + IE7 and earlier now, Internet Explorer 8 parses the + '<meta name="IE" content="EmulateIE8" />' header that forces it into standards + mode on both intranets and public internet sites. + [limi] + +- author.cpt should honour allowAnonymousViewAbout in the same way as + document_byline, this closes http://dev.plone.org/old/plone/ticket/8560 + [elro] + + +3.3rc2 - April 5, 2009 +---------------------- + +- Added an explicit return statement in the upgrade code for products without + a GS profile. Thx to Vincent Fretin for the code review. + [hannosch] + +- Fixing permissions typo in object_rename button, this closes + http://dev.plone.org/plone/ticket/9060 + [siebo] + + +3.3rc1 - March 30, 2009 +----------------------- + +- New favicon.ico that is in line with the new branding. + [limi] + +- author.pt: Fixed the #region-content mess, replaced modification date with + created date (as that's what the table says it's listing), reduced to 5 items + instead of 30 tables with 5 items each, made the table vertical. + [limi] + +- batch_macros.pt: Added "current" class to current item, removed the brackets, + added ellipses. Moved comments to a tal section to stop them from showing up + in the source. + [limi] + +- default_error_message.pt: Turned apostrophes into real apostrophes. + [limi] + +- join_form.pt: Removed unnecessary fieldset. + [limi] + +- logged_out.pt: Removed duplicate "new account" section (it's actually located + in the login form). + [limi] + +- login_form.pt: Moved Forgot/New out of the fieldset, fixed wording + added + headline. + [limi] + +- main_template.pt: Moved #content to main template instead of offloading its + responsibility to the individual templates. This makes it easier to avoid + duplication and make it possible to use it with Deliverance and similar + theming approaches. + [limi] + +- personalize_form.pt: Cleaned up the #content mismatch. No more double tabs. + [limi] + +- search_form.pt: Removed unnecessary fieldset, inserted "searchform" id on + form to not get it filled in as id="search" automatically. + [limi] + +- Updated the custom indexes in CatalogTool.py to no longer depend on the + 'portal' keyword or kwargs, both of which are gone from plone.indexer. + This is done in an effort to be forward-compatible with CMF 2.2. See + the plone.indexer README for more details. + [optilude] + +- Merged `safe-upgrade-button` branch. Instead of the removed `Reinstall` + button in the `Add/Remove products` control panel, we now have an upgrade + button for all products whose installation is driven by GenericSetup. This + is based on GenericSetup upgrade steps. + [hannosch] + +- Fixed msgid label_event_byline default message which contained dynamic content. + Created a label_event_byline_without_location used when you don't specify + location in an Event. + [vincentfretin] + +- Updated the custom indexes in CatalogTool.py to no longer depend on the + 'portal' keyword or kwargs, both of which are gone from plone.indexer. + This is done in an effort to be forward-compatible with CMF 2.2. See + the plone.indexer README for more details. + [optilude] + +- Fixed the registerIndexableAttribute() backwards-compatibility shim to + register named adapters. + [optilude] + +- Re-added the 'getRemoteUrl' and 'link_remote' attributes of the navtree + decorator, which were lost during the implementation of PLIP 126. Note + that these attributes are deprecated and will not be available in Plone 4. + Custom navigation templates using these attributes should simply link to + the Link object, whose default view now takes care of redirecting based on + the value of the global 'redirect_links' property. + [davisagli] + +- Make the Groups Overview search post back to the same page, since it displays a + lot more useful information than the prefs_user_group_search, and fits more + with the way the Users Overview works. Include a "Show all" button as well. + [esteele] + + +3.3b1 - March 12, 2009 +---------------------- + +- Replace the workflow history portlet with a content history portlet + for newly created sites. This implements PLIP 243. + [wichert] + +- Changed most actions to now use the globals_view/navigationRootUrl. Updated + the CMFCalendar tool override to allow the calendar portlet to allow passing + in kwargs such as path. Fixed skin templates and scripts to use the + @@plone_portal_state/navigation_root_url instead of portal_url. + This implements http://plone.org/products/plone/roadmap/234 + [calvinhp] + +- Removed CatalogTool.ExtensibleIndexableObjectWrapper in favour of the + wrapper in plone.indexer, and made registerIndexableAttribute() a deprecated + facade for registering an IIndexer adapter. See plone.indexer for more + information about the correct (and more robust) way to register custom + indexers. + [optilude] + +- Removed the `Reinstall` button from the `Add/Remove products` control panel. + Users would constantly mistake it as an upgrade mechanism, which Plone does + not yet support in a structured way. + [hannosch] + +- Added an option in the Site Settings configlet to disable TTW locking + entirely. Also fixed a couple bugs with unlocking and made it so the + lock gets refreshed as long as an editor is on the edit page. + This implements http://plone.org/products/plone/roadmap/240 + +- Added a 'redirect_links' site property and corresponding 'Redirect + immediately to link target' setting in the types configlet (for the Link type + only). The default view for the Link type has been changed to + link_redirect_view.py from the plone_content skin layer, which redirects or + falls back to the old link_view depending on the 'redirect_links' value. + This implements http://plone.org/products/plone/roadmap/126 + [davisagli] + +- "Mark external links" and "External links open in new window" were not working + independently ('mark' had to be set for 'new window' to work) and marking could + not be turned off at all (#7383). Fixed by having either one enable the js + support and adding a new site property to control marking. Implemented so + that new site property will be assumed false if missing and created on change + if missing -- so no migration required. There is a matching change in + plone.app.controlpanel. + [smcmahon] + +- PLIP 238: Disable inline editing for new Plone sites. + [wichert] + + 3.2.2 - March 3, 2009 --------------------- Modified: Plone/branches/davisagli-4.0-trunk-backports/docs/NEWS.txt ============================================================================== --- Plone/branches/davisagli-4.0-trunk-backports/docs/NEWS.txt (original) +++ Plone/branches/davisagli-4.0-trunk-backports/docs/NEWS.txt Sun Jun 7 03:00:53 2009 @@ -5,206 +5,9 @@ Changelog ========= -3.3 - Unreleased +4.0 - Unreleased ---------------- -- When viewing the prefs_install_products_form, do not do inline - migration for profiles that were previously unknown as this may hide - valid upgrade steps in some cases. - [maurits] - - -3.3rc3 - May 22, 2009 ---------------------- - -- Hide the NuPlone uninstall profile from the list of available extensions - at Plone site creation. - [wichert] - -- mark_special_links.js: Fix jQuery syntax for element wrapping. This closes - http://dev.plone.org/plone/ticket/8200 - [dunlapm] - -- form_tabbing.js: Allow for selection of a fieldset tab other than the default - if a url hash is in the form of #fieldset-[fieldsetname]. This allows for - graceful fallback if JavaScript is disabled. - [dunlapm] - -- Show old and new profile versions for products with profile, this closes - http://dev.plone.org/plone/ticket/9172 - [vincentfretin] - -- Removed width from eventDetails CSS class, this closes - http://dev.plone.org/plone/ticket/8933 - [vincentfretin] - -- Splitted label_event_byline into two in folder_summary_view.pt like in - folder_listing.pt fixed in Plone 3.3rc1, this closes - http://dev.plone.org/plone/ticket/8358 - [vincentfretin] - -- Removed spurious comma from unlockOnFormUnload.js which was causing - Javascript errors in IE. This closes http://dev.plone.org/plone/ticket/9157 - [davisagli] - -- Splitted description_no_account msgid into two, heading_new_user msgid added. - [vincentfretin] - -- Added Internet Explorer 8 support. We only load the workaround CSS file for - IE7 and earlier now, Internet Explorer 8 parses the - '<meta name="IE" content="EmulateIE8" />' header that forces it into standards - mode on both intranets and public internet sites. - [limi] - -- author.cpt should honour allowAnonymousViewAbout in the same way as - document_byline, this closes http://dev.plone.org/old/plone/ticket/8560 - [elro] - - -3.3rc2 - April 5, 2009 ----------------------- - -- Added an explicit return statement in the upgrade code for products without - a GS profile. Thx to Vincent Fretin for the code review. - [hannosch] - -- Fixing permissions typo in object_rename button, this closes - http://dev.plone.org/plone/ticket/9060 - [siebo] - - -3.3rc1 - March 30, 2009 ------------------------ - -- New favicon.ico that is in line with the new branding. - [limi] - -- author.pt: Fixed the #region-content mess, replaced modification date with - created date (as that's what the table says it's listing), reduced to 5 items - instead of 30 tables with 5 items each, made the table vertical. - [limi] - -- batch_macros.pt: Added "current" class to current item, removed the brackets, - added ellipses. Moved comments to a tal section to stop them from showing up - in the source. - [limi] - -- default_error_message.pt: Turned apostrophes into real apostrophes. - [limi] - -- join_form.pt: Removed unnecessary fieldset. - [limi] - -- logged_out.pt: Removed duplicate "new account" section (it's actually located - in the login form). - [limi] - -- login_form.pt: Moved Forgot/New out of the fieldset, fixed wording + added - headline. - [limi] - -- main_template.pt: Moved #content to main template instead of offloading its - responsibility to the individual templates. This makes it easier to avoid - duplication and make it possible to use it with Deliverance and similar - theming approaches. - [limi] - -- personalize_form.pt: Cleaned up the #content mismatch. No more double tabs. - [limi] - -- search_form.pt: Removed unnecessary fieldset, inserted "searchform" id on - form to not get it filled in as id="search" automatically. - [limi] - -- Updated the custom indexes in CatalogTool.py to no longer depend on the - 'portal' keyword or kwargs, both of which are gone from plone.indexer. - This is done in an effort to be forward-compatible with CMF 2.2. See - the plone.indexer README for more details. - [optilude] - -- Merged `safe-upgrade-button` branch. Instead of the removed `Reinstall` - button in the `Add/Remove products` control panel, we now have an upgrade - button for all products whose installation is driven by GenericSetup. This - is based on GenericSetup upgrade steps. - [hannosch] - -- Fixed msgid label_event_byline default message which contained dynamic content. - Created a label_event_byline_without_location used when you don't specify - location in an Event. - [vincentfretin] - -- Updated the custom indexes in CatalogTool.py to no longer depend on the - 'portal' keyword or kwargs, both of which are gone from plone.indexer. - This is done in an effort to be forward-compatible with CMF 2.2. See - the plone.indexer README for more details. - [optilude] - -- Fixed the registerIndexableAttribute() backwards-compatibility shim to - register named adapters. - [optilude] - -- Re-added the 'getRemoteUrl' and 'link_remote' attributes of the navtree - decorator, which were lost during the implementation of PLIP 126. Note - that these attributes are deprecated and will not be available in Plone 4. - Custom navigation templates using these attributes should simply link to - the Link object, whose default view now takes care of redirecting based on - the value of the global 'redirect_links' property. - [davisagli] - -- Make the Groups Overview search post back to the same page, since it displays a - lot more useful information than the prefs_user_group_search, and fits more - with the way the Users Overview works. Include a "Show all" button as well. - [esteele] - - -3.3b1 - March 12, 2009 ----------------------- - -- Replace the workflow history portlet with a content history portlet - for newly created sites. This implements PLIP 243. - [wichert] - -- Changed most actions to now use the globals_view/navigationRootUrl. Updated - the CMFCalendar tool override to allow the calendar portlet to allow passing - in kwargs such as path. Fixed skin templates and scripts to use the - @@plone_portal_state/navigation_root_url instead of portal_url. - This implements http://plone.org/products/plone/roadmap/234 - [calvinhp] - -- Removed CatalogTool.ExtensibleIndexableObjectWrapper in favour of the - wrapper in plone.indexer, and made registerIndexableAttribute() a deprecated - facade for registering an IIndexer adapter. See plone.indexer for more - information about the correct (and more robust) way to register custom - indexers. - [optilude] - -- Removed the `Reinstall` button from the `Add/Remove products` control panel. - Users would constantly mistake it as an upgrade mechanism, which Plone does - not yet support in a structured way. - [hannosch] - -- Added an option in the Site Settings configlet to disable TTW locking - entirely. Also fixed a couple bugs with unlocking and made it so the - lock gets refreshed as long as an editor is on the edit page. - This implements http://plone.org/products/plone/roadmap/240 - -- Added a 'redirect_links' site property and corresponding 'Redirect - immediately to link target' setting in the types configlet (for the Link type - only). The default view for the Link type has been changed to - link_redirect_view.py from the plone_content skin layer, which redirects or - falls back to the old link_view depending on the 'redirect_links' value. - This implements http://plone.org/products/plone/roadmap/126 - [davisagli] - -- "Mark external links" and "External links open in new window" were not working - independently ('mark' had to be set for 'new window' to work) and marking could - not be turned off at all (#7383). Fixed by having either one enable the js - support and adding a new site property to control marking. Implemented so - that new site property will be assumed false if missing and created on change - if missing -- so no migration required. There is a matching change in - plone.app.controlpanel. - [smcmahon] - -- PLIP 238: Disable inline editing for new Plone sites. - [wichert] + - Removed lots of deprecated code and zcml registrations. + [hannosch] |