49 protected string $cur_subdir,
50 protected bool $label_enable,
51 protected array $file_labels = [],
52 protected string $label_header =
"",
53 ?array $a_commands = [],
54 protected ?
bool $post_dir_path =
false,
55 ?
string $a_table_id =
"" 58 $this->
setId($a_table_id);
59 $this->
ctrl = $DIC->ctrl();
60 $this->
lng = $DIC->language();
61 if ($a_cur_dir !== realpath($a_cur_dir)) {
62 throw new \InvalidArgumentException(
'$a_cur_dir must be a absolute path');
64 $this->
filesystem = LegacyPathHelper::deriveFilesystemFrom($a_cur_dir);
65 $this->relative_cur_dir = LegacyPathHelper::createRelativePath($a_cur_dir);
66 $this->cur_dir = $a_cur_dir;
67 $this->ui_factory = $DIC->ui()->factory();
68 $this->ui_renderer = $DIC->ui()->renderer();
71 $this->
setTitle($this->
lng->txt(
"cont_files") .
" " . $this->cur_subdir);
73 $this->has_multi =
false;
75 foreach ((array) $a_commands as $i => $command) {
76 if (!($command[
"single"] ??
false)) {
79 $this->has_multi =
true;
81 $this->row_commands[] = [
82 "cmd" =>
"extCommand_" . $i,
83 "caption" => $command[
"name"],
84 "allow_dir" => $command[
"allow_dir"] ??
false,
85 "method" => $command[
"method"] ??
null,
97 "tpl.directory_row.html",
98 "components/ILIAS/Filesystem" 106 return $a_field ===
"size";
123 if ($this->cur_dir !==
'') {
135 $basename = basename($content->getPath());
136 $entries[$basename] = [
139 'entry' => $basename,
140 'type' => $content->isDir() ?
'dir' :
'file',
142 'size' => $content->isFile() ? $this->
filesystem->getSize($content->getPath(), 1)->inBytes() : 0
146 $entries = [[
"type" =>
"dir",
"entry" =>
".."]];
150 foreach ($entries as
$e) {
151 if ($e[
"entry"] ===
".") {
154 if ($e[
"entry"] ===
".." && empty($this->cur_subdir)) {
157 $cfile = (empty($this->cur_subdir))
159 : $this->cur_subdir .
"/" . $e[
"entry"];
161 if ($this->label_enable) {
162 $label = (isset($this->file_labels[$cfile]) && is_array($this->file_labels[$cfile]))
163 ? implode(
", ", $this->file_labels[$cfile])
167 $pref = ($e[
"type"] ===
"dir")
172 "entry" => $e[
"entry"],
173 "type" => $e[
"type"],
174 "label" => $label ??
'',
175 "size" => $e[
"size"] ??
'',
176 "name" => $pref . $e[
"entry"]
184 if ($this->has_multi) {
190 $this->
addColumn($this->
lng->txt(
"cont_dir_file"),
"name");
193 if ($this->label_enable) {
194 $this->
addColumn($this->label_header,
"label");
197 if ($this->row_commands !== []) {
204 return $entry[
'entry'] ===
'..';
211 protected function fillRow(array $a_set): void
213 $hash = $this->post_dir_path
214 ? md5((
string) $a_set[
"file"])
215 : md5((
string) $a_set[
"entry"]);
217 if ($this->has_multi) {
219 $this->tpl->touchBlock(
'no_checkbox');
221 $this->tpl->setVariable(
"CHECKBOX_ID", $hash);
226 if ($this->label_enable) {
227 $this->tpl->setCurrentBlock(
"Label");
228 $this->tpl->setVariable(
"TXT_LABEL", $a_set[
"label"]);
229 $this->tpl->parseCurrentBlock();
232 $this->
ctrl->setParameter($this->parent_obj,
"cdir", $this->cur_subdir);
234 if ($a_set[
"type"] ==
"dir") {
235 $this->tpl->setCurrentBlock(
"FileLink");
236 $this->
ctrl->setParameter($this->parent_obj,
"newdir", $a_set[
"entry"]);
237 $this->
ctrl->setParameter($this->parent_obj,
"resetoffset", 1);
238 $this->tpl->setVariable(
240 $this->
ctrl->getLinkTarget($this->parent_obj,
"listFiles")
242 $this->
ctrl->setParameter($this->parent_obj,
"newdir",
"");
243 $this->tpl->setVariable(
"TXT_FILENAME", $a_set[
"entry"]);
244 $this->tpl->parseCurrentBlock();
246 $this->tpl->setVariable(
251 $this->
ctrl->setParameter($this->parent_obj,
"resetoffset",
"");
253 $this->tpl->setCurrentBlock(
"File");
254 $this->tpl->setVariable(
"TXT_FILENAME2", $this->secure($a_set[
"entry"]));
255 $this->tpl->parseCurrentBlock();
258 if ($a_set[
"type"] !=
"dir") {
263 if ($this->row_commands !== [] && !($a_set[
"type"] ===
"dir" && $a_set[
"entry"] ===
"..")) {
266 foreach ($this->row_commands as $rcom) {
267 if ($rcom[
"allow_dir"] || $a_set[
"type"] !==
"dir") {
268 $file_path = $this->cur_dir . $a_set[
'entry'];
273 $this->
ctrl->setParameter($this->parent_obj,
"fhsh", $hash);
274 $url = $this->
ctrl->getLinkTarget($this->parent_obj, $rcom[
"cmd"]);
275 $this->
ctrl->setParameter($this->parent_obj,
"fhsh",
"");
277 $actions[] = $this->ui_factory->link()->standard($rcom[
"caption"],
$url);
282 $dropdown = $this->ui_factory->dropdown()->standard($actions);
283 $this->tpl->setVariable(
"ACTIONS", $this->ui_renderer->render($dropdown));
setFormAction(string $a_form_action, bool $a_multipart=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setEnableTitle(bool $a_enabletitle)
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
setDefaultOrderField(string $a_defaultorderfield)
This is how the factory for UI elements looks.
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)
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
setDefaultOrderDirection(string $a_defaultorderdirection)
fillRow(array $a_set)
Fill table row.
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
__construct(Container $dic, ilPlugin $plugin)
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.
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)
__construct(protected ilFileSystemGUI $filesystem_gui, string $a_parent_cmd, string $a_cur_dir, protected string $cur_subdir, protected bool $label_enable, protected array $file_labels=[], protected string $label_header="", ?array $a_commands=[], protected ?bool $post_dir_path=false, ?string $a_table_id="")
Constructor.