19declare(strict_types=1);
21require_once(__DIR__ .
"/../../../../../../../vendor/composer/vendor/autoload.php");
22require_once(__DIR__ .
"/../../../Base.php");
23require_once(__DIR__ .
"/InputTest.php");
24require_once(__DIR__ .
"/CommonFieldRendering.php");
46 public function button(): ButtonFactory
51 public function symbol(): SymbolFactory
59 use CommonFieldRendering;
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();
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"><button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button></span><span
161 class="ui-input-file-input-error-msg" data-dz-error-msg></span></div>
162 <div class="ui-input-file-metadata" style="display: none;"><input id="id_1" type="hidden"
163 name="name_0[input_0][]" value="" /></div>
164 <div class="ui-input-file-input-progress-container">
165 <div class="ui-input-file-input-progress-indicator"></div>
170 <div class="ui-input-file-input-dropzone">
171 <button type="button" class="btn btn-link" data-action="#" id="id_2">select_file_from_computer</button>
172 <span class="ui-input-file-input-error-msg" data-dz-error-msg></span>
174 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div>
181 $this->assertEquals($expected, $this->renderInsideContainer($file_input));
186 $f = $this->getFieldFactory();
188 ->withNameFrom($this->name_source);
189 $this->testWithError($file_input);
190 $this->testWithNoByline($file_input);
191 $this->testWithRequired($file_input);
192 $this->testWithDisabled($file_input);
193 $this->testWithAdditionalOnloadCodeRendersId($file_input);
198 $test_file_id =
"test_file_id_1";
199 $test_file_name =
"test file name 1";
201 $test_file_info = $this->createMock(FileInfoResult::class);
202 $test_file_info->method(
'getFileIdentifier')->willReturn(
"test_file_id_1");
203 $test_file_info->method(
'getName')->willReturn(
"test file name 1");
204 $test_file_info->method(
'getSize')->willReturn(1001);
206 $file_input = $this->getFieldFactory()->file(
211 ])->withNameFrom($this->name_source);
213 $expected = $this->getFormWrappedHtml(
217 <div class="ui-input-file">
218 <div class="ui-input-file-input-list">
219 <div class="ui-input-file-input">
220 <div class="ui-input-file-info">
221 <span data-action="expand"></span>
222 <span data-action="collapse"></span>
223 <span data-dz-name>test file name 1</span>
224 <span data-dz-size>1 KB</span>
225 <span data-action="remove">
226 <button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button>
228 <span class="ui-input-file-input-error-msg" data-dz-error-msg></span>
230 <div class="ui-input-file-metadata" style="display: none;">
231 <input id="id_1" type="hidden" name="name_0[input_0][]" value="test_file_id_1"/>
233 <div class="ui-input-file-input-progress-container">
234 <div class="ui-input-file-input-progress-indicator"></div>
238 <div class="ui-input-file-input">
239 <div class="ui-input-file-info"><span data-action="expand"></span><span
240 data-action="collapse"></span><span data-dz-name></span><span data-dz-size></span><span
241 data-action="remove"><button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button></span><span
242 class="ui-input-file-input-error-msg" data-dz-error-msg></span></div>
243 <div class="ui-input-file-metadata" style="display: none;"><input id="id_2" type="hidden"
244 name="name_0[input_0][]" value="" /></div>
245 <div class="ui-input-file-input-progress-container">
246 <div class="ui-input-file-input-progress-indicator"></div>
251 <div class="ui-input-file-input-dropzone">
252 <button type="button" class="btn btn-link" data-action="#" id="id_3">select_file_from_computer</button>
253 <span class="ui-input-file-input-error-msg" data-dz-error-msg></span>
255 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div>
262 $this->assertEquals($expected, $this->renderInsideContainer($file_input));
268 $factory = $this->getFieldFactory();
269 $label =
'file_input';
270 $metadata_input = $factory->text(
"text_input");
271 $file_input = $factory->file(
281 ])->withNameFrom($this->name_source);
283 $expected = $this->getFormWrappedHtml(
287 <div class="ui-input-file">
288 <div class="ui-input-file-input-list">
289 <div class="ui-input-file-input">
290 <div class="ui-input-file-info"><span data-action="expand"><button type="button" class="btn btn-link" aria-label="expand_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-right" aria-hidden="true"></span></span></button></span><span data-action="collapse"><button type="button" class="btn btn-link" aria-label="collapse_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span></span></button></span><span data-dz-name></span><span
291 data-dz-size></span><span data-action="remove"><button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button></span><span class="ui-input-file-input-error-msg"
292 data-dz-error-msg></span></div>
293 <div class="ui-input-file-metadata" style="display: none;"><input id="id_1" type="hidden"
294 name="name_0[input_1][]" value="file_id" />
295 <fieldset class="c-input" data-il-ui-component="text-field-input"
296 data-il-ui-input-name="name_0[input_2][]"><label for="id_2">text_input</label>
297 <div class="c-input__field"><input id="id_2" type="text" name="name_0[input_2][]"
298 class="c-field-text" /></div>
301 <div class="ui-input-file-input-progress-container">
302 <div class="ui-input-file-input-progress-indicator"></div>
305 <div class="ui-input-file-input">
306 <div class="ui-input-file-info"><span data-action="expand"><button type="button" class="btn btn-link" aria-label="expand_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-right" aria-hidden="true"></span></span></button></span><span data-action="collapse"><button type="button" class="btn btn-link" aria-label="collapse_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span></span></button></span><span data-dz-name></span><span
307 data-dz-size></span><span data-action="remove"><button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button></span><span class="ui-input-file-input-error-msg"
308 data-dz-error-msg></span></div>
309 <div class="ui-input-file-metadata" style="display: none;"><input id="id_3" type="hidden"
310 name="name_0[input_1][]" value="" />
311 <fieldset class="c-input" data-il-ui-component="text-field-input"
312 data-il-ui-input-name="name_0[input_2][]"><label for="id_4">text_input</label>
313 <div class="c-input__field"><input id="id_4" type="text" name="name_0[input_2][]"
314 class="c-field-text" /></div>
317 <div class="ui-input-file-input-progress-container">
318 <div class="ui-input-file-input-progress-indicator"></div>
323 <div class="ui-input-file-input-dropzone"><button type="button" class="btn btn-link" data-action="#"
324 id="id_5">select_file_from_computer</button><span class="ui-input-file-input-error-msg"
325 data-dz-error-msg></span></div>
326 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div>
333 $this->assertEquals($expected, $this->renderInsideContainer($file_input));
339 $test_file_id =
"test_file_id_1";
340 $test_file_name =
"test file name 1";
342 $test_file_info = $this->createMock(FileInfoResult::class);
343 $test_file_info->method(
'getFileIdentifier')->willReturn(
"test_file_id_1");
344 $test_file_info->method(
'getName')->willReturn(
"test file name 1");
345 $test_file_info->method(
'getSize')->willReturn(1000 * 1000 + 1);
347 $factory = $this->getFieldFactory();
348 $label =
'file_input';
349 $metadata_input = $factory->text(
"text_input");
350 $file_input = $factory->file(
360 ])->withNameFrom($this->name_source);
363 $expected = $this->getFormWrappedHtml(
367 <div class="ui-input-file">
368 <div class="ui-input-file-input-list">
369 <div class="ui-input-file-input">
370 <div class="ui-input-file-info"><span data-action="expand"><button type="button" class="btn btn-link" aria-label="expand_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-right" aria-hidden="true"></span></span></button></span><span data-action="collapse"><button type="button" class="btn btn-link" aria-label="collapse_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span></span></button></span><span data-dz-name>test file name 1</span><span
371 data-dz-size>1 MB</span><span data-action="remove"><button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button></span><span class="ui-input-file-input-error-msg"
372 data-dz-error-msg></span></div>
373 <div class="ui-input-file-metadata" style="display: none;"><input id="id_1" type="hidden"
374 name="name_0[input_1][]" value="test_file_id_1" />
375 <fieldset class="c-input" data-il-ui-component="text-field-input"
376 data-il-ui-input-name="name_0[input_2][]"><label for="id_2">text_input</label>
377 <div class="c-input__field"><input id="id_2" type="text" value="test"
378 name="name_0[input_2][]" class="c-field-text" /></div>
381 <div class="ui-input-file-input-progress-container">
382 <div class="ui-input-file-input-progress-indicator"></div>
385 <div class="ui-input-file-input">
386 <div class="ui-input-file-info"><span data-action="expand"><button type="button" class="btn btn-link" aria-label="expand_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-right" aria-hidden="true"></span></span></button></span><span data-action="collapse"><button type="button" class="btn btn-link" aria-label="collapse_content" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-triangle-bottom" aria-hidden="true"></span></span></button></span><span data-dz-name></span><span
387 data-dz-size></span><span data-action="remove"><button type="button" class="btn btn-link" aria-label="close" data-action=""><span class="glyph" aria-hidden="true"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></span></button></span><span class="ui-input-file-input-error-msg"
388 data-dz-error-msg></span></div>
389 <div class="ui-input-file-metadata" style="display: none;"><input id="id_3" type="hidden"
390 name="name_0[input_1][]" value="" />
391 <fieldset class="c-input" data-il-ui-component="text-field-input"
392 data-il-ui-input-name="name_0[input_2][]"><label for="id_4">text_input</label>
393 <div class="c-input__field"><input id="id_4" type="text" name="name_0[input_2][]"
394 class="c-field-text" /></div>
397 <div class="ui-input-file-input-progress-container">
398 <div class="ui-input-file-input-progress-indicator"></div>
403 <div class="ui-input-file-input-dropzone"><button type="button" class="btn btn-link" data-action="#"
404 id="id_5">select_file_from_computer</button><span class="ui-input-file-input-error-msg"
405 data-dz-error-msg></span></div>
406 <div class="help-block"> file_notice 0 B | ui_file_upload_max_nr 1</div>
413 $this->assertEquals($expected, $this->renderInsideContainer($file_input));
418 return new I\Button\Factory();
423 return new I\Symbol\Factory(
Builds a Color from either hex- or rgb values.
Provides common functionality for UI tests.
Interface FileInfoResult.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.