Loading...
 
Skip to main content

History: Relations Tracker Field

Source of version: 20 (current)

Copy to clipboard
            ! Relations Tracker Field

New in ((Tiki8))

Allows to create arbitrary relations between the trackers and other objects in the system. See also ((Items List and Item Link Tracker Fields))

__Relation__ Relation qualifier. Must be a three-part qualifier containing letters and separated by dots.

This can be anything (just a reference)

__Filter__  URL-encoded list of filters to be applied on object selection. (see the list below)

ex.: tracker_id=5&object_type=trackeritem 

__tracker_id=5__ is to filter in tracker #5
__object_type=trackeritem__ is to only get tracker items (and not tracker fields)

Unified Index is required for relations fields to work.
See ((Search and List from Unified Index))


__Read-only__ Only display the incoming relations instead of manipulating them.

__Include Invert__ Include invert relations in the list

!!Notes
When the result show several related items they will be ordered by itemId asc.

!! Example

!!! bug tracker in dev.t.o

Tracker field definition (tiki-admin_tracker_fields.php?trackerId=N):

^::{img fileId="680" thumb="y" width="500" rel="box[g]"}::^



The previous example produces this field when adding a new tracker item (tiki-view_tracker.php?trackerId=N):


^::{img fileId="679" thumb="y" width="500" rel="box[g]"}::^

Note: The pagination setting will change the way the field is displayed. If the number of possible relations is higher than the "Object selector threshold" parameter that can be found at tiki-admin.php?page=look#contentadmin_look-3. If the field displays more that the "Object selector threshold" value then it will change for a Search input field.

!!! Filtering valid parameters
||parameter|Usage|notes
tracker_id|tracker_id=11|
object_type|object_type=trackeritem
tracker_status|tracker_status=o| the parameter accept one argument (=op doesn’t work)
...|...|...||

Sample: tracker_id=11&object_type=trackeritem&tracker_status=o
! Many to many
If you want a many to many relation, create a field in each tracker, with the following params
* Relation: put one as normal, and for the other, add a fourth qualifier __.invert__  (ex.: institution.published.work and institution.published.work.invert)
* Filter: set tracker_id=XYZ where XYZ is the ID of the other tracker. Ex: In tracker 19, put tracker_id=20 and in tracker 20, put tracker_id=19
* Read Only: Both set to no
* Include Invert: Both set to no (the inversion will come from the setting above)
* Force Refresh: should be set to on if you are using ((Mathematical Calculation Tracker Field)) which could impact.

!! Use case: Projects and Subprojects
One use case for this type of setup is a projects tracker, in which you define a parent - child relationship among items: which are parent projects of which child projects, while all data reside in the same project tracker.

Even if this setup would probably imply a one to many relationship, the setup is the equivalent as the one indicated in the section above currently named "Many to many", but using the same tracker id in both fields of type "relation" in that same tracker.


Related:
* ((Object Attributes and Relations))
* ((PluginAttributes))
* ((PluginRelations))
* ((PluginAddRelation))