<h3>DotNetNuke&reg; Feedback Module v. 05.00.02 -- RELEASE NOTES</h3>
<p>Requirements: DotNetNuke version 5.02.03 or later, MS SQL Server 2005/2008 Standard/Express or later, ASP.Net 3.5 SP1 or later.</p>
<h4>What's New in 05.00.02</h4>
<ul>
      <li><p>Fixed issue with "Send Email Asynchronously" setting checkbox not persisting or having any effect.</p></li>
      <li><p>Fixed issue with "Use Category Value As Send To" feature not correctly obtaining email value from the category list and defaulting recipient to admin user.</p></li>
      <li><p>Fixed issue with not being able to delete, edit or change status of feedback items in Moderation and Management control when Scope set to Portal (default/legacy behavior).</p></li>
      <li><p>Fixed issue with string to number conversion following upgrade from a 04.03.00 Feedback install in which no value had been specified for number of rows in message setting.</p></li>
</ul>
<h4>What's New in 05.00.01</h4>
<ul>
      <li><p>Converted Feedback.ascx to tableless form that is visually customizable by making changes to module.css and is XHTML compliant.</p></li>
      <li><p>Added setting to select display of form field labels either above or to left of fields to better allow placement of module in a narrow pane.</p></li>
      <li><p>Removed MS SQL Server 2008 specific option statement from 05.00.00.SqlDataProvider which prevented install in MS SQL Server 2005.</p></li>
      <li><p>Added protective IF EXISTS clause around SQL primary key constraint drop.</p></li>
      <li><p>Fixed issue with line breaks not displaying in contact information section of email notifications when no category selected.</p></li>
      <li><p>Fixed issue with non-functioning button to reset email validation regex back to portal default.</p></li>
      <li><p>Added protective IF EXISTS clauses around all database object drops in Uninstall.SqlDataProvider.</p></li>
      <li><p>Fixed issue with feedback notifications being sent to all registered users of portal even when no roles selected in Send To Roles.</p></li>
</ul>
<h4>What's New in 05.00.00</h4>
<ul>
      <li><p>Additional fields for entering sender's contact information have been added:</p>
           <ul>
                 <li>SenderName (was available in 4.04.03 but named CreatedByName)</li>
                 <li>SenderStreet </li>
                 <li>SenderCity </li>
                 <li>SenderRegion</li>
                 <li>SenderCountry</li>
                 <li>SenderPostalCode</li>
                 <li>SenderTelephone</li>
                 <li>SenderEmail (was available in 4.04.03 but named CreatedByEmail)</li>
           </ul>
           <p>Each field has the appropriate validators applied and its value filtered for html elements, scripting, and SQL commands prior to storing in the database. If the user is authenticated, values for all contact fields are pulled from the user's profile. All contact information fields (if non-blank) are included in the feedback email.</p>
      <li><p>In module settings all of the above fields (except SenderEmail which is required) may be configured as Required, Optional, or Hidden.</p></li>
      <li><p>Added a PublishedOnDate field. </p></li>
      <li><p>If moderation is enabled in module settings and feedback list categories have been created, the admin may specify more than one category to be moderated (i.e. given a status of Pending) via a checkbox list and specify the action to be taken for those categories not subject to moderation - i.e. place in Private, Published, Archive lists or delete after sending emails. </p></li>
      <li><p>When the module settings have specified that the Category list is to be presented to the sender and feedback list categories have been created, the admin can select an initial category selection or have the localizable string &quot;&lt;Please Select&gt;&quot; placed as the first item in the Category list box.</p></li>
      <li><p>The Admin user may select whether to present a captcha control (challenge-response test) to all users, anonymous users only, or disable the control completely.</p></li>
      <li><p>A button to recycle/refresh the captcha image has been placed just above the captcha control.</p></li>
      <li><p>The Admin user may select a portal page (tab) to which to redirect following each submission of the feedback.</p></li>            <li><p>The moderation control has been significantly rewritten to remove full postbacks anytime a command link has been clicked, to hide empty data grids and associated pagers for any feedback status types that have no posts. A section head control has also been added to each status grid to allow collapsing grids which contain posts but are not of interest at the moment.</p></li>            <li><p>Moderator may now edit the subject and message fields of any post.</p></li>
      <li><p>Moderator may print any post by clicking the print icon beside each item on the moderation screen. A print template may be defined in the module settings as may whether the print screen appears in-line (same page) or as a pop-up (new page).</p></li>          <li><p>Added a Delete confirmation popup to all datagrids on the Moderation page.</p></li>
      <li><p>Moderator may sort any of the grids by Created date ascending or descending by clicking on the Created date column header. Moderator may optionally hide any posts not in categories requiring moderation. In version 4.04.03, all posts in categories not requiring moderation were hidden and thus could not be deleted or have their status changed.</p></li>
      <li><p>The ViewComments control aka the Feedback View or Guestbook now supports templated rendering and core token replacement allowing the admin user to fully control the presentation of comments to the public. A Repeater control is used for rendering rather than the DataList control of prior versions. The IPropertyAccess interface has been implemented to provide tokens for all properties of the FeedbackInfo class.</p></li>
      <li><p>Admin user may specify more than one category to be displayed in the ViewComments/Guestbook control.</p></li>                       <li><p>ViewComments/Guestbook control pagers are hidden when the total number of posts does not exceed the admin or user specified page size.</p></li>
      <li><p>The module is DNN 5 compliant and uses the new v 5 manifest to include license/release notes and to setup the two custom permissions used by the module via the &lt;permissions&gt; node of the manifest rather than via an IUpgradable implementation.Module now uses core SendMail methods rather than propriatary code. Note: The core Messaging API introduced in DotNetNuke 5.03.01 was not used due to several issues in its implemention that will not be addressed until DotNetNuke 5.04.xx.</p></li>
      <li><p>The Send To email field in the module settings may include multiple email addresses separated by semi-colons.</p></li>
      <li><p>Send To Roles selection grid is included in module settings to permit feedback email to be sent to all users in one or more security roles. When multiple Email addresses are specified either in the Send To or Send To Roles selector, duplicate addresses (for example caused by same user having multiple roles) are filtered out.</p></li>
      <li><p>When available, the IP Address of the sender is included in each feedback item saved to the database. To reduce the chance of DOS attacks, you may specify in the module settings the minimum period of time in minutes between feedback submissions from the &quot;same&quot; user based on either the DNN UserID, the user's IP address, or the user's email address.</p></li>
      <li><p>The regular expresions for validating the sender's Email, PostalCode and Telephone fields may be defined in the module's settings as it is difficult to create regular expressions that handle all international formats. Defaults for each regular expression are provided. The default Email regex is that defined in the portal's User Settings.</p></li>
      <li><p>Core audit fields CreatedOnDate, CreatedByUserID, LastModifiedOnDate and LastModifiedByUserID have been added to the feedback table and are populated appropriately.</p></li>
      <li><p>FeedbackInfo, and FeedbackList entity classes implement IHydratable when being populated from database. FeedbackInfo inherits from new core BaseEntityInfo class and implements IPropertyAccess.</p></li>
      <li><p>The Feedback module previously stored its items by PortalID making all items within the same portal moderatable/managable by any Feedback module regardless of ModuleID. Likewise for the feedback comment viewer or guestbook. A new Feedback module setting called &quot;Scope&quot; is available to allow the admin to select either portal scope (legacy behavior) or module instance scope. Since the Feedback table already included a ModuleID column, it was not necessary to alter this table. For the feedback viewer/guestbook settings, the admin may select either the legacy portal scope or select from a checkbox list of the portal's feedback modules which module's items are aggregated to supply content to the feedback viewer. Aggregated feedback respects the user's view permissions of the other modules providing feedback items.</p></li>
      <li><p>A foreign key constraint on the ModuleID column of the Feedback table to the core Modules table with cascade delete on has been added to remove module instance feedback items when the module is deleted (from the recycle bin).</p></li>
      <li><p>A button is provided on the Feedback settings control for the admin user to delete all feedback items which had been &quot;orphaned&quot; in prior versions of the module when an instances of the module were deleted. In prior versions, although feedback items from all modules of a portal were viewable on the moderation/management page, only those items associated with the module could be deleted, making it impossible to delete items associated by ModuleID to a deleted Feedback module.</p></li>
      <li><p>The module complies with current (as of 5.02.03) DotNetNuke packaging practices for a 5.x extension including a module manifest with license and release notes. It has been tested in DotNetNuke versions 5.03.01 and in 5.04.01 with an ASP.Net 4.0 application pool.</p></li>
      <li><p>Make ValidationGroup applied to validators and submit button more specific so that multiple instance of the feedback module may co-exist on the same page.</p></li>
  </ul>
  <h4>What's Not Included in 5.00.01</h4>
  <ul>
      <li><p>Implementation of IPortable interface. Due to the extensive reference to PortalId, user emails and security roles in the module's settings and data and the need to re-map category and list ids during import, proper implemention of IPortable would be too time consuming to include in this release.</p></li>
      <li><p>Ability to define a feedback form with custom controls. Although this may be considered in a future release and one which the previous Feedback team lead had implemented, it is felt that this feature brings tremendous complexity both in coding and administrator setup of the module, which should remain a relatively simple one with a fairly limited set of use cases. Should one need a module that can define, display, and receive input from custom fields, the core Form and List module is recommended.</p></li>
  </ul>
  <h4>Bug Fixes in 5.00.00:</h4>
  <ul>
      <li><p><strong>UX/UI/XHTML Compliance</strong></p>
         <ul>
            <li><p>Cleaned up UI of all forms to remove most in-line styles and table cell attributes and appropriate references are made to css classes in a newly created module.css style sheet.</p></li>
            <li><p>All image tags have alt attributes appropriately specified </p></li>
            <li><p>Fixed inconsistant application of width setting to field in the feedback form when using XHTML skin.</p></li>
            <li><p>Templated ViewComments control (aka Comments or Guestbook) includes default templates for XHTML compliant rendering using divs rather than nested tables.</p></li>
          </ul>
       </li>
       <li><p><strong>Other Fixes</strong></p>
           <ul>
               <li><p>In Feedback settings, the enable Category Select checkbox would not persist unless a single default category was first selected from drop-down list. Now, if no default category is selected and Category Select checkbox is checked, the user is presented with a &quot;&lt;Please Select&;gt;&quot; prompt in the category drop down.</p></li>
               <li><p>Fixed issue when Moderation enabled in settings and a single moderated category selected. In that case, only the moderated category should have required moderation while all other categories should have been immediately published. Now, in addition to being able to specify multiple categories requiring moderation, the Admin user may specify what action is to be taken when a post in a category not requiring moderation is submitted.</p></li>
               <li><p>Fixed issue with Feedback Moderation which prevented any post having a non-moderated category from appearing in any of the four status lists without which it could not be deleted or moved to a different status.</p></li>
               <li><p>Fixed issue with use of multiple DNN pagers on the Feedback Moderation page (all in URL mode) conflicting and loosing their values when any postback was fired.</p></li>
               <li><p>Fixed several missing or non-functioning localizations.</p></li>
               <li><p>Replaced complex GetCategoryFeedback stored procedure which used temporary tables and dynamic SQL for paging of results with much simplified/more performant SQL code using SQL Server 2005 and later Row_Number and CTE capabilities.</p></li>
               <li><p>Feedback emails do not display sender contact fields such as name when they are empty.</p></li>
               <li><p>An error is no longer thrown when the Subject line is hidden.</p></li>
               <li><p>The [Feedback:Subject] token used in the template of the feedback view (comments/guestbook) module and the email subject line properly show the text rather than numeric value of an entry from the subject list when the list value is numeric.</p></li>
               <li><p>Specification of width (either % or px) now works properly even on XHTML skins.</p></li>
               <li><p>Due to improper combinations of PortalSecurity.FilterFlags with &quot;and&quot; rather than &quot;or&quot; operators when specifying the filter type parameter for the core PortalSecurity.InputFilter method, none of the module's input fields were being filtered/cleansed for xss attacks or html markup in version 4.04.03 opening a particularly dangerous vulnerability in a module used primarily by unauthenticated users.</p></li>
                <li><p>Added missing {objectQualifier} tokens in two stored procedures.</p></li>
                <li><p>All stored procedures and database tables related to this module have been renamed/re-created to include a &quot;Feedback_&quot; object prefix.</p></li>
                <li><p>Removed separate DotNetNuke.Modules.Feedback.SqlDataProvider project as a separate project and provider assembly is no longer needed.</p></li>
           </ul>
       </li>
  </ul>