Title: TeamPage 6.2.52

TeamPage 6.2.52 is focused on improvements to ordered lists, support for upcoming Kanban features, and improvements to external user directory integration. The release also includes over 60 bug fixes and improvements for TeamPage customers and developers. Please read on for the full list of changes.

Download TeamPage version 6.2.52




Bug Fixes



Startup and Shutdown



• Fixed a bug that could prevent TeamPage from starting when running with certain plug-ins if no license had yet been installed. (Server97679)

• Fixed a bug that prevented JVM options updating via the server setup interface (e.g., maximum heap memory) from being applied on restart when using the normal service wrapper to run TeamPage. (Server97652)

• Fixed a bug that could prevent TeamPage from shutting down gracefully when running with no journal if an administrator happened to make a change to server logging options on the server settings > Server Files page. (Server97677.04)

Forms



• Fixed the styles applied to certain form fields to work better when non-Western characters are present. (Proteus17186)

• Fixed an issue that could prevent dynamic form field behaviors based on changes to numeric form fields. (Proteus17158)

• Fixed an issue that ignored the default due date inherited from a milestone when determining whether a value had been supplied for a required due date field. (Proteus17001)

Editor



• Added a "Decoration/Effect" option to the editor's image dialog that offers the following options: Auto, Drop-Shadow, Border, Photo Frame, None. The "Auto" option will select the existing default behavior, which will apply the drop-shadow effect to images that don't use the "Inline" display type. (Proteus16927 / Proteus17142 / Proteus17002 / Proteus17114)

• Cleaned up several minor cosmetic issues with the image dialog. (Proteus17080)

External User Directory Integration



• Fixed an issue with TeamPage's automatic security principal caching mechanism that could cause a cache refresh to start when the initial cache fill was still running. The principal cache refresh will now never run before the initial cache fill is complete; and further, the first refresh operation will be skipped if it would have occurred within 1/10 of the preferred cache refresh interval. For example, if the preferred cache refresh interval is 6 hours, and the first cache refresh would have been scheduled for 6:00 PM, but the initial cache fill only finished at 5:45 PM, the 6:00 PM refresh will be skipped, and the first refresh will instead be scheduled for 12:00 midnight. (Server97702 / Server97736)

• Fixed a bug that prevented TeamPage from correctly applying the selection of "Indirect" membership lookups for a Microsoft ActiveDirectory user directory configuration. (Server97717)

• Fixed a bug that prevented the session cookie from being set when a user logging into TeamPage using NTLM is logged into TeamPage as Visitor rather than as a named TeamPage user. This bug didn't necessarily cause any serious issues, but it did mean that extra LDAP queries would be required, and extra sessions may be created and tracked for some time on the TeamPage server. (Server97741)

• Fixed an issue that prevented TeamPage from redirecting users back to the originally requested page (when possible) after they had successfully logged in via Azure AD. (Server97030)

Ordered Lists



• Fixed a bug that could cause list items to disappear unexpectedly if they had been re-added to a list after having just been removed. (Proteus17241)

• Fixed a bug that prevented list items from automatically appearing in a list when added by another user and/or in another tab/window if the list was initially empty. (Proteus17238)

• Fixed a bug that could cause deleted separator entries to continue to appear in ordered lists. Separators will now no longer appear in lists after being deleted. (Server97559)

Signature Requirements Module



• Fixed two bugs related to the signature requirements module's tracking of supervisors and assignees with some External User Directory configurations. (Proteus16946 / Proteus16949)

Improvement Projects



• Fixed a bug that prevented order change operations on an Improvement Milestone's All Tasks page from being correctly applied. (Proteus17221)

Other



• Fixed a bug that prevented log files from being downloaded when running TeamPage with no journal. (Server97677.02)

• Fixed a bug in the way TeamPage evaluated permission to use certain components that require license support. In some cases, tests were too aggressive, causing TeamPage to treat some plug-ins as unlicensed. This would usually cause a message indicating that the plug-in was unlicensed to be displayed on certain pages. (Server97155)

• Fixed a bug that prevented the escape key from closing certain popup dialogs, such as the ones used to display enlarged versions of inline images or the details of a calendar event. (JPBO29371)

• Fixed the links for space-level plug-in settings dialogs that appear on the space settings > Plugins page. Previously, these links would correctly open the plug-in settings dialog, but for the wrong space. (Server97176)

• Fixed a bug rendering the "compact" version of the rapid selector format for a tag name. This issue could, among other consequences, prevent tag filter expressions from working correctly. (Proteus17059)

• Fixed a bug that prevented custom sort order from being applied to sections of type "Projects." (Proteus17003)

• Fixed a bug that could cause TeamPage to report page names as assigned even after the name had been removed from the owning entry, and the owning entry had been deleted. (Server97515)

• Fixed a bug that could, in some special cases (likely in TeamPage customizations that are part of plug-ins) prevent TeamPage from returning all expected results to a query. (Server97159)

• Fixed an issue that caused TeamPage to include an automatically generated links in certain cases when links should be omitted, such as when a user elects to omit links when emailing articles from TeamPage. (Server97171)

• Fixed an issue that caused the "Account Settings" link in the user menu to appear even to users who do not have "Modify Account" permission. (Proteus14308)

• Fixed a bug that could prevent a page from being properly displayed if the code being used to generate it involved a certain series of modifications to a query being used to retrieve and display entries. (Server97224)

• Fixed a bug that could prevent a newly uploaded license file from being properly loaded in certain specific cases. (Server97156)

• Fixed a bug that could cause internal system tags that don't normally appear in the interface to appear in the tag cloud and certain other places. (Server97309)

• Fixed an issue that prevented the place-holder text box from being hidden when opening an inline comment form from the "New Comment" action in the context menu. (Proteus16932)

• Fixed a bug that could, in some circumstances, cause some results to be omitted in response to a tag query. (Server97142)

• Fixed a bug that prevented a user who has permission to edit an entry from adding new attachments, even if they had Add Attachments permission in the containing space, if they did not also have Author permission in the containing space. (Server97417)

Improvements



External User Directory Integration



• Changed the user directory test view so that the test login feature uses an AJAX request rather than a normal POST, which required reloading the whole page. (Server97678)

• TeamPage is much more efficient about refreshing cached security principal data. In particular, when out-of-band refreshes are requested (which can be triggered by certain plug-ins), refreshes will be skipped for principals for which sufficiently fresh data are already cached. (Server97719 / Server97726)

• Fixed various cosmetic or user interface issues with TeamPage's user directory configurator. (Server97683)

• Removed unnecessary logging of JCIFS configuration properties when using TeamPage's JESPA connector plug-in for NTLMv2. The version of JESPA we currently offer for TeamPage, unlike earlier versions, does not depend on JCIFS except in special circumstances which should not come up in normal usage with TeamPage. Logging all JCIFS configuration options (most of which are always unset, anyway) was therefore unnecessary and misleading. (Server97696)

Signature Requirements Module



• Added support for displaying closed signature requirements in context. (Proteus16985)

Other



• Added "cmd-k" (i.e., "meta-k") as a shortcut keystroke for opening the link dialog in the rich text editor. (Server97458)

• Tweaked some styles used by form fields to ensure uniform appearance across various related types of fields. (Proteus16978)

• Modified the FullCalendar plug-in so that users can meta- or cmd- click on calendar event links to open the entry in a new tab or window. (JPBO29513)

• Added settings for TeamPage's W3C ExLF logging for whether to log self-induced background requests and internal WebDAV requests. These new settings are off by default, which should prevent W3C logs from growing unnecessarily quickly with usually useless information. (Server97591)

• Tweaked the FullCalendar plug-in so that calendar views that load a bit slowly will show the usual loading indicator. (JPBO29221)

• The search box will now give type-ahead completion suggestions for actions. For example, if the user types "edit" from a page showing a single entry they have permission to edit, they should see a suggestion to trigger an action to open the edit form for the current entry. (Server97249)

For Developers



Forms



• Fields of type "checklist_entries" now optionally support including an extra control that the user can use to add more entries to the list. (Proteus16971)

• The forms and other form bootstrap properties for the "task" or "schedule" hover menu items can now be overridden. Previously, these were hard-coded to use the standard taskitem and eventitem forms, respectively. (Proteus16990)

• When a user clicks a "task" or "schedule" hover menu item, the request parameter topLevel=true/false will always be set, indicating whether the hover menu was for an entry displayed at the top level (topLevel=true), or as an inline comment (topLevel=false). This can be useful if a custom form is being set up for that request which is a setup form that will need to be followed by another form dialog , such as the "taskitem" dialog, which would require that information. (Proteus16991)

• Fields of type "datetime" now optionally support specifying the desired time step used to generate suggestions for the time of day. The field configuration can simply specify a "time_step_minutes" property, e.g., time_step_minutes=15, although a value must be used that is a factor of 60 (i.e., 2, 3, 5, 10, 12, 15 or 30). (JPBO5221)

• The gwt.rpc.form tag can now get form properties from a currently scoped ViewAction. Just apply the tag attribute useViewAction="true" to a gwt.rpc.form tag. This can be particularly useful when a form is to be rendered inline, so as to avoid having to manually copy the GWT action properties from a ViewAction to the inline form bootstrap properties. This will also avoid an extra request by the client to retrieve the information required to render the form, since the response will already include everything the client needs for that. (Proteus16951)

Ordered Lists



Most of these ordered list improvements are related to the upcoming first production release of TeamPage's Kanban plug-in, but are generally applicable to various sorts of customizations.

• Added the new com.traction.sdk.util.EntryPropertiesListType class that stores and retrieves list ordering in one or more properties of an entry. This requires that the requesting user (making the changes to the list order) has permission to edit the entry in which the order information is stored. (Server97398)

• Completely changed the way that entry list membership is determined so that it's completely customizable on a per-com.traction.sdk.list.ListType basis. ListType now has the following methods:

public Set<com.traction.sdk.list.ListContext> getMemberOfLists(
    com.traction.sdk.Entry entry
);

public ListChanges getMemberOfEntryListChanges(
    com.traction.sdk.Entry entry,
    Collection<? extends com.traction.sdk.LabelName> addedLabelNames,
    Collection<? extends com.traction.sdk.LabelName> removedLabelNames
);



There is also a new com.traction.sdk.list.ListMembershipFunction interface for ListType customizers who wish to cleanly separate details related to list membership from details related to list ordering. Plug-in authors should consider using com.traction.sdk.list.AbstractConfiguredListType as the basis for a custom ListType in order to make use of this pattern (or just using or a concrete subclass such as com.traction.sdk.list.EntryPropertiesListType), since the class and other configuration properties for a custom ListMembershipFunction can be set in the "list_membership" namespace. (Proteus17203)

• Removed the limitation that a single page could only respond to updates to a single ordered list. Customizers can now include multiple lists in a single view, and have all of them registered to "live update" in response to all applicable changes. (Proteus17243)

• The db.entries tag now supports listcontext= for applying ordering from an ordered list to query results, just like the entries tag does. Use listcontext="current" to use the currently scoped ListContext object. (Server97396)

Proteus Events



• Proteus now fires "feed-item-expand" and "feed-item-collapse" events to allow customizers to run custom JavaScript when users click to expand or collapse entries rendered in feed volume. For both events, the event data payload is a JSON object structured as follows:

{
  // Map of the attributes from the rg="f#..." region token encoding.
  "rg": { ... },
  // This should be the same DIV that has the rg= attribute.
  "elm": <HTML DOM element>
}


Plug-in authors can register for these as they can for other Proteus native events, e.g.:

function myFeedItemExpandHandler(data) {
  // ...
}

Proteus.addHandler("feed-item-expand", myFeedItemExpandHandler);


(Proteus17048)

• Proteus now fires "entry-moderation" events when a moderation operation performed by the current user completes. The event data payload is a JSON object structured as follows:

{
  "action": "<string, name of the moderation action, e.g., 'Lock'>",
  "failed": [ array of entry FQIDs for which the requested operation failed ],
  "succeeded": [ array of entry FQIDs for which the requested operation succeeded ],
  "skipped": [ array of entry FQIDs for which the requested operation was skipped because the target was already in the desired state ]
}


Plug-in authors can now register for these events as they can for other Proteus native events, e.g.,

function myEntryModerationHandler(data) {
  // ...
}

Proteus.addHandler("entry-moderation", myEntryModerationHandler);


(Proteus17134)

Proteus Widgets



• TeamPage's Proteus skin widgets now include generic menus on top of various specific types of menu widgets.

The GenericMenu widget can be used to insert a custom menu into, e.g., the heading area (where the "Show" menu often appears):

<gwt.rpc.view name="GenericMenu" key="heading" heading="Test Menu" class="my-test-menu">
  <gwt.rpc.view name="item" type="separator" name="A" class="menu-sep-A" />
  <gwt.rpc.view name="item" type="item" name="Alert Test 1" javascript="alert('A:X');" class="menu-item-X" />
  <viewaction name="NewTask" forceinclude="">
    <gwt.rpc.view name="item" type="item" name="New Task" rg="__viewaction.gwtregiontoken__" class="menu-item-Y" />
  </viewaction>
  <gwt.rpc.view name="item" type="item" name="Home Page" url="__url.urlgen.home__" class="menu-item-Z" />
  <gwt.rpc.view name="item" type="separator" name="B" class="menu-sep-B" />
  <gwt.rpc.view name="item" type="item" name="Twitter (New Window)" url="https://twitter.com" target="_blank" class="menu-item-Q" />
  <gwt.rpc.view name="item" type="item" name="Alert Test 2" javascript="alert('B:R');" class="menu-item-R" />
</gwt.rpc.view>


The InlineGenericMenu can be used to insert a menu into the main "HTML" area of the page by replacing a node by its ID, e.g.:

  <gwt.rpc.view name="HTML">
    <div>
      <div id="test-menu"></div>
    </div>
    <gwt.rpc.view name="InlineGenericMenu" heading="Test Menu" class="my-test-menu" -id="test-menu">
      <gwt.rpc.view name="item" type="separator" name="A" class="menu-sep-A" />
      <gwt.rpc.view name="item" type="item" name="Alert Test 1" javascript="alert('A:X');" class="menu-item-X" />
      <viewaction name="NewTask" forceinclude="">
        <gwt.rpc.view name="item" type="item" name="New Task" rg="__viewaction.gwtregiontoken__" class="menu-item-Y" />
      </viewaction>
      <gwt.rpc.view name="item" type="item" name="Home Page" url="__url.urlgen.home__" class="menu-item-Z" />
      <gwt.rpc.view name="item" type="separator" name="B" class="menu-sep-B" />
      <gwt.rpc.view name="item" type="item" name="Twitter (New Window)" url="https://twitter.com" target="_blank" class="menu-item-Q" />
      <gwt.rpc.view name="item" type="item" name="Alert Test 2" javascript="alert('B:R');" class="menu-item-R" />
    </gwt.rpc.view>
...
  </gwt.rpc.view>


(Proteus16964)

• The EntryTabs and BodyTabs widgets now support initially hiding one or more tabs and instead showing a "More" tab.

For EntryTabs, individual EntryTab gwt.rpc.view tags can specify more="true" to make the tab initially hidden behind a "More" tab. (The library function com.traction.sdl.gwtrpc.shared#entrytab supports this by allowing callers to pass in a boolean variable "more" set to true or false, and will set that attribute accordingly.)

For BodyTabs, individual tabs' JSON encoded data can include an "m" property set to "true" or "false" to make the tab initially hidden behind a "More" tab.

In either case, if a tab that would otherwise have been hidden is currently selected, it will not be hidden. (Proteus16945)

SDK



com.traction.sdk.SdkFactory now has a new method for creating a com.traction.sdk.props.PropStore representing an entry's properties, and commitChanges method will submit an edit on behalf of the requesting user if any effective changes have been applied to the PropStore.

public abstract com.traction.sdk.props.PropStore getEditableEntryProperties(
    com.traction.sdk.Context context,
    com.traction.sdk.TractionId entryId,
    boolean exact
) throws com.traction.sdk.AuthenticationException;



(Server97397)

Other



• Added the "due_modified_count_future" com.traction.sdk.token.EntryField (and corresponding com.traction.sdk.token.EntryFieldRenderers) that can be used in conjunction with any task to determine how many times its due date was pushed back (i.e., into the future). (Server97543



Attachments:
teampage_logo.jpg
Article: Customer5417 (permalink)
Categories: :Doc:changelog, :Doc:r62
Date: December 30, 2021; 7:40:41 PM Eastern Standard Time

Author Name: Dave Shepperton
Author ID: shep