49 $this->renderer = $default_renderer;
54 return $this->renderStandard($component);
64 parent::registerResources($registry);
65 $registry->
register(
"./libs/bower/bower_components/jquery-dragster/jquery.dragster.js");
66 $registry->
register(
"./libs/bower/bower_components/fine-uploader/dist/fine-uploader.core.min.js");
67 $registry->
register(
"./src/UI/templates/js/Dropzone/File/uploader.js");
68 $registry->
register(
"./src/UI/templates/js/Dropzone/File/dropzone.js");
82 $dropzone = $this->registerSignals($dropzone);
88 $tpl->setVariable(
"ID", $dropzoneId);
90 $message = ($dropzone->getMessage()) ? $dropzone->getMessage() : $this->
txt(
'drag_files_here');
92 $button = $dropzone->getUploadButton();
95 $select_button = $f->button()->shy($this->
txt(
'select_files_from_computer'),
'#');
96 $tpl->setVariable(
'SHY_BUTTON',
$r->render($select_button));
100 $button = $button->withUnavailableAction()->withAdditionalOnLoadCode(
function (
$id) use ($dropzoneId) {
101 return "$ (function() {il.UI.uploader.bindUploadButton('{$dropzoneId}', $('#{$id}'));});";
103 $tpl->setCurrentBlock(
'with_upload_button');
104 $tpl->setVariable(
'BUTTON',
$r->render($button));
105 $tpl->parseCurrentBlock();
108 $tpl->setVariable(
'FILELIST', $tplUploadFileList->get());
123 $uploadButton = $this->
getUIFactory()->button()->primary($this->
txt(
'upload'),
'')->withUnavailableAction();
124 $modal = $this->
getUIFactory()->modal()->roundtrip($this->
txt(
'upload'), $this->
getUIFactory()->legacy($tplUploadFileList->get()))->withActionButtons([ $uploadButton ]);
127 $dropzone = $dropzone->withAdditionalDrop($modal->getShowSignal());
128 $dropzone = $this->registerSignals($dropzone);
133 $tpl->setVariable(
'ID', $dropzoneId);
134 $tpl->setVariable(
'CONTENT', $this->renderer->render($dropzone->getContent()));
135 $tpl->setVariable(
'MODAL', $this->renderer->render($modal));
148 $signals = array_map(
function ($triggeredSignal) {
151 'id' => $triggeredSignal->getSignal()->getId(),
152 'options' => $triggeredSignal->getSignal()->getOptions(),
154 }, $dropzone->getTriggeredSignals());
156 return $dropzone->withAdditionalOnLoadCode(
function (
$id) use ($dropzone, $signals) {
160 'registeredSignals' => $signals,
161 'uploadUrl' => $dropzone->getUploadUrl(),
162 'allowedFileTypes' => $dropzone->getAllowedFileTypes(),
163 'fileSizeLimit' => $dropzone->getFileSizeLimit() ? $dropzone->getFileSizeLimit()->getSize()
164 * $dropzone->getFileSizeLimit()->getUnit() : 0,
165 'maxFiles' => $dropzone->getMaxFiles(),
166 'identifier' => $dropzone->getParametername(),
167 'typeError' => $this->txt(
'msg_wrong_filetypes') .
" " . implode(
", ", $dropzone->getAllowedFileTypes()),
170 $reflect = new \ReflectionClass($dropzone);
171 $type = $reflect->getShortName();
173 return "il.UI.dropzone.initializeDropzone('{$type}', JSON.parse('{$options}'));";
188 $tplUploadFileList = $this->
getTemplate(
'tpl.upload-file-list.html',
true,
true);
192 $f->button()->shy($this->txt(
"remove"),
"")->withAriaLabel(
"delete_file"),
195 $tplUploadFileList->setVariable(
"REMOVE",
$r->render([$f->button()->close()]));
198 $tplUploadFileList->setVariable(
"TOGGLE",
$r->render([$f->glyph()->collapse(), $f->glyph()->expand()]));
199 $tplUploadFileList->setCurrentBlock(
"with_metadata");
200 $items[] = $f->button()->shy($this->
txt(
"edit_metadata"),
"")->withAriaLabel(
"edit_metadata");
201 if ($dropzone->allowsUserDefinedFileNames()) {
202 $tplUploadFileList->setVariable(
"LABEL_FILENAME", $this->
txt(
"filename"));
204 if ($dropzone->allowsUserDefinedFileDescriptions()) {
205 $tplUploadFileList->setVariable(
"LABEL_DESCRIPTION", $this->
txt(
"description"));
207 $tplUploadFileList->parseCurrentBlock();
209 $action = $f->dropdown()->standard($items);
210 $tplUploadFileList->setVariable(
"DROPDOWN",
$r->render(
$action));
212 return $tplUploadFileList;
223 return ($dropzone->allowsUserDefinedFileNames()
224 || $dropzone->allowsUserDefinedFileDescriptions());
if(!isset( $_REQUEST[ 'ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
An exception for terminatinating execution or to throw for unit testing.
renderWrapper(\ILIAS\UI\Component\Dropzone\File\Wrapper $dropzone)
render(Component $component, \ILIAS\UI\Renderer $default_renderer)
renderMetaData(\ILIAS\UI\Component\Dropzone\File\File $dropzone)
getComponentInterfaceName()
Get the name of the component-interface this renderer is supposed to render.ATTENTION: Fully qualifie...
getFileListTemplate(\ILIAS\UI\Component\Dropzone\File\File $dropzone)
registerResources(ResourceRegistry $registry)
@inheritDoc
Renderer that dispatches rendering of UI components to a Renderer found in the same namespace as the ...
Base class for all component renderers.
txt($id)
Get a text from the language file.
getTemplate($name, $purge_unfilled_vars, $purge_unused_blocks)
Get template of component this renderer is made for.
bindJavaScript(JavaScriptBindable $component)
Bind the component to JavaScript.
checkComponent(Component $component)
Check if a given component fits this renderer and throw \LogicError if that is not the case.
getUIFactory()
Get a UI factory.
if(!array_key_exists('StateId', $_REQUEST)) $id
A component is the most general form of an entity in the UI.
Registry for resources required by rendered output like Javascript or CSS.
register($name)
Add a dependency.
catch(Exception $e) $message