|Features available in Oracle Application Express 4.1 - Early Adopter 1, Released xx-May-2011|
|Enhancements made to the Application Builder|
|To streamline the speed of creating an application, and working under the assumption that many developers want to create an application and then add pages manually, a new option is provided to create an application in 3 clicks.|
|Redesign dashboards to only show most important information. Where possible charts, etc can be clicked to drill down on corresponding interactive reports.|
|Team Development dashboards have been simplified and refined to make it easier to review progress.|
|Enhancements to Team Development|
|Limit the milestones to the current release.|
|Provide a hierarchical view of Features by release.|
|For users who want to adjust feature functional completeness by milestone, an easy utility allows you to set the due date of a feature to the date of the selected milestone.|
|Improvements made to charting capabilities|
|Allow developers to specify a label position, either outside or inside, for pie charts and doughnut charts. For lengthy labels the size of the chart was previously decreased as the label was on the inside.|
|Enhancements to Dynamic Actions|
|Declarative support for buttons to trigger dynamic actions. For 'Template' based buttons, in the Early Adopter you will need to create a new application with Theme 21, as currently this is the only native theme that contains button templates compatible with this feature. For 'HTML' and 'Image' based buttons, these will work regardless of theme.|
|Improve error handling and user-defined exception processing|
|Application and Page Processes of processing point "On Submit - Before Computation and Validations" and "On Submit - After Computations and Validations" have a new attribute called "Error Message Display Location" which allows developers to select "Inline in Notification" or "On Error Page" as error display location if a process fails.
This new setting which defaults to "Inline in Notification" for new processes can be used to specify where a process error message should be displayed. In previous versions of APEX, process error message have always been displayed on the error page.
"On Error Page" should be used if a page contains a manually created tabular form (using apex_item.xxx calls in the SQL statement), because a re-rendering of the page with an inline error would discard changes made by the user. For errors displayed on the "Error Page", the user can use the browser back button to preserve the entered values.|
|Developers have long sought a way to handle run time errors raised in their Application Express applications. Using the new "Error Handling Function" and attributes on the application and page level, it's now possible to modify or log any error which occurs in an APEX application.
|Enhancements to Interactive Reporting|
|Make additional functions available within IR computations:
* SQRT(n) |
|Enhancements to Item Types.|
|Enhance existing lists in APEX to be based on a SQL Query and PL/SQL function returning SQL query in addition to the existing static lists. This feature will allow developers to dynamically create styled list items for their application, and will be used in our mobile themes, using jQuery Mobile.|
|Added Intermediate Toolbar option for CKEditor 3+ and FCKEditor 2|
|1) What does the feature do?
#CURRENT_ITEM_HELP_TEXT# is a new placeholder for label templates which can be used to inline the help text of a page item when a page is rendered.
2) When and where would someone use the feature?
3) How would someone use the feature?
One of the attributes of a Label Template (Shared Components\Templates) would use the #CURRENT_ITEM_HELP_TEXT# placeholder to include the help text in the rendered page.
Example label template
<label for="#CURRENT_ITEM_NAME#" class="optional"><span class="helpText">#CURRENT_ITEM_HELP_TEXT#</span>
4) Why would someone use the feature?
To avoid expensive AJAX calls to get the help text. Note: This placeholder should only be used if the help text is short! The generated page will always include the help text of all page items independent if the user actually hovers over the label of a page item to displays the help text.
|Other new features in APEX 4.1|
|The new attribute "Page Items to Submit" has been added to regions of type IR, Classic Report, Tabular Form and plug-ins having that feature enabled.
The values of the specified page items will be submitted with a "Partial Page Refresh" request to set them in session state, so that they can be used in the WHERE clause of the regions SQL statement.
A "Partial Page Refresh" can be triggered with the "Refresh" dynamic action, by changing the sorting or by paginating.|
|Item based buttons have always offered reduced capability in terms of behaviour compared to region based buttons. Item buttons are now consistent with region buttons in terms of the behaviour available in the 'Action when button clicked' properties. Both item and region based buttons now have more consistent property pages as well.|
|Provide an API to determine the host URL on the system where Application Express is installed. This will allow for creating dynamic links that may be sent by an email process.
Provided in apex_util.host_url( p_option )
NULL - Return URL up to port number (e.g., https://myserver.com:7778 )
SCRIPT - Return URL to include script name (e.g., https://myserver.com:7778/pls/apex/ )
IMGPRE - Return URL to include image prefix (e.g., https://myserver.com:7778/i/ )
|Modernized the user interface of the learn more application linked from the home page and the login page.|
|Add plug-in support for additional components and enhance plug-in definitions.|
|The new checkbox 'Has "Escape Special Characters" Attribute' has been added in the "Standard Attributes" section of a region type plug-ins to allow to control if a region of that plug-in has the "Escape special characters" field in the Security section when the region is edited.
The value selected for a region is stored in the p_region.escape_output variable when a plug-in is called. It can be used by a plug-in developer to determine if the values read by the plug-in (for example from a SQL statement) should be escaped before displaying them on the page or not. This can be used to give developers using the plug-in the possibility to prevent Cross-Site Scripting (XSS) attacks.
Note: The "Escape Special Characters" attribute is a generic attribute and doesn't provide security out of the box by itself. It's up to the plug-in developer to use that setting to determine if the output should be escaped or not.|
|Custom Plug-in Attribute Values specified by the developer might contain items referenced with substitution syntax, for example &P1_DNAME.
If Substitute Attribute Values is set to 'Yes' Application Express will automatically replace those references with their actual value before calling the plug-in.
If Substitute Attribute Values is set to 'No' the values are written unchanged into the attribute_01 - attribute_15 record type attributes of p_plugin, p_item, p_region, ... and the plug-in developer is responsible for replacing those substitution syntax references with a call to apex_plugin_util.replace_substitutions or do similar replacements.
A use case for 'No' would be if the custom plug-in attribute is used in a template and the substitution syntax is used to reference page items and columns of the SQL statement executed by the plug-in. Because the column values of the SQL statement are not available at the time when the plug-in is called, the replacement has to be done by the plug-in itself.|
|Authorizations have been re-implemented using the APEX plug-in architecture.
Developers can now create plug-ins of type "Authorization Scheme Type", e.g. for database role or LDAP based authorization.
Authorizations can be implemented more declaratively, based on these new plug-ins and their attributes are based on built-in authorization types.
When creating a new authorization, different authorization attributes are shown, depending on the selected scheme type.|
|The following enhancements are designed to increase the usability of plug-ins:
1) Textarea for the plug-in attribute types PL/SQL Code, PL/SQL Expression, PL/SQL Function Body, SQL Query and Textarea is now resizable.
2) Attribute types "Page Number", "Page Item" and "Page Items" now do have List of Value support|
|The number of custom attributes which can be defined for a plug-in has been increased to 15.|
|New plug-in attribute type "Checkboxes" which allows the user to check multiple checkboxes based on the defined list of values. This new attribute type allows a developer to enable certain features of a plug-in by using just one custom plug-in attribute.|
|Continue to expand tabular forms validations.|
|Tabular Forms now support all validation types. Depending on the validation type you can use bind variable syntax, substitution syntax or you just specify the tabular form column name. The validation is executed for each submitted row of the tabular form.
Processes can now be defined for Tabular Forms as well, which allows you to easily process the submitted rows of a tabular form without having to deal with the apex_application.g_f01 - apex_application.g_f50 arrays. Depending on the process type you can use bind variable syntax, substitution syntax or just specify the tabular form column name.
The condition handling of Validations and Process have also been enhanced to better work with Tabular Forms. The new attribute "Execution Scope" allows to define for which rows the validation/process should be executed. The condition can now refer to tabular form columns if the new attribute "Execute Condition" is set to "For Each Row".
Validation and Processes which are assigned to a Tabular Form can also use the built-in Tabular Form column names "APEX$ROW_NUM", "APEX$ROW_STATUS" and "APEX$ROW_SELECTOR" in the validation, process or condition to refer the row number, row status (C=created, U=updated, D=deleted) and row selector checkbox (X=checked, null when not checked) of the currently processed tabular form row.|
|Allow usage of ROWID for Automatic DML processing by selecting ROWID as the primary key for a table or view when creating forms. The feature will allow developers to create forms and use the default DML processing on tables that do not have a natural primary key, as well as forms on views that do not expose the primary key.|
|Allow for ROWID to be used for updates, inserts and deletes in tabular forms as an alternative to primary keys.|
|Allow developers to choose a column to be used for lost update detection during create form and create form and report wizards. This choice would by-pass the need for the DML processes created by the wizards to calculate a checksum.|
|Improved user interface, new page section types, and enhanced spreadsheet / datagrid integration|
|Currently Copy Page is confusing to users. When users copy a Websheet page, it doesn't redirect to the new copied page. There isn't any indication saying they are at the old page. Users assume they are on the new copied page when they are not and mess up the original page.
This feature makes it easier and more intuitive to copy pages.|
|Add support to create a page section of type PL/SQL block. This will allow users with PL/SQL knowledge to write code against the associated schema. This region type will only be allowed if "Allow SQL and PL/SQL" is set to Yes.|
|The new API apex_util.redirect_url can be used in an APEX context to tell the browser to redirect to a specified URL.
If the functionality of branches are not sufficient enough it might be necessary to write PL/SQL code to decide where to branch/redirect to. The new procedure apex_util.redirect_url can for example be called in a process of type "PL/SQL" to redirect to a URL based on several conditions defined by the logic of the PL/SQL process. The new API will make sure that the APEX engine will immediately stop any further processing and send the new URL to the browser.|
#LINK# should be used as the 'href' attribute value of an anchor tag.
|Provide the ability to define BLOB Format masks to columns in Websheet Reports.|
|Tabular forms now provide the ability to define a row header to improve accessibility. A row header is used along with the column header to render the labels of tabular form items. A developer can select any column to be the row header. If one column is designated as the row header, then the current row value of that column is used along with the column header as the item label, so the taking the EMP table as an example, the label for the salary field of the empoloyee named "King" would be "Salaray: King"|
|For certain applications where users are provided a common username / password you don't want to allow users to reset the password. This option can be used to prevent end users from changing the password. Only Workspace Administrators can reset the password.|
|There was previously an API to create a user group, namely APEX_UTIL.CREATE_USER_GROUP. There is now a corresponding API named APEX_UTIL.REMOVE_USER_GROUP.|
|Tabular forms prior to APEX 4.1 required the selection of one or two primary key columns, neither one could be used as a foreign key in a master-detail form. In APEX 4.1 this is now supported, provided the ROWID column is selected as the primary key column of the tabular form.|
|Add an Application Date Time Format to the application definition. Unlike the other globalization settings which will alter the NLS session settings, this will be an internal reference which can only be used as a substitution or via the v() function. This is required for providing default format for Calendar dates that include Date and Time.|
|The yellow button called "Change my password" was converted into a list entry under tasks in the right hand side bar. This was to facilitate a cleaner UI for the large icon region.|
|It was entirely not obvious how you control whether or not Supporting Objects were included in an application Export or not. In APEX 4.0, the only way to "flip the bit" for supporting objects was at the actual time of application export. This can now be managed at the Supporting Objects interface and not only on export by setting the Include in Export to Yes on the Supporting Objects page.|
|Users can include single value and tabular results of Data Grid queries within page sections using the SQLVALUE or SQL syntax. The SQLVALUE tag will display the first column of the first row returned by the SQL query. This allows embeding Data Grid data within a sentence. To tabular results, use the SQL tag. See Websheet Help - SQL Generator for Data Grids for more details.|
|The Shared Components > Application Items page (4000.4100) is used to list existing application items. The report view (non icon view) of this page did not expose the protection level. This is important information, and its painful to edit every item to know what the protection level is, so this attribute is now exposed on the report as it is in the form.|
|Provide Oracle Application Express users with a hosted version online Help by default. This will decrease the size of our software distribution and enable us to update the online Help without releasing new software. Currently, the online Documentation Library is updated more frequently than online Help.|
|Improve the display of data grids to be cleaner and automatically change the mouse cursor to a pointer when over an enterable field.|
|For APEX Authentication on Websheets selecting Change Password allow entry of username and email address. A new password is then generated and mailed to the user. There is no way for a user to change this password to something they will remember.
The new password has been changed to hide email address and instead list Existing Password, New Password, and Repeat New Password, with a link at the bottom of page "Forgot Password"
Pressing Reset Password will reset the password to the new values entered.
On pressing "Forgot Password" the three password fields will be hidden and email address displayed and existing email notification used.|
|Within Page Navigation, Pages can now be sorted by Page Name, Created Date or Updated Date.|
|On the Translate Application page of Shared Components (application -> Shared Components -> Translate Application), there were multiple links to different reports to accomplish the same task. These have been reduced and rationalized.|
|Improve look and feel of new service sign up wizard, Request new service link from login page.|