Currently the only way to request data from the APIs is to send the appropriate data via the "request" parameter. While this gives a lot of control it's also quite cumbersome to create a request. To make this simpler the requests should also support "direct parameters".
Examples
https://host.name/api/json/?m=categories&a=view&e=all&title=textView all categories that match the title "text".If the "m" parameter is set it should set up a Data object and setRequestValues, i....
The amount of control fields (that are always present in modules) keeps growing which limits the field names available. Introducing the underscore in the _stp field was an attempt to make them unique enough to not collide with "normal" field names people may want.
The problem there however is that it currently can't be used in the templates format class as that uses underscores to indicate marker types (e.g. _if). This can of course be changed but that would mean all templates requir...
The CMS should support "wizard" mode (yes the good ol' windows wizards...). This can be done using the "groups" to only display the fields in the relevant group. By clicking next, it goes to the next page (i.e. group). Once all required
fields are filled or it reaches the last group it'll shows the "submit" button.
Currently if 2 users edit the same information the last store will effectively overwrite the other one. At the very least the users should be made aware of this. A simple solution seems to be to create module that keeps track for each module which entry is added, edited and deleted in the last X minutes. This information can in turn be used to indicate to other users certain information is volatile. Note that JAS16MAR002 may also rely on this information.
Currently JAS doesn't deploy any protection against overloading of the system. It seems wise to add protection against brute force login attacks and mass adding of information. As JAS16MAR001 will probably already create a "temporary log" of what's going on this may be used for overload projection. Alternatively JAS16JAN006 may also provide a way to limit submissions.
Editing the workflows is rather difficult, to make it easier the module itself should give more guidance (i.e. limit what you can fill in or rather visualize the current flow somehow. A better approach would probably be to add a workflow manager (optionally using the graphics plugin) to visualize and edit workflows.
Currently session management is handled in the default PHP fashion and thus resides on the webserver. To make it more flexible we'll need to support the following alternatives:Database (aka module based)
Memcache / Redis
File based
Since sessions (both _session and _config) are quite fundamental to the functioning of JAS it seems wise to have as little dependencies on JAS to avoid circular dependencies. That said, replicating the Cache class seems futile as well...
Configuration...
Certain area's of JAS may need mutex to ensure correct functioning. Caching being one example (although overwrites don't matter too much) however there may be more areas where this applies...
The JAS backend is starting to have a nice collection of HTML layout functions that should probably be available generically:
function menuItem($menu, $content, $action=false, $title=false, $icon=false, $properties=false)
function menu($menu, $class=false)
function tableRow($table, $header=false, $properties=false)
function tableColumn($table, $content, $action=false, $title=false, $properties=false)
function table($table, $class=false)
function cms(&$d, $url=false, $confi...
The array field type forces in/not in as the operator, while supported by MySQL, it's unavailable in the other storage objects. For the Session/XML storage objects it should be pretty straightforward as _filterDataset provides a nice hook. The API storage object will require some different logic for this.
Once this is available for all storage objects the internals of JAS (e.g. references data gathering) can use the in/not in operator.