intelligenttext (but this is installed by default in Plone 3)
Note: when going from Plone 2.5 to 3.0, please first uninstall
intelligenttext, then create a new zope instance with Plone 3.
Then run the portal_migration, which will install the new
plone.intelligenttext library for you.

For new installations, install using Add/Remove Products as normal. If you want
PloneSoftwareCenter configuration to be automatically configured, install PSC
first. If you use Plone 3.0 you need to install the DataGridField
manually, in later Plone versions this is done automatically.

Upgrading

Re-install Poi from the Add/Remove Products control panel or the
portal_quickinstaller in the ZMI.

Poi 1.2 gets rid of old Archetypes based PoiResponses and introduces
new light weight zope-3-style responses; this needs a migration. In
the ZMI go to portal_setup, then the Upgrades tab and run any upgrade
steps that are available for Poi. Backup your Data.fs first!

NOTE: the upgrade steps can take a long time. Try to run the upgrade
when traffic on your site is low or take the site off-line for best
results. When someone is editing content during the upgrade step, a
ConflictError can occur, which means the upgrade will start all over.
On sites with a lot of Poi content (like plone.org) that can mean that
the upgrade stops after a while without being complete. After the
upgrade check if there are still old-style PoiResponses in your site
by going to <your site url>/search?portal_type=PoiResponse. If
this still gives back results, simply run the upgrade again (running
it multiple times is safe). You may need to click the ‘Show’ button
to show old upgrades as portal_setup may think the upgrade has been
completed. There is also an alternative migration of old style
responses that may be more suitable for big sites (but will also work
on other sites). It is the fourth upgrade step for Poi.

After any upgrade, you may need to run an Archetypes schema update.
Go to ‘archetype_tool’ in the ZMI, select the ‘Update Schema’ tab, and
see if any of the ‘Poi.*’ types (or any other type actually) are
selected. If some are selected, click ‘Update schema’. It is
probably a good idea to choose ‘All objects’ from the drop-down as
well, although this will take slightly longer. When coming from Plone
2.5, be sure to select ‘Remove schema attributes from instances.’

Usage

Add a Tracker, and use the “state” menu to open it for submissions.

The tracker front pages allows you to browse for issues by release,
state or area, as well as search for issues. Note that if you are not
tracking software releases, you can leave the list of “releases”
empty, and organisation by release will be turned off. The fields for
areas and issue types come pre-configured with simple values that
presume you are tracking software bugs. You can change these to
whatever you want.

Once you have set up the tracker, add Issues inside, and Responses
inside Issues. Anyone can add responses to issues with the default
workflow. Responses from tracker managers (as configured on the root
tracker object) and the original submitter are colour coded to make
them easier to pick out. When adding a response as a tracker manager,
you can change the state, importance or assignment of an issue.

If email notification is enabled in the root tracker object, managers
will get an email when there are new issues and responses, optionally
via a mailing list. Issue submitters will also get emails upon issue
responses. Additionally, when an issue is marked as “resolved” by a
tracker manager, the submitter will receive an email asking him or her
to mark the issue as confirmed closed.

To use with the PloneSoftwareCenter, install PSC and then install
Poi. This will ensure PoiPscTracker is added to the list of allowed
content types in portal_types/PSCProject. You can then add Trackers
inside a project in the software center. The trackers will function in
the same way as regular trackers, but will use releases from the
software center project instead of a manually defined list.

Using HTML/kupu and other markups for issue text:

Please see notes about migration above!

Before version 1.0b2 Poi used to support kupu/rich text fields with HTML in the
issue and response body. This was removed in favour of “intelligenttext”, a
plain-text markup that preserves whitespace and makes links clickable.

This was found to work very well on plone.org and for the type of simple
trackers that Poi was intended for. However, a lot of users wanted kupu back.

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]

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]

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]

1.2 beta 1 - (12 July 2008)

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]

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]

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 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]

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 beta 1 - Released Movember 19, 2007

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]