Skip to content
Snippets Groups Projects
_resource_tr.php 7.05 KiB
Newer Older
<?
/**
 * This is a general table row template for resources.
 *
 * Template variables:
 *
 * $resource: A Resource object.
 * $booking_plan_link_on_name: Boolean: Whether the link to the booking plan
 *     shall be wrapped around the name (true) or not (false). In the latter
 *     case, the link will point to the info dialog of the resource instead.
 * $show_global_admin_actions: Boolean: Whether to display actions which are
 *     designed for users with global 'admin' resource permissions.
 *     Defaults to false (do not show actions).
 * $show_admin_actions: Boolean: Whether to display actions which are
 *     designed for users with 'admin' resource permissions.
 *     Defaults to false (do not show actions).
 * $show_tutor_actions: Boolean: Whether to display actions which are
 *     designed for users with 'tutor' resource permissions.
 *     Defaults to false (do not show actions).
 * $show_autor_actions: Boolean: Whether to display actions which are
 *     designed for users with 'autor' resource permissions.
 *     Defaults to false (do not show actions).
 * $show_user_actions: Boolean: Whether to display actions which are
 *     designed for users with 'user' resource permissions.
 *     Defaults to false (do not show actions).
 * $user_has_booking_rights: Boolean: Whether the user for which this template
 *     is rendered has booking rights on the resource (true) or not (false).
 * $checkbox_data: Array: Data for an optional checkbox at the start
 *     of the row. If this is not set no checkbox is shown.
 *     The checkbox will get the resource-ID as value.
 *     Special array indexes:
 *     'name' => The name of the checkbox. This index must be set.
 *     'checked' => Boolean: True, if the checkbox shall be set (checked).
 *         false if it shall be unset (unchecked). Defaults to false.
 *     All other indexes will be added as HTML attributes.
 * $show_picture: Boolean: Whether to display the resource picture or not.
 *     Defaults to false (do not show picture).
 * $show_full_name: Boolean: Whether to display the full name
 *     (with resource type) or just the name field from the database.
 *     Defaults to false (do not show full name).
 * $clipboard_range_type: String: The range type for the drag and drop
 *     functionality of the clipboard system.
 *     Defaults to 'Resource'.
 * $additional_properties: Array: Additional properties
 *     that shall be displayed in extra columns.
 * $additional_columns: Array: Additional columns for the table.
 *     This array contains HTML code for each column (without the td element).
 * $additional_actions: Array: Additional actions for the action menu.
 *     This array contains associative arrays where each of those arrays
 *     has the following structure and indexes:
 *
 *     $position_index => [
 *         0 => Link
 *         1 => Label
 *         2 => Icon
 *         3 => Link attributes
 *     ]
 *
 *     $position_index is a string consisting of four letters with the
 *     first letter being either '0' or another letter. Depending on the
 *     value of $position_index the additional actions are placed
 *     before or after a standard action.
 *     The indexes for the standard actions are:
 *     - '0010': Show details
 *     - '0020': Show booking plan
 *     - '0030': Show semester plan
 *     - '0040': Manage permissions
 *     - '0050': Manage temporary permissions
 *     - '0060': Edit resource
 *     - '0070': Book resource
 *     - '0080': Mass deletion of bookings
 *     - '0090': Export bookings
 *     - '0100': Show files
 *     - '0110': Delete resource
 */
?>
<tr>
    <? if ($checkbox_data && $checkbox_data['name']): ?>
        <?
        if ($checkbox_data['checked']) {
            $checkbox_data['checked'] = 'checked';
        }
        ?>
        <td>
            <input type="checkbox" class="select-resource"
                   value="<?= htmlReady($resource->id) ?>"
                <?= arrayToHtmlAttributes($checkbox_data) ?>>
        </td>
    <? endif ?>
    <td>
        <a href="<?= (
        $booking_plan_link_on_name
            ? $resource->getActionLink('booking_plan')
            : $resource->getActionLink('show')
        ) ?>"
            <?= $user_has_booking_rights ? '' : 'data-dialog' ?>
           data-id="<?= htmlReady($resource->id) ?>"
           data-range_type="<?= $clipboard_range_type
               ? htmlReady($clipboard_range_type)
               : 'Resource' ?>"
           data-name="<?= htmlReady($resource->name) ?>"
           <?= $clipboard_range_type ? 'class="clipboard-draggable-item"' : '' ?>>
            <? if ($show_picture): ?>
                <? $picture_url = $resource->getPictureUrl(); ?>
                <? if ($picture_url): ?>
                    <img class="small-resource-picture"
                         src="<?= htmlReady($picture_url) ?>">
                <? else: ?>
                    <?= $resource->getIcon('clickable') ?>
                <? endif ?>
                <span class="text-bottom">
                    <?= htmlReady(
                        $show_full_name
                            ? $resource->getFullName()
                            : $resource->name
                    ) ?>
                </span>
            <? else: ?>
                <?= htmlReady($resource->name) ?>
                <?= Icon::create('link-intern')->asImg(['class' => 'text-bottom']) ?>
            <? endif ?>
        </a>
        <? if ($resource_tooltip): ?>
            <span class="text-bottom">
                <?= tooltipIcon($resource_tooltip) ?>
            </span>
        <? endif ?>
    </td>
    <? if ($additional_properties): ?>
        <? foreach ($additional_properties as $additional_property): ?>
            <td>
                <? $value = null;
                $property = $resource->getPropertyObject($additional_property);
                if ($property instanceof ResourceProperty) {
                    $value = $property->__toString();
                } elseif($resource->isField($additional_property)) {
                    //There is a SORM field with the name $additional_property.
                    $value = $resource->__get($additional_property);
                }
                ?>
                <?= htmlReady($value) ?>
            </td>
        <? endforeach ?>
    <? endif ?>
    <? if ($additional_columns): ?>
        <? foreach ($additional_columns as $column): ?>
            <td>
                <?= htmlReady($column) ?>
            </td>
        <? endforeach ?>
    <? endif ?>
    <? if ($show_user_actions || $show_autor_actions
        || $show_tutor_actions || $show_admin_actions
        || $show_global_admin_actions || $additional_actions): ?>
        <td class="actions">
            <?= $this->render_partial('resources/_common/_action_menu.php',
                compact(
                    'show_user_actions',
                    'show_autor_actions',
                    'show_autor_actions',
                    'show_admin_actions',
                    'show_global_admin_actions',
                    'additional_actions',
                    'resource'
                )
            );?>