Sweden Democrats' Meeting Tool
 All Classes Files Functions Variables Pages
Plugin: Speakers
    @section sd_meeting_tool_speakers_description           Description

    Speakers extends agenda items with speakers. The speakers can be queued and moved up and down, speaking time can be set
    and the current speaker and speaker list can be displayed to visitors using shortcodes.

    Speakers can reply to other speakers in the form of replies. Replies can be nested virtually without limit.

    @section sd_meeting_tool_speakers_requirements          Requirements

    - @ref index
    - @ref SD_Meeting_Tool_Agendas
    - @ref SD_Meeting_Tool_Participants

    @section sd_meeting_tool_speakers_installation          Installation

    Enable the plugin in Wordpress.

    The plugin will then create the following database tables:

    - @b prefix_sd_mt_speakers
            Speakers that belong to speaker lists.
    - @b prefix_sd_mt_speaker_displays
            Display templates for speaker shortcodes.
    - @b prefix_sd_mt_speaker_lists
            Serialized speaker lists.

    @subsection sd_meeting_tool_speakers_installation_css   CSS

    Shortcodes can display the current speaker list and speaker to visitors.
/**
        We're not interested in who has spoken, nor who is speaking, since another
        shortcode shows who is speaking somewhere else.
\*\*\/
.current_speaker_list li.has_spoken,
.current_speaker_list li.speaking
{
    display: none;
}
/**
        When replying, the parents should not be hidden from view.
        Therefore, javascript inserts the child_is_speaking class.
\*\*\/
.current_speaker_list li.child_is_speaking,
.current_speaker_list li.child_is_speaking li.speaking
{
        display: list-item;
}
/**
        Whoever is speaking deserves a nice background color.
\*\*\/
.current_speaker_list div.speaking
{
    background-color: #cceaf4;
}
    @section sd_meeting_tool_speakers_usage                         Usage

    @par            Configuring the speaker list

    Each speaker list is bound to an agenda, so first create an agenda.

    The speaker list needs a list of possible speakers and an optional display format and list sort for the list of possible speakers.

    Below the possible speakers list are some default times. A shortcode to display the speaker list is available at the bottom. The
    shortcode automatically updates itself. See the above CSS selectors for styling of the list. 

    @par            Editing the speaker list

    The administration interface presents the admin with an empty speaker list on the left, a list of possible speakers on the right and
    an agenda item selector at the bottom.

    Select the agenda item that needs speakers. To add a speaker, double-click on a participant. The participant will be added to the left side.

    Clicking on the participants box will expand it and allow the administrator to adjust the speaker time and start the timer. The timer must be
    stopped before another speaker is allowed to begin speaking.

    Speakers can be dragged up and down but only if they haven't already spoken. After a speaker has spoken the speaker's box will contain
    data about when the speaker started speaking, stopped speaking, how long the speaker was allowed to speak and how long the speaker actually
    spoke.

    To create a reply, open the box of a speaker and then double-click on a participant. The participant's box will be added slightly indented
    relative to the parent speaker. This process can be repeated almost indefinitely.

    @par            Displays

    Displays control how the current speaker shortcode is displayed to the visitor. Similar to how the display formats are configured, each display
    replaces specific, hashed keywords. Valid keywords are:

    - @b \#participant\# The participant using the display format specified in the shortcode.
    - @b \#time_left\#      A countdown timer of how much time the speaker has left.

    After a display is created a shortcode for the display can be generated. Each shortcode specifies which display format to use and
    whether to update the current speaker using AJAX.

    @author         Edward Plainview        edward.plainview@sverigedemokraterna.se