Calendar object has been added to export the following functions related to calendar view operations:
// Move the start time of an event, preserving its length
Proteus.Calendar.moveEvent(fqidSpec, newStartTimeInMillisecondsSpec, callbackFunction)
// Change the end date/time of an event
Proteus.Calendar.changeEventEnd(fqidSpec, newEndTimeInMillisecondsSpec, callbackFunction)
// Set the properties of an event on the calendar
Proteus.Calendar.setEventProperties(fqidSpec, newStartTimeInMillisecondsSpec, newEndTimeInMillisecondsSpec, allDay, callbackFunction)
// Show the event details dialog for the target entry
Proteus.Calendar.showEventDetails(fqidSpec)
These expose the corresponding functionality offered by the TeamPage GWT "View" module's SdkService methods of the same names.
Note that the specifications for the date/time values must be expressed in milliseconds from the start of the epoch, and must be adjusted (when necessary) to take into account the user's time zone. This makes them compatible with the type "v" (event) regions that appear in TeamPage's calendar views.
One other special Calendar function is showSdate:
Proteus.Calendar.showSdate(newSdateSpec)
This function doesn't exist, but may be defined by a developer to override the default handling of the "refresh calendar view" behavior that occurs when an entry is created or edited on a calendar. The default behavior is to either refresh the current view, if the new or modified entry's start date is covered by the current calendar view, or to navigate to the month calendar view that contains the start date. Developers who are working on special behaviors for calendar views and need to override this default behavior should define the Proteus.Calendar.showSdate function to implement their preferred handling.
Grouped Button Styles for Proteus
The Proteus skin now natively includes styles for grouped buttons.
Default (same as the Light version)
<div class="button-group">
<a href="#" class="button">Button</a>
<a href="#" class="button active">Active</a>
<a href="#" class="button selected">Selected</a>
<a href="#" class="button disabled">Disabled</a>
<button type="button" value="test 3">Button</button>
</div>
Light Version (Set the "group-button-light" class)
<div class="button-group-light">
<a href="#" class="button">Button</a>
<a href="#" class="button active">Active</a>
<a href="#" class="button selected">Selected</a>
<a href="#" class="button disabled">Disabled</a>
<button type="button" value="test 3">Button</button>
</div>
Dark Version (Set the "group-button-dark" class)
<div class="button-group-dark">
<a href="#" class="button">Button</a>
<a href="#" class="button active">Active</a>
<a href="#" class="button selected">Selected</a>
<a href="#" class="button disabled">Disabled</a>
<button type="button" value="test 3">Button</button>
</div>
Colorful Setting Panel Styling
For settings dialogs, such as those used to manage user or space settings for a plug-in, we now offer more colorful and interesting styling and layout option. Just call the setting-pane function in com.traction.sdl.admin.settings.
<#setting-panel class="primary" title="Primary" icon="check">
This is a test.
</#setting-panel>
Use class= to specify the color of the panel. The "icon" parameter specifies the icon (the font-awesome mnemonic name) displayed in the heading.
To embed your settings inside such a panel, use the "setting-row" function, passing the names of the desired settings like this:
<#setting-panel class="default" title="Button Text for Basic Views" icon="check">
<#setting-row settings="setting_name0" width="full" />
<#setting-row settings="setting_name1,setting_name2" width="half" full_width_textbox="setting_name1,setting_name2" />
</#setting-panel>
If the width=
parameter is "half", the width of the column will occupy half of the row.
If the full_width_textbox=
parameter is set and the type of the corresponding <input>
is "text", its width will be 100%.
Other Changes
• The com.traction.sdk.util.log.debug.DebugTimingTimer class's getInstance factory constructor method now accepts a Supplier<String> rather than a Function<Void,String>. (Server85018)
• The com.traction.sdk.util.cache.GuavaCacheStats.CacheStatsProvider interface has been removed, and any uses have been replaced with Supplier<com.google.common.cache.CacheStats>. (Server84901)
• TeamPage's configuration loading system now supports loading configurations for event listeners and daemons from .json configuration collections, not just from individual .properties files. (Server82947 / Server84926)
• Event listener configurations now set their NotifyUsers implementation as part of the setConfiguration method rather than as a post-processing step. If you have a plug-in with an event listener that has a custom tsi.config.ListenerConfig, you can now implement custom validation of an associated com.traction.sdk.event.NotifyUsers implementation. (Server78265)
• The html.css, html.js and html.img tags now support protocol-relative URLs for including references to static Javascript, CSS and image resources. (Fully qualified or protocol-relative URLs should generally only be used to include resources located on other servers -- i.e., not on the TeamPage server.)
• Fixed some issues that prevented custom default values from being used in the Email Reply form's "To" field (and, in certain situations, possibly some recipient fields). (Proteus14594)
• The user plug-in settings dialog no longer advertises support for settings belonging to the "cookie" setting type. (This dialog never supported this type of setting.) (Server85071)
• The transform.html2plaintext SDL tag has been added to facilitate transformation of HTML document fragments into either plain text, or plain text with entity-encoded runs left alone (and/or with entity-encoding being applied to tag delimiters and ampersands if unencoded tag delimiters are present). The withEntities= attribute may be specified with a value of either "true" or "false" (defaulting to "true") to specify whether the entity-encoding behavior is required, or whether the resulting text should really be completely text-only. (These behaviors correspond to the recently added "cleanhtml2text" and "cleanhtml2text_entities" com.traction.sdk.util.Transformers, which use the htmlcleaner package to create clean text-only renderings from HTML content.) Developers should consider using this anywhere that they were previously using the <transform> SDL tag with name=plaintext_xf. (Server86035)
• The obsolete and redundant xml.transform tag has been retired. If you're still using it in your SDL code, please replace it with the equivalent <transform> tag.
• The comment_target, task_target, event_target and related_target base form Field configurations have been added parallel to those respective EntryFields. These can be useful if you need to be able to use a form field to edit or remove one of those specific types of relationships. (Proteus14848)
• The new "entry" FieldType configuration can be used for form Field configurations to set up a single select field that uses a combo-box style control to let a user choose an entry tag for a custom type of entry. (This is a similar type of control to the one used for space, project and milestone fields.) Specify the desired type of entry in the entry_type= and index_entry_types= field configuration properties. (Proteus14914)
• The utility class com.traction.sdk.util.ColumnListSuperCsvWriter has been added to serve as a wrapper for org.supercsv.io.CsvListWriter. It currently uses only the most common options (org.supercsv.prefs.CsvPreference.STANDARD_PREFERENCE). (Server86980)
• Updated to SLF4J version 1.7.25. (Server87012)
• When a Javascript error occurs in the scope of a normal page and is reported in the in-page status bar that appears near the bottom of the page (instead of raising a feedback dialog), developers can view the browser's web error console to see the same full stack trace they would see in the feedback dialog. (Proteus14978)