1. Fabrik 3.9 has been released. If you have updated Joomla to 3.9, this is a required update.
    Dismiss Notice

CODE CONTRIBUTIONS WISHLIST

Jun 5, 2018
CODE CONTRIBUTIONS WISHLIST
  • Fabrik is Open Source and is provided to the community to use at no charge. If you are a community user (or even if you are a paid subscriber), if you would like to contribute code improvements in recognition of the benefit you are deriving, then this wiki page may provide you with some ideas on where you might do this.

    This page has been created to provide somewhere to list bugs and feature requests that Fabrikar.com does not have time to code (because they are focused on the major development of e.g. Fabrik 4) but which nevertheless would be welcome. Please feel free to edit this page to add new items based on Forum entries (please provide a link) or your own ideas, to annotate an existing entry to say you will work on it or to remove an entry which has been fixed and merged.


    Minor bugs(top)

    • Elements list - select a group filter, select a form which does not contain the group you have just filtered on, group filter appears to be cleared but elements are not displayed. (PR#1944 submitted by Sophist)

    • Make every Fabrik XML file meet the Joomla Coding Style Guidelines for XML

    • Make Fabrik SQL calls show up in the Joomla Debug Log Database Queries list. (Joomla PR#19367 for Joomla3 submitted by Sophist - however unlikely to be included in Joomla 3.9 unless a matching PR is submitted for J4.0 and there is a difficulty over how Fabrik 4 will create database connections that needs to be resolved before this can be submitted.)

    • When creating a repeat group the parent_id field is set to Details / Formatting / Format = Text rather than Integer - and if you ever edit the definition for this field it will try to convert it from INT(11) which is correct to VARCHAR(255) which is wrong. The fix needed is to set the default to Integer(11,0). (PR#1945 submitted by Sophist)

    • When if you update the name of the id element which is used as a value in a databasejoin element, then when you go back to edit the dbjoin it tries to change the column type from INT(11) which is correct to VARCHAR(255) which is wrong. Although this sounds similar to the above it is a different issue.(PR#1980 submitted by Sophist)

    • Fix the element Javascript "clear" action so it works on radio buttons (and other elementlist items) by adding a "clear" method to element-specific js or to elementlist.js. (See http://fabrikar.com/forums/index.php?threads/javascript-clear-radiobutton.48414/)

    • Fix the element Javascript "disable/enable" actions so they works on radio buttons (and other elementlist items) by adding override methods to element-specific js or to elementlist.js. (See http://fabrikar.com/forums/index.php?threads/cant-disable-a-radio-button.48803/)

    • Add field element "hide" option to yesno element to avoid issue whereby a hidden field element which is changed to yesno cannot be made visible again. See http://fabrikar.com/forums/index.php?threads/yesno-hidden-field.48777/)

    Wiki enhancements(top)


    Minor enhancements(top)

    • Add extra row to List headers to show group labels. (PR#1895 submitted by Sophist)

    • Improve Calc element to allow developer to specify type of MySQL field to be used as in Field element. (PR#1921 submitted by Sophist)

    • Enhance isgreaterorlessthan to support 2 comparisons so that you can check a range in a single instance of the plugin, and give clearer tooltip and validation fail messages. (PR#1909 submitted by Sophist)

    • Add Ace Editor syntax checking for any code parameters everywhere in Fabrik as per the example on http://ajaxorg.github.io/ace-builds/demo/scrollable-page.html - go to this page, press the + button at the bottom and second editor box has red checkmarks and tooltips where the lines have errors and you can see JS errors if you create them in the first window - absolutely Ace!! (PR#1925 submitted by Sophist)

    • List edit / Data / Joins - existing join and new join fields different sizes (php and js code mismatch), field sizes not a great match to the data they contain, repeatable field needs to be changed to a BS button group. (See PR#1914 for a similar PR for the Prefilter tab.)

    • List edit / Data / Prefilter & Join - list of table columns uses the label and not the MySQL field name. A minor change to the XML file should change this.

    • List edit / Data / Data / Primary key list does not include dblookup keys or other numeric elements. It should probably look at the database table definition to see whether the field is a *INT or not rather than filtering based on a list of element types.

    • All DB connections should be gained via Fabrik's helper rather than direct from Joomla. This will help to funnel all calls via a shim in J4.

    • All DB calls should be created using Joomla's query object not directly as an SQL string.

    • All DB calls should have a try/catch clause around them similar to PR#1927 or PR#1932. It would probably make sense to convert the code inside the catch into a helper method. (If this is done comprehensively, then the helper function can assist with adding SQL Transactional functionality to Back-end and Front-end database saves - see next item.)

    • Add SQL transactions around database saves for both Back-end and Front-end save routines so that either all changes to the database required for the save are committed or none of them are committed (helping preserve database integrity and avoid mismatching data). Since an SQL rollback will need to be run when an error occurs, having a helper function processing errors would be very beneficial. (See http://fabrikar.com/forums/index.php?threads/saving-form-data-to-database-as-transaction.32464/ ).

    • Elements list - when you click to sort by Ordering, sort should actually be by group and then ordering - and drag to resequence should be limited to the group the element is in. (PR#1944 submitted by Sophist)

    • Enhance dropdown / radiobutton and possibly other element types to allow user to select type of database column - so instead of forcing TEXT, you can also select VARCHAR or INT or DECIMAL like the "field" element. (See this commit for an example of such a change proposed for Calc in PR#1921.)

    • Lists/Forms lists - rename Element column to Elements and add a pill which shows count of and links to the List's / Form's Elements (like Groups list).

    • Add an 'or user field' option for View records in List / Access.

    • When creating a new list from an existing view or from an existing table in a pre-defined list of Joomla core and extensions tables, set Detailed / Advanced / Alter field types to "No" by default.

    • Speed-up loading of List / Form / Group / Element plugins in admin by switching from a two stage Ajax load (load plugin, then load plugin details) into a single load per plugin)

    • Convert Mootools functionality to Javascript HTML DOM if possible (Joomla 4 standard), else JQuery if possible, else leave it as Mootools.

    • Prevent User and DatabaseJoin elements from issuing extra SQL queries to populate the dropdown when the element is displayed readonly or not displayed at all. (PR#1950 submitted by Sophist)

    • Prevent User and DatabaseJoin elements from joining the lookup table when the label element is the same as the value element.

    • Avoid databaseJoin dropdown queries being repeated because the join alias stops it being cached.

    • Display unpublished JS (and validations) greyed out in the accordion to distinguish them from published ones. (PR#1948 submitted by Sophist)

    • Change Ctrl-D to duplicate selection in FabEditor (to work like Notepad++).

    • Enhance Lists / View Details to be a comprehensive documentation of list settings - including List, Form, Group and Element settings - and make it available as both HTML and PDF output.

    • Javascript for loops through array should all be of the form "for (var i in array)" rather than "for (var i - 0; i < array.length; i++)" to handle non-integer indexes and / or sparse arrays.

    • Implement the form field attribute showon (as defined here) for all Fabrik form XML files where elements are only valid based on the value of another element.

    • Implement bootstrap button group for Yes/No on FabrikModalRepeat form field type (which is bootstrap style except for the Yes/No radio buttons

    • Implement bootstrap button group for Yes/No on FacetedLinks form field type (which is bootstrap style except for the Yes/No radio buttons

    • Element / List view settings / Custom link in details view should (IMO) apply to whenever the element is r/o not just Details View.

    • Update validation plugins so that default tooltips and validation error messages are more descriptive of the validation rules (e.g. like the PR already submitted for islessthanorgreaterthan which gives intelligent messages about the values allowed).

    • Either enhance fabrikeditor (implementation of Ace editor) to convert JS / PHP code containing // comments (which cause issues when the code is concatenated into a single line for execution) by converting text of the form "// stuff (cr)" to "/* stuff */ (cr)" - or avoid concatenating lines before evaluation.

    • Review all Fabrik backend forms and add showon attributes to all fields where it makes sense to hide fields depending on other fields. (Requires PR#1959 to have been merged to display correctly. See Joomla Form field docs for definition of showon field attribute.)

    • Add a page specific help button pointing to the relevant wiki page to all back-end edit pages and plugin pages (like Element Details page). This is needed for Element Validations, Visualizations, and Crons. Add similar help buttons to other tabs like e.g. Element / Data / Prefilters etc. (As an example, PR#1965 has been submitted by Sophist for List editing.)

    • Ensure that all dropdowns in Fabrik back end use Chosen enhanced dropdown like Joomla.

    • Add code to every template / layout file so that when Fabrik debug is on and fabrikdebug=1 is appended to the URL, then the path of the template / layout file being used is included in an HTML comment. (Hugh's wish: http://fabrikar.com/forums/index.ph...r-order-button-apply.48295/page-2#post-251953 ).

    • Add "use strict"; to every Fabrik javascript file and fix any errors that arise from not having declared variables.

    • Implement Joomla's client-side validation wherever appropriate in Fabrik's back-end as per Joomla's Client-side form validation page.

    • Implement Joomla's server-side validation wherever appropriate in Fabrik's back-end as per Joomla's Server-side form validation page.

    • Take the basics of Phil Bauer's unfinished PR#1958 to stop tooltips extending off the left side of the page and make it work by default (without width options which cannot be specified as default)

    • Prevent validations running on elements for which the user does not have r/w Access Level (!canUse()). This should (IMO- Sophist) probably be done as a global switch with the default being Yes for backwards compatibility. As an alternative, it could be done by adding a standard Yes/No button group to the element validation to say whether validation should be run on these elements with the default being Yes for existing validations and No for new validations. Or these could be combined with a Global / Yes / No button group, with Global being the default. See Forum: Element-Validator(s) fire for a form even if the user have no edit permission for that element

    • Implement a global setting for number of parallel ajax calls and implement a parallel queuing system (or use Mootools Request.Queue) in front end to limit number of simultaneous ajax calls to the same host. See this forum thread for details why.

    • Add an option to repeat group settings to put each repeat group row into an accordion - showing a summary line for the accordion and only the fields of zero or one repeat group rows at any one time.

    • Add "lazyload" options to both modules and content plugins in order to reduce the initial load time for pages by deferring the heavyweight Fabrik server processing to an ajax call. See this forum post for details of how @PaulV888 achieved this for his web site.

    • Add description in accordion heading for List plugins (like form & element validation plugins already have - see http://fabrikar.com/forums/index.php?threads/suggest-better-fabrik-ux.48938/