Back to DraggableList class

Method draggable

public static void
draggable
(string $tableId = '', string $formId = '', string $sortDir = 'asc', string $saveOrderingUrl = '', mixed $redundant = null, bool $nestedList = false)
Method to load the Dragula script and make table sortable
Parameters
  • string $tableId DOM id of the table
  • string $formId DOM id of the form
  • string $sortDir Sort direction
  • string $saveOrderingUrl Save ordering url, ajax-load after an item dropped
  • string $redundant Not used
  • bool $nestedList Set whether the list is a nested list
Returns
  • void
Since
  • 4.0.0
Class: DraggableList
Project: Joomla

Method draggable - Source code

/**
 * Method to load the Dragula script and make table sortable
 *
 * @param   string   $tableId          DOM id of the table
 * @param   string   $formId           DOM id of the form
 * @param   string   $sortDir          Sort direction
 * @param   string   $saveOrderingUrl  Save ordering url, ajax-load after an item dropped
 * @param   string   $redundant        Not used
 * @param   boolean  $nestedList       Set whether the list is a nested list
 *
 * @return  void
 *
 * @since   4.0.0
 */
public static function draggable(string $tableId = '', string $formId = '', string $sortDir = 'asc', string $saveOrderingUrl = '', $redundant = null, bool $nestedList = false)
{
    // Only load once
    if (isset(static::$loaded[__METHOD__])) {
        return;
    }
    $doc = Factory::getDocument();
    // Please consider using data attributes instead of passing arguments here!
    if (!empty($tableId) && !empty($saveOrderingUrl) && !empty($formId) && !empty($sortDir)) {
        $doc->addScriptOptions('draggable-list', ['id' => '#' . $tableId . ' tbody', 'formId' => $formId, 'direction' => $sortDir, 'url' => $saveOrderingUrl . '&' . Session::getFormToken() . '=1', 'nested' => $nestedList]);
    }
    $doc->getWebAssetManager()->usePreset('dragula')->useScript('joomla.draggable');
    // Set static array
    static::$loaded[__METHOD__] = true;
}