19 declare(strict_types=1);
21 require_once(__DIR__ .
"/../../../../../../../vendor/composer/vendor/autoload.php");
22 require_once(__DIR__ .
"/../../../Base.php");
23 require_once(__DIR__ .
"/InputTest.php");
24 require_once(__DIR__ .
"/CommonFieldRendering.php");
70 $html = str_replace(
" />",
"/>", $html);
71 return parent::brutallyTrimHTML($html);
84 public function getFileIdentifierParameterName():
string 89 public function getUploadURL():
string 94 public function getFileRemovalURL():
string 102 public function getExistingFileInfoURL():
string 110 public function getInfoForExistingFiles(array $file_ids): array
115 public function getInfoResult(
string $identifier): ?
FileInfoResult 117 if (
null !== $this->file && $identifier === $this->file->getFileIdentifier()) {
124 public function supportsChunkedUploads():
bool 134 $f = $this->getFieldFactory();
136 $text =
$f->file($this->getUploadHandler(),
"label",
"byline");
138 $this->assertInstanceOf(\
ILIAS\
UI\
Component\Input\Container\Form\FormInput::class, $text);
139 $this->assertInstanceOf(Field\File::class, $text);
145 $f = $this->getFieldFactory();
148 $file_input =
$f->file($this->getUploadHandler(), $label, $byline)->withNameFrom($this->name_source);
150 $expected = $this->getFormWrappedHtml(
154 <div class="ui-input-file"> 155 <div class="ui-input-file-input-list"> 157 <div class="ui-input-file-input"> 158 <div class="ui-input-file-info"><span data-action="expand"></span><span 159 data-action="collapse"></span><span data-dz-name></span><span data-dz-size></span><span 160 data-action="remove"><a tabindex="0" class="glyph" href="#" aria-label="close"><span 161 class="glyphicon glyphicon-remove" aria-hidden="true"></span></a></span><span 162 class="ui-input-file-input-error-msg" data-dz-error-msg></span></div> 163 <div class="ui-input-file-metadata" style="display: none;"><input id="id_1" type="hidden" 164 name="name_0[input_0][]" value="" /></div> 165 <div class="ui-input-file-input-progress-container"> 166 <div class="ui-input-file-input-progress-indicator"></div> 171 <div class="ui-input-file-input-dropzone"> 172 <button class="btn btn-link" data-action="#" id="id_2">select_files_from_computer</button> 173 <span class="ui-input-file-input-error-msg" data-dz-error-msg></span> 175 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div> 182 $this->assertEquals($expected, $this->render($file_input));
187 $f = $this->getFieldFactory();
188 $file_input =
$f->file($this->getUploadHandler(),
'label',
null)
189 ->withNameFrom($this->name_source);
190 $this->testWithError($file_input);
191 $this->testWithNoByline($file_input);
192 $this->testWithRequired($file_input);
193 $this->testWithDisabled($file_input);
194 $this->testWithAdditionalOnloadCodeRendersId($file_input);
199 $test_file_id =
"test_file_id_1";
200 $test_file_name =
"test file name 1";
202 $test_file_info = $this->createMock(FileInfoResult::class);
203 $test_file_info->method(
'getFileIdentifier')->willReturn(
"test_file_id_1");
204 $test_file_info->method(
'getName')->willReturn(
"test file name 1");
205 $test_file_info->method(
'getSize')->willReturn(1001);
207 $file_input = $this->getFieldFactory()->file(
208 $this->getUploadHandler($test_file_info),
212 ])->withNameFrom($this->name_source);
214 $expected = $this->getFormWrappedHtml(
218 <div class="ui-input-file"> 219 <div class="ui-input-file-input-list"> 220 <div class="ui-input-file-input"> 221 <div class="ui-input-file-info"> 222 <span data-action="expand"></span> 223 <span data-action="collapse"></span> 224 <span data-dz-name>test file name 1</span> 225 <span data-dz-size>1 KB</span> 226 <span data-action="remove"> 227 <a tabindex="0" class="glyph" href="#" aria-label="close"> 228 <span class="glyphicon glyphicon-remove" aria-hidden="true"></span> 231 <span class="ui-input-file-input-error-msg" data-dz-error-msg></span> 233 <div class="ui-input-file-metadata" style="display: none;"> 234 <input id="id_1" type="hidden" name="name_0[input_0][]" value="test_file_id_1"/> 236 <div class="ui-input-file-input-progress-container"> 237 <div class="ui-input-file-input-progress-indicator"></div> 241 <div class="ui-input-file-input"> 242 <div class="ui-input-file-info"><span data-action="expand"></span><span 243 data-action="collapse"></span><span data-dz-name></span><span data-dz-size></span><span 244 data-action="remove"><a tabindex="0" class="glyph" href="#" aria-label="close"><span 245 class="glyphicon glyphicon-remove" aria-hidden="true"></span></a></span><span 246 class="ui-input-file-input-error-msg" data-dz-error-msg></span></div> 247 <div class="ui-input-file-metadata" style="display: none;"><input id="id_2" type="hidden" 248 name="name_0[input_0][]" value="" /></div> 249 <div class="ui-input-file-input-progress-container"> 250 <div class="ui-input-file-input-progress-indicator"></div> 255 <div class="ui-input-file-input-dropzone"> 256 <button class="btn btn-link" data-action="#" id="id_3">select_files_from_computer</button> 257 <span class="ui-input-file-input-error-msg" data-dz-error-msg></span> 259 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div> 266 $this->assertEquals($expected, $this->render($file_input));
272 $factory = $this->getFieldFactory();
273 $label =
'file_input';
274 $metadata_input = $factory->text(
"text_input");
275 $file_input = $factory->file(
276 ($u = $this->getUploadHandler()),
285 ])->withNameFrom($this->name_source);
287 $expected = $this->getFormWrappedHtml(
291 <div class="ui-input-file"> 292 <div class="ui-input-file-input-list"> 293 <div class="ui-input-file-input"> 294 <div class="ui-input-file-info"><span data-action="expand"><a tabindex="0" class="glyph" href="#" 295 aria-label="expand_content"><span class="glyphicon glyphicon-triangle-right" 296 aria-hidden="true"></span></a></span><span data-action="collapse"><a tabindex="0" 297 class="glyph" href="#" aria-label="collapse_content"><span 298 class="glyphicon glyphicon-triangle-bottom" 299 aria-hidden="true"></span></a></span><span data-dz-name></span><span 300 data-dz-size></span><span data-action="remove"><a tabindex="0" class="glyph" href="#" 301 aria-label="close"><span class="glyphicon glyphicon-remove" 302 aria-hidden="true"></span></a></span><span class="ui-input-file-input-error-msg" 303 data-dz-error-msg></span></div> 304 <div class="ui-input-file-metadata" style="display: none;"><input id="id_1" type="hidden" 305 name="name_0[input_1][]" value="file_id" /> 306 <fieldset class="c-input" data-il-ui-component="text-field-input" 307 data-il-ui-input-name="name_0[input_2][]"><label for="id_2">text_input</label> 308 <div class="c-input__field"><input id="id_2" type="text" name="name_0[input_2][]" 309 class="c-field-text" /></div> 312 <div class="ui-input-file-input-progress-container"> 313 <div class="ui-input-file-input-progress-indicator"></div> 316 <div class="ui-input-file-input"> 317 <div class="ui-input-file-info"><span data-action="expand"><a tabindex="0" class="glyph" 318 href="#" aria-label="expand_content"><span 319 class="glyphicon glyphicon-triangle-right" 320 aria-hidden="true"></span></a></span><span data-action="collapse"><a 321 tabindex="0" class="glyph" href="#" aria-label="collapse_content"><span 322 class="glyphicon glyphicon-triangle-bottom" 323 aria-hidden="true"></span></a></span><span data-dz-name></span><span 324 data-dz-size></span><span data-action="remove"><a tabindex="0" class="glyph" href="#" 325 aria-label="close"><span class="glyphicon glyphicon-remove" 326 aria-hidden="true"></span></a></span><span class="ui-input-file-input-error-msg" 327 data-dz-error-msg></span></div> 328 <div class="ui-input-file-metadata" style="display: none;"><input id="id_3" type="hidden" 329 name="name_0[input_1][]" value="" /> 330 <fieldset class="c-input" data-il-ui-component="text-field-input" 331 data-il-ui-input-name="name_0[input_2][]"><label for="id_4">text_input</label> 332 <div class="c-input__field"><input id="id_4" type="text" name="name_0[input_2][]" 333 class="c-field-text" /></div> 336 <div class="ui-input-file-input-progress-container"> 337 <div class="ui-input-file-input-progress-indicator"></div> 342 <div class="ui-input-file-input-dropzone"><button class="btn btn-link" data-action="#" 343 id="id_5">select_files_from_computer</button><span class="ui-input-file-input-error-msg" 344 data-dz-error-msg></span></div> 345 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div> 352 $this->assertEquals($expected, $this->render($file_input));
358 $test_file_id =
"test_file_id_1";
359 $test_file_name =
"test file name 1";
361 $test_file_info = $this->createMock(FileInfoResult::class);
362 $test_file_info->method(
'getFileIdentifier')->willReturn(
"test_file_id_1");
363 $test_file_info->method(
'getName')->willReturn(
"test file name 1");
364 $test_file_info->method(
'getSize')->willReturn(1000 * 1000 + 1);
366 $factory = $this->getFieldFactory();
367 $label =
'file_input';
368 $metadata_input = $factory->text(
"text_input");
369 $file_input = $factory->file(
370 $u = $this->getUploadHandler($test_file_info),
379 ])->withNameFrom($this->name_source);
382 $expected = $this->getFormWrappedHtml(
386 <div class="ui-input-file"> 387 <div class="ui-input-file-input-list"> 388 <div class="ui-input-file-input"> 389 <div class="ui-input-file-info"><span data-action="expand"><a tabindex="0" class="glyph" href="#" 390 aria-label="expand_content"><span class="glyphicon glyphicon-triangle-right" 391 aria-hidden="true"></span></a></span><span data-action="collapse"><a tabindex="0" 392 class="glyph" href="#" aria-label="collapse_content"><span 393 class="glyphicon glyphicon-triangle-bottom" 394 aria-hidden="true"></span></a></span><span data-dz-name>test file name 1</span><span 395 data-dz-size>1 MB</span><span data-action="remove"><a tabindex="0" class="glyph" href="#" 396 aria-label="close"><span class="glyphicon glyphicon-remove" 397 aria-hidden="true"></span></a></span><span class="ui-input-file-input-error-msg" 398 data-dz-error-msg></span></div> 399 <div class="ui-input-file-metadata" style="display: none;"><input id="id_1" type="hidden" 400 name="name_0[input_1][]" value="test_file_id_1" /> 401 <fieldset class="c-input" data-il-ui-component="text-field-input" 402 data-il-ui-input-name="name_0[input_2][]"><label for="id_2">text_input</label> 403 <div class="c-input__field"><input id="id_2" type="text" value="test" 404 name="name_0[input_2][]" class="c-field-text" /></div> 407 <div class="ui-input-file-input-progress-container"> 408 <div class="ui-input-file-input-progress-indicator"></div> 411 <div class="ui-input-file-input"> 412 <div class="ui-input-file-info"><span data-action="expand"><a tabindex="0" class="glyph" 413 href="#" aria-label="expand_content"><span 414 class="glyphicon glyphicon-triangle-right" 415 aria-hidden="true"></span></a></span><span data-action="collapse"><a 416 tabindex="0" class="glyph" href="#" aria-label="collapse_content"><span 417 class="glyphicon glyphicon-triangle-bottom" 418 aria-hidden="true"></span></a></span><span data-dz-name></span><span 419 data-dz-size></span><span data-action="remove"><a tabindex="0" class="glyph" href="#" 420 aria-label="close"><span class="glyphicon glyphicon-remove" 421 aria-hidden="true"></span></a></span><span class="ui-input-file-input-error-msg" 422 data-dz-error-msg></span></div> 423 <div class="ui-input-file-metadata" style="display: none;"><input id="id_3" type="hidden" 424 name="name_0[input_1][]" value="" /> 425 <fieldset class="c-input" data-il-ui-component="text-field-input" 426 data-il-ui-input-name="name_0[input_2][]"><label for="id_4">text_input</label> 427 <div class="c-input__field"><input id="id_4" type="text" name="name_0[input_2][]" 428 class="c-field-text" /></div> 431 <div class="ui-input-file-input-progress-container"> 432 <div class="ui-input-file-input-progress-indicator"></div> 437 <div class="ui-input-file-input-dropzone"><button class="btn btn-link" data-action="#" 438 id="id_5">select_files_from_computer</button><span class="ui-input-file-input-error-msg" 439 data-dz-error-msg></span></div> 440 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div> 447 $this->assertEquals($expected, $this->render($file_input));
452 return new I\Button\Factory();
457 return new I\Symbol\Factory(
467 $this->buildButtonFactory(),
468 $this->buildSymbolFactory()
Interface Observer Contains several chained tasks and infos about them.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
Interface FileInfoResult.