53         ?array $a_file_labels = [],
    54         ?
string $a_label_header = 
"",
    55         ?array $a_commands = [],
    56         ?
bool $a_post_dir_path = 
false,
    57         ?
string $a_table_id = 
""    60         $this->
setId($a_table_id);
    61         $this->
ctrl = $DIC->ctrl();
    62         $this->
lng = $DIC->language();
    63         if ($a_cur_dir !== realpath($a_cur_dir)) {
    64             throw new \InvalidArgumentException(
'$a_cur_dir must be a absolute path');
    66         $this->
filesystem = LegacyPathHelper::deriveFilesystemFrom($a_cur_dir);
    67         $this->relative_cur_dir = LegacyPathHelper::createRelativePath($a_cur_dir);
    68         $this->cur_dir = $a_cur_dir;
    69         $this->cur_subdir = $a_cur_subdir;
    70         $this->label_enable = $a_label_enable;
    71         $this->label_header = $a_label_header;
    72         $this->file_labels = $a_file_labels;
    73         $this->post_dir_path = $a_post_dir_path;
    74         $this->filesystem_gui = $a_parent_obj;
    75         $this->ui_factory = $DIC->ui()->factory();
    76         $this->ui_renderer = $DIC->ui()->renderer();
    81         $this->has_multi = 
false;
    83         foreach ((array) $a_commands as $i => $command) {
    84             if (!($command[
"single"] ?? 
false)) {
    87                 $this->has_multi = 
true;
    89                 $this->row_commands[] = array(
    90                     "cmd" => 
"extCommand_" . $i,
    91                     "caption" => $command[
"name"],
    92                     "allow_dir" => $command[
"allow_dir"] ?? 
false,
    93                     "method" => $command[
"method"] ?? null,
   105             "tpl.directory_row.html",
   106             "Services/FileSystem"   113         if ($a_field == 
"size") {
   130         if ($this->
filesystem->has($this->relative_cur_dir)) {
   132             if ($this->cur_dir !== 
'') {
   143             foreach ($this->
filesystem->listContents($this->relative_cur_dir) as $i => $content) {
   144                 $basename = basename($content->getPath());
   145                 $entries[$basename] = [
   148                     'entry' => $basename,
   149                     'type' => $content->isDir() ? 
'dir' : 
'file',
   151                     'size' => $content->isFile() ? $this->
filesystem->getSize($content->getPath(), 1)->inBytes() : 0
   155             $entries = array(array(
"type" => 
"dir", 
"entry" => 
".."));
   159         foreach ($entries as 
$e) {
   160             if (($e[
"entry"] == 
".") || ($e[
"entry"] == 
".." && empty($this->cur_subdir))) {
   163             $cfile = (!empty($this->cur_subdir))
   164                 ? $this->cur_subdir . 
"/" . $e[
"entry"]
   167             if ($this->label_enable) {
   168                 $label = (isset($this->file_labels[$cfile]) && is_array($this->file_labels[$cfile]))
   169                     ? implode(
", ", $this->file_labels[$cfile])
   173             $pref = ($e[
"type"] == 
"dir")
   178                 "entry" => $e[
"entry"],
   179                 "type" => $e[
"type"],
   180                 "label" => $label ?? 
'',
   181                 "size" => $e[
"size"] ?? 
'',
   182                 "name" => $pref . $e[
"entry"]
   190         if ($this->has_multi) {
   196         $this->
addColumn($this->
lng->txt(
"cont_dir_file"), 
"name");
   199         if ($this->label_enable) {
   200             $this->
addColumn($this->label_header, 
"label");
   203         if (
sizeof($this->row_commands)) {
   210         return $entry[
'entry'] === 
'..';
   216     protected function fillRow(array $a_set): void
   218         $hash = $this->post_dir_path
   219             ? md5($a_set[
"file"])
   220             : md5($a_set[
"entry"]);
   222         if ($this->has_multi) {
   224                 $this->tpl->touchBlock(
'no_checkbox');
   226                 $this->tpl->setVariable(
"CHECKBOX_ID", $hash);
   231         if ($this->label_enable) {
   232             $this->tpl->setCurrentBlock(
"Label");
   233             $this->tpl->setVariable(
"TXT_LABEL", $a_set[
"label"]);
   234             $this->tpl->parseCurrentBlock();
   237         $this->
ctrl->setParameter($this->parent_obj, 
"cdir", $this->cur_subdir);
   239         if ($a_set[
"type"] == 
"dir") {
   240             $this->tpl->setCurrentBlock(
"FileLink");
   241             $this->
ctrl->setParameter($this->parent_obj, 
"newdir", $a_set[
"entry"]);
   242             $this->
ctrl->setParameter($this->parent_obj, 
"resetoffset", 1);
   243             $this->tpl->setVariable(
   245                 $this->
ctrl->getLinkTarget($this->parent_obj, 
"listFiles")
   247             $this->
ctrl->setParameter($this->parent_obj, 
"newdir", 
"");
   248             $this->tpl->setVariable(
"TXT_FILENAME", $a_set[
"entry"]);
   249             $this->tpl->parseCurrentBlock();
   251             $this->tpl->setVariable(
   256             $this->
ctrl->setParameter($this->parent_obj, 
"resetoffset", 
"");
   258             $this->tpl->setCurrentBlock(
"File");
   259             $this->tpl->setVariable(
"TXT_FILENAME2", $this->secure($a_set[
"entry"]));
   260             $this->tpl->parseCurrentBlock();
   263         if ($a_set[
"type"] != 
"dir") {
   268         if (count($this->row_commands) > 0 && !($a_set[
"type"] === 
"dir" && $a_set[
"entry"] === 
"..")) {
   271             foreach ($this->row_commands as $rcom) {
   272                 if ($rcom[
"allow_dir"] || $a_set[
"type"] !== 
"dir") {
   273                     $file_path = $this->cur_dir . $a_set[
'entry'];
   278                         $this->
ctrl->setParameter($this->parent_obj, 
"fhsh", $hash);
   279                         $url = $this->
ctrl->getLinkTarget($this->parent_obj, $rcom[
"cmd"]);
   280                         $this->
ctrl->setParameter($this->parent_obj, 
"fhsh", 
"");
   282                         $actions[] = $this->ui_factory->link()->standard($rcom[
"caption"], 
$url);
   287             $dropdown = $this->ui_factory->dropdown()->standard($actions);
   288             $this->tpl->setVariable(
"ACTIONS", $this->ui_renderer->render($dropdown));
 
ILIAS UI Renderer $ui_renderer
 
setFormAction(string $a_form_action, bool $a_multipart=false)
 
setEnableTitle(bool $a_enabletitle)
 
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
 
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory) 
 
ilFileSystemGUI $filesystem_gui
 
setDefaultOrderField(string $a_defaultorderfield)
 
ILIAS Filesystem Filesystem $filesystem
 
static formatSize(int $size, string $a_mode='short', ?ilLanguage $a_lng=null)
Returns the specified file size value in a human friendly form. 
 
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template. 
 
isDoubleDotDirectory(array $entry)
 
setDefaultOrderDirection(string $a_defaultorderdirection)
 
ILIAS UI Factory $ui_factory
 
fillRow(array $a_set)
Fill table row. 
 
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
 
numericOrdering(string $a_field)
 
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
 
File System Explorer GUI class. 
 
__construct(ilFileSystemGUI $a_parent_obj, string $a_parent_cmd, string $a_cur_dir, string $a_cur_subdir, bool $a_label_enable, ?array $a_file_labels=[], ?string $a_label_header="", ?array $a_commands=[], ?bool $a_post_dir_path=false, ?string $a_table_id="")
Constructor. 
 
addMultiCommand(string $a_cmd, string $a_text)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
determineOffsetAndOrder(bool $a_omit_offset=false)
 
setEnableHeader(bool $a_enableheader)