Changelog for Poi
=================

For later changes, see ``CHANGES.rst``.

2.0b2 (2010-09-14)
------------------

- Updated minimum dependencies to Plone 4.0 (was 4.0a1),
  Products.AddRemoveWidget 1.4.4 (was 1.4.2) and
  Products.DataGridField 1.8b1 (was 1.8a1).
  [maurits]

- Move from i18n to locales.
  [maurits]

- Make xmllint (and probably Chameleon) happy with valid xml.
  [maurits]


2.0b1 (2010-08-11)
------------------

- Allow members to not only watch individual issues, but an entire
  tracker.  Side effect: tracker managers always get an email, also if
  a mailing list has been set.  If this is not wanted, you can make
  the tracker manager a technician instead, or the tracker manager can
  unsubscribe from the mailing list.
  [maurits]

- Modernize, cleanup and reindent all templates.
  [maurits]

- Slightly alter the templates of tracker and issue to use the
  content-core slot of Plone 4.
  [maurits]

- Added Technician role.  You can give a user this role by adding the
  user id in the new 'technicians' field of a tracker.  Technicians
  have slightly less permissions than TrackerManagers, and will only
  get an email for issues that have been assigned to them (now or in
  the past).
  [maurits]

- Purge references to old workflow scripts in the poi_issue_workflow.
  [Maurits]

- Instead of adding the contact email field of an issue to its
  watchers field in the setContactEmail method, we now do that in an
  event handler; this fixes a problem no watchers being set initially
  when the contactEmail field remained at its default value.
  [maurits]

- Send parameter names in notifications
  [sargo]

- Polish translation update
  [sargo]

- Do not completely remove the title field in the PSC tracker, but
  only make it invisible while editing.  This makes sure that
  folder_contents does not throw an error trying to find the title
  field.
  [maurits]

- Clean up type definitions (mostly: do not try to hide the
  properties/metadata tab that already is no longer there).
  [maurits]


2.0a1 (2010-02-27)
------------------

- Depend on collective.watcherlist >= 0.2 for sending the resolved
  email only to the initial poster.
  [maurits]

- Polish translation
  [sargo]
  
- Compatibility with Chameleon
  [sargo]
 
- Minor fixes for i18n support
  [sargo]

- Added upgrade step to remove the local Manager role from all tracker
  managers and instead give them the TrackerManager role.
  [maurits]

- Define our permissions in zcml and configure them in rolemap.xml.
  [maurits]

- Added TrackerManager role.  Give this role to users mentioned in the
  managers field of a tracker, instead of the more powerful Manager
  role.
  [maurits]

- Removed ``skins/Poi/poi_issue_quicksearch.py`` in favour of our new
  ``@@poi_issue_quicksearch`` view.
  [maurits]

- Removed ``skins/Poi/toggleWatchingIssue.py`` in favour of our new
  ``@@toggle_watching`` view.
  [maurits]

- Removed ``skins/Poi/poi_niceName.py`` in favour of the new
  ``@@pas_member`` view from PlonePAS.
  [maurits]

- Removed ``skins/Poi/poi_issue_post.cpy`` and use an event handler on
  IObjectInitializedEvent of an issue instead.  Added upgrade step to
  remove the now unneeded form controller action for this, as it would
  otherwise give: ValueError: Unable to find poi_issue_post.
  [maurits]

- Moved fully to GenericSetup.
  [maurits]

- Added minimum versions for AddRemoveWidget and DataGridField in
  setup.py, to make sure we get versions that are compatible with
  Plone 4, and that we have an AddRemoveWidget version with a
  GenericSetup profile.
  [maurits]

- Removed old BTrees migration code for the trackers.
  [maurits]

- Use zope.i18n.translate instead the the no longer existing
  GlobalTranslationService.
  [maurits]

- Get rid of old style zope2 interfaces, which no longer exist in Zope
  2.12.
  [maurits]

- Cleaned up code that was meant for PoiResponses.  The class itself
  is still there for migration.  [maurits]


1.2.10 (unreleased)
-------------------

- Register the poi.response.add viewlet manager (provider) only for
  issues.  Fixes http://plone.org/products/poi/issues/241
  [maurits]


1.2.9 (2010-04-29)
------------------

- Fixed syntax error in Dutch translations.
  [maurits]


1.2.8 (2010-02-27)
------------------

- When a response contains an attachment, add info about this to the
  e-mail.  Fixes http://plone.org/products/poi/issues/238
  [maurits]

- When deleting a response, do not remove it, but set it to None.
  This avoid problems when one user is editing a response and another
  user is removing it.
  [maurits]

- PoiIssue: there is no reason why contactEmail is mandatory
  [ajung]


1.2.7 (2009-10-24)
------------------

- Some styling changes: adding a few classes and ids, and loading
  Poi.css in the issue search form.  With thanks to Lars Loewenadler
  for some hints here.
  [maurits]

- Added permission 'Poi: Edit response' and protect the edit button of
  responses with that permission.  The creator (Owner) of an issue has
  this permission when the tracker is in the open or restricted state
  and not in the protected or closed state.
  [maurits]

- Do not give Owner the Add Issue/Response permissions in a closed
  tracker.
  [maurits]


1.2.6 (2009-09-06)
------------------

- Added upgrade step to make sure all the tracker manager actually
  have the Manager role.
  [maurits]

- Added tracker workflow state 'protected'.  Basically Readers can
  read, Editors can edit and Contributors can contribute.  Anonymous
  cannot see anything.
  Implements http://plone.org/products/poi/issues/181
  [maurits]

- Issue workflow: acquire permission settings of 'Modify portal
  content' from higher level: when you can edit a tracker you can edit
  its issues as well.
  [maurits]

- Protect the edit button of an issue with the 'Manage portal content'
  permission instead of the non-existing 'Manage Portal Content' with
  capital letters...
  [maurits]

- Fixed bug where a text/html response added using kupu (needs a
  change in config.py) was not accepted.
  Fixes http://plone.org/products/poi/issues/224
  [maurits]

- When creating a tracker as non-manager you used to become only Owner
  and not Manager, which is not what we want.  Fixed this and a few
  other possible errors (like loosing other local roles) in setting
  the managers.
  Fixes http://plone.org/products/poi/issues/218
  [maurits]

- Catch and log SMTPExceptions when sending an email fails.
  Fixes http://plone.org/products/poi/issues/223
  [maurits]

- Uploading a file in an issue could fail needlessly due to a
  translation error while validating.  Fixes UnicodeDecodeError at
  http://plone.org/products/poi/issues/220
  [maurits]

- Allow translation of email's subject.
  Fixes http://plone.org/products/poi/issues/219
  [kdeldycke]

- Made the restricted state the initial state of a new tracker.
  [maurits]


1.2.5 (2009-07-08)
------------------

- Register a basically empty content exporter for issues, as they can
  give unicode errors when making a snapshot in portal_setup.  See
  http://plone.org/products/poi/issues/217
  [maurits]

- Added missing strings in german translation
  [jensens]

- Explicitly depend on Products.DataGridField >= 1.6b3 as that is the
  first pypi release.  That release has a GS profile (that we depend
  on in our metadata.xml) and it has the isDataGridFilled validator
  (that we now remove from Poi).  Removed DataGridField from the quick
  installer dependencies as we indeed now list this dependency in
  metadata.xml.
  [maurits]

- Added dependencies to metadata.xml in profile.
  [jensens]


1.2.4 (2009-05-30)
------------------

- Deal with AttributeError in migration when called from the
  prefs_install_products_form (Plone 3.3) as we have no REQUEST object
  then.
  [maurits]

- Registered a checker for one of the upgrade steps, so this step is
  always available when there are old style PoiResponses.
  [maurits]

- Removed some event subscribers for old style responses, as they were
  not needed anymore and they might slow down the migration a bit.
  [maurits]

- Added state 'restricted' to poi tracker workflow; in this state
  anonymous can view issues and responses, but only members can add
  them.  Default stays the same: open for submissions from everyone.
  Fixes http://plone.org/products/poi/issues/214
  [maurits]

- Fixed the log page of an issue so the new style responses are shown.
  [maurits]

- Indent the response details in the email so they are correctly
  interpreted as a literal block after the double colon behind the
  'Response Details' header.  Otherwise the html part of an email
  would be in a simple pre tag or possibly show a warning.
  Fixes http://plone.org/products/poi/issues/215
  [maurits]

- Get the response add and edit forms working with kupu and TinyMCE
  (when ISSUE_MIME_TYPES is changed manually in config.py).  [maurits]


1.2.3 (2009-04-22)
------------------

- The html version of the emails that are sent out could contain
  warnings from the restructured text parser.  When that happens, we
  now simply put the text inside a pre tag.  [maurits]

- When email of user is not known, which can happen for example when
  this is an LDAP user, do not try to send this person an email
  Fixes http://plone.org/products/poi/issues/213
  [maurits]

- Remove stray div before DOCTYPE in add issue template. [elro]

- Registered the Poi upgrade steps for an upgrade from Poi 1.1.9
  instead of 1.1 so these steps are shown also when you upgrade from
  say Poi 1.1.2.  [maurits]


1.2.2 (2009-03-26)
------------------

- Fixed silly error in formatting an email address.  [maurits]

- Added alternative migration for old style responses that should have
  more chance to finish on a big site like plone.org.  [maurits]

- Fixed html validation error that has been around since Christmas
  2005!  Spotted by Bill Freeman.  [maurits]

- Update french translation.  [kdeldycke]


1.2.1 (2009-03-09)
------------------

- When sending an email about changes to an issue, translate those
  changes, as some of them are workflow changes, which can be
  translated.  [maurits]

- Use the global translation service to translate the text that is
  added as status message.  [maurits]

- Made it possible to translate the email messages.  Fixes
  http://plone.org/products/poi/issues/209
  [maurits]


1.2 (2009-02-23)
----------------

- In the migration from old to new style responses, also migrate the
  attachments to the responses.  [maurits]

- Added default_methods for the area and issueType fields of an issue.
  If the vocabulary of the field has only one value, we select that
  one.  See http://plone.org/products/poi/issues/202 [maurits]

- Removed poi_email_* dtml pages from the skins directory, in favour
  of templates in events.py.
  Fixes http://plone.org/products/poi/issues/206 [maurits]

- Fixed 'Field missing error' from kss (only visible in the logs).
  [maurits]

- Fixed possible in rich text field widget by now giving the number of
  rows as an integer instead of a string.
  Fixes http://plone.org/products/poi/issues/203
  [maurits]

- Migrations: now doing intermediate transaction commits to give the
  migrations a chance to finish on big sites.  [maurits]

- Fixed UnicodeError in email sending.
  Fixes http://plone.org/products/poi/issues/198
  Thanks to Derek Broughton for the first version of this fix.
  [maurits]

- Added Portuguese translations by Nuno Cruz.  Thanks!  [maurits]

- After creating a response, first check if emails need to be sent
  before figuring out the text to send.  [maurits]

- In migrations guard against outdated catalog items that have no
  existing object associated with them anymore.  [maurits]

- End-of-lines and svn:ignores set all over the place.  [maurits]


1.2rc3 (2008-09-28)
-------------------

- Added profiles/default/metadata.xml: version 1.2.  [maurits]

- Do not show (part of) the Add response form when no responses can be
  added.  Show a discreet message instead.  [maurits]

- Migrate old style responses in PoiPscTrackers as well.  [maurits]

- Code cleanup with pyflakes and pep8.  Only syntactic changes, no
  behaviour changes.  [maurits]


1.2 rc 2 (25 September 2008)
----------------------------

- Using Products.CMFPlone.utils.safe_unicode to avoid
  UnicodeDecodeErrors.  [maurits]


1.2 rc 1 (12 September 2008)
----------------------------

- Added migration step to migrate workflow changes (in the responses)
  from ids to titles.  [maurits]

- Only show the add response form when the user is allowed to add a
  response.  [maurits]

- Fixed the login button displayed with the login suggestion so it
  actually redirects to the login_form.  [maurits]

- Translation updates.  [maurits]


1.2 beta 1 - (12 July 2008)
---------------------------

- Merged r68220 and r68223 from branches/1.1:
  Fixed typo that messed up a few translations.
  And fixed untranslatable login suggestion.
  Fixes http://plone.org/products/poi/issues/191
  [maurits]

- When getting information from the parent tracker of an issue, guard
  against having a temporary folder (from the portal factory) as a
  direct parent.  Fixes errors like this:
  "Value ... is not allowed for vocabulary of element ${label}."
  Fixes http://plone.org/products/poi/issues/180
  [maurits]

- Made PoiTracker translatable with LinguaPlone.  Does not make sense
  for the other content types.  (Change merged from 1.1)
  Fixes http://plone.org/products/poi/issues/177
  [maurits]


1.2 alpha 1 - (17 June 2008)
----------------------------

- Handle target release better -- there was some confusion between
  values and labels.  [maurits]

- Made sure that just an issue state change or an attachment upload
  is also accepted as a change.  [maurits]

- Only show the target release option when there is more than one
  option (as None is always an option).  [maurits]

- Adapted the tests to use new style responses everywhere, except in
  the tests for migrating from old to new style responses.

- Made Poi migrations available with a form at migrate-poi.html.
  [maurits]

- Removed skins/Poi/poi_response_update_issue.cpy and related code.
  [maurits]

- Add i18n to browser/response.pt  [maurits]

- Removed button for adding old style response to issue.  [maurits]

- Removed skins/Poi/determineResponseType.py  [maurits]

- Send email when response is added.  [maurits]

- Update SearchableText of issue when response is added.  [maurits]

- Add handling for the target releases field (available only when
  using the PSC tracker).  [maurits]

- Only show options like changing state when the user has permission
  to use them.  [maurits]

- Allow adding and downloading an attachment in a response.  [maurits]

- Store rendered html on the response; remove that after editing.
  Makes views faster.  Basically a memoize variant. [maurits]

- In the creation view, test that a response is valid before adding
  it. [maurits]

- Let unit tests pass on Plone 3.1 by providing an IWorkflowChain
  adapter. [maurits]

- Add migration step for making sure that the Description of all
  PoiIssues in the portal_catalog is of type unicode instead of
  string, just like the real objects. [maurits]

- For the Description of a PoiIssue always return unicode. [maurits]

- Use PersistentList instead of the combination of PersistentMapping
  and self.highest in ResponseContainer.  Works just as well and feels
  easier. [maurits]

- Add first tests for migration of individual issue.
  [maurits]

- Add migration (GenericSetup upgrade step) from old to new style
  responses.
  [maurits]

- Use the text of new style responses too for the SearchableText of an
  issue.
  [maurits]

- No __parent__ and __name__ for PoiIssue anymore.  Instead pass the
  issue as descriptions argument when firing the ObjectModifiedEvent
  for a response.  Works fine and needs no migration.
  [maurits]

- Use __parent__ and __name__ for responses.
  [maurits]

- Add "self.__parent__ = self.__name__ = None" to __init__() of
  PoiIssue.  Needs migration.  Not sure if that is the best solution
  to the problem that in the event handler for modified responses the
  issue has no acquisition context.

- Fire ObjectRemovedEvent when deleting a response and
  ObjectModifiedEvent when modifying it.
  [maurits]

- When adding something to an issue check that it really is an
  IResponse.
  [maurits]

- Add buttons and browser views for deleting and editing responses.
  [maurits]

- Add PoiMessageFactory.
  [maurits]

- Add method delete(id) for deleting responses.
  [maurits]

- In response adapter rename total to highest.
  [maurits]

- When FCKeditor is installed and an anonymous visitor adds a
  response, make sure this works by using the default html text area
  then.  Same change as in the FCKeditor code itself in r59427.
  [maurits]

- When in config.py DEFAULT_ISSUE_MIME_TYPE is set to text/html, use a
  wysiwyg field in the add response form.  Tested with kupu.  Haul the
  responses through portal_transforms and through linkDetection.
  [maurits]

- Give responses a type additional/clarification/reply.
  [maurits]

- Add browser test for adding a tracker, issue and response.
  [maurits]

- Unit test the response browser views.
  [maurits]

- Use aq_inner.aq_parent to get the parent of an issue.
  [maurits]

- Add unit tests for browser.response.voc2dict.
  [maurits]

- Add unit tests for the adapters.
  [maurits]

- Show border around responses, like in the original layout.
  [maurits]

- Check that the changes within a response are allowed (new severity
  in available_severities, etc).
  [maurits]

- Make difference between available_transitions and
  transitions_for_display; also for the other response options.
  [maurits]

- Add methods sorted_keys/values/items for the ResponseContainer.
  Show the sorted items in the view (so 1, ..., 9, 10 instead of 1,
  10, ..., 9).
  [maurits]

- Store OOBTree and total in a PersistentMapping instead of only the
  OOBTree directly in the annotations.
  [maurits]

- Check radio buttons of response based on current status for all
  options.  Rename options to be in line with the fields of the parent
  Task.
  [maurits]

- Store creator and creation date of response.
  [maurits]

- Use an OOBtree instead of a PersistentMapping to store the
  responses.
  [maurits]

- Use zope.app.container.sample.SampleContainer as base class for
  ResponseContainer.  Store a PersistentMapping in it.  Show the
  sorted responses.
  [maurits]

- Start creating zope 3 style lightweight responses instead of big fat
  Archetypes objects.
  [maurits]

- Add provider:poi.response.add that gives you a form for adding a
  response when viewing an issue.
  [maurits]

- Add browser view @@create_response that creates a response in the
  current issue, based on the request form.
  [maurits]

- List Products.AddRemoveWidget and Products.DataGridField as
  dependencies in setup.py.  [maurits]

- Use event handlers for keeping the SearchableText of an issue in
  sync with its responses.  This comes in place of the updateResponses
  method of an issue that was called by poi_response_update_issue.cpy.
  [maurits]

- Eggification: Poi/trunk has been moved to
  Products.Poi/trunk/Products/Poi
  [maurits]

- Modernization of trackers:

  o Add browser view @@issuefolder that handles the part of PoiTracker
    that involves being just a folder with issues.

  o Move getFilteredIssues, getIssueSearchQueryString and
    buildIssueSearchQuery from PoiTracker to browser view.

  o Remove skins/Poi/getOrphanedIssues.py and skins/Poi/getMyIssues.py.
    Put equivalents in the browser view.

  [maurits]

- Move getNumberFromString, linkBugs and linkSvn from
  content/PoiTracker.py into new utils.py as they need no context.
  [maurits]

- Memoize the getTagged* values for intelligenttext fields in PoiIssue
  and PoiResponse; clear them when setting those fields.  This speeds
  up viewing an issue or response.
  [maurits]

- Modernize code:
  - Cleanup imports with pyflakes.
  - use logging instead of zLOG.
  [maurits]

- Do not try to apply a CustomizationPolicy.
  [maurits]

- Remove backwards compatibility code for old CMFCore permissions.
  [maurits]

- Remove references to contentmigration, as this was only needed for
  migrations from 1.0 beta 2 to 1.0 rc 1.
  [maurits]

- Remove UML model as we do not use that anymore.
  [maurits]


1.1.1 - (Unreleased)
--------------------

    - In issue view show CreationDate instead of (modification) Date
      of the PoiResponse, as the template states this is the date the
      response was added. [maurits]

    - Fix UnicodeEncodeError in RSS feed by not setting headers in the
      response.
      Fixes http://plone.org/products/poi/issues/166
      [maurits]


    - Encode unicode names of email addresses using the site encoding.
      Fixes http://plone.org/products/poi/issues/161
      [maurits]


1.1 final - Released December 27, 2007
--------------------------------------

    (No changes compared to rc4.)


Poi 1.1 rc 4 - Released December 22, 2007
-----------------------------------------

    - Fix "TypeError: can't pickle code objects" when updating the
      schema of PoiTrackers by using the new 'isDataGridFilled'
      validator.
      Fixes http://plone.org/products/poi/issues/160
      [maurits]

    - Added more Norwegian translations.
      [Espen Moe-Nilssen]


Poi 1.1 rc 3 - Released December 14, 2007
------------------------------------------

    - Fix Inconsistent linking to other issues and changesets:
      Links in the steps field of an issue are now also detected.
      Allow more links to be detected:
      - issues: #1, issue:1, ticket:1, bug:1.
      - changesets/revisions: r1, changeset:1, [1].
      Add lots of tests for the link detection in a tracker.
      http://plone.org/products/poi/issues/159
      [Per Erik Strandberg, maurits]


Poi 1.1 rc 2 - Released December 5, 2007
----------------------------------------

    - Add our indexes to the catalog with some code in AppInstall.py.
      Doing it there instead of in profiles/default/catalog.xml like
      previously means we do not need to reindex those indexes after
      every reinstall.
      [maurits]


Poi 1.1 rc 1 - Released December 4, 2007
----------------------------------------

    - Use email_from name of portal in the emails.
      Fixes http://plone.org/products/poi/issues/154
      [maurits]

    - Fixed error in deleting response to an issue.
      Fixes http://plone.org/products/poi/issues/151
      [maurits]

    - Added partial Norwegian translation.
      [Espen Moe-Nilssen]

    - Fix i18n of email sending:

      - Improve sending of emails with non-ascii character sets (mostly
        accented characters).
      - Use portal property email_charset for email sending if available.
      - Mime encode the subject of emails.

      Fixes http://plone.org/products/poi/issues/146
      [maurits, Stefano Deponti]

    - Register our skin layer for all skins instead of just for Plone
      Default.
      [maurits]


Poi 1.1 beta 1 - Released Movember 19, 2007
-------------------------------------------

    - This release introduces Plone 3.0 compatibility while keeping
      compatibility with Plone 2.5.
      [Alexander Limi and Maurits van Rees]

    - Link detection.  Trackers now have an svnUrl field.  For
      example, if your product is hosted in the Plone collective you
      can set this field to
      ``http://dev.plone.org/collective/changeset/%(rev)s``.  Then you
      can type 'r42' in an issue/response (any intelligenttext field)
      and get a link to that changeset.
      [Daniel Nouri]

    - Advanced issue search form now has a way to search for issues
      that match *all* tags, not only any, which helps when you're
      working a lot with tags.
      [Daniel Nouri]

    - Added a log-view for Poi trackers. This view renders a report on
      the most recent additions to the tracker; as such it will be
      similar to what is sent out as e-mail notifications.
      [Malthe Borch]

    - Cleanup of translations.
      [Maurits van Rees]

    - Loads of small bug fixes.
      [Maurits van Rees and others]


Poi 1.0 - (never officially released)
--------------------------------------

    - initial version.
      [optilude, rocky, panjunyong, others]
