Feature Wiki

Information about planned and released features

Tabs

Plugin Slot for Appointements in Main Column Grid Calendar

1 Initial Problem

The current presentation of an appointement in the Main Column Grid Calendar and the Main Column List Calendar contains the same information in the same layout with the same user interaction on all ILIAS installation:

The blue "Jour Fixe" block and the green blocks labeled "2. Advent" are appointements in the week view in ILIAS 5.2.

This view however might offer new ways for quite elaborate new workflows connected with the calendar (e.g. show with a glyph if a podcast has been uploaded for the session, do not show appointement of sessions of with setting XY  etc.). Some of these workflow serve very special needs that should not be built into the core of ILIAS.

2 Conceptual Summary

We propose to implement a plugin slot with which those appointment blocks can be adapted for custom needs. All appointements types listed in Plugin Slot for Detailed Appointement View for all different tabs (Month, Week, Day and List) should be custimizable by this plugin slot.

With this plugin slot, one could register for specific appointement types along with all the necessary information needed to generate custom presentations. The following information is needed:

  • Type of the tab (Month, Week, Day and List)
  • ID of appointement (MUST)
  • Start/End Date of Appointement (MUST, required for reccurring appointments, which do not have an unique ID).
  • Title of Appointement (MUST)
  • Reference to default presentation to be changed (to add content to the default content or to change it completely)
  • Ref-ID to Parent-Object if available (MUST)
Further, this plugin slot must offer the option to ommit the rendering of the Appointement completely.

3 User Interface Modifications

3.1 List of Affected Views

None, option to modify the Month, Week, Day and List tab in the Main Calendar View by Plugin Slot.

3.2 User Interface Details

3.3 New User Interface Concepts

None

4 Technical Information

No dependencies on other components.

5 Contact

  • Author of the Request: Amstutz, Timon [amstutz]
  • Maintainer: {Please add your name before applying for an initial workshop or a Jour Fixe meeting.}
  • Implementation of the feature is done by: {The maintainer must add the name of the implementing developer.}

6 Funding

If you are interest in funding this feature, please add your name and institution to this list.

  • ...

7 Discussion

Kunkel, Matthias [mkunkel], Dec 15, 2016: How we will test this plugin slot in the future? I am afraid we need a kind of test plugin (like we now have for the repo slot). Or would unit tests solve this problem?

Amstutz, Timon [amstutz], Dec 16, 2016: Thank you for your feedback. I agree with you. Unit Tests could partially solve the problem but not completely. I would recommend to:

  • Require a "Default" plugin which we install on testXY with the sole purpose of testing. This plugin should be very slim, so we really only test the slot and not plugin functionality.
  • Require Unit-Tests for this slot as part of the request. We should discuss this directly during the JF.

JourFixe, ILIAS [jourfixe], Dec 19, 2016: We highly appreciate this suggestion and schedule it for 5.3 if a slim test plugin will be delivered to test the plugin functionality.

8 Implementation

Test Plugin available: https://github.com/ILIAS-eLearning/TestCalendarCustomGrid

    Implementation Notes:
        
        The grid views and the events have different template files to allow the plugins change completely the content without affect the main view.
        The plugins get the appointment object to work with.

        Before rendering the default "Day", "Week" or "Month" view, ILIAS calls the plugin methods following this order:
            - editShyButtonTitle()-> Changes the Shy button text/html
            - addGlyph() -> Add an icon before the title.
            - addExtraContent() -> Add content at the end of the current content but inside the same DIV. All event elements are inside the same DIV.
            - replaceContent() -> Gets the complete HTML from an event and it can remove, add or replace the complete HTML content and the CSS of the container DIV.

        The Agenda has only one plugin method called "editAgendaItem" which gets as parameter one UI Item object and returns another one with the changes.

Test Cases

Test cases completed at 23.08.2017 by Seiler, Yvonne [yvseiler]

  • C18715 : Test-Plugin installieren
  • C18717 : Termine mit zusätzlichen Angaben anzeigen

Approval

Approved at 23. August 2017 by Amstutz, Timon [amstutz].

Last edited: 20. Dec 2017, 10:32, Undisclosed